Compare commits
No commits in common. "main" and "menuing_and_audio" have entirely different histories.
main
...
menuing_an
|
|
@ -2,8 +2,5 @@
|
|||
.godot/
|
||||
/android/
|
||||
|
||||
# macOS metadata
|
||||
.DS_Store
|
||||
|
||||
# Claude Code
|
||||
.claude/worktrees/
|
||||
|
|
|
|||
46
README.md
|
|
@ -1,46 +0,0 @@
|
|||
# Hexwarden
|
||||
|
||||
> **Brew. Cast. Survive.**
|
||||
|
||||
A top-down survival roguelike where you play as a witch holding her ground against endless waves of slimes. Collect magical fruits, brew powerful potions, and unleash devastating spells — for as long as you can.
|
||||
|
||||
Built with **Godot 4.6** as part of a university game engineering course at Hochschule Mannheim.
|
||||
|
||||
🎮 **[Play on itch.io](https://mik141.itch.io/hexwarden)**
|
||||
|
||||
---
|
||||
|
||||
## Gameplay
|
||||
|
||||
Enemies swarm in from all sides. Your only weapons are the spells you brew.
|
||||
|
||||
- Move with **WASD**
|
||||
- Slimes drop **fruits** when killed — run over them to collect
|
||||
- Fill all **3 cauldron slots** to trigger a brew and unleash a spell
|
||||
- The fruit combination determines the spell
|
||||
- Earn XP from kills → **level up** → choose one of multiple Perks
|
||||
- Survive as long as possible
|
||||
|
||||
---
|
||||
|
||||
## Team
|
||||
|
||||
**Jaro Winkelhausen** — Game Development
|
||||
**Arthur David** — Game Development
|
||||
**Meik Schürmann** — Game Design, UI & Menu System
|
||||
|
||||
---
|
||||
|
||||
## About the Project
|
||||
|
||||
Hexwarden was built for the *Game Engineering* course (Prof. Dr. Kai Eckert, Hochschule Mannheim, SS 2026). None of us had significant game development experience when we started — this is a learning project made with a lot of trial, error, and genuine enthusiasm for the genre.
|
||||
|
||||
Inspired by [Vampire Survivors](https://store.steampowered.com/app/1794680/Vampire_Survivors/).
|
||||
|
||||
We're still actively developing it — expect bugs, rough edges, and future updates.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
This project was created for educational purposes. Assets from third-party packs are used under their respective licenses — see individual asset folders for details.
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
Pixel Art License
|
||||
Copyright © OceansCurse 2026 — All rights reserved.
|
||||
|
||||
You are free to:
|
||||
- Use these assets in any personal or commercial project (including games, apps, merchandise, etc.).
|
||||
- Modify, adapt, and create derivative works from these assets.
|
||||
|
||||
You are not permitted to:
|
||||
- Redistribute, resell, or re-upload these assets (or substantial portions/modified versions) as standalone files, asset packs, or listings on itch.io, other marketplaces, or elsewhere.
|
||||
- Present or claim these assets (original or modified) as your own original creation in a way that removes my authorship.
|
||||
|
||||
Attribution is not required, but always appreciated (e.g., "Assets by OceansCurse on itch.io").
|
||||
These terms do not affect your rights under fair use or other applicable law.
|
||||
|
||||
|
Before Width: | Height: | Size: 551 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://blotgjvb5lg5n"
|
||||
path="res://.godot/imported/books_blue_gem.png-6b9e1efe847341054172f4dc841820d4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_blue_gem.png"
|
||||
dest_files=["res://.godot/imported/books_blue_gem.png-6b9e1efe847341054172f4dc841820d4.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
|
||||
|
Before Width: | Height: | Size: 537 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b1dpo1suawep6"
|
||||
path="res://.godot/imported/books_crimson_gem.png-e8e082c355c0dfd58d6abd9b647c9d64.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_crimson_gem.png"
|
||||
dest_files=["res://.godot/imported/books_crimson_gem.png-e8e082c355c0dfd58d6abd9b647c9d64.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
|
||||
|
Before Width: | Height: | Size: 472 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b0p1bbqie3r44"
|
||||
path="res://.godot/imported/books_cross.png-35551b7d8d063fdb0725cd59a672b335.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_cross.png"
|
||||
dest_files=["res://.godot/imported/books_cross.png-35551b7d8d063fdb0725cd59a672b335.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
|
||||
|
Before Width: | Height: | Size: 621 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://jghgdp2kyjo7"
|
||||
path="res://.godot/imported/books_eye.png-0b5ed65a09665cddbdbac80092f229ee.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_eye.png"
|
||||
dest_files=["res://.godot/imported/books_eye.png-0b5ed65a09665cddbdbac80092f229ee.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
|
||||
|
Before Width: | Height: | Size: 542 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://colq7wi3ti117"
|
||||
path="res://.godot/imported/books_green_gem.png-1a6532ce505dc88ac93cf48f05352ebe.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_green_gem.png"
|
||||
dest_files=["res://.godot/imported/books_green_gem.png-1a6532ce505dc88ac93cf48f05352ebe.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
|
||||
|
Before Width: | Height: | Size: 583 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cq4qf7to1wg0m"
|
||||
path="res://.godot/imported/books_health_potion.png-f8c3182e75c659e8cd07cbcee2ba8296.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_health_potion.png"
|
||||
dest_files=["res://.godot/imported/books_health_potion.png-f8c3182e75c659e8cd07cbcee2ba8296.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
|
||||
|
Before Width: | Height: | Size: 578 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://lo5ocyv4wo3e"
|
||||
path="res://.godot/imported/books_jewel.png-81cbdb01e058151fa333b7a570f883b8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_jewel.png"
|
||||
dest_files=["res://.godot/imported/books_jewel.png-81cbdb01e058151fa333b7a570f883b8.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
|
||||
|
Before Width: | Height: | Size: 545 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1pr5rqdnpnw5"
|
||||
path="res://.godot/imported/books_mana_potion.png-e9b0c98b6782a5538a4f682f9d61384f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_mana_potion.png"
|
||||
dest_files=["res://.godot/imported/books_mana_potion.png-e9b0c98b6782a5538a4f682f9d61384f.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
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dlygc6jakfapg"
|
||||
path="res://.godot/imported/books_pentagram.png-3e29e3d9c342d860aa7f6d22635f65db.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_pentagram.png"
|
||||
dest_files=["res://.godot/imported/books_pentagram.png-3e29e3d9c342d860aa7f6d22635f65db.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
|
||||
|
Before Width: | Height: | Size: 566 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cogqoxfqsnvv1"
|
||||
path="res://.godot/imported/books_poison.png-3e8beaf0e04a26a46016fddeb0daf0f8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_poison.png"
|
||||
dest_files=["res://.godot/imported/books_poison.png-3e8beaf0e04a26a46016fddeb0daf0f8.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
|
||||
|
Before Width: | Height: | Size: 548 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ryhfe1a3haxf"
|
||||
path="res://.godot/imported/books_purple_gem.png-a017fe601493fdc75182a2e7b6cf68cb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_purple_gem.png"
|
||||
dest_files=["res://.godot/imported/books_purple_gem.png-a017fe601493fdc75182a2e7b6cf68cb.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
|
||||
|
Before Width: | Height: | Size: 3.3 KiB |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bnlacakjmdnp1"
|
||||
path="res://.godot/imported/books_set_2_preview.png-e47aaf46da7c1d64191f8dfb0958de3a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_set_2_preview.png"
|
||||
dest_files=["res://.godot/imported/books_set_2_preview.png-e47aaf46da7c1d64191f8dfb0958de3a.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
|
||||
|
Before Width: | Height: | Size: 458 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dm3wtcchfipcf"
|
||||
path="res://.godot/imported/books_upside_down_cross.png-f374141fa42ba8d66998f6c556ae5908.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/books_set_2/books_upside_down_cross.png"
|
||||
dest_files=["res://.godot/imported/books_upside_down_cross.png-f374141fa42ba8d66998f6c556ae5908.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,19 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://b27862pnesv4a"
|
||||
path="res://.godot/imported/47313572-experimental-8-bit-sound-270302.mp3-c4341312242ec2d6d5bacb1c4c433fda.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/47313572-experimental-8-bit-sound-270302.mp3"
|
||||
dest_files=["res://.godot/imported/47313572-experimental-8-bit-sound-270302.mp3-c4341312242ec2d6d5bacb1c4c433fda.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://3ubacx6k21aq"
|
||||
path="res://.godot/imported/card_shuffle.wav-2df5de9a976f5727aeeddc7f5f41163e.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/card_shuffle.wav"
|
||||
dest_files=["res://.godot/imported/card_shuffle.wav-2df5de9a976f5727aeeddc7f5f41163e.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://o81j4w2j1p16"
|
||||
path="res://.godot/imported/data_pion-sfx9-fwoosh-324525.mp3-aae109eab17a5ca7e7981c978d3c52e3.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/data_pion-sfx9-fwoosh-324525.mp3"
|
||||
dest_files=["res://.godot/imported/data_pion-sfx9-fwoosh-324525.mp3-aae109eab17a5ca7e7981c978d3c52e3.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://buxdyhc4ih63f"
|
||||
path="res://.godot/imported/fire.wav-a8c495294a82be1272b8f8a56ccb40f5.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/fire.wav"
|
||||
dest_files=["res://.godot/imported/fire.wav-a8c495294a82be1272b8f8a56ccb40f5.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cn7yee27ivj7b"
|
||||
path="res://.godot/imported/laser.wav-ff32fed33cb3ccbcd074381583780fec.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/laser.wav"
|
||||
dest_files=["res://.godot/imported/laser.wav-ff32fed33cb3ccbcd074381583780fec.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=2
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://bh8o5pk2cco1a"
|
||||
path="res://.godot/imported/lesiakower-coin-collect-retro-8-bit-sound-effect-145251.mp3-0a5ea69aced7938e6b9174c8f11f81d9.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/lesiakower-coin-collect-retro-8-bit-sound-effect-145251.mp3"
|
||||
dest_files=["res://.godot/imported/lesiakower-coin-collect-retro-8-bit-sound-effect-145251.mp3-0a5ea69aced7938e6b9174c8f11f81d9.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://bjyttcuhiidrq"
|
||||
path="res://.godot/imported/lesiakower-level-up-enhancement-8-bit-retro-sound-effect-153002.mp3-a2556229ce18ac544b49cfbc2bd40be8.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/music&sfx/sfx/lesiakower-level-up-enhancement-8-bit-retro-sound-effect-153002.mp3"
|
||||
dest_files=["res://.godot/imported/lesiakower-level-up-enhancement-8-bit-retro-sound-effect-153002.mp3-a2556229ce18ac544b49cfbc2bd40be8.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
|
Before Width: | Height: | Size: 263 B |
|
|
@ -1,40 +0,0 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://pot4k8a6lxd0"
|
||||
path="res://.godot/imported/knvie.png-6e2c57d6850f97653fad709f2c5186b5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/weapons/knvie.png"
|
||||
dest_files=["res://.godot/imported/knvie.png-6e2c57d6850f97653fad709f2c5186b5.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,28 +0,0 @@
|
|||
[
|
||||
{
|
||||
"time_start": 0,
|
||||
"time_end": 60,
|
||||
"elite_enemy": "res://scenes/slime.tscn",
|
||||
"entries": [
|
||||
{ "enemy": "res://scenes/slime.tscn", "count_at_start": 0, "count_at_end": 15, "min_interval": 0.5 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"time_start": 60,
|
||||
"time_end": 180,
|
||||
"elite_enemy": "res://scenes/blue_slime.tscn",
|
||||
"entries": [
|
||||
{ "enemy": "res://scenes/slime.tscn", "count_at_start": 15, "count_at_end": 40, "min_interval": 0.3 },
|
||||
{ "enemy": "res://scenes/blue_slime.tscn", "count_at_start": 0, "count_at_end": 10, "min_interval": 0.8 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"time_start": 180,
|
||||
"time_end": -1,
|
||||
"entries": [
|
||||
{ "enemy": "res://scenes/slime.tscn", "count_at_start": 40, "count_at_end": 100, "min_interval": 0.2 },
|
||||
{ "enemy": "res://scenes/blue_slime.tscn", "count_at_start": 10, "count_at_end": 60, "min_interval": 0.5 },
|
||||
{ "enemy": "res://scenes/fire_slime.tscn", "count_at_start": 0, "count_at_end": 40, "min_interval": 0.6 }
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
@ -69,53 +69,3 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
|
|||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||
|
||||
[preset.1]
|
||||
|
||||
name="Web"
|
||||
platform="Web"
|
||||
runnable=true
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="../Hexwarden/index.html"
|
||||
patches=PackedStringArray()
|
||||
patch_delta_encoding=false
|
||||
patch_delta_compression_level_zstd=19
|
||||
patch_delta_min_reduction=0.1
|
||||
patch_delta_include_filters="*"
|
||||
patch_delta_exclude_filters=""
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.1.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
variant/extensions_support=false
|
||||
variant/thread_support=false
|
||||
vram_texture_compression/for_desktop=true
|
||||
vram_texture_compression/for_mobile=false
|
||||
html/export_icon=true
|
||||
html/custom_html_shell=""
|
||||
html/head_include=""
|
||||
html/canvas_resize_policy=2
|
||||
html/focus_canvas_on_start=true
|
||||
html/experimental_virtual_keyboard=false
|
||||
progressive_web_app/enabled=false
|
||||
progressive_web_app/ensure_cross_origin_isolation_headers=true
|
||||
progressive_web_app/offline_page=""
|
||||
progressive_web_app/display=1
|
||||
progressive_web_app/orientation=0
|
||||
progressive_web_app/icon_144x144=""
|
||||
progressive_web_app/icon_180x180=""
|
||||
progressive_web_app/icon_512x512=""
|
||||
progressive_web_app/background_color=Color(0, 0, 0, 1)
|
||||
threads/emscripten_pool_size=8
|
||||
threads/godot_pool_size=4
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ buses/default_bus_layout="uid://5oswo22yvmtg"
|
|||
[autoload]
|
||||
|
||||
MusicManager="*uid://dmu7041wi1upt"
|
||||
SpellLibrary="*res://scripts/SpellLibrary.gd"
|
||||
|
||||
[display]
|
||||
|
||||
|
|
@ -34,33 +33,6 @@ window/stretch/mode="viewport"
|
|||
|
||||
3d/physics_engine="Jolt Physics"
|
||||
|
||||
[input]
|
||||
|
||||
move_left={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_right={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_up={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_down={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
rendering_device/driver.windows="d3d12"
|
||||
|
|
|
|||
|
|
@ -1,105 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://bbhpa50ef6702"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dw5y2tp34fxys" path="res://scripts/perk_card.gd" id="1_t8gqh"]
|
||||
[ext_resource type="Texture2D" uid="uid://duo145bmwho8d" path="res://assets/UI assets pack 2/UI books & more.png" id="2_nlhlf"]
|
||||
[ext_resource type="FontFile" uid="uid://cq0jx2aapggkg" path="res://assets/fonts/slkscrb.ttf" id="3_n4umd"]
|
||||
[ext_resource type="FontFile" uid="uid://brooj0hba7650" path="res://assets/fonts/slkscr.ttf" id="4_40ty6"]
|
||||
[ext_resource type="Texture2D" uid="uid://cdktimg5axaxj" path="res://assets/Fire Pixel Bullet 16x16/All_Fire_Bullet_Pixel_16x16_01.png" id="4_nlhlf"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fgk3h"]
|
||||
atlas = ExtResource("2_nlhlf")
|
||||
region = Rect2(561, 17, 46, 62)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_qag4p"]
|
||||
line_spacing = 5.0
|
||||
font = ExtResource("3_n4umd")
|
||||
font_size = 16
|
||||
outline_size = 2
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_n4umd"]
|
||||
atlas = ExtResource("4_nlhlf")
|
||||
region = Rect2(258, 241, 25, 14)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_ni87r"]
|
||||
line_spacing = 6.0
|
||||
font = ExtResource("3_n4umd")
|
||||
font_size = 17
|
||||
outline_size = 2
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="PerkCard" type="Control" unique_id=1471811151]
|
||||
custom_minimum_size = Vector2(240, 360)
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
script = ExtResource("1_t8gqh")
|
||||
|
||||
[node name="Card" type="TextureRect" parent="." unique_id=1832247473]
|
||||
texture_filter = 1
|
||||
custom_minimum_size = Vector2(240, 360)
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
texture = SubResource("AtlasTexture_fgk3h")
|
||||
|
||||
[node name="Name" type="Label" parent="Card" unique_id=2006873472]
|
||||
layout_mode = 1
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -65.0
|
||||
offset_top = 43.0
|
||||
offset_right = 65.0
|
||||
offset_bottom = 100.0
|
||||
grow_horizontal = 2
|
||||
text = "Zweizeilige
|
||||
Überschrift
|
||||
"
|
||||
label_settings = SubResource("LabelSettings_qag4p")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="Card/Name" unique_id=2128840891]
|
||||
texture_filter = 1
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -24.5
|
||||
offset_top = -10.0
|
||||
offset_right = 24.5
|
||||
offset_bottom = 19.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
texture = SubResource("AtlasTexture_n4umd")
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="Description" type="RichTextLabel" parent="Card" unique_id=859816848]
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -100.0
|
||||
offset_top = -215.0
|
||||
offset_right = 100.0
|
||||
offset_bottom = -36.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
theme_override_fonts/normal_font = ExtResource("3_n4umd")
|
||||
theme_override_font_sizes/normal_font_size = 17
|
||||
theme_override_constants/outline_size = 2
|
||||
theme_override_colors/default_color = Color(1, 1, 1, 1)
|
||||
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
|
||||
bbcode_enabled = true
|
||||
scroll_active = false
|
||||
text = ""
|
||||
|
||||
[node name="Button" type="Button" parent="." unique_id=1274377333]
|
||||
layout_mode = 0
|
||||
offset_right = 240.0
|
||||
offset_bottom = 360.0
|
||||
|
||||
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
||||
122
scenes/beam.tscn
|
|
@ -1,122 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://d2mpjsuueg0bn"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bdhx27edemfce" path="res://scripts/beam.gd" id="1_beam00"]
|
||||
[ext_resource type="Texture2D" uid="uid://dxox0vjihmukh" path="res://assets/Fire Pixel Bullet 16x16/All_Fire_Bullet_Pixel_16x16_05.png" id="2_hl8vi"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_daiji"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(96, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bawts"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(112, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8wlve"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(128, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bt3ye"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(144, 0, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_a06w7"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(96, 16, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5fvdj"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(112, 16, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_djxf5"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(128, 16, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eeead"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(144, 16, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_qfoqh"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(96, 32, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tuykp"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(112, 32, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2dcgn"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(128, 32, 16, 16)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7703o"]
|
||||
atlas = ExtResource("2_hl8vi")
|
||||
region = Rect2(144, 32, 16, 16)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_beam0"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_daiji")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bawts")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8wlve")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bt3ye")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"end",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_a06w7")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5fvdj")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_djxf5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_eeead")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"middle",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_qfoqh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_tuykp")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2dcgn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_7703o")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"start",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_beam0"]
|
||||
size = Vector2(16, 8)
|
||||
|
||||
[node name="Beam" type="Area2D" unique_id=968931754]
|
||||
script = ExtResource("1_beam00")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=100000001]
|
||||
texture_filter = 1
|
||||
sprite_frames = SubResource("SpriteFrames_beam0")
|
||||
animation = &"end"
|
||||
frame_progress = 0.02647079
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=100000002]
|
||||
shape = SubResource("RectangleShape2D_beam0")
|
||||
disabled = true
|
||||
|
|
@ -589,7 +589,7 @@ animations = [{
|
|||
}],
|
||||
"loop": false,
|
||||
"name": &"hurt_down",
|
||||
"speed": 20.0
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
|
|
@ -609,7 +609,7 @@ animations = [{
|
|||
}],
|
||||
"loop": false,
|
||||
"name": &"hurt_left",
|
||||
"speed": 20.0
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
|
|
@ -629,7 +629,7 @@ animations = [{
|
|||
}],
|
||||
"loop": false,
|
||||
"name": &"hurt_right",
|
||||
"speed": 20.0
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
|
|
@ -649,7 +649,7 @@ animations = [{
|
|||
}],
|
||||
"loop": false,
|
||||
"name": &"hurt_up",
|
||||
"speed": 20.0
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://cchili0scene1"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/chili.gd" id="1_chili0"]
|
||||
[ext_resource type="Texture2D" uid="uid://d2pinnrigixnp" path="res://assets/16x16 Pixelart Food Icons/Pixel_Foods(ARTLİNE).png" id="2_chili0"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_chili"]
|
||||
atlas = ExtResource("2_chili0")
|
||||
region = Rect2(19, 37, 16, 16)
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_chili"]
|
||||
radius = 4.0
|
||||
height = 12.0
|
||||
|
||||
[node name="Chili" type="Area2D" unique_id=200000001]
|
||||
script = ExtResource("1_chili0")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=200000002]
|
||||
texture_filter = 1
|
||||
texture = SubResource("AtlasTexture_chili")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=200000003]
|
||||
shape = SubResource("CapsuleShape2D_chili")
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://bhcew4ksnx081"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dt85lj7ts5i87" path="res://scripts/credits.gd" id="1_0ctdu"]
|
||||
[ext_resource type="Texture2D" uid="uid://2ddggeetjj1t" path="res://assets/images/screenshot_game.png" id="1_2ckv8"]
|
||||
[ext_resource type="FontFile" uid="uid://8v71dcws4q6o" path="res://assets/fonts/slkscre.ttf" id="2_0ctdu"]
|
||||
|
||||
[node name="Credits" type="CanvasLayer" unique_id=45816245]
|
||||
script = ExtResource("1_0ctdu")
|
||||
|
||||
[node name="BackgroundSprite" type="TextureRect" parent="." unique_id=356379919]
|
||||
z_index = -2
|
||||
offset_left = 4.0
|
||||
offset_top = 2.0
|
||||
offset_right = 1277.0
|
||||
offset_bottom = 718.0
|
||||
texture = ExtResource("1_2ckv8")
|
||||
expand_mode = 2
|
||||
|
||||
[node name="BackgroundRect" type="ColorRect" parent="." unique_id=2118797143]
|
||||
z_index = -1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0, 0, 0, 0.47058824)
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=391956149]
|
||||
z_index = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -308.5
|
||||
offset_top = -106.0
|
||||
offset_right = 308.5
|
||||
offset_bottom = 106.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/separation = 50
|
||||
alignment = 1
|
||||
|
||||
[node name="TitleLabel" type="Label" parent="VBoxContainer" unique_id=155909881]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("2_0ctdu")
|
||||
theme_override_font_sizes/font_size = 64
|
||||
text = "Credits"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="CreditsLabel" type="Label" parent="VBoxContainer" unique_id=267626570]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("2_0ctdu")
|
||||
theme_override_font_sizes/font_size = 20
|
||||
text = "Assets — Swordsman, Slimes, Tiles craftpix.net
|
||||
Asset — Witch AntumDeluge
|
||||
Asset — Various Effects bdragon1727
|
||||
|
||||
Music — Main Menu (8 Bit Dungeon) Kaden_Cook
|
||||
Music — In-Game (Ashveil) Pixelmaniax"
|
||||
|
||||
[node name="BackButton" type="Button" parent="VBoxContainer" unique_id=561894849]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("2_0ctdu")
|
||||
theme_override_font_sizes/font_size = 32
|
||||
text = "Back"
|
||||
|
||||
[connection signal="pressed" from="VBoxContainer/BackButton" to="." method="_on_back_button_pressed"]
|
||||
|
|
@ -1,760 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://cpe6aiuqiox0u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dklt42vjjcks7" path="res://scripts/fire_slime.gd" id="1_88j2t"]
|
||||
[ext_resource type="Script" uid="uid://cjkaw7wqw4e30" path="res://scripts/drop_table.gd" id="dt_fslime"]
|
||||
[ext_resource type="PackedScene" uid="uid://cchili0scene1" path="res://scenes/chili.tscn" id="chili_fslime"]
|
||||
[ext_resource type="Texture2D" uid="uid://b1tyfy8ooudkc" path="res://assets/Slime3/With_shadow/Slime3_Death_with_shadow.png" id="2_ahfdi"]
|
||||
[ext_resource type="Texture2D" uid="uid://bbm1sv6hmc2j" path="res://assets/Slime3/With_shadow/Slime3_Hurt_with_shadow.png" id="3_kq38e"]
|
||||
[ext_resource type="Texture2D" uid="uid://bt07131sttb6e" path="res://assets/Slime3/With_shadow/Slime3_Walk_with_shadow.png" id="4_ret1g"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_u74be"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_hky14"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(64, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1hmrm"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(128, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_icdnf"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(192, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jpau6"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(256, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pla0y"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(320, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5ug5i"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(384, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_p0q1e"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(448, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8gdmr"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(512, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4gxlk"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(576, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w642b"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(256, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6tf61"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(0, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_354yo"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(64, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wrhhh"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(128, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5l6b7"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(192, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ml8lr"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(256, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_flrsr"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(320, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_qr4cj"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(384, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_o5jey"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(448, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1fjmf"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(512, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3dxre"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(576, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6mupu"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(0, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_cpqhb"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(64, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vpjp1"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(128, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pyvbc"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(192, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_t8xj5"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(256, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_uq6gh"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(320, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_q6wog"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(384, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jcate"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(448, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_hl62h"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(512, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_60nri"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(576, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_60moo"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(0, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pguj2"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(64, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ybskn"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(128, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_el31c"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(192, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7hu85"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(256, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fuihh"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(320, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mtyhi"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(384, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sjkfo"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(448, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_htj0k"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(512, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6hck2"]
|
||||
atlas = ExtResource("2_ahfdi")
|
||||
region = Rect2(576, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0ksjp"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_i4a22"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(64, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_o8li6"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(128, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_g0evx"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(192, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rdhnu"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(256, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_84ews"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(0, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1xfj1"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(64, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_trrl8"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(128, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_lr5qx"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(192, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6ma40"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(256, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kwtft"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(128, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_enu58"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(0, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7kdux"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(64, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bqnxo"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(128, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_enu87"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(192, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2h6h5"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(256, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8fjfh"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(0, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vh8hy"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(64, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2rs53"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(128, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6qhe6"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(192, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5ch0i"]
|
||||
atlas = ExtResource("3_kq38e")
|
||||
region = Rect2(256, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ugw68"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_osbva"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(64, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_e2rds"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(128, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8jpri"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(192, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_p46gn"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(256, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tmsf0"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(320, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8jftq"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(384, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5xakg"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(448, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wjesj"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(0, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_xicij"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(64, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wt4kn"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(128, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_dfaft"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(192, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_01vj4"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(256, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fevc3"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(320, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_o8mkr"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(384, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_khlie"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(448, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rt0q0"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(0, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_b1gjj"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(64, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bt6g4"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(128, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jsjsv"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(192, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0l68k"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(256, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_iimw2"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(320, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jlqmn"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(384, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gctn2"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(448, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_x6bpc"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(0, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_23if8"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(64, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1wf5b"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(128, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_263iu"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(192, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gk0vp"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(256, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_n30n6"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(320, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_an4xw"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(384, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ohh0e"]
|
||||
atlas = ExtResource("4_ret1g")
|
||||
region = Rect2(448, 64, 64, 64)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_05veu"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_u74be")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_hky14")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1hmrm")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_icdnf")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jpau6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pla0y")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5ug5i")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_p0q1e")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8gdmr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4gxlk")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"death_down",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_w642b")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6tf61")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_354yo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wrhhh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5l6b7")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ml8lr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_flrsr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_qr4cj")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_o5jey")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1fjmf")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3dxre")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"death_left",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6mupu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_cpqhb")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vpjp1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pyvbc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_t8xj5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_uq6gh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_q6wog")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jcate")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_hl62h")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_60nri")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"death_right",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_60moo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pguj2")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ybskn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_el31c")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_7hu85")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fuihh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_mtyhi")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_sjkfo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_htj0k")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6hck2")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"death_up",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0ksjp")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_i4a22")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_o8li6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_g0evx")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_rdhnu")
|
||||
}],
|
||||
"loop": false,
|
||||
"name": &"hurt_down",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_84ews")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1xfj1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_trrl8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_lr5qx")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6ma40")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_left",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_kwtft")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_enu58")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_7kdux")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bqnxo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_enu87")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2h6h5")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_right",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8fjfh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vh8hy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2rs53")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6qhe6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5ch0i")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_up",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ugw68")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_osbva")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_e2rds")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8jpri")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_p46gn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_tmsf0")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8jftq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5xakg")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_down",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wjesj")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_xicij")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wt4kn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_dfaft")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_01vj4")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fevc3")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_o8mkr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_khlie")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_left",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_rt0q0")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_b1gjj")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bt6g4")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jsjsv")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0l68k")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_iimw2")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jlqmn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_gctn2")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_right",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_x6bpc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_23if8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1wf5b")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_263iu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_gk0vp")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_n30n6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_an4xw")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ohh0e")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"walk_up",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_1djsx"]
|
||||
radius = 7.071068
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_odbmi"]
|
||||
radius = 8.062258
|
||||
|
||||
[sub_resource type="Resource" id="Resource_chili_drop"]
|
||||
script = ExtResource("dt_fslime")
|
||||
drop = ExtResource("chili_fslime")
|
||||
chance = 0.4
|
||||
|
||||
[node name="FireSlime" type="CharacterBody2D" unique_id=1827403107]
|
||||
script = ExtResource("1_88j2t")
|
||||
metadata/_custom_type_script = "uid://c0uv02nt5ocvg"
|
||||
drop_table = Array[ExtResource("dt_fslime")]([SubResource("Resource_chili_drop")])
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1151813585]
|
||||
texture_filter = 1
|
||||
sprite_frames = SubResource("SpriteFrames_05veu")
|
||||
animation = &"hurt_up"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2114857632]
|
||||
position = Vector2(0, 1)
|
||||
shape = SubResource("CircleShape2D_1djsx")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="." unique_id=1305327123]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=762851125]
|
||||
position = Vector2(0, 1)
|
||||
shape = SubResource("CircleShape2D_odbmi")
|
||||
|
|
@ -39,7 +39,7 @@ animations = [{
|
|||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 35.0
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[node name="Fireball" type="Area2D" unique_id=2100779306]
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
extends Node2D
|
||||
|
||||
@onready var _timer_label: Label = $CanvasLayer/TimerLabel
|
||||
@onready var _spawn_control = $SpawnControl
|
||||
|
||||
var _debug_menu_script = preload("res://scripts/debug_menu.gd")
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
MusicManager.play(preload("res://assets/music&sfx/music/ashveil-355633.mp3"))
|
||||
add_child(_debug_menu_script.new())
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
var t = int(_spawn_control.elapsed_time)
|
||||
_timer_label.text = "%02d:%02d" % [t / 60, t % 60]
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
|
|
|||
101
scenes/game.tscn
|
|
@ -4,21 +4,36 @@
|
|||
[ext_resource type="Script" uid="uid://cphrdy0xexx30" path="res://scenes/game.gd" id="1_vtaks"]
|
||||
[ext_resource type="PackedScene" uid="uid://7vohdw0xop0g" path="res://scenes/worldborder.tscn" id="2_dinhu"]
|
||||
[ext_resource type="Script" uid="uid://coplu13jpw4xq" path="res://scripts/camera_2d.gd" id="3_kvpfn"]
|
||||
[ext_resource type="Script" uid="uid://b4jrogrq54c8f" path="res://scripts/SpawnEntry.gd" id="6_ir15t"]
|
||||
[ext_resource type="Script" uid="uid://dovkm6w8af08x" path="res://scripts/spawn_control.gd" id="6_p57ef"]
|
||||
[ext_resource type="PackedScene" uid="uid://ccotbw7gepsge" path="res://scenes/slime.tscn" id="7_ca42v"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4i3fnr6gpjp" path="res://assets/tileset/Tiled_files/details.png" id="7_gee14"]
|
||||
[ext_resource type="PackedScene" uid="uid://b4v0ntaukg2je" path="res://scenes/witch.tscn" id="7_u5sy4"]
|
||||
[ext_resource type="Texture2D" uid="uid://0xu8ohipv2mj" path="res://assets/tileset/Tiled_files/Objects.png" id="8_0tnpc"]
|
||||
[ext_resource type="PackedScene" uid="uid://cj83ht5o2l8c1" path="res://scenes/blue_slime.tscn" id="8_rysoc"]
|
||||
[ext_resource type="PackedScene" uid="uid://cgu7w2jd42f3a" path="res://scenes/tile_map_layer(background).tscn" id="8_vtaks"]
|
||||
[ext_resource type="PackedScene" uid="uid://bgpsc6dvsn7ak" path="res://scenes/tile_map_layer(objects).tscn" id="9_kvpfn"]
|
||||
[ext_resource type="PackedScene" uid="uid://co8t1fr3b3kub" path="res://scenes/tile_map_layer(overlay).tscn" id="10_dinhu"]
|
||||
[ext_resource type="Script" uid="uid://ckv6prbe1o7s1" path="res://scripts/drop_manager.gd" id="10_vtaks"]
|
||||
[ext_resource type="Script" uid="uid://pmmc7tivuuo4" path="res://scripts/perk_effects.gd" id="16_ca42v"]
|
||||
[ext_resource type="Script" uid="uid://dm1sntwjrv3vl" path="res://scripts/level_up_manager.gd" id="16_rysoc"]
|
||||
[ext_resource type="Texture2D" uid="uid://dp8o40ssuh8ip" path="res://assets/Tiny RPG Mana Soul GUI v1.0/20250421barB-Sheet.png" id="16_ssvqc"]
|
||||
[ext_resource type="Script" uid="uid://duauc778wc3hd" path="res://scripts/pause_menu.gd" id="18_264po"]
|
||||
[ext_resource type="FontFile" uid="uid://8v71dcws4q6o" path="res://assets/fonts/slkscre.ttf" id="19_1kice"]
|
||||
[ext_resource type="Script" uid="uid://586y330mhx8" path="res://scripts/options_menu_ingame.gd" id="20_1kice"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ssvqc"]
|
||||
script = ExtResource("6_ir15t")
|
||||
weight = 1.0
|
||||
enemy = ExtResource("7_ca42v")
|
||||
metadata/_custom_type_script = "uid://b4jrogrq54c8f"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_264po"]
|
||||
script = ExtResource("6_ir15t")
|
||||
min_time = 10.0
|
||||
weight = 0.5
|
||||
enemy = ExtResource("8_rysoc")
|
||||
metadata/_custom_type_script = "uid://b4jrogrq54c8f"
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_vtaks"]
|
||||
texture = ExtResource("7_gee14")
|
||||
1:1/0 = 0
|
||||
|
|
@ -2368,6 +2383,11 @@ anchors_preset = 0
|
|||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
script = ExtResource("6_p57ef")
|
||||
spawn_entries = Array[ExtResource("6_ir15t")]([SubResource("Resource_ssvqc"), SubResource("Resource_264po")])
|
||||
|
||||
[node name="SpawnTimer" type="Timer" parent="." unique_id=1852920556]
|
||||
wait_time = 0.2
|
||||
autostart = true
|
||||
|
||||
[node name="Witch" parent="." unique_id=1188927311 instance=ExtResource("7_u5sy4")]
|
||||
position = Vector2(304, 164)
|
||||
|
|
@ -2389,88 +2409,24 @@ script = ExtResource("10_vtaks")
|
|||
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1323249211]
|
||||
|
||||
[node name="ProgressBar" type="ProgressBar" parent="CanvasLayer" unique_id=825658619]
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -303.5
|
||||
offset_right = 303.5
|
||||
offset_right = 607.0
|
||||
offset_bottom = 27.0
|
||||
grow_horizontal = 2
|
||||
max_value = 5.0
|
||||
step = 1.0
|
||||
show_percentage = false
|
||||
|
||||
[node name="NinePatchRect" type="NinePatchRect" parent="CanvasLayer/ProgressBar" unique_id=1364517669]
|
||||
texture_filter = 1
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -6.5
|
||||
offset_top = -1.0
|
||||
offset_right = 5.5
|
||||
offset_bottom = 2.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("16_ssvqc")
|
||||
draw_center = false
|
||||
region_rect = Rect2(0, 0, 95, 15)
|
||||
patch_margin_left = 7
|
||||
patch_margin_top = 5
|
||||
patch_margin_right = 8
|
||||
patch_margin_bottom = 6
|
||||
|
||||
[node name="TimerLabel" type="Label" parent="CanvasLayer" unique_id=1111111111]
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -60.0
|
||||
offset_top = 31.0
|
||||
offset_right = 60.0
|
||||
offset_bottom = 55.0
|
||||
grow_horizontal = 2
|
||||
theme_override_colors/font_color = Color(1, 1, 1, 1)
|
||||
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||
theme_override_constants/shadow_offset_x = 1
|
||||
theme_override_constants/shadow_offset_y = 1
|
||||
theme_override_fonts/font = ExtResource("19_1kice")
|
||||
theme_override_font_sizes/font_size = 20
|
||||
text = "00:00"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="LevelUpManager" type="Control" parent="CanvasLayer" unique_id=292400493]
|
||||
process_mode = 3
|
||||
layout_mode = 3
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
grow_horizontal = 2
|
||||
anchors_preset = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
script = ExtResource("16_rysoc")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="CanvasLayer/LevelUpManager" unique_id=1319513730]
|
||||
layout_mode = 1
|
||||
offset_left = -656.0
|
||||
offset_top = -9.0
|
||||
offset_right = 642.0
|
||||
offset_bottom = 728.0
|
||||
color = Color(0, 0, 0, 0.0627451)
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/LevelUpManager" unique_id=957625333]
|
||||
custom_minimum_size = Vector2(1000, 400)
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -20.0
|
||||
offset_top = 350.0
|
||||
offset_right = 20.0
|
||||
offset_bottom = 390.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/separation = 50
|
||||
alignment = 1
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="PerkEffects" type="Node2D" parent="." unique_id=2027136639]
|
||||
script = ExtResource("16_ca42v")
|
||||
|
|
@ -2619,6 +2575,7 @@ theme_override_fonts/font = ExtResource("19_1kice")
|
|||
theme_override_font_sizes/font_size = 32
|
||||
text = "Back"
|
||||
|
||||
[connection signal="timeout" from="SpawnTimer" to="SpawnControl" method="_on_spawn_timer_timeout"]
|
||||
[connection signal="pressed" from="PauseMenu/VBoxContainer/ContinueButton" to="PauseMenu" method="_on_continue_button_pressed"]
|
||||
[connection signal="pressed" from="PauseMenu/VBoxContainer/OptionsButton" to="PauseMenu" method="_on_options_button_pressed"]
|
||||
[connection signal="pressed" from="PauseMenu/VBoxContainer/QuitButton" to="PauseMenu" method="_on_quit_button_pressed"]
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://claser0spell1"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/laser.gd" id="1_laser0"]
|
||||
|
||||
[node name="Laser" type="Node2D"]
|
||||
script = ExtResource("1_laser0")
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://dg8vanuerts1t"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c176y1113cvdw" path="res://scripts/level_up_particles.gd" id="1_lvlup"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_purple"]
|
||||
colors = PackedColorArray(0.75, 0.2, 1, 1, 0.4, 0.05, 0.8, 0.35)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradTex_purple"]
|
||||
gradient = SubResource("Gradient_purple")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="Mat_purple"]
|
||||
emission_shape = 3
|
||||
emission_box_extents = Vector3(3, 5, 0)
|
||||
direction = Vector3(0, -1, 0)
|
||||
spread = 8.0
|
||||
initial_velocity_min = 25.0
|
||||
initial_velocity_max = 40.0
|
||||
gravity = Vector3(0, 12, 0)
|
||||
scale_min = 1.5
|
||||
scale_max = 3.0
|
||||
color_ramp = SubResource("GradTex_purple")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_yellow"]
|
||||
colors = PackedColorArray(1, 0.9, 0.1, 1, 0.9, 0.5, 0, 0.35)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradTex_yellow"]
|
||||
gradient = SubResource("Gradient_yellow")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="Mat_yellow"]
|
||||
emission_shape = 3
|
||||
emission_box_extents = Vector3(3, 5, 0)
|
||||
direction = Vector3(0, -1, 0)
|
||||
spread = 8.0
|
||||
initial_velocity_min = 25.0
|
||||
initial_velocity_max = 40.0
|
||||
gravity = Vector3(0, 12, 0)
|
||||
scale_min = 1.5
|
||||
scale_max = 3.0
|
||||
color_ramp = SubResource("GradTex_yellow")
|
||||
|
||||
[node name="LevelUpParticles" type="Node2D" unique_id=260593337]
|
||||
script = ExtResource("1_lvlup")
|
||||
|
||||
[node name="Burst1" type="GPUParticles2D" parent="." unique_id=1316703941]
|
||||
emitting = false
|
||||
amount = 14
|
||||
lifetime = 0.65
|
||||
one_shot = true
|
||||
explosiveness = 0.9
|
||||
process_material = SubResource("Mat_purple")
|
||||
|
||||
[node name="Burst2" type="GPUParticles2D" parent="." unique_id=684638951]
|
||||
emitting = false
|
||||
amount = 14
|
||||
lifetime = 0.65
|
||||
one_shot = true
|
||||
explosiveness = 0.9
|
||||
process_material = SubResource("Mat_yellow")
|
||||
|
||||
[node name="Burst3" type="GPUParticles2D" parent="." unique_id=373983562]
|
||||
emitting = false
|
||||
amount = 14
|
||||
lifetime = 0.65
|
||||
one_shot = true
|
||||
explosiveness = 0.9
|
||||
process_material = SubResource("Mat_purple")
|
||||
|
|
@ -45,8 +45,7 @@ alignment = 1
|
|||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("4_3vvtq")
|
||||
theme_override_font_sizes/font_size = 64
|
||||
text = "Hexwarden"
|
||||
horizontal_alignment = 1
|
||||
text = "Working Title"
|
||||
|
||||
[node name="PlayButton" type="Button" parent="VBoxContainer" unique_id=1536378372]
|
||||
custom_minimum_size = Vector2(200, 45)
|
||||
|
|
@ -62,12 +61,6 @@ theme_override_fonts/font = ExtResource("4_3vvtq")
|
|||
theme_override_font_sizes/font_size = 32
|
||||
text = "Options"
|
||||
|
||||
[node name="CreditsButton" type="Button" parent="VBoxContainer" unique_id=98861855]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("4_3vvtq")
|
||||
theme_override_font_sizes/font_size = 32
|
||||
text = "Credits"
|
||||
|
||||
[node name="QuitButton" type="Button" parent="VBoxContainer" unique_id=1704957427]
|
||||
custom_minimum_size = Vector2(200, 45)
|
||||
layout_mode = 2
|
||||
|
|
@ -77,5 +70,4 @@ text = "Quit"
|
|||
|
||||
[connection signal="pressed" from="VBoxContainer/PlayButton" to="." method="_on_play_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/OptionsButton" to="." method="_on_options_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/CreditsButton" to="." method="_on_credits_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/QuitButton" to="." method="_on_quit_button_pressed"]
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ animations = [{
|
|||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_qk6i7")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": true,
|
||||
"name": &"attack_down",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
|
|
@ -422,7 +422,7 @@ animations = [{
|
|||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jx8is")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": true,
|
||||
"name": &"attack_left",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
|
|
@ -445,7 +445,7 @@ animations = [{
|
|||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_cbf1i")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": true,
|
||||
"name": &"attack_right",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
|
|
@ -468,7 +468,7 @@ animations = [{
|
|||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_qmsq4")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": true,
|
||||
"name": &"attack_up",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
|
|
@ -775,9 +775,6 @@ animations = [{
|
|||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_tuyoq"]
|
||||
radius = 30.0
|
||||
|
||||
[node name="Player" type="CharacterBody2D" unique_id=804585690]
|
||||
collision_mask = 129
|
||||
motion_mode = 1
|
||||
|
|
@ -789,16 +786,4 @@ shape = SubResource("CapsuleShape2D_u8vuu")
|
|||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1616479252]
|
||||
texture_filter = 1
|
||||
sprite_frames = SubResource("SpriteFrames_giy8y")
|
||||
animation = &"run_down"
|
||||
|
||||
[node name="MeleeArea" type="Area2D" parent="." unique_id=24997730]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="MeleeArea" unique_id=2002113716]
|
||||
shape = SubResource("CircleShape2D_tuyoq")
|
||||
|
||||
[node name="AttackSpeed" type="Timer" parent="." unique_id=2072925004]
|
||||
wait_time = 0.506
|
||||
autostart = true
|
||||
|
||||
[connection signal="body_entered" from="MeleeArea" to="." method="_on_melee_area_body_entered"]
|
||||
[connection signal="timeout" from="AttackSpeed" to="." method="_on_attack_speed_timeout"]
|
||||
animation = &"attack_up"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
[ext_resource type="Texture2D" uid="uid://cxddvfs2wfwcl" path="res://assets/Slime1/Without_shadow/Slime1_Idle_without_shadow.png" id="3_rrqju"]
|
||||
[ext_resource type="Texture2D" uid="uid://b2bmw70co6noy" path="res://assets/Slime1/Without_shadow/Slime1_Walk_without_shadow.png" id="4_wyhst"]
|
||||
[ext_resource type="Texture2D" uid="uid://bshpjl3w1n0y1" path="res://assets/Slime1/With_shadow/Slime1_Death_with_shadow.png" id="5_gstla"]
|
||||
[ext_resource type="Texture2D" uid="uid://dwpyocmvqptui" path="res://assets/Slime1/With_shadow/Slime1_Hurt_with_shadow.png" id="7_v5wyi"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gstla"]
|
||||
script = ExtResource("2_2npkn")
|
||||
|
|
@ -239,86 +238,6 @@ region = Rect2(256, 0, 64, 64)
|
|||
atlas = ExtResource("3_rrqju")
|
||||
region = Rect2(320, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_p5vph"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4vxow"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(64, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ymo5x"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(128, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_v338d"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(192, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vn1yr"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(256, 0, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_il7ig"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(0, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5baf8"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(64, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mmuop"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(128, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7fqim"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(192, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0ivba"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(256, 128, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0f1a3"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(0, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3qxe4"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(64, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8tsuk"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(128, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_uxjht"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(192, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_72t0a"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(256, 192, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_e0x1h"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(0, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eodiq"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(64, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_d4gio"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(128, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_q2l3s"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(192, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3l0w5"]
|
||||
atlas = ExtResource("7_v5wyi")
|
||||
region = Rect2(256, 64, 64, 64)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fur4c"]
|
||||
atlas = ExtResource("4_wyhst")
|
||||
region = Rect2(0, 0, 64, 64)
|
||||
|
|
@ -649,86 +568,6 @@ animations = [{
|
|||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_p5vph")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4vxow")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ymo5x")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_v338d")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vn1yr")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_down",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_il7ig")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5baf8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_mmuop")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_7fqim")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0ivba")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_left",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0f1a3")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3qxe4")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8tsuk")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_uxjht")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_72t0a")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_right",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_e0x1h")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_eodiq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_d4gio")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_q2l3s")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3l0w5")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"hurt_up",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fur4c")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
|
|
@ -857,7 +696,7 @@ drop_table = Array[ExtResource("2_2npkn")]([SubResource("Resource_gstla")])
|
|||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=752118449]
|
||||
texture_filter = 1
|
||||
sprite_frames = SubResource("SpriteFrames_cbi0b")
|
||||
animation = &"hurt_up"
|
||||
animation = &"walk_right"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=769710804]
|
||||
position = Vector2(0, 1)
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://s5m6whnjl3cv"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c6w6hhayguqoj" path="res://scripts/spellbook.gd" id="1_f8wgx"]
|
||||
[ext_resource type="Texture2D" uid="uid://dlygc6jakfapg" path="res://assets/books_set_2/books_pentagram.png" id="2_g1ouv"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_md3wj"]
|
||||
atlas = ExtResource("2_g1ouv")
|
||||
region = Rect2(0, 0, 32, 32)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_qgan7"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_md3wj")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_i8red"]
|
||||
size = Vector2(22.5, 26.5)
|
||||
|
||||
[node name="Spellbook" type="Area2D" unique_id=1926827672]
|
||||
script = ExtResource("1_f8wgx")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1402601698]
|
||||
texture_filter = 1
|
||||
scale = Vector2(0.5, 0.5)
|
||||
sprite_frames = SubResource("SpriteFrames_qgan7")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=609912720]
|
||||
position = Vector2(-0.625, -0.625)
|
||||
scale = Vector2(0.5, 0.5)
|
||||
shape = SubResource("RectangleShape2D_i8red")
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://oegpflgwf17e"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dpj26ryawjq02" path="res://scripts/throwing_knive.gd" id="2_knive"]
|
||||
[ext_resource type="Texture2D" uid="uid://pot4k8a6lxd0" path="res://assets/weapons/knvie.png" id="2_tyd64"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_frs86"]
|
||||
atlas = ExtResource("2_tyd64")
|
||||
region = Rect2(0, 0, 32, 32)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_t4gbw"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_frs86")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1ss1s"]
|
||||
size = Vector2(15, 7)
|
||||
|
||||
[node name="ThrowingKnive" type="Area2D" unique_id=882877238]
|
||||
script = ExtResource("2_knive")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=164559800]
|
||||
texture_filter = 1
|
||||
sprite_frames = SubResource("SpriteFrames_t4gbw")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=886320879]
|
||||
position = Vector2(0.5, -0.5)
|
||||
shape = SubResource("RectangleShape2D_1ss1s")
|
||||
|
|
@ -1,152 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://byqfrmwg0mi3y"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cikwl1ib4puyt" path="res://scripts/tornado.gd" id="1_shahy"]
|
||||
[ext_resource type="Texture2D" uid="uid://c50u48fy7jtd" path="res://assets/Free Effect Bullet Impact Explosion 32x32 V1/Purple Effect Bullet Impact Explosion 32x32.png" id="2_3gxx4"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vctls"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(192, 0, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2nlrq"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(224, 0, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_yxxy5"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(256, 0, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mdjqp"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(288, 0, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_shahy"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(608, 160, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3gxx4"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(576, 160, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2nqqh"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(544, 160, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_g5iue"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(512, 160, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_c1uv1"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(512, 416, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ido5e"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(512, 448, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_e7sy5"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(512, 384, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0xwcu"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(544, 352, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jd32a"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(576, 352, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_p68fy"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(608, 352, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1h6yc"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(576, 384, 32, 32)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3p0aw"]
|
||||
atlas = ExtResource("2_3gxx4")
|
||||
region = Rect2(608, 384, 32, 32)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_2nqqh"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vctls")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2nlrq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_yxxy5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_mdjqp")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_shahy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3gxx4")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2nqqh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_g5iue")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_c1uv1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ido5e")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_e7sy5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0xwcu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jd32a")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_p68fy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1h6yc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3p0aw")
|
||||
}],
|
||||
"loop": false,
|
||||
"name": &"explosion",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g5iue"]
|
||||
radius = 25.0
|
||||
height = 50.0
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_07hm3"]
|
||||
radius = 54.0
|
||||
|
||||
[node name="Tornado" type="Area2D" unique_id=892015509]
|
||||
script = ExtResource("1_shahy")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1613801541]
|
||||
texture_filter = 1
|
||||
scale = Vector2(1.5, 1.5)
|
||||
sprite_frames = SubResource("SpriteFrames_2nqqh")
|
||||
frame_progress = 0.68617874
|
||||
|
||||
[node name="ExplosionCollision" type="CollisionShape2D" parent="." unique_id=1019771818]
|
||||
shape = SubResource("CapsuleShape2D_g5iue")
|
||||
disabled = true
|
||||
|
||||
[node name="TornadoArea" type="CollisionShape2D" parent="." unique_id=1356386666]
|
||||
shape = SubResource("CircleShape2D_07hm3")
|
||||
|
|
@ -4,22 +4,15 @@ class_name DropsBase
|
|||
var witch
|
||||
var player
|
||||
var is_spawning = true
|
||||
var in_orbit: bool = false
|
||||
signal collected
|
||||
|
||||
var _collect_sfx = preload("res://assets/music&sfx/sfx/lesiakower-coin-collect-retro-8-bit-sound-effect-145251.mp3")
|
||||
var _sfx_player: AudioStreamPlayer
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
body_entered.connect(_on_body_entered)
|
||||
witch = get_node("/root/Game/Witch")
|
||||
collected.connect(witch._on_collect)
|
||||
player = get_node("/root/Game/Player")
|
||||
_sfx_player = AudioStreamPlayer.new()
|
||||
_sfx_player.stream = _collect_sfx
|
||||
_sfx_player.volume_db = -18
|
||||
add_child(_sfx_player)
|
||||
_animate_spawn()
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
|
@ -45,18 +38,11 @@ func _animate_spawn() -> void:
|
|||
is_spawning = false
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body == player and not is_spawning and not in_orbit:
|
||||
var cauldron = witch.get_node("CauldronBar")
|
||||
if cauldron.is_brewing and player.fruit_queue.size() < 3:
|
||||
_sfx_player.pitch_scale = randf_range(0.85, 1.15)
|
||||
_sfx_player.play()
|
||||
player.add_to_queue(self)
|
||||
else:
|
||||
collect()
|
||||
if body == player and not is_spawning:
|
||||
collect()
|
||||
pass
|
||||
|
||||
func collect():
|
||||
_sfx_player.pitch_scale = randf_range(0.85, 1.15)
|
||||
_sfx_player.play()
|
||||
is_spawning = true
|
||||
var position_drop = create_tween()
|
||||
var target = witch.global_position
|
||||
|
|
@ -68,5 +54,3 @@ func collect():
|
|||
var scale_tween = create_tween()
|
||||
collected.emit(self)
|
||||
scale_tween.tween_property(self, "scale", Vector2.ZERO,0.2)
|
||||
await scale_tween.finished
|
||||
queue_free()
|
||||
|
|
|
|||
|
|
@ -3,7 +3,4 @@ class_name Perk
|
|||
|
||||
@export var name: String
|
||||
@export var description: String
|
||||
@export var stats: String = ""
|
||||
@export var spell: String = SpellLibrary.NONE
|
||||
@export var icon: Texture2D = null
|
||||
var effect: Callable
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ extends Area2D
|
|||
class_name ProjectileBase
|
||||
|
||||
@export var size: float
|
||||
@export var damage: int = 5
|
||||
var speed = 200
|
||||
@export var element: String
|
||||
var direction: Vector2
|
||||
|
|
@ -21,7 +20,7 @@ func launch(target: Vector2):
|
|||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("enemies"):
|
||||
body.take_damage(damage)
|
||||
body.hit()
|
||||
queue_free()
|
||||
|
||||
func _remove():
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
extends Resource
|
||||
class_name SpawnStage
|
||||
|
||||
@export var time_start: float = 0.0
|
||||
@export var time_end: float = -1.0
|
||||
@export var elite_enemy: PackedScene = null
|
||||
@export var entries: Array[StageEntry]
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://ca7n7kd1ki2is
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
extends Node
|
||||
|
||||
const APPLE = 0
|
||||
const GRAPE = 1
|
||||
const CHILI = 2
|
||||
|
||||
const NONE = "NONE"
|
||||
const SHURIKEN = "SHURIKEN"
|
||||
const FIREBALL = "FIREBALL"
|
||||
const FIRE_SWIRL = "FIRE_SWIRL"
|
||||
const TORNADO = "TORNADO"
|
||||
const LASER = "LASER"
|
||||
|
||||
var recipes: Dictionary = {
|
||||
FIREBALL: [APPLE],
|
||||
TORNADO: [GRAPE],
|
||||
LASER: [CHILI],
|
||||
SHURIKEN: [APPLE, GRAPE],
|
||||
FIRE_SWIRL: [APPLE, CHILI],
|
||||
}
|
||||
|
||||
func identify(cauldron_slots: Array) -> String:
|
||||
var types: Array = []
|
||||
if cauldron_slots.any(func(x): return x == 2): types.append(APPLE)
|
||||
if cauldron_slots.any(func(x): return x == 4): types.append(GRAPE)
|
||||
if cauldron_slots.any(func(x): return x == 3): types.append(CHILI)
|
||||
|
||||
for spell_id in recipes:
|
||||
if recipes[spell_id] == types:
|
||||
return spell_id
|
||||
return NONE
|
||||
|
||||
func get_recipe(spell: String) -> Array:
|
||||
return recipes.get(spell, [])
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dpn7aoem55ptp
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
extends Resource
|
||||
class_name StageEntry
|
||||
|
||||
@export var enemy: PackedScene
|
||||
@export var count_at_start: int = 0
|
||||
@export var count_at_end: int = 20
|
||||
@export var min_interval: float = 0.3
|
||||
@export var max_spawns: int = -1 # -1 = unlimited
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dc737qsmg74i
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
extends Area2D
|
||||
|
||||
@export var beam_type := "middle"
|
||||
|
||||
@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D
|
||||
@onready var shape: CollisionShape2D = $CollisionShape2D
|
||||
|
||||
func _ready() -> void:
|
||||
if sprite.sprite_frames.has_animation(beam_type):
|
||||
sprite.play(beam_type)
|
||||
shape.disabled = beam_type != "middle"
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://bdhx27edemfce
|
||||
|
|
@ -1,19 +1,17 @@
|
|||
extends EnemyBase
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super()
|
||||
speed = 15.0
|
||||
max_hp = 25
|
||||
hp = max_hp
|
||||
damage = 5
|
||||
# $Area2D.body_entered.connect(_on_area_2d_body_entered)
|
||||
speed = 0.1
|
||||
hits_remaining = 2
|
||||
$Area2D.body_entered.connect(_on_area_2d_body_entered)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
if is_dying or is_hurt:
|
||||
return
|
||||
_chase_witch()
|
||||
|
||||
#func _on_area_2d_body_entered(body: Node2D) -> void:
|
||||
#if body == player:
|
||||
#take_damage(player.damage)
|
||||
func _on_area_2d_body_entered(body: Node2D) -> void:
|
||||
if body == player:
|
||||
hit()
|
||||
|
|
|
|||
|
|
@ -13,12 +13,9 @@ var progres_index = 0
|
|||
var is_brewing
|
||||
var brew_explosion = true
|
||||
@onready var witch = get_parent()
|
||||
@onready var player = get_node("/root/Game/Player")
|
||||
var explosion_scene = preload("res://scenes/explosion.tscn")
|
||||
var _ignite_sfx = preload("res://assets/music&sfx/sfx/data_pion-sfx9-fwoosh-324525.mp3")
|
||||
var _ignite_player: AudioStreamPlayer
|
||||
var _slot_shake_tweens: Array = []
|
||||
var explosion_scene = preload("res://scenes/explosion.tscn")# Called when the node enters the scene tree for the first time.
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
print(witch)
|
||||
base.atlas = preload("res://assets/Cauldron's Brew/Equiptment.png")
|
||||
|
|
@ -34,10 +31,7 @@ func _ready() -> void:
|
|||
slots = [$Empty1, $Empty2, $Empty3]
|
||||
colors = [base, yellow, red, orange, purple]
|
||||
enrich_burning_colors()
|
||||
_ignite_player = AudioStreamPlayer.new()
|
||||
_ignite_player.stream = _ignite_sfx
|
||||
_ignite_player.volume_db = -15
|
||||
add_child(_ignite_player)
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
|
@ -50,21 +44,13 @@ func change_texture(slot_index: int, color_index: int):
|
|||
pass
|
||||
|
||||
func reset_texture():
|
||||
for t in _slot_shake_tweens:
|
||||
if t:
|
||||
t.kill()
|
||||
_slot_shake_tweens.clear()
|
||||
for i in slots.size():
|
||||
slots[i].texture = colors[0]
|
||||
slots[i].rotation = 0.0
|
||||
slot_states = [0, 0, 0]
|
||||
for slot in slots:
|
||||
slot.texture = colors[0]
|
||||
slot_states = [0,0,0]
|
||||
|
||||
func ignite_cauldrons():
|
||||
for i in slots.size():
|
||||
slots[i].texture = burning_colors[slot_states[i]]
|
||||
_ignite_player.pitch_scale = randf_range(0.8, 1.2)
|
||||
_ignite_player.play()
|
||||
_slot_shake_tweens.append(_make_slot_shake(slots[i]))
|
||||
await get_tree().create_timer(0.4).timeout
|
||||
if brew_explosion:
|
||||
var boom = explosion_scene.instantiate()
|
||||
|
|
@ -85,45 +71,30 @@ func progres_bar(fruit):
|
|||
if is_brewing:
|
||||
return
|
||||
if fruit is Apple:
|
||||
change_texture(progres_index, 2)
|
||||
change_texture(progres_index,2)
|
||||
if fruit is Grape:
|
||||
change_texture(progres_index, 4)
|
||||
if fruit is Chili:
|
||||
change_texture(progres_index, 3)
|
||||
_pop_slot(progres_index)
|
||||
progres_index += 1
|
||||
if progres_index == 3:
|
||||
brew(slot_states)
|
||||
progres_index = 0
|
||||
pass
|
||||
|
||||
func _pop_slot(slot_index: int) -> void:
|
||||
var slot = slots[slot_index]
|
||||
slot.pivot_offset = slot.size / 2
|
||||
slot.scale = Vector2(1.35, 1.35)
|
||||
var t = create_tween()
|
||||
t.tween_property(slot, "scale", Vector2(1.0, 1.0), 0.18).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
|
||||
|
||||
func _make_slot_shake(slot: TextureRect) -> Tween:
|
||||
slot.pivot_offset = slot.size / 2
|
||||
var t = create_tween().set_loops()
|
||||
t.tween_property(slot, "rotation", 0.015, 0.05)
|
||||
t.tween_property(slot, "rotation", -0.015, 0.05)
|
||||
t.tween_property(slot, "rotation", 0.0, 0.05)
|
||||
return t
|
||||
|
||||
func brew(fruits):
|
||||
is_brewing = true
|
||||
var unique = get_unique_fruits()
|
||||
await ignite_cauldrons()
|
||||
match SpellLibrary.identify(fruits):
|
||||
SpellLibrary.SHURIKEN: witch.shoot_shuriken()
|
||||
SpellLibrary.FIREBALL: witch.shoot_fireballs()
|
||||
SpellLibrary.FIRE_SWIRL: witch.shoot_fire_swirl()
|
||||
SpellLibrary.TORNADO: witch.shoot_tornado()
|
||||
SpellLibrary.LASER: witch.shoot_laser()
|
||||
if fruits == [2, 2, 4]:
|
||||
witch.shoot_fire_swirl()
|
||||
elif unique.has(2) and unique.size() == 1:
|
||||
witch.shoot_fireballs()
|
||||
elif unique.has(4) and unique.size() == 1:
|
||||
witch.shoot_shuriken()
|
||||
elif unique.has(2) and unique.has(4) and unique.size() == 2:
|
||||
witch.shoot_fireballs()
|
||||
witch.shoot_shuriken()
|
||||
reset_texture()
|
||||
is_brewing = false
|
||||
player.flush_queue()
|
||||
|
||||
func get_unique_fruits() -> Array:
|
||||
var unique = []
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
extends DropsBase
|
||||
class_name Chili
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dinqfnri3co88
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
extends CanvasLayer
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func _on_back_button_pressed() -> void:
|
||||
get_tree().change_scene_to_file("res://scenes/mainmenu.tscn")
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dt85lj7ts5i87
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
extends CanvasLayer
|
||||
|
||||
@onready var _spawn_control = get_node("/root/Game/SpawnControl")
|
||||
@onready var _witch = get_node("/root/Game/Witch")
|
||||
@onready var _drop_manager = get_node("/root/Game/DropManager")
|
||||
@onready var _player = get_node("/root/Game/Player")
|
||||
|
||||
var _fruit_scenes: Dictionary = {
|
||||
"Apple": preload("res://scenes/apple.tscn"),
|
||||
"Grape": preload("res://scenes/grape.tscn"),
|
||||
"Chili": preload("res://scenes/chili.tscn"),
|
||||
}
|
||||
|
||||
var _spell_dispatch: Dictionary
|
||||
var _lvl_disable_btn: Button
|
||||
|
||||
func _ready() -> void:
|
||||
layer = 10
|
||||
_spell_dispatch = {
|
||||
SpellLibrary.FIREBALL: _witch.shoot_fireballs,
|
||||
SpellLibrary.SHURIKEN: _witch.shoot_shuriken,
|
||||
SpellLibrary.FIRE_SWIRL: _witch.shoot_fire_swirl,
|
||||
SpellLibrary.TORNADO: _witch.shoot_tornado,
|
||||
SpellLibrary.LASER: _witch.shoot_laser,
|
||||
}
|
||||
_build_ui()
|
||||
hide()
|
||||
|
||||
func _exit_tree() -> void:
|
||||
Engine.time_scale = 1.0
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event is InputEventKey and event.pressed and not event.echo:
|
||||
if event.keycode == KEY_D and event.ctrl_pressed:
|
||||
visible = not visible
|
||||
get_viewport().set_input_as_handled()
|
||||
|
||||
func _build_ui() -> void:
|
||||
var panel := PanelContainer.new()
|
||||
var style := StyleBoxFlat.new()
|
||||
style.bg_color = Color(0.0, 0.0, 0.0, 0.75)
|
||||
panel.add_theme_stylebox_override("panel", style)
|
||||
panel.anchor_left = 1.0
|
||||
panel.anchor_right = 1.0
|
||||
panel.anchor_top = 0.0
|
||||
panel.anchor_bottom = 1.0
|
||||
panel.offset_left = -220
|
||||
panel.offset_right = 0
|
||||
add_child(panel)
|
||||
|
||||
var scroll := ScrollContainer.new()
|
||||
scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
|
||||
panel.add_child(scroll)
|
||||
|
||||
var vbox := VBoxContainer.new()
|
||||
vbox.custom_minimum_size = Vector2(210, 0)
|
||||
vbox.add_theme_constant_override("separation", 4)
|
||||
scroll.add_child(vbox)
|
||||
|
||||
_add_section(vbox, "ENEMIES")
|
||||
_add_button(vbox, "Kill All", _kill_all_enemies)
|
||||
|
||||
_add_section(vbox, "TIME SCALE")
|
||||
var hbox_scale := HBoxContainer.new()
|
||||
vbox.add_child(hbox_scale)
|
||||
for s in [1, 2, 5, 10]:
|
||||
var btn := Button.new()
|
||||
btn.text = "%dx" % s
|
||||
btn.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
btn.pressed.connect(_set_time_scale.bind(float(s)))
|
||||
hbox_scale.add_child(btn)
|
||||
|
||||
_add_section(vbox, "SKIP TIME")
|
||||
var hbox_time := HBoxContainer.new()
|
||||
vbox.add_child(hbox_time)
|
||||
for secs in [30, 60]:
|
||||
var btn := Button.new()
|
||||
btn.text = "+%ds" % secs
|
||||
btn.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
btn.pressed.connect(_skip_time.bind(float(secs)))
|
||||
hbox_time.add_child(btn)
|
||||
|
||||
_add_section(vbox, "FRUITS")
|
||||
for fruit_name in _fruit_scenes.keys():
|
||||
_add_button(vbox, fruit_name, _spawn_fruit.bind(fruit_name))
|
||||
|
||||
_add_section(vbox, "SPELLS")
|
||||
for spell_id in SpellLibrary.recipes.keys():
|
||||
if _spell_dispatch.has(spell_id):
|
||||
_add_button(vbox, spell_id.capitalize(), _spell_dispatch[spell_id])
|
||||
|
||||
_add_section(vbox, "LEVEL")
|
||||
_add_button(vbox, "Level Up", _force_level_up)
|
||||
_lvl_disable_btn = Button.new()
|
||||
_lvl_disable_btn.text = "Disable Level Up: OFF"
|
||||
_lvl_disable_btn.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
_lvl_disable_btn.pressed.connect(_toggle_level_up_disabled)
|
||||
vbox.add_child(_lvl_disable_btn)
|
||||
|
||||
func _add_section(parent: VBoxContainer, title: String) -> void:
|
||||
var label := Label.new()
|
||||
label.text = title
|
||||
label.add_theme_color_override("font_color", Color.YELLOW)
|
||||
label.add_theme_font_size_override("font_size", 11)
|
||||
parent.add_child(label)
|
||||
|
||||
func _add_button(parent: VBoxContainer, label: String, callback: Callable) -> void:
|
||||
var btn := Button.new()
|
||||
btn.text = label
|
||||
btn.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
btn.pressed.connect(callback)
|
||||
parent.add_child(btn)
|
||||
|
||||
func _spawn_fruit(fruit_name: String) -> void:
|
||||
var fruit = _fruit_scenes[fruit_name].instantiate()
|
||||
fruit.global_position = _player.global_position + Vector2(randf_range(-30, 30), randf_range(-30, 30))
|
||||
get_node("/root/Game").add_child(fruit)
|
||||
|
||||
func _kill_all_enemies() -> void:
|
||||
for enemy in get_tree().get_nodes_in_group("enemies"):
|
||||
if is_instance_valid(enemy):
|
||||
enemy.die()
|
||||
|
||||
func _set_time_scale(scale: float) -> void:
|
||||
Engine.time_scale = scale
|
||||
|
||||
func _skip_time(secs: float) -> void:
|
||||
_spawn_control.elapsed_time += secs
|
||||
|
||||
func _force_level_up() -> void:
|
||||
_drop_manager.force_level_up()
|
||||
|
||||
func _toggle_level_up_disabled() -> void:
|
||||
_drop_manager.level_up_disabled = not _drop_manager.level_up_disabled
|
||||
_lvl_disable_btn.text = "Disable Level Up: " + ("ON" if _drop_manager.level_up_disabled else "OFF")
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://0r76ifdlnlv
|
||||
|
|
@ -3,13 +3,9 @@ extends Node2D
|
|||
@onready var player = get_node("/root/Game/Player")
|
||||
@onready var bar = get_node("/root/Game/CanvasLayer/ProgressBar")
|
||||
signal leveled_up
|
||||
@export var fruit_drop_threshold: int = 7
|
||||
@export var fruit_drop_ceiling: int = 15
|
||||
var level_up_disabled: bool = false # FOR DEBUG MENU
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
assert(fruit_drop_threshold <= fruit_drop_ceiling)
|
||||
bar.max_value = player.max_xp
|
||||
pass # Replace with function body.
|
||||
|
||||
|
|
@ -23,7 +19,7 @@ func on_enemy_died(enemy):
|
|||
var enemy_xp = enemy.xp
|
||||
player.current_xp += enemy.xp
|
||||
bar.value = player.current_xp
|
||||
if player.current_xp >= player.max_xp and not level_up_disabled:
|
||||
if player.current_xp >= player.max_xp:
|
||||
leveled_up.emit()
|
||||
player.max_xp = player.max_xp * 1.3
|
||||
bar.max_value = player.max_xp
|
||||
|
|
@ -36,24 +32,8 @@ func on_enemy_died(enemy):
|
|||
func drop_item(enemy):
|
||||
if not is_instance_valid(enemy):
|
||||
return
|
||||
var fruit_count = get_children().filter(func(c): return c is DropsBase).size()
|
||||
for entry in enemy.drop_table:
|
||||
var effective_chance = entry.chance
|
||||
if fruit_count >= fruit_drop_ceiling:
|
||||
continue
|
||||
elif fruit_count > fruit_drop_threshold:
|
||||
var chance_scale = 1.0 - float(fruit_count - fruit_drop_threshold) / float(fruit_drop_ceiling - fruit_drop_threshold)
|
||||
effective_chance *= chance_scale
|
||||
if randf() < effective_chance:
|
||||
if randf() < entry.chance:
|
||||
var drop = entry.drop.instantiate()
|
||||
drop.global_position = enemy.global_position
|
||||
add_child(drop)
|
||||
|
||||
# FOR DEBUG MENU
|
||||
func force_level_up() -> void:
|
||||
leveled_up.emit()
|
||||
player.max_xp = player.max_xp * 1.3
|
||||
bar.max_value = player.max_xp
|
||||
player.current_xp = 0
|
||||
bar.value = 0
|
||||
player.level += 1
|
||||
|
|
|
|||
|
|
@ -4,14 +4,9 @@ extends CharacterBody2D
|
|||
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
|
||||
@export var drop_table: Array[DropTable]
|
||||
|
||||
@export var damage: int = 2
|
||||
|
||||
@export var max_hp: int = 10
|
||||
|
||||
var is_dying = false
|
||||
var is_hurt = false
|
||||
var hp: int
|
||||
var _touching_witch: bool = false
|
||||
var hits_remaining = 1
|
||||
var speed
|
||||
var witch
|
||||
var player
|
||||
|
|
@ -26,17 +21,6 @@ func _ready() -> void:
|
|||
witch = get_node("/root/Game/Witch")
|
||||
player = get_node("/root/Game/Player")
|
||||
animated_sprite_2d.sprite_frames = animated_sprite_2d.sprite_frames.duplicate()
|
||||
hp = max_hp
|
||||
$Area2D.body_entered.connect(_on_base_body_entered)
|
||||
$Area2D.body_exited.connect(_on_base_body_exited)
|
||||
|
||||
func _on_base_body_entered(body: Node2D) -> void:
|
||||
if body == witch:
|
||||
_touching_witch = true
|
||||
|
||||
func _on_base_body_exited(body: Node2D) -> void:
|
||||
if body == witch:
|
||||
_touching_witch = false
|
||||
|
||||
func die():
|
||||
is_dying = true
|
||||
|
|
@ -48,55 +32,46 @@ func die():
|
|||
death_anim = "death_up" if last_direction.y < 0 else "death_down"
|
||||
animated_sprite_2d.sprite_frames.set_animation_loop(death_anim, false)
|
||||
animated_sprite_2d.play(death_anim)
|
||||
_play_hit_sound()
|
||||
var player = AudioStreamPlayer.new()
|
||||
add_child(player)
|
||||
player.stream = death_sound
|
||||
player.bus = "SFX"
|
||||
player.play()
|
||||
died.emit(self)
|
||||
await animated_sprite_2d.animation_finished
|
||||
queue_free()
|
||||
|
||||
func _play_hit_sound() -> void:
|
||||
var ap = AudioStreamPlayer.new()
|
||||
add_child(ap)
|
||||
ap.stream = death_sound
|
||||
ap.bus = "SFX"
|
||||
ap.pitch_scale = randf_range(0.7, 1.3)
|
||||
ap.play()
|
||||
|
||||
func take_damage(amount: int) -> void:
|
||||
func hit() -> void:
|
||||
if is_dying or is_hurt:
|
||||
return
|
||||
hp -= amount
|
||||
if hp <= 0:
|
||||
hits_remaining -= 1
|
||||
if hits_remaining <= 0:
|
||||
die()
|
||||
else:
|
||||
_play_hurt()
|
||||
|
||||
func hit() -> void:
|
||||
take_damage(1)
|
||||
|
||||
func _play_hurt() -> void:
|
||||
is_hurt = true
|
||||
var hurt_anim: String
|
||||
if abs(last_direction.x) >= abs(last_direction.y):
|
||||
hurt_anim = "hurt_left" if last_direction.x < 0 else "hurt_right"
|
||||
else:
|
||||
hurt_anim = "hurt_up" if last_direction.y < 0 else "hurt_down"
|
||||
if not animated_sprite_2d.sprite_frames.has_animation(hurt_anim):
|
||||
return
|
||||
is_hurt = true
|
||||
_play_hit_sound()
|
||||
animated_sprite_2d.sprite_frames.set_animation_loop(hurt_anim, false)
|
||||
animated_sprite_2d.play(hurt_anim)
|
||||
await get_tree().create_timer(0.25, true).timeout
|
||||
await animated_sprite_2d.animation_finished
|
||||
is_hurt = false
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
if _touching_witch and not is_dying:
|
||||
witch.take_damage(damage)
|
||||
pass
|
||||
|
||||
func _chase_witch() -> void:
|
||||
var direction = Vector2(witch.global_position - global_position).normalized()
|
||||
var direction = Vector2(witch.global_position - global_position)
|
||||
if direction != Vector2.ZERO:
|
||||
last_direction = direction
|
||||
velocity = direction * speed
|
||||
velocity = direction * speed
|
||||
|
||||
if direction == Vector2.ZERO:
|
||||
animated_sprite_2d.play("idle")
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
extends Area2D
|
||||
|
||||
@export var damage: int = 15
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
await get_tree().physics_frame
|
||||
for body in get_overlapping_bodies():
|
||||
if body.is_in_group("enemies"):
|
||||
body.take_damage(damage)
|
||||
body.hit()
|
||||
await $AnimatedSprite2D.animation_finished
|
||||
queue_free()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
extends EnemyBase
|
||||
|
||||
func _ready() -> void:
|
||||
super()
|
||||
speed = 15.0
|
||||
max_hp = 50
|
||||
hp = max_hp
|
||||
damage = 10
|
||||
$Area2D.body_entered.connect(_on_area_2d_body_entered)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
super._process(delta)
|
||||
if is_dying or is_hurt:
|
||||
return
|
||||
_chase_witch()
|
||||
|
||||
func _on_area_2d_body_entered(body: Node2D) -> void:
|
||||
#if body == player:
|
||||
# take_damage(player.damage)
|
||||
pass
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dklt42vjjcks7
|
||||
|
|
@ -15,10 +15,9 @@ const DIRS := [
|
|||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("enemies"):
|
||||
body.take_damage(damage)
|
||||
body.hit()
|
||||
|
||||
func _ready() -> void:
|
||||
damage = 6
|
||||
if _is_spread_child:
|
||||
super()
|
||||
return
|
||||
|
|
|
|||
|
|
@ -2,19 +2,14 @@ extends ProjectileBase
|
|||
|
||||
var fireball_aoe = false
|
||||
var explosion_scene = preload("res://scenes/explosion.tscn")
|
||||
@onready var perk_effects = get_node("/root/Game/PerkEffects")
|
||||
|
||||
func _ready() -> void:
|
||||
super()
|
||||
damage = 8
|
||||
|
||||
@onready var perk_effects = get_node("/root/Game/PerkEffects")# Called when the node enters the scene tree for the first time.
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
fireball_aoe = perk_effects.fireball_aoe_enabled
|
||||
if body.is_in_group("enemies"):
|
||||
body.take_damage(damage)
|
||||
body.hit()
|
||||
if fireball_aoe:
|
||||
var boom = explosion_scene.instantiate()
|
||||
boom.global_position = global_position
|
||||
get_parent().call_deferred("add_child", boom)
|
||||
get_parent().add_child(boom)
|
||||
queue_free()
|
||||
|
||||
|
|
|
|||
140
scripts/laser.gd
|
|
@ -1,140 +0,0 @@
|
|||
extends Node2D
|
||||
|
||||
const BEAM_DURATION := 3.0
|
||||
const PRIMARY_TICK_DMG := 40
|
||||
const SPLASH_TICK_DMG := 3
|
||||
const TICK_INTERVAL := 0.5
|
||||
const SWEEP_RATE := 22.0
|
||||
|
||||
@export var segment_size := 16.0
|
||||
@export var start_offset := 24.0
|
||||
|
||||
@onready var perk_effects = get_node("/root/Game/PerkEffects")
|
||||
|
||||
var beam_seg := preload("res://scenes/beam.tscn")
|
||||
var target: Node2D = null
|
||||
var all_segs: Array = []
|
||||
var mid_segs: Array = []
|
||||
var tick_timer := 0.0
|
||||
var elapsed := 0.0
|
||||
var done := false
|
||||
var current_angle := 0.0
|
||||
var sweep_to := 0.0
|
||||
var sweeping := false
|
||||
|
||||
func _ready() -> void:
|
||||
target = get_highest_hp_enemy()
|
||||
if target == null:
|
||||
queue_free()
|
||||
return
|
||||
current_angle = global_position.direction_to(target.global_position).angle()
|
||||
rebuild_segments()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if done:
|
||||
return
|
||||
elapsed += delta
|
||||
tick_timer += delta
|
||||
|
||||
if sweeping:
|
||||
current_angle = lerp_angle(current_angle, sweep_to, 1.0 - exp(-SWEEP_RATE * delta))
|
||||
if abs(angle_difference(current_angle, sweep_to)) < 0.005:
|
||||
current_angle = sweep_to
|
||||
sweeping = false
|
||||
rebuild_segments()
|
||||
|
||||
if tick_timer >= TICK_INTERVAL:
|
||||
tick_timer -= TICK_INTERVAL
|
||||
do_damage_tick()
|
||||
if elapsed >= BEAM_DURATION:
|
||||
done = true
|
||||
cleanup()
|
||||
|
||||
func rebuild_segments() -> void:
|
||||
var dir := Vector2.from_angle(current_angle)
|
||||
var beam_start := global_position + dir * start_offset
|
||||
var dest_dist := global_position.distance_to(target.global_position)
|
||||
var beam_dist := dest_dist - start_offset
|
||||
var n_mid := int(max(0.0, beam_dist - segment_size) / segment_size)
|
||||
|
||||
var positions: Array = [beam_start]
|
||||
var types: Array = ["start"]
|
||||
for i in range(n_mid):
|
||||
positions.append(beam_start + dir * (segment_size * float(i + 1)))
|
||||
types.append("middle")
|
||||
positions.append(beam_start + dir * (segment_size * float(n_mid + 1)))
|
||||
types.append("end")
|
||||
|
||||
while all_segs.size() < positions.size():
|
||||
var seg = beam_seg.instantiate()
|
||||
get_parent().add_child(seg)
|
||||
all_segs.append(seg)
|
||||
while all_segs.size() > positions.size():
|
||||
var seg = all_segs.pop_back()
|
||||
if is_instance_valid(seg):
|
||||
seg.queue_free()
|
||||
|
||||
mid_segs.clear()
|
||||
for i in range(all_segs.size()):
|
||||
var seg = all_segs[i]
|
||||
if not is_instance_valid(seg):
|
||||
continue
|
||||
seg.global_position = positions[i]
|
||||
seg.rotation = current_angle
|
||||
if seg.beam_type != types[i]:
|
||||
seg.beam_type = types[i]
|
||||
seg.shape.disabled = types[i] != "middle"
|
||||
if seg.sprite.sprite_frames.has_animation(types[i]):
|
||||
seg.sprite.play(types[i])
|
||||
if types[i] == "middle":
|
||||
mid_segs.append(seg)
|
||||
|
||||
if all_segs.size() > 1 and is_instance_valid(all_segs[0]):
|
||||
var ref_frame: int = all_segs[0].sprite.frame
|
||||
var ref_progress: float = all_segs[0].sprite.frame_progress
|
||||
for i in range(1, all_segs.size()):
|
||||
var seg = all_segs[i]
|
||||
if is_instance_valid(seg):
|
||||
seg.sprite.frame = ref_frame
|
||||
seg.sprite.frame_progress = ref_progress
|
||||
|
||||
func retarget(new_target: Node2D) -> void:
|
||||
target = new_target
|
||||
sweep_to = global_position.direction_to(new_target.global_position).angle()
|
||||
sweeping = true
|
||||
|
||||
func do_damage_tick() -> void:
|
||||
if (not is_instance_valid(target) or target.is_dying) and perk_effects.laser_retarget_enabled:
|
||||
var new_target = get_highest_hp_enemy()
|
||||
if new_target != null:
|
||||
retarget(new_target)
|
||||
|
||||
if is_instance_valid(target) and not target.is_dying:
|
||||
target.take_damage(PRIMARY_TICK_DMG)
|
||||
|
||||
var hit: Array = []
|
||||
for seg in mid_segs:
|
||||
if not is_instance_valid(seg):
|
||||
continue
|
||||
for body in seg.get_overlapping_bodies():
|
||||
if body.is_in_group("enemies") and not body.is_dying \
|
||||
and body != target and not hit.has(body):
|
||||
body.take_damage(SPLASH_TICK_DMG)
|
||||
hit.append(body)
|
||||
|
||||
func cleanup() -> void:
|
||||
for seg in all_segs:
|
||||
if is_instance_valid(seg):
|
||||
seg.queue_free()
|
||||
queue_free()
|
||||
|
||||
func get_highest_hp_enemy() -> Node2D:
|
||||
var best: Node2D = null
|
||||
var best_hp: int = -1
|
||||
for enemy in get_tree().get_nodes_in_group("enemies"):
|
||||
if not is_instance_valid(enemy) or enemy.is_dying:
|
||||
continue
|
||||
if enemy.hp > best_hp:
|
||||
best_hp = enemy.hp
|
||||
best = enemy
|
||||
return best
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dp6b3imslv10d
|
||||
|
|
@ -2,69 +2,33 @@ extends Control
|
|||
|
||||
|
||||
@onready var perk_effects = get_node("/root/Game/PerkEffects")
|
||||
var level_sound = preload("res://assets/music&sfx/sfx/lesiakower-level-up-enhancement-8-bit-retro-sound-effect-153002.mp3")
|
||||
var select_sound = preload("res://assets/music&sfx/sfx/47313572-experimental-8-bit-sound-270302.mp3")
|
||||
var card_shuffle_sound = preload("res://assets/music&sfx/sfx/card_shuffle.wav")
|
||||
var perks
|
||||
var player = AudioStreamPlayer.new()
|
||||
var select_player = AudioStreamPlayer.new()
|
||||
var shuffle_player = AudioStreamPlayer.new()
|
||||
@onready var perkCard = preload("res://scenes/PerkCard.tscn")
|
||||
var _particles_scene = preload("res://scenes/level_up_particles.tscn")
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
perks = perk_effects.available_perks
|
||||
get_node("/root/Game/DropManager").leveled_up.connect(show_perks)
|
||||
add_child(player)
|
||||
add_child(select_player)
|
||||
add_child(shuffle_player)
|
||||
player.volume_db = -10
|
||||
select_player.volume_db = -10
|
||||
shuffle_player.volume_db = -10
|
||||
select_player.stream = select_sound
|
||||
shuffle_player.stream = card_shuffle_sound
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func show_perks():
|
||||
player.stream = level_sound
|
||||
player.play()
|
||||
if perks.is_empty():
|
||||
return
|
||||
var tween = create_tween()
|
||||
tween.tween_property($ColorRect, "color:a", 0.6, 0.3)
|
||||
get_tree().paused = true
|
||||
var shuffled = perks.duplicate()
|
||||
shuffled.shuffle()
|
||||
var chosen = shuffled.slice(0, 3)
|
||||
await get_tree().create_timer(0.4).timeout
|
||||
for x in chosen:
|
||||
var card = perkCard.instantiate()
|
||||
$HBoxContainer.add_child(card)
|
||||
card.setup(x, func(): select_perk(x), func(): select_player.play())
|
||||
shuffle_player.play()
|
||||
await get_tree().create_timer(0.25).timeout
|
||||
|
||||
var button = Button.new()
|
||||
button.text = x.name + "\n" + x.description
|
||||
button.pressed.connect(func(): select_perk(x))
|
||||
$HBoxContainer.add_child(button)
|
||||
|
||||
func select_perk(perk):
|
||||
perk.effect.call()
|
||||
get_tree().paused = false
|
||||
_spawn_level_up_particles(get_node("/root/Game/Witch").global_position)
|
||||
_spawn_level_up_particles(get_node("/root/Game/Player").global_position)
|
||||
perks.erase(perk)
|
||||
for child in $HBoxContainer.get_children():
|
||||
child.animate_out()
|
||||
var tween = create_tween()
|
||||
tween.tween_property($ColorRect, "color:a", 0.0, 0.4)
|
||||
await tween.finished
|
||||
for child in $HBoxContainer.get_children():
|
||||
child.queue_free()
|
||||
|
||||
func _spawn_level_up_particles(pos: Vector2) -> void:
|
||||
var p = _particles_scene.instantiate()
|
||||
p.global_position = pos
|
||||
p.z_index = 10
|
||||
get_node("/root/Game").add_child(p)
|
||||
get_tree().create_timer(1.2).timeout.connect(p.queue_free)
|
||||
for child in $HBoxContainer.get_children(): child.queue_free()
|
||||
|
|
|
|||