Fix receiving items from boxes

This commit is contained in:
2026-03-02 18:17:57 -08:00
parent e6937244ec
commit 701e7b0858
2 changed files with 13 additions and 10 deletions

View File

@@ -461,37 +461,37 @@ public partial class Game : Node3D, IGame
case ItemTag.ContainsAccessory: case ItemTag.ContainsAccessory:
var accessory = _effectService.GetRandomItemOfType<Accessory>(); var accessory = _effectService.GetRandomItemOfType<Accessory>();
_player.Inventory.TryAdd(accessory); _player.Inventory.TryAdd(accessory);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {accessory}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {accessory.ItemName}.");
break; break;
case ItemTag.ContainsArmor: case ItemTag.ContainsArmor:
var armor = _effectService.GetRandomItemOfType<Armor>(); var armor = _effectService.GetRandomItemOfType<Armor>();
_player.Inventory.TryAdd(armor); _player.Inventory.TryAdd(armor);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {armor}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {armor.ItemName}.");
break; break;
case ItemTag.ContainsWeapon: case ItemTag.ContainsWeapon:
var weapon = _effectService.GetRandomItemOfType<Weapon>(); var weapon = _effectService.GetRandomItemOfType<Weapon>();
_player.Inventory.TryAdd(weapon); _player.Inventory.TryAdd(weapon);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {weapon}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {weapon.ItemName}.");
break; break;
case ItemTag.ContainsBox: case ItemTag.ContainsBox:
var box = _effectService.GetRandomItemOfType<BoxItem>(); var box = _effectService.GetRandomItemOfType<BoxItem>();
_player.Inventory.TryAdd(box); _player.Inventory.TryAdd(box);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {box}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {box.ItemName}.");
break; break;
case ItemTag.RandomSpell: case ItemTag.RandomSpell:
var effectItem = _effectService.GetRandomItemOfType<EffectItem>(); var effectItem = _effectService.GetRandomItemOfType<EffectItem>();
_player.Inventory.TryAdd(effectItem); _player.Inventory.TryAdd(effectItem);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {effectItem}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {effectItem.ItemName}.");
break; break;
case ItemTag.ContainsRestorative: case ItemTag.ContainsRestorative:
var restorative = _effectService.GetRandomItemOfType<ConsumableItem>(); var restorative = _effectService.GetRandomItemOfType<ConsumableItem>();
_player.Inventory.TryAdd(restorative); _player.Inventory.TryAdd(restorative);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {restorative}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {restorative.ItemName}.");
break; break;
case ItemTag.DropTo1HPAndGainRareItem: case ItemTag.DropTo1HPAndGainRareItem:
var rareItem = _effectService.DropTo1HPAndGainRareItem<IBaseInventoryItem>(); var rareItem = _effectService.DropTo1HPAndGainRareItem<IBaseInventoryItem>();
_player.Inventory.TryAdd(rareItem); _player.Inventory.TryAdd(rareItem);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {rareItem} but cost dear life."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {rareItem.ItemName} but cost dear life.");
break; break;
case ItemTag.TradeOneRandomItem: case ItemTag.TradeOneRandomItem:
var itemsWithoutBox = _player.Inventory.Items.Where(x => x != boxItem).ToList(); var itemsWithoutBox = _player.Inventory.Items.Where(x => x != boxItem).ToList();
@@ -502,7 +502,7 @@ public partial class Game : Node3D, IGame
_player.Inventory.Remove(randomItem); _player.Inventory.Remove(randomItem);
var newItem = _effectService.GetRandomItemOfType<IBaseInventoryItem>(); var newItem = _effectService.GetRandomItemOfType<IBaseInventoryItem>();
_player.Inventory.TryAdd(newItem); _player.Inventory.TryAdd(newItem);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {newItem}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {newItem.ItemName}.");
break; break;
case ItemTag.TradeAllRandomItems: case ItemTag.TradeAllRandomItems:
var newInventory = _effectService.TradeAllRandomItems(boxItem); var newInventory = _effectService.TradeAllRandomItems(boxItem);
@@ -515,11 +515,11 @@ public partial class Game : Node3D, IGame
case ItemTag.ContainsUnobtainedItem: case ItemTag.ContainsUnobtainedItem:
var unobtainedItem = _effectService.GetUnobtainedItem(); var unobtainedItem = _effectService.GetUnobtainedItem();
_player.Inventory.TryAdd(unobtainedItem); _player.Inventory.TryAdd(unobtainedItem);
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {unobtainedItem}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {unobtainedItem.ItemName}.");
break; break;
case ItemTag.ContainsBasicItem: case ItemTag.ContainsBasicItem:
var basicItem = _effectService.GetBasicItem<IBaseInventoryItem>(); var basicItem = _effectService.GetBasicItem<IBaseInventoryItem>();
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {basicItem}."); InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {basicItem.ItemName}.");
break; break;
case ItemTag.UnequipAllItems: case ItemTag.UnequipAllItems:
_player.Unequip(_player.EquipmentComponent.EquippedWeapon.Value); _player.Unequip(_player.EquipmentComponent.EquippedWeapon.Value);

