From 68fbae300fae16c72c356feb867d5d0cbdaa0abf Mon Sep 17 00:00:00 2001 From: Furzi Date: Fri, 16 Jan 2026 19:50:56 +0800 Subject: [PATCH 1/2] Fix weapon skills bug: prevent casting without weapon --- src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs b/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs index fb39be878..8ea8ec6e0 100644 --- a/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs +++ b/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs @@ -168,6 +168,12 @@ private async ValueTask PerformAutomaticHitsAsync(Player player, ushort extraTar return; } + // Skills that move attacker to target (e.g., Twisting Slash, Death Stab) require a weapon + if (skill.MovesToTarget && player.Inventory?.GetItem(InventoryConstants.RightHandSlot) is null) + { + return; + } + if (player.Attributes[Stats.AmmunitionConsumptionRate] > player.Attributes[Stats.AmmunitionAmount]) { return; From 2274b95ee294689ea7ae7e8411cb345ac718c1f3 Mon Sep 17 00:00:00 2001 From: Furzi Date: Fri, 16 Jan 2026 20:46:35 +0800 Subject: [PATCH 2/2] Fix weapon skills bug: prevent casting without weapon --- src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs | 2 +- src/Web/AdminPanel/Pages/EditConfigGrid.razor.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs b/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs index 8ea8ec6e0..353861876 100644 --- a/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs +++ b/src/GameLogic/PlayerActions/Skills/AreaSkillAttackAction.cs @@ -169,7 +169,7 @@ private async ValueTask PerformAutomaticHitsAsync(Player player, ushort extraTar } // Skills that move attacker to target (e.g., Twisting Slash, Death Stab) require a weapon - if (skill.MovesToTarget && player.Inventory?.GetItem(InventoryConstants.RightHandSlot) is null) + if (skill.MovesToTarget && player.Inventory?.GetRandomOffensiveItem() is null) { return; } diff --git a/src/Web/AdminPanel/Pages/EditConfigGrid.razor.cs b/src/Web/AdminPanel/Pages/EditConfigGrid.razor.cs index 68966bbb9..63ea892bf 100644 --- a/src/Web/AdminPanel/Pages/EditConfigGrid.razor.cs +++ b/src/Web/AdminPanel/Pages/EditConfigGrid.razor.cs @@ -203,6 +203,7 @@ private async Task OnCreateButtonClickAsync() var modalType = typeof(ModalCreateNew<>).MakeGenericType(this.Type!); parameters.Add(nameof(ModalCreateNew.Item), newObject); + parameters.Add(nameof(ModalCreateNew.PersistenceContext), creationContext); var options = new ModalOptions { DisableBackgroundCancel = true,