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,
|
UseAllItems,
|
||||||
GlueOnEquip,
|
GlueOnEquip,
|
||||||
BreaksOnUnequip,
|
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.");
|
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).Where(x => x.ItemTag != ItemTag.KeyItem).ToList();
|
||||||
var rng = new RandomNumberGenerator();
|
var rng = new RandomNumberGenerator();
|
||||||
rng.Randomize();
|
rng.Randomize();
|
||||||
var index = rng.RandiRange(0, itemsWithoutBox.Count - 1);
|
var index = rng.RandiRange(0, itemsWithoutBox.Count - 1);
|
||||||
@@ -603,7 +603,7 @@ public partial class Game : Node3D, IGame
|
|||||||
|
|
||||||
_player.Inventory.Items.Remove(boxItem);
|
_player.Inventory.Items.Remove(boxItem);
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
var itemsToThrow = _player.Inventory.Items.ToList();
|
var itemsToThrow = _player.Inventory.Items.Where(x => x.ItemTag != ItemTag.KeyItem).ToList();
|
||||||
_player.Inventory.Items.Clear();
|
_player.Inventory.Items.Clear();
|
||||||
double[] throwAngles = [0, -5, 5, -15, -25, 25];
|
double[] throwAngles = [0, -5, 5, -15, -25, 25];
|
||||||
var throwIndex = 0;
|
var throwIndex = 0;
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ public class EffectService
|
|||||||
public void TradeRandomItem<T>(BoxItem box)
|
public void TradeRandomItem<T>(BoxItem box)
|
||||||
where T : IBaseInventoryItem
|
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();
|
var rng = new RandomNumberGenerator();
|
||||||
rng.Randomize();
|
rng.Randomize();
|
||||||
var randomIndex = rng.RandiRange(0, tradableItems.Count - 1);
|
var randomIndex = rng.RandiRange(0, tradableItems.Count - 1);
|
||||||
@@ -370,7 +370,7 @@ public class EffectService
|
|||||||
public IEnumerable<IBaseInventoryItem> TradeAllRandomItems(BoxItem box)
|
public IEnumerable<IBaseInventoryItem> TradeAllRandomItems(BoxItem box)
|
||||||
{
|
{
|
||||||
var newInventory = new List<IBaseInventoryItem>();
|
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)
|
foreach (var item in items)
|
||||||
newInventory.Add(GetRandomItemOfType<IBaseInventoryItem>());
|
newInventory.Add(GetRandomItemOfType<IBaseInventoryItem>());
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
|||||||
|
|
||||||
private void ItemPressed(IItemSlot selectedItem)
|
private void ItemPressed(IItemSlot selectedItem)
|
||||||
{
|
{
|
||||||
if (_blocking)
|
if (_blocking || selectedItem.Item.Value.ItemTag == ItemTag.KeyItem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SetProcessInput(false);
|
SetProcessInput(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user