Compare commits

...

18 commits
0.3.2 ... main

Author SHA1 Message Date
f1d89d2abf Update version to 0.5.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-06 12:00:59 +07:00
8fa547be1c Reduce the explosion animation time to 0.5 2023-12-06 11:57:28 +07:00
d6d1c66eb6 Update explosion animation for area damage 2023-12-06 11:56:52 +07:00
9a9fdbde4e Add animation effect to area damage
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-05 22:29:34 +07:00
25d1dadded Add object to locate base 2023-12-05 21:20:31 +07:00
d4f1847f3b Update version to 0.4.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-19 21:15:40 +07:00
214cddded0 Add mark to the enemy spawn point 2023-11-19 21:01:37 +07:00
018d017255 Add visual effects to slow effects on railgun v3 special abilities 2023-11-19 18:11:07 +07:00
a281d40bf5 Add animation when the enemy die 2023-11-19 17:49:32 +07:00
bc72c1ef01 Disable loop for dead animation 2023-11-19 17:26:54 +07:00
9501104d53 Add dead animation to enemies 2023-11-19 17:13:58 +07:00
c2e571b70f Add version to about page 2023-11-19 16:49:51 +07:00
e0e0841758 Update link
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-15 16:09:09 +07:00
4600c279c7 Fix AppCenter link 2023-11-15 16:03:28 +07:00
bed5d875a8 Fix trailer embed size
Some checks reported errors
continuous-integration/drone/push Build was killed
2023-11-15 12:39:02 +07:00
9164dea2e5 Add download to README
Some checks reported errors
continuous-integration/drone/push Build was killed
2023-11-15 12:37:09 +07:00
9f63e8e152 Add trailer to README 2023-11-15 12:30:35 +07:00
946f211330 Add settings feature
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-14 22:02:05 +07:00
45 changed files with 1509 additions and 55 deletions

View file

