add level and boss

master
Sascha 2025-01-03 16:52:51 +07:00
parent 5fbd5826de
commit ed89b584ef
76 changed files with 1861 additions and 166 deletions

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

@ -0,0 +1,192 @@
[editor_states]
Anim={
"visible": false
}
2D={
"grid_offset": Vector2(0, 0),
"grid_snap_active": false,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(-891, -498),
"primary_grid_step": Vector2i(8, 8),
"show_group_gizmos": true,
"show_guides": true,
"show_helpers": false,
"show_lock_gizmos": true,
"show_origin": true,
"show_position_gizmos": true,
"show_rulers": true,
"show_transformation_gizmos": true,
"show_viewport": true,
"show_zoom_control": true,
"smart_snap_active": false,
"snap_guides": true,
"snap_node_anchors": true,
"snap_node_center": true,
"snap_node_parent": true,
"snap_node_sides": true,
"snap_other_nodes": true,
"snap_pixel": true,
"snap_relative": false,
"snap_rotation": false,
"snap_rotation_offset": 0.0,
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 1.0
}
3D={
"fov": 70.01,
"gizmos_status": {
"AudioListener3D": 0,
"AudioStreamPlayer3D": 0,
"CPUParticles3D": 0,
"CSGShape3D": 0,
"Camera3D": 0,
"CollisionObject3D": 0,
"CollisionPolygon3D": 0,
"CollisionShape3D": 0,
"Decal": 0,
"FogVolume": 0,
"GPUParticles3D": 0,
"GPUParticlesCollision3D": 0,
"Joint3D": 0,
"Light3D": 0,
"LightmapGI": 0,
"LightmapProbe": 0,
"Marker3D": 0,
"MeshInstance3DCustomAABB": 0,
"NavigationLink3D": 0,
"NavigationObstacle3D": 0,
"NavigationRegion3D": 0,
"OccluderInstance3D": 0,
"Path3D": 0,
"PhysicalBone3D": 0,
"RayCast3D": 0,
"ReflectionProbe": 0,
"ShapeCast3D": 0,
"Skeleton3D": 0,
"SoftBody3D": 0,
"SpringArm3D": 0,
"VehicleWheel3D": 0,
"VisibleOnScreenNotifier3D": 0,
"VoxelGI": 0
},
"local_coords": false,
"preview_sun_env": {
"environ_ao_enabled": false,
"environ_enabled": true,
"environ_energy": 1.0,
"environ_gi_enabled": false,
"environ_glow_enabled": false,
"environ_ground_color": Color(0.2, 0.169, 0.133, 1),
"environ_sky_color": Color(0.385, 0.454, 0.55, 1),
"environ_tonemap_enabled": true,
"sun_color": Color(1, 1, 1, 1),
"sun_enabled": true,
"sun_energy": 1.0,
"sun_max_distance": 100.0,
"sun_rotation": Vector2(-1.0472, 2.61799)
},
"rotate_snap": 15.0,
"scale_snap": 10.0,
"show_grid": true,
"show_origin": true,
"snap_enabled": false,
"translate_snap": 1.0,
"viewport_mode": 1,
"viewports": [{
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": true,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}],
"zfar": 4000.01,
"znear": 0.05
}
Game={
"camera_override_mode": 2,
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])

@ -0,0 +1,5 @@
[folding]
node_unfolds=[NodePath("."), PackedStringArray("Transform"), NodePath("GroundShadow"), PackedStringArray("texture", "Visibility"), NodePath("Anchor"), PackedStringArray("Visibility"), NodePath("TakeDamageSound"), PackedStringArray("stream")]
resource_unfolds=["res://scenes/boss.tscn::CircleShape2D_nokgg", PackedStringArray()]
nodes_folded=[]

@ -1,14 +1,14 @@
ColorRect
Label
VBoxContainer
ProgressBar
TextureRect
HBoxContainer
CanvasLayer
ColorRect
AudioStreamPlayer2D
AudioListener2D
Node2D
Label
CanvasLayer
Timer
PathFollow2D
Path2D
ProgressBar
CollisionShape2D
Area2D
Marker2D

@ -17,32 +17,32 @@ dock_filesystem_v_split_offset=0
dock_filesystem_display_mode=0
dock_filesystem_file_sort=0
dock_filesystem_file_list_display_mode=1
dock_filesystem_selected_paths=PackedStringArray("res://tree.tscn")
dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://sounds/", "res://characters/slime/", "res://characters/happy_boo/")
dock_filesystem_selected_paths=PackedStringArray("res://scenes/boss.tscn")
dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/", "res://scenes/", "res://characters/slime/", "res://characters/happy_boo/")
dock_3="Scene,Import"
dock_4="FileSystem"
dock_5="Inspector,Node,History"
[EditorNode]
open_scenes=PackedStringArray("res://game.tscn", "res://player.tscn", "res://gun.tscn", "res://mob.tscn", "res://tree.tscn")
current_scene="res://game.tscn"
open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/player.tscn", "res://scenes/gun.tscn", "res://scenes/boss.tscn", "res://scenes/tree.tscn")
current_scene="res://scenes/gun.tscn"
center_split_offset=-317
selected_default_debugger_tab_idx=0
selected_default_debugger_tab_idx=1
selected_main_editor_idx=2
selected_bottom_panel_item=0
selected_bottom_panel_item=1
[EditorWindow]
screen=0
mode="maximized"
position=Vector2i(2560, 23)
position=Vector2i(2560, 28)
[ScriptEditor]
open_scripts=["res://audio_controller.gd", "res://bullet.gd", "res://game.gd", "res://gun.gd", "res://characters/happy_boo/happy_boo.gd", "res://mob.gd", "res://player.gd", "res://smoke_explosion/smoke_explosion.gd"]
selected_script="res://game.gd"
open_help=["\"gun.gd\"", "ColorRect"]
open_scripts=["res://scripts/audio_controller.gd", "res://scripts/bullet.gd", "res://scripts/game.gd", "res://scripts/gun.gd", "res://scripts/player.gd", "res://scripts/ui.gd"]
selected_script="res://scripts/game.gd"
open_help=[]
script_split_offset=200
list_split_offset=0
zoom_factor=1.0

@ -1,22 +1,7 @@
ea4bc82a6ad023ab7ee23ee620429895
::res://::1735819465.0
audio_controller.gd::GDScript::3000028504634855655::1735819204::0::1::::<>Node2D<><><>::
bullet.gd::GDScript::5605558621920821272::1735661926::0::1::::<>Area2D<><><>::
bullet.tscn::PackedScene::8191971518315905232::1735759349::0::1::::<><><><>::uid://dftkbqwsfd68r::::res://pistol/projectile.png<>uid://cl4my4vxn5bbs::::res://bullet.gd
::res://::1735917118.0
default_bus_layout.tres::AudioBusLayout::6564268947468103023::1695668179::0::1::::<><><><>::
export_presets.cfg::TextFile::-1::1735660301::0::1::::<><><><>::
game.gd::GDScript::9204126340129375042::1735819010::0::1::::<>Node2D<><><>::
game.tscn::PackedScene::4744708941802329828::1735819222::0::1::::<><><><>::uid://dauqd5gexcbgf::::res://player.tscn<>uid://d4esu7gq460l7::::res://game.gd<>uid://bbjrt670oq527::::res://tree.tscn<>uid://dj0m4h5r2c2xg::::res://sounds/Laser_Shoot17.ogg<>uid://bi0ibca1qokap::::res://audio_controller.gd<>uid://bavkjk7nthbj5::::res://sounds/760562__noisyredfox__hitsound1.ogg<>uid://b27pkgw38f0p6::::res://sounds/745184__mrechobot__death2.wav<>uid://sjcesmi0xjef::::res://sounds/697867__nfsmaster821__player_death_ui_show.wav<>uid://beebg84wvxii::::res://sounds/415804__sunsai__mushroom-background-music.wav
grass_template2.jpg::CompressedTexture2D::7757562150205378529::1735819444::1735819467::1::::<><><>0514c9d38f40b80db26a6b3c1dfa93a8<>res://.godot/imported/grass_template2.jpg-78a2a2a1f8a173d985747a2571f68c94.ctex::
gun.gd::GDScript::426239203246935962::1735818549::0::1::::<>Area2D<><><>::
gun.tscn::PackedScene::3590388595030148716::1735819222::0::1::::<><><><>::uid://gcqdkullomv7::::res://gun.gd<>uid://cswb5do8rrj7q::::res://pistol/pistol.png<>uid://doyitruir4guy::::res://bullet.tscn
icon.png::CompressedTexture2D::621515402784007901::1695668179::1735656379::1::::<><><>130257868ffab54ab02a8c8a0dce8413<>res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex::
mob.gd::GDScript::5612501378197852760::1735817607::0::1::::<>CharacterBody2D<><><>::
mob.tscn::PackedScene::6846162453976111634::1735819222::0::1::::<><><><>::uid://cl70cv3aivpdo::::res://mob.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://biwlk8nb058xm::::res://sounds/Explosion6.ogg<>uid://dvgfmy6vtvjji::::res://characters/slime/slime_body.png<>uid://btbxea1f3vwot::::res://characters/slime/slime_body_hurt.png<>uid://c078jrp2yvc4s::::res://characters/slime/slime_face.png<>uid://cai2ijnbypqtr::::res://characters/slime/slime_hurt_eyes.png
player.gd::GDScript::8380034353925165817::1735818623::0::1::::<>CharacterBody2D<><><>::
player.tscn::PackedScene::7201528020608365013::1735819222::0::1::::<><><><>::uid://pbmyh1qru7p::::res://characters/happy_boo/happy_boo.tscn<>uid://drnl7altlij7f::::res://player.gd<>uid://brfhf78xw4dwm::::res://gun.tscn
background_texture.tres::ImageTexture::4959733411940362611::1735819336::0::1::::<><><><>::
tree.tscn::PackedScene::2476256724891748910::1735759348::0::1::::<><><><>::uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://caqfk2xng5v5u::::res://trees/pine_tree.png
::res://addons/::1695668179.0
::res://addons/colorpicker_presets/::1735656378.0
colorpicker_presets.gd::GDScript::3958845193901239409::1695668179::0::1::::<>EditorPlugin<><><>::
@ -25,9 +10,9 @@ README.md::TextFile::-1::1695668179::0::1::::<><><><>::
::res://bin/::1735761433.0
::res://characters/::1735656379.0
ground_shadow.png::CompressedTexture2D::4668018078467755571::1695668179::1735656379::1::::<><><>60a6f91138009a5e14677d0e89feec49<>res://.godot/imported/ground_shadow.png-b9267d10ca04362d5b540659e4ab0dbd.ctex::
::res://characters/happy_boo/::1735657085.0
happy_boo.gd::GDScript::5836173444299780281::1735658636::0::1::::<>Node2D<><><>::
happy_boo.tscn::PackedScene::31049085407951015::1735657084::0::1::::<><><><>::uid://cpfc6odale6x6::::res://characters/happy_boo/happy_boo.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://ng8e5ot0dtpd::::res://characters/happy_boo/square_foot.png<>uid://dhapxq8y8ow57::::res://characters/happy_boo/square_lower_leg.png<>uid://qmqpm6asge1i::::res://characters/happy_boo/square_upper_leg.png<>uid://cksiu5gst6fmp::::res://characters/happy_boo/square_body.png<>uid://cvs0lh814pk7h::::res://characters/happy_boo/square_face.png
::res://characters/happy_boo/::1735913494.0
happy_boo.gd::GDScript::5836173444299780281::1735913494::0::1::::<>Node2D<><><>::
happy_boo.tscn::PackedScene::31049085407951015::1735819788::0::1::::<><><><>::uid://cpfc6odale6x6::::res://characters/happy_boo/happy_boo.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://ng8e5ot0dtpd::::res://characters/happy_boo/square_foot.png<>uid://dhapxq8y8ow57::::res://characters/happy_boo/square_lower_leg.png<>uid://qmqpm6asge1i::::res://characters/happy_boo/square_upper_leg.png<>uid://cksiu5gst6fmp::::res://characters/happy_boo/square_body.png<>uid://cvs0lh814pk7h::::res://characters/happy_boo/square_face.png
square_body.png::CompressedTexture2D::5512411640973615011::1695668179::1735656379::1::::<><><>0b4c0947d903928eb8fb04b8f87d9964<>res://.godot/imported/square_body.png-ef1c56c8912cd968d7fd09a95e6ea8f4.ctex::
square_face.png::CompressedTexture2D::6285503871772747319::1695668179::1735656379::1::::<><><>f4c2c4badf63b8294e485cba765e8c44<>res://.godot/imported/square_face.png-e27720ce35d82859f41580927c22ef18.ctex::
square_foot.png::CompressedTexture2D::926853635980280533::1695668179::1735656379::1::::<><><>d725c258d28082ae7c7a6a7c13346867<>res://.godot/imported/square_foot.png-62023e9ce7985c4b370739df29445354.ctex::
@ -42,6 +27,11 @@ slime_body.png::CompressedTexture2D::8645940357922743702::1695668179::1735656379
slime_body_hurt.png::CompressedTexture2D::3723476765009385039::1695668179::1735656379::1::::<><><>90f39b7d1869604090f9f1f038fbe1be<>res://.godot/imported/slime_body_hurt.png-3f38b75e5ebee1f99a984b348a7e7f8b.ctex::
slime_face.png::CompressedTexture2D::6595643196702037820::1695668179::1735656379::1::::<><><>2f525095401e87cf36bdb3245da3baaa<>res://.godot/imported/slime_face.png-561a1f87b138570340118953f07aab21.ctex::
slime_hurt_eyes.png::CompressedTexture2D::4791010527445338927::1695668179::1735656379::1::::<><><>2624b7df9b696472920b5ad04ced31a3<>res://.godot/imported/slime_hurt_eyes.png-711256b4a2a47dcea723d274f00b4628.ctex::
::res://images/::1735914555.0
grass_template2.jpg::CompressedTexture2D::7757562150205378529::1735819444::1735913631::1::::<><><>2234c343b2f4c710078bfd597b0d0d75<>res://.godot/imported/grass_template2.jpg-22eba882b726eb84359352b50505fe14.ctex::
icon.png::CompressedTexture2D::621515402784007901::1695668179::1735913630::1::::<><><>309e0ee75cb11522749522601f7a6842<>res://.godot/imported/icon.png-b9450fb2459f5b277908511db3d050dd.ctex::
noun-gear-4758191.png::CompressedTexture2D::4196657425081770386::1735914493::1735914555::1::::<><><>bba9773a0faeaa1b4c2f28499dc6af57<>res://.godot/imported/noun-gear-4758191.png-3c6c4333d5ff857e8fd4889547808b8a.ctex::
noun-growth-4893904.png::CompressedTexture2D::8499770592653585211::1735914537::1735914555::1::::<><><>8284b99c4c721162def989b4a33e2f59<>res://.godot/imported/noun-growth-4893904.png-5e12fc6fe08c01f9e4c6cdce606a28b4.ctex::
::res://pistol/::1735656379.0
pistol.png::CompressedTexture2D::6081771334990092076::1695668179::1735656379::1::::<><><>2c0e671b071bcf80606b4878d24834b9<>res://.godot/imported/pistol.png-ccb9a9487ce225cdf094ad33c19c2ede.ctex::
projectile.png::CompressedTexture2D::7550039277502144023::1695668179::1735656379::1::::<><><>46777fa000de6366a61c2e48f35478b8<>res://.godot/imported/projectile.png-e03ae856d530df914009475206433400.ctex::
@ -53,9 +43,24 @@ impact.tscn::PackedScene::706737085132625066::1695668179::0::1::::<><><><>::res:
muzzle_flash.gd::GDScript::334725949817774431::1695668179::0::1::::<>Node2D<><><>::
muzzle_flash.png::CompressedTexture2D::3592944556550980239::1695668179::1735656379::1::::<><><>28453999893b9aac4db20fa2c44b723d<>res://.godot/imported/muzzle_flash.png-752b19c1a1a60c24eac6f205d487f2ea.ctex::
muzzle_flash.tscn::PackedScene::6601472980654318439::1695668179::0::1::::<><><><>::res://pistol/muzzle_flash/muzzle_flash.gd<>uid://brgpjilf7s2ul::::res://pistol/muzzle_flash/muzzle_flash.png
::res://smoke_explosion/::1735815873.0
::res://scenes/::1735917055.0
bullet.tscn::PackedScene::8191971518315905232::1735913479::0::1::::<><><><>::uid://dftkbqwsfd68r::::res://pistol/projectile.png<>uid://cl4my4vxn5bbs::::res://scripts/bullet.gd
game.tscn::PackedScene::4744708941802329828::1735917055::0::1::::<><><><>::uid://dauqd5gexcbgf::::res://scenes/player.tscn<>uid://d4esu7gq460l7::::res://scripts/game.gd<>uid://dir26d82i0yer::::res://images/grass_template2.jpg<>uid://dj0m4h5r2c2xg::::res://sounds/Laser_Shoot17.ogg<>uid://bi0ibca1qokap::::res://scripts/audio_controller.gd<>uid://bavkjk7nthbj5::::res://sounds/760562__noisyredfox__hitsound1.ogg<>uid://b27pkgw38f0p6::::res://sounds/745184__mrechobot__death2.wav<>uid://sjcesmi0xjef::::res://sounds/697867__nfsmaster821__player_death_ui_show.wav<>uid://beebg84wvxii::::res://sounds/415804__sunsai__mushroom-background-music.wav<>uid://dvwfjjf35py4i::::res://scripts/ui.gd
gun.tscn::PackedScene::3590388595030148716::1735917012::0::1::::<><><><>::uid://gcqdkullomv7::::res://scripts/gun.gd<>uid://cswb5do8rrj7q::::res://pistol/pistol.png<>uid://doyitruir4guy::::res://scenes/bullet.tscn
mob.tscn::PackedScene::6846162453976111634::1735916749::0::1::::<><><><>::uid://cl70cv3aivpdo::::res://scripts/mob.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://dvgfmy6vtvjji::::res://characters/slime/slime_body.png<>uid://btbxea1f3vwot::::res://characters/slime/slime_body_hurt.png<>uid://c078jrp2yvc4s::::res://characters/slime/slime_face.png<>uid://biwlk8nb058xm::::res://sounds/Explosion6.ogg<>uid://cai2ijnbypqtr::::res://characters/slime/slime_hurt_eyes.png
player.tscn::PackedScene::7201528020608365013::1735916749::0::1::::<><><><>::uid://pbmyh1qru7p::::res://characters/happy_boo/happy_boo.tscn<>uid://drnl7altlij7f::::res://scripts/player.gd<>uid://brfhf78xw4dwm::::res://scenes/gun.tscn
tree.tscn::PackedScene::2476256724891748910::1735916749::0::1::::<><><><>::uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://caqfk2xng5v5u::::res://trees/pine_tree.png
::res://scripts/::1735917055.0
audio_controller.gd::GDScript::3000028504634855655::1735913494::0::1::::<>Node2D<><><>::
bullet.gd::GDScript::5605558621920821272::1735913494::0::1::::<>Area2D<><><>::
game.gd::GDScript::9204126340129375042::1735916934::0::1::::<>Node2D<><><>::
gun.gd::GDScript::426239203246935962::1735913494::0::1::::<>Area2D<><><>::
mob.gd::GDScript::5612501378197852760::1735915507::0::1::::<>CharacterBody2D<><><>::
player.gd::GDScript::8380034353925165817::1735917055::0::1::::<>CharacterBody2D<><><>::
ui.gd::GDScript::8678964216923348314::1735916747::0::1::::<>CanvasLayer<><><>::
::res://smoke_explosion/::1735913494.0
circle_32.png::CompressedTexture2D::6271663262871881894::1695668179::1735656379::1::::<><><>c453c076bdbc64f9e2d4065be3748769<>res://.godot/imported/circle_32.png-ff53eadac5c62484a55afe7e47d5145f.ctex::
smoke_explosion.gd::GDScript::4359819258301131328::1735815873::0::1::::<>Node2D<><><>::
smoke_explosion.gd::GDScript::4359819258301131328::1735913494::0::1::::<>Node2D<><><>::
smoke_explosion.gdshader::Shader::4196357291363945429::1695668179::0::1::::<><><><>::
smoke_explosion.tscn::PackedScene::7675803860678853612::1735815873::0::1::::<><><><>::uid://b010nktitw2jx::::res://smoke_explosion/smoke_explosion.gdshader<>uid://b3d6t6wjb5eia::::res://smoke_explosion/smoke_explosion.gd
::res://sounds/::1735819091.0

@ -1,16 +1,11 @@
res://game.tscn
res://smoke_explosion/smoke_explosion.gd
res://smoke_explosion/smoke_explosion.tscn
res://game.gd
res://player.tscn
res://gun.tscn
res://gun.gd
res://audio_controller.gd
res://mob.gd
res://mob.tscn
res://characters/slime/slime.tscn
res://characters/slime/slime.gd
res://player.gd
res://characters/happy_boo/happy_boo.tscn
res://characters/happy_boo/happy_boo.gd
res://tree.tscn
res://scripts/player.gd
res://scenes/game.tscn
res://scripts/gun.gd
res://scenes/gun.tscn
res://scripts/game.gd
res://scenes/player.tscn
res://scenes/mob.tscn
res://scenes/tree.tscn
res://scripts/mob.gd
res://scenes/boss.tscn
res://scripts/ui.gd

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

@ -0,0 +1,192 @@
[editor_states]
Anim={
"visible": false
}
2D={
"grid_offset": Vector2(0, 0),
"grid_snap_active": false,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(-125.045, -192.08),
"primary_grid_step": Vector2i(8, 8),
"show_group_gizmos": true,
"show_guides": true,
"show_helpers": false,
"show_lock_gizmos": true,
"show_origin": true,
"show_position_gizmos": true,
"show_rulers": true,
"show_transformation_gizmos": true,
"show_viewport": true,
"show_zoom_control": true,
"smart_snap_active": false,
"snap_guides": true,
"snap_node_anchors": true,
"snap_node_center": true,
"snap_node_parent": true,
"snap_node_sides": true,
"snap_other_nodes": true,
"snap_pixel": true,
"snap_relative": false,
"snap_rotation": false,
"snap_rotation_offset": 0.0,
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 0.620921
}
3D={
"fov": 70.01,
"gizmos_status": {
"AudioListener3D": 0,
"AudioStreamPlayer3D": 0,
"CPUParticles3D": 0,
"CSGShape3D": 0,
"Camera3D": 0,
"CollisionObject3D": 0,
"CollisionPolygon3D": 0,
"CollisionShape3D": 0,
"Decal": 0,
"FogVolume": 0,
"GPUParticles3D": 0,
"GPUParticlesCollision3D": 0,
"Joint3D": 0,
"Light3D": 0,
"LightmapGI": 0,
"LightmapProbe": 0,
"Marker3D": 0,
"MeshInstance3DCustomAABB": 0,
"NavigationLink3D": 0,
"NavigationObstacle3D": 0,
"NavigationRegion3D": 0,
"OccluderInstance3D": 0,
"Path3D": 0,
"PhysicalBone3D": 0,
"RayCast3D": 0,
"ReflectionProbe": 0,
"ShapeCast3D": 0,
"Skeleton3D": 0,
"SoftBody3D": 0,
"SpringArm3D": 0,
"VehicleWheel3D": 0,
"VisibleOnScreenNotifier3D": 0,
"VoxelGI": 0
},
"local_coords": false,
"preview_sun_env": {
"environ_ao_enabled": false,
"environ_enabled": true,
"environ_energy": 1.0,
"environ_gi_enabled": false,
"environ_glow_enabled": false,
"environ_ground_color": Color(0.2, 0.169, 0.133, 1),
"environ_sky_color": Color(0.385, 0.454, 0.55, 1),
"environ_tonemap_enabled": true,
"sun_color": Color(1, 1, 1, 1),
"sun_enabled": true,
"sun_energy": 1.0,
"sun_max_distance": 100.0,
"sun_rotation": Vector2(-1.0472, 2.61799)
},
"rotate_snap": 15.0,
"scale_snap": 10.0,
"show_grid": true,
"show_origin": true,
"snap_enabled": false,
"translate_snap": 1.0,
"viewport_mode": 1,
"viewports": [{
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": true,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}],
"zfar": 4000.01,
"znear": 0.05
}
Game={
"camera_override_mode": 2,
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])

@ -0,0 +1,5 @@
[folding]
node_unfolds=[NodePath("."), PackedStringArray("Ordering", "Transform"), NodePath("AudioController"), PackedStringArray("Transform"), NodePath("Map"), PackedStringArray("Layer", "Follow Viewport"), NodePath("Map/BackgroundTexture"), PackedStringArray("Visibility", "Layout"), NodePath("Map/BackgroundColor"), PackedStringArray("Layout"), NodePath("Player"), PackedStringArray("Transform"), NodePath("Player/Path2D"), PackedStringArray("Transform"), NodePath("Player/Path2D/PathFollow2D"), PackedStringArray("Transform"), NodePath("Player/ShootSound"), PackedStringArray("Transform"), NodePath("Player/TakeDamageSound"), PackedStringArray("Transform"), NodePath("Player/DeathSound"), PackedStringArray("Transform"), NodePath("Player/GameOverSound"), PackedStringArray("Transform"), NodePath("Player/BackgoundMusic"), PackedStringArray("Transform"), NodePath("GameOver"), PackedStringArray("Layer"), NodePath("GameOver/ColorRect"), PackedStringArray("Layout"), NodePath("GameOver/ColorRect/Label"), PackedStringArray("Layout", "Theme Overrides"), NodePath("UI"), PackedStringArray("Follow Viewport", "Layer"), NodePath("UI/VBoxContainer"), PackedStringArray("Layout/Container Sizing", "Layout", "Layout/Transform"), NodePath("UI/VBoxContainer/XPBar"), PackedStringArray("Layout/Transform", "Layout/Container Sizing", "theme_override_styles/background", "Theme Overrides/styles"), NodePath("UI/VBoxContainer/LevelBar"), PackedStringArray("Theme Overrides", "Theme Overrides/styles", "theme_override_styles/fill")]
resource_unfolds=["res://scenes/game.tscn::Curve2D_feb5d", PackedStringArray("Resource"), "res://scenes/game.tscn::StyleBoxFlat_0tnpc", PackedStringArray("Corner Radius"), "res://scenes/game.tscn::StyleBoxFlat_vtaks", PackedStringArray("Corner Radius"), "res://scenes/game.tscn::StyleBoxFlat_kvpfn", PackedStringArray()]
nodes_folded=[]

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

@ -0,0 +1,192 @@
[editor_states]
Anim={
"visible": false
}
2D={
"grid_offset": Vector2(0, 0),
"grid_snap_active": false,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(-2073.91, -1275.8),
"primary_grid_step": Vector2i(8, 8),
"show_group_gizmos": true,
"show_guides": true,
"show_helpers": false,
"show_lock_gizmos": true,
"show_origin": true,
"show_position_gizmos": true,
"show_rulers": true,
"show_transformation_gizmos": true,
"show_viewport": true,
"show_zoom_control": true,
"smart_snap_active": false,
"snap_guides": true,
"snap_node_anchors": true,
"snap_node_center": true,
"snap_node_parent": true,
"snap_node_sides": true,
"snap_other_nodes": true,
"snap_pixel": true,
"snap_relative": false,
"snap_rotation": false,
"snap_rotation_offset": 0.0,
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 0.385543
}
3D={
"fov": 70.01,
"gizmos_status": {
"AudioListener3D": 0,
"AudioStreamPlayer3D": 0,
"CPUParticles3D": 0,
"CSGShape3D": 0,
"Camera3D": 0,
"CollisionObject3D": 0,
"CollisionPolygon3D": 0,
"CollisionShape3D": 0,
"Decal": 0,
"FogVolume": 0,
"GPUParticles3D": 0,
"GPUParticlesCollision3D": 0,
"Joint3D": 0,
"Light3D": 0,
"LightmapGI": 0,
"LightmapProbe": 0,
"Marker3D": 0,
"MeshInstance3DCustomAABB": 0,
"NavigationLink3D": 0,
"NavigationObstacle3D": 0,
"NavigationRegion3D": 0,
"OccluderInstance3D": 0,
"Path3D": 0,
"PhysicalBone3D": 0,
"RayCast3D": 0,
"ReflectionProbe": 0,
"ShapeCast3D": 0,
"Skeleton3D": 0,
"SoftBody3D": 0,
"SpringArm3D": 0,
"VehicleWheel3D": 0,
"VisibleOnScreenNotifier3D": 0,
"VoxelGI": 0
},
"local_coords": false,
"preview_sun_env": {
"environ_ao_enabled": false,
"environ_enabled": true,
"environ_energy": 1.0,
"environ_gi_enabled": false,
"environ_glow_enabled": false,
"environ_ground_color": Color(0.2, 0.169, 0.133, 1),
"environ_sky_color": Color(0.385, 0.454, 0.55, 1),
"environ_tonemap_enabled": true,
"sun_color": Color(1, 1, 1, 1),
"sun_enabled": true,
"sun_energy": 1.0,
"sun_max_distance": 100.0,
"sun_rotation": Vector2(-1.0472, 2.61799)
},
"rotate_snap": 15.0,
"scale_snap": 10.0,
"show_grid": true,
"show_origin": true,
"snap_enabled": false,
"translate_snap": 1.0,
"viewport_mode": 1,
"viewports": [{
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": true,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}],
"zfar": 4000.01,
"znear": 0.05
}
Game={
"camera_override_mode": 2,
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])

@ -0,0 +1,5 @@
[folding]
node_unfolds=[NodePath("."), PackedStringArray("Collision"), NodePath("CollisionShape2D"), PackedStringArray("shape"), NodePath("Pivot/Pistol"), PackedStringArray("Transform"), NodePath("Pivot/Pistol/ShootingPoint"), PackedStringArray("Transform")]
resource_unfolds=["res://scenes/gun.tscn::CircleShape2D_o2wld", PackedStringArray("Resource")]
nodes_folded=[]

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

@ -0,0 +1,192 @@
[editor_states]
Anim={
"visible": false
}
2D={
"grid_offset": Vector2(0, 0),
"grid_snap_active": false,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(-891, -498),
"primary_grid_step": Vector2i(8, 8),
"show_group_gizmos": true,
"show_guides": true,
"show_helpers": false,
"show_lock_gizmos": true,
"show_origin": true,
"show_position_gizmos": true,
"show_rulers": true,
"show_transformation_gizmos": true,
"show_viewport": true,
"show_zoom_control": true,
"smart_snap_active": false,
"snap_guides": true,
"snap_node_anchors": true,
"snap_node_center": true,
"snap_node_parent": true,
"snap_node_sides": true,
"snap_other_nodes": true,
"snap_pixel": true,
"snap_relative": false,
"snap_rotation": false,
"snap_rotation_offset": 0.0,
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 1.0
}
3D={
"fov": 70.01,
"gizmos_status": {
"AudioListener3D": 0,
"AudioStreamPlayer3D": 0,
"CPUParticles3D": 0,
"CSGShape3D": 0,
"Camera3D": 0,
"CollisionObject3D": 0,
"CollisionPolygon3D": 0,
"CollisionShape3D": 0,
"Decal": 0,
"FogVolume": 0,
"GPUParticles3D": 0,
"GPUParticlesCollision3D": 0,
"Joint3D": 0,
"Light3D": 0,
"LightmapGI": 0,
"LightmapProbe": 0,
"Marker3D": 0,
"MeshInstance3DCustomAABB": 0,
"NavigationLink3D": 0,
"NavigationObstacle3D": 0,
"NavigationRegion3D": 0,
"OccluderInstance3D": 0,
"Path3D": 0,
"PhysicalBone3D": 0,
"RayCast3D": 0,
"ReflectionProbe": 0,
"ShapeCast3D": 0,
"Skeleton3D": 0,
"SoftBody3D": 0,
"SpringArm3D": 0,
"VehicleWheel3D": 0,
"VisibleOnScreenNotifier3D": 0,
"VoxelGI": 0
},
"local_coords": false,
"preview_sun_env": {
"environ_ao_enabled": false,
"environ_enabled": true,
"environ_energy": 1.0,
"environ_gi_enabled": false,
"environ_glow_enabled": false,
"environ_ground_color": Color(0.2, 0.169, 0.133, 1),
"environ_sky_color": Color(0.385, 0.454, 0.55, 1),
"environ_tonemap_enabled": true,
"sun_color": Color(1, 1, 1, 1),
"sun_enabled": true,
"sun_energy": 1.0,
"sun_max_distance": 100.0,
"sun_rotation": Vector2(-1.0472, 2.61799)
},
"rotate_snap": 15.0,
"scale_snap": 10.0,
"show_grid": true,
"show_origin": true,
"snap_enabled": false,
"translate_snap": 1.0,
"viewport_mode": 1,
"viewports": [{
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": true,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}],
"zfar": 4000.01,
"znear": 0.05
}
Game={
"camera_override_mode": 2,
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game")])

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game/Player")])

@ -0,0 +1,5 @@
[folding]
node_unfolds=[NodePath("."), PackedStringArray("Collision"), NodePath("GroundShadow"), PackedStringArray("texture", "Visibility"), NodePath("TakeDamageSound"), PackedStringArray("stream")]
resource_unfolds=["res://scenes/mob.tscn::CircleShape2D_nokgg", PackedStringArray()]
nodes_folded=[]

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

@ -0,0 +1,192 @@
[editor_states]
Anim={
"visible": false
}
2D={
"grid_offset": Vector2(0, 0),
"grid_snap_active": false,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(-11019.3, -5745.12),
"primary_grid_step": Vector2i(8, 8),
"show_group_gizmos": true,
"show_guides": true,
"show_helpers": false,
"show_lock_gizmos": true,
"show_origin": true,
"show_position_gizmos": true,
"show_rulers": true,
"show_transformation_gizmos": true,
"show_viewport": true,
"show_zoom_control": true,
"smart_snap_active": false,
"snap_guides": true,
"snap_node_anchors": true,
"snap_node_center": true,
"snap_node_parent": true,
"snap_node_sides": true,
"snap_other_nodes": true,
"snap_pixel": true,
"snap_relative": false,
"snap_rotation": false,
"snap_rotation_offset": 0.0,
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 0.0762776
}
3D={
"fov": 70.01,
"gizmos_status": {
"AudioListener3D": 0,
"AudioStreamPlayer3D": 0,
"CPUParticles3D": 0,
"CSGShape3D": 0,
"Camera3D": 0,
"CollisionObject3D": 0,
"CollisionPolygon3D": 0,
"CollisionShape3D": 0,
"Decal": 0,
"FogVolume": 0,
"GPUParticles3D": 0,
"GPUParticlesCollision3D": 0,
"Joint3D": 0,
"Light3D": 0,
"LightmapGI": 0,
"LightmapProbe": 0,
"Marker3D": 0,
"MeshInstance3DCustomAABB": 0,
"NavigationLink3D": 0,
"NavigationObstacle3D": 0,
"NavigationRegion3D": 0,
"OccluderInstance3D": 0,
"Path3D": 0,
"PhysicalBone3D": 0,
"RayCast3D": 0,
"ReflectionProbe": 0,
"ShapeCast3D": 0,
"Skeleton3D": 0,
"SoftBody3D": 0,
"SpringArm3D": 0,
"VehicleWheel3D": 0,
"VisibleOnScreenNotifier3D": 0,
"VoxelGI": 0
},
"local_coords": false,
"preview_sun_env": {
"environ_ao_enabled": false,
"environ_enabled": true,
"environ_energy": 1.0,
"environ_gi_enabled": false,
"environ_glow_enabled": false,
"environ_ground_color": Color(0.2, 0.169, 0.133, 1),
"environ_sky_color": Color(0.385, 0.454, 0.55, 1),
"environ_tonemap_enabled": true,
"sun_color": Color(1, 1, 1, 1),
"sun_enabled": true,
"sun_energy": 1.0,
"sun_max_distance": 100.0,
"sun_rotation": Vector2(-1.0472, 2.61799)
},
"rotate_snap": 15.0,
"scale_snap": 10.0,
"show_grid": true,
"show_origin": true,
"snap_enabled": false,
"translate_snap": 1.0,
"viewport_mode": 1,
"viewports": [{
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": true,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}],
"zfar": 4000.01,
"znear": 0.05
}
Game={
"camera_override_mode": 2,
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])

@ -0,0 +1,5 @@
[folding]
node_unfolds=[NodePath("."), PackedStringArray("Collision"), NodePath("HurtBox"), PackedStringArray("Collision"), NodePath("ProgressBar"), PackedStringArray("Layout", "Theme Overrides")]
resource_unfolds=["res://scenes/player.tscn::CircleShape2D_onrkg", PackedStringArray("Resource"), "res://scenes/player.tscn::CircleShape2D_i3pqv", PackedStringArray("Resource"), "res://scenes/player.tscn::StyleBoxFlat_i3pqv", PackedStringArray("Corner Radius", "Border", "Expand Margins", "Resource"), "res://scenes/player.tscn::StyleBoxFlat_hqtel", PackedStringArray("Corner Radius", "Resource")]
nodes_folded=[]

@ -1,13 +1,13 @@
[editor_metadata]
executable_path="c:/Program Files/Godot/Godot_v4.4-dev7_win64.exe"
executable_path="/home/sascha/Godot/Godot_v4.4-dev7_linux.x86_64"
use_advanced_connections=false
[color_picker]
presets=[Color(0, 0.478431, 0.764706, 1), Color(0.0627451, 0.698039, 0.937255, 1), Color(0.0235294, 0.113725, 0.329412, 1), Color(0.811765, 0.866667, 1, 1), Color(0.423529, 0.172549, 0.854902, 1), Color(0.552941, 0.0980392, 0.843137, 1), Color(0.156863, 0.0784314, 0.305882, 1), Color(0.921569, 0.878431, 1, 1), Color(0.768627, 0.113725, 0.239216, 1), Color(1, 0.254902, 0.490196, 1), Color(0.45098, 0.152941, 0.360784, 1), Color(1, 0.858824, 0.956863, 1), Color(1, 0.717647, 0.188235, 1), Color(1, 0.835294, 0, 1), Color(0.870588, 0.313726, 0.168627, 1), Color(1, 0.92549, 0.788235, 1), Color(0.388235, 0.8, 0.372549, 1), Color(0.623529, 0.866667, 0.317647, 1), Color(0.0823529, 0.34902, 0.247059, 1), Color(0.866667, 1, 0.94902, 1), Color(0.427451, 0.239216, 0.172549, 1), Color(0.690196, 0.341176, 0.215686, 1), Color(0.415686, 0.0980392, 0, 1), Color(1, 0.890196, 0.890196, 1), Color(0.792157, 0.792157, 0.792157, 1), Color(1, 1, 1, 1), Color(0.152941, 0.168627, 0.188235, 1), Color(0.952941, 0.972549, 0.996078, 1)]
picker_shape=3
recent_presets=PackedColorArray(0, 0, 0, 0.564706, 0.898039, 0.878431, 0.831373, 0.392157, 0.611765, 0.745098, 0.796078, 0.392157, 0.768627, 0.113725, 0.239216, 1, 0.152941, 0.168627, 0.188235, 1, 0, 0, 0, 1, 0.388235, 0.8, 0.372549, 1, 0.623529, 0.866667, 0.317647, 1, 0.0823529, 0.34902, 0.247059, 1)
recent_presets=PackedColorArray(3.51354e-06, 0.722499, 0.282085, 1, 0.0235294, 0.113725, 0.329412, 1, 0.0627451, 0.698039, 0.937255, 1, 0.152941, 0.168627, 0.188235, 1, 0.423529, 0.172549, 0.854902, 1, 0.552941, 0.0980392, 0.843137, 1, 0.768627, 0.113725, 0.239216, 1, 0.876766, 0.156918, 0.285244, 1, 0.868575, 0.144554, 0.388966, 1)
[dialog_bounds]
@ -15,11 +15,12 @@ create_new_node=Rect2(3390, 370, 900, 700)
project_settings=Rect2(3240, 370, 1200, 700)
export=Rect2(3390, 470, 1144, 810)
editor_settings=Rect2(3390, 370, 900, 700)
search_help=Rect2(3200, 360, 1280, 720)
[recent_files]
scenes=["res://tree.tscn", "res://characters/happy_boo/happy_boo.tscn", "res://mob.tscn", "res://game.tscn", "res://characters/slime/slime.tscn", "res://gun.tscn", "res://player.tscn", "res://smoke_explosion/smoke_explosion.tscn", "res://bullet.tscn", "res://weapon.tscn"]
scripts=["ColorRect", "res://characters/happy_boo/happy_boo.gd", "\"gun.gd\"", "res://audio_controller.gd", "res://game.gd", "res://smoke_explosion/smoke_explosion.gd", "res://mob.gd", "res://bullet.gd", "res://gun.gd", "res://characters/slime/slime.gd"]
scenes=["res://scenes/boss.tscn", "res://scenes/game.tscn", "res://scenes/player.tscn", "res://scenes/gun.tscn", "res://player.tscn", "res://mob.tscn", "res://gun.tscn", "res://game.tscn", "res://tree.tscn", "res://characters/happy_boo/happy_boo.tscn"]
scripts=["res://scripts/game.gd", "res://scripts/ui.gd", "Color", "CanvasItem", "res://scripts/mob.gd", "res://scripts/gun.gd", "res://scripts/bullet.gd", "res://scripts/audio_controller.gd", "res://scripts/player.gd", "ColorRect"]
[script_setup]

@ -1,3 +1,5 @@
res://scripts
res://scenes
res://
G:/coding/godot/2d-project-start/bin
C:/Program Files

@ -1,18 +1,18 @@
[res://player.gd]
[res://characters/happy_boo/happy_boo.gd]
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 14,
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 3,
"scroll_position": 2.0,
"row": 6,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://characters/happy_boo/happy_boo.gd]
[res://characters/slime/slime.gd]
state={
"bookmarks": PackedInt32Array(),
@ -20,13 +20,13 @@ state={
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 6,
"row": 0,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://characters/slime/slime.gd]
[res://smoke_explosion/smoke_explosion.gd]
state={
"bookmarks": PackedInt32Array(),
@ -34,55 +34,69 @@ state={
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 0,
"row": 10,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://mob.gd]
[res://scripts/audio_controller.gd]
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 24,
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 33,
"scroll_position": 1.0,
"row": 15,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://gun.gd]
[res://scripts/bullet.gd]
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 15,
"column": 20,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 16,
"row": 17,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://bullet.gd]
[res://scripts/game.gd]
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 20,
"column": 18,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 17,
"row": 66,
"scroll_position": 43.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://scripts/gun.gd]
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 41,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 20,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://smoke_explosion/smoke_explosion.gd]
[res://scripts/mob.gd]
state={
"bookmarks": PackedInt32Array(),
@ -90,27 +104,27 @@ state={
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 10,
"scroll_position": 0.0,
"row": 23,
"scroll_position": 1.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://game.gd]
[res://scripts/player.gd]
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 29,
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 13,
"row": 36,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
[res://audio_controller.gd]
[res://scripts/ui.gd]
state={
"bookmarks": PackedInt32Array(),
@ -118,7 +132,7 @@ state={
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 15,
"row": 12,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"

@ -0,0 +1,192 @@
[editor_states]
Anim={
"visible": false
}
2D={
"grid_offset": Vector2(0, 0),
"grid_snap_active": true,
"grid_step": Vector2(8, 8),
"grid_visibility": 1,
"ofs": Vector2(-308.142, -189.749),
"primary_grid_step": Vector2i(8, 8),
"show_group_gizmos": true,
"show_guides": true,
"show_helpers": false,
"show_lock_gizmos": true,
"show_origin": true,
"show_position_gizmos": true,
"show_rulers": true,
"show_transformation_gizmos": true,
"show_viewport": true,
"show_zoom_control": true,
"smart_snap_active": true,
"snap_guides": true,
"snap_node_anchors": true,
"snap_node_center": true,
"snap_node_parent": true,
"snap_node_sides": true,
"snap_other_nodes": true,
"snap_pixel": true,
"snap_relative": false,
"snap_rotation": false,
"snap_rotation_offset": 0.0,
"snap_rotation_step": 0.261799,
"snap_scale": false,
"snap_scale_step": 0.1,
"zoom": 2.85312
}
3D={
"fov": 70.01,
"gizmos_status": {
"AudioListener3D": 0,
"AudioStreamPlayer3D": 0,
"CPUParticles3D": 0,
"CSGShape3D": 0,
"Camera3D": 0,
"CollisionObject3D": 0,
"CollisionPolygon3D": 0,
"CollisionShape3D": 0,
"Decal": 0,
"FogVolume": 0,
"GPUParticles3D": 0,
"GPUParticlesCollision3D": 0,
"Joint3D": 0,
"Light3D": 0,
"LightmapGI": 0,
"LightmapProbe": 0,
"Marker3D": 0,
"MeshInstance3DCustomAABB": 0,
"NavigationLink3D": 0,
"NavigationObstacle3D": 0,
"NavigationRegion3D": 0,
"OccluderInstance3D": 0,
"Path3D": 0,
"PhysicalBone3D": 0,
"RayCast3D": 0,
"ReflectionProbe": 0,
"ShapeCast3D": 0,
"Skeleton3D": 0,
"SoftBody3D": 0,
"SpringArm3D": 0,
"VehicleWheel3D": 0,
"VisibleOnScreenNotifier3D": 0,
"VoxelGI": 0
},
"local_coords": false,
"preview_sun_env": {
"environ_ao_enabled": false,
"environ_enabled": true,
"environ_energy": 1.0,
"environ_gi_enabled": false,
"environ_glow_enabled": false,
"environ_ground_color": Color(0.2, 0.169, 0.133, 1),
"environ_sky_color": Color(0.385, 0.454, 0.55, 1),
"environ_tonemap_enabled": true,
"sun_color": Color(1, 1, 1, 1),
"sun_enabled": true,
"sun_energy": 1.0,
"sun_max_distance": 100.0,
"sun_rotation": Vector2(-1.0472, 2.61799)
},
"rotate_snap": 15.0,
"scale_snap": 10.0,
"show_grid": true,
"show_origin": true,
"snap_enabled": false,
"translate_snap": 1.0,
"viewport_mode": 1,
"viewports": [{
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": true,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}, {
"auto_orthogonal": false,
"auto_orthogonal_enabled": true,
"cinematic_preview": false,
"display_mode": 22,
"distance": 4.0,
"doppler": false,
"frame_time": false,
"gizmos": true,
"grid": true,
"half_res": false,
"information": false,
"listener": false,
"lock_rotation": false,
"orthogonal": false,
"position": Vector3(0, 0, 0),
"transform_gizmo": true,
"use_environment": false,
"view_type": 0,
"x_rotation": 0.5,
"y_rotation": -0.5
}],
"zfar": 4000.01,
"znear": 0.05
}
Game={
"camera_override_mode": 2,
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game/Player")])

@ -0,0 +1,5 @@
[folding]
node_unfolds=[NodePath("."), PackedStringArray("Collision", "Visibility"), NodePath("GroundShadow"), PackedStringArray("Visibility"), NodePath("PineTree"), PackedStringArray("Transform", "texture", "Visibility")]
resource_unfolds=["res://scenes/tree.tscn::CircleShape2D_d2g23", PackedStringArray()]
nodes_folded=[]

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

@ -0,0 +1,3 @@
source_md5="084a700253397675ef7dbec19bbdfa81"
dest_md5="aea11bd69744f69de89af149bb0da305"

@ -0,0 +1,3 @@
source_md5="1ab293222c8f6b1d378ab386c8a61fb8"
dest_md5="3e1252d4c51b682abe5690c9c7613688"

@ -0,0 +1,3 @@
source_md5="b41848b6349dec8423e28a393c8a36c5"
dest_md5="943bbbb94727292a77644a82be2a6512"

@ -0,0 +1,3 @@
source_md5="1098553070e47f3f33ee248b6e0eb5dc"
dest_md5="66130d1761c362e2c5ae6481da874dd5"

Binary file not shown.

@ -1,38 +0,0 @@
extends Node2D
signal game_over
const MOB = preload("res://mob.tscn")
const TREE = preload("res://tree.tscn")
@onready var path_follow_2d: PathFollow2D = %PathFollow2D
@onready var game_over_layer: CanvasLayer = %GameOver
@onready var game_over_sound: AudioStreamPlayer2D = %GameOverSound
@onready var background_color: ColorRect = %BackgroundColor
@export var map_size := Vector2(8000, 8000)
@export var tree_density := 50000
func _ready() -> void:
background_color.size = map_size
background_color.position = Vector2(-map_size.x / 2, -map_size.y / 2)
randomly_spawn_trees(map_size.x * map_size.y / tree_density)
func spawn_mob() -> void:
var new_mob = MOB.instantiate()
path_follow_2d.progress_ratio = randf()
new_mob.global_position = path_follow_2d.global_position
add_child(new_mob)
func _on_player_health_depleted() -> void:
game_over_layer.visible = true
game_over.emit()
func _on_death_sound_finished() -> void:
get_tree().paused = true
func randomly_spawn_trees(tree_count: int) -> void:
for i in range(tree_count):
var new_tree = TREE.instantiate()
new_tree.position = Vector2(randi_range(-map_size.x / 2, map_size.x / 2), randi_range(-map_size.y / 2, map_size.y / 2))
add_child(new_tree)

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dir26d82i0yer"
path="res://.godot/imported/grass_template2.jpg-78a2a2a1f8a173d985747a2571f68c94.ctex"
path="res://.godot/imported/grass_template2.jpg-22eba882b726eb84359352b50505fe14.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://grass_template2.jpg"
dest_files=["res://.godot/imported/grass_template2.jpg-78a2a2a1f8a173d985747a2571f68c94.ctex"]
source_file="res://images/grass_template2.jpg"
dest_files=["res://.godot/imported/grass_template2.jpg-22eba882b726eb84359352b50505fe14.ctex"]
[params]

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://i4cjdwy1kcoj"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
path="res://.godot/imported/icon.png-b9450fb2459f5b277908511db3d050dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
source_file="res://images/icon.png"
dest_files=["res://.godot/imported/icon.png-b9450fb2459f5b277908511db3d050dd.ctex"]
[params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b015lm4fhhsra"
path="res://.godot/imported/noun-gear-4758191.png-3c6c4333d5ff857e8fd4889547808b8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://images/noun-gear-4758191.png"
dest_files=["res://.godot/imported/noun-gear-4758191.png-3c6c4333d5ff857e8fd4889547808b8a.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: 14 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dtdl8kxg0el0n"
path="res://.godot/imported/noun-growth-4893904.png-5e12fc6fe08c01f9e4c6cdce606a28b4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://images/noun-growth-4893904.png"
dest_files=["res://.godot/imported/noun-growth-4893904.png-5e12fc6fe08c01f9e4c6cdce606a28b4.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

@ -0,0 +1,270 @@
[gd_scene load_steps=14 format=3 uid="uid://b1yk2xwjwltlk"]
[ext_resource type="Script" uid="uid://cl70cv3aivpdo" path="res://scripts/mob.gd" id="1_2cdgk"]
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="2_qsl3t"]
[ext_resource type="Texture2D" uid="uid://dvgfmy6vtvjji" path="res://characters/slime/slime_body.png" id="3_2avx2"]
[ext_resource type="Texture2D" uid="uid://btbxea1f3vwot" path="res://characters/slime/slime_body_hurt.png" id="4_5f346"]
[ext_resource type="Texture2D" uid="uid://c078jrp2yvc4s" path="res://characters/slime/slime_face.png" id="5_0onds"]
[ext_resource type="AudioStream" uid="uid://biwlk8nb058xm" path="res://sounds/Explosion6.ogg" id="6_lfs1x"]
[ext_resource type="Texture2D" uid="uid://cai2ijnbypqtr" path="res://characters/slime/slime_hurt_eyes.png" id="7_8eiau"]
[sub_resource type="CircleShape2D" id="CircleShape2D_nokgg"]
radius = 53.0094
[sub_resource type="Animation" id="Animation_y4lve"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Anchor/Face:position:y")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [-25.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Anchor/SlimeBody:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Anchor:position:y")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Anchor/Face/SlimeFace:texture")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("5_0onds")]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Anchor:scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
[sub_resource type="Animation" id="Animation_lu163"]
resource_name = "hurt"
length = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Anchor/Face/SlimeFace:texture")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [ExtResource("7_8eiau"), ExtResource("5_0onds")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Anchor/Face:position:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [-25.0, -35.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Anchor:scale")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Anchor/SlimeBody/SlimeBodyHurt:modulate:a")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2),
"transitions": PackedFloat32Array(1, -2, 1),
"update": 0,
"values": [0.0, 1.0, 0.0]
}
[sub_resource type="Animation" id="Animation_71vdi"]
resource_name = "idle"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Anchor/Face:position:y")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [-28.0, -24.0, -28.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Anchor/SlimeBody:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(-2, -2, -2),
"update": 0,
"values": [Vector2(1, 1), Vector2(1.05, 0.95), Vector2(1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Anchor:position:y")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_l6fy2"]
resource_name = "walk"
length = 0.4
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Anchor:position:y")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, -20.0, 0.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Anchor/SlimeBody:scale")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.1, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector2(0.9, 1.1), Vector2(1.1, 0.9), Vector2(0.9, 1.1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Anchor/Face:position:y")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.1, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [-24.0, -28.0, -24.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_j6cum"]
_data = {
&"RESET": SubResource("Animation_y4lve"),
&"hurt": SubResource("Animation_lu163"),
&"idle": SubResource("Animation_71vdi"),
&"walk": SubResource("Animation_l6fy2")
}
[node name="Boss" type="CharacterBody2D"]
scale = Vector2(1.5, 1.5)
collision_layer = 2
collision_mask = 7
script = ExtResource("1_2cdgk")
health = 20
speed = 50
xp = 10
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -25)
shape = SubResource("CircleShape2D_nokgg")
[node name="GroundShadow" type="Sprite2D" parent="."]
modulate = Color(0.898039, 0.878431, 0.831373, 0.392157)
z_index = -1
z_as_relative = false
scale = Vector2(0.8, 0.8)
texture = ExtResource("2_qsl3t")
[node name="Anchor" type="Marker2D" parent="."]
modulate = Color(0.868575, 0.144554, 0.388966, 1)
[node name="SlimeBody" type="Sprite2D" parent="Anchor"]
texture = ExtResource("3_2avx2")
offset = Vector2(0, -36)
[node name="SlimeBodyHurt" type="Sprite2D" parent="Anchor/SlimeBody"]
modulate = Color(1, 1, 1, 0)
texture = ExtResource("4_5f346")
offset = Vector2(0, -36)
[node name="Face" type="Marker2D" parent="Anchor"]
position = Vector2(0, -25)
[node name="SlimeFace" type="Sprite2D" parent="Anchor/Face"]
texture = ExtResource("5_0onds")
[node name="ExplosionSound" type="AudioStreamPlayer2D" parent="."]
unique_name_in_owner = true
stream = ExtResource("6_lfs1x")
[node name="TakeDamageSound" type="AudioStreamPlayer2D" parent="."]
unique_name_in_owner = true
stream = ExtResource("6_lfs1x")
[node name="AudioListener2D" type="AudioListener2D" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_j6cum")
}

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://doyitruir4guy"]
[ext_resource type="Texture2D" uid="uid://dftkbqwsfd68r" path="res://pistol/projectile.png" id="1_v7oki"]
[ext_resource type="Script" uid="uid://cl4my4vxn5bbs" path="res://bullet.gd" id="1_v8qja"]
[ext_resource type="Script" uid="uid://cl4my4vxn5bbs" path="res://scripts/bullet.gd" id="1_v8qja"]
[sub_resource type="CircleShape2D" id="CircleShape2D_v8qja"]
radius = 18.1108

@ -1,14 +1,15 @@
[gd_scene load_steps=11 format=3 uid="uid://b8umwsq7ccbbo"]
[gd_scene load_steps=15 format=3 uid="uid://b8umwsq7ccbbo"]
[ext_resource type="PackedScene" uid="uid://dauqd5gexcbgf" path="res://player.tscn" id="1_80nbo"]
[ext_resource type="Script" uid="uid://d4esu7gq460l7" path="res://game.gd" id="1_fc0e3"]
[ext_resource type="Texture2D" uid="uid://dir26d82i0yer" path="res://grass_template2.jpg" id="2_hve3p"]
[ext_resource type="PackedScene" uid="uid://dauqd5gexcbgf" path="res://scenes/player.tscn" id="1_80nbo"]
[ext_resource type="Script" uid="uid://d4esu7gq460l7" path="res://scripts/game.gd" id="1_fc0e3"]
[ext_resource type="Texture2D" uid="uid://dir26d82i0yer" path="res://images/grass_template2.jpg" id="2_hve3p"]
[ext_resource type="AudioStream" uid="uid://dj0m4h5r2c2xg" path="res://sounds/Laser_Shoot17.ogg" id="3_7jktm"]
[ext_resource type="Script" uid="uid://bi0ibca1qokap" path="res://audio_controller.gd" id="4_fc0e3"]
[ext_resource type="Script" uid="uid://bi0ibca1qokap" path="res://scripts/audio_controller.gd" id="4_fc0e3"]
[ext_resource type="AudioStream" uid="uid://bavkjk7nthbj5" path="res://sounds/760562__noisyredfox__hitsound1.ogg" id="4_ryrav"]
[ext_resource type="AudioStream" uid="uid://b27pkgw38f0p6" path="res://sounds/745184__mrechobot__death2.wav" id="5_j5wjh"]
[ext_resource type="AudioStream" uid="uid://sjcesmi0xjef" path="res://sounds/697867__nfsmaster821__player_death_ui_show.wav" id="7_eow3j"]
[ext_resource type="AudioStream" uid="uid://beebg84wvxii" path="res://sounds/415804__sunsai__mushroom-background-music.wav" id="9_vef74"]
[ext_resource type="Script" uid="uid://dvwfjjf35py4i" path="res://scripts/ui.gd" id="10_vtaks"]
[sub_resource type="Curve2D" id="Curve2D_feb5d"]
_data = {
@ -16,6 +17,27 @@ _data = {
}
point_count = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0tnpc"]
bg_color = Color(0.152941, 0.168627, 0.188235, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vtaks"]
bg_color = Color(0.0627451, 0.698039, 0.937255, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kvpfn"]
bg_color = Color(0.552941, 0.0980392, 0.843137, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[node name="Game" type="Node2D"]
y_sort_enabled = true
script = ExtResource("1_fc0e3")
@ -24,7 +46,7 @@ script = ExtResource("1_fc0e3")
script = ExtResource("4_fc0e3")
[node name="SpawnMobTimer" type="Timer" parent="."]
wait_time = 0.33
unique_name_in_owner = true
autostart = true
[node name="Map" type="CanvasLayer" parent="."]
@ -118,7 +140,43 @@ grow_vertical = 2
theme_override_font_sizes/font_size = 156
text = "Game Over"
[node name="UI" type="CanvasLayer" parent="."]
script = ExtResource("10_vtaks")
[node name="VBoxContainer" type="VBoxContainer" parent="UI"]
offset_left = 10.0
offset_top = 10.0
offset_right = 1034.0
offset_bottom = 74.0
[node name="XPBar" type="ProgressBar" parent="UI/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/background = SubResource("StyleBoxFlat_0tnpc")
theme_override_styles/fill = SubResource("StyleBoxFlat_vtaks")
value = 67.0
show_percentage = false
[node name="LevelBar" type="ProgressBar" parent="UI/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/background = SubResource("StyleBoxFlat_0tnpc")
theme_override_styles/fill = SubResource("StyleBoxFlat_kvpfn")
value = 67.0
show_percentage = false
[node name="Kills" type="Label" parent="UI/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Mobs Killed: 0"
[connection signal="boss" from="." to="." method="spawn_boss"]
[connection signal="game_over" from="." to="AudioController" method="_on_game_over"]
[connection signal="level_up" from="." to="." method="_on_level_up"]
[connection signal="level_up" from="." to="Player" method="_on_game_level_up"]
[connection signal="update_ui" from="." to="UI" method="_on_update_ui"]
[connection signal="timeout" from="SpawnMobTimer" to="." method="spawn_mob"]
[connection signal="health_depleted" from="Player" to="." method="_on_player_health_depleted"]
[connection signal="health_depleted" from="Player" to="AudioController" method="_on_health_depleted"]

@ -1,8 +1,8 @@
[gd_scene load_steps=5 format=3 uid="uid://brfhf78xw4dwm"]
[ext_resource type="Script" uid="uid://gcqdkullomv7" path="res://gun.gd" id="1_dk5gl"]
[ext_resource type="Script" uid="uid://gcqdkullomv7" path="res://scripts/gun.gd" id="1_dk5gl"]
[ext_resource type="Texture2D" uid="uid://cswb5do8rrj7q" path="res://pistol/pistol.png" id="1_swcir"]
[ext_resource type="PackedScene" uid="uid://doyitruir4guy" path="res://bullet.tscn" id="2_kw0bs"]
[ext_resource type="PackedScene" uid="uid://doyitruir4guy" path="res://scenes/bullet.tscn" id="2_kw0bs"]
[sub_resource type="CircleShape2D" id="CircleShape2D_o2wld"]
radius = 500.0
@ -27,7 +27,8 @@ unique_name_in_owner = true
position = Vector2(25, -11)
[node name="Timer" type="Timer" parent="."]
wait_time = 0.33
unique_name_in_owner = true
wait_time = 0.5
autostart = true
[connection signal="timeout" from="Timer" to="." method="shoot"]

@ -1,12 +1,12 @@
[gd_scene load_steps=14 format=3 uid="uid://c4slkbpvdvraw"]
[ext_resource type="Script" uid="uid://cl70cv3aivpdo" path="res://mob.gd" id="1_nokgg"]
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="3_ieysi"]
[ext_resource type="AudioStream" uid="uid://biwlk8nb058xm" path="res://sounds/Explosion6.ogg" id="3_ubaqv"]
[ext_resource type="Texture2D" uid="uid://dvgfmy6vtvjji" path="res://characters/slime/slime_body.png" id="4_cixyi"]
[ext_resource type="Texture2D" uid="uid://btbxea1f3vwot" path="res://characters/slime/slime_body_hurt.png" id="5_7ulmv"]
[ext_resource type="Texture2D" uid="uid://c078jrp2yvc4s" path="res://characters/slime/slime_face.png" id="6_pcqmr"]
[ext_resource type="Texture2D" uid="uid://cai2ijnbypqtr" path="res://characters/slime/slime_hurt_eyes.png" id="7_jbnni"]
[ext_resource type="Script" uid="uid://cl70cv3aivpdo" path="res://scripts/mob.gd" id="1_ebxvl"]
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="2_wpivu"]
[ext_resource type="Texture2D" uid="uid://dvgfmy6vtvjji" path="res://characters/slime/slime_body.png" id="3_nao87"]
[ext_resource type="Texture2D" uid="uid://btbxea1f3vwot" path="res://characters/slime/slime_body_hurt.png" id="4_i71wu"]
[ext_resource type="Texture2D" uid="uid://c078jrp2yvc4s" path="res://characters/slime/slime_face.png" id="5_m0xve"]
[ext_resource type="AudioStream" uid="uid://biwlk8nb058xm" path="res://sounds/Explosion6.ogg" id="6_m0elm"]
[ext_resource type="Texture2D" uid="uid://cai2ijnbypqtr" path="res://characters/slime/slime_hurt_eyes.png" id="7_fla60"]
[sub_resource type="CircleShape2D" id="CircleShape2D_nokgg"]
radius = 53.0094
@ -59,7 +59,7 @@ tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("6_pcqmr")]
"values": [ExtResource("5_m0xve")]
}
tracks/4/type = "value"
tracks/4/imported = false
@ -87,7 +87,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [ExtResource("7_jbnni"), ExtResource("6_pcqmr")]
"values": [ExtResource("7_fla60"), ExtResource("5_m0xve")]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -218,7 +218,7 @@ _data = {
[node name="Mob" type="CharacterBody2D"]
collision_layer = 2
collision_mask = 7
script = ExtResource("1_nokgg")
script = ExtResource("1_ebxvl")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -25)
@ -229,32 +229,32 @@ modulate = Color(0.898039, 0.878431, 0.831373, 0.392157)
z_index = -1
z_as_relative = false
scale = Vector2(0.8, 0.8)
texture = ExtResource("3_ieysi")
texture = ExtResource("2_wpivu")
[node name="Anchor" type="Marker2D" parent="."]
[node name="SlimeBody" type="Sprite2D" parent="Anchor"]
texture = ExtResource("4_cixyi")
texture = ExtResource("3_nao87")
offset = Vector2(0, -36)
[node name="SlimeBodyHurt" type="Sprite2D" parent="Anchor/SlimeBody"]
modulate = Color(1, 1, 1, 0)
texture = ExtResource("5_7ulmv")
texture = ExtResource("4_i71wu")
offset = Vector2(0, -36)
[node name="Face" type="Marker2D" parent="Anchor"]
position = Vector2(0, -25)
[node name="SlimeFace" type="Sprite2D" parent="Anchor/Face"]
texture = ExtResource("6_pcqmr")
texture = ExtResource("5_m0xve")
[node name="ExplosionSound" type="AudioStreamPlayer2D" parent="."]
unique_name_in_owner = true
stream = ExtResource("3_ubaqv")
stream = ExtResource("6_m0elm")
[node name="TakeDamageSound" type="AudioStreamPlayer2D" parent="."]
unique_name_in_owner = true
stream = ExtResource("3_ubaqv")
stream = ExtResource("6_m0elm")
[node name="AudioListener2D" type="AudioListener2D" parent="."]

@ -1,8 +1,8 @@
[gd_scene load_steps=8 format=3 uid="uid://dauqd5gexcbgf"]
[ext_resource type="PackedScene" uid="uid://pbmyh1qru7p" path="res://characters/happy_boo/happy_boo.tscn" id="1_4flbx"]
[ext_resource type="Script" uid="uid://drnl7altlij7f" path="res://player.gd" id="1_onrkg"]
[ext_resource type="PackedScene" uid="uid://brfhf78xw4dwm" path="res://gun.tscn" id="3_i3pqv"]
[ext_resource type="Script" uid="uid://drnl7altlij7f" path="res://scripts/player.gd" id="1_onrkg"]
[ext_resource type="PackedScene" uid="uid://brfhf78xw4dwm" path="res://scenes/gun.tscn" id="3_i3pqv"]
[sub_resource type="CircleShape2D" id="CircleShape2D_onrkg"]
radius = 30.0
@ -68,4 +68,5 @@ show_percentage = false
[node name="AudioListener2D" type="AudioListener2D" parent="."]
current = true
[connection signal="level_up" from="." to="Gun" method="_on_player_level_up"]
[connection signal="shooted" from="Gun" to="." method="_on_gun_shooted"]

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://bbjrt670oq527"]
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="1_nnvrw"]
[ext_resource type="Texture2D" uid="uid://caqfk2xng5v5u" path="res://trees/pine_tree.png" id="2_gvmkm"]
[ext_resource type="Texture2D" uid="uid://b7rhtttevhxtj" path="res://characters/ground_shadow.png" id="1_vplca"]
[ext_resource type="Texture2D" uid="uid://caqfk2xng5v5u" path="res://trees/pine_tree.png" id="2_viusy"]
[sub_resource type="CircleShape2D" id="CircleShape2D_d2g23"]
radius = 25.2982
@ -14,11 +14,12 @@ collision_mask = 7
modulate = Color(0.611765, 0.745098, 0.796078, 0.392157)
position = Vector2(0, 8)
scale = Vector2(0.923077, 0.923077)
texture = ExtResource("1_nnvrw")
texture = ExtResource("1_vplca")
[node name="PineTree" type="Sprite2D" parent="."]
unique_name_in_owner = true
position = Vector2(0, -59)
texture = ExtResource("2_gvmkm")
texture = ExtResource("2_viusy")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, 2)

@ -0,0 +1,80 @@
extends Node2D
signal game_over
signal level_up()
signal boss
signal update_ui(xp: int, xp_next_level: int, level: int, boss_level: int)
const MOB = preload("res://scenes/mob.tscn")
const TREE = preload("res://scenes/tree.tscn")
const BOSS = preload("res://scenes/boss.tscn")
@onready var path_follow_2d: PathFollow2D = %PathFollow2D
@onready var game_over_layer: CanvasLayer = %GameOver
@onready var game_over_sound: AudioStreamPlayer2D = %GameOverSound
@onready var background_color: ColorRect = %BackgroundColor
@onready var spawn_mob_timer: Timer = %SpawnMobTimer
@export var map_size := Vector2(8000, 8000)
@export var tree_density := 100000
var xp: int
var xp_next_level: int = 3
var level: int = 1
var boss_level: int = 3
var kill_count: int
func _ready() -> void:
background_color.size = map_size
background_color.position = Vector2(-map_size.x / 2, -map_size.y / 2)
randomly_spawn_trees(int(map_size.x * map_size.y / tree_density))
update_ui.emit(xp, xp_next_level, level, boss_level, kill_count)
func spawn_mob() -> void:
var new_mob = MOB.instantiate()
path_follow_2d.progress_ratio = randf()
new_mob.global_position = path_follow_2d.global_position
new_mob.connect("mob_died", Callable(self, "_on_mob_died"))
add_child(new_mob)
func _on_player_health_depleted() -> void:
game_over_layer.visible = true
game_over.emit()
func _on_death_sound_finished() -> void:
get_tree().paused = true
func randomly_spawn_trees(tree_count: int) -> void:
for i in range(tree_count):
var new_tree = TREE.instantiate()
new_tree.position = Vector2(randi_range(-map_size.x / 2, map_size.x / 2), randi_range(-map_size.y / 2, map_size.y / 2))
new_tree.modulate = Color(randf(), randf(), randf())
add_child(new_tree)
func _on_mob_died(mob_xp: int) -> void:
kill_count += 1
xp += mob_xp
print("XP: " + str(xp) + "/" + str(xp_next_level))
if xp >= xp_next_level:
xp = xp - xp_next_level
xp_next_level *= 1.5
level +=1
level_up.emit()
print("Level up to " + str(level))
if level >= boss_level:
boss.emit()
level = level - boss_level
boss_level *= 2
update_ui.emit(xp, xp_next_level, level, boss_level, kill_count)
func spawn_boss() -> void:
print("Spawn Boss")
var new_boss = BOSS.instantiate()
path_follow_2d.progress_ratio = randf()
new_boss.global_position = path_follow_2d.global_position
new_boss.connect("mob_died", Callable(self, "_on_mob_died"))
add_child(new_boss)
func _on_level_up() -> void:
spawn_mob_timer.wait_time = 1 - (level * 0.1)
level_up.emit(level)

@ -2,6 +2,7 @@ extends Area2D
signal shooted
@export var bullet: PackedScene
@onready var timer: Timer = %Timer
func _physics_process(_delta: float) -> void:
var enemies_in_range = get_overlapping_bodies()
@ -15,3 +16,7 @@ func shoot() -> void:
new_bullet.global_rotation = %ShootingPoint.global_rotation
%ShootingPoint.add_child(new_bullet)
shooted.emit()
func _on_player_level_up(level: int) -> void:
timer.wait_time = 0.5 - (level * 0.1)

@ -1,5 +1,7 @@
extends CharacterBody2D
signal mob_died(xp: int)
@onready var animation_player = %AnimationPlayer
@onready var explosion_sound: AudioStreamPlayer2D = %ExplosionSound
@onready var take_damage_sound: AudioStreamPlayer2D = %TakeDamageSound
@ -8,7 +10,8 @@ const SMOKE_EXPLOSION = preload("res://smoke_explosion/smoke_explosion.tscn")
@onready var player = get_node("/root/Game/Player")
@export var health = 2
@export var SPEED = 200
@export var speed = 100
@export var xp = 1
func _ready() -> void:
animation_player.play("walk")
@ -16,7 +19,7 @@ func _ready() -> void:
func _physics_process(_delta: float) -> void:
if not player: return
var direction = global_position.direction_to(player.global_position)
velocity = direction * SPEED
velocity = direction * speed
move_and_slide()
func take_damage() -> void:
@ -27,6 +30,7 @@ func take_damage() -> void:
smoke.global_position = global_position
explosion_sound.play()
await explosion_sound.finished
mob_died.emit(xp)
queue_free()
else:
take_damage_sound.play()

@ -3,9 +3,10 @@ extends CharacterBody2D
signal health_depleted
signal player_takes_damage
signal shooted
signal level_up(level: int)
const SPEED := 600
const DAMAGE_RATE := 10.0
@export var SPEED := 600
@export var DAMAGE_RATE := 10.0
var health := 100.0
@ -31,6 +32,8 @@ func _physics_process(delta: float) -> void:
if health <= 0.0:
health_depleted.emit()
func _on_gun_shooted() -> void:
shooted.emit()
func _on_game_level_up(level: int) -> void:
level_up.emit(level)

@ -0,0 +1,12 @@
extends CanvasLayer
@onready var xp_bar: ProgressBar = %XPBar
@onready var level_bar: ProgressBar = %LevelBar
@onready var kills: Label = %Kills
func _on_update_ui(xp: int, xp_next_level: int, level: int, boss_level: int, kill_count: int) -> void:
xp_bar.max_value = xp_next_level
xp_bar.value = xp
level_bar.max_value = boss_level
level_bar.value = level
kills.text = "Mobs killed: " + str(kill_count)

@ -0,0 +1 @@
uid://dvwfjjf35py4i