View File

@@ -71,6 +71,7 @@ public class ItemDatabase
var armorInfo = GD.Load<ArmorStats>($"res://src/items/armor/resources/{armor}".TrimSuffix(".remap")); var armorInfo = GD.Load<ArmorStats>($"res://src/items/armor/resources/{armor}".TrimSuffix(".remap"));
var armorScene = ResourceLoader.Load<PackedScene>("res://src/items/armor/Armor.tscn").Instantiate<Armor>(); var armorScene = ResourceLoader.Load<PackedScene>("res://src/items/armor/Armor.tscn").Instantiate<Armor>();
armorScene.Stats = armorInfo; armorScene.Stats = armorInfo;
armorScene.Init();
if (!database.Contains(armorScene)) if (!database.Contains(armorScene))
database.Add(armorScene); database.Add(armorScene);
} }
@@ -80,6 +81,7 @@ public class ItemDatabase
var weaponInfo = GD.Load<WeaponStats>($"res://src/items/weapons/resources/{weapon}".TrimSuffix(".remap")); var weaponInfo = GD.Load<WeaponStats>($"res://src/items/weapons/resources/{weapon}".TrimSuffix(".remap"));
var weaponScene = ResourceLoader.Load<PackedScene>("res://src/items/weapons/Weapon.tscn").Instantiate<Weapon>(); var weaponScene = ResourceLoader.Load<PackedScene>("res://src/items/weapons/Weapon.tscn").Instantiate<Weapon>();
weaponScene.Stats = weaponInfo; weaponScene.Stats = weaponInfo;
weaponScene.Init();
if (!database.Contains(weaponScene)) if (!database.Contains(weaponScene))
database.Add(weaponScene); database.Add(weaponScene);
} }
@@ -89,6 +91,7 @@ public class ItemDatabase
var accessoryInfo = GD.Load<AccessoryStats>($"res://src/items/accessory/resources/{accessory}".TrimSuffix(".remap")); var accessoryInfo = GD.Load<AccessoryStats>($"res://src/items/accessory/resources/{accessory}".TrimSuffix(".remap"));
var accessoryScene = ResourceLoader.Load<PackedScene>("res://src/items/accessory/Accessory.tscn").Instantiate<Accessory>(); var accessoryScene = ResourceLoader.Load<PackedScene>("res://src/items/accessory/Accessory.tscn").Instantiate<Accessory>();
accessoryScene.Stats = accessoryInfo; accessoryScene.Stats = accessoryInfo;
accessoryScene.Init();
if (!database.Contains(accessoryScene)) if (!database.Contains(accessoryScene))
database.Add(accessoryScene); database.Add(accessoryScene);
} }