A static catalog of consumable shop items for a game. Defines ConsumableId enum, a ConsumableItem DTO with fields (Id, Name, Icon, Description, Cost), and a ConsumableCatalog with a readonly list All containing predefined items and their metadata.
using Sandbox;
using System.Collections.Generic;
public enum ConsumableId
{
FuseExtension, // +8s timer
ColumnSweep, // clears most dangerous column
Overdrive, // doubles multiplier this wave
Reveal, // shows next wave chests for 3s
Redraw, // rerolls hand
ChainNuke, // forces chain on all placed bombs
ClusterDrop, // ← replaces ChainNuke
Overload,
Heart
}
public class ConsumableItem
{
public ConsumableId Id { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public string Description { get; set; }
public int Cost { get; set; } // frags per use
}
public static class ConsumableCatalog
{
public static readonly List<ConsumableItem> All = new()
{
new ConsumableItem {
Id = ConsumableId.FuseExtension,
Name = "Fuse Extension",
Icon = "⏱️",
Description = "Adds +8 seconds to the current wave timer.",
Cost = 50,
},
new ConsumableItem {
Id = ConsumableId.ColumnSweep,
Name = "Column Sweep",
Icon = "🧹",
Description = "Destroys all chests in the most dangerous column.",
Cost = 60,
},
new ConsumableItem {
Id = ConsumableId.Overdrive,
Name = "Overdrive",
Icon = "💥",
Description = "Doubles your multiplier on the next detonation this wave.",
Cost = 80,
},
new ConsumableItem {
Id = ConsumableId.Reveal,
Name = "Reveal",
Icon = "🔮",
Description = "Reveals where chests will spawn next wave for 3 seconds.",
Cost = 45,
},
new ConsumableItem {
Id = ConsumableId.Redraw,
Name = "Redraw",
Icon = "🔄",
Description = "Rerolls your entire bomb hand for this wave.",
Cost = 35,
},
new ConsumableItem {
Id = ConsumableId.ChainNuke,
Name = "Chain Nuke",
Icon = "☢️",
Description = "Forces a chain reaction between all your placed bombs, regardless of position.",
Cost = 90,
},
new ConsumableItem {
Id = ConsumableId.ClusterDrop,
Name = "Cluster Drop",
Icon = "💣",
Description = "Spawns 3 bomb chests on the grid instantly, pre-placed for maximum chain potential.",
Cost = 75,
},
new ConsumableItem {
Id = ConsumableId.Overload,
Name = "Overload",
Icon = "⚡",
Description = "Your next detonation ignores the minimum chest requirement this wave. Survive no matter what.",
Cost = 70,
},
new ConsumableItem {
Id = ConsumableId.Heart,
Name = "Heart",
Icon = "❤️",
Description = "Use mid-run to gain +1 life. Max 3 lives total.",
Cost = 40
},
};
}