Break item on floor change whether its equipped or not

This commit is contained in:
2026-06-08 20:55:21 -07:00
parent 10a0dd69d1
commit b30a8f3eb4
3 changed files with 14 additions and 22 deletions
+7 -18
View File
@@ -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 _) =>
+5 -2
View File
@@ -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();
@@ -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)
{