diff --git a/Audio/FrostWaltz.ogg b/Audio/FrostWaltz.ogg new file mode 100644 index 00000000..2e4a65b4 Binary files /dev/null and b/Audio/FrostWaltz.ogg differ diff --git a/Audio/FrostWaltz.ogg.import b/Audio/FrostWaltz.ogg.import new file mode 100644 index 00000000..fac077e0 --- /dev/null +++ b/Audio/FrostWaltz.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cqqek08at2dln" +path="res://.godot/imported/FrostWaltz.ogg-ac1d837e419d8005c75f8f58778c7de5.oggvorbisstr" + +[deps] + +source_file="res://Audio/FrostWaltz.ogg" +dest_files=["res://.godot/imported/FrostWaltz.ogg-ac1d837e419d8005c75f8f58778c7de5.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/Audio/songMaps/FrostWaltz.tres b/Audio/songMaps/FrostWaltz.tres new file mode 100644 index 00000000..6562d14b --- /dev/null +++ b/Audio/songMaps/FrostWaltz.tres @@ -0,0 +1,101 @@ +[gd_resource type="Resource" load_steps=21 format=3 uid="uid://cv2l8vevlixlj"] + +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8s5n5"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_ipsne"] + +[sub_resource type="Resource" id="Resource_dwqep"] +script = ExtResource("1_8s5n5") +Beat = 7.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ukqut"] +script = ExtResource("1_8s5n5") +Beat = 9.0 +Length = 1.0 + +[sub_resource type="Resource" id="Resource_x1mw3"] +script = ExtResource("1_8s5n5") +Beat = 12.0 +Length = 1.0 + +[sub_resource type="Resource" id="Resource_54umo"] +script = ExtResource("1_8s5n5") +Beat = 15.0 +Length = 1.0 + +[sub_resource type="Resource" id="Resource_o0hqd"] +script = ExtResource("1_8s5n5") +Beat = 18.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_8s5n5"] +script = ExtResource("1_8s5n5") +Beat = 3.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_bsuy3"] +script = ExtResource("1_8s5n5") +Beat = 6.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_828xi"] +script = ExtResource("1_8s5n5") +Beat = 1.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_gfy4r"] +script = ExtResource("1_8s5n5") +Beat = 7.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_716y2"] +script = ExtResource("1_8s5n5") +Beat = 11.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_6sju3"] +script = ExtResource("1_8s5n5") +Beat = 17.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_h8r3u"] +script = ExtResource("1_8s5n5") +Beat = 6.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_3skly"] +script = ExtResource("1_8s5n5") +Beat = 15.0 +Length = 1.0 + +[sub_resource type="Resource" id="Resource_fe74b"] +script = ExtResource("1_8s5n5") +Beat = 18.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_1d04x"] +script = ExtResource("1_8s5n5") +Beat = 3.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ffi45"] +script = ExtResource("1_8s5n5") +Beat = 9.0 +Length = 1.0 + +[sub_resource type="Resource" id="Resource_3tfr0"] +script = ExtResource("1_8s5n5") +Beat = 12.0 +Length = 1.0 + +[sub_resource type="Resource" id="Resource_ipsne"] +script = ExtResource("1_8s5n5") +Beat = 1.0 +Length = 0.0 + +[resource] +script = ExtResource("2_ipsne") +UpLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_ffi45"), SubResource("Resource_3tfr0"), SubResource("Resource_ipsne")]) +DownLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_dwqep"), SubResource("Resource_ukqut"), SubResource("Resource_x1mw3"), SubResource("Resource_54umo"), SubResource("Resource_o0hqd"), SubResource("Resource_8s5n5"), SubResource("Resource_bsuy3")]) +LeftLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_828xi"), SubResource("Resource_gfy4r"), SubResource("Resource_716y2"), SubResource("Resource_6sju3"), SubResource("Resource_h8r3u")]) +RightLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_3skly"), SubResource("Resource_fe74b"), SubResource("Resource_1d04x")]) diff --git a/Classes/MapAreas/MapLevels.cs b/Classes/MapAreas/MapLevels.cs index 501e776c..83a4ac3e 100644 --- a/Classes/MapAreas/MapLevels.cs +++ b/Classes/MapAreas/MapLevels.cs @@ -125,7 +125,7 @@ private MapLevels( private static readonly MapLevels[] PresetLevels = new[] { new MapLevels(0, TutorialMapConfig, [4], [0], [5], [], 1), - new MapLevels(1, FirstMapConfig, [1, 2, 11, 12], [3, 13], [0], [], 2), + new MapLevels(1, FirstMapConfig, [1, 2, 11, 12, 15], [3, 13], [0], [], 2), new MapLevels( 2, CityMapConfig, diff --git a/Classes/Notes/Assets/Note_LWS.png b/Classes/Notes/Assets/Note_LWS.png new file mode 100644 index 00000000..66de061d Binary files /dev/null and b/Classes/Notes/Assets/Note_LWS.png differ diff --git a/Classes/Notes/Assets/Note_LWS.png.import b/Classes/Notes/Assets/Note_LWS.png.import new file mode 100644 index 00000000..65ac0259 --- /dev/null +++ b/Classes/Notes/Assets/Note_LWS.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8f1e7sld42dm" +path="res://.godot/imported/Note_LWS.png-99644fe1956962c91597c9de6bb97929.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Notes/Assets/Note_LWS.png" +dest_files=["res://.godot/imported/Note_LWS.png-99644fe1956962c91597c9de6bb97929.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/Globals/Scribe.cs b/Globals/Scribe.cs index 1c64f8f9..e0d284b9 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -218,6 +218,19 @@ public partial class Scribe : Node director.AddStatus(Targetting.Player, StatusEffect.Poison, amt); } ), + new Note( + 16, + "LWS", + GD.Load("res://Classes/Notes/Assets/Note_LWS.png"), + 1, + (director, note, timing) => + { + int dmg = (3 - (int)timing) * note.GetBaseVal() + (TimeKeeper.LastBeat.Loop / 2); + if (timing == Timing.Perfect) + dmg = 0; + director.DealDamage(Targetting.Player, dmg, note.Owner); + } + ), }; public static readonly RelicTemplate[] RelicDictionary = new[] @@ -738,6 +751,18 @@ e is BattleDirector.Harbinger.OnDamageInstanceArgs dmgArgs "Audio/songMaps/KeythuluSong.tres", [P_Keythulu.LoadPath] ), + new SongTemplate( // 15 + new SongData + { + Bpm = 99, + SongLength = -1, + NumLoops = 5, + }, + name: "LWS", + audioLocation: "Audio/FrostWaltz.ogg", + songMapLocation: "Audio/songMaps/FrostWaltz.tres", + enemyScenePath: [LWS.LoadPath] + ), }; //Needs to be strictly maintained based on what the player has obtained. diff --git a/Scenes/Puppets/Enemies/LWS/Assets/LWS.png b/Scenes/Puppets/Enemies/LWS/Assets/LWS.png new file mode 100644 index 00000000..97670a48 Binary files /dev/null and b/Scenes/Puppets/Enemies/LWS/Assets/LWS.png differ diff --git a/Scenes/Puppets/Enemies/LWS/Assets/LWS.png.import b/Scenes/Puppets/Enemies/LWS/Assets/LWS.png.import new file mode 100644 index 00000000..e4507e5f --- /dev/null +++ b/Scenes/Puppets/Enemies/LWS/Assets/LWS.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1k6m2uj4o76x" +path="res://.godot/imported/LWS.png-c3a231112640f9be6d6ffbac9146a500.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Scenes/Puppets/Enemies/LWS/Assets/LWS.png" +dest_files=["res://.godot/imported/LWS.png-c3a231112640f9be6d6ffbac9146a500.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/Scenes/Puppets/Enemies/LWS/LWS.cs b/Scenes/Puppets/Enemies/LWS/LWS.cs new file mode 100644 index 00000000..be0c47ae --- /dev/null +++ b/Scenes/Puppets/Enemies/LWS/LWS.cs @@ -0,0 +1,37 @@ +using System; +using FunkEngine; +using Godot; + +public partial class LWS : EnemyPuppet +{ + public static new readonly string LoadPath = "res://Scenes/Puppets/Enemies/LWS/P_LWS.tscn"; + + public override void _Ready() + { + MaxHealth = 150; + CurrentHealth = MaxHealth; + BaseMoney = 25; + InitialNote = (16, 3); + base._Ready(); + var enemyTween = CreateTween(); + enemyTween.TweenProperty(Sprite, "position", Vector2.Up * 5, 1f).AsRelative(); + enemyTween.TweenProperty(Sprite, "position", Vector2.Down * 5, 1f).AsRelative(); + enemyTween.SetTrans(Tween.TransitionType.Quad); + enemyTween.SetEase(Tween.EaseType.InOut); + enemyTween.SetLoops(); + enemyTween.Play(); + + BattleEvents = new EnemyEffect[] + { + new EnemyEffect( + this, + BattleEffectTrigger.OnLoop, + 1, + (e, eff, val) => + { + e.BD.RandApplyNote(eff.Owner, InitialNote.NoteId, val); + } + ), + }; + } +} diff --git a/Scenes/Puppets/Enemies/LWS/LWS.cs.uid b/Scenes/Puppets/Enemies/LWS/LWS.cs.uid new file mode 100644 index 00000000..6544e3b0 --- /dev/null +++ b/Scenes/Puppets/Enemies/LWS/LWS.cs.uid @@ -0,0 +1 @@ +uid://baudb5v4ai8br diff --git a/Scenes/Puppets/Enemies/LWS/P_LWS.tscn b/Scenes/Puppets/Enemies/LWS/P_LWS.tscn new file mode 100644 index 00000000..064875ba --- /dev/null +++ b/Scenes/Puppets/Enemies/LWS/P_LWS.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=7 format=3 uid="uid://beww544cthrsj"] + +[ext_resource type="Script" uid="uid://baudb5v4ai8br" path="res://Scenes/Puppets/Enemies/LWS/LWS.cs" id="1_slsco"] +[ext_resource type="Texture2D" uid="uid://b1k6m2uj4o76x" path="res://Scenes/Puppets/Enemies/LWS/Assets/LWS.png" id="2_iipdd"] +[ext_resource type="PackedScene" uid="uid://bgomxovxs7sr8" path="res://Scenes/Puppets/HealthBar.tscn" id="3_3fwan"] +[ext_resource type="PackedScene" uid="uid://cdoguwlxehbpg" path="res://Scenes/Puppets/StatusContainer.tscn" id="4_dslq0"] + +[sub_resource type="Gradient" id="Gradient_hguc7"] +offsets = PackedFloat32Array(0.0227273, 1) +colors = PackedColorArray(0, 1, 0.0999999, 1, 1, 1, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_545vi"] +resource_local_to_scene = true +gradient = SubResource("Gradient_hguc7") +width = 100 +height = 18 + +[node name="EnemPuppet" type="Node2D" node_paths=PackedStringArray("HealthBar", "Sprite", "_statusContainer")] +script = ExtResource("1_slsco") +HealthBar = NodePath("ProgressBar") +Sprite = NodePath("Sprite") +_statusContainer = NodePath("StatusContainer") + +[node name="Sprite" type="Sprite2D" parent="."] +texture = ExtResource("2_iipdd") + +[node name="ProgressBar" parent="." instance=ExtResource("3_3fwan")] +offset_left = -50.0 +offset_top = 32.0 +offset_right = 52.0 +offset_bottom = 52.0 +texture_progress = SubResource("GradientTexture2D_545vi") + +[node name="StatusContainer" parent="." instance=ExtResource("4_dslq0")]