@ -4,14 +4,20 @@
<p align="center">
<a href="https://git.moe.team/moepoi/Frontier-of-Hell">
<a href="https://frontier-of-hell.moe.team">
<img src="https://telegra.ph/file/a918724e0cf06e890aeed.png" width="400" alt="Frontier of Hell">
</a>
</p>
## Description
[Frontier of Hell](https://git.moe.team/moepoi/Frontier-of-Hell) is a tower defense game that requires players to protect the base from enemy attacks at each stage. To defend the base, players can build and upgrade towers that will attack the enemies as they approach the base.
## Trailer
[![Watch the video](https://img.youtube.com/vi/IATxp1SUnLw/hqdefault.jpg)](https://www.youtube.com/embed/IATxp1SUnLw)
## Download
- Windows, Linux, Android : [Github Release](https://github.com/moepoi/Frontier-of-Hell/releases)
- Android : [ApkPure](https://apkpure.com/frontier-of-hell/dev.moepoi.frontierofhell) & [AppCenter](https://install.appcenter.ms/users/moepoi/apps/frontier-of-hell/distribution_groups/public)
## Contributors
- Michael William Jonathan / [@moepoi](https://github.com/moepoi)

BIN
assets/icons/base-mark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dca4npsxwr1m3"
path="res://.godot/imported/base-mark.png-b036609631a945409172277f06bf47e7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/icons/base-mark.png"
dest_files=["res://.godot/imported/base-mark.png-b036609631a945409172277f06bf47e7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://o2dc3vcnnd4t"
path="res://.godot/imported/enemy-marker-arrow.png-44d7acc461ba0ceb888ccfca827d1199.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/icons/enemy-marker-arrow.png"
dest_files=["res://.godot/imported/enemy-marker-arrow.png-44d7acc461ba0ceb888ccfca827d1199.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bdga2vyi2dpaw"
path="res://.godot/imported/enemy-marker-icon.png-9ee0b010b56cd806a6adcd13a6bfd946.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/icons/enemy-marker-icon.png"
dest_files=["res://.godot/imported/enemy-marker-icon.png-9ee0b010b56cd806a6adcd13a6bfd946.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/icons/settings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgaqy7lcu4x78"
path="res://.godot/imported/settings.png-9e60c86d9b162ed0f32eee17a57d027f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/icons/settings.png"
dest_files=["res://.godot/imported/settings.png-9e60c86d9b162ed0f32eee17a57d027f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8fdtvgaq5bo6"
path="res://.godot/imported/explosion.png-886739e81fcc3dcfae2147b72459ccad.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/spritesheets/explosion.png"
dest_files=["res://.godot/imported/explosion.png-886739e81fcc3dcfae2147b72459ccad.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -26,8 +26,8 @@ architectures/armeabi-v7a=true
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
version/code=3
version/name="0.3.2"
version/code=5
version/name="0.5.0"
package/unique_name="dev.moepoi.frontierofhell"
package/name="Frontier of Hell"
package/signed=true
@ -237,8 +237,8 @@ application/modify_resources=true
application/icon="res://assets/icons/app-logo.png"
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version="0.0.3.2"
application/product_version="0.0.3.2"
application/file_version="0.0.5.0"
application/product_version="0.0.5.0"
application/company_name="Moepoi"
application/product_name="Frontier of Hell"
application/file_description="~"

View file

@ -20,6 +20,10 @@ boot_splash/fullsize=false
config/icon="res://assets/icons/logo.png"
boot_splash/minimum_display_time=3
[autoload]
Global="*res://scripts/global.gd"
[display]
window/stretch/mode="viewport"

View file

@ -1,11 +1,72 @@
[gd_scene load_steps=4 format=3 uid="uid://dqa80ptcc8p70"]
[gd_scene load_steps=14 format=3 uid="uid://dqa80ptcc8p70"]
[ext_resource type="Script" path="res://scripts/bullets/bullet.gd" id="1_lacqw"]
[ext_resource type="Texture2D" uid="uid://c57taqe4k3mi2" path="res://assets/spritesheets/bullet-1.png" id="2_o8iut"]
[ext_resource type="Texture2D" uid="uid://b8fdtvgaq5bo6" path="res://assets/spritesheets/explosion.png" id="3_wtt2i"]
[sub_resource type="CircleShape2D" id="CircleShape2D_3cgpo"]
radius = 6.0
[sub_resource type="CircleShape2D" id="CircleShape2D_dyohr"]
radius = 88.0511
[sub_resource type="AtlasTexture" id="AtlasTexture_5sdcd"]
atlas = ExtResource("3_wtt2i")
region = Rect2(0, 0, 1428, 2000)
[sub_resource type="AtlasTexture" id="AtlasTexture_5uq50"]
atlas = ExtResource("3_wtt2i")
region = Rect2(1428, 0, 1428, 2000)
[sub_resource type="AtlasTexture" id="AtlasTexture_8w3i0"]
atlas = ExtResource("3_wtt2i")
region = Rect2(2856, 0, 1428, 2000)
[sub_resource type="AtlasTexture" id="AtlasTexture_vq42n"]
atlas = ExtResource("3_wtt2i")
region = Rect2(4284, 0, 1428, 2000)
[sub_resource type="AtlasTexture" id="AtlasTexture_r0vwq"]
atlas = ExtResource("3_wtt2i")
region = Rect2(5712, 0, 1428, 2000)
[sub_resource type="AtlasTexture" id="AtlasTexture_011v7"]
atlas = ExtResource("3_wtt2i")
region = Rect2(7140, 0, 1428, 2000)
[sub_resource type="AtlasTexture" id="AtlasTexture_viipg"]
atlas = ExtResource("3_wtt2i")
region = Rect2(8568, 0, 1428, 2000)
[sub_resource type="SpriteFrames" id="SpriteFrames_88q0q"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5sdcd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5uq50")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8w3i0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vq42n")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r0vwq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_011v7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_viipg")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="bullet" type="Area2D"]
script = ExtResource("1_lacqw")
@ -19,5 +80,17 @@ shape = SubResource("CircleShape2D_3cgpo")
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_dyohr")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
visible = false
scale = Vector2(0.15, 0.15)
sprite_frames = SubResource("SpriteFrames_88q0q")
[connection signal="body_entered" from="." to="." method="_on_Bullet_body_entered"]
[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"]
[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"]
[connection signal="body_exited" from="Area2D" to="." method="_on_body_exited"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://dxqjsq73hbgd1"]
[gd_scene load_steps=37 format=3 uid="uid://dxqjsq73hbgd1"]
[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_vqyfw"]
[ext_resource type="Texture2D" uid="uid://cxkvhb7olncvm" path="res://assets/spritesheets/enemies/cyclops.png" id="2_tsimi"]
@ -19,6 +19,22 @@ region = Rect2(512, 2560, 512, 512)
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 2560, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5yr04"]
atlas = ExtResource("2_tsimi")
region = Rect2(0, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0vqdg"]
atlas = ExtResource("2_tsimi")
region = Rect2(512, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lr853"]
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jyf0d"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ol8b7"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 0, 512, 512)
@ -35,6 +51,22 @@ region = Rect2(512, 512, 512, 512)
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_spk7q"]
atlas = ExtResource("2_tsimi")
region = Rect2(0, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_7ssd3"]
atlas = ExtResource("2_tsimi")
region = Rect2(512, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nspin"]
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_rrkc6"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lffse"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 4096, 512, 512)
@ -51,6 +83,22 @@ region = Rect2(512, 4608, 512, 512)
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 4608, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_2nfkt"]
atlas = ExtResource("2_tsimi")
region = Rect2(0, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8fp8o"]
atlas = ExtResource("2_tsimi")
region = Rect2(512, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lxlv8"]
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qpspw"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_i5q0p"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 6144, 512, 512)
@ -67,6 +115,22 @@ region = Rect2(512, 6656, 512, 512)
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 6656, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_yrfms"]
atlas = ExtResource("2_tsimi")
region = Rect2(0, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_sphuq"]
atlas = ExtResource("2_tsimi")
region = Rect2(512, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_vned8"]
atlas = ExtResource("2_tsimi")
region = Rect2(1024, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ftvcv"]
atlas = ExtResource("2_tsimi")
region = Rect2(1536, 7680, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_2gjkv"]
animations = [{
"frames": [{
@ -88,6 +152,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5yr04")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0vqdg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lr853")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jyf0d")
}],
"loop": false,
"name": &"back_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ol8b7")
}, {
"duration": 1.0,
@ -105,6 +186,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_spk7q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7ssd3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nspin")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rrkc6")
}],
"loop": false,
"name": &"front_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lffse")
}, {
"duration": 1.0,
@ -122,6 +220,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_2nfkt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8fp8o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lxlv8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qpspw")
}],
"loop": false,
"name": &"left_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_i5q0p")
}, {
"duration": 1.0,
@ -136,6 +251,23 @@ animations = [{
"loop": true,
"name": &"right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yrfms")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sphuq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vned8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ftvcv")
}],
"loop": false,
"name": &"right_dead",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5hy1j"]
@ -154,7 +286,7 @@ script = ExtResource("1_vqyfw")
position = Vector2(9.15527e-05, 0.00012207)
scale = Vector2(0.09, 0.089)
sprite_frames = SubResource("SpriteFrames_2gjkv")
animation = &"right"
animation = &"back"
autoplay = "right"
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBody"]
@ -173,4 +305,9 @@ show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[node name="DeadTimer" type="Timer" parent="EnemyBody"]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]
[connection signal="timeout" from="EnemyBody/DeadTimer" to="." method="_on_dead_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://btaiqm84ygubk"]
[gd_scene load_steps=37 format=3 uid="uid://btaiqm84ygubk"]
[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_7h4t3"]
[ext_resource type="Texture2D" uid="uid://dfdhwhurk5fbm" path="res://assets/spritesheets/enemies/demon.png" id="2_kwsco"]
@ -19,6 +19,22 @@ region = Rect2(512, 2560, 512, 512)
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 2560, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0f7aw"]
atlas = ExtResource("2_kwsco")
region = Rect2(0, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xqlv7"]
atlas = ExtResource("2_kwsco")
region = Rect2(512, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hpbcb"]
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_erk8i"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3mqix"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 0, 512, 512)
@ -35,6 +51,22 @@ region = Rect2(512, 512, 512, 512)
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nuuhh"]
atlas = ExtResource("2_kwsco")
region = Rect2(0, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_uefol"]
atlas = ExtResource("2_kwsco")
region = Rect2(512, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_grx1m"]
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_gcbhh"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_de3hb"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 4096, 512, 512)
@ -51,6 +83,22 @@ region = Rect2(512, 4608, 512, 512)
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 4608, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hot4g"]
atlas = ExtResource("2_kwsco")
region = Rect2(0, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_kag5r"]
atlas = ExtResource("2_kwsco")
region = Rect2(512, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_yyv1e"]
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8djft"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8x1s8"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 6144, 512, 512)
@ -67,6 +115,22 @@ region = Rect2(512, 6656, 512, 512)
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 6656, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8j0ad"]
atlas = ExtResource("2_kwsco")
region = Rect2(0, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_y41wk"]
atlas = ExtResource("2_kwsco")
region = Rect2(512, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_biudf"]
atlas = ExtResource("2_kwsco")
region = Rect2(1024, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_mwimp"]
atlas = ExtResource("2_kwsco")
region = Rect2(1536, 7680, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_nh3e1"]
animations = [{
"frames": [{
@ -88,6 +152,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0f7aw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xqlv7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hpbcb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_erk8i")
}],
"loop": false,
"name": &"back_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_3mqix")
}, {
"duration": 1.0,
@ -105,6 +186,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_nuuhh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uefol")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_grx1m")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gcbhh")
}],
"loop": false,
"name": &"front_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_de3hb")
}, {
"duration": 1.0,
@ -122,6 +220,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hot4g")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kag5r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yyv1e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8djft")
}],
"loop": false,
"name": &"left_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8x1s8")
}, {
"duration": 1.0,
@ -136,6 +251,23 @@ animations = [{
"loop": true,
"name": &"right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8j0ad")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_y41wk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_biudf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mwimp")
}],
"loop": false,
"name": &"right_dead",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5hy1j"]
@ -154,9 +286,8 @@ script = ExtResource("1_7h4t3")
position = Vector2(9.15527e-05, 0.00012207)
scale = Vector2(0.09, 0.089)
sprite_frames = SubResource("SpriteFrames_nh3e1")
animation = &"back"
animation = &"back_dead"
autoplay = "right"
frame_progress = 0.853856
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBody"]
position = Vector2(-0.992983, 1.00696)
@ -174,4 +305,9 @@ show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[node name="DeadTimer" type="Timer" parent="EnemyBody"]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]
[connection signal="timeout" from="EnemyBody/DeadTimer" to="." method="_on_dead_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://bajs6ngory3qo"]
[gd_scene load_steps=37 format=3 uid="uid://bajs6ngory3qo"]
[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_00y7u"]
[ext_resource type="Texture2D" uid="uid://d1q5q70hng32n" path="res://assets/spritesheets/enemies/demon-boar.png" id="2_jti63"]
@ -19,6 +19,22 @@ region = Rect2(512, 2560, 512, 512)
atlas = ExtResource("2_jti63")
region = Rect2(1024, 2560, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_s2ruk"]
atlas = ExtResource("2_jti63")
region = Rect2(0, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_afysb"]
atlas = ExtResource("2_jti63")
region = Rect2(512, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dytdt"]
atlas = ExtResource("2_jti63")
region = Rect2(1024, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3skrt"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_7uatc"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 0, 512, 512)
@ -35,6 +51,22 @@ region = Rect2(512, 512, 512, 512)
atlas = ExtResource("2_jti63")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hfpvx"]
atlas = ExtResource("2_jti63")
region = Rect2(0, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_61kik"]
atlas = ExtResource("2_jti63")
region = Rect2(512, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ub2md"]
atlas = ExtResource("2_jti63")
region = Rect2(1024, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jskih"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0bdj2"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 4096, 512, 512)
@ -51,6 +83,22 @@ region = Rect2(512, 4608, 512, 512)
atlas = ExtResource("2_jti63")
region = Rect2(1024, 4608, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_wjxql"]
atlas = ExtResource("2_jti63")
region = Rect2(0, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_g8t4f"]
atlas = ExtResource("2_jti63")
region = Rect2(512, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_uguyf"]
atlas = ExtResource("2_jti63")
region = Rect2(1024, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_akp2h"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hhppb"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 6144, 512, 512)
@ -67,6 +115,22 @@ region = Rect2(512, 6656, 512, 512)
atlas = ExtResource("2_jti63")
region = Rect2(1024, 6656, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ic7nf"]
atlas = ExtResource("2_jti63")
region = Rect2(0, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_o5i6e"]
atlas = ExtResource("2_jti63")
region = Rect2(512, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_drpyn"]
atlas = ExtResource("2_jti63")
region = Rect2(1024, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_868x7"]
atlas = ExtResource("2_jti63")
region = Rect2(1536, 7680, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_ny71s"]
animations = [{
"frames": [{
@ -88,6 +152,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_s2ruk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_afysb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dytdt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3skrt")
}],
"loop": false,
"name": &"back_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_7uatc")
}, {
"duration": 1.0,
@ -105,6 +186,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hfpvx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_61kik")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ub2md")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jskih")
}],
"loop": false,
"name": &"front_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0bdj2")
}, {
"duration": 1.0,
@ -122,6 +220,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wjxql")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g8t4f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uguyf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_akp2h")
}],
"loop": false,
"name": &"left_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hhppb")
}, {
"duration": 1.0,
@ -136,6 +251,23 @@ animations = [{
"loop": true,
"name": &"right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ic7nf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o5i6e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_drpyn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_868x7")
}],
"loop": false,
"name": &"right_dead",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5hy1j"]
@ -154,7 +286,7 @@ script = ExtResource("1_00y7u")
position = Vector2(9.15527e-05, 0.00012207)
scale = Vector2(0.09, 0.089)
sprite_frames = SubResource("SpriteFrames_ny71s")
animation = &"right"
animation = &"back_dead"
autoplay = "right"
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBody"]
@ -173,4 +305,9 @@ show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[node name="DeadTimer" type="Timer" parent="EnemyBody"]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]
[connection signal="timeout" from="EnemyBody/DeadTimer" to="." method="_on_dead_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://sbr727jduiqw"]
[gd_scene load_steps=37 format=3 uid="uid://sbr727jduiqw"]
[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_4wu2v"]
[ext_resource type="Texture2D" uid="uid://bfyws0srbawxx" path="res://assets/spritesheets/enemies/demon-fungus.png" id="2_jkw1p"]
@ -19,6 +19,22 @@ region = Rect2(512, 2560, 512, 512)
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 2560, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_i26da"]
atlas = ExtResource("2_jkw1p")
region = Rect2(0, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_bfh4y"]
atlas = ExtResource("2_jkw1p")
region = Rect2(512, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_mnffh"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_wbr8g"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_pq10w"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 0, 512, 512)
@ -35,6 +51,22 @@ region = Rect2(512, 512, 512, 512)
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nrtl5"]
atlas = ExtResource("2_jkw1p")
region = Rect2(0, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_f5fdb"]
atlas = ExtResource("2_jkw1p")
region = Rect2(512, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qmj20"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_gpwgv"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qlghv"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 4096, 512, 512)
@ -51,6 +83,22 @@ region = Rect2(512, 4608, 512, 512)
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 4608, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hccyt"]
atlas = ExtResource("2_jkw1p")
region = Rect2(0, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_2b72c"]
atlas = ExtResource("2_jkw1p")
region = Rect2(512, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_6f40i"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jn1cs"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ibux8"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 6144, 512, 512)
@ -67,6 +115,22 @@ region = Rect2(512, 6656, 512, 512)
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 6656, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_1riw6"]
atlas = ExtResource("2_jkw1p")
region = Rect2(0, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3u45b"]
atlas = ExtResource("2_jkw1p")
region = Rect2(512, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_10r1v"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1024, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lwnf4"]
atlas = ExtResource("2_jkw1p")
region = Rect2(1536, 7680, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_5yy3x"]
animations = [{
"frames": [{
@ -88,6 +152,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_i26da")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bfh4y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mnffh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wbr8g")
}],
"loop": false,
"name": &"back_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_pq10w")
}, {
"duration": 1.0,
@ -105,6 +186,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_nrtl5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_f5fdb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qmj20")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gpwgv")
}],
"loop": false,
"name": &"front_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_qlghv")
}, {
"duration": 1.0,
@ -122,6 +220,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hccyt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2b72c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6f40i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jn1cs")
}],
"loop": false,
"name": &"left_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ibux8")
}, {
"duration": 1.0,
@ -136,6 +251,23 @@ animations = [{
"loop": true,
"name": &"right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_1riw6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3u45b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_10r1v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lwnf4")
}],
"loop": false,
"name": &"right_dead",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5hy1j"]
@ -154,10 +286,8 @@ script = ExtResource("1_4wu2v")
position = Vector2(9.15527e-05, 0.00012207)
scale = Vector2(0.09, 0.089)
sprite_frames = SubResource("SpriteFrames_5yy3x")
animation = &"right"
animation = &"back_dead"
autoplay = "right"
frame = 2
frame_progress = 0.287168
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBody"]
position = Vector2(-0.992983, 1.00696)
@ -175,4 +305,9 @@ show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[node name="DeadTimer" type="Timer" parent="EnemyBody"]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]
[connection signal="timeout" from="EnemyBody/DeadTimer" to="." method="_on_dead_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://dud7to2ncqrqe"]
[gd_scene load_steps=37 format=3 uid="uid://dud7to2ncqrqe"]
[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_m5a36"]
[ext_resource type="Texture2D" uid="uid://dgegmre1q57o5" path="res://assets/spritesheets/enemies/demon-shark.png" id="2_6ikdk"]
@ -19,6 +19,22 @@ region = Rect2(512, 2560, 512, 512)
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 2560, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_348hq"]
atlas = ExtResource("2_6ikdk")
region = Rect2(0, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_kiw65"]
atlas = ExtResource("2_6ikdk")
region = Rect2(512, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ga4qn"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dtdui"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_uu6ue"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 0, 512, 512)
@ -35,6 +51,22 @@ region = Rect2(512, 512, 512, 512)
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_fplju"]
atlas = ExtResource("2_6ikdk")
region = Rect2(0, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_f8usi"]
atlas = ExtResource("2_6ikdk")
region = Rect2(512, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_wr5e5"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_g6dcp"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_y6wen"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 4096, 512, 512)
@ -51,6 +83,22 @@ region = Rect2(512, 4608, 512, 512)
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 4608, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8g5l7"]
atlas = ExtResource("2_6ikdk")
region = Rect2(0, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jyd5n"]
atlas = ExtResource("2_6ikdk")
region = Rect2(512, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_1r6jd"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dldss"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_q8wo0"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 6144, 512, 512)
@ -67,6 +115,22 @@ region = Rect2(512, 6656, 512, 512)
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 6656, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_o1ga7"]
atlas = ExtResource("2_6ikdk")
region = Rect2(0, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_2ulxn"]
atlas = ExtResource("2_6ikdk")
region = Rect2(512, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3hoq3"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1024, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_r0dp7"]
atlas = ExtResource("2_6ikdk")
region = Rect2(1536, 7680, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_3g1io"]
animations = [{
"frames": [{
@ -88,6 +152,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_348hq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kiw65")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ga4qn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dtdui")
}],
"loop": false,
"name": &"back_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_uu6ue")
}, {
"duration": 1.0,
@ -105,6 +186,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_fplju")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_f8usi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wr5e5")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g6dcp")
}],
"loop": false,
"name": &"front_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_y6wen")
}, {
"duration": 1.0,
@ -122,6 +220,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8g5l7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jyd5n")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1r6jd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dldss")
}],
"loop": false,
"name": &"left_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_q8wo0")
}, {
"duration": 1.0,
@ -136,6 +251,23 @@ animations = [{
"loop": true,
"name": &"right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_o1ga7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2ulxn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3hoq3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r0dp7")
}],
"loop": false,
"name": &"right_dead",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5hy1j"]
@ -154,9 +286,8 @@ script = ExtResource("1_m5a36")
position = Vector2(9.15527e-05, 0.00012207)
scale = Vector2(0.09, 0.089)
sprite_frames = SubResource("SpriteFrames_3g1io")
animation = &"right"
animation = &"back_dead"
autoplay = "right"
frame_progress = 0.720272
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBody"]
position = Vector2(-0.992983, 1.00696)
@ -174,4 +305,9 @@ show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[node name="DeadTimer" type="Timer" parent="EnemyBody"]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]
[connection signal="timeout" from="EnemyBody/DeadTimer" to="." method="_on_dead_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://dldnbqg4oc3my"]
[gd_scene load_steps=37 format=3 uid="uid://dldnbqg4oc3my"]
[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_7wn36"]
[ext_resource type="Texture2D" uid="uid://ddot33oyu6vlh" path="res://assets/spritesheets/enemies/orc.png" id="2_mmtjp"]
@ -19,6 +19,22 @@ region = Rect2(512, 2560, 512, 512)
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 2560, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_bs36l"]
atlas = ExtResource("2_mmtjp")
region = Rect2(0, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5p8cy"]
atlas = ExtResource("2_mmtjp")
region = Rect2(512, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qxkbm"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_2fno1"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 3584, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_oqxmm"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 0, 512, 512)
@ -35,6 +51,22 @@ region = Rect2(512, 512, 512, 512)
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_w1pot"]
atlas = ExtResource("2_mmtjp")
region = Rect2(0, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_wp6uf"]
atlas = ExtResource("2_mmtjp")
region = Rect2(512, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_icb58"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_yhpyg"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 1536, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xq474"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 4096, 512, 512)
@ -51,6 +83,22 @@ region = Rect2(512, 4608, 512, 512)
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 4608, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lo0li"]
atlas = ExtResource("2_mmtjp")
region = Rect2(0, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5o1ee"]
atlas = ExtResource("2_mmtjp")
region = Rect2(512, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0qjdk"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_77ryy"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 5632, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hiwr4"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 6144, 512, 512)
@ -67,6 +115,22 @@ region = Rect2(512, 6656, 512, 512)
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 6656, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_cr865"]
atlas = ExtResource("2_mmtjp")
region = Rect2(0, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qt8u6"]
atlas = ExtResource("2_mmtjp")
region = Rect2(512, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ggbg6"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1024, 7680, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_4etrg"]
atlas = ExtResource("2_mmtjp")
region = Rect2(1536, 7680, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_ebg80"]
animations = [{
"frames": [{
@ -88,6 +152,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_bs36l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5p8cy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qxkbm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2fno1")
}],
"loop": false,
"name": &"back_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_oqxmm")
}, {
"duration": 1.0,
@ -105,6 +186,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_w1pot")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wp6uf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_icb58")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yhpyg")
}],
"loop": false,
"name": &"front_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_xq474")
}, {
"duration": 1.0,
@ -122,6 +220,23 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lo0li")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5o1ee")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0qjdk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_77ryy")
}],
"loop": false,
"name": &"left_dead",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hiwr4")
}, {
"duration": 1.0,
@ -136,6 +251,23 @@ animations = [{
"loop": true,
"name": &"right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_cr865")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qt8u6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ggbg6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4etrg")
}],
"loop": false,
"name": &"right_dead",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_5hy1j"]
@ -154,7 +286,7 @@ script = ExtResource("1_7wn36")
position = Vector2(9.15527e-05, 0.00012207)
scale = Vector2(0.09, 0.089)
sprite_frames = SubResource("SpriteFrames_ebg80")
animation = &"right"
animation = &"back_dead"
autoplay = "right"
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyBody"]
@ -173,4 +305,9 @@ show_percentage = false
[node name="SlowTimer" type="Timer" parent="EnemyBody"]
one_shot = true
[node name="DeadTimer" type="Timer" parent="EnemyBody"]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="EnemyBody/SlowTimer" to="." method="_on_slow_timer_timeout"]
[connection signal="timeout" from="EnemyBody/DeadTimer" to="." method="_on_dead_timer_timeout"]

46
scenes/marker/marker.tscn Normal file
View file

@ -0,0 +1,46 @@
[gd_scene load_steps=4 format=3 uid="uid://p0lkipd6a5lu"]
[ext_resource type="Texture2D" uid="uid://bdga2vyi2dpaw" path="res://assets/icons/enemy-marker-icon.png" id="1_j1bap"]
[ext_resource type="Script" path="res://scripts/marker/marker.gd" id="1_tysk2"]
[ext_resource type="Texture2D" uid="uid://o2dc3vcnnd4t" path="res://assets/icons/enemy-marker-arrow.png" id="2_f8i1v"]
[node name="marker" type="Node2D"]
script = ExtResource("1_tysk2")
[node name="base" type="Sprite2D" parent="."]
scale = Vector2(0.05, 0.05)
texture = ExtResource("1_j1bap")
[node name="left" type="Sprite2D" parent="."]
visible = false
position = Vector2(-30, 0)
scale = Vector2(0.04, 0.04)
texture = ExtResource("2_f8i1v")
[node name="up" type="Sprite2D" parent="."]
visible = false
position = Vector2(0, -30)
rotation = 1.5708
scale = Vector2(0.04, 0.04)
texture = ExtResource("2_f8i1v")
[node name="down" type="Sprite2D" parent="."]
visible = false
position = Vector2(0, 30)
rotation = 4.71239
scale = Vector2(0.04, 0.04)
texture = ExtResource("2_f8i1v")
[node name="right" type="Sprite2D" parent="."]
visible = false
position = Vector2(30, 0)
rotation = 3.14159
scale = Vector2(0.04, 0.04)
texture = ExtResource("2_f8i1v")
[node name="Timer" type="Timer" parent="."]
wait_time = 2.0
one_shot = true
autostart = true
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View file

@ -1,8 +1,9 @@
[gd_scene load_steps=18 format=3 uid="uid://btdewn34d67m"]
[gd_scene load_steps=20 format=3 uid="uid://btdewn34d67m"]
[ext_resource type="Script" path="res://scripts/stages/1/game_manager.gd" id="1_aosti"]
[ext_resource type="Texture2D" uid="uid://cnxj0mf3luxo" path="res://assets/tileset/ashlands/tf_A5_ashlands_3.png" id="2_bnj71"]
[ext_resource type="Texture2D" uid="uid://danbfdqmqu23q" path="res://assets/tileset/ashlands/tf_B_ashlands_3.png" id="3_mc5mi"]
[ext_resource type="Texture2D" uid="uid://dca4npsxwr1m3" path="res://assets/icons/base-mark.png" id="4_1ac5p"]
[ext_resource type="Script" path="res://scripts/stages/1/summon.gd" id="4_gt08o"]
[ext_resource type="PackedScene" uid="uid://bhnv1dsggssil" path="res://scenes/ui/pause_menu.tscn" id="5_0gif7"]
[ext_resource type="PackedScene" uid="uid://cd5r1v6f8hahx" path="res://scenes/ui/tower_menu.tscn" id="5_3w5lp"]
@ -13,6 +14,7 @@
[ext_resource type="PackedScene" uid="uid://r8kq68v8iflb" path="res://scenes/ui/victory.tscn" id="8_wl8vl"]
[ext_resource type="PackedScene" uid="uid://wywjvwp7ausj" path="res://scenes/ui/defeat.tscn" id="9_huvna"]
[ext_resource type="AudioStream" uid="uid://bn6agbc77m0au" path="res://assets/audio/stage.mp3" id="12_2v5rl"]
[ext_resource type="PackedScene" uid="uid://p0lkipd6a5lu" path="res://scenes/marker/marker.tscn" id="13_qa2m6"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7yb1o"]
texture = ExtResource("2_bnj71")
@ -546,6 +548,12 @@ layer_1/y_sort_origin = 0
layer_1/z_index = 0
layer_1/tile_data = PackedInt32Array(196628, 262146, 6, 131089, 2, 13, 720899, 327682, 4, 655364, 196610, 4, 589826, 262146, 12, 589830, 196610, 12)
[node name="BaseMark" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(1099, 507)
scale = Vector2(0.07, 0.07)
texture = ExtResource("4_1ac5p")
[node name="Path2D" type="Path2D" parent="."]
curve = SubResource("Curve2D_csucy")
script = ExtResource("4_gt08o")
@ -594,13 +602,16 @@ position = Vector2(1179, 543)
[node name="base3" parent="Bases" instance=ExtResource("8_rsf1n")]
position = Vector2(1178, 460)
[node name="marker" parent="." instance=ExtResource("13_qa2m6")]
position = Vector2(117, 213)
direction = "left"
[node name="Duration" type="Timer" parent="."]
one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("12_2v5rl")
volume_db = 1.0
autoplay = true
[connection signal="timeout" from="Path2D/Timer" to="Path2D" method="_on_timer_timeout"]
[connection signal="timeout" from="Duration" to="." method="_on_duration_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://bj5auw303w08w"]
[gd_scene load_steps=19 format=3 uid="uid://bj5auw303w08w"]
[ext_resource type="Script" path="res://scripts/stages/2/game_manager.gd" id="1_4r6ye"]
[ext_resource type="Texture2D" uid="uid://bq6hnxbt4w37u" path="res://assets/tileset/snowland/Snowland@64x64.png" id="1_d077v"]
@ -11,7 +11,9 @@
[ext_resource type="PackedScene" uid="uid://bigsx1yvw0pvg" path="res://scenes/ui/game_duration.tscn" id="7_y7bof"]
[ext_resource type="PackedScene" uid="uid://r8kq68v8iflb" path="res://scenes/ui/victory.tscn" id="8_o3n86"]
[ext_resource type="PackedScene" uid="uid://wywjvwp7ausj" path="res://scenes/ui/defeat.tscn" id="9_kssjj"]
[ext_resource type="PackedScene" uid="uid://p0lkipd6a5lu" path="res://scenes/marker/marker.tscn" id="12_unfps"]
[ext_resource type="AudioStream" uid="uid://bn6agbc77m0au" path="res://assets/audio/stage.mp3" id="12_uwk7b"]
[ext_resource type="Texture2D" uid="uid://dca4npsxwr1m3" path="res://assets/icons/base-mark.png" id="14_h1o0s"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_amj2r"]
texture = ExtResource("1_d077v")
@ -327,13 +329,22 @@ position = Vector2(552, 679)
[node name="base4" parent="Bases" instance=ExtResource("6_e20hd")]
position = Vector2(509, 680)
[node name="marker" parent="." instance=ExtResource("12_unfps")]
position = Vector2(574, 98)
direction = "up"
[node name="Duration" type="Timer" parent="."]
one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("12_uwk7b")
volume_db = 1.0
autoplay = true
[node name="BaseMark" type="Sprite2D" parent="AudioStreamPlayer"]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(575, 604)
scale = Vector2(0.07, 0.07)
texture = ExtResource("14_h1o0s")
[connection signal="timeout" from="Path2D/Timer" to="Path2D" method="_on_timer_timeout"]
[connection signal="timeout" from="Path2D2/Timer" to="Path2D2" method="_on_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=16 format=3 uid="uid://bxk5llqn5csgu"]
[gd_scene load_steps=18 format=3 uid="uid://bxk5llqn5csgu"]
[ext_resource type="Texture2D" uid="uid://bq6hnxbt4w37u" path="res://assets/tileset/snowland/Snowland@64x64.png" id="1_l1d1t"]
[ext_resource type="Script" path="res://scripts/stages/3/game_manager.gd" id="1_u4jwa"]
@ -12,6 +12,8 @@
[ext_resource type="PackedScene" uid="uid://wywjvwp7ausj" path="res://scenes/ui/defeat.tscn" id="9_4p6iy"]
[ext_resource type="PackedScene" uid="uid://cikgeqqhctm7k" path="res://scenes/base/base.tscn" id="9_057um"]
[ext_resource type="AudioStream" uid="uid://bn6agbc77m0au" path="res://assets/audio/stage.mp3" id="12_1fpbf"]
[ext_resource type="PackedScene" uid="uid://p0lkipd6a5lu" path="res://scenes/marker/marker.tscn" id="12_wt6oj"]
[ext_resource type="Texture2D" uid="uid://dca4npsxwr1m3" path="res://assets/icons/base-mark.png" id="14_w4pps"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_xqebe"]
texture = ExtResource("1_l1d1t")
@ -260,6 +262,12 @@ layer_1/y_sort_origin = 0
layer_1/z_index = 0
layer_1/tile_data = PackedInt32Array(65551, 327680, 11, 196624, 196608, 7, 196622, 196608, 7, 65549, 524288, 11, 196621, 720896, 12, 65537, 917504, 15, 589840, 786432, 5)
[node name="BaseMark" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(46, 547)
scale = Vector2(0.07, 0.07)
texture = ExtResource("14_w4pps")
[node name="Path2D" type="Path2D" parent="."]
curve = SubResource("Curve2D_cwxcl")
script = ExtResource("3_wyim2")
@ -308,13 +316,16 @@ position = Vector2(-37, 541)
[node name="base3" parent="Bases" instance=ExtResource("9_057um")]
position = Vector2(-36, 587)
[node name="marker" parent="." instance=ExtResource("12_wt6oj")]
position = Vector2(733, 82)
direction = "up"
[node name="Duration" type="Timer" parent="."]
one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("12_1fpbf")
volume_db = 1.0
autoplay = true
[connection signal="timeout" from="Path2D/Timer" to="Path2D" method="_on_timer_timeout"]
[connection signal="timeout" from="Duration" to="." method="_on_duration_timeout"]

View file

@ -1,8 +1,9 @@
[gd_scene load_steps=17 format=3 uid="uid://cxo5fh50r6uxs"]
[gd_scene load_steps=19 format=3 uid="uid://cxo5fh50r6uxs"]
[ext_resource type="Texture2D" uid="uid://bq6hnxbt4w37u" path="res://assets/tileset/snowland/Snowland@64x64.png" id="1_436vn"]
[ext_resource type="Script" path="res://scripts/stages/4/game_manager.gd" id="1_lhtrq"]
[ext_resource type="Script" path="res://scripts/stages/4/summon.gd" id="3_iv4av"]
[ext_resource type="Texture2D" uid="uid://dca4npsxwr1m3" path="res://assets/icons/base-mark.png" id="3_ksc7k"]
[ext_resource type="PackedScene" uid="uid://bhnv1dsggssil" path="res://scenes/ui/pause_menu.tscn" id="4_ahd74"]
[ext_resource type="PackedScene" uid="uid://cd5r1v6f8hahx" path="res://scenes/ui/tower_menu.tscn" id="5_31eq4"]
[ext_resource type="PackedScene" uid="uid://cy88k4uxt1v37" path="res://scenes/ui/game_stats.tscn" id="6_hgjt3"]
@ -12,6 +13,7 @@
[ext_resource type="PackedScene" uid="uid://r8kq68v8iflb" path="res://scenes/ui/victory.tscn" id="8_x1qs2"]
[ext_resource type="PackedScene" uid="uid://wywjvwp7ausj" path="res://scenes/ui/defeat.tscn" id="9_wmgvj"]
[ext_resource type="AudioStream" uid="uid://bn6agbc77m0au" path="res://assets/audio/stage.mp3" id="12_8sjqs"]
[ext_resource type="PackedScene" uid="uid://p0lkipd6a5lu" path="res://scenes/marker/marker.tscn" id="12_ko7mu"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8oq7c"]
texture = ExtResource("1_436vn")
@ -259,6 +261,18 @@ tile_set = SubResource("TileSet_pcst7")
format = 2
layer_0/tile_data = PackedInt32Array(131084, 786432, 8, 131083, 786432, 8, 131082, 786432, 8, 131081, 786432, 8, 131080, 786432, 8, 196616, 786432, 8, 262152, 786432, 8, 327688, 786432, 8, 458752, 786432, 8, 458753, 786432, 8, 458754, 786432, 8, 458755, 786432, 8, 458756, 786432, 8, 458757, 786432, 8, 458758, 786432, 8, 458759, 786432, 8, 458760, 786432, 8, 458761, 786432, 8, 458763, 786432, 8, 524299, 786432, 8, 524300, 786432, 8, 524301, 786432, 8, 524302, 786432, 8, 524305, 786432, 8, 524304, 786432, 8, 524303, 786432, 8, 458762, 786432, 8, 393224, 786432, 8, 524306, 786432, 8, 524287, 786432, 8, -65522, 786432, 8, 14, 786432, 8, 65550, 786432, 8, 131086, 786432, 8, 131085, 786432, 8, 589842, 720896, 0, 589840, 720896, 0, 589841, 720896, 0, 589839, 720896, 0, 589838, 720896, 0, 589837, 720896, 0, 589836, 720896, 0, 589835, 720896, 0, 589834, 917504, 1, 524298, 851968, 0, 524297, 720896, 0, 524296, 720896, 0, 524295, 786432, 0, 524288, 786432, 0, 196620, 786432, 0, 524289, 720896, 0, 524290, 720896, 0, 524291, 720896, 0, 524292, 720896, 0, 524293, 720896, 0, 524294, 720896, 0, 589823, 720896, 0, 458766, 720896, 3, 458767, 786432, 3, 458768, 786432, 3, 458769, 786432, 3, 458770, 786432, 3, 458765, 786432, 3, 458764, 655360, 3, 393228, 983040, 0, 393226, 786432, 3, 393227, 786432, 3, 393225, 655360, 3, 262153, 655360, 2, 327689, 655360, 2, 196618, 720896, 0, 196619, 720896, 0, 196621, 720896, 0, 196622, 720896, 0, 196623, 983040, 1, -65521, 655360, 2, 15, 655360, 2, 65551, 655360, 2, 131087, 655360, 2, 196617, 655360, 0, 458751, 786432, 3, 393216, 786432, 3, 393217, 786432, 3, 393218, 786432, 3, 393219, 786432, 3, 393220, 786432, 3, 393221, 786432, 3, 393222, 786432, 3, 131079, 851968, 1, 196615, 851968, 1, 262151, 851968, 1, 327687, 851968, 1, 393223, 851968, 3, 65543, 917504, 0, 65544, 786432, 3, 65545, 786432, 3, 65546, 786432, 3, 65547, 786432, 3, 65548, 786432, 3, 65549, 851968, 3, -65523, 851968, 1, 13, 851968, 1, 589824, 720896, 2, 589825, 720896, 2, 589826, 720896, 2, 589827, 720896, 2, 589828, 720896, 2, 589829, 720896, 2, 589830, 720896, 2, 589831, 720896, 2, 589832, 786432, 2, 589833, 720896, 2, 393233, 720896, 2, 327697, 720896, 2, 262161, 720896, 2, 262160, 720896, 1, 196624, 720896, 2, 131088, 786432, 2, 65552, 720896, 2, 16, 720896, 2, 17, 720896, 2, 65553, 720896, 2, 131089, 720896, 2, 196625, 720896, 2, 327696, 720896, 2, 393232, 720896, 2, 393231, 720896, 2, 393230, 786432, 2, 393229, 720896, 2, 327693, 720896, 2, 327692, 720896, 2, 327691, 720896, 2, 327690, 786432, 2, 262154, 720896, 2, 262155, 720896, 2, 262156, 720896, 2, 262157, 720896, 2, 262158, 720896, 2, 262159, 720896, 2, 327680, 720896, 2, 262144, 720896, 2, 196608, 720896, 2, 131072, 720896, 2, 65536, 720896, 2, 0, 720896, 2, 1, 720896, 2, 2, 720896, 2, 3, 720896, 2, 4, 720896, 2, 5, 720896, 2, 6, 720896, 2, 7, 720896, 2, 8, 720896, 2, 9, 720896, 2, 10, 720896, 2, 12, 720896, 2, 65542, 720896, 2, 131078, 720896, 2, 196614, 786432, 2, 262150, 720896, 2, 327686, 720896, 2, 327685, 720896, 2, 327684, 720896, 2, 327683, 720896, 2, 327682, 720896, 2, 327681, 720896, 2, 262145, 720896, 2, 196609, 720896, 1, 131073, 720896, 2, 65537, 786432, 1, 65538, 720896, 2, 65539, 720896, 2, 65540, 720896, 2, 65541, 720896, 2, 131077, 720896, 2, 196613, 720896, 2, 262149, 720896, 2, 262148, 720896, 1, 262146, 720896, 1, 196610, 720896, 2, 131074, 720896, 2, 131075, 720896, 2, 131076, 786432, 1, 196612, 720896, 2, 196611, 720896, 2, 655378, 720896, 2, 655377, 720896, 2, 655376, 720896, 2, 655375, 720896, 2, 655374, 720896, 2, 655373, 720896, 2, 655372, 720896, 2, 655371, 720896, 2, 655370, 720896, 2, 655369, 720896, 2, 655368, 720896, 2, 655367, 720896, 2, 655366, 720896, 2, 655365, 720896, 2, 655364, 720896, 2, 655363, 720896, 2, 655362, 720896, 2, 655361, 720896, 2, 655360, 720896, 2, 327695, 720896, 2, 327694, 720896, 2, 262147, 720896, 2, 11, 786432, 1)
[node name="BaseMark" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(1106, 544)
scale = Vector2(0.07, 0.07)
texture = ExtResource("3_ksc7k")
[node name="BaseMark2" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(927, 41)
scale = Vector2(0.07, 0.07)
texture = ExtResource("3_ksc7k")
[node name="Path2D" type="Path2D" parent="."]
curve = SubResource("Curve2D_jkmm5")
script = ExtResource("3_iv4av")
@ -324,13 +338,16 @@ position = Vector2(910, -44)
[node name="base4" parent="Bases" instance=ExtResource("8_trc1r")]
position = Vector2(951, -44)
[node name="marker" parent="." instance=ExtResource("12_ko7mu")]
position = Vector2(99, 479)
direction = "left"
[node name="Duration" type="Timer" parent="."]
one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("12_8sjqs")
volume_db = 1.0
autoplay = true
[connection signal="timeout" from="Path2D/Timer" to="Path2D" method="_on_timer_timeout"]
[connection signal="timeout" from="Path2D2/Timer" to="Path2D2" method="_on_timer_timeout"]

View file

@ -1,10 +1,11 @@
[gd_scene load_steps=17 format=3 uid="uid://i18iy1wmek4s"]
[gd_scene load_steps=19 format=3 uid="uid://i18iy1wmek4s"]
[ext_resource type="Script" path="res://scripts/stages/5/game_manager.gd" id="1_kectu"]
[ext_resource type="Texture2D" uid="uid://bq6hnxbt4w37u" path="res://assets/tileset/snowland/Snowland@64x64.png" id="1_s0uo6"]
[ext_resource type="PackedScene" uid="uid://bhnv1dsggssil" path="res://scenes/ui/pause_menu.tscn" id="2_tph65"]
[ext_resource type="PackedScene" uid="uid://cd5r1v6f8hahx" path="res://scenes/ui/tower_menu.tscn" id="3_dwrfi"]
[ext_resource type="Script" path="res://scripts/stages/5/summon.gd" id="3_h0a0o"]
[ext_resource type="Texture2D" uid="uid://dca4npsxwr1m3" path="res://assets/icons/base-mark.png" id="3_ygwr3"]
[ext_resource type="PackedScene" uid="uid://cy88k4uxt1v37" path="res://scenes/ui/game_stats.tscn" id="4_qm2yl"]
[ext_resource type="PackedScene" uid="uid://bvoenhbaqiqj2" path="res://scenes/towers/placement/placement.tscn" id="5_vmpbi"]
[ext_resource type="PackedScene" uid="uid://cikgeqqhctm7k" path="res://scenes/base/base.tscn" id="6_yj08v"]
@ -12,6 +13,7 @@
[ext_resource type="PackedScene" uid="uid://r8kq68v8iflb" path="res://scenes/ui/victory.tscn" id="8_j6swr"]
[ext_resource type="PackedScene" uid="uid://wywjvwp7ausj" path="res://scenes/ui/defeat.tscn" id="9_m6s5a"]
[ext_resource type="AudioStream" uid="uid://bn6agbc77m0au" path="res://assets/audio/stage.mp3" id="12_2xeuw"]
[ext_resource type="PackedScene" uid="uid://p0lkipd6a5lu" path="res://scenes/marker/marker.tscn" id="12_c8uq2"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_pf042"]
texture = ExtResource("1_s0uo6")
@ -266,6 +268,12 @@ layer_1/y_sort_origin = 0
layer_1/z_index = 0
layer_1/tile_data = PackedInt32Array(589828, 786432, 9, 589831, 786432, 9, 196614, 786432, 9, 589834, 720896, 9, 65552, 720896, 9, 65541, 720896, 9, 458768, 786432, 9, 524289, 589824, 3, 589826, 655360, 4, 589824, 655360, 4, 262154, 589824, 13, 327681, 786432, 5)
[node name="BaseMark" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(929, 612)
scale = Vector2(0.07, 0.07)
texture = ExtResource("3_ygwr3")
[node name="Path2D" type="Path2D" parent="."]
curve = SubResource("Curve2D_sq2la")
script = ExtResource("3_h0a0o")
@ -322,13 +330,20 @@ position = Vector2(902, 682)
[node name="base2" parent="Bases" instance=ExtResource("6_yj08v")]
position = Vector2(947, 681)
[node name="marker" parent="." instance=ExtResource("12_c8uq2")]
position = Vector2(108, 159)
direction = "left"
[node name="marker2" parent="." instance=ExtResource("12_c8uq2")]
position = Vector2(674, 115)
direction = "up"
[node name="Duration" type="Timer" parent="."]
one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("12_2xeuw")
volume_db = 1.0
autoplay = true
[connection signal="timeout" from="Path2D/Timer" to="Path2D" method="_on_timer_timeout"]
[connection signal="timeout" from="Path2D2/Timer" to="Path2D2" method="_on_timer_timeout"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://dcecwku0if8tg"]
[gd_scene load_steps=20 format=3 uid="uid://dcecwku0if8tg"]
[ext_resource type="Script" path="res://scripts/stages/6/game_manager.gd" id="1_04mdc"]
[ext_resource type="Texture2D" uid="uid://d36b03p0hs8kw" path="res://assets/tileset/ashlands/ashlands-32x32.png" id="1_a4nl1"]
@ -12,6 +12,8 @@
[ext_resource type="PackedScene" uid="uid://r8kq68v8iflb" path="res://scenes/ui/victory.tscn" id="9_pc113"]
[ext_resource type="PackedScene" uid="uid://wywjvwp7ausj" path="res://scenes/ui/defeat.tscn" id="10_fyg8a"]
[ext_resource type="AudioStream" uid="uid://bn6agbc77m0au" path="res://assets/audio/stage.mp3" id="12_is64a"]
[ext_resource type="PackedScene" uid="uid://p0lkipd6a5lu" path="res://scenes/marker/marker.tscn" id="12_xutrf"]
[ext_resource type="Texture2D" uid="uid://dca4npsxwr1m3" path="res://assets/icons/base-mark.png" id="14_f4lh3"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ebym7"]
texture = ExtResource("1_a4nl1")
@ -648,6 +650,18 @@ layer_1/y_sort_origin = 0
layer_1/z_index = 0
layer_1/tile_data = PackedInt32Array(851979, 1507338, 16, 786444, 1376266, 16, 786452, 1310730, 16, 851989, 1441802, 16, 1245209, 1507338, 16, 1179678, 1638410, 14, 1114143, 1507338, 14, 1114140, 1441802, 14, 589827, 1638410, 14, 327698, 1507338, 16, 393246, 1376266, 16, 524319, 1310730, 16, 1179659, 1441802, 14, 1179660, 1376266, 14, 589853, 1703946, 12, 393238, 1703946, 12, 786450, 1703946, 12, 393227, 1703946, 12, 851974, 1703946, 12, 327713, 1638410, 14, 393247, 1507338, 14, 262174, 1441802, 14, 262157, 1376266, 14, 262158, 1310730, 15, 196624, 1507338, 14, 1114136, 1703946, 12)
[node name="BaseMark" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(704, 610)
scale = Vector2(0.07, 0.07)
texture = ExtResource("14_f4lh3")
[node name="BaseMark2" type="Sprite2D" parent="."]
modulate = Color(1, 1, 1, 0.588235)
position = Vector2(128, 610)
scale = Vector2(0.07, 0.07)
texture = ExtResource("14_f4lh3")
[node name="Path2D" type="Path2D" parent="."]
curve = SubResource("Curve2D_iccfv")
script = ExtResource("3_gvmm4")
@ -724,13 +738,23 @@ position = Vector2(106, 667)
[node name="base4" parent="Bases" instance=ExtResource("6_h3kdb")]
position = Vector2(149, 667)
[node name="marker" parent="." instance=ExtResource("12_xutrf")]
position = Vector2(135, 131)
direction = "left"
[node name="marker2" parent="." instance=ExtResource("12_xutrf")]
position = Vector2(799, 111)
direction = "up"
[node name="marker3" parent="." instance=ExtResource("12_xutrf")]
position = Vector2(1021, 388)
[node name="Duration" type="Timer" parent="."]
one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("12_is64a")
volume_db = 1.0
autoplay = true
[connection signal="timeout" from="Path2D/Timer" to="Path2D" method="_on_timer_timeout"]
[connection signal="timeout" from="Path2D2/Timer" to="Path2D2" method="_on_timer_timeout"]

View file

@ -72,7 +72,10 @@ text = "Developed By :
Supervisor :
- Ir. Jeanny Pragantha, M. Eng
- Darius Andana Haris, M. TI"
- Darius Andana Haris, M. TI
Version : 0.5.0"
autowrap_mode = 3
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer2"]

View file

@ -1,9 +1,10 @@
[gd_scene load_steps=6 format=3 uid="uid://b8pdp1x331u5c"]
[gd_scene load_steps=7 format=3 uid="uid://b8pdp1x331u5c"]
[ext_resource type="Texture2D" uid="uid://c1qbpse383sys" path="res://assets/backgrounds/main-bg.png" id="1_28cjd"]
[ext_resource type="Script" path="res://scripts/ui/main_menu.gd" id="1_6741p"]
[ext_resource type="Texture2D" uid="uid://dm8ug0o5361wn" path="res://assets/icons/logo.png" id="2_l26fo"]
[ext_resource type="Theme" uid="uid://caw53lcko4jnt" path="res://themes/button.tres" id="4_4d3eq"]
[ext_resource type="Texture2D" uid="uid://cgaqy7lcu4x78" path="res://assets/icons/settings.png" id="5_kbtiw"]
[ext_resource type="AudioStream" uid="uid://dhydsnb0wpl7t" path="res://assets/audio/main.mp3" id="5_xkvpi"]
[node name="MainMenu" type="Control"]
@ -88,6 +89,15 @@ size_flags_horizontal = 10
theme = ExtResource("4_4d3eq")
text = "Exit"
[node name="Settings" type="TextureButton" parent="TextureRect/Panel"]
layout_mode = 0
offset_left = 52.0
offset_top = 51.0
offset_right = 572.0
offset_bottom = 571.0
scale = Vector2(0.1, 0.1)
texture_normal = ExtResource("5_kbtiw")
[node name="Timer" type="Timer" parent="."]
wait_time = 30.0
one_shot = true
@ -95,11 +105,13 @@ one_shot = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("5_xkvpi")
volume_db = 1.0
autoplay = true
[connection signal="pressed" from="TextureRect/Panel/MarginContainer/VBoxContainer/TextureButton" to="." method="_on_logo_pressed"]
[connection signal="pressed" from="TextureRect/Panel/MarginContainer/VBoxContainer/VBoxContainer/StartGame" to="." method="_on_start_game_pressed"]
[connection signal="pressed" from="TextureRect/Panel/MarginContainer/VBoxContainer/VBoxContainer/HowToPlay" to="." method="_on_how_to_play_pressed"]
[connection signal="pressed" from="TextureRect/Panel/MarginContainer/VBoxContainer/HBoxContainer/About" to="." method="_on_about_pressed"]
[connection signal="pressed" from="TextureRect/Panel/MarginContainer/VBoxContainer/HBoxContainer/Exit" to="." method="_on_exit_pressed"]
[connection signal="mouse_entered" from="TextureRect/Panel/Settings" to="." method="_on_settings_hold"]
[connection signal="mouse_exited" from="TextureRect/Panel/Settings" to="." method="_on_settings_release"]
[connection signal="pressed" from="TextureRect/Panel/Settings" to="." method="_on_settings_pressed"]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View file

@ -223,7 +223,6 @@ text = "6"
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("11_1rv5g")
volume_db = 1.0
autoplay = true
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/HBoxContainer/Back" to="." method="_on_back_pressed"]
[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/HBoxContainer2/MarginContainer/Stage 1" to="." method="_on_stage_1_pressed"]

108
scenes/ui/settings.tscn Normal file
View file

@ -0,0 +1,108 @@
[gd_scene load_steps=6 format=3 uid="uid://ons67oqg25vu"]
[ext_resource type="Script" path="res://scripts/ui/settings.gd" id="1_kci63"]
[ext_resource type="Theme" uid="uid://bt3yyqwlp4f7j" path="res://themes/title_text.tres" id="2_2enke"]
[ext_resource type="Theme" uid="uid://caw53lcko4jnt" path="res://themes/button.tres" id="3_jiiby"]
[sub_resource type="Theme" id="Theme_ulpvq"]
Label/font_sizes/font_size = 30
[sub_resource type="Theme" id="Theme_23erg"]
[node name="Settings" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_kci63")
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Panel"]
layout_mode = 2
offset_left = 20.0
offset_top = 20.0
offset_right = 1132.0
offset_bottom = 82.0
[node name="Label" type="Label" parent="Panel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 0
theme = ExtResource("2_2enke")
text = "Settings"
[node name="Back" type="Button" parent="Panel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 10
size_flags_vertical = 0
theme = ExtResource("3_jiiby")
text = "Back"
[node name="Volume" type="Label" parent="Panel"]
layout_mode = 0
offset_left = 23.0
offset_top = 173.0
offset_right = 233.0
offset_bottom = 218.0
theme = SubResource("Theme_ulpvq")
text = "Sound Volume"
[node name="VolumeSlider" type="HSlider" parent="Panel"]
layout_mode = 0
offset_left = 281.0
offset_top = 181.0
offset_right = 634.0
offset_bottom = 197.0
scale = Vector2(2, 2)
min_value = -40.0
max_value = 1.0
value = 1.0
[node name="BGM" type="Label" parent="Panel"]
layout_mode = 0
offset_left = 23.0
offset_top = 260.0
offset_right = 233.0
offset_bottom = 305.0
theme = SubResource("Theme_ulpvq")
text = "BGM"
[node name="BGMController" type="CheckButton" parent="Panel"]
layout_mode = 0
offset_left = 267.0
offset_top = 256.0
offset_right = 311.0
offset_bottom = 280.0
scale = Vector2(2, 2)
theme = SubResource("Theme_23erg")
[node name="SFX" type="Label" parent="Panel"]
layout_mode = 0
offset_left = 24.0
offset_top = 352.0
offset_right = 234.0
offset_bottom = 397.0
theme = SubResource("Theme_ulpvq")
text = "SFX"
[node name="SFXController" type="CheckButton" parent="Panel"]
layout_mode = 0
offset_left = 267.0
offset_top = 347.0
offset_right = 311.0
offset_bottom = 371.0
scale = Vector2(2, 2)
[connection signal="pressed" from="Panel/HBoxContainer/Back" to="." method="_on_back_pressed"]
[connection signal="value_changed" from="Panel/VolumeSlider" to="." method="_on_volume_slider_value_changed"]
[connection signal="toggled" from="Panel/BGMController" to="." method="_on_bgm_controller_toggled"]
[connection signal="toggled" from="Panel/SFXController" to="." method="_on_sfx_controller_toggled"]

View file

@ -6,10 +6,14 @@ var speed: int = 0
var damage: int = 0
var dir = 0
var area_damage: bool = false
var area_damage_target = []
var slow_effect: bool = false
var enemies = []
var stop: bool = false
func _physics_process(_delta):
if stop:
return
var move_dir = Vector2(1,0).rotated(dir)
global_position += (move_dir * speed)
@ -19,11 +23,23 @@ func _on_VisibilityNotifier2D_screen_exited():
func _on_Bullet_body_entered(body):
if body.is_in_group("Enemy"):
if area_damage:
for enemy in area_damage_target:
$Sprite2D.hide()
stop = true
$AnimatedSprite2D.visible = true
$AnimatedSprite2D.play("default")
for enemy in enemies:
enemy.hit(damage)
await get_tree().create_timer(0.5).timeout
elif slow_effect:
body.get_parent().hit(damage)
body.get_parent().slow()
else:
body.get_parent().hit(damage)
queue_free()
func _on_body_entered(body):
if body.is_in_group("Enemy"):
enemies.append(body.get_parent())
func _on_body_exited(body):
enemies.erase(body.get_parent())

View file

@ -8,11 +8,13 @@ var speed: float = 0
var reward: int = 0
var direction_progress = []
var direction = []
var current_direction = ''
var enemy_vol = Vector2(1,1)
var old_enemy_pos
var max_health: int = 0
var is_slow: bool = false
var is_dead: bool = false
func set_config(config_path):
config = load(config_path).new()
@ -40,17 +42,25 @@ func _ready():
func _process(delta):
update_healthbar()
change_direction(get_progress())
if health < 1:
get_tree().current_scene.on_enemy_reward(reward)
queue_free()
set_progress(get_progress() + speed * delta)
enemy_vol = global_position - old_enemy_pos
old_enemy_pos = global_position
if !is_dead:
if health < 1:
is_dead = true
$EnemyBody.remove_from_group("Enemy")
$EnemyBody/AnimatedSprite2D.play("{direction}_dead".format({"direction": current_direction}))
get_tree().current_scene.on_enemy_reward(reward)
$EnemyBody/DeadTimer.start()
set_progress(get_progress() + speed * delta)
enemy_vol = global_position - old_enemy_pos
old_enemy_pos = global_position
else:
$EnemyBody/HealthBar.visible = false
func change_direction(current_progress):
if !direction_progress.is_empty():
if current_progress > direction_progress[0]:
$EnemyBody/AnimatedSprite2D.play(direction[0])
current_direction = direction[0]
direction_progress.erase(direction_progress[0])
direction.erase(direction[0])
@ -69,14 +79,19 @@ func slow():
slowTimer.stop()
slowTimer.start()
else:
$EnemyBody/AnimatedSprite2D.modulate = Color(0.0627, 0.3137, 0.4588, 1)
speed = speed - (0.3 * speed)
is_slow = true
slowTimer.wait_time = 6.0
slowTimer.start()
func _on_slow_timer_timeout():
$EnemyBody/AnimatedSprite2D.modulate = Color(1, 1, 1, 1)
speed = config.enemy[enemy_id]['speed']
is_slow = false
func _on_dead_timer_timeout():
destroy()
func destroy():
queue_free()
queue_free()

6
scripts/global.gd Normal file
View file

@ -0,0 +1,6 @@
extends Node
var sound_volume = 1
var bgm_status = true
var sfx_status = true

20
scripts/marker/marker.gd Normal file
View file

@ -0,0 +1,20 @@
extends Node
@export var direction = "right"
func _ready():
match direction:
"up":
$up.visible = true
"down":
$down.visible = true
"left":
$left.visible = true
"right":
$right.visible = true
_:
$right.visible = true
func _on_timer_timeout():
queue_free()

View file

@ -23,6 +23,10 @@ func _ready():
# Init Engine time scale
Engine.time_scale = 1.0
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
# Set Duration & Start Timer
duration.wait_time = config.game['duration']
duration.start()

View file

@ -22,6 +22,10 @@ func _ready():
# Init Engine time scale
Engine.time_scale = 1.0
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
# Set Duration & Start Timer
duration.wait_time = config.game['duration']
duration.start()

View file

@ -21,6 +21,10 @@ func _ready():
# Init Engine time scale
Engine.time_scale = 1.0
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
# Set Duration & Start Timer
duration.wait_time = config.game['duration']

View file

@ -21,6 +21,10 @@ func _ready():
# Init Engine time scale
Engine.time_scale = 1.0
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
# Set Duration & Start Timer
duration.wait_time = config.game['duration']

View file

@ -22,6 +22,10 @@ func _ready():
# Init Engine time scale
Engine.time_scale = 1.0
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
# Set Duration & Start Timer
duration.wait_time = config.game['duration']
duration.start()

View file

@ -21,6 +21,10 @@ func _ready():
# Init Engine time scale
Engine.time_scale = 1.0
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
# Set Duration & Start Timer
duration.wait_time = config.game['duration']

View file

@ -51,15 +51,21 @@ func _physics_process(_delta):
if enemies.is_empty():
$AnimatedSprite2D.stop()
else:
var distance = global_position.distance_to(enemies[0].global_position)
_update_look_at(enemies[0].global_position + enemies[0].enemy_vol * (distance / speed))
if timer.is_stopped():
$AnimatedSprite2D.play("default")
_shoot()
if !enemies[0].is_dead:
var distance = global_position.distance_to(enemies[0].global_position)
_update_look_at(enemies[0].global_position + enemies[0].enemy_vol * (distance / speed))
if timer.is_stopped():
$AnimatedSprite2D.play("default")
_shoot()
else:
enemies.erase(enemies[0])
func _shoot():
if bullet:
shoot.play()
# Check SFX Status
if Global.sfx_status:
shoot.play()
var bullet_instance: Node2D = bullet.instantiate()
bullet_instance.dir = rotation
bullet_instance.rotation = rotation
@ -67,7 +73,6 @@ func _shoot():
bullet_instance.speed = speed
bullet_instance.damage = damage
bullet_instance.area_damage = area_damage
bullet_instance.area_damage_target = enemies
bullet_instance.slow_effect = slow_effect
get_tree().current_scene.add_child(bullet_instance)
health -= durability_reduction

View file

@ -21,6 +21,10 @@ func _ready():
if OS.get_name() == "Web":
$TextureRect/Panel/MarginContainer/VBoxContainer/HBoxContainer/Exit.hide()
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
func _on_logo_pressed():
if timer.is_stopped():
timer.start()
@ -51,5 +55,14 @@ func _on_how_to_play_pressed():
func _on_about_pressed():
get_tree().change_scene_to_file("res://scenes/ui/about.tscn")
func _on_settings_pressed():
get_tree().change_scene_to_file("res://scenes/ui/settings.tscn")
func _on_settings_hold():
$TextureRect/Panel/Settings.modulate = Color(0.541176, 0.541176, 0.541176, 1)
func _on_settings_release():
$TextureRect/Panel/Settings.modulate = Color(1, 1, 1, 1)
func _on_exit_pressed():
get_tree().quit()

View file

@ -36,6 +36,10 @@ func _ready():
_:
pass
# Check BGM Status
if Global.bgm_status:
$AudioStreamPlayer.play()
func _on_back_pressed():
get_tree().change_scene_to_file("res://scenes/ui/main_menu.tscn")

23
scripts/ui/settings.gd Normal file
View file

@ -0,0 +1,23 @@
extends Control
var bus_master = AudioServer.get_bus_index("Master")
func _ready():
$Panel/VolumeSlider.value = Global.sound_volume
$Panel/BGMController.button_pressed = Global.bgm_status
$Panel/SFXController.button_pressed = Global.sfx_status
func _on_back_pressed():
get_tree().change_scene_to_file("res://scenes/ui/main_menu.tscn")
func _on_volume_slider_value_changed(value):
AudioServer.set_bus_volume_db(bus_master, value)
AudioServer.set_bus_mute(bus_master, value == $Panel/VolumeSlider.min_value)
Global.sound_volume = value
func _on_bgm_controller_toggled(button_pressed):
Global.bgm_status = button_pressed
func _on_sfx_controller_toggled(button_pressed):
Global.sfx_status = button_pressed