diff --git a/art/characters/Mavka/mavkha.png b/art/characters/Mavka/mavkha.png new file mode 100644 index 0000000..a606792 Binary files /dev/null and b/art/characters/Mavka/mavkha.png differ diff --git a/art/characters/Mavka/mavkha.png.import b/art/characters/Mavka/mavkha.png.import new file mode 100644 index 0000000..686cf9a --- /dev/null +++ b/art/characters/Mavka/mavkha.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bexymddkb6l0o" +path="res://.godot/imported/mavkha.png-ab393dd20d4b3f3a305dd600f518b5fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/characters/Mavka/mavkha.png" +dest_files=["res://.godot/imported/mavkha.png-ab393dd20d4b3f3a305dd600f518b5fe.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/prefabs/fight/fighters/enemy_mavkha_fighter.tscn b/prefabs/fight/fighters/enemy_mavkha_fighter.tscn new file mode 100644 index 0000000..98e524f --- /dev/null +++ b/prefabs/fight/fighters/enemy_mavkha_fighter.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=10 format=3 uid="uid://cr66tpdr5rma5"] + +[ext_resource type="Script" uid="uid://by88f32fou7lh" path="res://scripts/CSharp/Common/Fight/Fighter.cs" id="1_t6th8"] +[ext_resource type="Texture2D" uid="uid://bexymddkb6l0o" path="res://art/characters/Mavka/mavkha.png" id="2_shg7p"] +[ext_resource type="Texture2D" uid="uid://qlfwuakhe57t" path="res://art/ui/UI/attack_select_wheel.png" id="3_nkuei"] +[ext_resource type="Texture2D" uid="uid://bn56p0ytuo060" path="res://art/ui/UI/AttackButton.png" id="4_u3hw3"] +[ext_resource type="AudioStream" uid="uid://ya7ue6m52l6n" path="res://audio/sfx/Battle/Enemies/SFX_Slime_Hit_V2_03.wav" id="5_so2ks"] +[ext_resource type="AudioStream" uid="uid://bypmpi5gyo1sv" path="res://audio/sfx/Battle/Enemies/SFX_Slime_Hit_V2_06.wav" id="6_v175g"] +[ext_resource type="AudioStream" uid="uid://4i6lp6ot3xf5" path="res://audio/sfx/Battle/Enemies/SFX_Water_Attack_Slimes.wav" id="7_g7k7o"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_284vk"] +radius = 388.063 + +[sub_resource type="CircleShape2D" id="CircleShape2D_s74nc"] +radius = 173.44 + +[node name="EnemyMavkhaFighter" type="Node2D" node_paths=PackedStringArray("_attackButtons", "_targetButtons", "_targetMarker", "_healthText", "_visualSprite")] +script = ExtResource("1_t6th8") +name = "Mavkha" +maxHealth = 40 +attackStrength = 10 +_attackButtons = NodePath("FightButtons") +_targetButtons = NodePath("TargetButtons") +_targetMarker = NodePath("TargetButtons/TargetMarker") +_healthText = NodePath("HealthShow") +_visualSprite = NodePath("Visual") + +[node name="Visual" type="Node2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Visual"] +position = Vector2(3, -200) +scale = Vector2(0.5, 0.5) +texture = ExtResource("2_shg7p") +offset = Vector2(-8, -130) +region_enabled = true +region_rect = Rect2(816.677, 286.398, 1089.01, 1249.83) + +[node name="TargetButtons" type="Node2D" parent="."] +visible = false + +[node name="TargetMarker" type="Sprite2D" parent="TargetButtons"] +visible = false +z_index = 200 +position = Vector2(8, -270) +scale = Vector2(4.245, 4.245) +texture = ExtResource("3_nkuei") + +[node name="Area2D" type="Area2D" parent="TargetButtons"] +position = Vector2(3, -76) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="TargetButtons/Area2D"] +position = Vector2(-3, -207) +shape = SubResource("CircleShape2D_284vk") + +[node name="FightButtons" type="Node2D" parent="."] +visible = false +position = Vector2(3, -588) + +[node name="CircleBackground" type="Sprite2D" parent="FightButtons"] +z_index = 200 +scale = Vector2(4.245, 4.245) +texture = ExtResource("3_nkuei") + +[node name="AttackButton" type="Node2D" parent="FightButtons"] +position = Vector2(0, -536) + +[node name="ButtonBackground" type="Sprite2D" parent="FightButtons/AttackButton"] +z_index = 200 +scale = Vector2(2.48, 2.48) +texture = ExtResource("4_u3hw3") + +[node name="Area2D" type="Area2D" parent="FightButtons/AttackButton"] +collision_layer = 16 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="FightButtons/AttackButton/Area2D"] +shape = SubResource("CircleShape2D_s74nc") + +[node name="HealthShow" type="Label" parent="."] +z_index = 200 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -204.0 +offset_top = -731.0 +offset_right = 200.0 +offset_bottom = -585.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_font_sizes/font_size = 106 +text = "100/100" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HitAudio" type="AudioStreamPlayer" parent="."] +stream = ExtResource("5_so2ks") + +[node name="DieAudio" type="AudioStreamPlayer" parent="."] +stream = ExtResource("6_v175g") + +[node name="AttackAudio" type="AudioStreamPlayer" parent="."] +stream = ExtResource("7_g7k7o") + +[connection signal="Attacking" from="." to="AttackAudio" method="play" binds= [0.0]] +[connection signal="DamageTaken" from="." to="HitAudio" method="play" binds= [0.0]] +[connection signal="Dying" from="." to="DieAudio" method="play" binds= [0.0]] +[connection signal="input_event" from="TargetButtons/Area2D" to="." method="TargetMouseEvent"] +[connection signal="mouse_entered" from="TargetButtons/Area2D" to="." method="StartHoverTarget"] +[connection signal="mouse_exited" from="TargetButtons/Area2D" to="." method="EndHoverTarget"] +[connection signal="input_event" from="FightButtons/AttackButton/Area2D" to="." method="AttackMouseEvent"] diff --git a/scenes/Babushka_scene_forest_fight_1_2d.tscn b/scenes/Babushka_scene_forest_fight_1_2d.tscn index 0b75001..82045e3 100644 --- a/scenes/Babushka_scene_forest_fight_1_2d.tscn +++ b/scenes/Babushka_scene_forest_fight_1_2d.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=68 format=3 uid="uid://dfyb4dckoltpw"] +[gd_scene load_steps=69 format=3 uid="uid://dfyb4dckoltpw"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="1_vl6d5"] [ext_resource type="PackedScene" uid="uid://bm21nqepnwaik" path="res://scenes/Babushka_scene_indoor_common_room.tscn" id="2_5evxf"] @@ -29,6 +29,7 @@ [ext_resource type="PackedScene" uid="uid://hk8ahyp6dgl6" path="res://prefabs/fight/fight_base_scene.tscn" id="27_55b52"] [ext_resource type="PackedScene" uid="uid://bp64p6y72j71w" path="res://prefabs/fight/fighters/enemy_blob_fighter.tscn" id="27_hfhye"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="29_3jjxs"] +[ext_resource type="PackedScene" uid="uid://cr66tpdr5rma5" path="res://prefabs/fight/fighters/enemy_mavkha_fighter.tscn" id="29_hfhye"] [ext_resource type="Resource" uid="uid://dlcmqfjvgphqu" path="res://resources/items/rake.tres" id="30_l10vl"] [ext_resource type="Resource" uid="uid://cndd64batns31" path="res://resources/items/wateringcan.tres" id="31_c2gvt"] [ext_resource type="Texture2D" uid="uid://dyueumlr5ltvr" path="res://art/nature/baum märz 2025/megaeichel megaast.png" id="37_gg38r"] @@ -763,46 +764,91 @@ texture = SubResource("NoiseTexture2D_e5alv") [node name="Fence" type="Node2D" parent="."] -[node name="Fight" type="Node2D" parent="."] +[node name="Fight1" type="Node2D" parent="."] -[node name="FightStarter" type="Node2D" parent="Fight" node_paths=PackedStringArray("_fightInstance")] +[node name="FightStarter" type="Node2D" parent="Fight1" node_paths=PackedStringArray("_fightInstance")] +position = Vector2(-1669, 72) script = ExtResource("26_gg38r") enemies = Array[PackedScene]([null, ExtResource("27_hfhye"), ExtResource("27_hfhye")]) _fightInstance = NodePath("../FightBaseScene") -[node name="TriggerArea" type="Area2D" parent="Fight/FightStarter"] -position = Vector2(8681, 2487) +[node name="TriggerArea" type="Area2D" parent="Fight1/FightStarter"] +position = Vector2(10962, 2487) collision_mask = 4 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Fight/FightStarter/TriggerArea"] -position = Vector2(2425.75, -4.75) +[node name="CollisionShape2D" type="CollisionShape2D" parent="Fight1/FightStarter/TriggerArea"] +position = Vector2(90, -1) shape = SubResource("RectangleShape2D_hfhye") -[node name="FightBaseScene" parent="Fight" instance=ExtResource("27_55b52")] -position = Vector2(11249, 2494) +[node name="FightBaseScene" parent="Fight1" instance=ExtResource("27_55b52")] +position = Vector2(9827, 2566) -[node name="FriendlyPositions" parent="Fight/FightBaseScene" index="0"] +[node name="FriendlyPositions" parent="Fight1/FightBaseScene" index="0"] position = Vector2(-1048, 3) -[node name="FriendPos1" parent="Fight/FightBaseScene/FriendlyPositions" index="0"] +[node name="FriendPos1" parent="Fight1/FightBaseScene/FriendlyPositions" index="0"] position = Vector2(0, -464) -[node name="FriendPos2" parent="Fight/FightBaseScene/FriendlyPositions" index="1"] +[node name="FriendPos2" parent="Fight1/FightBaseScene/FriendlyPositions" index="1"] position = Vector2(69, 9) -[node name="FriendPos3" parent="Fight/FightBaseScene/FriendlyPositions" index="2"] +[node name="FriendPos3" parent="Fight1/FightBaseScene/FriendlyPositions" index="2"] position = Vector2(0, 525) -[node name="EnemyPositions" parent="Fight/FightBaseScene" index="1"] +[node name="EnemyPositions" parent="Fight1/FightBaseScene" index="1"] position = Vector2(1162, -12) -[node name="EnemyPos1" parent="Fight/FightBaseScene/EnemyPositions" index="0"] +[node name="EnemyPos1" parent="Fight1/FightBaseScene/EnemyPositions" index="0"] position = Vector2(-18, -482) -[node name="EnemyPos2" parent="Fight/FightBaseScene/EnemyPositions" index="1"] +[node name="EnemyPos2" parent="Fight1/FightBaseScene/EnemyPositions" index="1"] position = Vector2(-133, 19) -[node name="EnemyPos3" parent="Fight/FightBaseScene/EnemyPositions" index="2"] +[node name="EnemyPos3" parent="Fight1/FightBaseScene/EnemyPositions" index="2"] +position = Vector2(32, 562) + +[node name="Fight2" type="Node2D" parent="."] +position = Vector2(3706, 0) + +[node name="FightStarter" type="Node2D" parent="Fight2" node_paths=PackedStringArray("_fightInstance")] +position = Vector2(-1669, 72) +script = ExtResource("26_gg38r") +enemies = Array[PackedScene]([ExtResource("27_hfhye"), ExtResource("29_hfhye"), ExtResource("27_hfhye")]) +_fightInstance = NodePath("../FightBaseScene") + +[node name="TriggerArea" type="Area2D" parent="Fight2/FightStarter"] +position = Vector2(10962, 2487) +collision_mask = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Fight2/FightStarter/TriggerArea"] +position = Vector2(90, -1) +shape = SubResource("RectangleShape2D_hfhye") + +[node name="FightBaseScene" parent="Fight2" instance=ExtResource("27_55b52")] +position = Vector2(9827, 2566) + +[node name="FriendlyPositions" parent="Fight2/FightBaseScene" index="0"] +position = Vector2(-1048, 3) + +[node name="FriendPos1" parent="Fight2/FightBaseScene/FriendlyPositions" index="0"] +position = Vector2(0, -464) + +[node name="FriendPos2" parent="Fight2/FightBaseScene/FriendlyPositions" index="1"] +position = Vector2(69, 9) + +[node name="FriendPos3" parent="Fight2/FightBaseScene/FriendlyPositions" index="2"] +position = Vector2(0, 525) + +[node name="EnemyPositions" parent="Fight2/FightBaseScene" index="1"] +position = Vector2(1162, -12) + +[node name="EnemyPos1" parent="Fight2/FightBaseScene/EnemyPositions" index="0"] +position = Vector2(-18, -482) + +[node name="EnemyPos2" parent="Fight2/FightBaseScene/EnemyPositions" index="1"] +position = Vector2(-133, 19) + +[node name="EnemyPos3" parent="Fight2/FightBaseScene/EnemyPositions" index="2"] position = Vector2(32, 562) [node name="YSorted" type="Node2D" parent="."] @@ -2007,7 +2053,7 @@ region_rect = Rect2(1483.92, 1280.2, 1139.55, 367.598) [node name="BorderCollisionBody" type="StaticBody2D" parent="YSorted/ForestVisuals"] [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="YSorted/ForestVisuals/BorderCollisionBody"] -polygon = PackedVector2Array(5543, 1787, 8663, 1938, 15008, 1914, 15107, 3572, 14122, 3569, 12930, 3737, 11502, 3599, 9887, 3658, 7936, 3924, 7712, 2967, 4629, 2917, 3880, 3351, 3891, 3646, 3919, 4843, 7970, 4459, 16532, 4289, 16365, 821, 1765, 1202, 1437, 4559, 3142, 4814, 3154, 4225, 2749, 3323, 2196, 2523, 2379, 1787) +polygon = PackedVector2Array(5543, 1787, 8663, 1938, 15008, 1914, 15121, 2882, 15601, 3074, 15636, 3574, 14122, 3569, 12930, 3737, 11502, 3599, 9887, 3658, 7936, 3924, 7712, 2967, 4629, 2917, 3880, 3351, 3891, 3646, 3919, 4843, 7970, 4459, 16532, 4289, 16365, 821, 1765, 1202, 1437, 4559, 3142, 4814, 3154, 4225, 2749, 3323, 2196, 2523, 2379, 1787) [node name="Blocker" type="Node2D" parent="YSorted"] @@ -2129,15 +2175,21 @@ max_distance = 2e+07 playback_type = 2 script = ExtResource("56_bjj0f") -[connection signal="body_entered" from="Fight/FightStarter/TriggerArea" to="Fight/FightStarter" method="Start"] -[connection signal="FightEnded" from="Fight/FightBaseScene" to="YSorted/Vesna" method="show"] -[connection signal="FightEnded" from="Fight/FightBaseScene" to="YSorted/Vesna" method="EnableMovement"] -[connection signal="FightStarted" from="Fight/FightBaseScene" to="YSorted/Vesna" method="hide"] -[connection signal="FightStarted" from="Fight/FightBaseScene" to="YSorted/Vesna" method="DisableMovement"] +[connection signal="body_entered" from="Fight1/FightStarter/TriggerArea" to="Fight1/FightStarter" method="Start"] +[connection signal="FightEnded" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="show"] +[connection signal="FightEnded" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="EnableMovement"] +[connection signal="FightStarted" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="hide"] +[connection signal="FightStarted" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="DisableMovement"] +[connection signal="body_entered" from="Fight2/FightStarter/TriggerArea" to="Fight2/FightStarter" method="Start"] +[connection signal="FightEnded" from="Fight2/FightBaseScene" to="YSorted/Vesna" method="show"] +[connection signal="FightEnded" from="Fight2/FightBaseScene" to="YSorted/Vesna" method="EnableMovement"] +[connection signal="FightStarted" from="Fight2/FightBaseScene" to="YSorted/Vesna" method="hide"] +[connection signal="FightStarted" from="Fight2/FightBaseScene" to="YSorted/Vesna" method="DisableMovement"] [connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"] [connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"] [connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"] -[editable path="Fight/FightBaseScene"] +[editable path="Fight1/FightBaseScene"] +[editable path="Fight2/FightBaseScene"] [editable path="YSorted/Vesna"] [editable path="CanvasLayer"]