From 68408aa1fb37c111cf4d6b363319e202fc0ff8da Mon Sep 17 00:00:00 2001 From: nc543 Date: Sun, 19 May 2024 18:38:27 -0400 Subject: [PATCH] More spells --- Resources/Spellbooks/oldBook.tres | 4 +- Resources/Spells/duckSwarm.tres | 25 +++ Resources/Spells/lightningBolt.tres | 25 --- Resources/Spells/stoneWall.tres | 25 +++ Scenes/Animations/duckSwarmAnim.tscn | 29 +++ Scenes/Animations/stoneWallAnim.tscn | 231 ++++++++++++++++++++++++ Scenes/UI/mainMenu.tscn | 3 +- Scenes/arena.tscn | 8 +- Scripts/Animations/duckSwarmAnim.gd | 3 + Scripts/Animations/stoneWallAnim.gd | 2 + Scripts/combatant.gd | 5 +- Sprites/Misc/Duck/ducky-idle.png | Bin 0 -> 7714 bytes Sprites/Misc/Duck/ducky-idle.png.import | 34 ++++ Sprites/Misc/Duck/ducky-walk.png | Bin 0 -> 13015 bytes Sprites/Misc/Duck/ducky-walk.png.import | 34 ++++ Themes/default.tres | 31 ++-- 16 files changed, 410 insertions(+), 49 deletions(-) create mode 100644 Resources/Spells/duckSwarm.tres delete mode 100644 Resources/Spells/lightningBolt.tres create mode 100644 Resources/Spells/stoneWall.tres create mode 100644 Scenes/Animations/duckSwarmAnim.tscn create mode 100644 Scenes/Animations/stoneWallAnim.tscn create mode 100644 Scripts/Animations/duckSwarmAnim.gd create mode 100644 Scripts/Animations/stoneWallAnim.gd create mode 100644 Sprites/Misc/Duck/ducky-idle.png create mode 100644 Sprites/Misc/Duck/ducky-idle.png.import create mode 100644 Sprites/Misc/Duck/ducky-walk.png create mode 100644 Sprites/Misc/Duck/ducky-walk.png.import diff --git a/Resources/Spellbooks/oldBook.tres b/Resources/Spellbooks/oldBook.tres index fc9ae5d..4f825d7 100644 --- a/Resources/Spellbooks/oldBook.tres +++ b/Resources/Spellbooks/oldBook.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="Spellbook" load_steps=6 format=3 uid="uid://bxtiv2esuer8v"] [ext_resource type="Script" path="res://Resources/spellbook.gd" id="1_t8h8m"] -[ext_resource type="Resource" uid="uid://1xbik4qndtkh" path="res://Resources/Spells/firebolt.tres" id="2_ln222"] +[ext_resource type="Resource" uid="uid://7rne03vmayep" path="res://Resources/Spells/stoneWall.tres" id="2_5c5iu"] [ext_resource type="Resource" uid="uid://dl6nv6lp460n3" path="res://Resources/Spells/rockThrow.tres" id="3_ocgmh"] [ext_resource type="Resource" uid="uid://bmpu6k55bckdv" path="res://Resources/Spells/fireball.tres" id="4_kv0hs"] [ext_resource type="Resource" uid="uid://c6mwbnutxm3vb" path="res://Resources/Spells/icyWind.tres" id="5_eymrm"] @@ -10,7 +10,7 @@ script = ExtResource("1_t8h8m") name = "Old Book" description = "An old spellbook you found on the side of the road" -spells = Array[Resource("res://Resources/spell.gd")]([ExtResource("2_ln222"), ExtResource("3_ocgmh"), ExtResource("4_kv0hs"), ExtResource("5_eymrm")]) +spells = Array[Resource("res://Resources/spell.gd")]([ExtResource("2_5c5iu"), ExtResource("3_ocgmh"), ExtResource("4_kv0hs"), ExtResource("5_eymrm")]) damageMod = 1.0 defenseMod = 1.0 element = 0 diff --git a/Resources/Spells/duckSwarm.tres b/Resources/Spells/duckSwarm.tres new file mode 100644 index 0000000..94798c8 --- /dev/null +++ b/Resources/Spells/duckSwarm.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="Spell" load_steps=3 format=3 uid="uid://bhihoutcyqxby"] + +[ext_resource type="Texture2D" uid="uid://c66fwkoxxenh5" path="res://Sprites/Spells/Ice & Fire Spells Pack by Captainskeleto/Ice Spells by Captainskeleto/Ice Spells/Ice Spells9.png" id="1_34anb"] +[ext_resource type="Script" path="res://Resources/spell.gd" id="1_ikmq5"] + +[resource] +script = ExtResource("1_ikmq5") +icon = ExtResource("1_34anb") +name = "Duck Swarm" +description = "Duck" +animation = "" +damage = 15.0 +backfireStrength = 9.0 +castCombo = Array[String](["up", "down", "up", "down", "up", "down", "up", "down", "up", "down", "right", "right"]) +element = 0 +stunning = true +timeout = 10.0 +cooldown = 30.0 +blockStrength = { +0: 0.0, +1: 0.25, +2: 0.1, +3: 0.0, +4: 0.25 +} diff --git a/Resources/Spells/lightningBolt.tres b/Resources/Spells/lightningBolt.tres deleted file mode 100644 index fe612e3..0000000 --- a/Resources/Spells/lightningBolt.tres +++ /dev/null @@ -1,25 +0,0 @@ -[gd_resource type="Resource" script_class="Spell" load_steps=3 format=3 uid="uid://b1c2yi3rk1rhw"] - -[ext_resource type="Script" path="res://Resources/spell.gd" id="1_7p6oj"] -[ext_resource type="Texture2D" uid="uid://cthn7tp1s1aoc" path="res://Sprites/Spells/Ice & Fire Spells Pack by Captainskeleto/Ice Spells by Captainskeleto/Ice Spells/Ice Spells80.png" id="1_lo7uk"] - -[resource] -script = ExtResource("1_7p6oj") -icon = ExtResource("1_lo7uk") -name = "Lightning Bolt" -description = "A bolt of lightning" -animation = "" -damage = 10.0 -backfireStrength = 8.0 -castCombo = Array[String](["left", "up", "right", "down", "left", "up", "right", "down", "up", "down"]) -element = 1 -stunning = true -timeout = 4.0 -cooldown = 10.0 -blockStrength = { -0: 1.0, -1: 1.0, -2: 1.0, -3: 1.0, -4: 1.0 -} diff --git a/Resources/Spells/stoneWall.tres b/Resources/Spells/stoneWall.tres new file mode 100644 index 0000000..d8b76a7 --- /dev/null +++ b/Resources/Spells/stoneWall.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="Spell" load_steps=3 format=3 uid="uid://7rne03vmayep"] + +[ext_resource type="Script" path="res://Resources/spell.gd" id="1_tcejn"] +[ext_resource type="Texture2D" uid="uid://cq7v8s418cgqx" path="res://Sprites/Spells/Stone Spells Pack by Captainskeleto/Stone Spells/Stone Spells66.png" id="1_y0baf"] + +[resource] +script = ExtResource("1_tcejn") +icon = ExtResource("1_y0baf") +name = "Stone Wall" +description = "Raise a protective wall of stone, shielding you from all attacks" +animation = "res://Scenes/Animations/stoneWallAnim.tscn" +damage = 0.0 +backfireStrength = 1.0 +castCombo = Array[String](["down", "down", "left", "right", "up", "up", "up", "up"]) +element = 4 +stunning = false +timeout = 10.0 +cooldown = 10.0 +blockStrength = { +0: 0.0, +1: 0.0, +2: 0.0, +3: 0.0, +4: 0.0 +} diff --git a/Scenes/Animations/duckSwarmAnim.tscn b/Scenes/Animations/duckSwarmAnim.tscn new file mode 100644 index 0000000..51b6b66 --- /dev/null +++ b/Scenes/Animations/duckSwarmAnim.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=3 uid="uid://nwosguak0uag"] + +[ext_resource type="Script" path="res://Scripts/Animations/duckSwarmAnim.gd" id="1_rrxxq"] +[ext_resource type="Texture2D" uid="uid://bxrd726qic3ml" path="res://Sprites/Misc/Duck/ducky-idle.png" id="2_vqvn8"] + +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_u2jbx"] +particles_animation = true +particles_anim_h_frames = 2 +particles_anim_v_frames = 1 +particles_anim_loop = true + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_w5nuv"] +particle_flag_disable_z = true +gravity = Vector3(0, 0, 0) +anim_speed_min = 2.0 +anim_speed_max = 2.0 + +[node name="duckSwarmAnim" type="Node2D"] +script = ExtResource("1_rrxxq") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] + +[node name="GPUParticles2D" type="GPUParticles2D" parent="."] +material = SubResource("CanvasItemMaterial_u2jbx") +amount = 2 +process_material = SubResource("ParticleProcessMaterial_w5nuv") +texture = ExtResource("2_vqvn8") + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="animFinished"] diff --git a/Scenes/Animations/stoneWallAnim.tscn b/Scenes/Animations/stoneWallAnim.tscn new file mode 100644 index 0000000..03f0f5c --- /dev/null +++ b/Scenes/Animations/stoneWallAnim.tscn @@ -0,0 +1,231 @@ +[gd_scene load_steps=14 format=3 uid="uid://bowbww8k1myq5"] + +[ext_resource type="Script" path="res://Scripts/Animations/stoneWallAnim.gd" id="1_bx8pf"] +[ext_resource type="Texture2D" uid="uid://dwsd0hggrxbdq" path="res://Sprites/Animations/Rock Pack/Rocks 64x64 by Captainskeleto.png" id="2_1m76l"] + +[sub_resource type="Animation" id="Animation_afgaf"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(373, 804)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:region_rect") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Rect2(0, 0, 48, 0)] +} + +[sub_resource type="Animation" id="Animation_tjhpl"] +resource_name = "attackSegment0" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(475, 402)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.01), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:region_rect") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 0), Rect2(0, 0, 48, 8)] +} + +[sub_resource type="Animation" id="Animation_m8esk"] +resource_name = "attackSegment1" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 8), Rect2(0, 0, 48, 16)] +} + +[sub_resource type="Animation" id="Animation_b22j1"] +resource_name = "attackSegment2" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 16), Rect2(0, 0, 48, 24)] +} + +[sub_resource type="Animation" id="Animation_004hx"] +resource_name = "attackSegment3" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 24), Rect2(0, 0, 48, 32)] +} + +[sub_resource type="Animation" id="Animation_gemit"] +resource_name = "attackSegment4" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 32), Rect2(0, 0, 48, 40)] +} + +[sub_resource type="Animation" id="Animation_2enn3"] +resource_name = "attackSegment5" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 40), Rect2(0, 0, 48, 48)] +} + +[sub_resource type="Animation" id="Animation_u1mhx"] +resource_name = "attackSegment6" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 48), Rect2(0, 0, 48, 56)] +} + +[sub_resource type="Animation" id="Animation_sgl87"] +resource_name = "attackSegment7" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Rect2(0, 0, 48, 56), Rect2(0, 0, 48, 64)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_7ddps"] +_data = { +"RESET": SubResource("Animation_afgaf"), +"attackSegment0": SubResource("Animation_tjhpl"), +"attackSegment1": SubResource("Animation_m8esk"), +"attackSegment2": SubResource("Animation_b22j1"), +"attackSegment3": SubResource("Animation_004hx"), +"attackSegment4": SubResource("Animation_gemit"), +"attackSegment5": SubResource("Animation_2enn3"), +"attackSegment6": SubResource("Animation_u1mhx"), +"attackSegment7": SubResource("Animation_sgl87") +} + +[sub_resource type="AtlasTexture" id="AtlasTexture_filyo"] +atlas = ExtResource("2_1m76l") +region = Rect2(267, 128, 48, 64) + +[node name="stoneWallAnim" type="Node2D"] +script = ExtResource("1_bx8pf") +finalIndex = 8 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_7ddps") +} + +[node name="Sprite2D" type="Sprite2D" parent="."] +visible = false +position = Vector2(373, 804) +scale = Vector2(5, 5) +texture = SubResource("AtlasTexture_filyo") +region_enabled = true +region_rect = Rect2(0, 0, 48, 0) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="animFinished"] diff --git a/Scenes/UI/mainMenu.tscn b/Scenes/UI/mainMenu.tscn index 9f759d8..09c75cf 100644 --- a/Scenes/UI/mainMenu.tscn +++ b/Scenes/UI/mainMenu.tscn @@ -172,7 +172,6 @@ expand_mode = 2 stretch_mode = 6 [node name="TitleScreen" type="Control" parent="."] -visible = false layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -428,6 +427,7 @@ process_material = SubResource("ParticleProcessMaterial_y8xc4") size = Vector3(10, 10, 0.1) [node name="Settings" type="Control" parent="."] +visible = false layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -472,7 +472,6 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("1_wybs8") follow_focus = true -scroll_vertical = 131 horizontal_scroll_mode = 0 [node name="GridContainer" type="GridContainer" parent="Settings/NinePatchRect/ScrollContainer"] diff --git a/Scenes/arena.tscn b/Scenes/arena.tscn index 9a34a1e..cfdcb4b 100644 --- a/Scenes/arena.tscn +++ b/Scenes/arena.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://fgo2hd37towj"] +[gd_scene load_steps=9 format=3 uid="uid://fgo2hd37towj"] [ext_resource type="PackedScene" uid="uid://nckxh4vysmvv" path="res://Scenes/player_controller.tscn" id="2_ud5et"] [ext_resource type="PackedScene" uid="uid://c8wwq1hoj4sd5" path="res://Scenes/Characters/wizard.tscn" id="3_arqpv"] @@ -7,6 +7,7 @@ [ext_resource type="PackedScene" uid="uid://dbhep5cgrqipa" path="res://Scenes/UI/castIndicator.tscn" id="6_hj5b3"] [ext_resource type="Texture2D" uid="uid://b3dcdubvwsxqb" path="res://Sprites/Backgrounds/Battleground2/Bright/Battleground2.png" id="7_ux7s3"] [ext_resource type="PackedScene" uid="uid://cijs8fxylhamd" path="res://Scenes/UI/healthBar.tscn" id="8_b87c8"] +[ext_resource type="PackedScene" uid="uid://bowbww8k1myq5" path="res://Scenes/Animations/stoneWallAnim.tscn" id="8_bxa2l"] [node name="Arena" type="Node2D"] @@ -58,3 +59,8 @@ offset_left = 1177.0 offset_top = 204.5 offset_right = 1177.0 offset_bottom = 204.5 + +[node name="stoneWallAnim" parent="." instance=ExtResource("8_bxa2l")] +position = Vector2(81, -130) + +[editable path="stoneWallAnim"] diff --git a/Scripts/Animations/duckSwarmAnim.gd b/Scripts/Animations/duckSwarmAnim.gd new file mode 100644 index 0000000..a4c2541 --- /dev/null +++ b/Scripts/Animations/duckSwarmAnim.gd @@ -0,0 +1,3 @@ +extends AnimationBase + + diff --git a/Scripts/Animations/stoneWallAnim.gd b/Scripts/Animations/stoneWallAnim.gd new file mode 100644 index 0000000..c77a7c2 --- /dev/null +++ b/Scripts/Animations/stoneWallAnim.gd @@ -0,0 +1,2 @@ +extends AnimationBase + diff --git a/Scripts/combatant.gd b/Scripts/combatant.gd index 9087a08..dc95324 100644 --- a/Scripts/combatant.gd +++ b/Scripts/combatant.gd @@ -62,7 +62,8 @@ func cast() -> void: Data.Difficulty.EASY: spellIndex = randi_range(0, spellbook.spells.size() - 1) Data.Difficulty.NORMAL: - spellIndex = randi_range(0, spellbook.spells.size() - 1) + #spellIndex = randi_range(0, spellbook.spells.size() - 1) + spellIndex = 0 Data.Difficulty.HARD: spellIndex = randi_range(0, spellbook.spells.size() - 1) Data.Difficulty.GAMER: @@ -186,7 +187,7 @@ func animationFinished() -> void: renderer.play("idle") func finalizeSpell(finish: Spell) -> void: - defending.erase(spell) + defending.erase(finish) if (player): data.opponent.alterHealth(-finish.damage, finish.stunning, finish.element) else: diff --git a/Sprites/Misc/Duck/ducky-idle.png b/Sprites/Misc/Duck/ducky-idle.png new file mode 100644 index 0000000000000000000000000000000000000000..47cbdac1958026a8e93a18be8c7c49abb87adfef GIT binary patch literal 7714 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 literal 0 HcmV?d00001 diff --git a/Sprites/Misc/Duck/ducky-idle.png.import b/Sprites/Misc/Duck/ducky-idle.png.import new file mode 100644 index 0000000..6d76b1a --- /dev/null +++ b/Sprites/Misc/Duck/ducky-idle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxrd726qic3ml" +path="res://.godot/imported/ducky-idle.png-3e03b94bea3555ba7eb5081105c24cf8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Misc/Duck/ducky-idle.png" +dest_files=["res://.godot/imported/ducky-idle.png-3e03b94bea3555ba7eb5081105c24cf8.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/Sprites/Misc/Duck/ducky-walk.png b/Sprites/Misc/Duck/ducky-walk.png new file mode 100644 index 0000000000000000000000000000000000000000..2fefe1d035c3ae02281cb705c5981b4747fdb66b GIT binary patch literal 13015 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