From b30a8f3eb4dc3eda656ed3e5b4c7ce5f0646b22e Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 8 Jun 2026 20:55:21 -0700 Subject: [PATCH] Break item on floor change whether its equipped or not --- Zennysoft.Game.Ma/src/game/Game.cs | 25 ++++++------------- Zennysoft.Game.Ma/src/npc/Stele.cs | 7 ++++-- .../src/ui/inventory_menu/ItemSlot.cs | 4 +-- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/Zennysoft.Game.Ma/src/game/Game.cs b/Zennysoft.Game.Ma/src/game/Game.cs index 26130d60..506f622f 100644 --- a/Zennysoft.Game.Ma/src/game/Game.cs +++ b/Zennysoft.Game.Ma/src/game/Game.cs @@ -421,25 +421,14 @@ public partial class Game : Node3D, IGame .Handle((in GameState.Output.LoadNextFloor _) => { EmitSignal(SignalName.OnLoadLevelRequest); + var breakableItems = _player.Inventory.Items.Where(x => x.ItemTag == ItemTag.BreaksOnFloorExit).ToList(); + foreach (IEquipableItem breakableItem in breakableItems) + { + if (_player.EquipmentComponent.IsItemEquipped(breakableItem)) + _player.Unequip(breakableItem); + _player.Inventory.Remove(breakableItem); + } Task.Run(() => Save()); - if (_player.EquipmentComponent.EquippedWeapon.Value.ItemTag == ItemTag.BreaksOnFloorExit) - { - var itemToDestroy = _player.EquipmentComponent.EquippedWeapon.Value; - _player.Unequip(itemToDestroy); - _player.Inventory.Remove(itemToDestroy); - } - if (_player.EquipmentComponent.EquippedArmor.Value.ItemTag == ItemTag.BreaksOnFloorExit) - { - var itemToDestroy = _player.EquipmentComponent.EquippedArmor.Value; - _player.Unequip(itemToDestroy); - _player.Inventory.Remove(itemToDestroy); - } - if (_player.EquipmentComponent.EquippedAccessory.Value.ItemTag == ItemTag.BreaksOnFloorExit) - { - var itemToDestroy = _player.EquipmentComponent.EquippedAccessory.Value; - _player.Unequip(itemToDestroy); - _player.Inventory.Remove(itemToDestroy); - } LoadNextLevel.FadeOut(); }) .Handle((in GameState.Output.ReturnToOverworld _) => diff --git a/Zennysoft.Game.Ma/src/npc/Stele.cs b/Zennysoft.Game.Ma/src/npc/Stele.cs index 26f4d2c8..5e4ec4ca 100644 --- a/Zennysoft.Game.Ma/src/npc/Stele.cs +++ b/Zennysoft.Game.Ma/src/npc/Stele.cs @@ -77,8 +77,11 @@ public partial class Stele : Node3D public async Task EndDialogue() { - await _game.IncrementSteleCount(ID); - AnimationPlayer.Play("fade_in"); + if (!_game.NpcData.SteleDiscovered.Contains(ID)) + { + await _game.IncrementSteleCount(ID); + AnimationPlayer.Play("fade_in"); + } } public override int GetHashCode() => GetPath().GetHashCode(); diff --git a/Zennysoft.Game.Ma/src/ui/inventory_menu/ItemSlot.cs b/Zennysoft.Game.Ma/src/ui/inventory_menu/ItemSlot.cs index 42941539..6fbd6d25 100644 --- a/Zennysoft.Game.Ma/src/ui/inventory_menu/ItemSlot.cs +++ b/Zennysoft.Game.Ma/src/ui/inventory_menu/ItemSlot.cs @@ -53,9 +53,9 @@ public partial class ItemSlot : Control, IItemSlot if (item is IStackable stackable) SetItemCount(stackable.Count.Value); else if (item is IWeapon weapon) - SetEquipmentStat($"ATK {weapon.BonusAttack:D2}"); + SetEquipmentStat(item.ItemTag == ItemTag.MysteryItem ? "ATK ??" : $"ATK {weapon.BonusAttack:D2}"); else if (item is IArmor armor) - SetEquipmentStat($"DEF {armor.BonusDefense:D2}"); + SetEquipmentStat(item.ItemTag == ItemTag.MysteryItem ? "DEF ??" : $"DEF {armor.BonusDefense:D2}"); if (item is IEquipableItem equipableItem) {