Game/Shop/ConsumableCatalog.cs

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.

File Access
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
        },
    };
       
}