Save seed data in components and remove the seed-database (#7499)
This commit is contained in:
@@ -87,7 +87,7 @@ namespace Content.Server.Botany.Components
|
|||||||
public float WeedCoefficient { get; set; } = 1f;
|
public float WeedCoefficient { get; set; } = 1f;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
public SeedPrototype? Seed { get; set; }
|
public SeedData? Seed { get; set; }
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
public bool ImproperHeat { get; set; }
|
public bool ImproperHeat { get; set; }
|
||||||
@@ -613,15 +613,14 @@ namespace Content.Server.Botany.Components
|
|||||||
appearanceComponent.SetData(PlantHolderVisuals.HarvestLight, Harvest);
|
appearanceComponent.SetData(PlantHolderVisuals.HarvestLight, Harvest);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckForDivergence(bool modified)
|
/// <summary>
|
||||||
|
/// Check if the currently contained seed is unique. If it is not, clone it so that we have a unique seed.
|
||||||
|
/// Necessary to avoid modifying global seeds.
|
||||||
|
/// </summary>
|
||||||
|
public void EnsureUniqueSeed()
|
||||||
{
|
{
|
||||||
// Make sure we're not modifying a "global" seed.
|
if (Seed != null && !Seed.Unique)
|
||||||
// If this seed is not in the global seed list, then no products of this line have been harvested yet.
|
Seed = Seed.Clone();
|
||||||
// It is then safe to assume it's restricted to this tray.
|
|
||||||
if (Seed == null) return;
|
|
||||||
var plantSystem = EntitySystem.Get<BotanySystem>();
|
|
||||||
if (plantSystem.Seeds.ContainsKey(Seed.Uid))
|
|
||||||
Seed = Seed.Diverge(modified);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ForceUpdateByExternalCause()
|
public void ForceUpdateByExternalCause()
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
using Content.Server.Botany.Systems;
|
using Content.Server.Botany.Systems;
|
||||||
using Robust.Shared.Analyzers;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
|
|
||||||
namespace Content.Server.Botany.Components;
|
namespace Content.Server.Botany.Components;
|
||||||
|
|
||||||
@@ -11,5 +9,15 @@ public sealed class ProduceComponent : Component
|
|||||||
{
|
{
|
||||||
[DataField("targetSolution")] public string SolutionName { get; set; } = "food";
|
[DataField("targetSolution")] public string SolutionName { get; set; } = "food";
|
||||||
|
|
||||||
[DataField("seed", required: true)] public string SeedName = default!;
|
/// <summary>
|
||||||
|
/// Seed data used to create a <see cref="SeedComponent"/> when this produce has its seeds extracted.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("seed")]
|
||||||
|
public SeedData? Seed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Seed data used to create a <see cref="SeedComponent"/> when this produce has its seeds extracted.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("seedId", customTypeSerializer: typeof(PrototypeIdSerializer<SeedPrototype>))]
|
||||||
|
public readonly string? SeedId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
using Content.Server.Botany.Systems;
|
using Content.Server.Botany.Systems;
|
||||||
using Robust.Shared.Analyzers;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
|
|
||||||
namespace Content.Server.Botany.Components
|
namespace Content.Server.Botany.Components
|
||||||
@@ -9,7 +6,18 @@ namespace Content.Server.Botany.Components
|
|||||||
[RegisterComponent, Friend(typeof(BotanySystem))]
|
[RegisterComponent, Friend(typeof(BotanySystem))]
|
||||||
public sealed class SeedComponent : Component
|
public sealed class SeedComponent : Component
|
||||||
{
|
{
|
||||||
[DataField("seed", required: true, customTypeSerializer:typeof(PrototypeIdSerializer<SeedPrototype>))]
|
/// <summary>
|
||||||
public string SeedName = default!;
|
/// Seed data containing information about the plant type & properties that this seed can grow seed. If
|
||||||
|
/// null, will instead attempt to get data from a seed prototype, if one is defined. See <see
|
||||||
|
/// cref="SeedId"/>.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("seed")]
|
||||||
|
public SeedData? Seed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Name of a base seed prototype that is used if <see cref="Seed"/> is null.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("seedId", customTypeSerializer:typeof(PrototypeIdSerializer<SeedPrototype>))]
|
||||||
|
public readonly string? SeedId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,21 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Content.Server.Botany.Components;
|
using Content.Server.Botany.Components;
|
||||||
using Content.Server.Botany.Systems;
|
using Content.Server.Botany.Systems;
|
||||||
using Content.Shared.Atmos;
|
using Content.Shared.Atmos;
|
||||||
using Content.Shared.Popups;
|
|
||||||
using Content.Shared.Random.Helpers;
|
|
||||||
using Content.Shared.Tag;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Localization;
|
|
||||||
using Robust.Shared.Map;
|
|
||||||
using Robust.Shared.Maths;
|
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
namespace Content.Server.Botany;
|
namespace Content.Server.Botany;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Prototype("seed")]
|
||||||
|
public sealed class SeedPrototype : SeedData, IPrototype
|
||||||
|
{
|
||||||
|
[IdDataField] public string ID { get; private init; } = default!;
|
||||||
|
}
|
||||||
|
|
||||||
public enum HarvestType : byte
|
public enum HarvestType : byte
|
||||||
{
|
{
|
||||||
NoRepeat,
|
NoRepeat,
|
||||||
@@ -65,33 +61,53 @@ public struct SeedChemQuantity
|
|||||||
[DataField("PotencyDivisor")] public int PotencyDivisor;
|
[DataField("PotencyDivisor")] public int PotencyDivisor;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Prototype("seed")]
|
// TODO reduce the number of friends to a reasonable level. Requires ECS-ing things like plant holder component.
|
||||||
public sealed class SeedPrototype : IPrototype
|
[Virtual, DataDefinition]
|
||||||
|
[Friend(typeof(BotanySystem), typeof(PlantHolderSystem), typeof(SeedExtractorSystem), typeof(PlantHolderComponent))]
|
||||||
|
public class SeedData
|
||||||
{
|
{
|
||||||
public const string Prototype = "SeedBase";
|
#region Tracking
|
||||||
|
/// <summary>
|
||||||
[IdDataFieldAttribute] public string ID { get; private init; } = default!;
|
/// The name of this seed. Determines the name of seed packets.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("name")] public string Name = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unique identifier of this seed. Do NOT set this.
|
/// The noun for this type of seeds. E.g. for fungi this should probably be "spores" instead of "seeds". Also
|
||||||
|
/// used to determine the name of seed packets.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Uid { get; internal set; } = -1;
|
[DataField("noun")] public string Noun = "seeds";
|
||||||
|
|
||||||
#region Tracking
|
/// <summary>
|
||||||
|
/// Name displayed when examining the hydroponics tray. Describes the actual plant, not the seed itself.
|
||||||
[DataField("name")] public string Name = string.Empty;
|
/// </summary>
|
||||||
[DataField("seedName")] public string SeedName = string.Empty;
|
|
||||||
[DataField("seedNoun")] public string SeedNoun = "seeds";
|
|
||||||
[DataField("displayName")] public string DisplayName = string.Empty;
|
[DataField("displayName")] public string DisplayName = string.Empty;
|
||||||
|
|
||||||
[DataField("roundStart")] public bool RoundStart = true;
|
|
||||||
[DataField("mysterious")] public bool Mysterious;
|
[DataField("mysterious")] public bool Mysterious;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If true, the properties of this seed cannot be modified.
|
||||||
|
/// </summary>
|
||||||
[DataField("immutable")] public bool Immutable;
|
[DataField("immutable")] public bool Immutable;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If true, there is only a single reference to this seed and it's properties can be directly modified without
|
||||||
|
/// needing to clone the seed.
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables]
|
||||||
|
public bool Unique = false; // seed-prototypes or yaml-defined seeds for entity prototypes will not generally be unique.
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Output
|
#region Output
|
||||||
|
/// <summary>
|
||||||
|
/// The entity prototype that is spawned when this type of seed is extracted from produce using a seed extractor.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("packetPrototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||||
|
public string PacketPrototype = "SeedBase";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The entity prototype this seed spawns when it gets harvested.
|
||||||
|
/// </summary>
|
||||||
[DataField("productPrototypes", customTypeSerializer: typeof(PrototypeIdListSerializer<EntityPrototype>))]
|
[DataField("productPrototypes", customTypeSerializer: typeof(PrototypeIdListSerializer<EntityPrototype>))]
|
||||||
public List<string> ProductPrototypes = new();
|
public List<string> ProductPrototypes = new();
|
||||||
|
|
||||||
@@ -137,7 +153,13 @@ public sealed class SeedPrototype : IPrototype
|
|||||||
|
|
||||||
[DataField("potency")] public float Potency = 1f;
|
[DataField("potency")] public float Potency = 1f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If true, a sharp tool is required to harvest this plant.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("ligneous")] public bool Ligneous;
|
||||||
|
|
||||||
// No, I'm not removing these.
|
// No, I'm not removing these.
|
||||||
|
// if you re-add these, make sure that they get cloned.
|
||||||
//public PlantSpread Spread { get; set; }
|
//public PlantSpread Spread { get; set; }
|
||||||
//public PlantMutation Mutation { get; set; }
|
//public PlantMutation Mutation { get; set; }
|
||||||
//public float AlterTemperature { get; set; }
|
//public float AlterTemperature { get; set; }
|
||||||
@@ -146,8 +168,6 @@ public sealed class SeedPrototype : IPrototype
|
|||||||
//public bool Hematophage { get; set; }
|
//public bool Hematophage { get; set; }
|
||||||
//public bool Thorny { get; set; }
|
//public bool Thorny { get; set; }
|
||||||
//public bool Stinging { get; set; }
|
//public bool Stinging { get; set; }
|
||||||
|
|
||||||
[DataField("ligneous")] public bool Ligneous;
|
|
||||||
// public bool Teleporting { get; set; }
|
// public bool Teleporting { get; set; }
|
||||||
// public PlantJuicy Juicy { get; set; }
|
// public PlantJuicy Juicy { get; set; }
|
||||||
|
|
||||||
@@ -168,17 +188,18 @@ public sealed class SeedPrototype : IPrototype
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public SeedPrototype Clone()
|
public SeedData Clone()
|
||||||
{
|
{
|
||||||
var newSeed = new SeedPrototype
|
DebugTools.Assert(!Immutable, "There should be no need to clone an immutable seed.");
|
||||||
|
|
||||||
|
var newSeed = new SeedData
|
||||||
{
|
{
|
||||||
ID = ID,
|
|
||||||
Name = Name,
|
Name = Name,
|
||||||
SeedName = SeedName,
|
Noun = Noun,
|
||||||
SeedNoun = SeedNoun,
|
DisplayName = DisplayName,
|
||||||
RoundStart = RoundStart,
|
|
||||||
Mysterious = Mysterious,
|
Mysterious = Mysterious,
|
||||||
|
|
||||||
|
PacketPrototype = PacketPrototype,
|
||||||
ProductPrototypes = new List<string>(ProductPrototypes),
|
ProductPrototypes = new List<string>(ProductPrototypes),
|
||||||
Chemicals = new Dictionary<string, SeedChemQuantity>(Chemicals),
|
Chemicals = new Dictionary<string, SeedChemQuantity>(Chemicals),
|
||||||
ConsumeGasses = new Dictionary<Gas, float>(ConsumeGasses),
|
ConsumeGasses = new Dictionary<Gas, float>(ConsumeGasses),
|
||||||
@@ -209,14 +230,14 @@ public sealed class SeedPrototype : IPrototype
|
|||||||
PlantIconState = PlantIconState,
|
PlantIconState = PlantIconState,
|
||||||
Bioluminescent = Bioluminescent,
|
Bioluminescent = Bioluminescent,
|
||||||
BioluminescentColor = BioluminescentColor,
|
BioluminescentColor = BioluminescentColor,
|
||||||
SplatPrototype = SplatPrototype
|
SplatPrototype = SplatPrototype,
|
||||||
|
|
||||||
|
Ligneous = Ligneous,
|
||||||
|
|
||||||
|
// Newly cloned seed is unique. No need to unnecessarily clone if repeatedly modified.
|
||||||
|
Unique = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
return newSeed;
|
return newSeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SeedPrototype Diverge(bool modified)
|
|
||||||
{
|
|
||||||
return Clone();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using Content.Server.Botany.Components;
|
using Content.Server.Botany.Components;
|
||||||
using Content.Server.Chemistry.EntitySystems;
|
using Content.Server.Chemistry.EntitySystems;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Shared.GameTicking;
|
using Content.Shared.GameTicking;
|
||||||
using Content.Shared.Tag;
|
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
|
|
||||||
@@ -20,49 +16,13 @@ namespace Content.Server.Botany.Systems
|
|||||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||||
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
|
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
|
||||||
|
|
||||||
private int _nextUid = 0;
|
|
||||||
private float _timer = 0f;
|
private float _timer = 0f;
|
||||||
|
|
||||||
public readonly Dictionary<int, SeedPrototype> Seeds = new();
|
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
|
|
||||||
|
|
||||||
InitializeSeeds();
|
InitializeSeeds();
|
||||||
|
|
||||||
PopulateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PopulateDatabase()
|
|
||||||
{
|
|
||||||
_nextUid = 0;
|
|
||||||
|
|
||||||
Seeds.Clear();
|
|
||||||
|
|
||||||
foreach (var seed in _prototypeManager.EnumeratePrototypes<SeedPrototype>())
|
|
||||||
{
|
|
||||||
seed.Uid = GetNextSeedUid();
|
|
||||||
Seeds[seed.Uid] = seed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool AddSeedToDatabase(SeedPrototype seed)
|
|
||||||
{
|
|
||||||
// If it's not -1, it's already in the database. Probably.
|
|
||||||
if (seed.Uid != -1)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
seed.Uid = GetNextSeedUid();
|
|
||||||
Seeds[seed.Uid] = seed;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int GetNextSeedUid()
|
|
||||||
{
|
|
||||||
return _nextUid++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
@@ -80,10 +40,5 @@ namespace Content.Server.Botany.Systems
|
|||||||
plantHolder.Update();
|
plantHolder.Update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reset(RoundRestartCleanupEvent ev)
|
|
||||||
{
|
|
||||||
PopulateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
using Content.Server.Botany.Components;
|
using Content.Server.Botany.Components;
|
||||||
using Content.Shared.FixedPoint;
|
using Content.Shared.FixedPoint;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.Maths;
|
|
||||||
|
|
||||||
namespace Content.Server.Botany.Systems;
|
namespace Content.Server.Botany.Systems;
|
||||||
|
|
||||||
@@ -10,7 +8,7 @@ public sealed partial class BotanySystem
|
|||||||
{
|
{
|
||||||
public void ProduceGrown(EntityUid uid, ProduceComponent produce)
|
public void ProduceGrown(EntityUid uid, ProduceComponent produce)
|
||||||
{
|
{
|
||||||
if (!_prototypeManager.TryIndex<SeedPrototype>(produce.SeedName, out var seed))
|
if (!TryGetSeed(produce, out var seed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (TryComp(uid, out SpriteComponent? sprite))
|
if (TryComp(uid, out SpriteComponent? sprite))
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Server.Botany.Components;
|
using Content.Server.Botany.Components;
|
||||||
using Content.Server.Kitchen.Components;
|
using Content.Server.Kitchen.Components;
|
||||||
@@ -26,35 +27,64 @@ public sealed partial class BotanySystem
|
|||||||
SubscribeLocalEvent<SeedComponent, ExaminedEvent>(OnExamined);
|
SubscribeLocalEvent<SeedComponent, ExaminedEvent>(OnExamined);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryGetSeed(SeedComponent comp, [NotNullWhen(true)] out SeedData? seed)
|
||||||
|
{
|
||||||
|
if (comp.Seed != null)
|
||||||
|
{
|
||||||
|
seed = comp.Seed;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (comp.SeedId != null
|
||||||
|
&& _prototypeManager.TryIndex(comp.SeedId, out SeedPrototype? protoSeed))
|
||||||
|
{
|
||||||
|
seed = protoSeed;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
seed = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool TryGetSeed(ProduceComponent comp, [NotNullWhen(true)] out SeedData? seed)
|
||||||
|
{
|
||||||
|
if (comp.Seed != null)
|
||||||
|
{
|
||||||
|
seed = comp.Seed;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (comp.SeedId != null
|
||||||
|
&& _prototypeManager.TryIndex(comp.SeedId, out SeedPrototype? protoSeed))
|
||||||
|
{
|
||||||
|
seed = protoSeed;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
seed = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private void OnExamined(EntityUid uid, SeedComponent component, ExaminedEvent args)
|
private void OnExamined(EntityUid uid, SeedComponent component, ExaminedEvent args)
|
||||||
{
|
{
|
||||||
if (!args.IsInDetailsRange)
|
if (!args.IsInDetailsRange)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_prototypeManager.TryIndex<SeedPrototype>(component.SeedName, out var seed))
|
if (!TryGetSeed(component, out var seed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
args.PushMarkup(Loc.GetString($"seed-component-description", ("seedName", seed.DisplayName)));
|
args.PushMarkup(Loc.GetString($"seed-component-description", ("seedName", seed.DisplayName)));
|
||||||
|
|
||||||
if (!seed.RoundStart)
|
|
||||||
{
|
|
||||||
args.PushMarkup(Loc.GetString($"seed-component-has-variety-tag", ("seedUid", seed.Uid)));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.PushMarkup(Loc.GetString($"seed-component-plant-yield-text", ("seedYield", seed.Yield)));
|
args.PushMarkup(Loc.GetString($"seed-component-plant-yield-text", ("seedYield", seed.Yield)));
|
||||||
args.PushMarkup(Loc.GetString($"seed-component-plant-potency-text", ("seedPotency", seed.Potency)));
|
args.PushMarkup(Loc.GetString($"seed-component-plant-potency-text", ("seedPotency", seed.Potency)));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#region SeedPrototype prototype stuff
|
#region SeedPrototype prototype stuff
|
||||||
|
|
||||||
public EntityUid SpawnSeedPacket(SeedPrototype proto, EntityCoordinates transformCoordinates)
|
public EntityUid SpawnSeedPacket(SeedData proto, EntityCoordinates transformCoordinates)
|
||||||
{
|
{
|
||||||
var seed = Spawn(SeedPrototype.Prototype, transformCoordinates);
|
var seed = Spawn(proto.PacketPrototype, transformCoordinates);
|
||||||
|
|
||||||
var seedComp = EnsureComp<SeedComponent>(seed);
|
var seedComp = EnsureComp<SeedComponent>(seed);
|
||||||
seedComp.SeedName = proto.ID;
|
seedComp.Seed = proto;
|
||||||
|
|
||||||
if (TryComp(seed, out SpriteComponent? sprite))
|
if (TryComp(seed, out SpriteComponent? sprite))
|
||||||
{
|
{
|
||||||
@@ -63,13 +93,13 @@ public sealed partial class BotanySystem
|
|||||||
sprite.LayerSetSprite(0, new SpriteSpecifier.Rsi(proto.PlantRsi, "seed"));
|
sprite.LayerSetSprite(0, new SpriteSpecifier.Rsi(proto.PlantRsi, "seed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
string val = Loc.GetString("botany-seed-packet-name", ("seedName", proto.SeedName), ("seedNoun", proto.SeedNoun));
|
string val = Loc.GetString("botany-seed-packet-name", ("seedName", proto.Name), ("seedNoun", proto.Noun));
|
||||||
MetaData(seed).EntityName = val;
|
MetaData(seed).EntityName = val;
|
||||||
|
|
||||||
return seed;
|
return seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<EntityUid> AutoHarvest(SeedPrototype proto, EntityCoordinates position, int yieldMod = 1)
|
public IEnumerable<EntityUid> AutoHarvest(SeedData proto, EntityCoordinates position, int yieldMod = 1)
|
||||||
{
|
{
|
||||||
if (position.IsValid(EntityManager) &&
|
if (position.IsValid(EntityManager) &&
|
||||||
proto.ProductPrototypes.Count > 0)
|
proto.ProductPrototypes.Count > 0)
|
||||||
@@ -78,10 +108,8 @@ public sealed partial class BotanySystem
|
|||||||
return Enumerable.Empty<EntityUid>();
|
return Enumerable.Empty<EntityUid>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<EntityUid> Harvest(SeedPrototype proto, EntityUid user, int yieldMod = 1)
|
public IEnumerable<EntityUid> Harvest(SeedData proto, EntityUid user, int yieldMod = 1)
|
||||||
{
|
{
|
||||||
if (AddSeedToDatabase(proto)) proto.Name = proto.Uid.ToString();
|
|
||||||
|
|
||||||
if (proto.ProductPrototypes.Count == 0 || proto.Yield <= 0)
|
if (proto.ProductPrototypes.Count == 0 || proto.Yield <= 0)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("botany-harvest-fail-message"),
|
_popupSystem.PopupCursor(Loc.GetString("botany-harvest-fail-message"),
|
||||||
@@ -94,16 +122,13 @@ public sealed partial class BotanySystem
|
|||||||
return GenerateProduct(proto, Transform(user).Coordinates, yieldMod);
|
return GenerateProduct(proto, Transform(user).Coordinates, yieldMod);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<EntityUid> GenerateProduct(SeedPrototype proto, EntityCoordinates position, int yieldMod = 1)
|
public IEnumerable<EntityUid> GenerateProduct(SeedData proto, EntityCoordinates position, int yieldMod = 1)
|
||||||
{
|
{
|
||||||
var totalYield = 0;
|
var totalYield = 0;
|
||||||
if (proto.Yield > -1)
|
if (proto.Yield > -1)
|
||||||
{
|
{
|
||||||
if (yieldMod < 0)
|
if (yieldMod < 0)
|
||||||
{
|
|
||||||
yieldMod = 1;
|
|
||||||
totalYield = proto.Yield;
|
totalYield = proto.Yield;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
totalYield = proto.Yield * yieldMod;
|
totalYield = proto.Yield * yieldMod;
|
||||||
|
|
||||||
@@ -112,6 +137,9 @@ public sealed partial class BotanySystem
|
|||||||
|
|
||||||
var products = new List<EntityUid>();
|
var products = new List<EntityUid>();
|
||||||
|
|
||||||
|
if (totalYield > 1 || proto.HarvestRepeat != HarvestType.NoRepeat)
|
||||||
|
proto.Unique = false;
|
||||||
|
|
||||||
for (var i = 0; i < totalYield; i++)
|
for (var i = 0; i < totalYield; i++)
|
||||||
{
|
{
|
||||||
var product = _robustRandom.Pick(proto.ProductPrototypes);
|
var product = _robustRandom.Pick(proto.ProductPrototypes);
|
||||||
@@ -122,7 +150,7 @@ public sealed partial class BotanySystem
|
|||||||
|
|
||||||
var produce = EnsureComp<ProduceComponent>(entity);
|
var produce = EnsureComp<ProduceComponent>(entity);
|
||||||
|
|
||||||
produce.SeedName = proto.ID;
|
produce.Seed = proto;
|
||||||
ProduceGrown(entity, produce);
|
ProduceGrown(entity, produce);
|
||||||
|
|
||||||
if (TryComp<AppearanceComponent>(entity, out var appearance))
|
if (TryComp<AppearanceComponent>(entity, out var appearance))
|
||||||
@@ -141,7 +169,7 @@ public sealed partial class BotanySystem
|
|||||||
return products;
|
return products;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanHarvest(SeedPrototype proto, EntityUid? held = null)
|
public bool CanHarvest(SeedData proto, EntityUid? held = null)
|
||||||
{
|
{
|
||||||
return !proto.Ligneous || proto.Ligneous && held != null && HasComp<SharpComponent>(held);
|
return !proto.Ligneous || proto.Ligneous && held != null && HasComp<SharpComponent>(held);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,12 +98,12 @@ namespace Content.Server.Botany.Systems
|
|||||||
{
|
{
|
||||||
if (component.Seed == null)
|
if (component.Seed == null)
|
||||||
{
|
{
|
||||||
if (!_prototypeManager.TryIndex<SeedPrototype>(seeds.SeedName, out var seed))
|
if (!_botanySystem.TryGetSeed(seeds, out var seed))
|
||||||
return;
|
return ;
|
||||||
|
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-plant-success-message",
|
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-plant-success-message",
|
||||||
("seedName", seed.SeedName),
|
("seedName", seed.Name),
|
||||||
("seedNoun", seed.SeedNoun)), Filter.Entities(args.User));
|
("seedNoun", seed.Noun)), Filter.Entities(args.User));
|
||||||
|
|
||||||
component.Seed = seed;
|
component.Seed = seed;
|
||||||
component.Dead = false;
|
component.Dead = false;
|
||||||
@@ -215,6 +215,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
component.Seed.Unique = false;
|
||||||
var seed = _botanySystem.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates);
|
var seed = _botanySystem.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates);
|
||||||
seed.RandomOffset(0.25f);
|
seed.RandomOffset(0.25f);
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
|
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Content.Server.Botany.Components;
|
using Content.Server.Botany.Components;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Server.Power.Components;
|
using Content.Server.Power.Components;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
@@ -14,7 +14,6 @@ namespace Content.Server.Botany.Systems;
|
|||||||
public sealed class SeedExtractorSystem : EntitySystem
|
public sealed class SeedExtractorSystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IRobustRandom _random = default!;
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
|
||||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||||
[Dependency] private readonly BotanySystem _botanySystem = default!;
|
[Dependency] private readonly BotanySystem _botanySystem = default!;
|
||||||
|
|
||||||
@@ -32,7 +31,7 @@ public sealed class SeedExtractorSystem : EntitySystem
|
|||||||
|
|
||||||
if (TryComp(args.Used, out ProduceComponent? produce))
|
if (TryComp(args.Used, out ProduceComponent? produce))
|
||||||
{
|
{
|
||||||
if (!_prototypeManager.TryIndex<SeedPrototype>(produce.SeedName, out var seed))
|
if (!_botanySystem.TryGetSeed(produce, out var seed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_popupSystem.PopupCursor(Loc.GetString("seed-extractor-component-interact-message",("name", args.Used)),
|
_popupSystem.PopupCursor(Loc.GetString("seed-extractor-component-interact-message",("name", args.Used)),
|
||||||
@@ -43,6 +42,9 @@ public sealed class SeedExtractorSystem : EntitySystem
|
|||||||
var random = _random.Next(component.MinSeeds, component.MaxSeeds);
|
var random = _random.Next(component.MinSeeds, component.MaxSeeds);
|
||||||
var coords = Transform(uid).Coordinates;
|
var coords = Transform(uid).Coordinates;
|
||||||
|
|
||||||
|
if (random > 1)
|
||||||
|
seed.Unique = false;
|
||||||
|
|
||||||
for (var i = 0; i < random; i++)
|
for (var i = 0; i < random; i++)
|
||||||
{
|
{
|
||||||
_botanySystem.SpawnSeedPacket(seed, coords);
|
_botanySystem.SpawnSeedPacket(seed, coords);
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
|
|||||||
|
|
||||||
if (random.Prob(0.1f))
|
if (random.Prob(0.1f))
|
||||||
{
|
{
|
||||||
plantHolderComp.CheckForDivergence(true);
|
plantHolderComp.EnsureUniqueSeed();
|
||||||
plantHolderComp.Seed.Lifespan++;
|
plantHolderComp.Seed.Lifespan++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (random.Prob(0.1f))
|
if (random.Prob(0.1f))
|
||||||
{
|
{
|
||||||
plantHolderComp.CheckForDivergence(true);
|
plantHolderComp.EnsureUniqueSeed();
|
||||||
plantHolderComp.Seed.Endurance++;
|
plantHolderComp.Seed.Endurance++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
|
|||||||
|
|
||||||
if (plantHolderComp.Seed.Potency < 100 && random.Prob(0.1f))
|
if (plantHolderComp.Seed.Potency < 100 && random.Prob(0.1f))
|
||||||
{
|
{
|
||||||
plantHolderComp.CheckForDivergence(true);
|
plantHolderComp.EnsureUniqueSeed();
|
||||||
plantHolderComp.Seed.Potency++;
|
plantHolderComp.Seed.Potency++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plantHolderComp.Seed.Yield > 1 && random.Prob(0.1f))
|
if (plantHolderComp.Seed.Yield > 1 && random.Prob(0.1f))
|
||||||
{
|
{
|
||||||
plantHolderComp.CheckForDivergence(true);
|
plantHolderComp.EnsureUniqueSeed();
|
||||||
plantHolderComp.Seed.Yield--;
|
plantHolderComp.Seed.Yield--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace Content.Server.Kitchen.Components;
|
namespace Content.Server.Kitchen.Components;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Applies to items that are capable of butchering entities, or
|
/// Applies to items that are capable of butchering entities, or
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
public sealed class SharpComponent : Component
|
public sealed class SharpComponent : Component
|
||||||
{
|
{
|
||||||
|
// TODO just make this a tool type.
|
||||||
public HashSet<EntityUid> Butchering = new();
|
public HashSet<EntityUid> Butchering = new();
|
||||||
|
|
||||||
[DataField("butcherDelayModifier")]
|
[DataField("butcherDelayModifier")]
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
- ReagentId: Flour
|
- ReagentId: Flour
|
||||||
Quantity: 10
|
Quantity: 10
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: wheat
|
seedId: wheat
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: oat bushel
|
name: oat bushel
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
- ReagentId: Oats
|
- ReagentId: Oats
|
||||||
Quantity: 10
|
Quantity: 10
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: oat
|
seedId: oat
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
- ReagentId: Glucose
|
- ReagentId: Glucose
|
||||||
Quantity: 10
|
Quantity: 10
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: sugarcane
|
seedId: sugarcane
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: tower-cap log
|
name: tower-cap log
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
types:
|
types:
|
||||||
Blunt: 10
|
Blunt: 10
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: towercap
|
seedId: towercap
|
||||||
- type: Log
|
- type: Log
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
- ReagentId: Histamine
|
- ReagentId: Histamine
|
||||||
Quantity: 25
|
Quantity: 25
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: nettle
|
seedId: nettle
|
||||||
- type: MeleeChemicalInjector
|
- type: MeleeChemicalInjector
|
||||||
transferAmount: 6 #To OD someone you would need 2 nettles and about 6-7 hits, the DOT is likely to crit them if they are running away with almost no health
|
transferAmount: 6 #To OD someone you would need 2 nettles and about 6-7 hits, the DOT is likely to crit them if they are running away with almost no health
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/banana.rsi
|
sprite: Objects/Specific/Hydroponics/banana.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: banana
|
seedId: banana
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/carrot.rsi
|
sprite: Objects/Specific/Hydroponics/carrot.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: carrots
|
seedId: carrots
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -258,7 +258,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/lemon.rsi
|
sprite: Objects/Specific/Hydroponics/lemon.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: lemon
|
seedId: lemon
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/pineapple.rsi
|
sprite: Objects/Specific/Hydroponics/pineapple.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: pineapple
|
seedId: pineapple
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -313,7 +313,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/potato.rsi
|
sprite: Objects/Specific/Hydroponics/potato.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: potato
|
seedId: potato
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -338,7 +338,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/tomato.rsi
|
sprite: Objects/Specific/Hydroponics/tomato.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: tomato
|
seedId: tomato
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
@@ -419,7 +419,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/eggplant.rsi
|
sprite: Objects/Specific/Hydroponics/eggplant.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: eggplant
|
seedId: eggplant
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: apple
|
name: apple
|
||||||
@@ -439,7 +439,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/apple.rsi
|
sprite: Objects/Specific/Hydroponics/apple.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: apple
|
seedId: apple
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -466,7 +466,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/corn.rsi
|
sprite: Objects/Specific/Hydroponics/corn.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: corn
|
seedId: corn
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
juiceSolution:
|
juiceSolution:
|
||||||
reagents:
|
reagents:
|
||||||
@@ -506,7 +506,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/onion.rsi
|
sprite: Objects/Specific/Hydroponics/onion.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: onion
|
seedId: onion
|
||||||
- type: SliceableFood
|
- type: SliceableFood
|
||||||
count: 5
|
count: 5
|
||||||
slice: FoodOnionSlice
|
slice: FoodOnionSlice
|
||||||
@@ -529,7 +529,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/onion_red.rsi
|
sprite: Objects/Specific/Hydroponics/onion_red.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: onionred
|
seedId: onionred
|
||||||
- type: SliceableFood
|
- type: SliceableFood
|
||||||
count: 4
|
count: 4
|
||||||
slice: FoodOnionRedSlice
|
slice: FoodOnionRedSlice
|
||||||
@@ -549,7 +549,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/chanterelle.rsi
|
sprite: Objects/Specific/Hydroponics/chanterelle.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: chanterelle
|
seedId: chanterelle
|
||||||
|
|
||||||
# Slices
|
# Slices
|
||||||
|
|
||||||
@@ -623,7 +623,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/chili.rsi
|
sprite: Objects/Specific/Hydroponics/chili.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: chili
|
seedId: chili
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: aloe
|
name: aloe
|
||||||
@@ -643,7 +643,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/aloe.rsi
|
sprite: Objects/Specific/Hydroponics/aloe.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: aloe
|
seedId: aloe
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
|
|
||||||
@@ -665,7 +665,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/poppy.rsi
|
sprite: Objects/Specific/Hydroponics/poppy.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: poppy
|
seedId: poppy
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
|
|
||||||
@@ -687,7 +687,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/lingzhi.rsi
|
sprite: Objects/Specific/Hydroponics/lingzhi.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: lingzhi
|
seedId: lingzhi
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
|
|
||||||
@@ -715,7 +715,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
|
sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: ambrosiaVulgaris
|
seedId: ambrosiaVulgaris
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
@@ -739,7 +739,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/galaxythistle.rsi
|
sprite: Objects/Specific/Hydroponics/galaxythistle.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: galaxythistle
|
seedId: galaxythistle
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
|
|
||||||
@@ -761,7 +761,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/fly_amanita.rsi
|
sprite: Objects/Specific/Hydroponics/fly_amanita.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: flyAmanita
|
seedId: flyAmanita
|
||||||
- type: Extractable
|
- type: Extractable
|
||||||
grindableSolutionName: food
|
grindableSolutionName: food
|
||||||
|
|
||||||
@@ -783,6 +783,6 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/gatfruit.rsi
|
sprite: Objects/Specific/Hydroponics/gatfruit.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: gatfruit
|
seedId: gatfruit
|
||||||
- type: Food
|
- type: Food
|
||||||
trash: RevolverPredator
|
trash: RevolverPredator
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/cannabis.rsi
|
sprite: Objects/Specific/Hydroponics/cannabis.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: cannabis
|
seedId: cannabis
|
||||||
- type: Food
|
- type: Food
|
||||||
- type: SolutionContainerManager
|
- type: SolutionContainerManager
|
||||||
solutions:
|
solutions:
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/tobacco.rsi
|
sprite: Objects/Specific/Hydroponics/tobacco.rsi
|
||||||
- type: Produce
|
- type: Produce
|
||||||
seed: tobacco
|
seedId: tobacco
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: dried tobacco leaves
|
name: dried tobacco leaves
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
id: WheatSeeds
|
id: WheatSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: wheat
|
seedId: wheat
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/wheat.rsi
|
sprite: Objects/Specific/Hydroponics/wheat.rsi
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
id: OatSeeds
|
id: OatSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: oat
|
seedId: oat
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/oat.rsi
|
sprite: Objects/Specific/Hydroponics/oat.rsi
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
id: BananaSeeds
|
id: BananaSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: banana
|
seedId: banana
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/banana.rsi
|
sprite: Objects/Specific/Hydroponics/banana.rsi
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
id: CarrotSeeds
|
id: CarrotSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: carrots
|
seedId: carrots
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/carrot.rsi
|
sprite: Objects/Specific/Hydroponics/carrot.rsi
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
id: LemonSeeds
|
id: LemonSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: lemon
|
seedId: lemon
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/lemon.rsi
|
sprite: Objects/Specific/Hydroponics/lemon.rsi
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
id: PineappleSeeds
|
id: PineappleSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: pineapple
|
seedId: pineapple
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/pineapple.rsi
|
sprite: Objects/Specific/Hydroponics/pineapple.rsi
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
id: PotatoSeeds
|
id: PotatoSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: potato
|
seedId: potato
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/potato.rsi
|
sprite: Objects/Specific/Hydroponics/potato.rsi
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
id: SugarcaneSeeds
|
id: SugarcaneSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: sugarcane
|
seedId: sugarcane
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/sugarcane.rsi
|
sprite: Objects/Specific/Hydroponics/sugarcane.rsi
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
id: TowercapSeeds
|
id: TowercapSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: towercap
|
seedId: towercap
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/towercap.rsi
|
sprite: Objects/Specific/Hydroponics/towercap.rsi
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
id: TomatoSeeds
|
id: TomatoSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: tomato
|
seedId: tomato
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/tomato.rsi
|
sprite: Objects/Specific/Hydroponics/tomato.rsi
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
id: EggplantSeeds
|
id: EggplantSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: eggplant
|
seedId: eggplant
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/eggplant.rsi
|
sprite: Objects/Specific/Hydroponics/eggplant.rsi
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
id: AppleSeeds
|
id: AppleSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: apple
|
seedId: apple
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/apple.rsi
|
sprite: Objects/Specific/Hydroponics/apple.rsi
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
id: CornSeeds
|
id: CornSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: corn
|
seedId: corn
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/corn.rsi
|
sprite: Objects/Specific/Hydroponics/corn.rsi
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
id: ChanterelleSeeds
|
id: ChanterelleSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: chanterelle
|
seedId: chanterelle
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/chanterelle.rsi
|
sprite: Objects/Specific/Hydroponics/chanterelle.rsi
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@
|
|||||||
id: EggySeeds
|
id: EggySeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: eggy
|
seedId: eggy
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/eggy.rsi
|
sprite: Objects/Specific/Hydroponics/eggy.rsi
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
id: TobaccoSeeds
|
id: TobaccoSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: tobacco
|
seedId: tobacco
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/tobacco.rsi
|
sprite: Objects/Specific/Hydroponics/tobacco.rsi
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
id: CannabisSeeds
|
id: CannabisSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: cannabis
|
seedId: cannabis
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/cannabis.rsi
|
sprite: Objects/Specific/Hydroponics/cannabis.rsi
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
id: NettleSeeds
|
id: NettleSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: nettle
|
seedId: nettle
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/nettle.rsi
|
sprite: Objects/Specific/Hydroponics/nettle.rsi
|
||||||
|
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
id: ChiliSeeds
|
id: ChiliSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: chili
|
seedId: chili
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/chili.rsi
|
sprite: Objects/Specific/Hydroponics/chili.rsi
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
id: AloeSeeds
|
id: AloeSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: aloe
|
seedId: aloe
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/aloe.rsi
|
sprite: Objects/Specific/Hydroponics/aloe.rsi
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@
|
|||||||
id: PoppySeeds
|
id: PoppySeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: poppy
|
seedId: poppy
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/poppy.rsi
|
sprite: Objects/Specific/Hydroponics/poppy.rsi
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@
|
|||||||
id: LingzhiSeeds
|
id: LingzhiSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: lingzhi
|
seedId: lingzhi
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/lingzhi.rsi
|
sprite: Objects/Specific/Hydroponics/lingzhi.rsi
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
id: AmbrosiaVulgarisSeeds
|
id: AmbrosiaVulgarisSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: ambrosiaVulgaris
|
seedId: ambrosiaVulgaris
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
|
sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
|
||||||
|
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
id: GalaxythistleSeeds
|
id: GalaxythistleSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: galaxythistle
|
seedId: galaxythistle
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/galaxythistle.rsi
|
sprite: Objects/Specific/Hydroponics/galaxythistle.rsi
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@
|
|||||||
id: FlyAmanitaSeeds
|
id: FlyAmanitaSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: flyAmanita
|
seedId: flyAmanita
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/fly_amanita.rsi
|
sprite: Objects/Specific/Hydroponics/fly_amanita.rsi
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@
|
|||||||
id: GatfruitSeeds
|
id: GatfruitSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: gatfruit
|
seedId: gatfruit
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/gatfruit.rsi
|
sprite: Objects/Specific/Hydroponics/gatfruit.rsi
|
||||||
|
|
||||||
@@ -289,6 +289,6 @@
|
|||||||
id: OnionSeeds
|
id: OnionSeeds
|
||||||
components:
|
components:
|
||||||
- type: Seed
|
- type: Seed
|
||||||
seed: onion
|
seedId: onion
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/onion.rsi
|
sprite: Objects/Specific/Hydroponics/onion.rsi
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: wheat
|
id: wheat
|
||||||
name: wheat
|
name: wheat
|
||||||
seedName: wheat
|
|
||||||
displayName: wheat stalks
|
displayName: wheat stalks
|
||||||
plantRsi: Objects/Specific/Hydroponics/wheat.rsi
|
plantRsi: Objects/Specific/Hydroponics/wheat.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -26,7 +25,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: oat
|
id: oat
|
||||||
name: oat
|
name: oat
|
||||||
seedName: oat
|
|
||||||
displayName: oat stalks
|
displayName: oat stalks
|
||||||
plantRsi: Objects/Specific/Hydroponics/oat.rsi
|
plantRsi: Objects/Specific/Hydroponics/oat.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -51,7 +49,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: banana
|
id: banana
|
||||||
name: banana
|
name: banana
|
||||||
seedName: banana
|
|
||||||
displayName: banana plant
|
displayName: banana plant
|
||||||
plantRsi: Objects/Specific/Hydroponics/banana.rsi
|
plantRsi: Objects/Specific/Hydroponics/banana.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -77,7 +74,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: carrots
|
id: carrots
|
||||||
name: carrot
|
name: carrot
|
||||||
seedName: carrot
|
|
||||||
displayName: carrots
|
displayName: carrots
|
||||||
plantRsi: Objects/Specific/Hydroponics/carrot.rsi
|
plantRsi: Objects/Specific/Hydroponics/carrot.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -102,7 +98,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: lemon
|
id: lemon
|
||||||
name: lemon
|
name: lemon
|
||||||
seedName: lemon
|
|
||||||
displayName: lemon trees
|
displayName: lemon trees
|
||||||
plantRsi: Objects/Specific/Hydroponics/lemon.rsi
|
plantRsi: Objects/Specific/Hydroponics/lemon.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -127,7 +122,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: pineapple
|
id: pineapple
|
||||||
name: pineapple
|
name: pineapple
|
||||||
seedName: pineapple
|
|
||||||
displayName: pineapple plant
|
displayName: pineapple plant
|
||||||
plantRsi: Objects/Specific/Hydroponics/pineapple.rsi
|
plantRsi: Objects/Specific/Hydroponics/pineapple.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -157,7 +151,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: potato
|
id: potato
|
||||||
name: potato
|
name: potato
|
||||||
seedName: potato
|
|
||||||
displayName: potatoes
|
displayName: potatoes
|
||||||
plantRsi: Objects/Specific/Hydroponics/potato.rsi
|
plantRsi: Objects/Specific/Hydroponics/potato.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -182,7 +175,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: sugarcane
|
id: sugarcane
|
||||||
name: sugarcane
|
name: sugarcane
|
||||||
seedName: sugarcane
|
|
||||||
displayName: sugarcanes
|
displayName: sugarcanes
|
||||||
plantRsi: Objects/Specific/Hydroponics/sugarcane.rsi
|
plantRsi: Objects/Specific/Hydroponics/sugarcane.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -203,8 +195,7 @@
|
|||||||
|
|
||||||
- type: seed
|
- type: seed
|
||||||
id: towercap
|
id: towercap
|
||||||
name: towercap
|
name: tower cap
|
||||||
seedName: tower cap
|
|
||||||
displayName: tower caps
|
displayName: tower caps
|
||||||
plantRsi: Objects/Specific/Hydroponics/towercap.rsi
|
plantRsi: Objects/Specific/Hydroponics/towercap.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -223,7 +214,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: tomato
|
id: tomato
|
||||||
name: tomato
|
name: tomato
|
||||||
seedName: tomato
|
|
||||||
displayName: tomato plant
|
displayName: tomato plant
|
||||||
plantRsi: Objects/Specific/Hydroponics/tomato.rsi
|
plantRsi: Objects/Specific/Hydroponics/tomato.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -253,7 +243,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: eggplant
|
id: eggplant
|
||||||
name: eggplant
|
name: eggplant
|
||||||
seedName: eggplant
|
|
||||||
displayName: eggplants
|
displayName: eggplants
|
||||||
plantRsi: Objects/Specific/Hydroponics/eggplant.rsi
|
plantRsi: Objects/Specific/Hydroponics/eggplant.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -279,7 +268,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: apple
|
id: apple
|
||||||
name: apple
|
name: apple
|
||||||
seedName: apple
|
|
||||||
displayName: apple tree
|
displayName: apple tree
|
||||||
plantRsi: Objects/Specific/Hydroponics/apple.rsi
|
plantRsi: Objects/Specific/Hydroponics/apple.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -304,7 +292,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: corn
|
id: corn
|
||||||
name: corn
|
name: corn
|
||||||
seedName: corn
|
|
||||||
displayName: ears of corn
|
displayName: ears of corn
|
||||||
plantRsi: Objects/Specific/Hydroponics/corn.rsi
|
plantRsi: Objects/Specific/Hydroponics/corn.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -331,7 +318,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: onion
|
id: onion
|
||||||
name: onion
|
name: onion
|
||||||
seedName: onion
|
|
||||||
displayName: onions
|
displayName: onions
|
||||||
plantRsi: Objects/Specific/Hydroponics/onion.rsi
|
plantRsi: Objects/Specific/Hydroponics/onion.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -358,7 +344,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: onionred
|
id: onionred
|
||||||
name: red onion
|
name: red onion
|
||||||
seedName: red onion
|
|
||||||
displayName: red onions
|
displayName: red onions
|
||||||
plantRsi: Objects/Specific/Hydroponics/onion_red.rsi
|
plantRsi: Objects/Specific/Hydroponics/onion_red.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -385,8 +370,7 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: chanterelle
|
id: chanterelle
|
||||||
name: chanterelle
|
name: chanterelle
|
||||||
seedName: chanterelle
|
noun: spores
|
||||||
seedNoun: spores
|
|
||||||
displayName: chanterelle mushrooms
|
displayName: chanterelle mushrooms
|
||||||
plantRsi: Objects/Specific/Hydroponics/chanterelle.rsi
|
plantRsi: Objects/Specific/Hydroponics/chanterelle.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -408,8 +392,7 @@
|
|||||||
|
|
||||||
- type: seed
|
- type: seed
|
||||||
id: eggy
|
id: eggy
|
||||||
name: eggy
|
name: egg-plant
|
||||||
seedName: egg-plant
|
|
||||||
displayName: egg-plants
|
displayName: egg-plants
|
||||||
plantRsi: Objects/Specific/Hydroponics/eggy.rsi
|
plantRsi: Objects/Specific/Hydroponics/eggy.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -431,7 +414,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: cannabis
|
id: cannabis
|
||||||
name: cannabis
|
name: cannabis
|
||||||
seedName: cannabis
|
|
||||||
displayName: cannabis
|
displayName: cannabis
|
||||||
plantRsi: Objects/Specific/Hydroponics/cannabis.rsi
|
plantRsi: Objects/Specific/Hydroponics/cannabis.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -454,7 +436,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: tobacco
|
id: tobacco
|
||||||
name: tobacco
|
name: tobacco
|
||||||
seedName: tobacco
|
|
||||||
displayName: tobacco plant
|
displayName: tobacco plant
|
||||||
plantRsi: Objects/Specific/Hydroponics/tobacco.rsi
|
plantRsi: Objects/Specific/Hydroponics/tobacco.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -477,7 +458,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: nettle
|
id: nettle
|
||||||
name: nettle
|
name: nettle
|
||||||
seedName: nettle
|
|
||||||
displayName: nettles
|
displayName: nettles
|
||||||
plantRsi: Objects/Specific/Hydroponics/nettle.rsi
|
plantRsi: Objects/Specific/Hydroponics/nettle.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -500,7 +480,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: chili
|
id: chili
|
||||||
name: chili
|
name: chili
|
||||||
seedName: chili
|
|
||||||
displayName: chilis
|
displayName: chilis
|
||||||
plantRsi: Objects/Specific/Hydroponics/chili.rsi
|
plantRsi: Objects/Specific/Hydroponics/chili.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -530,7 +509,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: poppy
|
id: poppy
|
||||||
name: poppy
|
name: poppy
|
||||||
seedName: poppy
|
|
||||||
displayName: poppies
|
displayName: poppies
|
||||||
plantRsi: Objects/Specific/Hydroponics/poppy.rsi
|
plantRsi: Objects/Specific/Hydroponics/poppy.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -555,7 +533,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: aloe
|
id: aloe
|
||||||
name: aloe
|
name: aloe
|
||||||
seedName: aloe
|
|
||||||
displayName: aloe
|
displayName: aloe
|
||||||
plantRsi: Objects/Specific/Hydroponics/aloe.rsi
|
plantRsi: Objects/Specific/Hydroponics/aloe.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -580,7 +557,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: lingzhi
|
id: lingzhi
|
||||||
name: lingzhi
|
name: lingzhi
|
||||||
seedName: lingzhi
|
|
||||||
displayName: lingzhi
|
displayName: lingzhi
|
||||||
plantRsi: Objects/Specific/Hydroponics/lingzhi.rsi
|
plantRsi: Objects/Specific/Hydroponics/lingzhi.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -605,7 +581,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: ambrosiaVulgaris
|
id: ambrosiaVulgaris
|
||||||
name: ambrosia vulgaris
|
name: ambrosia vulgaris
|
||||||
seedName: ambrosiaVulgaris
|
|
||||||
displayName: ambrosia vulgaris
|
displayName: ambrosia vulgaris
|
||||||
plantRsi: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
|
plantRsi: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -642,7 +617,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: galaxythistle
|
id: galaxythistle
|
||||||
name: galaxythistle
|
name: galaxythistle
|
||||||
seedName: galaxythistle
|
|
||||||
displayName: galaxythistle
|
displayName: galaxythistle
|
||||||
plantRsi: Objects/Specific/Hydroponics/galaxythistle.rsi
|
plantRsi: Objects/Specific/Hydroponics/galaxythistle.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -663,7 +637,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: flyAmanita
|
id: flyAmanita
|
||||||
name: fly amanita
|
name: fly amanita
|
||||||
seedname: flyAmanita
|
|
||||||
displayName: fly amanita
|
displayName: fly amanita
|
||||||
plantRsi: Objects/Specific/Hydroponics/fly_amanita.rsi
|
plantRsi: Objects/Specific/Hydroponics/fly_amanita.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
@@ -688,7 +661,6 @@
|
|||||||
- type: seed
|
- type: seed
|
||||||
id: gatfruit
|
id: gatfruit
|
||||||
name: gatfruit
|
name: gatfruit
|
||||||
seedName: gatfruit
|
|
||||||
displayName: gatfruit tree
|
displayName: gatfruit tree
|
||||||
plantRsi: Objects/Specific/Hydroponics/gatfruit.rsi
|
plantRsi: Objects/Specific/Hydroponics/gatfruit.rsi
|
||||||
productPrototypes:
|
productPrototypes:
|
||||||
|
|||||||
Reference in New Issue
Block a user