Add Key Item tag and restrict it from being used/thrown/dropped
This commit is contained in:
@@ -23,5 +23,6 @@ public enum ItemTag
|
||||
UseAllItems,
|
||||
GlueOnEquip,
|
||||
BreaksOnUnequip,
|
||||
ContainsJewel
|
||||
ContainsJewel,
|
||||
KeyItem
|
||||
}
|
||||
@@ -556,7 +556,7 @@ public partial class Game : Node3D, IGame
|
||||
InventoryEventNotification.Invoke($"{boxItem.ItemName} contained {rareItem.ItemName} but cost dear life.");
|
||||
break;
|
||||
case ItemTag.TradeOneRandomItem:
|
||||
var itemsWithoutBox = _player.Inventory.Items.Where(x => x != boxItem).ToList();
|
||||
var itemsWithoutBox = _player.Inventory.Items.Where(x => x != boxItem).Where(x => x.ItemTag != ItemTag.KeyItem).ToList();
|
||||
var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var index = rng.RandiRange(0, itemsWithoutBox.Count - 1);
|
||||
@@ -603,7 +603,7 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
_player.Inventory.Items.Remove(boxItem);
|
||||
GameRepo.CloseInventory();
|
||||
var itemsToThrow = _player.Inventory.Items.ToList();
|
||||
var itemsToThrow = _player.Inventory.Items.Where(x => x.ItemTag != ItemTag.KeyItem).ToList();
|
||||
_player.Inventory.Items.Clear();
|
||||
double[] throwAngles = [0, -5, 5, -15, -25, 25];
|
||||
var throwIndex = 0;
|
||||
|
||||
@@ -355,7 +355,7 @@ public class EffectService
|
||||
public void TradeRandomItem<T>(BoxItem box)
|
||||
where T : IBaseInventoryItem
|
||||
{
|
||||
var tradableItems = _player.Inventory.Items.OfType<T>().ToList();
|
||||
var tradableItems = _player.Inventory.Items.OfType<T>().Where(x => x.ItemTag != ItemTag.KeyItem).ToList();
|
||||
var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var randomIndex = rng.RandiRange(0, tradableItems.Count - 1);
|
||||
@@ -370,7 +370,7 @@ public class EffectService
|
||||
public IEnumerable<IBaseInventoryItem> TradeAllRandomItems(BoxItem box)
|
||||
{
|
||||
var newInventory = new List<IBaseInventoryItem>();
|
||||
var items = _player.Inventory.Items.ToList();
|
||||
var items = _player.Inventory.Items.Where(x => x.ItemTag != ItemTag.KeyItem).ToList();
|
||||
foreach (var item in items)
|
||||
newInventory.Add(GetRandomItemOfType<IBaseInventoryItem>());
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
|
||||
private void ItemPressed(IItemSlot selectedItem)
|
||||
{
|
||||
if (_blocking)
|
||||
if (_blocking || selectedItem.Item.Value.ItemTag == ItemTag.KeyItem)
|
||||
return;
|
||||
|
||||
SetProcessInput(false);
|
||||
|
||||
Reference in New Issue
Block a user