Asset/resource type declaring a fusion recipe for the game. Defines a list of ingredients (name and count), a prefab result, and an optional sound; also defines the ingredient data structure with an optional icon path.
namespace SBH;
using Sandbox;
using System.Collections.Generic;
/// <summary>
/// [SBHBase] Receta de fusión: N ingredientes (por nombre visible en escena,
/// con cantidad) → una entidad resultado. Los ingredientes pueden ser
/// nextbots (su Print Name: "Raddy") o props (el nombre con el que spawnean
/// del menú Q) — la tool Merge no distingue. Las recetas son DATOS del pack:
/// cada pack trae sus archivos .fusion en Assets y la tool las levanta sola
/// de ResourceLibrary. El mecanismo vive en la base; los personajes, no.
/// </summary>
[AssetType( Name = "SBHBase Fusion Recipe", Extension = "fusion", Category = "SBHBase" )]
public class RecetaFusion : GameResource
{
[Property, Description( "Qué hace falta juntar: nombre visible y cantidad de cada ingrediente" )]
public List<IngredienteFusion> Ingredientes { get; set; } = new();
[Property, Description( "Prefab que aparece al completar la receta" )]
public PrefabFile Resultado { get; set; }
[Property, Description( "Sonido al fusionar (opcional)" )]
public SoundEvent Sonido { get; set; }
}
/// <summary> Un ingrediente de la receta: nombre visible + cuántos. </summary>
public class IngredienteFusion
{
[Property, Description( "Identidad del ingrediente: Print Name del bot, o nombre del modelo del prop (\"watermelon\"); no distingue mayúsculas" )]
public string Nombre { get; set; } = "";
[Property, Description( "Cuántos hacen falta" )]
public int Cantidad { get; set; } = 1;
[Property, Description( "Ruta de asset para la miniatura del recetario (vacío = se busca el .sent por nombre; para props, la ruta del .vmdl)" )]
public string Icono { get; set; }
}