From 11411cb3897c92bca0678f5d892e7a353f97946e Mon Sep 17 00:00:00 2001 From: Rmojarro1 <48000819+Rmojarro1@users.noreply.github.com> Date: Wed, 21 May 2025 16:00:39 -0700 Subject: [PATCH 01/23] Created branch, added sprite --- SharedAssets/riff_rabbit.png | Bin 0 -> 1612 bytes SharedAssets/riff_rabbit.png.import | 34 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 SharedAssets/riff_rabbit.png create mode 100644 SharedAssets/riff_rabbit.png.import diff --git a/SharedAssets/riff_rabbit.png b/SharedAssets/riff_rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..8612ce9d72bc813b5ae7401b2ce41e50cbc5ec48 GIT binary patch literal 1612 zcmV-S2DABzP)YAX9X8WNB|8RBvx=!KdMT000HO zNklENdkv{CmE(?PVLZh>|)IdJo9=6}zbMHO(-gE!W&iZ}2 zch0?M?)P(l=il$lsa_C<%Z+H?K8r21WoNT?i&}HvxfQ^7bK60GP z+XwUcK;(VOlNg~?EP_PtLW=Py0;JV56F=#*w35k)GDCqLW;WC#HC5cVH9!ndbN z$&wSfoTJ{mcUz9~l`DHZ_o&yXAU^o%i_S&B{sTuia(F+G-Ee6lnL*fQAXdrjO($O1qneZXF>S^)c+&w9#^_TF%u&y8M) z6bVTo#LW)H0R>wk{QdY93MmAd1uR z1<7w2eev3Dk8xFD5HbUhg>(>BKK@YXeL4tZC#xRwqBsybwmq&w2z&dY2MPczKrk^c zQX$l8lN|m27vF1_41m(uR;H$=L$7y7z}p8-I;Oy|FcE?-2Ou*%QB(jr^WX%qdhJtu z`SEM((tty@f)-(t&Ur2ejt<*FWd!557LU2QbePbz~USnO9XP6fD4= z|Es3N__7tNXy3bIn_k}A@40q)Z$ER*2K!!r(f4`WAbbJ16$eO^-x?JP1#A7bcWh%O z@*53AIuNk{q}?QRaz}xQ!T>-x1Z^j1k^sp{K{)`oG6evgdGl^%4Is1$h!!gfq5u&2 zfl$rY>vh1JL+ly=t=6oiTk@L94MEI{agi|q=o|z!>l+t>0MNa4kuHP0=m2zi|2Pob zP3Bhj%C<=tp;u_Cq#bPm6E|;yaeS<}v2ZU{Zg+VyJXUO-L=Jk5rXwziT z07TgURY4rzGh`q8nfIIb%VbNPmTMP7I;9Q46o9%7HZ=5#qf7@tZTo5j=*+_+0)Su$ zx(!ejK$!Vbsl@pBIHgj_{!F(Z>q-E%+N7r!hXnvZ?OvoB7j+!~@c!`$yh9j-n|I&q z2H>|G?}|=PHKj8T<^V*)!^8G*P%a{HF$A3%0!;x_tLGRP7%-||00fzbMf}&88-Sm2 z>B)6X#ZQ_1Na{h=e@aXO%mp1ZO8@`>4rN$LW=%~1DgXcg2mk;800000(o>TF0000< KMNUMnLSTY?3DWWa literal 0 HcmV?d00001 diff --git a/SharedAssets/riff_rabbit.png.import b/SharedAssets/riff_rabbit.png.import new file mode 100644 index 00000000..6199fb6e --- /dev/null +++ b/SharedAssets/riff_rabbit.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ox0iikoj3ooe" +path="res://.godot/imported/riff_rabbit.png-2c147e4df2c202fb7e5a3e11aacf00f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://SharedAssets/riff_rabbit.png" +dest_files=["res://.godot/imported/riff_rabbit.png-2c147e4df2c202fb7e5a3e11aacf00f1.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 From 1f1951bff5f63f7d7f90410014c3d785f0ee525f Mon Sep 17 00:00:00 2001 From: Rmojarro1 <48000819+Rmojarro1@users.noreply.github.com> Date: Wed, 21 May 2025 18:22:57 -0700 Subject: [PATCH 02/23] Heal Button functionality Shops now have heal button. Clicking it will restore 1/4 max hp at the cost of 30 money. This will disable the button for the reminder of time spent in shop. If player is at max hp or does not have enough money upon entering shop, button will be disabled automatically. Added display for the player's current health out of max health, with a placeholder heart sprite. --- Globals/Translations/Translations.csv | 1 + .../BattleDirector/Scripts/BattleDirector.cs | 2 +- Scenes/ShopScene/Scripts/ShopScene.cs | 55 ++++++++++++++ Scenes/ShopScene/ShopUI.tscn | 67 +++++++++++++++++- SharedAssets/Heart.png | Bin 0 -> 1523 bytes ...iff_rabbit.png.import => Heart.png.import} | 8 +-- SharedAssets/riff_rabbit.png | Bin 1612 -> 0 bytes 7 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 SharedAssets/Heart.png rename SharedAssets/{riff_rabbit.png.import => Heart.png.import} (68%) delete mode 100644 SharedAssets/riff_rabbit.png diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index a0b7cb2b..a6317c12 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -34,6 +34,7 @@ SHOP_REMOVAL,Remove A Note,移除音符 SHOP_CONFIRM,Confirm Purchase,购买已确认 SHOP_CANCEL,Cancel,取消操作 REMOVAL_COST,Removal Fee,删除费用 +SHOP_HEAL, Heal, 愈合 BATTLE_ROOM_BEGIN_BUTTON,Begin Battle [Enter],开始战斗 [Enter] BATTLE_ROOM_PERFECT,Perfect,Perfect BATTLE_ROOM_GOOD,Good,良好 diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index 4c8036ca..65cff2a4 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -200,7 +200,7 @@ public override void _UnhandledInput(InputEvent @event) { if (@event is InputEventKey eventKey && eventKey.Pressed && !eventKey.Echo) { - return; + //return; if (eventKey.Keycode == Key.Key0) { DebugKillEnemy(); diff --git a/Scenes/ShopScene/Scripts/ShopScene.cs b/Scenes/ShopScene/Scripts/ShopScene.cs index 7709e7a3..3935c435 100644 --- a/Scenes/ShopScene/Scripts/ShopScene.cs +++ b/Scenes/ShopScene/Scripts/ShopScene.cs @@ -11,12 +11,18 @@ public partial class ShopScene : Control [Export] private Label _moneyLabel; + [Export] + private Label _currentHealthLabel; + [Export] private Button _exitButton; [Export] private Button _removalButton; + [Export] + private Button _healButton; + [Export] private GridContainer _noteGrid; @@ -66,6 +72,7 @@ public override void _Ready() _removalButton.Pressed += OpenRemovalPane; _removalAcceptButton.Pressed += RemoveNote; _cancelRemoveButton.Pressed += CloseRemovalPane; + _healButton.Pressed += TryHeal; } public override void _EnterTree() @@ -76,8 +83,10 @@ public override void _EnterTree() private void Initialize() { UpdateMoneyLabel(); + UpdateCurrentHealthLabel(); GenerateShopItems(); PopulatePossessedNotes(); + HealButtonStatus(); } public override void _Input(InputEvent @event) @@ -106,6 +115,12 @@ private void UpdateMoneyLabel() _moneyLabel.Text = StageProducer.PlayerStats.Money.ToString(); } + private void UpdateCurrentHealthLabel() + { + _currentHealthLabel.Text = + $"{StageProducer.PlayerStats.CurrentHealth}/{StageProducer.PlayerStats.MaxHealth}"; + } + private const int RelicOptions = 3; private const int NoteOptions = 5; @@ -322,4 +337,44 @@ private void RemoveNote() _selectedRemoveButton.QueueFree(); CloseRemovalPane(); } + + private bool _hasHealed = false; + private const int HealCost = 30; + private int _healAmount = (StageProducer.PlayerStats.MaxHealth / 4); + + private void HealButtonStatus() + { + if ( + StageProducer.PlayerStats.Money <= HealCost + || StageProducer.PlayerStats.CurrentHealth == StageProducer.PlayerStats.MaxHealth + || _hasHealed + ) + { + _healButton.Disabled = true; + } + } + + private void TryHeal() + { + if (_hasHealed) + { + return; + } + HealPlayer(); + } + + private void HealPlayer() + { + StageProducer.PlayerStats.CurrentHealth += _healAmount; + if (StageProducer.PlayerStats.CurrentHealth > StageProducer.PlayerStats.MaxHealth) + { + StageProducer.PlayerStats.CurrentHealth = StageProducer.PlayerStats.MaxHealth; + } + + StageProducer.PlayerStats.Money -= 30; + UpdateCurrentHealthLabel(); + UpdateMoneyLabel(); + _hasHealed = true; + HealButtonStatus(); + } } diff --git a/Scenes/ShopScene/ShopUI.tscn b/Scenes/ShopScene/ShopUI.tscn index 6a999efe..bbbc5c91 100644 --- a/Scenes/ShopScene/ShopUI.tscn +++ b/Scenes/ShopScene/ShopUI.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://bk0js6ji42xrt"] +[gd_scene load_steps=9 format=3 uid="uid://bk0js6ji42xrt"] [ext_resource type="Texture2D" uid="uid://djd6iw2g84bba" path="res://Scenes/UI/Assets/UI_CenterFrame.png" id="1_67his"] [ext_resource type="Script" uid="uid://dg0xaieus84ns" path="res://Scenes/ShopScene/Scripts/ShopScene.cs" id="1_bmt43"] @@ -7,8 +7,9 @@ [ext_resource type="Theme" uid="uid://d37e3tpsbxwak" path="res://Scenes/UI/Assets/GeneralTheme.tres" id="4_3vktw"] [ext_resource type="Script" uid="uid://cahjluc6v7ked" path="res://Scenes/UI/TitleScreen/Scripts/SceneChange.cs" id="5_w0f8r"] [ext_resource type="Texture2D" uid="uid://dyt1cvag13aik" path="res://SharedAssets/Money.png" id="6_tf865"] +[ext_resource type="Texture2D" uid="uid://dtaf4wcsur721" path="res://SharedAssets/Heart.png" id="8_r34tc"] -[node name="ShopUI" type="Control" node_paths=PackedStringArray("_moneyLabel", "_exitButton", "_removalButton", "_noteGrid", "_relicGrid", "_confirmationPopup", "_confirmationButton", "_denyButton", "_descriptionLabel", "_removalPanel", "_possessionGrid", "_removalAcceptButton", "_cancelRemoveButton", "_removalCostLabel")] +[node name="ShopUI" type="Control" node_paths=PackedStringArray("_moneyLabel", "_currentHealthLabel", "_exitButton", "_removalButton", "_healButton", "_noteGrid", "_relicGrid", "_confirmationPopup", "_confirmationButton", "_denyButton", "_descriptionLabel", "_removalPanel", "_possessionGrid", "_removalAcceptButton", "_cancelRemoveButton", "_removalCostLabel")] z_index = 2 layout_mode = 3 anchors_preset = 15 @@ -18,8 +19,10 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_bmt43") _moneyLabel = NodePath("MoneyContainer/MoneyFrame/MarginContainer/HBoxContainer/MoneyLabel") +_currentHealthLabel = NodePath("HealthContainer/HealthFrame/MarginContainer/HBoxContainer/CurrentHealthLabel") _exitButton = NodePath("BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Continue") _removalButton = NodePath("BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Removal") +_healButton = NodePath("BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Heal") _noteGrid = NodePath("TopPanel/MarginContainer/VBoxContainer/NoteSelection/MarginContainer/NotesBox/CenterContainer/NotesGrid") _relicGrid = NodePath("TopPanel/MarginContainer/VBoxContainer/RelicSelection/MarginContainer/RelicsBox/CenterContainer/RelicsGrid") _confirmationPopup = NodePath("ConfirmPurchase") @@ -265,6 +268,13 @@ size_flags_vertical = 4 theme = ExtResource("4_3vktw") text = "SHOP_REMOVAL" +[node name="Heal" type="Button" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +theme = ExtResource("4_3vktw") +text = "SHOP_HEAL" + [node name="Continue" type="Button" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_horizontal = 4 @@ -327,6 +337,59 @@ horizontal_alignment = 2 vertical_alignment = 1 clip_text = true +[node name="HealthContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -125.0 +offset_top = 24.0 +offset_bottom = 53.0 +grow_horizontal = 0 +theme_override_constants/margin_left = -1 +theme_override_constants/margin_top = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 0 + +[node name="HealthFrame" type="NinePatchRect" parent="HealthContainer"] +layout_mode = 2 +texture = ExtResource("2_bmt43") +patch_margin_left = 7 +patch_margin_top = 7 +patch_margin_right = 7 +patch_margin_bottom = 7 + +[node name="MarginContainer" type="MarginContainer" parent="HealthContainer/HealthFrame"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_right = 8 + +[node name="HBoxContainer" type="HBoxContainer" parent="HealthContainer/HealthFrame/MarginContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HealthContainer/HealthFrame/MarginContainer/HBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 6 + +[node name="TextureRect" type="TextureRect" parent="HealthContainer/HealthFrame/MarginContainer/HBoxContainer/MarginContainer"] +layout_mode = 2 +size_flags_vertical = 4 +texture = ExtResource("8_r34tc") + +[node name="CurrentHealthLabel" type="Label" parent="HealthContainer/HealthFrame/MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(91, 0) +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 1 +text = "0" +horizontal_alignment = 2 +vertical_alignment = 1 +clip_text = true + [node name="ConfirmPurchase" type="CenterContainer" parent="."] visible = false z_index = 3 diff --git a/SharedAssets/Heart.png b/SharedAssets/Heart.png new file mode 100644 index 0000000000000000000000000000000000000000..8291fa203f62e6c23b1e83a6b882c4df53e946d6 GIT binary patch literal 1523 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}EvXTnX}-P; zT0k}j11lpN12aeo0~3&tVqgWc85q16rQz%#Mh%3T_DlvAsG2As4FWAd%m}BM7cfFq z1H~3F!Bz7tU`DV(+PYQ6z5^-F0*}aI1_lvd5N4cms#l+Zfw?X-B%&n3*T*V3KUXg? zB|j-uuOhbqq>I6(!V1XDO)W`OsL0L9E4HezRRXK90GK4GQ<#=IWDQi$wiq3C7Jno3LtY6lk!VTY?YKi7Qq3;ohiw1 zdkRX6a=^BvBKW=|(^rz2hHznCF*G=U0izF+0ctbAs?D>YB-sQQ zQmz$1_dxvzbZ9cz-r|xJeIy0?Mg|5Jx&}tNMwa?;{{fwElag#zl39|I3Jy59f50K= zm{Wo(3Q`XWf}BiH$Xewj=B3*zRp_RqrX`lEMl}T@ zifXuxJ{EV_fP8Ni8I)R_pHm77e>+2CBO7p-pok)30-_@Vs}5vQbR7X1`6cMU^3c4@5<8dyXu?RkkYdRS8gL=t7{LrqoJyg_L4p=3 z#X_pWc?Lo`HFC!N$j8YptyK3~DPExjXsp79f1 z4sNBBO-rYyD^F<+I<;X#z?7+LA_6A;;SXEVF@=}gXo`mCCm!yU3Yq8s>gG+#zgzr% z=l8nv->cc%HGceRI$UdE-#n@4gnrX%?;A0Pot%wRQX-wVi*CP`n8=p5?%-^`+&T}R zwx^W^776LhzuFdDX`lRDJz`e#V`h#!2kz-DNpw8{U07P$oo8$l zIQb>g(qN5W(qo@S`8jjDwwQKJQRx(^a`}|(`YFjpYm;kOxYO<GFkdWo z)>+EM&Cz{(ROZHF;rf+nAO5Ksnd$|-6V(h;t?xc@`0sq(Z{F=cj#XDLuj}UCdx_!8 g7w0|dTe801_xZdeX8XLrCQ!-e>FVdQ&MBb@0AgX}-v9sr literal 0 HcmV?d00001 diff --git a/SharedAssets/riff_rabbit.png.import b/SharedAssets/Heart.png.import similarity index 68% rename from SharedAssets/riff_rabbit.png.import rename to SharedAssets/Heart.png.import index 6199fb6e..52d4bfcb 100644 --- a/SharedAssets/riff_rabbit.png.import +++ b/SharedAssets/Heart.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ox0iikoj3ooe" -path="res://.godot/imported/riff_rabbit.png-2c147e4df2c202fb7e5a3e11aacf00f1.ctex" +uid="uid://dtaf4wcsur721" +path="res://.godot/imported/Heart.png-7dfefac643a1f449fa6e4073fe6379c7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://SharedAssets/riff_rabbit.png" -dest_files=["res://.godot/imported/riff_rabbit.png-2c147e4df2c202fb7e5a3e11aacf00f1.ctex"] +source_file="res://SharedAssets/Heart.png" +dest_files=["res://.godot/imported/Heart.png-7dfefac643a1f449fa6e4073fe6379c7.ctex"] [params] diff --git a/SharedAssets/riff_rabbit.png b/SharedAssets/riff_rabbit.png deleted file mode 100644 index 8612ce9d72bc813b5ae7401b2ce41e50cbc5ec48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1612 zcmV-S2DABzP)YAX9X8WNB|8RBvx=!KdMT000HO zNklENdkv{CmE(?PVLZh>|)IdJo9=6}zbMHO(-gE!W&iZ}2 zch0?M?)P(l=il$lsa_C<%Z+H?K8r21WoNT?i&}HvxfQ^7bK60GP z+XwUcK;(VOlNg~?EP_PtLW=Py0;JV56F=#*w35k)GDCqLW;WC#HC5cVH9!ndbN z$&wSfoTJ{mcUz9~l`DHZ_o&yXAU^o%i_S&B{sTuia(F+G-Ee6lnL*fQAXdrjO($O1qneZXF>S^)c+&w9#^_TF%u&y8M) z6bVTo#LW)H0R>wk{QdY93MmAd1uR z1<7w2eev3Dk8xFD5HbUhg>(>BKK@YXeL4tZC#xRwqBsybwmq&w2z&dY2MPczKrk^c zQX$l8lN|m27vF1_41m(uR;H$=L$7y7z}p8-I;Oy|FcE?-2Ou*%QB(jr^WX%qdhJtu z`SEM((tty@f)-(t&Ur2ejt<*FWd!557LU2QbePbz~USnO9XP6fD4= z|Es3N__7tNXy3bIn_k}A@40q)Z$ER*2K!!r(f4`WAbbJ16$eO^-x?JP1#A7bcWh%O z@*53AIuNk{q}?QRaz}xQ!T>-x1Z^j1k^sp{K{)`oG6evgdGl^%4Is1$h!!gfq5u&2 zfl$rY>vh1JL+ly=t=6oiTk@L94MEI{agi|q=o|z!>l+t>0MNa4kuHP0=m2zi|2Pob zP3Bhj%C<=tp;u_Cq#bPm6E|;yaeS<}v2ZU{Zg+VyJXUO-L=Jk5rXwziT z07TgURY4rzGh`q8nfIIb%VbNPmTMP7I;9Q46o9%7HZ=5#qf7@tZTo5j=*+_+0)Su$ zx(!ejK$!Vbsl@pBIHgj_{!F(Z>q-E%+N7r!hXnvZ?OvoB7j+!~@c!`$yh9j-n|I&q z2H>|G?}|=PHKj8T<^V*)!^8G*P%a{HF$A3%0!;x_tLGRP7%-||00fzbMf}&88-Sm2 z>B)6X#ZQ_1Na{h=e@aXO%mp1ZO8@`>4rN$LW=%~1DgXcg2mk;800000(o>TF0000< KMNUMnLSTY?3DWWa From f794d5f3d7aba746d9f71f3abadf54a393b27679 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Wed, 21 May 2025 20:10:33 -0700 Subject: [PATCH 03/23] Adjust Shop For Heal Button Remove health label to use PlayerPuppet in the scene Adjust Shop UI because the heal button was too big for the container Adjust Translation to specify cost and heal amount Fixed issue where removing note didn't update money label --- Globals/Translations/Translations.csv | 2 +- Scenes/ShopScene/Scripts/ShopScene.cs | 60 +++++--------- Scenes/ShopScene/ShopScene.tscn | 3 +- Scenes/ShopScene/ShopUI.tscn | 108 ++++++++------------------ 4 files changed, 56 insertions(+), 117 deletions(-) diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index a6317c12..b29a7401 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -34,7 +34,7 @@ SHOP_REMOVAL,Remove A Note,移除音符 SHOP_CONFIRM,Confirm Purchase,购买已确认 SHOP_CANCEL,Cancel,取消操作 REMOVAL_COST,Removal Fee,删除费用 -SHOP_HEAL, Heal, 愈合 +SHOP_HEAL,Heal 25%: 30g,愈合 25%: 30硬币 BATTLE_ROOM_BEGIN_BUTTON,Begin Battle [Enter],开始战斗 [Enter] BATTLE_ROOM_PERFECT,Perfect,Perfect BATTLE_ROOM_GOOD,Good,良好 diff --git a/Scenes/ShopScene/Scripts/ShopScene.cs b/Scenes/ShopScene/Scripts/ShopScene.cs index 3935c435..814b4334 100644 --- a/Scenes/ShopScene/Scripts/ShopScene.cs +++ b/Scenes/ShopScene/Scripts/ShopScene.cs @@ -11,9 +11,6 @@ public partial class ShopScene : Control [Export] private Label _moneyLabel; - [Export] - private Label _currentHealthLabel; - [Export] private Button _exitButton; @@ -56,6 +53,9 @@ public partial class ShopScene : Control [Export] private Label _removalCostLabel; + [Export] + private PlayerPuppet _player; + private ButtonGroup _bGroup; private readonly int[] _priceByRarity = [100, 90, 80, 70, 60, 50, 9]; @@ -63,8 +63,9 @@ public partial class ShopScene : Control private List _shopItems = new List(); - public override void _Ready() + public override void _EnterTree() { + BgAudioPlayer.LiveInstance.ResumeLevelMusic(); _bGroup = new ButtonGroup(); Initialize(); _confirmationButton.Pressed += TryPurchase; @@ -75,18 +76,12 @@ public override void _Ready() _healButton.Pressed += TryHeal; } - public override void _EnterTree() - { - BgAudioPlayer.LiveInstance.ResumeLevelMusic(); - } - private void Initialize() { UpdateMoneyLabel(); - UpdateCurrentHealthLabel(); GenerateShopItems(); PopulatePossessedNotes(); - HealButtonStatus(); + UpdateHealButton(); } public override void _Input(InputEvent @event) @@ -115,12 +110,6 @@ private void UpdateMoneyLabel() _moneyLabel.Text = StageProducer.PlayerStats.Money.ToString(); } - private void UpdateCurrentHealthLabel() - { - _currentHealthLabel.Text = - $"{StageProducer.PlayerStats.CurrentHealth}/{StageProducer.PlayerStats.MaxHealth}"; - } - private const int RelicOptions = 3; private const int NoteOptions = 5; @@ -224,6 +213,7 @@ private void TryPurchase() _currentUItem = null; RefreshShopPrices(); + UpdateHealButton(); } private Control _lastFocused; @@ -336,45 +326,37 @@ private void RemoveNote() StageProducer.PlayerStats.RemoveNote(_toRemove); _selectedRemoveButton.QueueFree(); CloseRemovalPane(); + UpdateMoneyLabel(); + UpdateHealButton(); } - private bool _hasHealed = false; + private bool _hasHealed; private const int HealCost = 30; private int _healAmount = (StageProducer.PlayerStats.MaxHealth / 4); - private void HealButtonStatus() + private void UpdateHealButton() { - if ( + _healButton.Disabled = StageProducer.PlayerStats.Money <= HealCost || StageProducer.PlayerStats.CurrentHealth == StageProducer.PlayerStats.MaxHealth - || _hasHealed - ) - { - _healButton.Disabled = true; - } + || _hasHealed; } private void TryHeal() { - if (_hasHealed) + if ( + StageProducer.PlayerStats.Money <= HealCost + || StageProducer.PlayerStats.CurrentHealth == StageProducer.PlayerStats.MaxHealth + || _hasHealed + ) { return; } - HealPlayer(); - } - - private void HealPlayer() - { - StageProducer.PlayerStats.CurrentHealth += _healAmount; - if (StageProducer.PlayerStats.CurrentHealth > StageProducer.PlayerStats.MaxHealth) - { - StageProducer.PlayerStats.CurrentHealth = StageProducer.PlayerStats.MaxHealth; - } - StageProducer.PlayerStats.Money -= 30; - UpdateCurrentHealthLabel(); + StageProducer.PlayerStats.Money -= HealCost; UpdateMoneyLabel(); + UpdateHealButton(); _hasHealed = true; - HealButtonStatus(); + _player.Heal(_healAmount); } } diff --git a/Scenes/ShopScene/ShopScene.tscn b/Scenes/ShopScene/ShopScene.tscn index c6d905f7..5bfaee34 100644 --- a/Scenes/ShopScene/ShopScene.tscn +++ b/Scenes/ShopScene/ShopScene.tscn @@ -55,6 +55,7 @@ offset_bottom = 180.0 texture = ExtResource("2_dt33i") script = ExtResource("3_n34g6") -[node name="ShopUI" parent="." instance=ExtResource("8_2xatg")] +[node name="ShopUI" parent="." node_paths=PackedStringArray("_player") instance=ExtResource("8_2xatg")] offset_right = 640.0 offset_bottom = 360.0 +_player = NodePath("../PlayerMarker/PlayerPuppet") diff --git a/Scenes/ShopScene/ShopUI.tscn b/Scenes/ShopScene/ShopUI.tscn index bbbc5c91..2aaca710 100644 --- a/Scenes/ShopScene/ShopUI.tscn +++ b/Scenes/ShopScene/ShopUI.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://bk0js6ji42xrt"] +[gd_scene load_steps=8 format=3 uid="uid://bk0js6ji42xrt"] [ext_resource type="Texture2D" uid="uid://djd6iw2g84bba" path="res://Scenes/UI/Assets/UI_CenterFrame.png" id="1_67his"] [ext_resource type="Script" uid="uid://dg0xaieus84ns" path="res://Scenes/ShopScene/Scripts/ShopScene.cs" id="1_bmt43"] @@ -7,9 +7,8 @@ [ext_resource type="Theme" uid="uid://d37e3tpsbxwak" path="res://Scenes/UI/Assets/GeneralTheme.tres" id="4_3vktw"] [ext_resource type="Script" uid="uid://cahjluc6v7ked" path="res://Scenes/UI/TitleScreen/Scripts/SceneChange.cs" id="5_w0f8r"] [ext_resource type="Texture2D" uid="uid://dyt1cvag13aik" path="res://SharedAssets/Money.png" id="6_tf865"] -[ext_resource type="Texture2D" uid="uid://dtaf4wcsur721" path="res://SharedAssets/Heart.png" id="8_r34tc"] -[node name="ShopUI" type="Control" node_paths=PackedStringArray("_moneyLabel", "_currentHealthLabel", "_exitButton", "_removalButton", "_healButton", "_noteGrid", "_relicGrid", "_confirmationPopup", "_confirmationButton", "_denyButton", "_descriptionLabel", "_removalPanel", "_possessionGrid", "_removalAcceptButton", "_cancelRemoveButton", "_removalCostLabel")] +[node name="ShopUI" type="Control" node_paths=PackedStringArray("_moneyLabel", "_exitButton", "_removalButton", "_healButton", "_noteGrid", "_relicGrid", "_confirmationPopup", "_confirmationButton", "_denyButton", "_descriptionLabel", "_removalPanel", "_possessionGrid", "_removalAcceptButton", "_cancelRemoveButton", "_removalCostLabel")] z_index = 2 layout_mode = 3 anchors_preset = 15 @@ -19,10 +18,9 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_bmt43") _moneyLabel = NodePath("MoneyContainer/MoneyFrame/MarginContainer/HBoxContainer/MoneyLabel") -_currentHealthLabel = NodePath("HealthContainer/HealthFrame/MarginContainer/HBoxContainer/CurrentHealthLabel") -_exitButton = NodePath("BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Continue") -_removalButton = NodePath("BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Removal") -_healButton = NodePath("BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Heal") +_exitButton = NodePath("OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Continue") +_removalButton = NodePath("OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Removal") +_healButton = NodePath("OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer/Heal") _noteGrid = NodePath("TopPanel/MarginContainer/VBoxContainer/NoteSelection/MarginContainer/NotesBox/CenterContainer/NotesGrid") _relicGrid = NodePath("TopPanel/MarginContainer/VBoxContainer/RelicSelection/MarginContainer/RelicsBox/CenterContainer/RelicsGrid") _confirmationPopup = NodePath("ConfirmPurchase") @@ -37,7 +35,7 @@ _removalCostLabel = NodePath("Removal/Panel/MarginContainer/VBoxContainer/Option [node name="TopPanel" type="NinePatchRect" parent="."] layout_mode = 0 -offset_right = 508.0 +offset_right = 463.0 offset_bottom = 211.0 texture = ExtResource("1_67his") patch_margin_left = 12 @@ -140,7 +138,7 @@ columns = 6 [node name="BottomPanel" type="NinePatchRect" parent="."] layout_mode = 0 offset_top = 211.0 -offset_right = 640.0 +offset_right = 463.0 offset_bottom = 360.0 texture = ExtResource("1_67his") patch_margin_left = 12 @@ -149,10 +147,12 @@ patch_margin_right = 12 patch_margin_bottom = 12 [node name="DescBox" type="MarginContainer" parent="BottomPanel"] -layout_mode = 2 -offset_right = 640.0 -offset_bottom = 149.0 -grow_vertical = 0 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 size_flags_vertical = 3 size_flags_stretch_ratio = 0.4 theme_override_constants/margin_left = 10 @@ -213,9 +213,18 @@ autowrap_mode = 2 clip_text = true text_overrun_behavior = 1 -[node name="OptionsBG" type="NinePatchRect" parent="BottomPanel/DescBox/HBoxContainer"] +[node name="OptionsBG" type="NinePatchRect" parent="."] self_modulate = Color(1, 1, 1, 0.75) -layout_mode = 2 +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -176.0 +offset_top = -179.0 +grow_horizontal = 0 +grow_vertical = 0 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 0.39 @@ -225,7 +234,7 @@ patch_margin_top = 6 patch_margin_right = 6 patch_margin_bottom = 7 -[node name="OptionsMargin" type="MarginContainer" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG"] +[node name="OptionsMargin" type="MarginContainer" parent="OptionsBG"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -238,7 +247,7 @@ theme_override_constants/margin_top = 4 theme_override_constants/margin_right = 4 theme_override_constants/margin_bottom = 4 -[node name="OptionsBG" type="NinePatchRect" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin"] +[node name="OptionsBG" type="NinePatchRect" parent="OptionsBG/OptionsMargin"] layout_mode = 2 texture = ExtResource("3_r34tc") patch_margin_left = 7 @@ -246,7 +255,7 @@ patch_margin_top = 7 patch_margin_right = 7 patch_margin_bottom = 7 -[node name="MarginContainer" type="MarginContainer" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG"] +[node name="MarginContainer" type="MarginContainer" parent="OptionsBG/OptionsMargin/OptionsBG"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -254,28 +263,28 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 theme_override_constants/margin_left = 7 -theme_override_constants/margin_top = 7 +theme_override_constants/margin_top = 0 theme_override_constants/margin_right = 7 -[node name="VBoxContainer" type="VBoxContainer" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="OptionsBG/OptionsMargin/OptionsBG/MarginContainer"] layout_mode = 2 alignment = 1 -[node name="Removal" type="Button" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] +[node name="Removal" type="Button" parent="OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 theme = ExtResource("4_3vktw") text = "SHOP_REMOVAL" -[node name="Heal" type="Button" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] +[node name="Heal" type="Button" parent="OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 theme = ExtResource("4_3vktw") text = "SHOP_HEAL" -[node name="Continue" type="Button" parent="BottomPanel/DescBox/HBoxContainer/OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] +[node name="Continue" type="Button" parent="OptionsBG/OptionsMargin/OptionsBG/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 @@ -337,59 +346,6 @@ horizontal_alignment = 2 vertical_alignment = 1 clip_text = true -[node name="HealthContainer" type="MarginContainer" parent="."] -layout_mode = 1 -anchors_preset = 1 -anchor_left = 1.0 -anchor_right = 1.0 -offset_left = -125.0 -offset_top = 24.0 -offset_bottom = 53.0 -grow_horizontal = 0 -theme_override_constants/margin_left = -1 -theme_override_constants/margin_top = 5 -theme_override_constants/margin_right = 5 -theme_override_constants/margin_bottom = 0 - -[node name="HealthFrame" type="NinePatchRect" parent="HealthContainer"] -layout_mode = 2 -texture = ExtResource("2_bmt43") -patch_margin_left = 7 -patch_margin_top = 7 -patch_margin_right = 7 -patch_margin_bottom = 7 - -[node name="MarginContainer" type="MarginContainer" parent="HealthContainer/HealthFrame"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_right = 8 - -[node name="HBoxContainer" type="HBoxContainer" parent="HealthContainer/HealthFrame/MarginContainer"] -layout_mode = 2 - -[node name="MarginContainer" type="MarginContainer" parent="HealthContainer/HealthFrame/MarginContainer/HBoxContainer"] -layout_mode = 2 -theme_override_constants/margin_left = 6 - -[node name="TextureRect" type="TextureRect" parent="HealthContainer/HealthFrame/MarginContainer/HBoxContainer/MarginContainer"] -layout_mode = 2 -size_flags_vertical = 4 -texture = ExtResource("8_r34tc") - -[node name="CurrentHealthLabel" type="Label" parent="HealthContainer/HealthFrame/MarginContainer/HBoxContainer"] -custom_minimum_size = Vector2(91, 0) -layout_mode = 2 -size_flags_horizontal = 10 -size_flags_vertical = 1 -text = "0" -horizontal_alignment = 2 -vertical_alignment = 1 -clip_text = true - [node name="ConfirmPurchase" type="CenterContainer" parent="."] visible = false z_index = 3 From f9754e0f70c867931aba87254daf45cd3f2a1e23 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Thu, 22 May 2025 13:08:51 -0700 Subject: [PATCH 04/23] Adjust tutorial translation --- Globals/Translations/Translations.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index b29a7401..b6923eea 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -123,7 +123,7 @@ TUTORIAL_NODYING,No dying during a tutorial!,教程中不会死亡! TUTORIAL_DIALOGUE_1,"Hello, welcome to Midnight Riff!",你好!欢迎来到午夜即兴! TUTORIAL_DIALOGUE_2,This is a rhythm game where notes move right to left.,这是一款节奏游戏,音符从右向左移动。 TUTORIAL_DIALOGUE_3,"Press the correct button as the notes line up to hit the note. Try to time it as well as you can!",音符对齐时按下正确的按键,尽量精准地进行点击! -TUTORIAL_DIALOGUE_4,"What are the correct buttons? I'll help you out and show you. These can be changed from the meu. Once you press continue we can get started!",正确的按键是什么?我会帮你指出来。这些可以在菜单中更改。按下继续后,我们就可以开始了! +TUTORIAL_DIALOGUE_4,"What are the correct buttons? I'll help you out and show you. These can be changed from the menu. Once you press continue we can get started!",正确的按键是什么?我会帮你指出来。这些可以在菜单中更改。按下继续后,我们就可以开始了! TUTORIAL_LOOP_1,At set intervals the chart loops! This means all notes on the chart repeat. You know a loop is coming up when this symbol scrolls by.,在固定的时间间隔内,乐谱会循环!这意味着乐谱上的所有音符都会重复出现。当这个符号滚动经过时,你就知道循环即将开始。 TUTORIAL_LOOP_2,"In case you haven't noticed, I'll explain these things on the left side. This is your note queue.",如果你还没注意到,我会在左侧解释这些内容。这是你的音符队列。 TUTORIAL_LOOP_3,"This is the combo multiplier, as you hit notes successfully your multiplier will rise. If you miss a note, your multiplier gets reset.",这是连击倍数,成功点击音符后,你的倍数将会上升。如果你错过了一个音符,你的倍数将会重置。 @@ -131,7 +131,7 @@ TUTORIAL_LOOP_4,"This is the freestyle bar, as you hit notes successfully, the f TUTORIAL_LOOP_5,"By now you've probably taken damage. These aren't just cozy songs, these are battles! You take damage when you miss or have bad timing, or from enemy effects. How do you deal damage to enemies? Fill up the bar and I'll tell you.",到目前为止,你可能已经受到伤害了。这些不仅仅是轻松的歌曲,它们是战斗!你错过音符或时机不好,或者受到敌人的效果影响时,都会受到伤害。你如何对敌人造成伤害?填满能量条,我会告诉你。 TUTORIAL_PLACE_1,"Okay, now that the bar is full, you can press a lane button to place your own note. Your notes have special effects. Placing notes consumes the freestyle bar.",好的,现在能量条已满,你可以按下轨道按键放置你自己的音符。你的音符具有特殊效果。放置音符会消耗风格条。 TUTORIAL_PLACE_2,These note effects range from dealing damage to applying status effects!,这些音符效果从造成伤害到施加状态效果不等! -TUTORIAL_PLACE_3,"Your notes can be placed anywhere a note doesn't already exist, and that isn't over the loop marker. But be careful, if you try to place a note while the bar isn't full you may miss a note!",你的音符可以放置在任何没有音符存在且不在循环标记上的位置。但是要小心,如果你试图在能量条未满时放置音符,你可能会错过音符! +TUTORIAL_PLACE_3,"Your notes can be placed anywhere a note doesn't already exist, and that isn't over the loop marker.",你的音符可以放置在任何没有音符存在且不在循环标记上的位置。 TUTORIAL_PLACE_4,"The note you'll place is indicated in the top of the note queue.",你将要放置的音符显示在音符队列顶部。 TUTORIAL_PLACE_5,"Notes are automatically hit when you place them, how helpful, but they come back around when the chart loops, and you need to time hitting them then.",放置音符时会自动击中,这非常方便,但当乐谱循环时它们会再次出现,你需要掌握时机才能击中它们。 TUTORIAL_PLACE_6,"Now go ahead, place a note in the bottom lane!",现在,在最下方的轨道上放置一个音符吧! From 9aa85d3fd39807f4373050a2e5f7981bd4717f14 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Thu, 22 May 2025 14:24:55 -0700 Subject: [PATCH 05/23] Enemy money changes standardized the money from fights based on enemy tier --- Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs | 2 +- Scenes/Puppets/Enemies/CyberFox/P_CyberFox.cs | 2 +- Scenes/Puppets/Enemies/Effigy/P_Effigy.cs | 2 +- Scenes/Puppets/Enemies/Holograeme/P_Holograeme.cs | 2 +- Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs | 2 +- Scenes/Puppets/Enemies/LWS/P_LWS.cs | 2 +- Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs | 2 +- Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs | 2 +- Scenes/Puppets/Enemies/Shapes/P_Shapes.cs | 2 +- Scenes/Puppets/Enemies/Squirkel/P_Squirkel.cs | 2 +- Scenes/Puppets/Enemies/Strawman/P_Strawman.cs | 2 +- Scenes/Puppets/Enemies/TheGWS/P_TheGWS.cs | 2 +- Scenes/Puppets/Enemies/TheGobbler/P_Gobbler.cs | 2 +- Scenes/Puppets/Enemies/Turtle/P_Turtle.cs | 2 +- Scenes/UI/Scripts/ScoringScreen.cs | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs b/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs index 90d2f495..0b6ec25d 100644 --- a/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs +++ b/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs @@ -10,7 +10,7 @@ public override void _Ready() { MaxHealth = 225; CurrentHealth = MaxHealth; - BaseMoney = 15; + BaseMoney = 50; InitialNote = (14, 3); base._Ready(); var enemTween = CreateTween(); diff --git a/Scenes/Puppets/Enemies/CyberFox/P_CyberFox.cs b/Scenes/Puppets/Enemies/CyberFox/P_CyberFox.cs index 7e381731..985adf80 100644 --- a/Scenes/Puppets/Enemies/CyberFox/P_CyberFox.cs +++ b/Scenes/Puppets/Enemies/CyberFox/P_CyberFox.cs @@ -14,7 +14,7 @@ public override void _Ready() { MaxHealth = 130; CurrentHealth = MaxHealth; - BaseMoney = 5; + BaseMoney = 20; base._Ready(); var enemTween = CreateTween(); enemTween.TweenProperty(Sprite, "position", Vector2.Right * 10, 0.5f).AsRelative(); diff --git a/Scenes/Puppets/Enemies/Effigy/P_Effigy.cs b/Scenes/Puppets/Enemies/Effigy/P_Effigy.cs index 6373e338..fb510cd6 100644 --- a/Scenes/Puppets/Enemies/Effigy/P_Effigy.cs +++ b/Scenes/Puppets/Enemies/Effigy/P_Effigy.cs @@ -10,7 +10,7 @@ public partial class P_Effigy : EnemyPuppet public override void _Ready() { MaxHealth = 124; - BaseMoney = 99; + BaseMoney = 80; CurrentHealth = MaxHealth; base._Ready(); diff --git a/Scenes/Puppets/Enemies/Holograeme/P_Holograeme.cs b/Scenes/Puppets/Enemies/Holograeme/P_Holograeme.cs index 7edc344d..edd9f5fd 100644 --- a/Scenes/Puppets/Enemies/Holograeme/P_Holograeme.cs +++ b/Scenes/Puppets/Enemies/Holograeme/P_Holograeme.cs @@ -27,7 +27,7 @@ public override void _Ready() Conductor.BeatSpawnOffsetModifier = 1; MaxHealth = 3; CurrentHealth = MaxHealth; - BaseMoney = 20; + BaseMoney = 40; base._Ready(); _hands[0] = _redHand; diff --git a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs index 587c878d..143852c4 100644 --- a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs +++ b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs @@ -14,7 +14,7 @@ public override void _Ready() { MaxHealth = 500; CurrentHealth = MaxHealth; - BaseMoney = 50; + BaseMoney = 80; base._Ready(); _effectSprite.Visible = false; diff --git a/Scenes/Puppets/Enemies/LWS/P_LWS.cs b/Scenes/Puppets/Enemies/LWS/P_LWS.cs index e02e0bd6..4da24ce9 100644 --- a/Scenes/Puppets/Enemies/LWS/P_LWS.cs +++ b/Scenes/Puppets/Enemies/LWS/P_LWS.cs @@ -10,7 +10,7 @@ public override void _Ready() { MaxHealth = 80; CurrentHealth = MaxHealth; - BaseMoney = 8; + BaseMoney = 10; InitialNote = (16, 3); base._Ready(); var enemyTween = CreateTween(); diff --git a/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs b/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs index b8b3283a..af377f27 100644 --- a/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs +++ b/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs @@ -11,7 +11,7 @@ public override void _Ready() { MaxHealth = 200; CurrentHealth = MaxHealth; - BaseMoney = 10; + BaseMoney = 20; InitialNote = (17, 1); base._Ready(); BattleEvents = new EnemyEffect[] diff --git a/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs b/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs index cd26339a..74936bd4 100644 --- a/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs +++ b/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs @@ -10,7 +10,7 @@ public override void _Ready() { MaxHealth = 100; CurrentHealth = MaxHealth; - BaseMoney = 5; + BaseMoney = 7; InitialNote = (13, 2); base._Ready(); var enemTween = CreateTween(); diff --git a/Scenes/Puppets/Enemies/Shapes/P_Shapes.cs b/Scenes/Puppets/Enemies/Shapes/P_Shapes.cs index c3e75288..d8f249f3 100644 --- a/Scenes/Puppets/Enemies/Shapes/P_Shapes.cs +++ b/Scenes/Puppets/Enemies/Shapes/P_Shapes.cs @@ -10,7 +10,7 @@ public override void _Ready() { MaxHealth = 150; CurrentHealth = MaxHealth; - BaseMoney = 10; + BaseMoney = 20; base._Ready(); var enemTween = CreateTween(); enemTween.TweenProperty(Sprite, "position", Vector2.Right * 10, 3f).AsRelative(); diff --git a/Scenes/Puppets/Enemies/Squirkel/P_Squirkel.cs b/Scenes/Puppets/Enemies/Squirkel/P_Squirkel.cs index 8c6dbab7..fa903499 100644 --- a/Scenes/Puppets/Enemies/Squirkel/P_Squirkel.cs +++ b/Scenes/Puppets/Enemies/Squirkel/P_Squirkel.cs @@ -11,7 +11,7 @@ public override void _Ready() { MaxHealth = 90; CurrentHealth = MaxHealth; - BaseMoney = 5; + BaseMoney = 10; base._Ready(); var tween = CreateTween(); diff --git a/Scenes/Puppets/Enemies/Strawman/P_Strawman.cs b/Scenes/Puppets/Enemies/Strawman/P_Strawman.cs index 564f9a08..cfb99b03 100644 --- a/Scenes/Puppets/Enemies/Strawman/P_Strawman.cs +++ b/Scenes/Puppets/Enemies/Strawman/P_Strawman.cs @@ -13,7 +13,7 @@ public override void _Ready() { CurrentHealth = 40; MaxHealth = 40; - BaseMoney = 1; + BaseMoney = 5; base._Ready(); BattleEvents = new EnemyEffect[] diff --git a/Scenes/Puppets/Enemies/TheGWS/P_TheGWS.cs b/Scenes/Puppets/Enemies/TheGWS/P_TheGWS.cs index ebd3d242..b119fdbd 100644 --- a/Scenes/Puppets/Enemies/TheGWS/P_TheGWS.cs +++ b/Scenes/Puppets/Enemies/TheGWS/P_TheGWS.cs @@ -10,7 +10,7 @@ public override void _Ready() { MaxHealth = 150; CurrentHealth = MaxHealth; - BaseMoney = 10; + BaseMoney = 20; InitialNote = (10, 7); base._Ready(); var enemTween = CreateTween(); diff --git a/Scenes/Puppets/Enemies/TheGobbler/P_Gobbler.cs b/Scenes/Puppets/Enemies/TheGobbler/P_Gobbler.cs index a0fa417d..f620243c 100644 --- a/Scenes/Puppets/Enemies/TheGobbler/P_Gobbler.cs +++ b/Scenes/Puppets/Enemies/TheGobbler/P_Gobbler.cs @@ -11,7 +11,7 @@ public override void _Ready() { MaxHealth = 150; CurrentHealth = MaxHealth; - BaseMoney = 10; + BaseMoney = 20; base._Ready(); var enemTween = CreateTween(); enemTween.TweenProperty(Sprite, "position", Vector2.Right * 10, 3f).AsRelative(); diff --git a/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs b/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs index 5b25cc85..f61e5e45 100644 --- a/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs +++ b/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs @@ -10,7 +10,7 @@ public override void _Ready() { MaxHealth = 150; CurrentHealth = MaxHealth; - BaseMoney = 10; + BaseMoney = 40; base._Ready(); var enemTween = CreateTween(); enemTween.TweenProperty(Sprite, "position", Vector2.Right * 10, 3f).AsRelative(); diff --git a/Scenes/UI/Scripts/ScoringScreen.cs b/Scenes/UI/Scripts/ScoringScreen.cs index a37d24e2..1e327173 100644 --- a/Scenes/UI/Scripts/ScoringScreen.cs +++ b/Scenes/UI/Scripts/ScoringScreen.cs @@ -124,7 +124,7 @@ private void GenerateScore(ScoreGuide info) _perfectMulti = 1 + (float)info.TotalPerfects / (info.TotalHits - info.TotalPlaced); if (float.IsNaN(_perfectMulti)) _perfectMulti = 1; - _placedMulti = Math.Max(2 - (float)Math.Abs(info.TotalPlaced - info.BaseMoney) / 10, 1); + _placedMulti = Math.Min(1 + (float)info.TotalPlaced / 20, 2); _relicBonus = info.RelicBonus; DrawScoreLabels(); } From 8bef1284cc78c486bba0ad911c16707245c1cd78 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Thu, 22 May 2025 14:45:45 -0700 Subject: [PATCH 06/23] nerfed blood money, other relics and notes look fine --- Globals/Scribe.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Globals/Scribe.cs b/Globals/Scribe.cs index 8835dc97..1c2412f3 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -549,7 +549,7 @@ e is BattleDirector.Harbinger.OnDamageInstanceArgs dmgArgs { new RelicEffect( BattleEffectTrigger.OnDamageInstance, - 10, + 5, (e, self, val) => { if ( From fd23390ec18189dc488b4a9ad912dba0d0bc6ed4 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sat, 24 May 2025 21:19:56 -0700 Subject: [PATCH 07/23] Adjusted enemy HP Only strange value to me is Parasifly, since we use one template and the fight can either be a 1v1 or 1v2, but this shouldn't be too big of an issue. --- Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs | 4 ++-- Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs | 2 +- Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs | 2 +- Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs | 2 +- Scenes/Puppets/Enemies/Spider/P_Spider.cs | 2 +- Scenes/Puppets/Enemies/Turtle/P_Turtle.cs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs b/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs index 0b6ec25d..9198c3b9 100644 --- a/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs +++ b/Scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs @@ -8,7 +8,7 @@ public partial class P_BossBlood : EnemyPuppet public override void _Ready() { - MaxHealth = 225; + MaxHealth = 250; CurrentHealth = MaxHealth; BaseMoney = 50; InitialNote = (14, 3); @@ -26,7 +26,7 @@ public override void _Ready() new EnemyEffect( this, BattleEffectTrigger.OnLoop, - 20, + 30, (e, eff, val) => { eff.Owner.Heal(val); diff --git a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs index 143852c4..b64764c5 100644 --- a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs +++ b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs @@ -32,7 +32,7 @@ public override void _Ready() new EnemyEffect( this, BattleEffectTrigger.OnBattleStart, - 7, + 6, (e, eff, val) => { e.BD.AddStatus(Targetting.Player, StatusEffect.MindCrush, val); diff --git a/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs b/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs index af377f27..4ad1ce8c 100644 --- a/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs +++ b/Scenes/Puppets/Enemies/Mushroom/P_Mushroom.cs @@ -9,7 +9,7 @@ public partial class P_Mushroom : EnemyPuppet public override void _Ready() { - MaxHealth = 200; + MaxHealth = 150; CurrentHealth = MaxHealth; BaseMoney = 20; InitialNote = (17, 1); diff --git a/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs b/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs index 74936bd4..bf27cee0 100644 --- a/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs +++ b/Scenes/Puppets/Enemies/Parasifly/P_Parasifly.cs @@ -8,7 +8,7 @@ public partial class P_Parasifly : EnemyPuppet public override void _Ready() { - MaxHealth = 100; + MaxHealth = 75; CurrentHealth = MaxHealth; BaseMoney = 7; InitialNote = (13, 2); diff --git a/Scenes/Puppets/Enemies/Spider/P_Spider.cs b/Scenes/Puppets/Enemies/Spider/P_Spider.cs index 256684ad..9febd0bd 100644 --- a/Scenes/Puppets/Enemies/Spider/P_Spider.cs +++ b/Scenes/Puppets/Enemies/Spider/P_Spider.cs @@ -8,7 +8,7 @@ public partial class P_Spider : EnemyPuppet public override void _Ready() { - MaxHealth = 100; + MaxHealth = 60; CurrentHealth = MaxHealth; BaseMoney = 5; InitialNote = (15, 2); diff --git a/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs b/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs index f61e5e45..47ad8089 100644 --- a/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs +++ b/Scenes/Puppets/Enemies/Turtle/P_Turtle.cs @@ -8,7 +8,7 @@ public partial class P_Turtle : EnemyPuppet public override void _Ready() { - MaxHealth = 150; + MaxHealth = 225; CurrentHealth = MaxHealth; BaseMoney = 40; base._Ready(); From 8fddf7ca50907f0315ce28efc0659f564273a334 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sun, 25 May 2025 15:45:52 -0700 Subject: [PATCH 08/23] song speed changes value of 200 for all songs, notes now take about 2 seconds to go from being visible to being hit --- Audio/songMaps/BossBlood.tres | 10 +++++----- Audio/songMaps/CyberFoxSong.tres | 2 +- Audio/songMaps/EcholaneSong.tres | 2 +- Audio/songMaps/FrostWaltz.tres | 2 +- Audio/songMaps/GWS.tres | 2 +- Audio/songMaps/Gobbler.tres | 2 +- Audio/songMaps/HoloRepeat.tres | 2 +- Audio/songMaps/KeythuluSong.tres | 10 +++++----- Audio/songMaps/Mushroom.tres | 2 +- Audio/songMaps/ParasiflyDouble.tres | 2 +- Audio/songMaps/ParasiflySingle.tres | 2 +- Audio/songMaps/Shapes.tres | 2 +- Audio/songMaps/Spider.tres | 2 +- Audio/songMaps/SquirkelSong.tres | 10 +++++----- Audio/songMaps/TutorialBoss176_7.tres | 2 +- Audio/songMaps/TutorialSong.tres | 2 +- 16 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Audio/songMaps/BossBlood.tres b/Audio/songMaps/BossBlood.tres index 95693782..ece02d0f 100644 --- a/Audio/songMaps/BossBlood.tres +++ b/Audio/songMaps/BossBlood.tres @@ -247,9 +247,9 @@ Length = 0.0 script = ExtResource("2_uhxkd") Bpm = 120 NumLoops = 5 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Song1.ogg" -UpLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_fjllr"), SubResource("Resource_y2wfd"), SubResource("Resource_cb61k"), SubResource("Resource_hbkgo"), SubResource("Resource_80wib"), SubResource("Resource_jsm3m"), SubResource("Resource_ryg8k"), SubResource("Resource_gj6xo"), SubResource("Resource_112dg"), SubResource("Resource_eguul"), SubResource("Resource_tdy7a"), SubResource("Resource_d7de0")]) -DownLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_h1ijp"), SubResource("Resource_ysbfa"), SubResource("Resource_j4c1l"), SubResource("Resource_lktv3"), SubResource("Resource_b0kfm"), SubResource("Resource_xbckj"), SubResource("Resource_gs0vr"), SubResource("Resource_4ygvu"), SubResource("Resource_efsyh")]) -LeftLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_mf3c7"), SubResource("Resource_f15o4"), SubResource("Resource_hsn40"), SubResource("Resource_fdk4c"), SubResource("Resource_1aoo3"), SubResource("Resource_wlcjv"), SubResource("Resource_i1n24"), SubResource("Resource_2jtmb"), SubResource("Resource_qx4ac"), SubResource("Resource_csfw3")]) -RightLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_l3uo1"), SubResource("Resource_erw8g"), SubResource("Resource_alq0l"), SubResource("Resource_rkc43"), SubResource("Resource_tudf6"), SubResource("Resource_tlvlu"), SubResource("Resource_p167p"), SubResource("Resource_dc6jo"), SubResource("Resource_w3cuf"), SubResource("Resource_vjysj"), SubResource("Resource_aqpy1"), SubResource("Resource_ctve7"), SubResource("Resource_nl7kj"), SubResource("Resource_ogyoe"), SubResource("Resource_q33e3"), SubResource("Resource_vqw4k"), SubResource("Resource_s8jc0")]) +UpLaneData = [SubResource("Resource_fjllr"), SubResource("Resource_y2wfd"), SubResource("Resource_cb61k"), SubResource("Resource_hbkgo"), SubResource("Resource_80wib"), SubResource("Resource_jsm3m"), SubResource("Resource_ryg8k"), SubResource("Resource_gj6xo"), SubResource("Resource_112dg"), SubResource("Resource_eguul"), SubResource("Resource_tdy7a"), SubResource("Resource_d7de0")] +DownLaneData = [SubResource("Resource_h1ijp"), SubResource("Resource_ysbfa"), SubResource("Resource_j4c1l"), SubResource("Resource_lktv3"), SubResource("Resource_b0kfm"), SubResource("Resource_xbckj"), SubResource("Resource_gs0vr"), SubResource("Resource_4ygvu"), SubResource("Resource_efsyh")] +LeftLaneData = [SubResource("Resource_mf3c7"), SubResource("Resource_f15o4"), SubResource("Resource_hsn40"), SubResource("Resource_fdk4c"), SubResource("Resource_1aoo3"), SubResource("Resource_wlcjv"), SubResource("Resource_i1n24"), SubResource("Resource_2jtmb"), SubResource("Resource_qx4ac"), SubResource("Resource_csfw3")] +RightLaneData = [SubResource("Resource_l3uo1"), SubResource("Resource_erw8g"), SubResource("Resource_alq0l"), SubResource("Resource_rkc43"), SubResource("Resource_tudf6"), SubResource("Resource_tlvlu"), SubResource("Resource_p167p"), SubResource("Resource_dc6jo"), SubResource("Resource_w3cuf"), SubResource("Resource_vjysj"), SubResource("Resource_aqpy1"), SubResource("Resource_ctve7"), SubResource("Resource_nl7kj"), SubResource("Resource_ogyoe"), SubResource("Resource_q33e3"), SubResource("Resource_vqw4k"), SubResource("Resource_s8jc0")] diff --git a/Audio/songMaps/CyberFoxSong.tres b/Audio/songMaps/CyberFoxSong.tres index fa88c568..fc3ee873 100644 --- a/Audio/songMaps/CyberFoxSong.tres +++ b/Audio/songMaps/CyberFoxSong.tres @@ -117,7 +117,7 @@ Length = 0.0 script = ExtResource("2_s63u8") Bpm = 180 NumLoops = 1 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "CyberFoxSong.ogg" UpLaneData = [SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_rwedv"), SubResource("Resource_3eydr"), SubResource("Resource_83big")] DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_ct6sp"), SubResource("Resource_8ueh4"), SubResource("Resource_7lpnw")] diff --git a/Audio/songMaps/EcholaneSong.tres b/Audio/songMaps/EcholaneSong.tres index aac69093..52e00c04 100644 --- a/Audio/songMaps/EcholaneSong.tres +++ b/Audio/songMaps/EcholaneSong.tres @@ -222,7 +222,7 @@ Length = 0.0 script = ExtResource("2_ulihw") Bpm = 120 NumLoops = 4 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "EcholaneSong.ogg" UpLaneData = [SubResource("Resource_3lcfd"), SubResource("Resource_b1quw"), SubResource("Resource_lq0og"), SubResource("Resource_56y1a"), SubResource("Resource_jljr5"), SubResource("Resource_bxx88"), SubResource("Resource_bdoqu"), SubResource("Resource_cr07w")] DownLaneData = [SubResource("Resource_vkj58"), SubResource("Resource_ulihw"), SubResource("Resource_t8863"), SubResource("Resource_6g1by"), SubResource("Resource_m02wy"), SubResource("Resource_t1nlw"), SubResource("Resource_iknre"), SubResource("Resource_icwn4"), SubResource("Resource_vkj1q"), SubResource("Resource_g5inb")] diff --git a/Audio/songMaps/FrostWaltz.tres b/Audio/songMaps/FrostWaltz.tres index e604c168..47d5fa10 100644 --- a/Audio/songMaps/FrostWaltz.tres +++ b/Audio/songMaps/FrostWaltz.tres @@ -97,7 +97,7 @@ Length = 0.0 script = ExtResource("2_ipsne") Bpm = 99 NumLoops = 5 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "FrostWaltz.ogg" UpLaneData = [SubResource("Resource_ffi45"), SubResource("Resource_3tfr0"), SubResource("Resource_ipsne")] DownLaneData = [SubResource("Resource_dwqep"), SubResource("Resource_ukqut"), SubResource("Resource_x1mw3"), SubResource("Resource_54umo"), SubResource("Resource_o0hqd"), SubResource("Resource_8s5n5"), SubResource("Resource_bsuy3")] diff --git a/Audio/songMaps/GWS.tres b/Audio/songMaps/GWS.tres index e670a6ee..78318377 100644 --- a/Audio/songMaps/GWS.tres +++ b/Audio/songMaps/GWS.tres @@ -292,7 +292,7 @@ Length = 0.0 script = ExtResource("2_4vdmh") Bpm = 120 NumLoops = 1 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Song3.ogg" UpLaneData = [SubResource("Resource_3gjtl"), SubResource("Resource_vdnsu"), SubResource("Resource_3wyug"), SubResource("Resource_6kji1"), SubResource("Resource_w6jqv"), SubResource("Resource_083mg"), SubResource("Resource_dsf4k"), SubResource("Resource_2woca"), SubResource("Resource_jsj5h"), SubResource("Resource_qoqm3"), SubResource("Resource_nob8r"), SubResource("Resource_a6epf"), SubResource("Resource_ekjhc")] DownLaneData = [SubResource("Resource_11qbm"), SubResource("Resource_hrrtc"), SubResource("Resource_rmog3"), SubResource("Resource_tnqsp"), SubResource("Resource_fldsc"), SubResource("Resource_ntp27"), SubResource("Resource_7nmxt"), SubResource("Resource_47jch"), SubResource("Resource_kp5f0"), SubResource("Resource_v8s33"), SubResource("Resource_hrafv"), SubResource("Resource_d50tw"), SubResource("Resource_a8amf"), SubResource("Resource_mbtm7"), SubResource("Resource_ynh6c"), SubResource("Resource_marsf")] diff --git a/Audio/songMaps/Gobbler.tres b/Audio/songMaps/Gobbler.tres index 9931c118..ab872abf 100644 --- a/Audio/songMaps/Gobbler.tres +++ b/Audio/songMaps/Gobbler.tres @@ -217,7 +217,7 @@ Length = 0.0 script = ExtResource("2_hfiht") Bpm = 120 NumLoops = 6 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Gobbler.ogg" UpLaneData = [SubResource("Resource_8xjpx"), SubResource("Resource_wsgab"), SubResource("Resource_qwdig"), SubResource("Resource_66kxm"), SubResource("Resource_7ilo7"), SubResource("Resource_a20b3"), SubResource("Resource_pqrtt"), SubResource("Resource_pwr5v"), SubResource("Resource_rt0eg"), SubResource("Resource_8g5uo")] DownLaneData = [SubResource("Resource_i2qfq"), SubResource("Resource_clkmt"), SubResource("Resource_2yhqr"), SubResource("Resource_avloc"), SubResource("Resource_7ipoh"), SubResource("Resource_rc4vs"), SubResource("Resource_hsxfe"), SubResource("Resource_5uul0"), SubResource("Resource_20iwo")] diff --git a/Audio/songMaps/HoloRepeat.tres b/Audio/songMaps/HoloRepeat.tres index 72f2ed94..8c4f67cb 100644 --- a/Audio/songMaps/HoloRepeat.tres +++ b/Audio/songMaps/HoloRepeat.tres @@ -127,7 +127,7 @@ Length = 0.0 script = ExtResource("2_1kkot") Bpm = 130 NumLoops = 1 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Holo_ThereItIs.ogg" UpLaneData = [SubResource("Resource_rclq0"), SubResource("Resource_d15sy"), SubResource("Resource_xylpo"), SubResource("Resource_c4e5y"), SubResource("Resource_7lbis"), SubResource("Resource_8usgo")] DownLaneData = [SubResource("Resource_wxfu7"), SubResource("Resource_cjafy"), SubResource("Resource_jdotv"), SubResource("Resource_per1x"), SubResource("Resource_lw4uc"), SubResource("Resource_nxcmx")] diff --git a/Audio/songMaps/KeythuluSong.tres b/Audio/songMaps/KeythuluSong.tres index 4e4f2257..5a162c18 100644 --- a/Audio/songMaps/KeythuluSong.tres +++ b/Audio/songMaps/KeythuluSong.tres @@ -207,9 +207,9 @@ Length = 0.0 script = ExtResource("2_s63u8") Bpm = 170 NumLoops = 9 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "KeythuluSong.ogg" -UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")]) -DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")]) -LeftLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")]) -RightLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_lfmd3"), SubResource("Resource_x1ijp"), SubResource("Resource_6jgy8"), SubResource("Resource_oxq2d"), SubResource("Resource_3102k"), SubResource("Resource_j4fdm"), SubResource("Resource_5raac"), SubResource("Resource_c27cp"), SubResource("Resource_pfqra"), SubResource("Resource_2nxl5"), SubResource("Resource_67x67")]) +UpLaneData = [SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")] +DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")] +LeftLaneData = [SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")] +RightLaneData = [SubResource("Resource_lfmd3"), SubResource("Resource_x1ijp"), SubResource("Resource_6jgy8"), SubResource("Resource_oxq2d"), SubResource("Resource_3102k"), SubResource("Resource_j4fdm"), SubResource("Resource_5raac"), SubResource("Resource_c27cp"), SubResource("Resource_pfqra"), SubResource("Resource_2nxl5"), SubResource("Resource_67x67")] diff --git a/Audio/songMaps/Mushroom.tres b/Audio/songMaps/Mushroom.tres index 7c6ac43d..c6b9aa65 100644 --- a/Audio/songMaps/Mushroom.tres +++ b/Audio/songMaps/Mushroom.tres @@ -77,7 +77,7 @@ Length = 0.0 script = ExtResource("2_0c8vj") Bpm = 100 NumLoops = 4 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Mushroom.ogg" UpLaneData = [SubResource("Resource_ymucf"), SubResource("Resource_bmgju"), SubResource("Resource_sosma"), SubResource("Resource_3retf")] DownLaneData = [SubResource("Resource_pprmk"), SubResource("Resource_n1l5w"), SubResource("Resource_0c8vj")] diff --git a/Audio/songMaps/ParasiflyDouble.tres b/Audio/songMaps/ParasiflyDouble.tres index 6a4e498b..d070cdc9 100644 --- a/Audio/songMaps/ParasiflyDouble.tres +++ b/Audio/songMaps/ParasiflyDouble.tres @@ -122,7 +122,7 @@ Length = 0.0 script = ExtResource("2_p8lx2") Bpm = 120 NumLoops = 2 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Song2.ogg" UpLaneData = [SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")] DownLaneData = [SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")] diff --git a/Audio/songMaps/ParasiflySingle.tres b/Audio/songMaps/ParasiflySingle.tres index c33068e5..94eddfa4 100644 --- a/Audio/songMaps/ParasiflySingle.tres +++ b/Audio/songMaps/ParasiflySingle.tres @@ -122,7 +122,7 @@ Length = 0.0 script = ExtResource("2_qfjvo") Bpm = 60 NumLoops = 1 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Song2.ogg" UpLaneData = [SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")] DownLaneData = [SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")] diff --git a/Audio/songMaps/Shapes.tres b/Audio/songMaps/Shapes.tres index ac1ea63a..25119e0e 100644 --- a/Audio/songMaps/Shapes.tres +++ b/Audio/songMaps/Shapes.tres @@ -187,7 +187,7 @@ Length = 0.0 script = ExtResource("2_j6rk8") Bpm = 107 NumLoops = 7 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Shapes.ogg" UpLaneData = [SubResource("Resource_20ma1"), SubResource("Resource_t2x17"), SubResource("Resource_hsyk0"), SubResource("Resource_txx7m"), SubResource("Resource_uic3e"), SubResource("Resource_fy78b"), SubResource("Resource_p1dmw"), SubResource("Resource_7k1m6"), SubResource("Resource_e223l")] DownLaneData = [SubResource("Resource_egl41"), SubResource("Resource_j6rk8"), SubResource("Resource_61fe8"), SubResource("Resource_dmlrl"), SubResource("Resource_xny5e"), SubResource("Resource_sybk5"), SubResource("Resource_cs7yi"), SubResource("Resource_xv7yd"), SubResource("Resource_pfidy"), SubResource("Resource_n0y2d")] diff --git a/Audio/songMaps/Spider.tres b/Audio/songMaps/Spider.tres index 816c1b3d..b33870ef 100644 --- a/Audio/songMaps/Spider.tres +++ b/Audio/songMaps/Spider.tres @@ -137,7 +137,7 @@ Length = 0.0 script = ExtResource("2_ojgcg") Bpm = 130 NumLoops = 3 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "Spider.ogg" UpLaneData = [SubResource("Resource_j42ns"), SubResource("Resource_kihon"), SubResource("Resource_j43rp"), SubResource("Resource_3j8yo"), SubResource("Resource_vk213"), SubResource("Resource_dsydf")] DownLaneData = [SubResource("Resource_kilos"), SubResource("Resource_ojgcg"), SubResource("Resource_e2i3v"), SubResource("Resource_bxgte"), SubResource("Resource_7c41j"), SubResource("Resource_ibasm"), SubResource("Resource_57q1g")] diff --git a/Audio/songMaps/SquirkelSong.tres b/Audio/songMaps/SquirkelSong.tres index 7fa60430..eaef9def 100644 --- a/Audio/songMaps/SquirkelSong.tres +++ b/Audio/songMaps/SquirkelSong.tres @@ -87,9 +87,9 @@ Length = 0.0 script = ExtResource("2_s63u8") Bpm = 180 NumLoops = 5 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "SquirkelSong.ogg" -UpLaneData = [SubResource("Resource_50tbs"), SubResource("Resource_ttd2q")] -DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_oocdv")] -LeftLaneData = [] -RightLaneData = [SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw")] +UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_50tbs"), SubResource("Resource_ttd2q")]) +DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_oocdv")]) +LeftLaneData = Array[ExtResource("1_8ueh4")]([]) +RightLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw")]) diff --git a/Audio/songMaps/TutorialBoss176_7.tres b/Audio/songMaps/TutorialBoss176_7.tres index fc22a24b..adebdd64 100644 --- a/Audio/songMaps/TutorialBoss176_7.tres +++ b/Audio/songMaps/TutorialBoss176_7.tres @@ -292,7 +292,7 @@ Length = 0.0 script = ExtResource("2_gbai3") Bpm = 176 NumLoops = 7 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "District_Four.ogg" UpLaneData = [SubResource("Resource_w1u0b"), SubResource("Resource_gbai3"), SubResource("Resource_bcwc6"), SubResource("Resource_0k2f6"), SubResource("Resource_tgoco"), SubResource("Resource_x1j4d"), SubResource("Resource_e76xg"), SubResource("Resource_vhygb"), SubResource("Resource_unq76"), SubResource("Resource_cn75w"), SubResource("Resource_3pobr"), SubResource("Resource_43v1q"), SubResource("Resource_2i0ix"), SubResource("Resource_eo1b6"), SubResource("Resource_ehfsr"), SubResource("Resource_05gdy"), SubResource("Resource_b164v"), SubResource("Resource_86j1n"), SubResource("Resource_p6bp3"), SubResource("Resource_7erhr"), SubResource("Resource_n6xrx"), SubResource("Resource_75ujr"), SubResource("Resource_mlxr3"), SubResource("Resource_5vw1o"), SubResource("Resource_suuru")] DownLaneData = [SubResource("Resource_sxt82"), SubResource("Resource_j5ca6"), SubResource("Resource_cfyig"), SubResource("Resource_oq2fs"), SubResource("Resource_bv13m"), SubResource("Resource_lg6ov"), SubResource("Resource_eg7rs"), SubResource("Resource_x3k65"), SubResource("Resource_d5g7d"), SubResource("Resource_1cpsm"), SubResource("Resource_giltv")] diff --git a/Audio/songMaps/TutorialSong.tres b/Audio/songMaps/TutorialSong.tres index fd0a10f4..eaa80232 100644 --- a/Audio/songMaps/TutorialSong.tres +++ b/Audio/songMaps/TutorialSong.tres @@ -107,7 +107,7 @@ Length = 0.0 script = ExtResource("2_bsw0b") Bpm = 90 NumLoops = 1 -SongSpeed = -1.0 +SongSpeed = 200.0 SongMapLocation = "TutorialSong.ogg" UpLaneData = [SubResource("Resource_bnbk2"), SubResource("Resource_t2mc0"), SubResource("Resource_xl4h8"), SubResource("Resource_7i220"), SubResource("Resource_txc3y"), SubResource("Resource_iixj3"), SubResource("Resource_5o1tj"), SubResource("Resource_l3ivu"), SubResource("Resource_d6d5y")] DownLaneData = [SubResource("Resource_a0ovt"), SubResource("Resource_ahash"), SubResource("Resource_6gc2p"), SubResource("Resource_tjsh3"), SubResource("Resource_s18ys"), SubResource("Resource_wcsgu"), SubResource("Resource_r81qg"), SubResource("Resource_roxhp")] From bea26eb6640109c25faa82ee4c1e621c365e6a13 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sun, 25 May 2025 15:54:10 -0700 Subject: [PATCH 09/23] standardized battle countdown --- Scenes/BattleDirector/Scripts/BattleDirector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index 7e9a4276..bf92d949 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -57,7 +57,7 @@ public void StartCountdown() _countdownTween.Finished += SyncStartWithMix; _countdown = 4; - _countdownTween.TweenProperty(this, nameof(_countdown), 0, 5 / (TimeKeeper.Bpm / 60)); + _countdownTween.TweenProperty(this, nameof(_countdown), 0, 5); _countdownLabel.Visible = true; _countdownTween.Play(); } From 462ed920317978f5ff6e4ab6707adaefb7a89058 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sun, 25 May 2025 16:24:14 -0700 Subject: [PATCH 10/23] Undo countdown standardizing This was intentionally mis-timed to signify the BPM of a song. --- Scenes/BattleDirector/Scripts/BattleDirector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index bf92d949..7e9a4276 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -57,7 +57,7 @@ public void StartCountdown() _countdownTween.Finished += SyncStartWithMix; _countdown = 4; - _countdownTween.TweenProperty(this, nameof(_countdown), 0, 5); + _countdownTween.TweenProperty(this, nameof(_countdown), 0, 5 / (TimeKeeper.Bpm / 60)); _countdownLabel.Visible = true; _countdownTween.Play(); } From 04333effe6e350bfb156f8944e5e92e6d3ed4d49 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sun, 25 May 2025 18:42:03 -0700 Subject: [PATCH 11/23] Price adjustments --- Scenes/ShopScene/Scripts/ShopScene.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Scenes/ShopScene/Scripts/ShopScene.cs b/Scenes/ShopScene/Scripts/ShopScene.cs index 814b4334..2febce87 100644 --- a/Scenes/ShopScene/Scripts/ShopScene.cs +++ b/Scenes/ShopScene/Scripts/ShopScene.cs @@ -58,8 +58,8 @@ public partial class ShopScene : Control private ButtonGroup _bGroup; - private readonly int[] _priceByRarity = [100, 90, 80, 70, 60, 50, 9]; - const int NoteCost = 45; + private readonly int[] _priceByRarity = [200, 180, 160, 140, 120, 100, 18]; + const int NoteCost = 90; private List _shopItems = new List(); @@ -251,7 +251,7 @@ private void ChangeDescription(IDisplayable displayable) _descriptionLabel.Text = Tr(type + name + "_NAME") + ": " + Tr(type + name + "_TOOLTIP"); } - private const int RemovalCost = 50; + private const int RemovalCost = 75; private bool _hasRemoved; private void OpenRemovalPane() @@ -331,7 +331,7 @@ private void RemoveNote() } private bool _hasHealed; - private const int HealCost = 30; + private const int HealCost = 50; private int _healAmount = (StageProducer.PlayerStats.MaxHealth / 4); private void UpdateHealButton() From e1029301ea24e1982f85ae3cbcb4bd4cb70e0196 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Mon, 26 May 2025 18:32:21 -0700 Subject: [PATCH 12/23] Added war horn All normal battles are now elite battles --- Classes/Relics/Assets/Relic_WarHorn.png | Bin 0 -> 1078 bytes .../Relics/Assets/Relic_WarHorn.png.import | 34 ++++++++++++++++++ Globals/FunkEngineNameSpace.cs | 14 +++++++- Globals/Scribe.cs | 17 +++++++++ Globals/StageProducer.cs | 1 + Globals/Translations/Translations.csv | 2 ++ 6 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 Classes/Relics/Assets/Relic_WarHorn.png create mode 100644 Classes/Relics/Assets/Relic_WarHorn.png.import diff --git a/Classes/Relics/Assets/Relic_WarHorn.png b/Classes/Relics/Assets/Relic_WarHorn.png new file mode 100644 index 0000000000000000000000000000000000000000..e64e944c2994f7e5994923db9ce6544c0ee75372 GIT binary patch literal 1078 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!hW5;mh>{3jAFJg2T)o7U{G?R9irfOAY6b=y z`-+0Zwic-?7f?V97Du6s&rHqo20xNy} z^73-Ma$~*xqI7*jOG`_A10#JSBVC{h-Qvo;lEez#ykcdj0WPV<$wiq3C7Jno3Lpa$ zlk!VTY?Vq&GgGY664OkRQc_HHlM;q>hst(g4dgWi<4=UrHq>}{I;;gQhF8T@P3ZtGh! zbwXEV{r(fFj1#sB6>aUglx4T8>Jf{JUiatIDgWMDdo6xf_As4)<%3gy@|Bq4uEw2S znl$g{RsJP=nVfu+rQa!kENEMN;Ol)M!2{XL%QzZBPAD6#x*s<&aOdrtPxI2npMKR| zqaV*GuuAIGCkv(cgS$H49ay8j9?bw)}|2PV&{SluBSp}rAh>ekZ# zM?Ux6|9Nz&{A|;Hh7Gr@Ha`=*>~*$3I(KgSW8rt-`I)L8cZe38;k4 S>aM$>%("res://Classes/Relics/Assets/Relic_WarHorn.png"), + new RelicEffect[] + { + new RelicEffect( + BattleEffectTrigger.OnPickup, + 1, + (e, self, val) => + { + MapGrid.ForceEliteBattles = true; + } + ), + } + ), }; private static string DefaultNoteChartPath = "Audio/songMaps/"; diff --git a/Globals/StageProducer.cs b/Globals/StageProducer.cs index 396c1b9e..60bdba74 100644 --- a/Globals/StageProducer.cs +++ b/Globals/StageProducer.cs @@ -84,6 +84,7 @@ private void StartNewGame() EventScene.EventPool = null; Scribe.InitRelicPools(); IsInitialized = true; + MapGrid.ForceEliteBattles = false; } private bool LoadGame() diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index 48b4b286..c997b689 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -111,6 +111,8 @@ RELIC_BLOODMONEY_NAME,Blood Money,血腥钱袋 RELIC_BLOODMONEY_TOOLTIP,Gain money when taking damage below half health.,在生命值低于一半时受到伤害可获得金钱。 RELIC_COUPON_NAME,Coupon,优惠券 RELIC_COUPON_TOOLTIP,Get a 10% discount on notes and relics in the shop.,在商店购买音符和遗物时可享受9折优惠。 +RELIC_WARHORN_NAME,War Horn,(translation needed) +RELIC_WARHORN_TOOLTIP,All normal battles are now elite battles.,(translation needed) INVENTORY_TAB_NOTES,Notes,乐谱 INVENTORY_TAB_RELICS,Relics,遗物 OPTIONS_VOLUME_LABEL,Master Volume,最终音量设置 From 1d7a9b42256f007d5dafd8c159f1bafe5019c274 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Tue, 27 May 2025 00:24:15 -0700 Subject: [PATCH 13/23] Added looter's lens thanks for making this so easy Jarod gives reward screens one more option to choose from --- Classes/Relics/Assets/Relic_LootersLens.png | Bin 0 -> 314 bytes .../Assets/Relic_LootersLens.png.import | 34 ++++++++++++++++++ Globals/Scribe.cs | 17 +++++++++ Globals/Translations/Translations.csv | 2 ++ 4 files changed, 53 insertions(+) create mode 100644 Classes/Relics/Assets/Relic_LootersLens.png create mode 100644 Classes/Relics/Assets/Relic_LootersLens.png.import diff --git a/Classes/Relics/Assets/Relic_LootersLens.png b/Classes/Relics/Assets/Relic_LootersLens.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8a8acd15b785343115fd1229d72ad769b7f357 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;CW9M$B+p3w^I&sG8qcEZWrjE_Ta3PO=Pop zw1DHAgUz8j5gj)=fS@9xveCZfNQTXhxMz+ho(UW2JKtFL+t^p?OE3412JRgWY6Vig zyN~~yaLis=*n+Q3FM;X$Q>!(S&re?2bUQ8EGP^LpeA?$&=Rk*c&b_>zhMU`E1g1PO z7h%=gT&ZzL=KhpO*PH5|o3<#M?h&mhU2sG}OrXPKL)#*Un&1U@xBQsQ@S;b`sPTur ygQKn1$pD*oUN0^srT&)ixHgFs>H?r64hVmL*&1E>cXtucYYd*QelF{r5}E+Xlz37A literal 0 HcmV?d00001 diff --git a/Classes/Relics/Assets/Relic_LootersLens.png.import b/Classes/Relics/Assets/Relic_LootersLens.png.import new file mode 100644 index 00000000..3a8c1cdd --- /dev/null +++ b/Classes/Relics/Assets/Relic_LootersLens.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1kavqh73arsv" +path="res://.godot/imported/Relic_LootersLens.png-fbad200d69c23fb6df24a1cee6ad0bd2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Relics/Assets/Relic_LootersLens.png" +dest_files=["res://.godot/imported/Relic_LootersLens.png-fbad200d69c23fb6df24a1cee6ad0bd2.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 461dce8c..108e2fd1 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -597,6 +597,23 @@ e is BattleDirector.Harbinger.OnDamageInstanceArgs dmgArgs ), } ), + new RelicTemplate( + 19, + "Looter's Lens", + Rarity.Uncommon, + GD.Load("res://Classes/Relics/Assets/Relic_LootersLens.png"), + new RelicEffect[] + { + new RelicEffect( + BattleEffectTrigger.OnPickup, + 1, + (e, self, val) => + { + StageProducer.PlayerStats.RewardAmountModifier += val; + } + ), + } + ), }; private static string DefaultNoteChartPath = "Audio/songMaps/"; diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index c997b689..7dc69d56 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -113,6 +113,8 @@ RELIC_COUPON_NAME,Coupon,优惠券 RELIC_COUPON_TOOLTIP,Get a 10% discount on notes and relics in the shop.,在商店购买音符和遗物时可享受9折优惠。 RELIC_WARHORN_NAME,War Horn,(translation needed) RELIC_WARHORN_TOOLTIP,All normal battles are now elite battles.,(translation needed) +RELIC_LOOTER'SLENS_NAME,Looter's Lens,(translation needed) +RELIC_LOOTER'SLENS_TOOLTIP,Can see one more item in reward selection screens.,(translation needed) INVENTORY_TAB_NOTES,Notes,乐谱 INVENTORY_TAB_RELICS,Relics,遗物 OPTIONS_VOLUME_LABEL,Master Volume,最终音量设置 From b80b734f91b897bf33804507ce66edb4042efe7e Mon Sep 17 00:00:00 2001 From: cornerloan Date: Tue, 27 May 2025 17:20:53 -0700 Subject: [PATCH 14/23] Added Quito MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit first legendary relic 🙌 --- Classes/Relics/Assets/Relic_Quito.png | Bin 0 -> 326 bytes Classes/Relics/Assets/Relic_Quito.png.import | 34 +++++++++++++++++++ Globals/Scribe.cs | 24 +++++++++++++ Globals/Translations/Translations.csv | 2 ++ 4 files changed, 60 insertions(+) create mode 100644 Classes/Relics/Assets/Relic_Quito.png create mode 100644 Classes/Relics/Assets/Relic_Quito.png.import diff --git a/Classes/Relics/Assets/Relic_Quito.png b/Classes/Relics/Assets/Relic_Quito.png new file mode 100644 index 0000000000000000000000000000000000000000..af31dcd69b73b1ab474df9097136d504ac109dd0 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;B8MA$B+p3x04QX9&!+H4eoIF{*cByZ;hgO z^@k*Wxi=0U6e2t}2nq@Ye%$bh*}kUj<^loUQ#KJNe9F@9MwafdUB$1hsky*4||KL5$C z7*oS<6+4)|spQ;HYlwI)u(hCBjkGpQ^(g^ zf$de@+6)&w_RIe-IvdGYdtUnT{}amE3tlv=`^nqrFT|uM0784YZ5XfDwW?PJs0#wU O$>8bg=d#Wzp$Pz}wR_zF literal 0 HcmV?d00001 diff --git a/Classes/Relics/Assets/Relic_Quito.png.import b/Classes/Relics/Assets/Relic_Quito.png.import new file mode 100644 index 00000000..ab35bc65 --- /dev/null +++ b/Classes/Relics/Assets/Relic_Quito.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fqipkj25gbym" +path="res://.godot/imported/Relic_Quito.png-5c7f1276f14d3faa906bdf363c28e4f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Relics/Assets/Relic_Quito.png" +dest_files=["res://.godot/imported/Relic_Quito.png-5c7f1276f14d3faa906bdf363c28e4f8.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 108e2fd1..8a10828d 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -614,6 +614,30 @@ e is BattleDirector.Harbinger.OnDamageInstanceArgs dmgArgs ), } ), + new RelicTemplate( + 20, + "Quito", + Rarity.Legendary, + GD.Load("res://Classes/Relics/Assets/Relic_Quito.png"), + new RelicEffect[] + { + new RelicEffect( + BattleEffectTrigger.NoteHit, + 1, + (e, self, val) => + { + if ( + e is BattleDirector.Harbinger.NoteHitArgs noteArgs + && noteArgs.Note.Owner == e.BD.Player + && noteArgs.Timing != Timing.Miss + ) + { + noteArgs.Note.OnHit(e.BD, Timing.Bad); + } + } + ), + } + ), }; private static string DefaultNoteChartPath = "Audio/songMaps/"; diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index 7dc69d56..49f19e69 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -115,6 +115,8 @@ RELIC_WARHORN_NAME,War Horn,(translation needed) RELIC_WARHORN_TOOLTIP,All normal battles are now elite battles.,(translation needed) RELIC_LOOTER'SLENS_NAME,Looter's Lens,(translation needed) RELIC_LOOTER'SLENS_TOOLTIP,Can see one more item in reward selection screens.,(translation needed) +RELIC_QUITO_NAME,Quito,(Translation needed) +RELIC_QUITO_TOOLTIP,Quito mimics the player, duplicating all of their notes with bad timing.,(translation needed) INVENTORY_TAB_NOTES,Notes,乐谱 INVENTORY_TAB_RELICS,Relics,遗物 OPTIONS_VOLUME_LABEL,Master Volume,最终音量设置 From 9a2ebdffa1fc307650367dcb9dbc5aa905acb7b7 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Tue, 27 May 2025 18:09:04 -0700 Subject: [PATCH 15/23] Added soloist's triangle name pending, might have to update later once we get new note sprites --- .../Relics/Assets/Relic_Soloist'sTriangle.png | Bin 0 -> 331 bytes .../Assets/Relic_Soloist'sTriangle.png.import | 34 ++++++++++++++++++ Globals/Scribe.cs | 18 ++++++++++ Globals/Translations/Translations.csv | 4 ++- Scenes/ChartViewport/Scripts/ChartManager.cs | 3 +- Scenes/Puppets/Scripts/PlayerStats.cs | 1 + 6 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 Classes/Relics/Assets/Relic_Soloist'sTriangle.png create mode 100644 Classes/Relics/Assets/Relic_Soloist'sTriangle.png.import diff --git a/Classes/Relics/Assets/Relic_Soloist'sTriangle.png b/Classes/Relics/Assets/Relic_Soloist'sTriangle.png new file mode 100644 index 0000000000000000000000000000000000000000..66fcc482b5712eec267288e94935c5a58217f9e0 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!-~&$=$B+p3x04QXGCA_NZWrjE_Ta3PO=Pop z^@k*WxiwB3CLDEhadA1){HawudCtM^H%dzQeYH%@SovZ zbK;hJOMa}q>$-c@eC8`ED-LJKycIu?X;v@xUHw7y>s>czwTDdjk-F8)|Myh?H+v$) zvOU=ZUiM91DSDOd5d%j=tE%Y{b_c_6lZC52*cdiSc^g_XX`KI`{fObiIhXxR3MZ~M z1is{)F`q&G%TZef!-UlgJrhDd{n_iV^gma_ETPZe4?p*k7k&}NIe`I+E?6I6R!J&w UStU@Z3G^$2r>mdKI;Vst0IKqV1^@s6 literal 0 HcmV?d00001 diff --git a/Classes/Relics/Assets/Relic_Soloist'sTriangle.png.import b/Classes/Relics/Assets/Relic_Soloist'sTriangle.png.import new file mode 100644 index 00000000..97c95cd1 --- /dev/null +++ b/Classes/Relics/Assets/Relic_Soloist'sTriangle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drq2grd4nh0c5" +path="res://.godot/imported/Relic_Soloist'sTriangle.png-b379020270ecace18bdeff6920a65ad7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Relics/Assets/Relic_Soloist'sTriangle.png" +dest_files=["res://.godot/imported/Relic_Soloist'sTriangle.png-b379020270ecace18bdeff6920a65ad7.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 8a10828d..e9b2ca43 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -638,6 +638,24 @@ e is BattleDirector.Harbinger.NoteHitArgs noteArgs ), } ), + new RelicTemplate( + 21, + "Soloist's Triangle", + Rarity.Epic, + GD.Load("res://Classes/Relics/Assets/Relic_Soloist'sTriangle.png"), + new RelicEffect[] + { + new RelicEffect( + BattleEffectTrigger.OnPickup, + 1, + (e, self, val) => + { + StageProducer.PlayerStats.ChartSpeedMultiplier += val; + StageProducer.PlayerStats.RewardAmountModifier += 3; + } + ), + } + ), }; private static string DefaultNoteChartPath = "Audio/songMaps/"; diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index 49f19e69..79bafc5e 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -116,7 +116,9 @@ RELIC_WARHORN_TOOLTIP,All normal battles are now elite battles.,(translation nee RELIC_LOOTER'SLENS_NAME,Looter's Lens,(translation needed) RELIC_LOOTER'SLENS_TOOLTIP,Can see one more item in reward selection screens.,(translation needed) RELIC_QUITO_NAME,Quito,(Translation needed) -RELIC_QUITO_TOOLTIP,Quito mimics the player, duplicating all of their notes with bad timing.,(translation needed) +RELIC_QUITO_TOOLTIP,"Quito mimics the player, duplicating all of their notes with bad timing.",(translation needed) +RELIC_SOLOIST'STRIANGLE_NAME,Soloist's Triangle,(translation needed) +RELIC_SOLOIST'STRIANGLE_TOOLTIP,"Charts move at double speed, reward selections have 3 additional options to choose from.",(translation needed) INVENTORY_TAB_NOTES,Notes,乐谱 INVENTORY_TAB_RELICS,Relics,遗物 OPTIONS_VOLUME_LABEL,Master Volume,最终音量设置 diff --git a/Scenes/ChartViewport/Scripts/ChartManager.cs b/Scenes/ChartViewport/Scripts/ChartManager.cs index 2d28aaab..e4db9e61 100644 --- a/Scenes/ChartViewport/Scripts/ChartManager.cs +++ b/Scenes/ChartViewport/Scripts/ChartManager.cs @@ -84,7 +84,8 @@ public void Initialize(NoteChart songData, double songLen) double loopLen = songLen / songData.NumLoops; if (songData.SongSpeed > 0) - _chartLength = songData.SongSpeed * loopLen; + _chartLength = + songData.SongSpeed * loopLen * StageProducer.PlayerStats.ChartSpeedMultiplier; //99% sure chart length can never be less than (chart viewport width) * 2, //otherwise there isn't room for things to loop from off and on screen _chartLength = Math.Max( diff --git a/Scenes/Puppets/Scripts/PlayerStats.cs b/Scenes/Puppets/Scripts/PlayerStats.cs index 3d3581f7..a0410bd1 100644 --- a/Scenes/Puppets/Scripts/PlayerStats.cs +++ b/Scenes/Puppets/Scripts/PlayerStats.cs @@ -16,6 +16,7 @@ public partial class PlayerStats : Resource public int Rerolls = 0; public int Shortcuts = 0; public int DiscountPercent = 0; + public int ChartSpeedMultiplier = 1; //Array in order of descending rarities, Legendary -> ... Common. Int odds out of 100. public int[] RarityOdds = [1, 5, 10, 20, 100]; From 6fe91458cc5c5809ef04070a2cc54ed37c241dfe Mon Sep 17 00:00:00 2001 From: cornerloan Date: Tue, 27 May 2025 23:16:36 -0700 Subject: [PATCH 16/23] Added Tinsel also updated chart speed to be a float and multiplicative, in case we combine multiple chart speed values. --- Classes/Relics/Assets/Relic_Tinsel.png | Bin 0 -> 2962 bytes Classes/Relics/Assets/Relic_Tinsel.png.import | 34 +++++++++++++++++ Globals/Scribe.cs | 36 +++++++++++++++++- Globals/Translations/Translations.csv | 2 + Scenes/Puppets/Scripts/PlayerStats.cs | 2 +- 5 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 Classes/Relics/Assets/Relic_Tinsel.png create mode 100644 Classes/Relics/Assets/Relic_Tinsel.png.import diff --git a/Classes/Relics/Assets/Relic_Tinsel.png b/Classes/Relics/Assets/Relic_Tinsel.png new file mode 100644 index 0000000000000000000000000000000000000000..6c71bc7f4118f351da86a811b408dbf993416c39 GIT binary patch literal 2962 zcmY*bc{~)_9!J!WWylpnmWfczLc%oGXBlM=A<>u_+hoZM#*&>eWNAp7kTqnn{eI_rmd~MBTbc^+f%rH$I0Vd4Mz(A&dqjZa z?2!-_w!vnc1Y1)>j;cW^7F*%=G_Ww>;CPjOau3bJ)_DU^P6Q4P!OkP%e0?9k%$`8@ zwsRypT9_j+{=N`2*54fmA^8Tdqd7Q`dZYj}29G1ky5l^({d5#pT00bFy|Frq*EK9) z76Jdjd3mG40&&;EEbTC1c#JkyQBPNZ4@p9>Gx*|&Xjzi)Z9f8nqyzpdF@h~0nW11^ zWFXc9VQXaaD}t@*fW3&s00a~o5)uLlQHS^kdP3pa+S*W<8dOb9l^vl<2=ybPNveK? zv%eA;;Ru*O?*O8=zn|<;LbSVo5K#vl6y%LXc%VHr+_6{#PiYWYY;SOt3H*j*fz)P*De^8cR= z2|a4$e;U*MkA=Nfw)8hLM=<@3F3yh)X$TuTm8?f6+1r$5W@KRJXqx(PBJE~hP-4fY z2B!L-|GN9+-CH|x0bjEmOWW8+ZZoW_oK1e1f4UkeqjZxU-{`9g_^N-pa6 z3(kD!A;jF!_8e-!_ZzEcDV-ulE~TV${aGHhk6$j2qUg13moW}`nNnlUISpS__+s<} z4gm3rK*NaLx+cRt2-leSJvhf!yVa*V9ON`PK0Vtrz-^Nhlm-KIs$=W40R~d>S)qgb;USNu&JZFJEy)&mzO;rvJ_8G z7thPhPl+Cpwddz%j!EA=xR4ei zUDJ3;|2@zAR?=Fhw7mvna72?=hK8!@HYh6;cysHqWP*R^zu*Fy9K~0XhfMqcYZ@ zp6hN?j0wi+mu`{d%9Y;ed`I2-hbY3z$Gkg%yB~>mgDG{{FEU3Y zH=HIMO~p-TceU^=f!&vBW2+2~ii;B$J$=26kmAFQAPj$`ta1wVwySKsepR)u3OFyaW8jak zAp0BZOVb&(D#|Iz^dI1^-0ssLa!+%#mcSh^4^N3)9;#A4v+E}=9oN+NENWY^eeVO4 zy9cgmD(A^cYW1VAXlm}F*P63yo{q@yqZp4m^M`s9ENDvei{w^hR9N>KT^w`KIM^he znvh?t=!3jTw=fhF+u`WH`mpNum$u0J0|Uxe)jSVbf+5n<`7Up)4t`hxu2-*0su$f{ z7#3AEb|U=Tv7ZXv+$2Sk%5LM0_j9 zqiXvivfUX0y()}>8WPjf9bmFjul8^~PaZCW|AN@6CJTK#GLA&31wTbxBQRSpSJ zYV z7ld}aD$5oVYhQSmgV^VybTp@Lm%OB>M{`cunqyeqRP*;W z8mN%2l@aNaW7s~Y4V7xIU_h;DZZ@7a#oEUNWtXV%CiKk)#2mH+J)NAqTQVwPMx`

efVM(k-R(?NcD!l+&+jk?gBNvj&<{VL#xX@H!gF^L~U?Jtugap zOGQ}Y1iC7NC2>U}hk%;Na7}6pn3-+t9)5A0bs`>(`h31+QZO!olMEH46ed|xYwGF- zB64R`L~)c6kg~$>t`7^8-hS0UPdmD%p^)#~rPP*!oW{pzM|xE2?}#s22gO|iu@w91 z3$$QOUJ4@v25`K2b7o&s23QIoWo6Z|vK%yC6d2+yoE*F`Kw8&2(z)>Qkb2e#fO~RW zZ9yyk0>CAq8szc7H3!b~g+8D+COhDBYTnzM-M|Bf8;{G$%k~e% zme@p}1w@pW>pyr>qGs11KO{-(FV&FFWaUh>8A=Y2)aJM5?$z4%)4lMmJ{R$e_`M04 zsBT&;hR{{>>Jj+C?DRA|^usNRax%5N3TPV}y-mDQ;f!Prmlss|)CgiO0)(Ieq?k^n zVLrh$EA7hzj|TA`P60b!S%;Yb#S2gw!G^KG#4ZS$7)f#}Tr0++wQgbVCd?QL zeYj-z;JJfpst-__DYkOsyPe;?#zxL~;F3%Z*b_rVGGq>y;cm$On#gE@it#qO|B~F ziKV=IWgdKBndOrz+2|Q11q?fMMc3L@<1+J~AF` zBI#PktQH39Uix(^BZ~*GRg{qsIKTp zP;7>hFnaCI>yNd}Rzl3N2<0S0$_5715eEQMmE=<|lXA)MCoulCyOdQV2uH6ZYj6%e zJF%8PZUoKir--Kr`H$zUh>*^R2^$Sd6kv@?_&wM8@txvVZN%!!O?E`&0m^{bXxV!J zMwaY%bekY(TdhHpkyY< z%0o=kDvTt{#jo2R4KoMO0Ic2BA60rXx>N1iZw|S%6ZH%dp)F}gA7e9POQR~oTe1HJ DMALOo literal 0 HcmV?d00001 diff --git a/Classes/Relics/Assets/Relic_Tinsel.png.import b/Classes/Relics/Assets/Relic_Tinsel.png.import new file mode 100644 index 00000000..332280a8 --- /dev/null +++ b/Classes/Relics/Assets/Relic_Tinsel.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4sup7lmyaegi" +path="res://.godot/imported/Relic_Tinsel.png-1250f95620196fce37933afc2a2856ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Relics/Assets/Relic_Tinsel.png" +dest_files=["res://.godot/imported/Relic_Tinsel.png-1250f95620196fce37933afc2a2856ec.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 e9b2ca43..16dcc8ad 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -647,15 +647,47 @@ e is BattleDirector.Harbinger.NoteHitArgs noteArgs { new RelicEffect( BattleEffectTrigger.OnPickup, - 1, + 2, (e, self, val) => { - StageProducer.PlayerStats.ChartSpeedMultiplier += val; + StageProducer.PlayerStats.ChartSpeedMultiplier *= val; StageProducer.PlayerStats.RewardAmountModifier += 3; } ), } ), + new RelicTemplate( + 22, + "Tinsel", + Rarity.Legendary, + GD.Load("res://Classes/Relics/Assets/Relic_Tinsel.png"), + new RelicEffect[] // all this combined might be OP, but just slowing down the speed felt boring for a legendary + { + new RelicEffect( + BattleEffectTrigger.OnPickup, + 2, + (e, self, val) => + { + StageProducer.PlayerStats.ChartSpeedMultiplier /= val; + } + ), + new RelicEffect( + BattleEffectTrigger.OnDamageInstance, + 1, + (e, self, val) => + { + if ( + e is BattleDirector.Harbinger.OnDamageInstanceArgs dmgArgs + && dmgArgs.Dmg.Target == e.BD.Player + && dmgArgs.Dmg.Damage > 1 + ) + { + dmgArgs.Dmg.ModifyDamage(-val); + } + } + ), + } + ), }; private static string DefaultNoteChartPath = "Audio/songMaps/"; diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index 79bafc5e..0ee23d41 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -119,6 +119,8 @@ RELIC_QUITO_NAME,Quito,(Translation needed) RELIC_QUITO_TOOLTIP,"Quito mimics the player, duplicating all of their notes with bad timing.",(translation needed) RELIC_SOLOIST'STRIANGLE_NAME,Soloist's Triangle,(translation needed) RELIC_SOLOIST'STRIANGLE_TOOLTIP,"Charts move at double speed, reward selections have 3 additional options to choose from.",(translation needed) +RELIC_TINSEL_NAME,Tinsel,(translation needed) +RELIC_TINSEL_TOOLTIP,"Become an aspect of the turtle. Charts move at half speed and take 1 less damage from all sources (damage cannot be reduced below 1).",(translation needed) INVENTORY_TAB_NOTES,Notes,乐谱 INVENTORY_TAB_RELICS,Relics,遗物 OPTIONS_VOLUME_LABEL,Master Volume,最终音量设置 diff --git a/Scenes/Puppets/Scripts/PlayerStats.cs b/Scenes/Puppets/Scripts/PlayerStats.cs index a0410bd1..15556d34 100644 --- a/Scenes/Puppets/Scripts/PlayerStats.cs +++ b/Scenes/Puppets/Scripts/PlayerStats.cs @@ -16,7 +16,7 @@ public partial class PlayerStats : Resource public int Rerolls = 0; public int Shortcuts = 0; public int DiscountPercent = 0; - public int ChartSpeedMultiplier = 1; + public float ChartSpeedMultiplier = 1f; //Array in order of descending rarities, Legendary -> ... Common. Int odds out of 100. public int[] RarityOdds = [1, 5, 10, 20, 100]; From ab5751890c7dbe47265c37c549e9037f7e97c98c Mon Sep 17 00:00:00 2001 From: cornerloan Date: Thu, 29 May 2025 15:11:09 -0700 Subject: [PATCH 17/23] finished 3 relics (art and translations) --- Classes/Relics/Assets/Relic_LootersLens.png | Bin 314 -> 314 bytes .../Relics/Assets/Relic_Soloist'sTriangle.png | Bin 331 -> 333 bytes Classes/Relics/Assets/Relic_WarHorn.png | Bin 1078 -> 291 bytes Globals/Translations/Translations.csv | 12 ++++++------ 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Classes/Relics/Assets/Relic_LootersLens.png b/Classes/Relics/Assets/Relic_LootersLens.png index ea8a8acd15b785343115fd1229d72ad769b7f357..9b5e39c9bbd373a5ab4ad6de63041a37b7cce2e0 100644 GIT binary patch delta 299 zcmdnRw2NtiL_G^L0|P^2NcwRg#aJBV?!){4r@t}UogXeAdtDB76cU7?CIhdQZZ-m#oMBX6nNMk zq%i#`Yz#6l_%C^dRcr2olPpJBmR_y5tA5h?dF~w!pZ3H5nfqKmG0He@-Qpd}z96gn z!5#~PrhP&ZtCuWfS{EN8nm&ApoA>d!~9a%L~3OG;)u;b`3#ET!D070m pijPc9d~Hdl_Lkmn$N#=qJdgWWlA`b7-RnXA^K|udS?83{1OStQalQZm delta 299 zcmdnRw2NtiL_G%^0|P^GRn-?D#aJBV?!>U}oXkrghb7(7*O7r?V?XzwL{=c5v%n*= zn1O-sFbFdq&tH)O6g=?mlNnz0NEtQ$uy=5@)jAnq^UmwV prKHr~5-J|oCUHWY0CdFx;qNb7qbvXJE&_Uv!PC{xWt~$(6957)cy|B* diff --git a/Classes/Relics/Assets/Relic_Soloist'sTriangle.png b/Classes/Relics/Assets/Relic_Soloist'sTriangle.png index 66fcc482b5712eec267288e94935c5a58217f9e0..d3b34b69169b6969075a1e57d91dc96bdb1c9ab1 100644 GIT binary patch delta 318 zcmX@jbe3s?L_HHT0|Nt}$fR^2#aJBV?!X?_wfUrhf;<5} zA+A9Bf996AGAf4;A2$0q?;4QLQWE4B%<%vJ|INA%9YFpmPZ!6KiaE(C2?+_j5oZq^ z;7Dm<^|xn8GDx%XVK$DKuC^nW!SKkgN%gSvFpb_UyxY!TisD| z_hE%w@%uPiC4LmY4cfr*`+M&yD}}Znd)KVAQE;nS`Pnv4V6okWKhnk%4n~w0zUF_< z>~PHfc=LamMxJZ(=h$ECId zbBDpmylJB1m#>Ty7Anj)YFNW)U}oXkrghb7(7*O7r?V?XzwL{=c5v%n*= zn1O-sFbFdq&tH)O6nx<6;usR){&vzqP9{el*X;uR(;l3avWaXKul|t4FSo{N!-S)5 zE-o%dnm@IQC(k+9{YL4@;SIa(XFl;Qn^k>2Yf=5htwIWnLJ$5kd}~hJa&O6xwRc^2 zubR(%MPi=d>gjlvGo50Jy$ty*# zvOQwph-g(cJ;Lr__-(RqwFeu+Mk#MYOD2u;|Fa)4d^qQ_pGo1w)rP>AoHOP#sDC+X z%V3zWnxSVxsOhIadmWbk=W3WG^!fYY=U(!{FQPanFhJ1->jTUxNd+#e1S&OwzGd)q L^>bP0l+XkK90-A6 diff --git a/Classes/Relics/Assets/Relic_WarHorn.png b/Classes/Relics/Assets/Relic_WarHorn.png index e64e944c2994f7e5994923db9ce6544c0ee75372..09a8900c0a97fd1ba96316c766c769c3382f306f 100644 GIT binary patch delta 276 zcmdnSv6yLsL_G^L0|P^2NcwRg#aJBV?!q{&9B8^G*@#pNXz3uxe9dWT+bjRnF(glTH z2Dt|mj(+x-xJ=vNKBIgRTbwfMb=EKWDdIB&o`SZ>x7LC(W0_-_kWpxU`#2t-`Fm3 Smv;})r3{{~elF{r5}E+4WoG^W literal 1078 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!hW5;mh>{3jAFJg2T)o7U{G?R9irfOAY6b=y z`-+0Zwic-?7f?V97Du6s&rHqo20xNy} z^73-Ma$~*xqI7*jOG`_A10#JSBVC{h-Qvo;lEez#ykcdj0WPV<$wiq3C7Jno3Lpa$ zlk!VTY?Vq&GgGY664OkRQc_HHlM;q>hst(g4dgWi<4=UrHq>}{I;;gQhF8T@P3ZtGh! zbwXEV{r(fFj1#sB6>aUglx4T8>Jf{JUiatIDgWMDdo6xf_As4)<%3gy@|Bq4uEw2S znl$g{RsJP=nVfu+rQa!kENEMN;Ol)M!2{XL%QzZBPAD6#x*s<&aOdrtPxI2npMKR| zqaV*GuuAIGCkv(cgS$H49ay8j9?bw)}|2PV&{SluBSp}rAh>ekZ# zM?Ux6|9Nz&{A|;Hh7Gr@Ha`=*>~*$3I(KgSW8rt-`I)L8cZe38;k4 S>aM$>% Date: Thu, 29 May 2025 15:55:32 -0700 Subject: [PATCH 18/23] Finished Quito --- Classes/Relics/Assets/Relic_Quito.png | Bin 326 -> 969 bytes Globals/Translations/Translations.csv | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/Relics/Assets/Relic_Quito.png b/Classes/Relics/Assets/Relic_Quito.png index af31dcd69b73b1ab474df9097136d504ac109dd0..8a7dab28c6b2a290e0c0d8ba2c673e4875508ca5 100644 GIT binary patch literal 969 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NS%G}c0*}aI1_r)EAj~ML;ne`t(4H9*Q4-9;P1K$GY)Qn7zs-o23D!-8As_bOT6m@$$ zUM`yoE1(IvsU?XD6}dTi#a0!zN??PnfNYSkzLK3yQA(Oskc%5s1(0W}lu=SrV5P5L zUS6(OZmgGIl&)`RX=$l%V5DzkqzhD`TU?n}l31aeSF8**z$LXfxhS)sBr`ux0c2oe zQhsTPtx{=eW{Oo>Vw!1EN{Xp&QlfE+uAyN{qHbb}v7v5?v2lvIsiB2YnqiU>)cTUl zG=%+m#n4~?28cdLM&D4+0OVv4+seNvGZp9xkd=0ZHeh)aF&ll5Ly#P12N41K707~z z3@Di3p_`fq4AOF7*y&7}!3~U()1EGlArbCRr`h`-a*#MCA9F`yP6sEqg@E|7uF0IM zGY_#V)<_*@S6sPHZSDj=y;Bc-)sCEO?0qS7OS?S({=L}$9nJe&F6_(wW%GXiYtbL? zOEMO43QaIsb~*72SEH50q2FKff5m9l}RU z4t@VRRq%0C$ms@_CB89*AHPkM+f&{+UGKn*6*&&#+d4O=sFiRzCmx=<_0>)(hsRO+ ze*9|H$r9Sq8p7p@X@OCV!BPUob)r{{7M%LOx-gA3)vC3!NNk6CEOM0NpC(o=^Ju7pAjA+t^FMD~GGiKb>pJdqdl;dF0 zl=#PK2hFQ@@VvNL?39~e%5d7d-8gjXpAC`=-sdp~ADAkyo3{4wx6@zGiSLy-yx#h;%;Yb{E3QgDX!Ffoy-3{o%%aC; zr{8?Fi{K4-rDH74%AET5KW||H+XP+vb$=`)_j{k8t-xp*(fXpFCatT-G@y GGywp`n|G-I delta 270 zcmV+p0rCFH2gU-BDFpzo&K&8HE*pQt000id0mpBsWB>pF+et)0R9HvtlEDeWKoCV! zh(}BCW(}UKAs2h_Vh=`@+zbSqhbb2+O|hJ~g$;bp$47eIc@VaL%p z-PW6CKX2r^Ts1NFc(?-gBy89wfLQAgqmJM}tW{hAnCoT^ct-%w7)oqU;tJ$$08Q9b z_jm$`_1aN~dW$On&`7@@|8mV)0e#OK)BngLE1>9ruK5jtPZ9zl5CS0(0=)}70oQ(o UCwWjO5dZ)H07*qoM6N<$g4SJgvj6}9 diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index cd224ba2..d216e454 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -115,10 +115,10 @@ RELIC_WARHORN_NAME,War Horn,战号 RELIC_WARHORN_TOOLTIP,All normal battles are now elite battles.,所有普通战斗现在都会变为精英战斗。 RELIC_LOOTER'SLENS_NAME,Looter's Lens,盗贼之镜片 RELIC_LOOTER'SLENS_TOOLTIP,Can see one more item in reward selection screens.,在奖励选择界面上可以多看到一个物品。 -RELIC_QUITO_NAME,Quito,(Translation needed) -RELIC_QUITO_TOOLTIP,"Quito mimics the player, duplicating all of their notes with bad timing.",(translation needed) +RELIC_QUITO_NAME,Quito,基多 +RELIC_QUITO_TOOLTIP,"Quito mimics the player, duplicating all of their notes with bad timing.",基多模仿玩家,"复制他们所有的音符,但时机很差。" RELIC_SOLOIST'STRIANGLE_NAME,Soloist's Triangle,独奏者的三角铁 -RELIC_SOLOIST'STRIANGLE_TOOLTIP,"Charts move at double speed, reward selections have 3 additional options to choose from.",谱面移动速度加倍,奖励选择中额外提供3个选项。 +RELIC_SOLOIST'STRIANGLE_TOOLTIP,"Charts move at double speed, reward selections have 3 additional options to choose from.","谱面移动速度加倍,奖励选择中额外提供3个选项。" RELIC_TINSEL_NAME,Tinsel,(translation needed) RELIC_TINSEL_TOOLTIP,"Become an aspect of the turtle. Charts move at half speed and take 1 less damage from all sources (damage cannot be reduced below 1).",(translation needed) INVENTORY_TAB_NOTES,Notes,乐谱 From a95606764c58cfd996676d5a975cfed964840c61 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 31 May 2025 18:02:34 -0700 Subject: [PATCH 19/23] Update new relic sprites --- Classes/Relics/Assets/Relic_LootersLens.png | Bin 314 -> 605 bytes Classes/Relics/Assets/Relic_Quito.png | Bin 969 -> 697 bytes .../Relics/Assets/Relic_Soloist'sTriangle.png | Bin 333 -> 572 bytes Classes/Relics/Assets/Relic_WarHorn.png | Bin 291 -> 584 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Classes/Relics/Assets/Relic_LootersLens.png b/Classes/Relics/Assets/Relic_LootersLens.png index 9b5e39c9bbd373a5ab4ad6de63041a37b7cce2e0..a83958ff3942c187df23b2f8bf47efb14d9294d8 100644 GIT binary patch delta 592 zcmV-W0sqkfB?P3@4{TA106jFWg8@b%MY z0CuOGD72hvGy>7KNuw2f`(7w+H^^|=wQ)e01Y{^1f!o-fa-z4aa9AcFL)i@6#&&~@ zm$i)p6Pw1q;2oLW^S~bA z)rxI5!;!Zelv1So6r~got1s-IbM!g@jc%;dP#bQuw6WhZl!I-MPj}6m0O)nV;RrWT z#>8Hab1XDu_DY>&!IqUadR+|rO_YH^RCmBs1dc=WmVW^j^U#sP~th(|jC zD+$}F!9`E8MjIByW5%qbq|xo3b)3A{#!C2bG%D9ZS-A;pX5cz^psf6GgvGomnz-~Y z9bB&iUgNs&Ky?TFGSI5r1UGL0{t~dJ{Xna7>KX9f0(0@qMwrSC{A@vM*U#MnZw$06 z?UVbv14%9x9B*D{z{SFKX24(s3;q~z+){4r@t}UogXeAdtDB76cU7?CIhdQZZ-m#oMBX6nNMk zq%i#`Yz#6l_%C^dRcr2olPpJBmR_y5tA5h?dF~w!pZ3H5nfqKmG0He@-Qpd}z96gn z!5#~PrhP&ZtCuWfS{EN8nm&ApoA>d!~9a%L~3OG;)u;b`3#ET!D070m pijPc9d~Hdl_Lkmn$N#=qJdgWWlA`b7-RnXA^K|udS?83{1OUFbapM30 diff --git a/Classes/Relics/Assets/Relic_Quito.png b/Classes/Relics/Assets/Relic_Quito.png index 8a7dab28c6b2a290e0c0d8ba2c673e4875508ca5..de3f34a56b49204bde57c57171124cfa3269eec2 100644 GIT binary patch delta 668 zcmV;N0%QHj2e}21DSrU2&K&6g00MJKL_t(og|(MIYZGA{$3IVPnzMwo7K4E#gH$XI zcFm9s9R&+rGWY`A+AOZlc?D^hJp;z%*)k= zW4`#NVwu-l1ApqR0m4Ydg7EAD*GWQxEbVPf)<@&Xypf{b8o(Ox6`I>i$kCYY&OzwT z&_+Ojun#p~e*Bw-Tn2f0V}UfcmjJ9!VWh(N+P#7$LDoJ@s{OFP%=PI7f6hmU#XDNV zC{YOP0-Y9e8Rk|D%gn7PQHTU^*k5)Wt5oO|wje_TxPQ$Ta+xVef+)mFfs(OyKgs3c z0R)KSt$poU(lkVhz3)%K=!e0_RhefMh1lb7#(+c9zt z=%N7rk?>O_00H9dvrpEs+sqE3#!LYe#PQZX>*+JnrF*wGR1p70i2dS8)x)oo{&X{s z-uJ76*njr{6$xRatl<^%)%K=mCnUNNfwK<0Ane`ZR^sP+39`6bafDxv#@ck~Qjs_U zI(2srw2{y~JN_4dC=fFN`275Z)%PmQ0z?>yL^YsZVob9~p^yil_^|HCvodnmi48Qq zxq5vo6!Ms6k8-u)+3#+U!~ph9mBKs&+Cnb?{uKh34k7B~c>)js0000NS%G}c0*}aI1_r)EAj~ML;ne`t(4H9*Q4-9;P1K$GY)Qn7zs-o23D!-8As_bOT6m@$$ zUM`yoE1(IvsU?XD6}dTi#a0!zN??PnfNYSkzLK3yQA(Oskc%5s1(0W}lu=SrV5P5L zUS6(OZmgGIl&)`RX=$l%V5DzkqzhD`TU?n}l31aeSF8**z$LXfxhS)sBr`ux0c2oe zQhsTPtx{=eW{Oo>Vw!1EN{Xp&QlfE+uAyN{qHbb}v7v5?v2lvIsiB2YnqiU>)cTUl zG=%+m#n4~?28cdLM&D4+0OVv4+seNvGZp9xkd=0ZHeh)aF&ll5Ly#P12N41K707~z z3@Di3p_`fq4AOF7*y&7}!3~U()1EGlArbCRr`h`-a*#MCA9F`yP6sEqg@E|7uF0IM zGY_#V)<_*@S6sPHZSDj=y;Bc-)sCEO?0qS7OS?S({=L}$9nJe&F6_(wW%GXiYtbL? zOEMO43QaIsb~*72SEH50q2FKff5m9l}RU z4t@VRRq%0C$ms@_CB89*AHPkM+f&{+UGKn*6*&&#+d4O=sFiRzCmx=<_0>)(hsRO+ ze*9|H$r9Sq8p7p@X@OCV!BPUob)r{{7M%LOx-gA3)vC3!NNk6CEOM0NpC(o=^Ju7pAjA+t^FMD~GGiKb>pJdqdl;dF0 zl=#PK2hFQ@@VvNL?39~e%5d7d-8gjXpAC`=-sdp~ADAkyo3{4wx6@zGiSLy-yx#h;%;Yb{E3QgDX!Ffoy-3{o%%aC; zr{8?Fi{K4-rDH74%AET5KW||H+XP+vb$=`)_j{k8t-xp*(fXpFCatT-G@y GGywp`n|G-I diff --git a/Classes/Relics/Assets/Relic_Soloist'sTriangle.png b/Classes/Relics/Assets/Relic_Soloist'sTriangle.png index d3b34b69169b6969075a1e57d91dc96bdb1c9ab1..6c992a5c1899bec480cdc26a9971fc3cad2811c5 100644 GIT binary patch delta 559 zcmV+~0?_@<0=xu}7=H)`0001UdV2H#0004VQb$4nuFf3k0005@NklZUhp`%*_!NJiFA#^Bi;!x;R#7xa3^fTxeaOu!Mr$C`S zhj7U?XWF}_rTT|JF1+0PzyH1W?m1XMc)n2APPggU{9g#d^MA$UZMc|ewm&?hwN&l4*An-+zsxVeSb-qokB_N{*h@yz`V$OImCyF8fM(v8$ zqHSPw1Zwp4R(}V8?@c}05D=a(M(qj^N8cFCk_$-Si@=S^joOusb7Ajgn9F!o^s0?o z9T&Z+^%ea$6)=fjwJoB;-WAXY*hCNUSk@TKlD-hQC9A$*q=1}&Ol)mCrk2&&=mWPz z7={2`e;lPhuBZqTLJ zwF;=MSAJ8;XzGMetJT(Ro9++hnV*-4zp3+E-eiLUi-9E15kO;*p0~7-%JeT|B8`Vf zAf7AbeonXPEagDpmbB>AdBCK^E_zdq48Zx#t!7)jdeX}<>s%hqD##|JDv^h;x4Y!M x-s> delta 318 zcmdnPa+Ya=L_HHT0|Nt}$fR^2#aJBV?!X?_wfUrhf;<5} zA+A9Bf996AGAf4;A2$0q?;4QLQWE4B%<%vJ|INA%9YFpmPZ!6KiaE(C2?+_j5oZq^ z;7Dm<^|xn8GDx%XVK$DKuC^nW!SKkgN%gSvFpb_UyxY!TisD| z_hE%w@%uPiC4LmY4cfr*`+M&yD}}Znd)KVAQE;nS`Pnv4V6okWKhnk%4n~w0zUF_< z>~PHfc=LamMxJZ(=h$ECId zbBDpmylJB1m#>Ty7Anj)YFNW)u5J0>}iA7=H)`0001UdV2H#0004VQb$4nuFf3k00064NklYE z9R4m|(*|0qNO7?)f)65!73$PY+?+bN3O<4E4xPlI=nGgJ)U9tJxHt(NG$fEVgv24e zGs#_=3m)juZ@LSY`~KYT{s2q-F^JB|qW&mSCLVMN08pL8!++@&K5S3x z$%Mr1pXz7sQvxbx6##Jbatr`it*zkXa96rK%ym)Jt$&7@8pF0;${=&Zh?C@e5T&q; z0H7uS2(H~(Af%8jI7Xgy56p{@47%iD@1B#(;Dr>PALd4$j2nOwITw%>k#(KrT z6p;gxHz8Z|r?nvfz%l}Op*(KO{5eLLNY@oX6i5 zY;C1I&osn5*RJ{GMoqkAfY>dcT;WV9^(a+2G0PleODyp(@C^?<{2KReJBI)O002ov JPDHLkV1nn_23!CD delta 276 zcmX@XvY2UtL_G^L0|P^2NcwRg#aJBV?!q{&9B8^G*@#pNXz3uxe9dWT+bjRnF(glTH z2Dt|mj(+x-xJ=vNKBIgRTbwfMb=EKWDdIB&o`SZ>x7LC(W0_-_kWpxU`#2t-`Fm3 Smv;})r3{{~elF{r5}E+JfoBW= From 517eb03e257a1e5b338c81b08fe47dd3865c5b16 Mon Sep 17 00:00:00 2001 From: cornerloan Date: Sat, 31 May 2025 18:10:03 -0700 Subject: [PATCH 20/23] Finished Tinsel --- Classes/Relics/Assets/Relic_Tinsel.png | Bin 2962 -> 901 bytes Classes/Relics/Assets/Relic_Tinsel.png.import | 2 +- Globals/Translations/Translations.csv | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/Relics/Assets/Relic_Tinsel.png b/Classes/Relics/Assets/Relic_Tinsel.png index 6c71bc7f4118f351da86a811b408dbf993416c39..c31ad3dbad12580bc5e4bf2db1830965559e5a85 100644 GIT binary patch delta 438 zcmV;n0ZIOn7lj9qNeaIJ01m$aI0aKAu~U@+e*uR{L_t(oN9~ibP69y`MeiC56WZbW&1KSsUXo_!o9-VeaJZn>V||nvE8Fs^QJ- z-23hufR2toCeej9xPN#qpv4JITNENdQ%KX zW3LN}P}CByBI*&!xDmKqMy~hsEXD5BE7hbh@d`x7E=@>L*7O+&1D2@79D$yBNJJuQ zd6v3$)k8!m0Uf_Ynz4*fJSKjG49JHUe-hMb$gcZ?>jXykmI-eJ6rW8eW{1Rze0Ss zu{P1z004Y`Ji5ymZ{3AW4VZ6$bJeqLgOW?#1*z-C`mXL9VkYogV#UD(tPaRIAeS|v gGJ&?mJ39Ua-?*v1L>OK|Z2$lO07*qoM6N<$f@plgWdHyG delta 2515 zcmV;^2`u)72a*?%NeaOL01m+cxRGn^u~U@+e+iUHL_t(oM~#=+j$OxfhQHdi=QH-) zeVWb5R2U6(l+Y5SOt67mILQOpFA(H4`e}UU009g*NPs{_f<#WJD0E1Qq{wb|lg(xi z=kz&e&$VmFMKhEr6Lfy;i;V*Is(<}!?W%u?Kf3v;LC5C8hdTzU5fjcO>Xe~Qh~h>eX6KoBP>TEX7#9;&IC&rTSRj~Jhx zpo@aZ^XKe5+U4YAjOR(-RGHtRW{g3%iiM>`-uv(d{o#;&o>P=9QPLyo4d|~fv9!8~ zFot4&Mym?6s+b)-;l)>XP)A32Mb1(`VGC<(biBlFvtH?MZs2lYB1Tj10^z4XvmJ=s2z7d2$fKrO-Y|gB#F@Yp+6!Tfm z-s1zBs=@nKNnXAEpX}G(zrlMy_=NuAIz|M<-62u83!z{>IpyTx10H?;D~@*_u(mcp z)CJ}Ei1EQ5RW;+?_pb5#?|%=2f97;Drm0(kIAvwD&gy6l>nzTFqr@u(TBZ2thd<({ zfAhBlp2M{biSOh40bwku(fsGNl~HT?C^y7i(~4dBnUnJ;L{&a8pT&% z-s9Qh7pz}?hpq3ub6$UExqJIAd%OEcDFN_#`K$Rsz@Ps3ulV4`H9A1|f3*hDyf`}K z*4Yuqhx=#*+3^uyKD4>{-iRr>JViZ%kmav=B9}Gz2n8BdW#)VD7DCO&iyF7n-#PQJ>V>Cr} zMvsz(prt2jJYCUELKYVK0LV+1u591Dev!+|DN8bE|LG2Q9v+}vz)$}2PY749@EbFv zUFgshEk#*#_4-xbe|h)!cz$?HRTO}rC>tI;c*N21gxPdX7{qj<6x(WMvk6b0J>&U{ zG1Ai{fsYRypU&`>`W@E0mZ!V-_~(E9f=9arsu}=eEvM6*$NPuuKR?1+i}>W@PhBTy@%<1fe5$&n#j&-u z$$Qt{!AOS@e-^7XH$J$*`uZxr{D)t1ay+IiHB!RqWK3BWBx!;`f(Xz?QI{oUQPN3M zk~pTS8%kxcFAqLXM0na*di?=Wl9E*=L6We!xkcbdWL1H6mZmHTg~#G>f&aR7o88@g zrqdZol9J~ov+)!kk4_w*Rf{eJi5Ic5JR}G`!cY)Lf08irG1{OSjdKDaJml8JOWU2; z$5}_)w)noJ*X z0Uv+#0e|u5pD^sCWJQJ1E#v7KN*SDUNa2uPh`ey&;ud-;86S=iX((#0*b zaTx1Rb%Qn<=_kn1=)!h435ny7FbG&(UE%#39}uT8)9IA6>6BJAsG>q^O<7iGV-Ui_ z^E_Ikna?wn(g+0I*fQuigewSKg|8ZBl}0;{f8pX1D=Ql;EiICCI?U!Ja&`T}cE6ht z1(K!ZWj_4y`&_zoiB@ZNp6p{BM4qIc=VV2Wl)?D{B0N-UD610F8p0?fCedGimsa^(tnmC?3}R%@KF zf7De;TWb)|wgw?2Ajr#trcr<+2z;ulK$V)NGE}uB&l|$Xr!^jv>73cTLL19?GUfQ> zjIvV5(P(SCYBX!>Yy8v6v#2;^5#hdDUQvDT=+;ryhN@N+*f(Sa@0M81_T+x(@sxHx56Go1uKf@hin5`s+gH}z1CY|At`)zz^N^*kV|?cp&+gtvH_+6MGS5(YMi3aHNRW0ye}WK( z!!BWTet21<@ug&8IACLah2cUE)izX>p;j%8Y7idh7Vlf`RBnv6wgH3?>>r#WXJe8) z;~)R+F<(5$uzr9IG)~kE1_}K^7bzu;YM9Lm>PnFpIbj&k>-A8LVw%lpl)^eN+F^}F zNN`~XWqrPFj$bpSt+p)p0G%EH76rb65a5ZIW4G`ycpw4{KFEMDObEgV>HF~Vu0J0> d-o81&{{lINKS72sx{d$<002ovPDHLkV1j)8?cM+Y diff --git a/Classes/Relics/Assets/Relic_Tinsel.png.import b/Classes/Relics/Assets/Relic_Tinsel.png.import index 332280a8..c5dc2a3b 100644 --- a/Classes/Relics/Assets/Relic_Tinsel.png.import +++ b/Classes/Relics/Assets/Relic_Tinsel.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b4sup7lmyaegi" +uid="uid://c1n8xbesrvua8" path="res://.godot/imported/Relic_Tinsel.png-1250f95620196fce37933afc2a2856ec.ctex" metadata={ "vram_texture": false diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index d216e454..a134feb7 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -119,8 +119,8 @@ RELIC_QUITO_NAME,Quito,基多 RELIC_QUITO_TOOLTIP,"Quito mimics the player, duplicating all of their notes with bad timing.",基多模仿玩家,"复制他们所有的音符,但时机很差。" RELIC_SOLOIST'STRIANGLE_NAME,Soloist's Triangle,独奏者的三角铁 RELIC_SOLOIST'STRIANGLE_TOOLTIP,"Charts move at double speed, reward selections have 3 additional options to choose from.","谱面移动速度加倍,奖励选择中额外提供3个选项。" -RELIC_TINSEL_NAME,Tinsel,(translation needed) -RELIC_TINSEL_TOOLTIP,"Become an aspect of the turtle. Charts move at half speed and take 1 less damage from all sources (damage cannot be reduced below 1).",(translation needed) +RELIC_TINSEL_NAME,Tinsel,廷瑟 +RELIC_TINSEL_TOOLTIP,"Become an aspect of the turtle. Charts move at half speed, and all damage taken is reduced by 1 (damage cannot be reduced below 1).","化身为龟之化身。图表移动速度减半,所受伤害减少1点(伤害最低为1点)。" INVENTORY_TAB_NOTES,Notes,乐谱 INVENTORY_TAB_RELICS,Relics,遗物 OPTIONS_VOLUME_LABEL,Master Volume,最终音量设置 From 30b825e3f9a73913705cb1caea47d08ccb90de19 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 31 May 2025 19:58:22 -0700 Subject: [PATCH 21/23] Update Tinsel Sprite --- Classes/Relics/Assets/Relic_Tinsel.png | Bin 901 -> 729 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Classes/Relics/Assets/Relic_Tinsel.png b/Classes/Relics/Assets/Relic_Tinsel.png index c31ad3dbad12580bc5e4bf2db1830965559e5a85..3f04aaa9ba769d0374ff51329d1f6562efd31e73 100644 GIT binary patch delta 693 zcmV;m0!sab2iXOXFn%xO8>jWWq~9}11tcpUlzQw-3qsra(_~QIClojh;#`pvpU@W z`3r!t(GdX3rQF#wpuqDBX`Jkwy-)R-G>rgMojd?rS~e0JP~g4I^?t+a&zyL@NWXf! zLv115|K`IxS=nxJyOfK7m4=qU1S@F0-2tGONrm8go9p>}zj-e*X199?z)rQmwPEnR z&2{D%(wum`P=CY?Bn16R#ILxO!*49~6E0v>azzhQ&;Zdb>lt z-3ji^_qrL=sDkQXC2I-v=#xV9HrMl6*;wZOvP-vnNV(Ru!XZHh%xF!xX=H72mX(cV z03Pr8+?bdGpj>MroxC(nSm%HQIe)s8bciZ}X|9+_1%FX1eL48X(p@KrUa8{bLz#$_ zK!+DIsn}UHRnY2(C(rmZ9tUtS!z0 zMCuGsaeo}l(@vKFA-4)re~vZqwR;@g>p&B%>MTIWQZ91jnkH=R5d#8*+7Ukb$&WfdWjEOw00000NkvXXu0mjf@$OX> literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DkxL735kHCP3xp*=Gsq9nrC$0|8LS1&OoKPgqOBDVmjnt{Q_ zzM>#8IXksPAt^OIGtXB2{qFth3YjUk>fxro2EGN(sTr9bRYj@6RemAKRoTgwDeCri zyj(UFRzMSSQ%e#RDspr3imfVamB0pD0ofp7eI+}aqLehNAQv~N3Lwu`DWjyMz)D}g zyu4hm+*mKaC|%#s($Z4jz)0W7NEfI=x41H|B(Xv_uUHvsfJi^MBT&`V?*5(W8)NaQ$q`*G{Yn%sP!e8 zX$brCilM;(3=n;gjJ~0s0m#W9wv~TTW-8DXAS>+*ZNTyp^Ww&I9P(3Q*+>wY)CW^wyIjWeG`WWKL@TKkc%n(|kc zh1|Iu(-^&PNU<{PvC-XgVrj?KjmL}yoaZf7O|*Sq>{BuOm%PHpXFU#EN)H{eR^jz< z6q>cs?BWduhMGE?U8g1T@3#8#&d6^lzPdTLd6M^C)|Ic1{aW` Date: Sat, 31 May 2025 20:47:18 -0700 Subject: [PATCH 22/23] Fix Duplicated Placed Note References Placed notes should be individual instances, and not share base val. --- Scenes/BattleDirector/Scripts/BattleDirector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index 7e9a4276..55c17661 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -236,7 +236,7 @@ public bool PlayerAddNote(ArrowType type, Beat beat) if (!NPB.CanPlaceNote()) return false; - Note noteToPlace = NPB.NotePlaced(); + Note noteToPlace = NPB.NotePlaced().Clone(); noteToPlace.OnHit(this, Timing.Okay); CD.AddPlayerNote(noteToPlace.SetOwner(Player), type, beat); From 0bef607ccbc100a74266e37e7d6f9df3f6904dd0 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 31 May 2025 20:56:57 -0700 Subject: [PATCH 23/23] Implement Brass Cannon Note --- Classes/Notes/Assets/Note_PlayerBrass.png | Bin 0 -> 1114 bytes .../Notes/Assets/Note_PlayerBrass.png.import | 34 ++++++++++++++++++ Globals/Scribe.cs | 25 +++++++++++++ Globals/Translations/Translations.csv | 4 ++- .../Scripts/NotePlacementBar.cs | 2 +- 5 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 Classes/Notes/Assets/Note_PlayerBrass.png create mode 100644 Classes/Notes/Assets/Note_PlayerBrass.png.import diff --git a/Classes/Notes/Assets/Note_PlayerBrass.png b/Classes/Notes/Assets/Note_PlayerBrass.png new file mode 100644 index 0000000000000000000000000000000000000000..743b18e357e7d720e038e29974ecc44de59bf139 GIT binary patch literal 1114 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFg9j7I|q0=J1Z0v<)>xlq%tsQ zoS!<;+Jo6qqGkUaFBcK+;EsqG!L?fqm8Jhf~e)`WUi`XRJ)V4b=H6a!%YnErtWB^6KitU zo$)+6yX&pby;XOD_iiXXI&*H|t}}T_J_biktkf#6otUsVKFnRDf5#j5*FSc9{mU$z z`6%kJ&~b^^HzZW;U-8$Kzh0`u{B+4R4HMhn|El>}${*~0@H^gp-~U=3UjKrZA%9=H zO8gVp8*ued`-Oe1&%;B{-f8X5eNl5pYF*$Ysg$ghB75eZGC%8loOg@PwCdGwii`L; zUuJ!h`o_P&T=%AT>Akx#w{Oo+*ZTXHq2g-MO4a18AAoVfS>O>_%)p?h1j3A~9^IV; z6l6>Cc6VVo&fw1AZZCb{5Kx4@#M9T6{Us9@I|tX%g=)1xA;}Wgh!W@g+}zZ>5(ej@ z)Wnk16ovB4k_-iRPv3y>Mm}+1T(@V2M3hAM`dB6B=jtV<HIW;5GqpB!1xXLdixhgx^GDY3qj+e`( z!U||YZfZ%QLPc&)Ua?h$trFN^DKRGXOam#J2J;$^?dHBFIWRLmRL>ikOW)$RS7$vxA5L{R(8kLk1K~ z@X$@o0|se1Fzj@u%-{xwdxxisV@QPi+p7n88x(k2AHGuRIpoH3*sbS~%2y}hOTpgp zA1>*Cywtt_Do3E#%L_8S&okCMk6SNyXBwlV0GGzr*B3+gtebFw?O8_E6EQ9a3qA)M zTUVw4qXRM<{OsK3HXRb#a9`l>XG2zwE7SKEvvNEUyTiDNHKfJ5;lTPsA^}(zY$W+zod953+N`k)CkWsUtb0-Ae#e-LEuvGWDw=)>gTe~DWM4fqII={ literal 0 HcmV?d00001 diff --git a/Classes/Notes/Assets/Note_PlayerBrass.png.import b/Classes/Notes/Assets/Note_PlayerBrass.png.import new file mode 100644 index 00000000..2200c58c --- /dev/null +++ b/Classes/Notes/Assets/Note_PlayerBrass.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5eg3uodp8qjj" +path="res://.godot/imported/Note_PlayerBrass.png-cef5666b6abc9b5c518867ec908822bd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Notes/Assets/Note_PlayerBrass.png" +dest_files=["res://.godot/imported/Note_PlayerBrass.png-cef5666b6abc9b5c518867ec908822bd.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 16dcc8ad..f9fb9caa 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -244,6 +244,31 @@ public partial class Scribe : Node director.AddStatus(Targetting.Player, StatusEffect.Poison, amt); } ), + new Note( + 18, + "PlayerBrass", + GD.Load("res://Classes/Notes/Assets/Note_PlayerBrass.png"), + 0, + (director, note, timing) => + { + if (note.GetBaseVal() == 0) //Setup, so it doesn't trigger on place. + { + note.SetBaseVal(2); + return; + } + if (timing == Timing.Miss) + { + director.AddStatus(Targetting.Player, StatusEffect.Mulligan, 1); + return; + } + director.DealDamage( + Targetting.First, + note.GetBaseVal() * director.NPB.ComboMult, + note.Owner + ); + director.NPB.ResetCurrentCombo(); + } + ), }; public static readonly RelicTemplate[] RelicDictionary = new[] diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index a134feb7..8becc026 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -71,10 +71,12 @@ NOTE_PLAYERECHO_NAME,Echo Note,回音符 NOTE_PLAYERECHO_TOOLTIP,Deals more damage with each loop.,每次循环造成更多伤害。 NOTE_PLAYERPOISON_NAME,Poison Note,毒药音符 NOTE_PLAYERPOISON_TOOLTIP,Applies stacks of poison based on timing.,根据时机施加中毒层数。 -NOTE_PLAYERMONEY_NAME,Money Note,钱的便条 +NOTE_PLAYERMONEY_NAME,Money Note,金钱音符 NOTE_PLAYERMONEY_TOOLTIP,"Deals no damage, but gives you money when hit.",不会造成伤害,但命中时会获得金钱。 NOTE_PLAYERCOMBO_NAME,Combo Note,连击音符 NOTE_PLAYERCOMBO_TOOLTIP,"Deals no damage, but gives you double the combo bar charge when hit.",不会造成伤害,但命中时会获得双倍连击槽充能。 +NOTE_PLAYERBRASS_NAME,Brass Cannon Note,铜管加农炮音符 +NOTE_PLAYERBRASS_TOOLTIP,"Can be missed without penalty. When hit, deals double the multiplier in damage, then resets the current multiplier.",失误不计。命中时,造成双倍连击倍率伤害,并重置当前连击倍率。 RELIC_BREAKFAST_NAME,Breakfast,早餐 RELIC_BREAKFAST_TOOLTIP,Increases max hp.,提高最大生命值 RELIC_GOODVIBES_NAME,Good Vibes,良好消息 diff --git a/Scenes/BattleDirector/Scripts/NotePlacementBar.cs b/Scenes/BattleDirector/Scripts/NotePlacementBar.cs index ad0f7cf7..d69e5314 100644 --- a/Scenes/BattleDirector/Scripts/NotePlacementBar.cs +++ b/Scenes/BattleDirector/Scripts/NotePlacementBar.cs @@ -48,7 +48,7 @@ private double CurrentBarValue private int _currentCombo; private int MaxComboMult; - private int ComboMult => + public int ComboMult => Math.Min(_currentCombo / _notesToIncreaseCombo + 1 + _bonusMult, MaxComboMult); private int _bonusMult; private int _notesToIncreaseCombo;