From 183f5751607094cdcae86fc495cb88b7af8a0016 Mon Sep 17 00:00:00 2001 From: Kilokem Date: Thu, 13 Mar 2025 19:50:05 +0100 Subject: [PATCH] First trap initialized! --- Assets/Traps/Sticks/Tile2_59.png | Bin 0 -> 455 bytes Assets/Traps/Sticks/Tile2_59.png.import | 34 ++++++++ Assets/Traps/Sticks/Tile2_60.png | Bin 0 -> 495 bytes Assets/Traps/Sticks/Tile2_60.png.import | 34 ++++++++ Game/Maps/map_1.gd | 6 +- Game/Mobs/cobold.tscn | 100 +++++++++++++++++++++++- Game/Mobs/enemy.gd | 61 ++++++++++++--- Game/Mobs/forkman.tscn | 97 ++++++++++++++++++++++- Game/Mobs/ork.tscn | 100 +++++++++++++++++++++++- Game/Traps/stick_trap.tscn | 28 +++++++ Game/Traps/traps.gd | 17 ++++ Game/Traps/traps.gd.uid | 1 + Game/sidepanel.gd | 13 +++ Game/sidepanel.tscn | 29 ++++++- 14 files changed, 498 insertions(+), 22 deletions(-) create mode 100644 Assets/Traps/Sticks/Tile2_59.png create mode 100644 Assets/Traps/Sticks/Tile2_59.png.import create mode 100644 Assets/Traps/Sticks/Tile2_60.png create mode 100644 Assets/Traps/Sticks/Tile2_60.png.import create mode 100644 Game/Traps/stick_trap.tscn create mode 100644 Game/Traps/traps.gd create mode 100644 Game/Traps/traps.gd.uid diff --git a/Assets/Traps/Sticks/Tile2_59.png b/Assets/Traps/Sticks/Tile2_59.png new file mode 100644 index 0000000000000000000000000000000000000000..12e7d49997e257793cac322487bba587bd2731a7 GIT binary patch literal 455 zcmV;&0XY7NP)Ie=mZPzr{&17N{FazkK19YBrX2LTpR@-ng-5P16N6N8zp421pg z6J-tn0ho_K7NI)=*~d0BuEWJo9ey$l(*Ve)$ia;s^w_|@&;Mx~0>}xD8i^0913-xi zS16!^bXzGD{>;PANUn$me>ngOg>6x8So3?VHb3v;o)|GJm0`Y0Vn|} zR-Obq0)|0}5?@e*&Vq{S1rad-*-|H7Mv5K4g3l6U-y;`3)XD*PLjXAk(4r0?=m2cKr*=(9 xQG0+|p@5MFK-me_5~}c$#oFAaW*PtpFaUY_rKe0!0DJ%d002ovPDHLkV1g#QtkD1f literal 0 HcmV?d00001 diff --git a/Assets/Traps/Sticks/Tile2_59.png.import b/Assets/Traps/Sticks/Tile2_59.png.import new file mode 100644 index 0000000..0183f2d --- /dev/null +++ b/Assets/Traps/Sticks/Tile2_59.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4bah0c8unbl8" +path="res://.godot/imported/Tile2_59.png-97106898629fc4dd31e5d967ea663da6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Traps/Sticks/Tile2_59.png" +dest_files=["res://.godot/imported/Tile2_59.png-97106898629fc4dd31e5d967ea663da6.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 diff --git a/Assets/Traps/Sticks/Tile2_60.png b/Assets/Traps/Sticks/Tile2_60.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c5354224ceb39b83719a0e4d69f86b11cf3580 GIT binary patch literal 495 zcmV*9Hi9uS9k1_|GI{XAouk?~8I=8@l4{`ui3nD_Hf$n>%mxQ3u z0EGl{u;Yt+T)|JY13&u$N(bq-QaJVO`}`j-pXd<4m)a=>jKs8vKn{QvKpnTh%Lz=h^gXt;KobWLDsJi0 lBEnZBFTVN_r#^rH0|4}f-a~$2x}X36002ovPDHLkV1j?t$Grdm literal 0 HcmV?d00001 diff --git a/Assets/Traps/Sticks/Tile2_60.png.import b/Assets/Traps/Sticks/Tile2_60.png.import new file mode 100644 index 0000000..c4e8e21 --- /dev/null +++ b/Assets/Traps/Sticks/Tile2_60.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l58s5yxh4f8n" +path="res://.godot/imported/Tile2_60.png-6c8f8f827f556633ad1ffd2155ea6316.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Traps/Sticks/Tile2_60.png" +dest_files=["res://.godot/imported/Tile2_60.png-6c8f8f827f556633ad1ffd2155ea6316.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 diff --git a/Game/Maps/map_1.gd b/Game/Maps/map_1.gd index 1194ab3..28b8620 100644 --- a/Game/Maps/map_1.gd +++ b/Game/Maps/map_1.gd @@ -10,6 +10,10 @@ const enemies = [FORKMAN, COBOLD, ORK] var lives = 20 +func _ready() -> void: + get_node("SidePanel").Update_Lives(lives) + + func _on_timer_timeout() -> void: spawnMonster() @@ -22,7 +26,7 @@ func spawnMonster(): func decrease_life(damage) -> void: lives -= damage - print(lives) + get_node("SidePanel").Update_Lives(lives) if lives == 0: print("DEAD") diff --git a/Game/Mobs/cobold.tscn b/Game/Mobs/cobold.tscn index 989265f..c7373d4 100644 --- a/Game/Mobs/cobold.tscn +++ b/Game/Mobs/cobold.tscn @@ -1,31 +1,116 @@ -[gd_scene load_steps=26 format=3 uid="uid://b1choexdgayxm"] +[gd_scene load_steps=46 format=3 uid="uid://b1choexdgayxm"] [ext_resource type="Texture2D" uid="uid://cf1a85vdsh2e4" path="res://Assets/Monsters/4/4_enemies_1_walk_000.png" id="1_00byl"] [ext_resource type="Script" uid="uid://sh6qqbl8fdrr" path="res://Game/Mobs/enemy.gd" id="1_ssdee"] +[ext_resource type="Texture2D" uid="uid://d2up7ldu64nfn" path="res://Assets/Monsters/4/4_enemies_1_hurt_000.png" id="2_acxcu"] [ext_resource type="Texture2D" uid="uid://lrffmrkjvjbj" path="res://Assets/Monsters/4/4_enemies_1_walk_001.png" id="2_ssdee"] +[ext_resource type="Texture2D" uid="uid://cd6ts2qqyn5wr" path="res://Assets/Monsters/4/4_enemies_1_hurt_001.png" id="3_0gjha"] [ext_resource type="Texture2D" uid="uid://ccippi8nlpeck" path="res://Assets/Monsters/4/4_enemies_1_walk_002.png" id="3_ugkdc"] +[ext_resource type="Texture2D" uid="uid://c48okn54t3q06" path="res://Assets/Monsters/4/4_enemies_1_hurt_002.png" id="4_c3t52"] [ext_resource type="Texture2D" uid="uid://dfx47hahbfa7n" path="res://Assets/Monsters/4/4_enemies_1_walk_003.png" id="4_umiu5"] +[ext_resource type="Texture2D" uid="uid://rmvhqln4yndh" path="res://Assets/Monsters/4/4_enemies_1_hurt_003.png" id="5_8urwa"] [ext_resource type="Texture2D" uid="uid://c2x00wk5hy8ui" path="res://Assets/Monsters/4/4_enemies_1_walk_004.png" id="5_jhffi"] +[ext_resource type="Texture2D" uid="uid://br3dbomwj08x8" path="res://Assets/Monsters/4/4_enemies_1_hurt_004.png" id="6_h2c0g"] [ext_resource type="Texture2D" uid="uid://n6ussgwqhgwd" path="res://Assets/Monsters/4/4_enemies_1_walk_005.png" id="6_m0tv1"] [ext_resource type="Texture2D" uid="uid://d260j1pxkavc6" path="res://Assets/Monsters/4/4_enemies_1_walk_006.png" id="7_i62o8"] +[ext_resource type="Texture2D" uid="uid://bmrvq45ge3feh" path="res://Assets/Monsters/4/4_enemies_1_hurt_005.png" id="7_wcgo2"] [ext_resource type="Texture2D" uid="uid://bqtg2wcrdldp" path="res://Assets/Monsters/4/4_enemies_1_walk_007.png" id="8_37lqs"] +[ext_resource type="Texture2D" uid="uid://wg7v7b7hnh35" path="res://Assets/Monsters/4/4_enemies_1_hurt_006.png" id="8_g5vqf"] [ext_resource type="Texture2D" uid="uid://cgged352l3e14" path="res://Assets/Monsters/4/4_enemies_1_walk_008.png" id="9_uqtw3"] +[ext_resource type="Texture2D" uid="uid://cp3t2sqh6ivwo" path="res://Assets/Monsters/4/4_enemies_1_hurt_007.png" id="9_v2ark"] +[ext_resource type="Texture2D" uid="uid://dhcsp57ggmbys" path="res://Assets/Monsters/4/4_enemies_1_hurt_008.png" id="10_5odwn"] [ext_resource type="Texture2D" uid="uid://b6r0s6mk2xirp" path="res://Assets/Monsters/4/4_enemies_1_walk_009.png" id="10_hrne8"] +[ext_resource type="Texture2D" uid="uid://4hn0m5mlr0lx" path="res://Assets/Monsters/4/4_enemies_1_hurt_009.png" id="11_ejcwl"] [ext_resource type="Texture2D" uid="uid://dvgcq2a0uq4bt" path="res://Assets/Monsters/4/4_enemies_1_walk_010.png" id="11_uta4l"] [ext_resource type="Texture2D" uid="uid://bd27m6hj4qktj" path="res://Assets/Monsters/4/4_enemies_1_walk_011.png" id="12_rjrva"] +[ext_resource type="Texture2D" uid="uid://btgcywof8d1lv" path="res://Assets/Monsters/4/4_enemies_1_hurt_010.png" id="12_weogc"] +[ext_resource type="Texture2D" uid="uid://bgs3g1eso1k2o" path="res://Assets/Monsters/4/4_enemies_1_hurt_011.png" id="13_6hmnw"] [ext_resource type="Texture2D" uid="uid://e28rae4ja600" path="res://Assets/Monsters/4/4_enemies_1_walk_012.png" id="13_vqybw"] +[ext_resource type="Texture2D" uid="uid://c8svw1kqdtvkh" path="res://Assets/Monsters/4/4_enemies_1_hurt_012.png" id="14_c3mr3"] [ext_resource type="Texture2D" uid="uid://di46f7hblrtyk" path="res://Assets/Monsters/4/4_enemies_1_walk_013.png" id="14_e7g8m"] +[ext_resource type="Texture2D" uid="uid://b5ens5ycfyhqn" path="res://Assets/Monsters/4/4_enemies_1_hurt_013.png" id="15_tkch8"] [ext_resource type="Texture2D" uid="uid://bdem35twmk7jt" path="res://Assets/Monsters/4/4_enemies_1_walk_014.png" id="15_umg60"] [ext_resource type="Texture2D" uid="uid://cp58pluolceqo" path="res://Assets/Monsters/4/4_enemies_1_walk_015.png" id="16_7ykg7"] +[ext_resource type="Texture2D" uid="uid://cigdrg3key8tw" path="res://Assets/Monsters/4/4_enemies_1_hurt_014.png" id="16_nuhaa"] [ext_resource type="Texture2D" uid="uid://d3brnkbnrbjh6" path="res://Assets/Monsters/4/4_enemies_1_walk_016.png" id="17_26ilt"] +[ext_resource type="Texture2D" uid="uid://citn1om11lp5j" path="res://Assets/Monsters/4/4_enemies_1_hurt_015.png" id="17_xtqww"] +[ext_resource type="Texture2D" uid="uid://bxyrk7pq3o4xy" path="res://Assets/Monsters/4/4_enemies_1_hurt_016.png" id="18_66up5"] [ext_resource type="Texture2D" uid="uid://fix5k5mbmray" path="res://Assets/Monsters/4/4_enemies_1_walk_017.png" id="18_k4imq"] [ext_resource type="Texture2D" uid="uid://cudsvwk0ey5nk" path="res://Assets/Monsters/4/4_enemies_1_walk_018.png" id="19_628ow"] +[ext_resource type="Texture2D" uid="uid://bpig2c7xhy2jy" path="res://Assets/Monsters/4/4_enemies_1_hurt_017.png" id="19_ks0ga"] +[ext_resource type="Texture2D" uid="uid://bo7yoamhqc6bi" path="res://Assets/Monsters/4/4_enemies_1_hurt_018.png" id="20_hps8o"] [ext_resource type="Texture2D" uid="uid://e87x6cqk7n3q" path="res://Assets/Monsters/4/4_enemies_1_walk_019.png" id="20_kbibr"] +[ext_resource type="Texture2D" uid="uid://dq1m2gy5f3pov" path="res://Assets/Monsters/4/4_enemies_1_hurt_019.png" id="21_m5o2x"] [sub_resource type="SpriteFrames" id="SpriteFrames_brd2m"] animations = [{ "frames": [{ "duration": 1.0, +"texture": ExtResource("2_acxcu") +}, { +"duration": 1.0, +"texture": ExtResource("3_0gjha") +}, { +"duration": 1.0, +"texture": ExtResource("4_c3t52") +}, { +"duration": 1.0, +"texture": ExtResource("5_8urwa") +}, { +"duration": 1.0, +"texture": ExtResource("6_h2c0g") +}, { +"duration": 1.0, +"texture": ExtResource("7_wcgo2") +}, { +"duration": 1.0, +"texture": ExtResource("8_g5vqf") +}, { +"duration": 1.0, +"texture": ExtResource("9_v2ark") +}, { +"duration": 1.0, +"texture": ExtResource("10_5odwn") +}, { +"duration": 1.0, +"texture": ExtResource("11_ejcwl") +}, { +"duration": 1.0, +"texture": ExtResource("12_weogc") +}, { +"duration": 1.0, +"texture": ExtResource("13_6hmnw") +}, { +"duration": 1.0, +"texture": ExtResource("14_c3mr3") +}, { +"duration": 1.0, +"texture": ExtResource("15_tkch8") +}, { +"duration": 1.0, +"texture": ExtResource("16_nuhaa") +}, { +"duration": 1.0, +"texture": ExtResource("17_xtqww") +}, { +"duration": 1.0, +"texture": ExtResource("18_66up5") +}, { +"duration": 1.0, +"texture": ExtResource("19_ks0ga") +}, { +"duration": 1.0, +"texture": ExtResource("20_hps8o") +}, { +"duration": 1.0, +"texture": ExtResource("21_m5o2x") +}], +"loop": true, +"name": &"hurt", +"speed": 20.0 +}, { +"frames": [{ +"duration": 1.0, "texture": ExtResource("1_00byl") }, { "duration": 1.0, @@ -86,7 +171,7 @@ animations = [{ "texture": ExtResource("20_kbibr") }], "loop": true, -"name": &"Default", +"name": &"walk", "speed": 20.0 }] @@ -115,13 +200,20 @@ script = ExtResource("1_ssdee") position = Vector2(10, 0) scale = Vector2(0.25, 0.25) sprite_frames = SubResource("SpriteFrames_brd2m") -animation = &"Default" -autoplay = "Default" +animation = &"hurt" +autoplay = "walk" +frame_progress = 0.66798 [node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] scale = Vector2(2, 2) shape = SubResource("CircleShape2D_acxcu") +[node name="Area2D" type="Area2D" parent="CharacterBody2D"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D/Area2D"] +scale = Vector2(2, 2) +shape = SubResource("CircleShape2D_acxcu") + [node name="ProgressBar" type="ProgressBar" parent="."] offset_left = -15.0 offset_top = -30.0 diff --git a/Game/Mobs/enemy.gd b/Game/Mobs/enemy.gd index f24ca8f..6438609 100644 --- a/Game/Mobs/enemy.gd +++ b/Game/Mobs/enemy.gd @@ -12,10 +12,10 @@ var last_position: Vector2 = Vector2.ZERO # To store the previous position func _ready() -> void: last_position = get_parent().position - + get_node("CharacterBody2D/Area2D").connect("body_entered", Callable(self, "Collision_Handler")) + get_node("CharacterBody2D/AnimatedSprite2D").connect("animation_finished", Callable(self, "AnimatedSprite2D_animation_finished")) set_character_data() adjust_health_bar() - func _process(delta: float) -> void: move_character(delta) @@ -69,12 +69,55 @@ func set_character_data(): func adjust_health_bar() -> void: var health_bar = get_node("ProgressBar") + + # Create new StyleBox resources for each instance + var fill_style = StyleBoxFlat.new() + fill_style.corner_radius_top_left = 20 + fill_style.corner_radius_top_right = 20 + fill_style.corner_radius_bottom_left = 20 + fill_style.corner_radius_bottom_right = 20 + + var bg_style = StyleBoxFlat.new() + bg_style.corner_radius_top_left = 20 + bg_style.corner_radius_top_right = 20 + bg_style.corner_radius_bottom_left = 20 + bg_style.corner_radius_bottom_right = 20 + if current_shield > 0: - health_bar.get("theme_override_styles/fill").bg_color = Color(0,0,1) - health_bar.get("theme_override_styles/background").bg_color = Color(0,1,0) - health_bar.value = shield / current_shield * 100 + fill_style.bg_color = Color(0, 0, 1) # Blue for shield + bg_style.bg_color = Color(0, 1, 0) # Green background + health_bar.value = int((current_shield / float(shield)) * 100) # Use current_shield and shield else: - health_bar.get("theme_override_styles/fill").bg_color = Color(0,1,0) - health_bar.get("theme_override_styles/background").bg_color = Color(1,0,0) - health_bar.value = health / current_health * 100 - pass + fill_style.bg_color = Color(0, 1, 0) # Green for health + bg_style.bg_color = Color(1, 0, 0) # Red background + health_bar.value = int((current_health / float(health)) * 100) + + # Apply the styles + health_bar.add_theme_stylebox_override("fill", fill_style) + health_bar.add_theme_stylebox_override("background", bg_style) + +func enemy_hurt(amount) -> void: + if current_shield > 0: + if shield > amount: + current_shield -= amount + else: + amount -= current_shield + current_shield = 0 + current_health -= amount + else: + current_health -= amount + + if current_health <= 0: + get_parent().queue_free() + else: + adjust_health_bar() + +func AnimatedSprite2D_animation_finished() -> void: + var animated_sprite = get_node("CharacterBody2D/AnimatedSprite2D") + if animated_sprite.animation == "hurt": + animated_sprite.play("walk") + +func Collision_Handler(body: Node2D): + if body.get_parent().name.contains("StickTrap"): + enemy_hurt(25) + get_node("CharacterBody2D/AnimatedSprite2D").play("hurt") diff --git a/Game/Mobs/forkman.tscn b/Game/Mobs/forkman.tscn index 901d033..05cdbbc 100644 --- a/Game/Mobs/forkman.tscn +++ b/Game/Mobs/forkman.tscn @@ -1,26 +1,46 @@ -[gd_scene load_steps=26 format=3 uid="uid://dnoajr7rj2um7"] +[gd_scene load_steps=46 format=3 uid="uid://dnoajr7rj2um7"] [ext_resource type="Script" uid="uid://sh6qqbl8fdrr" path="res://Game/Mobs/enemy.gd" id="1_pq2md"] [ext_resource type="Texture2D" uid="uid://dl2w65j5jq0xc" path="res://Assets/Monsters/1/1_enemies_1_walk_000.png" id="1_ra45u"] +[ext_resource type="Texture2D" uid="uid://br8vm30ppn51l" path="res://Assets/Monsters/1/1_enemies_1_hurt_000.png" id="2_53m6g"] [ext_resource type="Texture2D" uid="uid://sxsuv85rgxa1" path="res://Assets/Monsters/1/1_enemies_1_walk_001.png" id="2_pq2md"] +[ext_resource type="Texture2D" uid="uid://l42uiy76bhxr" path="res://Assets/Monsters/1/1_enemies_1_hurt_001.png" id="3_4kkql"] [ext_resource type="Texture2D" uid="uid://bm073de32a3pu" path="res://Assets/Monsters/1/1_enemies_1_walk_002.png" id="3_gxpsl"] +[ext_resource type="Texture2D" uid="uid://dg4bxs4aycvrq" path="res://Assets/Monsters/1/1_enemies_1_hurt_002.png" id="4_n2o0p"] [ext_resource type="Texture2D" uid="uid://bmloufrbidsqo" path="res://Assets/Monsters/1/1_enemies_1_walk_003.png" id="4_vb2u0"] [ext_resource type="Texture2D" uid="uid://ck8av0egjy7r2" path="res://Assets/Monsters/1/1_enemies_1_walk_004.png" id="5_1x0wp"] +[ext_resource type="Texture2D" uid="uid://cvuoqtxhy5blq" path="res://Assets/Monsters/1/1_enemies_1_hurt_003.png" id="5_hg70q"] [ext_resource type="Texture2D" uid="uid://ok8wq17yge66" path="res://Assets/Monsters/1/1_enemies_1_walk_005.png" id="6_tgrc0"] +[ext_resource type="Texture2D" uid="uid://disaxt8ojunur" path="res://Assets/Monsters/1/1_enemies_1_hurt_004.png" id="6_xkxmy"] +[ext_resource type="Texture2D" uid="uid://m2fiakotoqft" path="res://Assets/Monsters/1/1_enemies_1_hurt_005.png" id="7_2yr3d"] [ext_resource type="Texture2D" uid="uid://cl56mwcyom2vs" path="res://Assets/Monsters/1/1_enemies_1_walk_006.png" id="7_nt07g"] +[ext_resource type="Texture2D" uid="uid://bm4b0mdkyns1b" path="res://Assets/Monsters/1/1_enemies_1_hurt_006.png" id="8_tq3ug"] [ext_resource type="Texture2D" uid="uid://du57hw0eh6wg4" path="res://Assets/Monsters/1/1_enemies_1_walk_007.png" id="8_yjyl6"] +[ext_resource type="Texture2D" uid="uid://d4bbudxxyrbd7" path="res://Assets/Monsters/1/1_enemies_1_hurt_007.png" id="9_2sgw5"] [ext_resource type="Texture2D" uid="uid://8417txfhh37c" path="res://Assets/Monsters/1/1_enemies_1_walk_008.png" id="9_mpc1o"] +[ext_resource type="Texture2D" uid="uid://c11oydj6tkig1" path="res://Assets/Monsters/1/1_enemies_1_hurt_008.png" id="10_5m8ca"] [ext_resource type="Texture2D" uid="uid://debvus3344n5c" path="res://Assets/Monsters/1/1_enemies_1_walk_009.png" id="10_q6pl0"] [ext_resource type="Texture2D" uid="uid://docerq3efivq5" path="res://Assets/Monsters/1/1_enemies_1_walk_010.png" id="11_r662y"] +[ext_resource type="Texture2D" uid="uid://ds41grau6rhxo" path="res://Assets/Monsters/1/1_enemies_1_hurt_009.png" id="11_y4ye7"] [ext_resource type="Texture2D" uid="uid://bhnf6gdnld6ck" path="res://Assets/Monsters/1/1_enemies_1_walk_011.png" id="12_ika66"] +[ext_resource type="Texture2D" uid="uid://dek1fw5gnromu" path="res://Assets/Monsters/1/1_enemies_1_hurt_010.png" id="12_p3te8"] [ext_resource type="Texture2D" uid="uid://b2bgvs1dnmp3v" path="res://Assets/Monsters/1/1_enemies_1_walk_012.png" id="13_5lf1w"] +[ext_resource type="Texture2D" uid="uid://durhxdpqcfc70" path="res://Assets/Monsters/1/1_enemies_1_hurt_011.png" id="13_r35qh"] +[ext_resource type="Texture2D" uid="uid://oojpigafle3r" path="res://Assets/Monsters/1/1_enemies_1_hurt_012.png" id="14_faos6"] [ext_resource type="Texture2D" uid="uid://bltn18wj6sqbv" path="res://Assets/Monsters/1/1_enemies_1_walk_013.png" id="14_u3sot"] [ext_resource type="Texture2D" uid="uid://re1e2vxnkvny" path="res://Assets/Monsters/1/1_enemies_1_walk_014.png" id="15_0wrvp"] +[ext_resource type="Texture2D" uid="uid://hbv27x6adbi4" path="res://Assets/Monsters/1/1_enemies_1_hurt_013.png" id="15_5qygf"] +[ext_resource type="Texture2D" uid="uid://dwu3xlwnlhff3" path="res://Assets/Monsters/1/1_enemies_1_hurt_014.png" id="16_7qehe"] [ext_resource type="Texture2D" uid="uid://0xbdj00hfiva" path="res://Assets/Monsters/1/1_enemies_1_walk_015.png" id="16_ipe57"] [ext_resource type="Texture2D" uid="uid://cb7ka3ckam73t" path="res://Assets/Monsters/1/1_enemies_1_walk_016.png" id="17_7dt0v"] +[ext_resource type="Texture2D" uid="uid://fe503mr5v7pg" path="res://Assets/Monsters/1/1_enemies_1_hurt_015.png" id="17_xvckp"] [ext_resource type="Texture2D" uid="uid://daotm1cxaqd85" path="res://Assets/Monsters/1/1_enemies_1_walk_017.png" id="18_fxffo"] +[ext_resource type="Texture2D" uid="uid://bg60qgjm5dei5" path="res://Assets/Monsters/1/1_enemies_1_hurt_016.png" id="18_u3gdq"] +[ext_resource type="Texture2D" uid="uid://dv80pf5yjx7hr" path="res://Assets/Monsters/1/1_enemies_1_hurt_017.png" id="19_acf8m"] [ext_resource type="Texture2D" uid="uid://cqvx47l53s1vc" path="res://Assets/Monsters/1/1_enemies_1_walk_018.png" id="19_lbdce"] +[ext_resource type="Texture2D" uid="uid://cixwd1sueem1o" path="res://Assets/Monsters/1/1_enemies_1_hurt_018.png" id="20_e3vkv"] [ext_resource type="Texture2D" uid="uid://bi4gdl6ovax2j" path="res://Assets/Monsters/1/1_enemies_1_walk_019.png" id="20_garh6"] +[ext_resource type="Texture2D" uid="uid://121yr8q2welm" path="res://Assets/Monsters/1/1_enemies_1_hurt_019.png" id="21_to6c5"] [sub_resource type="CircleShape2D" id="CircleShape2D_ra45u"] radius = 32.0 @@ -29,6 +49,71 @@ radius = 32.0 animations = [{ "frames": [{ "duration": 1.0, +"texture": ExtResource("2_53m6g") +}, { +"duration": 1.0, +"texture": ExtResource("3_4kkql") +}, { +"duration": 1.0, +"texture": ExtResource("4_n2o0p") +}, { +"duration": 1.0, +"texture": ExtResource("5_hg70q") +}, { +"duration": 1.0, +"texture": ExtResource("6_xkxmy") +}, { +"duration": 1.0, +"texture": ExtResource("7_2yr3d") +}, { +"duration": 1.0, +"texture": ExtResource("8_tq3ug") +}, { +"duration": 1.0, +"texture": ExtResource("9_2sgw5") +}, { +"duration": 1.0, +"texture": ExtResource("10_5m8ca") +}, { +"duration": 1.0, +"texture": ExtResource("11_y4ye7") +}, { +"duration": 1.0, +"texture": ExtResource("12_p3te8") +}, { +"duration": 1.0, +"texture": ExtResource("13_r35qh") +}, { +"duration": 1.0, +"texture": ExtResource("14_faos6") +}, { +"duration": 1.0, +"texture": ExtResource("15_5qygf") +}, { +"duration": 1.0, +"texture": ExtResource("16_7qehe") +}, { +"duration": 1.0, +"texture": ExtResource("17_xvckp") +}, { +"duration": 1.0, +"texture": ExtResource("18_u3gdq") +}, { +"duration": 1.0, +"texture": ExtResource("19_acf8m") +}, { +"duration": 1.0, +"texture": ExtResource("20_e3vkv") +}, { +"duration": 1.0, +"texture": ExtResource("21_to6c5") +}], +"loop": true, +"name": &"hurt", +"speed": 20.0 +}, { +"frames": [{ +"duration": 1.0, "texture": ExtResource("1_ra45u") }, { "duration": 1.0, @@ -120,8 +205,16 @@ shape = SubResource("CircleShape2D_ra45u") position = Vector2(10, 0) scale = Vector2(0.2, 0.186) sprite_frames = SubResource("SpriteFrames_gxpsl") -animation = &"walk" +animation = &"hurt" autoplay = "walk" +frame = 11 +frame_progress = 0.9629 + +[node name="Area2D" type="Area2D" parent="CharacterBody2D"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D/Area2D"] +scale = Vector2(0.5, 0.5) +shape = SubResource("CircleShape2D_ra45u") [node name="ProgressBar" type="ProgressBar" parent="."] offset_left = -15.0 diff --git a/Game/Mobs/ork.tscn b/Game/Mobs/ork.tscn index a86f6fd..dcba724 100644 --- a/Game/Mobs/ork.tscn +++ b/Game/Mobs/ork.tscn @@ -1,31 +1,116 @@ -[gd_scene load_steps=26 format=3 uid="uid://dfwcvygt24m4f"] +[gd_scene load_steps=46 format=3 uid="uid://dfwcvygt24m4f"] [ext_resource type="Script" uid="uid://sh6qqbl8fdrr" path="res://Game/Mobs/enemy.gd" id="1_1ecd4"] +[ext_resource type="Texture2D" uid="uid://bg2x4wf0d68a1" path="res://Assets/Monsters/2/2_enemies_1_hurt_000.png" id="2_450p6"] [ext_resource type="Texture2D" uid="uid://dgwwy6rlst543" path="res://Assets/Monsters/2/2_enemies_1_walk_000.png" id="2_vrsho"] [ext_resource type="Texture2D" uid="uid://2whi44p3xj0p" path="res://Assets/Monsters/2/2_enemies_1_walk_001.png" id="3_3wctl"] +[ext_resource type="Texture2D" uid="uid://blvesiar76k1s" path="res://Assets/Monsters/2/2_enemies_1_hurt_001.png" id="3_ymjxh"] [ext_resource type="Texture2D" uid="uid://do3bo71hr0otn" path="res://Assets/Monsters/2/2_enemies_1_walk_002.png" id="4_lnbgl"] +[ext_resource type="Texture2D" uid="uid://cqb4vpg4f7ey8" path="res://Assets/Monsters/2/2_enemies_1_hurt_002.png" id="4_rwr1n"] [ext_resource type="Texture2D" uid="uid://ccdikiw6ql5m4" path="res://Assets/Monsters/2/2_enemies_1_walk_003.png" id="5_hast5"] +[ext_resource type="Texture2D" uid="uid://baa5iu66xe8nv" path="res://Assets/Monsters/2/2_enemies_1_hurt_003.png" id="5_umiig"] [ext_resource type="Texture2D" uid="uid://bx6buqbufrcwn" path="res://Assets/Monsters/2/2_enemies_1_walk_004.png" id="6_malst"] +[ext_resource type="Texture2D" uid="uid://bqcl7w4vb1fus" path="res://Assets/Monsters/2/2_enemies_1_hurt_004.png" id="6_t0l8c"] [ext_resource type="Texture2D" uid="uid://tqeds7vde35o" path="res://Assets/Monsters/2/2_enemies_1_walk_005.png" id="7_h1jsk"] +[ext_resource type="Texture2D" uid="uid://dcx8uiqjw3cij" path="res://Assets/Monsters/2/2_enemies_1_hurt_005.png" id="7_rdh0p"] [ext_resource type="Texture2D" uid="uid://bcuobi85ycc5t" path="res://Assets/Monsters/2/2_enemies_1_walk_006.png" id="8_1j5ux"] +[ext_resource type="Texture2D" uid="uid://6n4ofaqh3xfp" path="res://Assets/Monsters/2/2_enemies_1_hurt_006.png" id="8_yfxnw"] [ext_resource type="Texture2D" uid="uid://bcvweagua2fgd" path="res://Assets/Monsters/2/2_enemies_1_walk_007.png" id="9_j066x"] +[ext_resource type="Texture2D" uid="uid://65e0w7mcsuyy" path="res://Assets/Monsters/2/2_enemies_1_hurt_007.png" id="9_u8gdq"] +[ext_resource type="Texture2D" uid="uid://b7uh3ncd2sp2h" path="res://Assets/Monsters/2/2_enemies_1_hurt_008.png" id="10_0r7a3"] [ext_resource type="Texture2D" uid="uid://h38qu35ll5po" path="res://Assets/Monsters/2/2_enemies_1_walk_008.png" id="10_7pwe8"] [ext_resource type="Texture2D" uid="uid://b18spnchhjhk2" path="res://Assets/Monsters/2/2_enemies_1_walk_009.png" id="11_letfg"] +[ext_resource type="Texture2D" uid="uid://pvv5fpcak8m3" path="res://Assets/Monsters/2/2_enemies_1_hurt_009.png" id="11_oob1p"] +[ext_resource type="Texture2D" uid="uid://wkoem58y2hml" path="res://Assets/Monsters/2/2_enemies_1_hurt_010.png" id="12_ldnkt"] [ext_resource type="Texture2D" uid="uid://bqqts0duqrqnv" path="res://Assets/Monsters/2/2_enemies_1_walk_010.png" id="12_pkxkl"] [ext_resource type="Texture2D" uid="uid://bn7fjtj2ojqma" path="res://Assets/Monsters/2/2_enemies_1_walk_011.png" id="13_jsnbd"] +[ext_resource type="Texture2D" uid="uid://wde52ehdwnhs" path="res://Assets/Monsters/2/2_enemies_1_hurt_011.png" id="13_ni0xx"] [ext_resource type="Texture2D" uid="uid://s0wd5s61skeh" path="res://Assets/Monsters/2/2_enemies_1_walk_012.png" id="14_4pwwn"] +[ext_resource type="Texture2D" uid="uid://cxwql67fhw80" path="res://Assets/Monsters/2/2_enemies_1_hurt_012.png" id="14_cnft4"] +[ext_resource type="Texture2D" uid="uid://bp5dri7gswoi" path="res://Assets/Monsters/2/2_enemies_1_hurt_013.png" id="15_1cctj"] [ext_resource type="Texture2D" uid="uid://b5pm5r0a5dsx3" path="res://Assets/Monsters/2/2_enemies_1_walk_013.png" id="15_nf1fn"] +[ext_resource type="Texture2D" uid="uid://cu7450sqpxijg" path="res://Assets/Monsters/2/2_enemies_1_hurt_014.png" id="16_abd3f"] [ext_resource type="Texture2D" uid="uid://dltw4wtskgpo5" path="res://Assets/Monsters/2/2_enemies_1_walk_014.png" id="16_ttcjh"] [ext_resource type="Texture2D" uid="uid://bk83p2mqrp3ri" path="res://Assets/Monsters/2/2_enemies_1_walk_015.png" id="17_1652b"] +[ext_resource type="Texture2D" uid="uid://bhxce1b1p6fcn" path="res://Assets/Monsters/2/2_enemies_1_hurt_015.png" id="17_w0b4d"] +[ext_resource type="Texture2D" uid="uid://cqj33fmy0ex1h" path="res://Assets/Monsters/2/2_enemies_1_hurt_016.png" id="18_0nqu5"] [ext_resource type="Texture2D" uid="uid://yggxgmf8fa70" path="res://Assets/Monsters/2/2_enemies_1_walk_016.png" id="18_nj104"] [ext_resource type="Texture2D" uid="uid://wfiqtbte7iy8" path="res://Assets/Monsters/2/2_enemies_1_walk_017.png" id="19_7c2oo"] +[ext_resource type="Texture2D" uid="uid://bvhorh314bboj" path="res://Assets/Monsters/2/2_enemies_1_hurt_017.png" id="19_13wvc"] +[ext_resource type="Texture2D" uid="uid://drfs64yafymup" path="res://Assets/Monsters/2/2_enemies_1_hurt_018.png" id="20_k5gpm"] [ext_resource type="Texture2D" uid="uid://pkv6mxsmi8jm" path="res://Assets/Monsters/2/2_enemies_1_walk_018.png" id="20_kqdh1"] [ext_resource type="Texture2D" uid="uid://dp7xripl4r4o1" path="res://Assets/Monsters/2/2_enemies_1_walk_019.png" id="21_450p6"] +[ext_resource type="Texture2D" uid="uid://deseahlson0f7" path="res://Assets/Monsters/2/2_enemies_1_hurt_019.png" id="21_xh1xf"] [sub_resource type="SpriteFrames" id="SpriteFrames_h86ts"] animations = [{ "frames": [{ "duration": 1.0, +"texture": ExtResource("2_450p6") +}, { +"duration": 1.0, +"texture": ExtResource("3_ymjxh") +}, { +"duration": 1.0, +"texture": ExtResource("4_rwr1n") +}, { +"duration": 1.0, +"texture": ExtResource("5_umiig") +}, { +"duration": 1.0, +"texture": ExtResource("6_t0l8c") +}, { +"duration": 1.0, +"texture": ExtResource("7_rdh0p") +}, { +"duration": 1.0, +"texture": ExtResource("8_yfxnw") +}, { +"duration": 1.0, +"texture": ExtResource("9_u8gdq") +}, { +"duration": 1.0, +"texture": ExtResource("10_0r7a3") +}, { +"duration": 1.0, +"texture": ExtResource("11_oob1p") +}, { +"duration": 1.0, +"texture": ExtResource("12_ldnkt") +}, { +"duration": 1.0, +"texture": ExtResource("13_ni0xx") +}, { +"duration": 1.0, +"texture": ExtResource("14_cnft4") +}, { +"duration": 1.0, +"texture": ExtResource("15_1cctj") +}, { +"duration": 1.0, +"texture": ExtResource("16_abd3f") +}, { +"duration": 1.0, +"texture": ExtResource("17_w0b4d") +}, { +"duration": 1.0, +"texture": ExtResource("18_0nqu5") +}, { +"duration": 1.0, +"texture": ExtResource("19_13wvc") +}, { +"duration": 1.0, +"texture": ExtResource("20_k5gpm") +}, { +"duration": 1.0, +"texture": ExtResource("21_xh1xf") +}], +"loop": true, +"name": &"hurt", +"speed": 20.0 +}, { +"frames": [{ +"duration": 1.0, "texture": ExtResource("2_vrsho") }, { "duration": 1.0, @@ -86,7 +171,7 @@ animations = [{ "texture": ExtResource("21_450p6") }], "loop": true, -"name": &"default", +"name": &"walk", "speed": 20.0 }] @@ -115,8 +200,15 @@ script = ExtResource("1_1ecd4") position = Vector2(10, 0) scale = Vector2(0.18, 0.18) sprite_frames = SubResource("SpriteFrames_h86ts") -autoplay = "default" -frame_progress = 0.848759 +animation = &"hurt" +autoplay = "walk" +frame_progress = 0.748545 + +[node name="Area2D" type="Area2D" parent="CharacterBody2D"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D/Area2D"] +scale = Vector2(2, 2) +shape = SubResource("CircleShape2D_j0lf0") [node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] scale = Vector2(2, 2) diff --git a/Game/Traps/stick_trap.tscn b/Game/Traps/stick_trap.tscn new file mode 100644 index 0000000..c64b8fc --- /dev/null +++ b/Game/Traps/stick_trap.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=5 format=3 uid="uid://pqy8rrvjthgl"] + +[ext_resource type="Texture2D" uid="uid://4bah0c8unbl8" path="res://Assets/Traps/Sticks/Tile2_59.png" id="1_dnq4b"] +[ext_resource type="Script" uid="uid://3gn70ilm20tw" path="res://Game/Traps/traps.gd" id="1_metvu"] +[ext_resource type="Texture2D" uid="uid://l58s5yxh4f8n" path="res://Assets/Traps/Sticks/Tile2_60.png" id="2_metvu"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_m1bdk"] +radius = 32.0 + +[node name="StickTrap" type="Node2D"] +script = ExtResource("1_metvu") + +[node name="CharacterBody2D" type="CharacterBody2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="CharacterBody2D"] +position = Vector2(8, 0) +scale = Vector2(1.5, 1) +texture = ExtResource("1_dnq4b") +offset = Vector2(10, 0) + +[node name="Sprite2D2" type="Sprite2D" parent="CharacterBody2D"] +texture = ExtResource("2_metvu") +offset = Vector2(-10, 0) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] +position = Vector2(5, 0) +scale = Vector2(0.8, 0.8) +shape = SubResource("CircleShape2D_m1bdk") diff --git a/Game/Traps/traps.gd b/Game/Traps/traps.gd new file mode 100644 index 0000000..c238a5f --- /dev/null +++ b/Game/Traps/traps.gd @@ -0,0 +1,17 @@ +extends Node2D + +var follower = false + +func _ready() -> void: + follower = true + set_process_input(true) + +func _process(delta: float) -> void: + if follower: + position = get_viewport().get_mouse_position() + + +func _input(event): + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed: + if abs(position) <= get_viewport().get_mouse_position(): + follower = false diff --git a/Game/Traps/traps.gd.uid b/Game/Traps/traps.gd.uid new file mode 100644 index 0000000..10e1894 --- /dev/null +++ b/Game/Traps/traps.gd.uid @@ -0,0 +1 @@ +uid://3gn70ilm20tw diff --git a/Game/sidepanel.gd b/Game/sidepanel.gd index 7dee425..eaa5131 100644 --- a/Game/sidepanel.gd +++ b/Game/sidepanel.gd @@ -1,4 +1,17 @@ extends Panel +@onready var livelabel: Label = $HBoxContainer4/HBoxContainer3/Label +@onready var stickspawner: Button = $HBoxContainer4/HBoxContainer4/Button2 +const STICK_TRAP = preload("res://Game/Traps/stick_trap.tscn") + +func _ready() -> void: + stickspawner.connect("button_up", Spawn_Stick) + +func Update_Lives(lives) -> void: + livelabel.text = "Lives: " + str(lives) +func Spawn_Stick() -> void: + var stick = STICK_TRAP.instantiate() + stick.name = "StickTrap-" + str(randi()) + get_parent().add_child(stick) diff --git a/Game/sidepanel.tscn b/Game/sidepanel.tscn index c65cb1e..ee0ef3c 100644 --- a/Game/sidepanel.tscn +++ b/Game/sidepanel.tscn @@ -21,7 +21,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -theme_override_constants/separation = 120 +theme_override_constants/separation = 60 alignment = 1 [node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer4"] @@ -35,24 +35,49 @@ text = "Coins: " [node name="HBoxContainer2" type="HBoxContainer" parent="HBoxContainer4"] layout_mode = 2 -theme_override_constants/separation = 120 +theme_override_constants/separation = 30 alignment = 1 [node name="Button2" type="Button" parent="HBoxContainer4/HBoxContainer2"] custom_minimum_size = Vector2(120, 0) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 text = "Archer" [node name="Button3" type="Button" parent="HBoxContainer4/HBoxContainer2"] custom_minimum_size = Vector2(120, 0) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 text = "Wizard" [node name="Button4" type="Button" parent="HBoxContainer4/HBoxContainer2"] custom_minimum_size = Vector2(120, 0) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 text = "Mortar" +[node name="HBoxContainer4" type="HBoxContainer" parent="HBoxContainer4"] +layout_mode = 2 +theme_override_constants/separation = 30 +alignment = 1 + +[node name="Button2" type="Button" parent="HBoxContainer4/HBoxContainer4"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +text = "Sticks" + +[node name="Button3" type="Button" parent="HBoxContainer4/HBoxContainer4"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +text = "Mine" + [node name="HBoxContainer3" type="HBoxContainer" parent="HBoxContainer4"] layout_mode = 2 theme_override_constants/separation = 120