]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add microwave recipes to the guidebook (#34105)
authorpathetic meowmeow <uhhadd@gmail.com>
Sun, 23 Feb 2025 15:24:44 +0000 (10:24 -0500)
committerGitHub <noreply@github.com>
Sun, 23 Feb 2025 15:24:44 +0000 (16:24 +0100)
25 files changed:
Content.Client/Guidebook/Controls/GuideMicrowaveEmbed.xaml [new file with mode: 0644]
Content.Client/Guidebook/Controls/GuideMicrowaveEmbed.xaml.cs [new file with mode: 0644]
Content.Client/Guidebook/Controls/GuideMicrowaveGroupEmbed.cs [new file with mode: 0644]
Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs
Resources/Locale/en-US/guidebook/cooking.ftl [new file with mode: 0644]
Resources/Locale/en-US/guidebook/guides.ftl
Resources/Prototypes/Guidebook/references.yml
Resources/Prototypes/Recipes/Cooking/meal_recipes.yml
Resources/Prototypes/Recipes/Cooking/medical_recipes.yml
Resources/ServerInfo/Guidebook/Service/BarsAndCookiesRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/BreadRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/BreakfastRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/CakeRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/DessertRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/FoodRecipes.xml
Resources/ServerInfo/Guidebook/Service/MedicinalRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/MothRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/OtherRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/PastaRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/PieRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/PizzaRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/SaladRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/SavoryRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/SecretRecipes.xml [new file with mode: 0644]
Resources/ServerInfo/Guidebook/Service/SoupRecipes.xml [new file with mode: 0644]

diff --git a/Content.Client/Guidebook/Controls/GuideMicrowaveEmbed.xaml b/Content.Client/Guidebook/Controls/GuideMicrowaveEmbed.xaml
new file mode 100644 (file)
index 0000000..fb09b5c
--- /dev/null
@@ -0,0 +1,35 @@
+<PanelContainer xmlns="https://spacestation14.io"
+              xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
+              Margin="5 5 5 5">
+    <PanelContainer.PanelOverride>
+        <gfx:StyleBoxFlat BorderThickness="1" BorderColor="#777777"/>
+    </PanelContainer.PanelOverride>
+
+    <BoxContainer Orientation="Vertical">
+        <PanelContainer HorizontalExpand="True">
+            <BoxContainer Orientation="Horizontal" HorizontalAlignment="Center">
+                <BoxContainer Name="IconContainer"/>
+                <RichTextLabel Name="ResultName"/>
+            </BoxContainer>
+            <PanelContainer.PanelOverride>
+                <gfx:StyleBoxFlat BackgroundColor="#393c3f"/>
+            </PanelContainer.PanelOverride>
+        </PanelContainer>
+
+        <GridContainer Columns="2" Margin="10">
+            <BoxContainer Orientation="Vertical" HorizontalExpand="True">
+                <Label Text="{Loc 'guidebook-microwave-ingredients-header'}"/>
+                <GridContainer Columns="3" Name="IngredientsGrid"/>
+            </BoxContainer>
+
+            <BoxContainer Orientation="Vertical" HorizontalExpand="True">
+                <Label Text="{Loc 'guidebook-microwave-cook-time-header'}"/>
+                <RichTextLabel Name="CookTimeLabel"/>
+            </BoxContainer>
+        </GridContainer>
+
+        <BoxContainer Margin="10">
+            <RichTextLabel Name="ResultDescription" HorizontalAlignment="Left"/>
+        </BoxContainer>
+    </BoxContainer>
+</PanelContainer>
diff --git a/Content.Client/Guidebook/Controls/GuideMicrowaveEmbed.xaml.cs b/Content.Client/Guidebook/Controls/GuideMicrowaveEmbed.xaml.cs
new file mode 100644 (file)
index 0000000..1ae09fc
--- /dev/null
@@ -0,0 +1,183 @@
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using Content.Client.Guidebook.Richtext;
+using Content.Client.Message;
+using Content.Client.UserInterface.ControlExtensions;
+using Content.Shared.Chemistry.Reagent;
+using Content.Shared.Kitchen;
+using JetBrains.Annotations;
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.XAML;
+using Robust.Client.UserInterface;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Utility;
+
+namespace Content.Client.Guidebook.Controls;
+
+/// <summary>
+/// Control for embedding a microwave recipe into a guidebook.
+/// </summary>
+[UsedImplicitly, GenerateTypedNameReferences]
+public sealed partial class GuideMicrowaveEmbed : PanelContainer, IDocumentTag, ISearchableControl
+{
+    [Dependency] private readonly IPrototypeManager _prototype = default!;
+    [Dependency] private readonly ILogManager _logManager = default!;
+
+    private ISawmill _sawmill = default!;
+
+    public GuideMicrowaveEmbed()
+    {
+        RobustXamlLoader.Load(this);
+        IoCManager.InjectDependencies(this);
+        MouseFilter = MouseFilterMode.Stop;
+
+        _sawmill = _logManager.GetSawmill("guidemicrowaveembed");
+    }
+
+    public GuideMicrowaveEmbed(string recipe) : this()
+    {
+        GenerateControl(_prototype.Index<FoodRecipePrototype>(recipe));
+    }
+
+    public GuideMicrowaveEmbed(FoodRecipePrototype recipe) : this()
+    {
+        GenerateControl(recipe);
+    }
+
+    public bool CheckMatchesSearch(string query)
+    {
+        return this.ChildrenContainText(query);
+    }
+
+    public void SetHiddenState(bool state, string query)
+    {
+        Visible = CheckMatchesSearch(query) ? state : !state;
+    }
+
+    public bool TryParseTag(Dictionary<string, string> args, [NotNullWhen(true)] out Control? control)
+    {
+        control = null;
+        if (!args.TryGetValue("Recipe", out var id))
+        {
+            _sawmill.Error("Recipe embed tag is missing recipe prototype argument");
+            return false;
+        }
+
+        if (!_prototype.TryIndex<FoodRecipePrototype>(id, out var recipe))
+        {
+            _sawmill.Error($"Specified recipe prototype \"{id}\" is not a valid recipe prototype");
+            return false;
+        }
+
+        GenerateControl(recipe);
+
+        control = this;
+        return true;
+    }
+
+    private void GenerateHeader(FoodRecipePrototype recipe)
+    {
+        var entity = _prototype.Index<EntityPrototype>(recipe.Result);
+
+        IconContainer.AddChild(new GuideEntityEmbed(recipe.Result, false, false));
+        ResultName.SetMarkup(entity.Name);
+        ResultDescription.SetMarkup(entity.Description);
+    }
+
+    private void GenerateSolidIngredients(FoodRecipePrototype recipe)
+    {
+        foreach (var (product, amount) in recipe.IngredientsSolids.OrderByDescending(p => p.Value))
+        {
+            var ingredient = _prototype.Index<EntityPrototype>(product);
+
+            IngredientsGrid.AddChild(new GuideEntityEmbed(product, false, false));
+
+            // solid name
+
+            var solidNameMsg = new FormattedMessage();
+            solidNameMsg.AddMarkupOrThrow(Loc.GetString("guidebook-microwave-solid-name-display", ("ingredient", ingredient.Name)));
+            solidNameMsg.Pop();
+
+            var solidNameLabel = new RichTextLabel();
+            solidNameLabel.SetMessage(solidNameMsg);
+
+            IngredientsGrid.AddChild(solidNameLabel);
+
+            // solid quantity
+
+            var solidQuantityMsg = new FormattedMessage();
+            solidQuantityMsg.AddMarkupOrThrow(Loc.GetString("guidebook-microwave-solid-quantity-display", ("amount", amount)));
+            solidQuantityMsg.Pop();
+
+            var solidQuantityLabel = new RichTextLabel();
+            solidQuantityLabel.SetMessage(solidQuantityMsg);
+
+            IngredientsGrid.AddChild(solidQuantityLabel);
+        }
+    }
+
+    private void GenerateLiquidIngredients(FoodRecipePrototype recipe)
+    {
+        foreach (var (product, amount) in recipe.IngredientsReagents.OrderByDescending(p => p.Value))
+        {
+            var reagent = _prototype.Index<ReagentPrototype>(product);
+
+            // liquid color
+
+            var liquidColorMsg = new FormattedMessage();
+            liquidColorMsg.AddMarkupOrThrow(Loc.GetString("guidebook-microwave-reagent-color-display", ("color", reagent.SubstanceColor)));
+            liquidColorMsg.Pop();
+
+            var liquidColorLabel = new RichTextLabel();
+            liquidColorLabel.SetMessage(liquidColorMsg);
+            liquidColorLabel.HorizontalAlignment = Control.HAlignment.Center;
+
+            IngredientsGrid.AddChild(liquidColorLabel);
+
+            // liquid name
+
+            var liquidNameMsg = new FormattedMessage();
+            liquidNameMsg.AddMarkupOrThrow(Loc.GetString("guidebook-microwave-reagent-name-display", ("reagent", reagent.LocalizedName)));
+            liquidNameMsg.Pop();
+
+            var liquidNameLabel = new RichTextLabel();
+            liquidNameLabel.SetMessage(liquidNameMsg);
+
+            IngredientsGrid.AddChild(liquidNameLabel);
+
+            // liquid quantity
+
+            var liquidQuantityMsg = new FormattedMessage();
+            liquidQuantityMsg.AddMarkupOrThrow(Loc.GetString("guidebook-microwave-reagent-quantity-display", ("amount", amount)));
+            liquidQuantityMsg.Pop();
+
+            var liquidQuantityLabel = new RichTextLabel();
+            liquidQuantityLabel.SetMessage(liquidQuantityMsg);
+
+            IngredientsGrid.AddChild(liquidQuantityLabel);
+        }
+    }
+
+    private void GenerateIngredients(FoodRecipePrototype recipe)
+    {
+        GenerateLiquidIngredients(recipe);
+        GenerateSolidIngredients(recipe);
+    }
+
+    private void GenerateCookTime(FoodRecipePrototype recipe)
+    {
+        var msg = new FormattedMessage();
+        msg.AddMarkupOrThrow(Loc.GetString("guidebook-microwave-cook-time", ("time", recipe.CookTime)));
+        msg.Pop();
+
+        CookTimeLabel.SetMessage(msg);
+    }
+
+    private void GenerateControl(FoodRecipePrototype recipe)
+    {
+        GenerateHeader(recipe);
+        GenerateIngredients(recipe);
+        GenerateCookTime(recipe);
+    }
+}
diff --git a/Content.Client/Guidebook/Controls/GuideMicrowaveGroupEmbed.cs b/Content.Client/Guidebook/Controls/GuideMicrowaveGroupEmbed.cs
new file mode 100644 (file)
index 0000000..098e994
--- /dev/null
@@ -0,0 +1,59 @@
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using Content.Client.Guidebook.Richtext;
+using Content.Shared.Kitchen;
+using JetBrains.Annotations;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface;
+using Robust.Shared.Prototypes;
+
+namespace Content.Client.Guidebook.Controls;
+
+/// <summary>
+/// Control for listing microwave recipes in a guidebook
+/// </summary>
+[UsedImplicitly]
+public sealed partial class GuideMicrowaveGroupEmbed : BoxContainer, IDocumentTag
+{
+    [Dependency] private readonly IPrototypeManager _prototype = default!;
+
+    public GuideMicrowaveGroupEmbed()
+    {
+        Orientation = LayoutOrientation.Vertical;
+        IoCManager.InjectDependencies(this);
+        MouseFilter = MouseFilterMode.Stop;
+    }
+
+    public GuideMicrowaveGroupEmbed(string group) : this()
+    {
+        CreateEntries(group);
+    }
+
+    public bool TryParseTag(Dictionary<string, string> args, [NotNullWhen(true)] out Control? control)
+    {
+        control = null;
+        if (!args.TryGetValue("Group", out var group))
+        {
+            Logger.Error("Microwave group embed tag is missing group argument");
+            return false;
+        }
+
+        CreateEntries(group);
+
+        control = this;
+        return true;
+    }
+
+    private void CreateEntries(string group)
+    {
+        var prototypes = _prototype.EnumeratePrototypes<FoodRecipePrototype>()
+            .Where(p => p.Group.Equals(group))
+            .OrderBy(p => p.Name);
+
+        foreach (var recipe in prototypes)
+        {
+            var embed = new GuideMicrowaveEmbed(recipe);
+            AddChild(embed);
+        }
+    }
+}
index 65a7b9ed045a715b23f7de1f4c4bbd529b422c62..a92e6bfd2013c6c5f4077c7565f37a8c2cbb68f1 100644 (file)
@@ -19,6 +19,9 @@ namespace Content.Shared.Kitchen
         [DataField("name")]
         private string _name = string.Empty;
 
+        [DataField]
+        public string Group = "Other";
+
         [DataField("reagents", customTypeSerializer:typeof(PrototypeIdDictionarySerializer<FixedPoint2, ReagentPrototype>))]
         private Dictionary<string, FixedPoint2> _ingsReagents = new();
 
diff --git a/Resources/Locale/en-US/guidebook/cooking.ftl b/Resources/Locale/en-US/guidebook/cooking.ftl
new file mode 100644 (file)
index 0000000..14b9525
--- /dev/null
@@ -0,0 +1,15 @@
+guidebook-microwave-ingredients-header = Ingredients
+guidebook-microwave-cook-time-header = Cooking Time
+guidebook-microwave-cook-time =
+    { $time ->
+        [0] Instant
+        [1] [bold]1[/bold] second
+       *[other] [bold]{$time}[/bold] seconds
+    }
+
+guidebook-microwave-reagent-color-display = [color={$color}]■[/color]
+guidebook-microwave-reagent-name-display = [bold]{$reagent}[/bold]
+guidebook-microwave-reagent-quantity-display = × {$amount}u
+
+guidebook-microwave-solid-name-display = [bold]{$ingredient}[/bold]
+guidebook-microwave-solid-quantity-display = × {$amount}
index 530881abd19cc38ecc1b5238fcbbc5f51387ab5d..0e7bdc8db0ced7f932583096b6f81d87c2ffa702 100644 (file)
@@ -112,6 +112,22 @@ guide-entry-botanical = Botanical
 guide-entry-special = Special
 guide-entry-others = Others
 
+guide-entry-pizza-recipes = Pizzas
+guide-entry-savory-recipes = Savory Foods
+guide-entry-bread-recipes = Breads
+guide-entry-breakfast-recipes = Breakfast Foods
+guide-entry-moth-recipes = Moth Foods
+guide-entry-pasta-recipes = Pastas & Noodles
+guide-entry-dessert-recipes = Desserts & Pastries
+guide-entry-soup-recipes = Soups & Stews
+guide-entry-pie-recipes = Pies & Tarts
+guide-entry-barsandcookies-recipes = Bars & Cookies
+guide-entry-cake-recipes = Cakes
+guide-entry-salad-recipes = Salads
+guide-entry-medicinal-recipes = Medicinal
+guide-entry-other-recipes = Other
+guide-entry-secret-recipes = Secret
+
 guide-entry-antagonists = Antagonists
 guide-entry-nuclear-operatives = Nuclear Operatives
 guide-entry-traitors = Traitors
index 7118bf3bc082a6c1ffb29c7f4b78c2af46f1c270..c7413892a084e618997528457a5c5474b34fbd94 100644 (file)
   id: FoodRecipes
   name: guide-entry-foodrecipes
   text: "/ServerInfo/Guidebook/Service/FoodRecipes.xml"
+  filterEnabled: True
+  children:
+  - PizzaRecipes
+  - SavoryRecipes
+  - BreadRecipes
+  - BreakfastRecipes
+  - MothRecipes
+  - PastaRecipes
+  - DessertRecipes
+  - SoupRecipes
+  - PieRecipes
+  - BarsAndCookiesRecipes
+  - CakeRecipes
+  - SaladRecipes
+  - OtherRecipes
+  - MedicinalRecipes
+  - SecretRecipes
+
+- type: guideEntry
+  id: PizzaRecipes
+  name: guide-entry-pizza-recipes
+  text: "/ServerInfo/Guidebook/Service/PizzaRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: SavoryRecipes
+  name: guide-entry-savory-recipes
+  text: "/ServerInfo/Guidebook/Service/SavoryRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: BreadRecipes
+  name: guide-entry-bread-recipes
+  text: "/ServerInfo/Guidebook/Service/BreadRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: BreakfastRecipes
+  name: guide-entry-breakfast-recipes
+  text: "/ServerInfo/Guidebook/Service/BreakfastRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: MothRecipes
+  name: guide-entry-moth-recipes
+  text: "/ServerInfo/Guidebook/Service/MothRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: PastaRecipes
+  name: guide-entry-pasta-recipes
+  text: "/ServerInfo/Guidebook/Service/PastaRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: DessertRecipes
+  name: guide-entry-dessert-recipes
+  text: "/ServerInfo/Guidebook/Service/DessertRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: SoupRecipes
+  name: guide-entry-soup-recipes
+  text: "/ServerInfo/Guidebook/Service/SoupRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: PieRecipes
+  name: guide-entry-pie-recipes
+  text: "/ServerInfo/Guidebook/Service/PieRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: BarsAndCookiesRecipes
+  name: guide-entry-barsandcookies-recipes
+  text: "/ServerInfo/Guidebook/Service/BarsAndCookiesRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: CakeRecipes
+  name: guide-entry-cake-recipes
+  text: "/ServerInfo/Guidebook/Service/CakeRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: SaladRecipes
+  name: guide-entry-salad-recipes
+  text: "/ServerInfo/Guidebook/Service/SaladRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: OtherRecipes
+  name: guide-entry-other-recipes
+  text: "/ServerInfo/Guidebook/Service/OtherRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: MedicinalRecipes
+  name: guide-entry-medicinal-recipes
+  text: "/ServerInfo/Guidebook/Service/MedicinalRecipes.xml"
+  filterEnabled: True
+
+- type: guideEntry
+  id: SecretRecipes
+  name: guide-entry-secret-recipes
+  text: "/ServerInfo/Guidebook/Service/SecretRecipes.xml"
+  filterEnabled: True
 
 - type: guideEntry
   id: Writing
index 8e2e97a746e4225af656126eade7b836ff4e9d41..c3a5012ac099956127f9dbd2849bcbebc43d2650 100644 (file)
@@ -3,6 +3,7 @@
   name: bun recipe
   result: FoodBreadBun
   time: 5
+  group: Breads
   solids:
     FoodDoughSlice: 1 # one third of a standard bread dough recipe
 
@@ -12,6 +13,7 @@
   name: bagel recipe
   result: FoodBagel
   time: 5
+  group: Breads
   solids:
     FoodDoughRope: 1 # created by rolling a dough slice.
 
@@ -20,6 +22,7 @@
   name: poppyseed bagel recipe
   result: FoodBagelPoppy
   time: 5
+  group: Breads
   solids:
     FoodDoughRope: 1
     PoppySeeds: 1
@@ -29,6 +32,7 @@
   name: cotton bagel recipe
   result: FoodBagelCotton
   time: 5
+  group: Moth
   solids:
     FoodDoughCottonRope: 1
 
@@ -39,6 +43,7 @@
   name: appendix burger recipe
   result: FoodBurgerAppendix
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     OrganHumanAppendix: 1
@@ -48,6 +53,7 @@
   name: bacon burger recipe
   result: FoodBurgerBacon
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatBacon: 1
@@ -58,6 +64,7 @@
   name: baseball burger recipe
   result: FoodBurgerBaseball
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     BaseBallBat: 1
@@ -67,6 +74,7 @@
   name: bearger recipe
   result: FoodBurgerBear
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatBear: 1
@@ -76,6 +84,7 @@
   name: big bite burger recipe
   result: FoodBurgerBig
   time: 15
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeat: 2
@@ -88,6 +97,7 @@
   name: brain burger recipe
   result: FoodBurgerBrain
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     OrganHumanBrain: 1
   name: cat burger recipe
   result: FoodBurgerCat
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeat: 1
   name: cheeseburger recipe
   result: FoodBurgerCheese
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeat: 1
   name: chicken sandwich recipe
   result: FoodBurgerChicken
   time: 10
+  group: Savory
   reagents:
     Mayo: 5
   solids:
   name: clownburger recipe
   result: FoodBurgerClown
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     ClothingMaskClown: 1
   name: corgi burger recipe
   result: FoodBurgerCorgi
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatCorgi: 1
   name: crab burger recipe
   result: FoodBurgerCrab
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatCrab: 2
   name: crazy hamburger recipe
   result: FoodBurgerCrazy
   time: 15
+  group: Savory
   reagents:
     OilOlive: 15
   solids:
   name: duck sandwich recipe
   result: FoodBurgerDuck
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatDuck: 1
   name: empowered burger recipe
   result: FoodBurgerEmpowered
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     SheetPlasma1: 2
   name: fillet-o-carp burger recipe
   result: FoodBurgerCarp
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatFish: 1
   name: five alarm burger recipe
   result: FoodBurgerFive
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeat: 1
   name: ghost burger recipe
   result: FoodBurgerGhost
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     Ectoplasm: 1
   name: human burger recipe
   result: FoodBurgerHuman
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatHuman: 1
   name: jelly burger recipe
   result: FoodBurgerJelly
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodJellyAmanita: 1
   name: McGuffin recipe
   result: FoodBurgerMcguffin
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodCheeseSlice: 1
   name: BBQ rib sandwich recipe
   result: FoodBurgerMcrib
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMealRibs: 1
   name: mime burger recipe
   result: FoodBurgerMime
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     ClothingMaskMime: 1
   name: plain burger recipe
   result: FoodBurgerPlain
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeat: 1
   name: rat burger recipe
   result: FoodBurgerRat
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatRat: 1
   name: roburger recipe
   result: FoodBurgerRobot
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     CapacitorStockPart: 2
   name: soylent burger recipe
   result: FoodBurgerSoy
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodCheeseSlice: 2
   name: spell burger recipe
   result: FoodBurgerSpell
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     ClothingHeadHatWizard: 1
   name: super bite burger recipe
   result: FoodBurgerSuper
   time: 25
+  group: Savory
   reagents:
     TableSalt: 5
   solids:
   name: tofu burger recipe
   result: FoodBurgerTofu
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodTofuSlice: 1
   name: xenoburger recipe
   result: FoodBurgerXeno
   time: 10
+  group: Savory
   solids:
     FoodBreadBun: 1
     FoodMeatXeno: 1
   id: RecipeMothRoachburger
   name: mothroachburger recipe
   result: FoodBurgerMothRoach
+  group: Savory
   solids:
     FoodBreadBun: 1
     MobMothroach: 1
   name: banana bread recipe
   result: FoodBreadBanana
   time: 15
+  group: LoafCakes
   solids:
     FoodDough: 1
     FoodBanana: 1
   name: cornbread recipe
   result: FoodBreadCorn
   time: 10
+  group: Breads
   solids:
     FoodDoughCornmeal: 1
 
   name: cream cheese bread recipe
   result: FoodBreadCreamcheese
   time: 15
+  group: Breads
   reagents:
     Milk: 5
   solids:
   name: meat bread recipe
   result: FoodBreadMeat
   time: 15
+  group: Breads
   solids:
     FoodDough: 1
     FoodMeatCutlet: 2
   name: mimana bread recipe
   result: FoodBreadMimana
   time: 15
+  group: Breads
   reagents:
     Nothing: 5
   solids:
   name: bread recipe
   result: FoodBreadPlain
   time: 10
+  group: Breads
   solids:
     FoodDough: 1
 
   name: cotton bread recipe
   result: FoodBreadCotton
   time: 10
+  group: Moth
   solids:
     FoodDoughCotton: 1
 
   name: sausage bread recipe
   result: FoodBreadSausage
   time: 15
+  group: Breads
   solids:
     FoodDough: 1
     FoodMeat: 1 #replace with sausage
   name: spider meat bread recipe
   result: FoodBreadMeatSpider
   time: 15
+  group: Breads
   solids:
     FoodDough: 1
     FoodMeatSpiderCutlet: 2
   name: tofu bread recipe
   result: FoodBreadTofu
   time: 15
+  group: Breads
   solids:
     FoodDough: 1
     FoodTofu: 1
   name: xeno meat bread recipe
   result: FoodBreadMeatXeno
   time: 15
+  group: Breads
   solids:
     FoodDough: 1
     FoodMeatXenoCutlet: 2
   name: baguette recipe
   result: FoodBreadBaguette
   time: 15
+  group: Breads
   reagents:
     TableSalt: 5
     Blackpepper: 5
   name: baguette recipe
   result: FoodBreadBaguetteCotton
   time: 15
+  group: Moth
   reagents:
     TableSalt: 5
     Blackpepper: 5
   result: WeaponBaguette
   secretRecipe: true
   time: 15
+  group: Secret
   reagents:
     TableSalt: 5
     Blackpepper: 5
   name: buttered toast recipe
   result: FoodBreadButteredToast
   time: 5
+  group: Breads
   solids:
     FoodBreadPlainSlice: 1
     FoodButterSlice: 1
   name: french toast recipe
   result: FoodBreadFrenchToast
   time: 5
+  group: Breakfast
   reagents:
     Milk: 5
     Egg: 12
   name: garlic bread slice recipe
   result: FoodBreadGarlicSlice
   time: 5
+  group: Breads
   solids:
     FoodBreadPlainSlice: 1
     FoodGarlic: 1
   name: jelly toast recipe
   result: FoodBreadJellySlice
   time: 5
+  group: Breads
   solids:
     FoodBreadPlainSlice: 1
     FoodJellyAmanita: 1 #replace with jelly
   name: moldy bread slice recipe
   result: FoodBreadMoldySlice
   time: 5
+  group: Breads
   solids:
     FoodBreadPlainSlice: 1
     FoodFlyAmanita: 1
   name: two slice recipe
   result: FoodBreadTwoSlice
   time: 5
+  group: Breads
   reagents:
     Wine: 5
   solids:
   name: onion rings recipe
   result: FoodOnionRings
   time: 15
+  group: Savory
   solids:
     FoodOnionSlice: 1
 
   name: margherita pizza recipe
   result: FoodPizzaMargherita
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodCheeseSlice: 1
   name: mushroom pizza recipe
   result: FoodPizzaMushroom
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodMushroom: 5
   name: meat pizza recipe
   result: FoodPizzaMeat
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodMeat: 3
   name: vegetable pizza recipe
   result: FoodPizzaVegetable
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodEggplant: 1
   name: Hawaiian pizza recipe
   result: FoodPizzaPineapple
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodMeatChickenCutlet: 3
   name: dank pizza recipe
   result: FoodPizzaDank
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     LeavesCannabis: 2
   name: donk-pocket pizza recipe
   result: FoodPizzaDonkpocket
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodDonkpocketWarm: 3
   name: spicy rock pizza recipe
   result: FoodPizzaUranium
   time: 30
+  group: Pizza
   solids:
     FoodDoughFlat: 1
     FoodChiliPepper: 2
   name: cotton pizza recipe
   result: FoodPizzaCotton
   time: 30
+  group: Moth
   solids:
     FoodDoughCottonFlat: 1
     CottonBol: 4
   name: boiled spaghetti recipe
   result: FoodNoodlesBoiled
   time: 15
+  group: Pasta
   reagents:
     Flour: 15
     Egg: 6
   name: pasta tomato recipe
   result: FoodNoodles
   time: 10
+  group: Pasta
   solids:
     FoodNoodlesBoiled: 1
     FoodTomato: 2
   name: spaghetti & meatballs recipe
   result: FoodNoodlesMeatball
   time: 10
+  group: Pasta
   solids:
     FoodNoodlesBoiled: 1
     FoodMeatMeatball: 2
   name: butter noodles recipe
   result: FoodNoodlesButter
   time: 10
+  group: Pasta
   solids:
     FoodNoodlesBoiled: 1
     FoodButter: 1
   name: chow mein recipe
   result: FoodNoodlesChowmein
   time: 10
+  group: Pasta
   reagents:
     Egg: 6
   solids:
   name: oatmeal recipe
   result: FoodOatmeal
   time: 15
+  group: Savory
   reagents:
     Oats: 15
     Water: 10
   name: boiled rice recipe
   result: FoodRiceBoiled
   time: 15
+  group: Savory
   reagents:
     Rice: 15
     Water: 10
   name: rice pudding recipe
   result: FoodRicePudding
   time: 15
+  group: Dessert
   reagents:
     Rice: 15
     Milk: 10
   name: rice and pork recipe
   result: FoodRicePork
   time: 15
+  group: Savory
   solids:
     FoodRiceBoiled: 1
     FoodMeatCutlet: 3
   name: black-eyed gumbo recipe
   result: FoodRiceGumbo
   time: 15
+  group: Savory
   solids:
     FoodRiceBoiled: 1
     FoodMeatCutlet: 3
   name: egg-fried rice recipe
   result: FoodRiceEgg
   time: 15
+  group: Savory
   reagents:
     Egg: 6
   solids:
   name: copypasta recipe
   result: FoodNoodlesCopy
   time: 10
+  group: Pasta
   solids:
     FoodNoodles: 2
 
   name: bisque recipe
   result: FoodSoupBisque
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: meatball soup recipe
   result: FoodSoupMeatball
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: nettle soup recipe
   result: FoodSoupNettle
   time: 10
+  group: Soup
   reagents:
     Water: 10
     Egg: 6
   name: eyeball soup recipe
   result: FoodSoupEyeball
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: amanita jelly recipe
   result: FoodJellyAmanita
   time: 10
+  group: Savory
   reagents:
     Water: 5
     Vodka: 5
   name: onion soup recipe
   result: FoodSoupOnion
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: mushroom soup recipe
   result: FoodSoupMushroom
   time: 10
+  group: Soup
   reagents:
     Water: 5
     Milk: 5
   name: stew recipe
   result: FoodSoupStew
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: tomato soup recipe
   result: FoodSoupTomato
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: tomato blood soup recipe
   result: FoodSoupTomatoBlood
   time: 10
+  group: Soup
   reagents:
     Blood: 10
   solids:
   name: wing fang chu recipe
   result: FoodSoupWingFangChu
   time: 10
+  group: Soup
   reagents:
     Soysauce: 5
   solids:
   name: wing fang chu recipe
   result: FoodSoupWingFangChu
   time: 10
+  group: Soup
   reagents:
     Soysauce: 5
   solids:
   name: vegetable soup recipe
   result: FoodSoupVegetable
   time: 10
+  group: Soup
   reagents:
     Water: 5
   solids:
   name: clown tears soup recipe
   result: FoodSoupClown
   time: 10
+  group: Soup
   reagents:
     Water: 10
   solids:
   name: monkeys delight recipe
   result: FoodSoupMonkey
   time: 10
+  group: Soup
   reagents:
     Flour: 5
     TableSalt: 1
   name: bungo soup recipe
   result: FoodSoupBungo
   time: 10
+  group: Soup
   reagents:
     Water: 5
   solids:
   name: boiled snail recipe
   result: FoodMeatSnailCooked
   time: 5
+  group: Savory
   reagents:
     Water: 10
   solids:
   name: escargot recipe
   result: FoodSoupEscargot
   time: 10
+  group: Soup
   reagents:
     Water: 5
   solids:
   name: amanita pie recipe
   result: FoodPieAmanita
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodFlyAmanita: 1
   name: apple pie recipe
   result: FoodPieApple
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodApple: 3
   name: baklava recipe
   result: FoodPieBaklava
   time: 15
+  group: BarsAndCookies
   solids:
     FoodDoughPie: 1
     FoodSnackPistachios: 1 #i'd rather use a botany crop but we don't have nuts yet
   name: banana cream pie recipe
   result: FoodPieBananaCream
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodBanana: 3
   name: berry clafoutis recipe
   result: FoodPieClafoutis
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodBerries: 3
   name: cherry pie recipe
   result: FoodPieCherry
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodCherry: 5
   name: frosty pie recipe
   result: FoodPieFrosty
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodChillyPepper: 3
   name: meat pie recipe
   result: FoodPieMeat
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodMeat: 3
   name: pumpkin pie recipe
   result: FoodPiePumpkin
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodPumpkin: 1
   name: xeno pie recipe
   result: FoodPieXeno
   time: 15
+  group: Pie
   solids:
     FoodDoughPie: 1
     FoodMeatXeno: 3
   name: chocolate lava tart recipe
   result: FoodTartCoco
   time: 15
+  group: Pie
   reagents:
     Sugar: 5
     Milk: 5
   name: golden apple streusel tart recipe
   result: FoodTartGapple
   time: 15
+  group: Pie
   reagents:
     Gold: 10
     Sugar: 5
   name: grape tart recipe
   result: FoodTartGrape
   time: 15
+  group: Pie
   reagents:
     Sugar: 5
     Milk: 5
   name: mime tart recipe
   result: FoodTartMime
   time: 15
+  group: Pie
   reagents:
     Sugar: 5
     Milk: 5
   name: Cuban carp recipe
   result: FoodMealCubancarp
   time: 15
+  group: Savory
   solids:
     FoodDough: 1
     FoodCheeseSlice: 2
   name: sashimi recipe
   result: FoodMealSashimi
   time: 15
+  group: Savory
   reagents:
     TableSalt: 1
   solids:
   name: salty sweet misocola soup recipe
   result: DisgustingSweptSoup
   time: 15
+  group: Savory
   reagents:
     Cola: 5
   solids:
   name: loaded baked potato recipe
   result: FoodMealPotatoLoaded
   time: 15
+  group: Savory
   solids:
     FoodPotato: 1
     FoodCheeseSlice: 1
   name: space fries recipe
   result: FoodMealFries
   time: 15
+  group: Savory
   reagents:
     TableSalt: 5
   solids:
   name: cheesy fries recipe
   result: FoodMealFriesCheesy
   time: 15
+  group: Savory
   reagents:
     TableSalt: 5
   solids:
   name: carrot fries recipe
   result: FoodMealFriesCarrot
   time: 15
+  group: Savory
   reagents:
     TableSalt: 5
   solids:
   name: nachos recipe
   result: FoodMealNachos
   time: 10
+  group: Savory
   reagents:
     TableSalt: 1
   solids:
   name: cheesy nachos recipe
   result: FoodMealNachosCheesy
   time: 10
+  group: Savory
   reagents:
     TableSalt: 1
   solids:
   name: cuban nachos recipe
   result: FoodMealNachosCuban
   time: 10
+  group: Savory
   reagents:
     Ketchup: 5
   solids:
   name: popcorn recipe
   result: FoodSnackPopcorn
   time: 20
+  group: Savory
   solids:
     FoodCorn: 1
 
   name: pancake recipe
   result: FoodBakedPancake
   time: 5
+  group: Breakfast
   reagents:
     Flour: 5
     Milk: 5
   name: blueberry pancake recipe
   result: FoodBakedPancakeBb
   time: 5
+  group: Breakfast
   reagents:
     Flour: 5
     Milk: 5
   name: waffle recipe
   result: FoodBakedWaffle
   time: 10
+  group: Breakfast
   reagents:
     Flour: 5
     Milk: 5
   name: soy waffle recipe
   result: FoodBakedWaffleSoy
   time: 10
+  group: Breakfast
   reagents:
     Flour: 5
     MilkSoy: 5
   name: cookie recipe
   result: FoodBakedCookie
   time: 5
+  group: BarsAndCookies
   reagents:
     Flour: 5
     Sugar: 5
   name: sugar cookie recipe
   result: FoodBakedCookieSugar
   time: 5
+  group: BarsAndCookies
   reagents:
     Flour: 5
     Sugar: 10
   name: raisin cookie recipe
   result: FoodBakedCookieRaisin
   time: 5
+  group: BarsAndCookies
   reagents:
     Flour: 5
     Sugar: 5
   name: oatmeal cookie recipe
   result: FoodBakedCookieOatmeal
   time: 5
+  group: BarsAndCookies
   reagents:
     Oats: 5
     Sugar: 5
   name: chocolate chip pancake recipe
   result: FoodBakedPancakeCc
   time: 5
+  group: BarsAndCookies
   reagents:
     Flour: 5
     Milk: 5
   name: apple cake recipe
   result: FoodCakeApple
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodApple: 3
   name: carrot cake recipe
   result: FoodCakeCarrot
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodCarrot: 3
   name: lemon cake recipe
   result: FoodCakeLemon
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodLemon: 3
   name: lemoon cake recipe
   result: FoodCakeLemoon
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodLemoon: 2
   name: orange cake recipe
   result: FoodCakeOrange
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodOrange: 3
   name: blueberry cake recipe
   result: FoodCakeBlueberry
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodBerries: 3
   name: lime cake recipe
   result: FoodCakeLime
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodLime: 3
   name: cheese cake recipe
   result: FoodCakeCheese
   time: 5
+  group: Cake
   reagents:
     Cream: 10
   solids:
   name: pumpkin cake recipe
   result: FoodCakePumpkin
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodPumpkin: 1
   name: clown cake recipe
   result: FoodCakeClown
   time: 5
+  group: Cake
   solids:
     ClothingMaskClown: 1
     FoodCakePlain: 1
   name: cake recipe
   result: FoodCakePlain
   time: 15
+  group: Cake
   solids:
     FoodCakeBatter: 1
 
   name: birthday cake recipe
   result: FoodCakeBirthday
   time: 5
+  group: Cake
   reagents:
     Cream: 5
   solids:
   name: chocolate cake recipe
   result: FoodCakeChocolate
   time: 5
+  group: Cake
   solids:
     FoodCakePlain: 1
     FoodSnackChocolateBar: 2
   name: brain cake recipe
   result: FoodCakeBrain
   time: 15
+  group: Cake
   solids:
     FoodCakePlain: 1
     OrganHumanBrain: 1
   name: slime cake recipe
   result: FoodCakeSlime
   time: 5
+  group: Cake
   reagents:
     Slime: 15
   solids:
   name: cat cake recipe
   result: MobCatCake
   time: 15
+  group: Cake
   reagents:
     Milk: 15
     Cognizine: 5
   name: bread dog recipe
   result: MobBreadDog
   time: 15
+  group: Breads
   reagents:
     Cognizine: 5
   solids:
   name: dumplings recipe
   result: FoodBakedDumplings
   time: 15
+  group: Savory
   reagents:
     Water: 10
     UncookedAnimalProteins: 6
   name: brownie recipe
   result: FoodBakedBrownieBatch
   time: 25
+  group: BarsAndCookies
   reagents:
     Flour: 15
     Sugar: 30
   name: warm donk pocket recipe
   result: FoodDonkpocketWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocket: 1
 
   name: warm dank pocket recipe
   result: FoodDonkpocketDankWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketDank: 1
 
   name: warm spicy donk-pocket recipe
   result: FoodDonkpocketSpicyWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketSpicy: 1
 
   name: warm teriyaki-pocket recipe
   result: FoodDonkpocketTeriyakiWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketTeriyaki: 1
 
   name: warm pizza-pocket recipe
   result: FoodDonkpocketPizzaWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketPizza: 1
 
   name: warm honk-pocket recipe
   result: FoodDonkpocketHonkWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketHonk: 1
 
   name: warm berry-pocket recipe
   result: FoodDonkpocketBerryWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketBerry: 1
 
   name: warm stonk-pocket recipe
   result: FoodDonkpocketStonkWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketStonk: 1
 
   name: warm carp-pocket recipe
   result: FoodDonkpocketCarpWarm
   time: 5
+  group: Savory
   solids:
     FoodDonkpocketCarp: 1
 
   name: hot chili recipe
   result: FoodSoupChiliHot
   time: 20
+  group: Soup
   solids:
     FoodBowlBig: 1
     FoodChiliPepper: 1
   name: cold chili recipe
   result: FoodSoupChiliCold
   time: 5
+  group: Soup
   reagents:
     Nitrogen: 5
   solids:
   name: clown's tears recipe
   result: FoodSoupClown
   time: 15
+  group: Soup
   solids:
     FoodBowlBig: 1
     FoodOnionSlice: 1
   name: chili con carnival recipe
   result: FoodSoupChiliClown
   time: 30
+  group: Soup
   solids:
     FoodBowlBig: 1
     FoodChiliPepper: 1
   name: queso recipe
   result: FoodMealQueso
   time: 15
+  group: Soup
   #todo Add blackpepper
   #reagents:
     #blackpepper: 5
   name: BBQ ribs recipe
   result: FoodMealRibs
   time: 15
+  group: Savory
   reagents:
     BbqSauce: 5
   solids:
   name: enchiladas recipe
   result: FoodMealEnchiladas
   time: 20
+  group: Savory
   solids:
     FoodChiliPepper: 2
     FoodMeatCutlet: 1
   name: herb salad recipe
   result: FoodSaladHerb
   time: 5
+  group: Salad
   solids:
     FoodBowlBig: 1
     FoodAmbrosiaVulgaris: 3
   name: valid salad recipe
   result: FoodSaladValid
   time: 5
+  group: Salad
   solids:
     FoodBowlBig: 1
     FoodAmbrosiaVulgaris: 3
   name: coleslaw recipe
   result: FoodSaladColeslaw
   time: 5
+  group: Salad
   reagents:
     Vinaigrette: 5
   solids:
   name: caesar salad recipe
   result: FoodSaladCaesar
   time: 5
+  group: Salad
   reagents:
     OilOlive: 5
   solids:
   name: citrus salad recipe
   result: FoodSaladCitrus
   time: 5
+  group: Salad
   solids:
     FoodBowlBig: 1
     FoodOrange: 1
   name: kimchi salad recipe
   result: FoodSaladKimchi
   time: 5
+  group: Salad
   reagents:
     Vinegar: 5
   solids:
   name: fruit salad recipe
   result: FoodSaladFruit
   time: 5
+  group: Salad
   solids:
     FoodBowlBig: 1
     FoodOrange: 1
   name: jungle salad recipe
   result: FoodSaladJungle
   time: 5
+  group: Salad
   solids:
     FoodBowlBig: 1
     FoodBanana: 1
   name: watermelon fruit bowl recipe
   result: FoodSaladWatermelonFruitBowl
   time: 5
+  group: Salad
   solids:
     FoodWatermelon: 1
     FoodApple: 1
   name: muffin recipe
   result: FoodBakedMuffin
   time: 15
+  group: Dessert
   solids:
     FoodPlateMuffinTin: 1
     FoodDoughSlice: 1
   name: chocolate muffin recipe
   result: FoodBakedMuffinChocolate
   time: 15
+  group: Dessert
   solids:
     FoodPlateMuffinTin: 1
     FoodDoughSlice: 1
   name: berry muffin recipe
   result: FoodBakedMuffinBerry
   time: 15
+  group: Dessert
   solids:
     FoodPlateMuffinTin: 1
     FoodDoughSlice: 1
   name: banana muffin recipe
   result: FoodBakedMuffinBanana
   time: 15
+  group: Dessert
   solids:
     FoodPlateMuffinTin: 1
     FoodDoughSlice: 1
   name: cherry muffin recipe
   result: FoodBakedMuffinCherry
   time: 15
+  group: Dessert
   solids:
     FoodPlateMuffinTin: 1
     FoodDoughSlice: 1
   name: dried tobacco leaves recipe
   result: LeavesTobaccoDried
   time: 10
+  group: Medicinal
   solids:
     LeavesTobacco: 1
 
   name: dried cannabis leaves recipe
   result: LeavesCannabisDried
   time: 10
+  group: Medicinal
   solids:
     LeavesCannabis: 1
 
   name: dried rainbow cannabis leaves recipe
   result: LeavesCannabisRainbowDried
   time: 10
+  group: Medicinal
   solids:
     LeavesCannabisRainbow: 1
 
   name: chevre chaud recipe
   result: FoodBakedChevreChaud
   time: 5
+  group: Savory
   solids:
     FoodChevreSlice: 1
     FoodBreadBaguetteSlice: 1
   name: cotton chevre chaud recipe
   result: FoodBakedChevreChaudCotton
   time: 5
+  group: Moth
   solids:
     FoodChevreSlice: 1
     FoodBreadBaguetteCottonSlice: 1
   name: cannabis brownie recipe
   result: FoodBakedCannabisBrownieBatch
   time: 25
+  group: BarsAndCookies
   reagents:
     Flour: 15
     Sugar: 30
   name: corn in butter recipe
   result: FoodMealCornInButter
   time: 10
+  group: Savory
   solids:
     FoodCorn: 1
     FoodPlate: 1
   name: pea soup recipe
   result: FoodSoupPea
   time: 10
+  group: Soup
   solids:
     FoodPeaPod: 2
     FoodBowlBig: 1
   name: taco shell recipe
   result: FoodTacoShell
   time: 5
+  group: Breads
   solids:
     FoodDoughTortillaFlat: 1 # one third of a standard bread dough recipe
 
   name: beef taco recipe
   result: FoodTacoBeef
   time: 10
+  group: Savory
   solids:
     FoodTacoShell: 1
     FoodMeatCutlet: 1
   name: chicken taco recipe
   result: FoodTacoChicken
   time: 10
+  group: Savory
   solids:
     FoodTacoShell: 1
     FoodMeatChickenCutlet: 1
   name: fish taco recipe
   result: FoodTacoFish
   time: 10
+  group: Savory
   solids:
     FoodTacoShell: 1
     FoodMeatFish: 1
   name: rat taco recipe
   result: FoodTacoRat
   time: 10
+  group: Savory
   solids:
     FoodTacoShell: 1
     FoodCheeseSlice: 1
   name: beef taco supreme recipe
   result: FoodTacoBeefSupreme
   time: 10
+  group: Savory
   solids:
     FoodTacoShell: 1
     FoodCheeseSlice: 1
   name: beef taco supreme recipe
   result: FoodTacoChickenSupreme
   time: 10
+  group: Savory
   solids:
     FoodTacoShell: 1
     FoodCheeseSlice: 1
   name: croissant recipe
   result: FoodBakedCroissant
   time: 5
+  group: Dessert
   solids:
     FoodCroissantRaw: 1
     FoodButterSlice: 1
   name: cotton croissant recipe
   result: FoodBakedCroissantCotton
   time: 5
+  group: Moth
   solids:
     FoodCroissantRawCotton: 1
     FoodButterSlice: 1
   result: WeaponCroissant
   secretRecipe: true
   time: 5
+  group: Secret
   solids:
     FoodCroissantRaw: 1
     FoodButterSlice: 1
   name: inert meat anomaly recipe
   result: FoodMeatAnomaly
   time: 5
+  group: Savory
   solids:
     AnomalyCoreFleshInert: 1
 
   name: meat anomaly recipe
   result: FoodMeatAnomaly
   time: 5
+  group: Savory
   solids:
     AnomalyCoreFlesh: 1
 
   name: cooked meat anomaly recipe
   result: FoodMeatAnomalyCooked
   time: 5
+  group: Savory
   solids:
     FoodMeatAnomaly: 1
 
index 9d1947f03ebc1ce6d87e647259b16fd9f6b68f46..206ab848f6de21533abe643884c794722bd363a6 100644 (file)
@@ -3,6 +3,7 @@
   name: aloe cream recipe
   result: AloeCream
   time: 10
+  group: Medicinal
   solids:
     FoodAloe: 1
 
@@ -11,6 +12,7 @@
   name: medicated suture recipe
   result: MedicatedSuture
   time: 10
+  group: Medicinal
   solids:
     FoodPoppy: 1
     Brutepack: 1
@@ -24,6 +26,7 @@
   name: regenerative mesh recipe
   result: RegenerativeMesh
   time: 10
+  group: Medicinal
   solids:
     FoodAloe: 1
     Ointment: 1
diff --git a/Resources/ServerInfo/Guidebook/Service/BarsAndCookiesRecipes.xml b/Resources/ServerInfo/Guidebook/Service/BarsAndCookiesRecipes.xml
new file mode 100644 (file)
index 0000000..24284c6
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Bars & Cookies
+
+A crowd-pleaser, many of these can be made from pantry ingredients to serve to many crewmates.
+
+<GuideMicrowaveGroupEmbed Group="BarsAndCookies"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/BreadRecipes.xml b/Resources/ServerInfo/Guidebook/Service/BreadRecipes.xml
new file mode 100644 (file)
index 0000000..4dd0815
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Breads
+
+A fresh loaf of bread is without equal, and breads are often incorporated into other recipes.
+
+<GuideMicrowaveGroupEmbed Group="Breads"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/BreakfastRecipes.xml b/Resources/ServerInfo/Guidebook/Service/BreakfastRecipes.xml
new file mode 100644 (file)
index 0000000..6f7e2f4
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Breakfast Recipes
+
+A wonderful way to start a shift! Or perhaps, to treat the crew to brunch midway through.
+
+<GuideMicrowaveGroupEmbed Group="Breakfast"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/CakeRecipes.xml b/Resources/ServerInfo/Guidebook/Service/CakeRecipes.xml
new file mode 100644 (file)
index 0000000..9c37cd0
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Cakes
+
+Cakes are a timeless classic, combining fresh ingredients and a delicious tender base to make something that can serve a lot of crewmates.
+
+<GuideMicrowaveGroupEmbed Group="Cake"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/DessertRecipes.xml b/Resources/ServerInfo/Guidebook/Service/DessertRecipes.xml
new file mode 100644 (file)
index 0000000..359ffbb
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Pastries & Desserts
+
+A special sweet treat can go a long way to boosting the crew's morale.
+
+<GuideMicrowaveGroupEmbed Group="Dessert"/>
+
+</Document>
index 98d892db82dfec8361823fe6170e58f22ec0ed80..5da4d1c94a607735932a816f1fa5e1042a5297d9 100644 (file)
@@ -1,94 +1,52 @@
 <Document>
-## Starting Out
-This is not an extensive list of recipes, these listings are to showcase the basics.
-
-Mixes are done in a Beaker, foods are cooked in a Microwave. Cook times will be listed.
-
-WARNING: This is not an automatically generated list, things here may become outdated. The wiki has much more than is listed here.
-
-## The Basics: Mixing
-
-- Dough = 15 Flour, 10 Water
-- Cornmeal Dough = 1 Egg (6u), 10 Milk, 15 Cornmeal
-- Tortila Dough = 15 Cornmeal, 10 Water
-- Tofu = 5 Enzyme (Catalyst), 30 Soy Milk
-- Pie Dough = 2 Eggs (12u), 15 Flour, 5 Table Salt
-- Cake Batter = 2 Eggs(12u), 15 flour, 5 Sugar, 5 Milk
-- Vegan Cake Batter = 15 Soy Milk, 15 Flour, 5 Sugar
-- Butter = 30 Milk, 5 Table Salt (Catalyst)
-- Cheese Wheel = 5 Enzyme (Catalyst), 40 Milk
-- Chèvre Log = 5 Enzyme (Catalyst), 10 Goat Milk
-- Meatball = 1 Egg (6u), 5 Flour, 5 Uncooked Animal Proteins
-- Chocolate = 6 Cocoa Powder, 2 Milk, 2 Sugar
-- Uncooked Animal Protein: Grind Raw Meat
-
-Buzz! Don't forget about Moth diet!
-- Fiber: Juice Fabric in a Reagent Grinder, 3 Fiber per Fabric
-- Cotton Dough = 5 Flour, 10 Fiber, 10 Water
-- Cotton bread baked the same as default but with cotton dough instead
-- Cotton Pizza: Microwave 1 Flat Cotton Dough and 4 Cotton Bolls for 30 Seconds
-
-<Box>
-<GuideEntityEmbed Entity="FoodDough"/>
-<GuideEntityEmbed Entity="FoodDoughCornmeal"/>
-<GuideEntityEmbed Entity="FoodDoughCotton"/>
-<GuideEntityEmbed Entity="FoodTofu"/>
-<GuideEntityEmbed Entity="FoodDoughPie"/>
-<GuideEntityEmbed Entity="FoodCakeBatter"/>
-<GuideEntityEmbed Entity="FoodDoughFlat"/>
-<GuideEntityEmbed Entity="FoodDoughTortilla"/>
-</Box>
-
-<Box>
-<GuideEntityEmbed Entity="FoodButter"/>
-<GuideEntityEmbed Entity="FoodMeatMeatball"/>
-<GuideEntityEmbed Entity="FoodCheese"/>
-<GuideEntityEmbed Entity="FoodChevre"/>
-<GuideEntityEmbed Entity="FoodSnackChocolateBar"/>
-</Box>
-
-## Secondary Products
-
-- Dough Slice: Cut Dough
-- Bun: Microwave Dough Slice for 5 Seconds
-- Cutlet: Slice Raw Meat
-- Cheese Wedge: Slice Cheese Wheel
-- Flat Dough: Use a rolling pin or a round object (fire extinguisher, soda can, bottle) on Dough.
-- Tortilla Dough Slice: cut Tortilla Dough
-- Flat Tortilla Dough: Use a rolling pin or a round object (fire extinguisher, soda can, bottle) on Tortilla Dough Slice
-- Taco Shell: Microwave Flat Tortilla Dough for 5 Seconds
-
-## Food Examples
-
-- Bread: Microwave Dough for 10 Seconds
-- Plain Burger: Microwave 1 Bun and 1 Raw Meat for 10 Seconds
-- Tomato Soup: 10u Water, 1 Bowl, and 2 Tomatoes for 10 Seconds
-- Citrus Salad: 1 Bowl, 1 Lemon, 1 Lime, 1 Orange for 5 Seconds
-- Margherita Pizza: Microwave 1 Flat Dough, 1 Cheese Wedge, and 4 Tomatoes for 30 Seconds
-- Cake: 1 Cake Batter for 15 Seconds
-- Apple Pie: 1 Pie Dough, 3 Apples, and 1 Pie Tin for 15 Seconds
-- Beef Taco: Microwave 1 Taco Shell, 1 Raw Meat Cutlet, 1 Cheese Wedge for 10 Seconds
-- Cuban Carp : Microwave 1 Dough, 1 Cheese Wedge, 1 Chili, 1 Carp Meat for 15 Seconds
-- Banana Cream Pie : Microwave 1 Pie Dough, 3 Bananas, and 1 Pie Tin for 15 Seconds
-- Carrot Fries : Microwave 1 Carrot, 15u Salt for 15 Seconds
-- Pancake : Microwave 5u Flour, 5u Milk, 1 Egg (6u) for 5 Seconds
-
-<Box>
-<GuideEntityEmbed Entity="FoodBreadPlain"/>
-<GuideEntityEmbed Entity="FoodBurgerPlain"/>
-<GuideEntityEmbed Entity="FoodSoupTomato"/>
-<GuideEntityEmbed Entity="FoodSaladCitrus"/>
-</Box>
-<Box>
-<GuideEntityEmbed Entity="FoodPizzaMargherita"/>
-<GuideEntityEmbed Entity="FoodCakePlain"/>
-<GuideEntityEmbed Entity="FoodPieApple"/>
-</Box>
-<Box>
-<GuideEntityEmbed Entity="FoodMealCubancarp"/>
-<GuideEntityEmbed Entity="FoodPieBananaCream"/>
-<GuideEntityEmbed Entity="FoodMealFriesCarrot"/>
-<GuideEntityEmbed Entity="FoodBakedPancake"/>
-</Box>
+
+# Microwave Recipes
+
+This is the latest published version of NanoTrasen Central Command Kitchen de Cuisine's recipe collection for chefs upon NanoTrasen vessels to prepare.
+
+## Pizza Pies
+<GuideMicrowaveGroupEmbed Group="Pizza"/>
+
+## Savory Cooking
+<GuideMicrowaveGroupEmbed Group="Savory"/>
+
+## Breads
+<GuideMicrowaveGroupEmbed Group="Breads"/>
+
+## Breakfast Foods
+<GuideMicrowaveGroupEmbed Group="Breakfast"/>
+
+## Moth Foods
+<GuideMicrowaveGroupEmbed Group="Moth"/>
+
+## Pastas & Noodles
+<GuideMicrowaveGroupEmbed Group="Pasta"/>
+
+## Pastries & Desserts
+<GuideMicrowaveGroupEmbed Group="Dessert"/>
+
+## Soups & Stews
+<GuideMicrowaveGroupEmbed Group="Soup"/>
+
+## Pies & Tarts
+<GuideMicrowaveGroupEmbed Group="Pie"/>
+
+## Bars & Cookies
+<GuideMicrowaveGroupEmbed Group="BarsAndCookies"/>
+
+## Cakes
+<GuideMicrowaveGroupEmbed Group="Cake"/>
+
+## Salads
+<GuideMicrowaveGroupEmbed Group="Salad"/>
+
+## Medicinal
+<GuideMicrowaveGroupEmbed Group="Medicinal"/>
+
+## Other
+<GuideMicrowaveGroupEmbed Group="Other"/>
+
+## Secret
+<GuideMicrowaveGroupEmbed Group="Secret"/>
 
 </Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/MedicinalRecipes.xml b/Resources/ServerInfo/Guidebook/Service/MedicinalRecipes.xml
new file mode 100644 (file)
index 0000000..b6bcf43
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Medicinal Recipes
+
+These preparations have interesting medical effects, or are just straight-up medicines.
+
+<GuideMicrowaveGroupEmbed Group="Medicinal"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/MothRecipes.xml b/Resources/ServerInfo/Guidebook/Service/MothRecipes.xml
new file mode 100644 (file)
index 0000000..6cdfb3a
--- /dev/null
@@ -0,0 +1,10 @@
+<Document>
+
+# Moth Foods
+
+Moths are sophonts too, and don't appreciate eating random garbage they found any more than other species do just because they eat fabrics.
+Fixing them these wonderful meals is a great way to not embarass their dignity.
+
+<GuideMicrowaveGroupEmbed Group="Moth"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/OtherRecipes.xml b/Resources/ServerInfo/Guidebook/Service/OtherRecipes.xml
new file mode 100644 (file)
index 0000000..85ae524
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Other Recipes
+
+The NanoTrasen Central Command Kitchen de Cuisine is still deliberating on the categorization of these recipes.
+
+<GuideMicrowaveGroupEmbed Group="Other"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/PastaRecipes.xml b/Resources/ServerInfo/Guidebook/Service/PastaRecipes.xml
new file mode 100644 (file)
index 0000000..3333cb9
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Pastas & Noodles
+
+There's nothing like a big bowl of noodles.
+
+<GuideMicrowaveGroupEmbed Group="Pasta"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/PieRecipes.xml b/Resources/ServerInfo/Guidebook/Service/PieRecipes.xml
new file mode 100644 (file)
index 0000000..a4c9d94
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Pies & Bars
+
+Pies and bars are a great way to fix desserts for a group of people, and to make use of fresh ingredients you have.
+
+<GuideMicrowaveGroupEmbed Group="Pie"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/PizzaRecipes.xml b/Resources/ServerInfo/Guidebook/Service/PizzaRecipes.xml
new file mode 100644 (file)
index 0000000..3695b1d
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Pizza Pies
+
+Pizzas are a great way to prepare food for a large crew, as each pizza is 8 servings.
+
+<GuideMicrowaveGroupEmbed Group="Pizza"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/SaladRecipes.xml b/Resources/ServerInfo/Guidebook/Service/SaladRecipes.xml
new file mode 100644 (file)
index 0000000..0fe8755
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Salads
+
+Show off the freshness of your ingredients by serving them with just the right dressings and seasonings to bring out their best.
+
+<GuideMicrowaveGroupEmbed Group="Salad"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/SavoryRecipes.xml b/Resources/ServerInfo/Guidebook/Service/SavoryRecipes.xml
new file mode 100644 (file)
index 0000000..c09ef31
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Savory Recipes
+
+Savory meals are a favourite of meat-eating species such as reptilians and felinids, and are also usually quite nutritious.
+
+<GuideMicrowaveGroupEmbed Group="Savory"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/SecretRecipes.xml b/Resources/ServerInfo/Guidebook/Service/SecretRecipes.xml
new file mode 100644 (file)
index 0000000..73978f7
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Secret Recipes
+
+Normal Nanotrasen-approved microwaves can't cook these recipes.
+
+<GuideMicrowaveGroupEmbed Group="Secret"/>
+
+</Document>
diff --git a/Resources/ServerInfo/Guidebook/Service/SoupRecipes.xml b/Resources/ServerInfo/Guidebook/Service/SoupRecipes.xml
new file mode 100644 (file)
index 0000000..842caea
--- /dev/null
@@ -0,0 +1,9 @@
+<Document>
+
+# Soups & Stews
+
+A nice hearty bowl of soup is a great way to serve tough meats, or to preserve a delicate flavour.
+
+<GuideMicrowaveGroupEmbed Group="Soup"/>
+
+</Document>