Make constructed hydro trays start empty (#19620)
This commit is contained in:
@@ -1,90 +1,93 @@
|
|||||||
namespace Content.Server.Botany.Components
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||||
|
|
||||||
|
namespace Content.Server.Botany.Components;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class PlantHolderComponent : Component
|
||||||
{
|
{
|
||||||
[RegisterComponent]
|
[DataField("nextUpdate", customTypeSerializer: typeof(TimeOffsetSerializer))]
|
||||||
public sealed partial class PlantHolderComponent : Component
|
|
||||||
{
|
|
||||||
[ViewVariables]
|
|
||||||
public TimeSpan NextUpdate = TimeSpan.Zero;
|
public TimeSpan NextUpdate = TimeSpan.Zero;
|
||||||
|
[ViewVariables(VVAccess.ReadWrite), DataField("updateDelay")]
|
||||||
public TimeSpan UpdateDelay = TimeSpan.FromSeconds(3);
|
public TimeSpan UpdateDelay = TimeSpan.FromSeconds(3);
|
||||||
|
|
||||||
[ViewVariables]
|
[DataField("lastProduce")]
|
||||||
public int LastProduce;
|
public int LastProduce;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("missingGas")]
|
||||||
public int MissingGas;
|
public int MissingGas;
|
||||||
|
|
||||||
public readonly TimeSpan CycleDelay = TimeSpan.FromSeconds(15f);
|
[DataField("cycleDelay")]
|
||||||
|
public TimeSpan CycleDelay = TimeSpan.FromSeconds(15f);
|
||||||
|
|
||||||
[ViewVariables]
|
[DataField("lastCycle", customTypeSerializer: typeof(TimeOffsetSerializer))]
|
||||||
public TimeSpan LastCycle = TimeSpan.Zero;
|
public TimeSpan LastCycle = TimeSpan.Zero;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("updateSpriteAfterUpdate")]
|
||||||
public bool UpdateSpriteAfterUpdate;
|
public bool UpdateSpriteAfterUpdate;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)] [DataField("drawWarnings")]
|
[ViewVariables(VVAccess.ReadWrite), DataField("drawWarnings")]
|
||||||
public bool DrawWarnings = false;
|
public bool DrawWarnings = false;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("waterLevel")]
|
||||||
public float WaterLevel = 100f;
|
public float WaterLevel = 100f;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("nutritionLevel")]
|
||||||
public float NutritionLevel = 100f;
|
public float NutritionLevel = 100f;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("pestLevel")]
|
||||||
public float PestLevel { get; set; }
|
public float PestLevel;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("weedLevel")]
|
||||||
public float WeedLevel { get; set; }
|
public float WeedLevel;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("toxins")]
|
||||||
public float Toxins { get; set; }
|
public float Toxins;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("age")]
|
||||||
public int Age { get; set; }
|
public int Age;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("skipAging")]
|
||||||
public int SkipAging { get; set; }
|
public int SkipAging;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("dead")]
|
||||||
public bool Dead { get; set; }
|
public bool Dead;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("harvest")]
|
||||||
public bool Harvest { get; set; }
|
public bool Harvest;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("sampled")]
|
||||||
public bool Sampled { get; set; }
|
public bool Sampled;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("yieldMod")]
|
||||||
public int YieldMod { get; set; } = 1;
|
public int YieldMod = 1;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("mutationMod")]
|
||||||
public float MutationMod { get; set; } = 1f;
|
public float MutationMod = 1f;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("mutationLevel")]
|
||||||
public float MutationLevel { get; set; }
|
public float MutationLevel;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("health")]
|
||||||
public float Health { get; set; }
|
public float Health;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("weedCoefficient")]
|
||||||
public float WeedCoefficient { get; set; } = 1f;
|
public float WeedCoefficient = 1f;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("seed")]
|
||||||
public SeedData? Seed { get; set; }
|
public SeedData? Seed;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("improperHeat")]
|
||||||
public bool ImproperHeat { get; set; }
|
public bool ImproperHeat;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("improperPressure")]
|
||||||
public bool ImproperPressure { get; set; }
|
public bool ImproperPressure;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("improperLight")]
|
||||||
public bool ImproperLight { get; set; }
|
public bool ImproperLight;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite), DataField("forceUpdate")]
|
||||||
public bool ForceUpdate { get; set; }
|
public bool ForceUpdate;
|
||||||
|
|
||||||
[DataField("solution")]
|
[ViewVariables(VVAccess.ReadWrite), DataField("solution")]
|
||||||
public string SoilSolutionName { get; set; } = "soil";
|
public string SoilSolutionName = "soil";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,16 +25,16 @@ using Robust.Shared.Prototypes;
|
|||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
namespace Content.Server.Botany.Systems
|
namespace Content.Server.Botany.Systems;
|
||||||
|
|
||||||
|
public sealed class PlantHolderSystem : EntitySystem
|
||||||
{
|
{
|
||||||
public sealed class PlantHolderSystem : EntitySystem
|
[Dependency] private readonly BotanySystem _botany = default!;
|
||||||
{
|
|
||||||
[Dependency] private readonly BotanySystem _botanySystem = default!;
|
|
||||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||||
[Dependency] private readonly MutationSystem _mutation = default!;
|
[Dependency] private readonly MutationSystem _mutation = default!;
|
||||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
[Dependency] private readonly PopupSystem _popup = default!;
|
||||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||||
[Dependency] private readonly TagSystem _tagSystem = default!;
|
[Dependency] private readonly TagSystem _tagSystem = default!;
|
||||||
[Dependency] private readonly SolutionContainerSystem _solutionSystem = default!;
|
[Dependency] private readonly SolutionContainerSystem _solutionSystem = default!;
|
||||||
@@ -133,12 +133,12 @@ namespace Content.Server.Botany.Systems
|
|||||||
{
|
{
|
||||||
if (component.Seed == null)
|
if (component.Seed == null)
|
||||||
{
|
{
|
||||||
if (!_botanySystem.TryGetSeed(seeds, out var seed))
|
if (!_botany.TryGetSeed(seeds, out var seed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var name = Loc.GetString(seed.Name);
|
var name = Loc.GetString(seed.Name);
|
||||||
var noun = Loc.GetString(seed.Noun);
|
var noun = Loc.GetString(seed.Noun);
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-plant-success-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-plant-success-message",
|
||||||
("seedName", name),
|
("seedName", name),
|
||||||
("seedNoun", noun)), args.User, PopupType.Medium);
|
("seedNoun", noun)), args.User, PopupType.Medium);
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
component.Health = component.Seed.Endurance;
|
component.Health = component.Seed.Endurance;
|
||||||
component.LastCycle = _gameTiming.CurTime;
|
component.LastCycle = _gameTiming.CurTime;
|
||||||
|
|
||||||
EntityManager.QueueDeleteEntity(args.Used);
|
QueueDel(args.Used);
|
||||||
|
|
||||||
CheckLevelSanity(uid, component);
|
CheckLevelSanity(uid, component);
|
||||||
UpdateSprite(uid, component);
|
UpdateSprite(uid, component);
|
||||||
@@ -156,7 +156,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-already-seeded-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-already-seeded-message",
|
||||||
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User, PopupType.Medium);
|
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User, PopupType.Medium);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -165,16 +165,16 @@ namespace Content.Server.Botany.Systems
|
|||||||
{
|
{
|
||||||
if (component.WeedLevel > 0)
|
if (component.WeedLevel > 0)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-remove-weeds-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-remove-weeds-message",
|
||||||
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User, PopupType.Medium);
|
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User, PopupType.Medium);
|
||||||
_popupSystem.PopupEntity(Loc.GetString("plant-holder-component-remove-weeds-others-message",
|
_popup.PopupEntity(Loc.GetString("plant-holder-component-remove-weeds-others-message",
|
||||||
("otherName", Comp<MetaDataComponent>(args.User).EntityName)), uid, Filter.PvsExcept(args.User), true);
|
("otherName", Comp<MetaDataComponent>(args.User).EntityName)), uid, Filter.PvsExcept(args.User), true);
|
||||||
component.WeedLevel = 0;
|
component.WeedLevel = 0;
|
||||||
UpdateSprite(uid, component);
|
UpdateSprite(uid, component);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-no-weeds-message"), args.User);
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-no-weeds-message"), args.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -184,15 +184,15 @@ namespace Content.Server.Botany.Systems
|
|||||||
{
|
{
|
||||||
if (component.Seed != null)
|
if (component.Seed != null)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-remove-plant-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-remove-plant-message",
|
||||||
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User, PopupType.Medium);
|
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User, PopupType.Medium);
|
||||||
_popupSystem.PopupEntity(Loc.GetString("plant-holder-component-remove-plant-others-message",
|
_popup.PopupEntity(Loc.GetString("plant-holder-component-remove-plant-others-message",
|
||||||
("name", Comp<MetaDataComponent>(args.User).EntityName)), uid, Filter.PvsExcept(args.User), true);
|
("name", Comp<MetaDataComponent>(args.User).EntityName)), uid, Filter.PvsExcept(args.User), true);
|
||||||
RemovePlant(uid, component);
|
RemovePlant(uid, component);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-no-plant-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-no-plant-message",
|
||||||
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User);
|
("name", Comp<MetaDataComponent>(uid).EntityName)), args.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,12 +214,12 @@ namespace Content.Server.Botany.Systems
|
|||||||
|
|
||||||
if (split.Volume == 0)
|
if (split.Volume == 0)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-no-plant-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-no-plant-message",
|
||||||
("owner", args.Used)), args.User);
|
("owner", args.Used)), args.User);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-spray-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-spray-message",
|
||||||
("owner", uid),
|
("owner", uid),
|
||||||
("amount", split.Volume)), args.User, PopupType.Medium);
|
("amount", split.Volume)), args.User, PopupType.Medium);
|
||||||
|
|
||||||
@@ -234,27 +234,27 @@ namespace Content.Server.Botany.Systems
|
|||||||
{
|
{
|
||||||
if (component.Seed == null)
|
if (component.Seed == null)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-nothing-to-sample-message"), args.User);
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-nothing-to-sample-message"), args.User);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (component.Sampled)
|
if (component.Sampled)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-already-sampled-message"), args.User);
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-already-sampled-message"), args.User);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (component.Dead)
|
if (component.Dead)
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-dead-plant-message"), args.User);
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-dead-plant-message"), args.User);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
component.Seed.Unique = false;
|
component.Seed.Unique = false;
|
||||||
var seed = _botanySystem.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates, args.User);
|
var seed = _botany.SpawnSeedPacket(component.Seed, Transform(args.User).Coordinates, args.User);
|
||||||
seed.RandomOffset(0.25f);
|
seed.RandomOffset(0.25f);
|
||||||
var displayName = Loc.GetString(component.Seed.DisplayName);
|
var displayName = Loc.GetString(component.Seed.DisplayName);
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-take-sample-message",
|
||||||
("seedName", displayName)), args.User);
|
("seedName", displayName)), args.User);
|
||||||
component.Health -= (_random.Next(3, 5) * 10);
|
component.Health -= (_random.Next(3, 5) * 10);
|
||||||
|
|
||||||
@@ -278,10 +278,10 @@ namespace Content.Server.Botany.Systems
|
|||||||
|
|
||||||
if (TryComp<ProduceComponent?>(args.Used, out var produce))
|
if (TryComp<ProduceComponent?>(args.Used, out var produce))
|
||||||
{
|
{
|
||||||
_popupSystem.PopupCursor(Loc.GetString("plant-holder-component-compost-message",
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-compost-message",
|
||||||
("owner", uid),
|
("owner", uid),
|
||||||
("usingItem", args.Used)), args.User, PopupType.Medium);
|
("usingItem", args.Used)), args.User, PopupType.Medium);
|
||||||
_popupSystem.PopupEntity(Loc.GetString("plant-holder-component-compost-others-message",
|
_popup.PopupEntity(Loc.GetString("plant-holder-component-compost-others-message",
|
||||||
("user", Identity.Entity(args.User, EntityManager)),
|
("user", Identity.Entity(args.User, EntityManager)),
|
||||||
("usingItem", args.Used),
|
("usingItem", args.Used),
|
||||||
("owner", uid)), uid, Filter.PvsExcept(args.User), true);
|
("owner", uid)), uid, Filter.PvsExcept(args.User), true);
|
||||||
@@ -306,7 +306,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
var nutrientBonus = seed.Potency / 2.5f;
|
var nutrientBonus = seed.Potency / 2.5f;
|
||||||
AdjustNutrient(uid, nutrientBonus, component);
|
AdjustNutrient(uid, nutrientBonus, component);
|
||||||
}
|
}
|
||||||
EntityManager.QueueDeleteEntity(args.Used);
|
QueueDel(args.Used);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -584,7 +584,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
else if (component.Age < 0) // Revert back to seed packet!
|
else if (component.Age < 0) // Revert back to seed packet!
|
||||||
{
|
{
|
||||||
// will put it in the trays hands if it has any, please do not try doing this
|
// will put it in the trays hands if it has any, please do not try doing this
|
||||||
_botanySystem.SpawnSeedPacket(component.Seed, Transform(uid).Coordinates, uid);
|
_botany.SpawnSeedPacket(component.Seed, Transform(uid).Coordinates, uid);
|
||||||
RemovePlant(uid, component);
|
RemovePlant(uid, component);
|
||||||
component.ForceUpdate = true;
|
component.ForceUpdate = true;
|
||||||
Update(uid, component);
|
Update(uid, component);
|
||||||
@@ -667,15 +667,15 @@ namespace Content.Server.Botany.Systems
|
|||||||
{
|
{
|
||||||
if (TryComp<HandsComponent>(user, out var hands))
|
if (TryComp<HandsComponent>(user, out var hands))
|
||||||
{
|
{
|
||||||
if (!_botanySystem.CanHarvest(component.Seed, hands.ActiveHandEntity))
|
if (!_botany.CanHarvest(component.Seed, hands.ActiveHandEntity))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (!_botanySystem.CanHarvest(component.Seed))
|
else if (!_botany.CanHarvest(component.Seed))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_botanySystem.Harvest(component.Seed, user, component.YieldMod);
|
_botany.Harvest(component.Seed, user, component.YieldMod);
|
||||||
AfterHarvest(plantholder, component);
|
AfterHarvest(plantholder, component);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -696,7 +696,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
if (component.Seed == null || !component.Harvest)
|
if (component.Seed == null || !component.Harvest)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_botanySystem.AutoHarvest(component.Seed, Transform(uid).Coordinates);
|
_botany.AutoHarvest(component.Seed, Transform(uid).Coordinates);
|
||||||
AfterHarvest(uid, component);
|
AfterHarvest(uid, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,7 +859,7 @@ namespace Content.Server.Botany.Systems
|
|||||||
light.Radius = component.Seed.BioluminescentRadius;
|
light.Radius = component.Seed.BioluminescentRadius;
|
||||||
light.Color = component.Seed.BioluminescentColor;
|
light.Color = component.Seed.BioluminescentColor;
|
||||||
light.CastShadows = false; // this is expensive, and botanists make lots of plants
|
light.CastShadows = false; // this is expensive, and botanists make lots of plants
|
||||||
Dirty(light);
|
Dirty(uid, light);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -939,5 +939,4 @@ namespace Content.Server.Botany.Systems
|
|||||||
component.ForceUpdate = true;
|
component.ForceUpdate = true;
|
||||||
Update(uid, component);
|
Update(uid, component);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -435,7 +435,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: service
|
state: service
|
||||||
- type: MachineBoard
|
- type: MachineBoard
|
||||||
prototype: hydroponicsTray
|
prototype: HydroponicsTrayEmpty
|
||||||
materialRequirements:
|
materialRequirements:
|
||||||
# replacing the console screen
|
# replacing the console screen
|
||||||
Glass: 5
|
Glass: 5
|
||||||
|
|||||||
@@ -89,3 +89,14 @@
|
|||||||
- type: GuideHelp
|
- type: GuideHelp
|
||||||
guides:
|
guides:
|
||||||
- Botany
|
- Botany
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: hydroponicsTray
|
||||||
|
id: HydroponicsTrayEmpty
|
||||||
|
suffix: Empty
|
||||||
|
components:
|
||||||
|
- type: PlantHolder
|
||||||
|
waterLevel: 0
|
||||||
|
nutritionLevel: 0
|
||||||
|
# for the lights to update immediately
|
||||||
|
updateSpriteAfterUpdate: true
|
||||||
|
|||||||
Reference in New Issue
Block a user