diff --git a/Content.Client/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs b/Content.Client/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs index 0c38d605d2..29a58e792b 100644 --- a/Content.Client/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs +++ b/Content.Client/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs @@ -1,7 +1,8 @@ +using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; +using Robust.Shared.GameStates; namespace Content.Client.Chemistry.Containers.EntitySystems; -public sealed partial class SolutionContainerSystem : SharedSolutionContainerSystem -{ -} +public sealed partial class SolutionContainerSystem : SharedSolutionContainerSystem; diff --git a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 7c2efbc471..1a619a55f9 100644 --- a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -117,8 +117,7 @@ public sealed class ChemistryGuideDataSystem : SharedChemistryGuideDataSystem if (extractableComponent.GrindableSolutionName is { } grindableSolutionId && - entProto.TryGetComponent(out var manager, EntityManager.ComponentFactory) && - _solutionContainer.TryGetSolution(manager, grindableSolutionId, out var grindableSolution)) + _solutionContainer.TryGetSolution(entProto, grindableSolutionId, out var grindableSolution)) { var data = new ReagentEntitySourceData( new() { DefaultGrindCategory }, diff --git a/Content.IntegrationTests/Tests/Chemistry/DrainTest.cs b/Content.IntegrationTests/Tests/Chemistry/DrainTest.cs index 55f405f039..1e67dedd5e 100644 --- a/Content.IntegrationTests/Tests/Chemistry/DrainTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/DrainTest.cs @@ -23,15 +23,15 @@ public sealed class DrainTest : InteractionTest - type: entity parent: Puddle id: PuddleBloodTest - suffix: Blood (30u) + suffix: Blood components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: {BloodReagent} - Quantity: {PuddleVolume} + - type: Solution + id: puddle + solution: + maxVol: 1000 + reagents: + - ReagentId: {BloodReagent} + Quantity: {PuddleVolume} "; diff --git a/Content.IntegrationTests/Tests/Chemistry/SolutionRoundingTest.cs b/Content.IntegrationTests/Tests/Chemistry/SolutionRoundingTest.cs index f188fd0f66..10ae219063 100644 --- a/Content.IntegrationTests/Tests/Chemistry/SolutionRoundingTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/SolutionRoundingTest.cs @@ -21,10 +21,10 @@ public sealed class SolutionRoundingTest : GameTest - type: entity id: SolutionRoundingTestContainer components: - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 100 + - type: Solution + id: beaker + solution: + maxVol: 100 # This is the Chloral Hydrate recipe fyi. - type: reagent diff --git a/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs b/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs index ffaca012a3..0b55c44266 100644 --- a/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs +++ b/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs @@ -20,10 +20,10 @@ public sealed class SolutionSystemTests : GameTest - type: entity id: SolutionTarget components: - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 + - type: Solution + id: beaker + solution: + maxVol: 50 - type: reagent id: TestReagentA diff --git a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs index e720387425..1cec5d0d22 100644 --- a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs @@ -20,11 +20,10 @@ namespace Content.IntegrationTests.Tests.Chemistry - type: entity id: TestSolutionContainer components: - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - canMix: true"; + - type: Solution + id: beaker + solution: + maxVol: 120"; private static string[] _reactions = GameDataScrounger.PrototypesOfKind(); diff --git a/Content.IntegrationTests/Tests/Fluids/AbsorbentTest.cs b/Content.IntegrationTests/Tests/Fluids/AbsorbentTest.cs index 3d9ff61a2d..93289254fd 100644 --- a/Content.IntegrationTests/Tests/Fluids/AbsorbentTest.cs +++ b/Content.IntegrationTests/Tests/Fluids/AbsorbentTest.cs @@ -35,19 +35,19 @@ public sealed class AbsorbentTest : GameTest components: - type: Absorbent useAbsorberSolution: true - - type: SolutionContainerManager - solutions: - absorbed: - maxVol: 100 + - type: Solution + id: absorbed + solution: + maxVol: 100 - type: entity name: {RefillableDummyId} id: {RefillableDummyId} components: - - type: SolutionContainerManager - solutions: - refillable: - maxVol: 200 + - type: Solution + id: refillable + solution: + maxVol: 200 - type: RefillableSolution solution: refillable @@ -55,10 +55,10 @@ public sealed class AbsorbentTest : GameTest name: {SmallRefillableDummyId} id: {SmallRefillableDummyId} components: - - type: SolutionContainerManager - solutions: - refillable: - maxVol: 20 + - type: Solution + id: refillable + solution: + maxVol: 20 - type: RefillableSolution solution: refillable "; diff --git a/Content.Server/Administration/Commands/AddReagent.cs b/Content.Server/Administration/Commands/AddReagent.cs index 9194031009..ac341566ae 100644 --- a/Content.Server/Administration/Commands/AddReagent.cs +++ b/Content.Server/Administration/Commands/AddReagent.cs @@ -36,16 +36,17 @@ namespace Content.Server.Administration.Commands return; } - if (!_entManager.TryGetComponent(uid, out SolutionContainerManagerComponent? man)) - { - shell.WriteLine($"Entity does not have any solutions."); - return; - } - var solutionContainerSystem = _entManager.System(); - if (!solutionContainerSystem.TryGetSolution((uid.Value, man), args[1], out var solution)) + if (!solutionContainerSystem.TryGetSolution(uid.Value, args[1], out var solution)) { - var validSolutions = string.Join(", ", solutionContainerSystem.EnumerateSolutions((uid.Value, man)).Select(s => s.Name)); + var solutions = solutionContainerSystem.EnumerateSolutions(uid.Value).ToArray(); + if (!solutions.Any()) + { + shell.WriteLine("Entity does not have any solutions!"); + return; + } + + var validSolutions = string.Join(", ", solutions.Select(s => s.Name)); shell.WriteLine($"Entity does not have a \"{args[1]}\" solution. Valid solutions are:\n{validSolutions}"); return; } diff --git a/Content.Server/Administration/Commands/SetSolutionCapacity.cs b/Content.Server/Administration/Commands/SetSolutionCapacity.cs index 0c529d7b5b..ff387ecd4e 100644 --- a/Content.Server/Administration/Commands/SetSolutionCapacity.cs +++ b/Content.Server/Administration/Commands/SetSolutionCapacity.cs @@ -24,22 +24,23 @@ namespace Content.Server.Administration.Commands return; } - if (!NetEntity.TryParse(args[0], out var uidNet)) + if (!NetEntity.TryParse(args[0], out var uidNet) || !_entManager.TryGetEntity(uidNet, out var uid)) { shell.WriteLine($"Invalid entity id."); return; } - if (!_entManager.TryGetEntity(uidNet, out var uid) || !_entManager.TryGetComponent(uid, out SolutionContainerManagerComponent? man)) - { - shell.WriteLine($"Entity does not have any solutions."); - return; - } - var solutionContainerSystem = _entManager.System(); - if (!solutionContainerSystem.TryGetSolution((uid.Value, man), args[1], out var solution)) + if (!solutionContainerSystem.TryGetSolution(uid.Value, args[1], out var solution)) { - var validSolutions = string.Join(", ", solutionContainerSystem.EnumerateSolutions((uid.Value, man)).Select(s => s.Name)); + var solutions = solutionContainerSystem.EnumerateSolutions(uid.Value).ToArray(); + if (!solutions.Any()) + { + shell.WriteLine("Entity does not have any solutions!"); + return; + } + + var validSolutions = string.Join(", ", solutions.Select(s => s.Name)); shell.WriteLine($"Entity does not have a \"{args[1]}\" solution. Valid solutions are:\n{validSolutions}"); return; } diff --git a/Content.Server/Administration/Commands/SetSolutionTemperature.cs b/Content.Server/Administration/Commands/SetSolutionTemperature.cs index 85911f168a..0049b09f37 100644 --- a/Content.Server/Administration/Commands/SetSolutionTemperature.cs +++ b/Content.Server/Administration/Commands/SetSolutionTemperature.cs @@ -29,16 +29,17 @@ namespace Content.Server.Administration.Commands return; } - if (!_entManager.TryGetComponent(uid, out SolutionContainerManagerComponent? man)) - { - shell.WriteLine($"Entity does not have any solutions."); - return; - } - var solutionContainerSystem = _entManager.System(); - if (!solutionContainerSystem.TryGetSolution((uid.Value, man), args[1], out var solution)) + if (!solutionContainerSystem.TryGetSolution(uid.Value, args[1], out var solution)) { - var validSolutions = string.Join(", ", solutionContainerSystem.EnumerateSolutions((uid.Value, man)).Select(s => s.Name)); + var solutions = solutionContainerSystem.EnumerateSolutions(uid.Value).ToArray(); + if (!solutions.Any()) + { + shell.WriteLine("Entity does not have any solutions!"); + return; + } + + var validSolutions = string.Join(", ", solutions.Select(s => s.Name)); shell.WriteLine($"Entity does not have a \"{args[1]}\" solution. Valid solutions are:\n{validSolutions}"); return; } diff --git a/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs b/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs index 54b6c092e9..24fd603bec 100644 --- a/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs +++ b/Content.Server/Administration/Commands/SetSolutionThermalEnergy.cs @@ -29,16 +29,17 @@ namespace Content.Server.Administration.Commands return; } - if (!_entManager.TryGetComponent(uid, out SolutionContainerManagerComponent? man)) - { - shell.WriteLine($"Entity does not have any solutions."); - return; - } - var solutionContainerSystem = _entManager.System(); - if (!solutionContainerSystem.TryGetSolution((uid.Value, man), args[1], out var solutionEnt, out var solution)) + if (!solutionContainerSystem.TryGetSolution(uid.Value, args[1], out var solutionEnt, out var solution)) { - var validSolutions = string.Join(", ", solutionContainerSystem.EnumerateSolutions((uid.Value, man)).Select(s => s.Name)); + var solutions = solutionContainerSystem.EnumerateSolutions(uid.Value).ToArray(); + if (!solutions.Any()) + { + shell.WriteLine("Entity does not have any solutions!"); + return; + } + + var validSolutions = string.Join(", ", solutions.Select(s => s.Name)); shell.WriteLine($"Entity does not have a \"{args[1]}\" solution. Valid solutions are:\n{validSolutions}"); return; } diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 4a2ebbb7c6..638d1821c1 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -35,6 +35,7 @@ using Robust.Shared.Timing; using Robust.Shared.Toolshed; using Robust.Shared.Utility; using System.Linq; +using Content.Shared.Chemistry.Components; using static Content.Shared.Configurable.ConfigurationComponent; namespace Content.Server.Administration.Systems @@ -73,7 +74,10 @@ namespace Content.Server.Administration.Systems { SubscribeLocalEvent>(GetVerbs); SubscribeLocalEvent(Reset); - SubscribeLocalEvent(OnSolutionChanged); + + // TODO: This is genuinely terrible, solutions are already networked and we shouldn't need to update the BUI like this. + SubscribeLocalEvent((x, ref _) => OnSolutionChanged(x.Owner)); + SubscribeLocalEvent((x, ref _) => OnSolutionChanged(x.Owner)); } private void GetVerbs(GetVerbsEvent ev) @@ -445,7 +449,7 @@ namespace Content.Server.Administration.Systems } // Control mob verb - if ((_toolshed.ActivePermissionController?.CheckInvokable(new CommandSpec(_toolshed.DefaultEnvironment.GetCommand("mind"), "control"), player, out _) ?? false) && + if (_toolshed.ActivePermissionController?.CheckInvokable(new CommandSpec(_toolshed.DefaultEnvironment.GetCommand("mind"), "control"), player, out _) ?? false && args.User != args.Target) { Verb verb = new() @@ -573,7 +577,7 @@ namespace Content.Server.Administration.Systems // Add verb to open Solution Editor if (_groupController.CanCommand(player, "addreagent") && - HasComp(args.Target)) + (HasComp(args.Target) || HasComp(args.Target))) { Verb verb = new() { @@ -588,13 +592,13 @@ namespace Content.Server.Administration.Systems } #region SolutionsEui - private void OnSolutionChanged(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionChanged(EntityUid uid) { foreach (var list in _openSolutionUis.Values) { foreach (var eui in list) { - if (eui.Target == entity.Owner) + if (eui.Target == uid) eui.StateDirty(); } } diff --git a/Content.Server/Administration/Toolshed/SolutionCommand.cs b/Content.Server/Administration/Toolshed/SolutionCommand.cs index d184afcb4d..079deb62c5 100644 --- a/Content.Server/Administration/Toolshed/SolutionCommand.cs +++ b/Content.Server/Administration/Toolshed/SolutionCommand.cs @@ -1,12 +1,9 @@ -using Content.Server.Chemistry.Containers.EntitySystems; -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Toolshed; -using Robust.Shared.Toolshed.Syntax; -using Robust.Shared.Toolshed.TypeParsers; using System.Linq; using Robust.Shared.Prototypes; diff --git a/Content.Server/Administration/UI/EditSolutionsEui.cs b/Content.Server/Administration/UI/EditSolutionsEui.cs index 6bee7d19fc..4ecc315f9e 100644 --- a/Content.Server/Administration/UI/EditSolutionsEui.cs +++ b/Content.Server/Administration/UI/EditSolutionsEui.cs @@ -1,5 +1,4 @@ using Content.Server.Administration.Systems; -using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.EUI; using Content.Shared.Administration; using Content.Shared.Chemistry.Components.SolutionManager; @@ -42,21 +41,15 @@ namespace Content.Server.Administration.UI public override EuiStateBase GetNewState() { - List<(string Name, NetEntity Solution)>? netSolutions; + List<(string Name, NetEntity Solution)>? netSolutions = new(); - if (_entityManager.TryGetComponent(Target, out SolutionContainerManagerComponent? container) && container.Containers.Count > 0) + foreach (var (name, solution) in _solutionContainerSystem.EnumerateSolutions(Target)) { - netSolutions = new(); - foreach (var (name, solution) in _solutionContainerSystem.EnumerateSolutions((Target, container))) - { - if (name is null || !_entityManager.TryGetNetEntity(solution, out var netSolution)) - continue; + if (name is null || !_entityManager.TryGetNetEntity(solution, out var netSolution)) + continue; - netSolutions.Add((name, netSolution.Value)); - } + netSolutions.Add((name, netSolution.Value)); } - else - netSolutions = null; return new EditSolutionsEuiState(_entityManager.GetNetEntity(Target), netSolutions, _gameTiming.CurTick); } diff --git a/Content.Server/Body/Systems/BloodstreamSystem.cs b/Content.Server/Body/Systems/BloodstreamSystem.cs index ff6ee5ceec..8318e41045 100644 --- a/Content.Server/Body/Systems/BloodstreamSystem.cs +++ b/Content.Server/Body/Systems/BloodstreamSystem.cs @@ -11,38 +11,9 @@ public sealed class BloodstreamSystem : SharedBloodstreamSystem { base.Initialize(); - SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnDnaGenerated); } - // not sure if we can move this to shared or not - // it would certainly help if SolutionContainer was documented - // but since we usually don't add the component dynamically to entities we can keep this unpredicted for now - private void OnComponentInit(Entity entity, ref ComponentInit args) - { - if (!SolutionContainer.EnsureSolution(entity.Owner, - entity.Comp.BloodSolutionName, - out var bloodSolution) || - !SolutionContainer.EnsureSolution(entity.Owner, - entity.Comp.BloodTemporarySolutionName, - out var tempSolution) || - !SolutionContainer.EnsureSolution(entity.Owner, - entity.Comp.MetabolitesSolutionName, - out var metabolitesSolution)) - return; - - bloodSolution.MaxVolume = entity.Comp.BloodReferenceSolution.Volume * entity.Comp.MaxVolumeModifier; - metabolitesSolution.MaxVolume = bloodSolution.MaxVolume; - tempSolution.MaxVolume = entity.Comp.BleedPuddleThreshold * 4; // give some leeway, for chemstream as well - entity.Comp.BloodReferenceSolution.SetReagentData(GetEntityBloodData((entity, entity.Comp))); - - // Fill blood solution with BLOOD - // The DNA string might not be initialized yet, but the reagent data gets updated in the GenerateDnaEvent subscription - var solution = entity.Comp.BloodReferenceSolution.Clone(); - solution.ScaleTo(entity.Comp.BloodReferenceSolution.Volume - bloodSolution.Volume); - bloodSolution.AddSolution(solution, PrototypeManager); - } - // forensics is not predicted yet private void OnDnaGenerated(Entity entity, ref GenerateDnaEvent args) { diff --git a/Content.Server/Botany/Systems/BotanySystem.Produce.cs b/Content.Server/Botany/Systems/BotanySystem.Produce.cs index bba3c48b86..aa7d6412e5 100644 --- a/Content.Server/Botany/Systems/BotanySystem.Produce.cs +++ b/Content.Server/Botany/Systems/BotanySystem.Produce.cs @@ -20,21 +20,17 @@ public sealed partial class BotanySystem _entityEffects.TryApplyEffect(uid, mutation.Effect); } - if (!_solutionContainerSystem.EnsureSolution(uid, - produce.SolutionName, - out var solutionContainer, - FixedPoint2.Zero)) - return; + _solutionContainerSystem.EnsureSolution(uid, produce.SolutionName, out var solution); - solutionContainer.RemoveAllSolution(); + solution.Comp.Solution.RemoveAllSolution(); foreach (var (chem, quantity) in seed.Chemicals) { var amount = quantity.Min; if (quantity.PotencyDivisor > 0 && seed.Potency > 0) amount += seed.Potency / quantity.PotencyDivisor; amount = FixedPoint2.Clamp(amount, quantity.Min, quantity.Max); - solutionContainer.MaxVolume += amount; - solutionContainer.AddReagent(chem, amount); + solution.Comp.Solution.MaxVolume += amount; + solution.Comp.Solution.AddReagent(chem, amount); } } diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index bbf8176035..97ba858819 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -130,14 +130,11 @@ public sealed class PricingSystem : EntitySystem args.Price += entity.Comp.RandomPrice ?? 0; } - private double GetSolutionPrice(Entity entity) + private double GetSolutionPrice(EntityUid entity) { - if (Comp(entity).EntityLifeStage < EntityLifeStage.MapInitialized) - return GetSolutionPrice(entity.Comp); - var price = 0.0; - foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((entity.Owner, entity.Comp))) + foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions(entity)) { var solution = soln.Comp.Solution; foreach (var (reagent, quantity) in solution.Contents) @@ -153,25 +150,6 @@ public sealed class PricingSystem : EntitySystem return price; } - private double GetSolutionPrice(SolutionContainerManagerComponent component) - { - var price = 0.0; - - foreach (var (_, prototype) in _solutionContainerSystem.EnumerateSolutions(component)) - { - foreach (var (reagent, quantity) in prototype.Contents) - { - if (!_prototypeManager.TryIndex(reagent.Prototype, out var reagentProto)) - continue; - - // TODO check ReagentData for price information? - price += (float) quantity * reagentProto.PricePerUnit; - } - } - - return price; - } - private double GetMaterialPrice(PhysicalCompositionComponent component) { double price = 0; @@ -319,22 +297,43 @@ public sealed class PricingSystem : EntitySystem { var price = 0.0; - if (TryComp(uid, out var solComp)) + var meta = MetaData(uid); + if (meta.EntityLifeStage < EntityLifeStage.MapInitialized) + return GetSolutionsPrice(meta.EntityPrototype); + + foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions(uid)) { - price += GetSolutionPrice((uid, solComp)); + var solution = soln.Comp.Solution; + foreach (var (reagent, quantity) in solution.Contents) + { + if (!_prototypeManager.TryIndex(reagent.Prototype, out var reagentProto)) + continue; + + // TODO check ReagentData for price information? + price += (float) quantity * reagentProto.PricePerUnit; + } } return price; } - private double GetSolutionsPrice(EntityPrototype prototype) + private double GetSolutionsPrice(EntityPrototype? prototype) { var price = 0.0; - if (prototype.Components.TryGetValue(Factory.GetComponentName(), out var solManager)) + if (prototype == null) + return price; + + foreach (var (_, solution) in _solutionContainerSystem.EnumerateSolutions(prototype)) { - var solComp = (SolutionContainerManagerComponent) solManager.Component; - price += GetSolutionPrice(solComp); + foreach (var (reagent, quantity) in solution.Contents) + { + if (!_prototypeManager.TryIndex(reagent.Prototype, out var reagentProto)) + continue; + + // TODO check ReagentData for price information? + price += (float) quantity * reagentProto.PricePerUnit; + } } return price; diff --git a/Content.Server/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs b/Content.Server/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs deleted file mode 100644 index 3d99db1129..0000000000 --- a/Content.Server/Chemistry/Containers/EntitySystems/SolutionContainerSystem.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.Components.SolutionManager; -using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.FixedPoint; -using Robust.Shared.Containers; -using Robust.Shared.Map; -using Robust.Shared.Utility; -using System.Numerics; - -namespace Content.Server.Chemistry.Containers.EntitySystems; - -[Obsolete("This is being depreciated. Use SharedSolutionContainerSystem instead!")] -public sealed partial class SolutionContainerSystem : SharedSolutionContainerSystem -{ - [Obsolete("This is being depreciated. Use the ensure methods in SharedSolutionContainerSystem instead!")] - public Solution EnsureSolution(Entity entity, string name) - => EnsureSolution(entity, name, out _); - - [Obsolete("This is being depreciated. Use the ensure methods in SharedSolutionContainerSystem instead!")] - public Solution EnsureSolution(Entity entity, string name, out bool existed) - => EnsureSolution(entity, name, FixedPoint2.Zero, out existed); - - [Obsolete("This is being depreciated. Use the ensure methods in SharedSolutionContainerSystem instead!")] - public Solution EnsureSolution(Entity entity, string name, FixedPoint2 maxVol, out bool existed) - => EnsureSolution(entity, name, maxVol, null, out existed); - - [Obsolete("This is being depreciated. Use the ensure methods in SharedSolutionContainerSystem instead!")] - public Solution EnsureSolution(Entity entity, string name, FixedPoint2 maxVol, Solution? prototype, out bool existed) - { - EnsureSolution(entity, name, maxVol, prototype, out existed, out var solution); - return solution!;//solution is only ever null on the client, so we can suppress this - } - - [Obsolete("This is being depreciated. Use the ensure methods in SharedSolutionContainerSystem instead!")] - public Entity EnsureSolutionEntity( - Entity entity, - string name, - FixedPoint2 maxVol, - Solution? prototype, - out bool existed) - { - EnsureSolutionEntity(entity, name, out existed, out var solEnt, maxVol, prototype); - return solEnt!.Value;//solEnt is only ever null on the client, so we can suppress this - } -} diff --git a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs index e4dc4fb8f9..8d8971fecc 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs @@ -47,7 +47,7 @@ namespace Content.Server.Chemistry.EntitySystems base.Initialize(); SubscribeLocalEvent(SubscribeUpdateUiState); - SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); SubscribeLocalEvent(SubscribeUpdateUiState); SubscribeLocalEvent(SubscribeUpdateUiState); // Subscribing to DragDropTargetEvent is a quick fix to ensure the UI updates when fluids are dragged and dropped into the ChemMaster, since Shared.Fluids.EntitySystems.SolutionDumpingSystem.cs bypasses UpdateChemicals(). @@ -235,22 +235,17 @@ namespace Content.Server.Chemistry.EntitySystems _storageSystem.Insert(container, item, out _, user: user, storage); _labelSystem.Label(item, message.Label); - _solutionContainerSystem.EnsureSolutionEntity(item, - SharedChemMaster.PillSolutionName, - out var itemSolution, - message.Dosage); - if (!itemSolution.HasValue) - return; + _solutionContainerSystem.EnsureSolution(item, SharedChemMaster.PillSolutionName, out var itemSolution); + itemSolution.Comp.Solution.MaxVolume = message.Dosage; - _solutionContainerSystem.TryAddSolution(itemSolution.Value, withdrawal.SplitSolution(message.Dosage)); + _solutionContainerSystem.TryAddSolution(itemSolution, withdrawal.SplitSolution(message.Dosage)); var pill = EnsureComp(item); pill.PillType = chemMaster.Comp.PillType; Dirty(item, pill); // Log pill creation by a user - _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(user):user} printed {ToPrettyString(item):pill} {SharedSolutionContainerSystem.ToPrettyString(itemSolution.Value.Comp.Solution)}"); + _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(user):user} printed {ToPrettyString(item):pill} {SharedSolutionContainerSystem.ToPrettyString(itemSolution.Comp.Solution)}"); } UpdateUiState(chemMaster); diff --git a/Content.Server/Chemistry/EntitySystems/DeleteOnSolutionEmptySystem.cs b/Content.Server/Chemistry/EntitySystems/DeleteOnSolutionEmptySystem.cs index d4e03b0967..16707b26ea 100644 --- a/Content.Server/Chemistry/EntitySystems/DeleteOnSolutionEmptySystem.cs +++ b/Content.Server/Chemistry/EntitySystems/DeleteOnSolutionEmptySystem.cs @@ -12,7 +12,7 @@ namespace Content.Server.Chemistry.EntitySystems.DeleteOnSolutionEmptySystem { base.Initialize(); SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); } public void OnStartup(Entity entity, ref ComponentStartup args) @@ -20,19 +20,23 @@ namespace Content.Server.Chemistry.EntitySystems.DeleteOnSolutionEmptySystem CheckSolutions(entity); } - public void OnSolutionChange(Entity entity, ref SolutionContainerChangedEvent args) + public void OnSolutionChange(Entity entity, ref SolutionChangedEvent args) { - CheckSolutions(entity); + var solution = args.Solution.Comp.Solution; + if (args.Solution.Comp.Id != entity.Comp.Solution) + return; + + if (solution.Volume <= 0) + QueueDel(entity); } public void CheckSolutions(Entity entity) { - if (!TryComp(entity, out SolutionContainerManagerComponent? solutions)) + if (!_solutionContainerSystem.TryGetSolution(entity.Owner, entity.Comp.Solution, out _, out var solution)) return; - if (_solutionContainerSystem.TryGetSolution((entity.Owner, solutions), entity.Comp.Solution, out _, out var solution)) - if (solution.Volume <= 0) - QueueDel(entity); + if (solution.Volume <= 0) + QueueDel(entity); } } } diff --git a/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs b/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs index 2d751ba441..f968851c4f 100644 --- a/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ReagentDispenserSystem.cs @@ -1,6 +1,5 @@ using System.Linq; using Content.Server.Chemistry.Components; -using Content.Server.Chemistry.Containers.EntitySystems; using Content.Shared.Chemistry; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Containers.ItemSlots; @@ -40,7 +39,7 @@ namespace Content.Server.Chemistry.EntitySystems base.Initialize(); SubscribeLocalEvent(SubscribeUpdateUiState); - SubscribeLocalEvent(SubscribeUpdateUiState); + SubscribeLocalEvent(SubscribeUpdateUiState); SubscribeLocalEvent(SubscribeUpdateUiState, after: [typeof(SharedStorageSystem)]); SubscribeLocalEvent(SubscribeUpdateUiState, after: [typeof(SharedStorageSystem)]); SubscribeLocalEvent(SubscribeUpdateUiState); diff --git a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs new file mode 100644 index 0000000000..62f924b5ad --- /dev/null +++ b/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.Chemistry.EntitySystems; + +namespace Content.Server.Chemistry.EntitySystems; + +public sealed class SolutionContainerSystem : SharedSolutionContainerSystem; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs index 4227af577f..e2067bdc2c 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs @@ -81,13 +81,10 @@ public sealed class SolutionHeaterSystem : EntitySystem var query = EntityQueryEnumerator(); while (query.MoveNext(out _, out _, out var heater, out var placer)) { + var energy = heater.HeatPerSecond * frameTime; foreach (var heatingEntity in placer.PlacedEntities) { - if (!TryComp(heatingEntity, out var container)) - continue; - - var energy = heater.HeatPerSecond * frameTime; - foreach (var (_, soln) in _solutionContainer.EnumerateSolutions((heatingEntity, container))) + foreach (var (_, soln) in _solutionContainer.EnumerateSolutions(heatingEntity)) { _solutionContainer.AddThermalEnergy(soln, energy); } diff --git a/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs index 62dd2d3a75..84f96e6ba7 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionRandomFillSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Random; using Content.Shared.Random.Helpers; +using Content.Shared.Storage.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -37,8 +38,10 @@ public sealed class SolutionRandomFillSystem : EntitySystem return; } - _solutionsSystem.EnsureSolutionEntity(entity.Owner, entity.Comp.Solution, out var target , pick.quantity); - if(target.HasValue) - _solutionsSystem.TryAddReagent(target.Value, reagent, quantity); + _solutionsSystem.EnsureSolution(entity.Owner, entity.Comp.Solution, out var target); + if (target.Comp.Solution.AvailableVolume < quantity) + Log.Error($"A random solution fill {entity.Comp.WeightedRandomId} tried to put {pick.quantity} of {pick.reagent} into {ToPrettyString(target)} but there was not enough space!"); + + _solutionsSystem.TryAddReagent(target, reagent, quantity); } } diff --git a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs index d5b220c3e8..45bb84f23f 100644 --- a/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/TransformableContainerSystem.cs @@ -18,7 +18,7 @@ public sealed class TransformableContainerSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); SubscribeLocalEvent(OnRefreshNameModifiers); } @@ -31,7 +31,7 @@ public sealed class TransformableContainerSystem : EntitySystem } } - private void OnSolutionChange(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionChange(Entity entity, ref SolutionChangedEvent args) { if (!_solutionsSystem.TryGetFitsInDispenser(entity.Owner, out _, out var solution)) return; diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index a6725856ec..b6b3433bf5 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -39,9 +39,7 @@ namespace Content.Server.Chemistry.EntitySystems private void HandleCollide(Entity entity, ref StartCollideEvent args) { - if (!TryComp(entity.Owner, out SolutionContainerManagerComponent? contents)) return; - - foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((entity.Owner, contents))) + foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions(entity.Owner)) { var solution = soln.Comp.Solution; _reactive.DoEntityReaction(args.OtherEntity, solution, ReactionMethod.Touch); @@ -102,7 +100,8 @@ namespace Content.Server.Chemistry.EntitySystems base.Update(frameTime); // Enumerate over all VaporComponents - var query = EntityQueryEnumerator(); + // TODO: Vapor should just use SolutionComponent and not be capable of having multiple solutions. + var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var vaporComp, out var container, out var xform)) { // Return early if we're not active diff --git a/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs index ad34f05edd..d261b3cb79 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs @@ -30,7 +30,8 @@ public sealed partial class SpillBehavior : IThresholdBehavior var coordinates = system.EntityManager.GetComponent(owner).Coordinates; // Spill the solution that was drained/split - if (solutionContainer.TryGetSolution(owner, Solution, out _, out var solution)) + // TODO: ??? Top 10 reasons for solution entity prototypes right here bruh. + if (Solution != null && solutionContainer.TryGetSolution(owner, Solution, out _, out var solution)) puddleSystem.TrySplashSpillAt(owner, coordinates, solution, out _, false, cause); else puddleSystem.TrySplashSpillAt(owner, coordinates, out _, out _, false, cause); diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs index aca8c5383d..5e5ca85673 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs @@ -294,20 +294,13 @@ public sealed partial class PuddleSystem : SharedPuddleSystem Solution addedSolution, bool sound = true, bool checkForOverflow = true, - PuddleComponent? puddleComponent = null, - SolutionContainerManagerComponent? sol = null) + PuddleComponent? puddleComponent = null) { - if (!Resolve(puddleUid, ref puddleComponent, ref sol)) + if (!Resolve(puddleUid, ref puddleComponent)) return false; - _solutionContainerSystem.EnsureAllSolutions((puddleUid, sol)); - - if (addedSolution.Volume == 0 || - !_solutionContainerSystem.ResolveSolution(puddleUid, puddleComponent.SolutionName, - ref puddleComponent.Solution)) - { + if (addedSolution.Volume == 0 || !_solutionContainerSystem.ResolveSolution(puddleUid, puddleComponent.SolutionName, ref puddleComponent.Solution)) return false; - } _solutionContainerSystem.AddSolution(puddleComponent.Solution.Value, addedSolution); diff --git a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs index c787132504..e8e2d44988 100644 --- a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs +++ b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs @@ -204,7 +204,7 @@ public sealed class SmokeSystem : EntitySystem private void OnReactionAttempt(Entity entity, ref SolutionRelayEvent args) { - if (args.Name == SmokeComponent.SolutionName) + if (args.Solution.Comp.Id == SmokeComponent.SolutionName) OnReactionAttempt(entity, ref args.Event); } diff --git a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs index b75c0ae32a..4c90921e74 100644 --- a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs @@ -13,9 +13,7 @@ using Content.Shared.Tag; using Robust.Shared.Audio.Systems; using Robust.Server.GameObjects; using Robust.Shared.Audio; -using Robust.Shared.Player; using Robust.Shared.Timing; -using Content.Server.Chemistry.Containers.EntitySystems; using Robust.Shared.Prototypes; // todo: remove this stinky LINQy diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index 4c28265fed..21f09c3fe5 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -47,11 +47,11 @@ namespace Content.Server.Forensics SubscribeLocalEvent(OnAfterInteract, after: new[] { typeof(AbsorbentSystem) }); SubscribeLocalEvent(OnCleanForensicsDoAfter); SubscribeLocalEvent(OnTransferDnaEvent); - SubscribeLocalEvent(OnSolutionChanged); + SubscribeLocalEvent(OnSolutionChanged); SubscribeLocalEvent>(OnUtilityVerb); } - private void OnSolutionChanged(Entity ent, ref SolutionContainerChangedEvent ev) + private void OnSolutionChanged(Entity ent, ref SolutionChangedEvent ev) { var soln = GetSolutionsDNA(ev.Solution); if (soln.Count > 0) @@ -152,12 +152,9 @@ namespace Content.Server.Forensics public List GetSolutionsDNA(EntityUid uid) { List list = new(); - if (TryComp(uid, out var comp)) + foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions(uid)) { - foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((uid, comp))) - { - list.AddRange(GetSolutionsDNA(soln.Comp.Solution)); - } + list.AddRange(GetSolutionsDNA(soln.Comp.Solution)); } return list; } diff --git a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs index d1df5177d1..3a4a93e732 100644 --- a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs @@ -78,7 +78,7 @@ namespace Content.Server.Kitchen.EntitySystems SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); SubscribeLocalEvent(OnContentUpdate); SubscribeLocalEvent(OnContentUpdate); SubscribeLocalEvent(OnInteractUsing, after: new[] { typeof(AnchorableSystem) }); @@ -181,9 +181,7 @@ namespace Content.Server.Kitchen.EntitySystems if (TryComp(entity, out var tempComp)) _temperature.ChangeHeat(entity, heatToAdd * component.ObjectHeatMultiplier, false, tempComp); - if (!TryComp(entity, out var solutions)) - continue; - foreach (var (_, soln) in _solutionContainer.EnumerateSolutions((entity, solutions))) + foreach (var (_, soln) in _solutionContainer.EnumerateSolutions(entity)) { var solution = soln.Comp.Solution; if (solution.Temperature > component.TemperatureUpperThreshold) @@ -319,7 +317,7 @@ namespace Content.Server.Kitchen.EntitySystems args.Handled = true; } - private void OnSolutionChange(Entity ent, ref SolutionContainerChangedEvent args) + private void OnSolutionChange(Entity ent, ref SolutionChangedEvent args) { UpdateUserInterfaceState(ent, ent.Comp); } diff --git a/Content.Server/Materials/MaterialReclaimerSystem.cs b/Content.Server/Materials/MaterialReclaimerSystem.cs index c00c938865..7e3d998f55 100644 --- a/Content.Server/Materials/MaterialReclaimerSystem.cs +++ b/Content.Server/Materials/MaterialReclaimerSystem.cs @@ -69,20 +69,19 @@ public sealed class MaterialReclaimerSystem : SharedMaterialReclaimerSystem private void OnInteractUsing(Entity entity, ref InteractUsingEvent args) { - if (args.Handled) + if (args.Handled || entity.Comp.SolutionContainerId == null) return; // if we're trying to get a solution out of the reclaimer, don't destroy it if (_solutionContainer.TryGetSolution(entity.Owner, entity.Comp.SolutionContainerId, out _, out var outputSolution) && outputSolution.Contents.Any()) { - if (TryComp(args.Used, out var managerComponent) && - _solutionContainer.EnumerateSolutions((args.Used, managerComponent)).Any(s => s.Solution.Comp.Solution.AvailableVolume > 0)) + if (_solutionContainer.EnumerateSolutions(args.Used).Any(s => s.Solution.Comp.Solution.AvailableVolume > 0)) { if (_openable.IsClosed(args.Used)) return; if (TryComp(args.Used, out var transfer) && - transfer.CanReceive) + transfer.CanSend) return; } } @@ -250,7 +249,7 @@ public sealed class MaterialReclaimerSystem : SharedMaterialReclaimerSystem TransformComponent? xform = null, PhysicalCompositionComponent? composition = null) { - if (!Resolve(reclaimer, ref reclaimerComponent, ref xform)) + if (!Resolve(reclaimer, ref reclaimerComponent, ref xform) || reclaimerComponent.SolutionContainerId == null) return; efficiency *= reclaimerComponent.Efficiency; diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index 2a13d07797..470e61fb87 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -34,7 +34,7 @@ public sealed class SliceableFoodSystem : EntitySystem SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnSlicedoAfter); - SubscribeLocalEvent(OnComponentStartup); + SubscribeLocalEvent(OnMapInit); } private void OnInteractUsing(Entity entity, ref InteractUsingEvent args) @@ -156,10 +156,9 @@ public sealed class SliceableFoodSystem : EntitySystem _solutionContainer.TryAddSolution(itsSoln.Value, lostSolutionPart); } - private void OnComponentStartup(Entity entity, ref ComponentStartup args) + private void OnMapInit(Entity entity, ref MapInitEvent args) { - // TODO: When Food Component is fully kill delete this awful method - // This exists just to make tests fail I guess, awesome! + // This exists just to make tests fail! // If you're here because your test just failed, make sure that: // Your food has the edible component // The solution listed in the edible component exists diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs index 9a1d64b2eb..006cbcc42c 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.SmokingPipe.cs @@ -81,11 +81,10 @@ namespace Content.Server.Nutrition.EntitySystems EntityUid contents = entity.Comp.BowlSlot.Item.Value; - if (!TryComp(contents, out var reagents) || - !_solutionContainerSystem.TryGetSolution(smokable.Owner, smokable.Comp.Solution, out var pipeSolution, out _)) + if (!_solutionContainerSystem.TryGetSolution(smokable.Owner, smokable.Comp.Solution, out var pipeSolution, out _)) return false; - foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((contents, reagents))) + foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions(contents)) { var reagentSolution = soln.Comp.Solution; _solutionContainerSystem.TryAddSolution(pipeSolution.Value, reagentSolution); diff --git a/Content.Server/Nutrition/EntitySystems/TrashOnSolutionEmptySystem.cs b/Content.Server/Nutrition/EntitySystems/TrashOnSolutionEmptySystem.cs index 08ff0c1d41..a74376c608 100644 --- a/Content.Server/Nutrition/EntitySystems/TrashOnSolutionEmptySystem.cs +++ b/Content.Server/Nutrition/EntitySystems/TrashOnSolutionEmptySystem.cs @@ -18,7 +18,7 @@ namespace Content.Server.Nutrition.EntitySystems { base.Initialize(); SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); } public void OnMapInit(Entity entity, ref MapInitEvent args) @@ -26,16 +26,13 @@ namespace Content.Server.Nutrition.EntitySystems CheckSolutions(entity); } - public void OnSolutionChange(Entity entity, ref SolutionContainerChangedEvent args) + public void OnSolutionChange(Entity entity, ref SolutionChangedEvent args) { CheckSolutions(entity); } public void CheckSolutions(Entity entity) { - if (!HasComp(entity)) - return; - if (_solutionContainerSystem.TryGetSolution(entity.Owner, entity.Comp.Solution, out _, out var solution)) UpdateTags(entity, solution); } diff --git a/Content.Server/Power/EntitySystems/RiggableSystem.cs b/Content.Server/Power/EntitySystems/RiggableSystem.cs index 0bff0f4ba8..fd65afb370 100644 --- a/Content.Server/Power/EntitySystems/RiggableSystem.cs +++ b/Content.Server/Power/EntitySystems/RiggableSystem.cs @@ -25,7 +25,7 @@ public sealed class RiggableSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(OnRejuvenate); SubscribeLocalEvent(OnMicrowaved); - SubscribeLocalEvent(OnSolutionChanged); + SubscribeLocalEvent(OnSolutionChanged); SubscribeLocalEvent(OnChargeChanged); } @@ -47,13 +47,14 @@ public sealed class RiggableSystem : EntitySystem } } - private void OnSolutionChanged(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionChanged(Entity entity, ref SolutionChangedEvent args) { - if (args.SolutionId != entity.Comp.Solution) + if (args.Solution.Comp.Id != entity.Comp.Solution) return; var wasRigged = entity.Comp.IsRigged; - var quantity = args.Solution.GetReagentQuantity(entity.Comp.RequiredQuantity.Reagent); + var solution = args.Solution.Comp.Solution; + var quantity = solution.GetReagentQuantity(entity.Comp.RequiredQuantity.Reagent); entity.Comp.IsRigged = quantity >= entity.Comp.RequiredQuantity.Quantity; if (entity.Comp.IsRigged && !wasRigged) diff --git a/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs b/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs index d36828eb83..1c601cec7f 100644 --- a/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs +++ b/Content.Server/Power/Generator/ChemicalFuelGeneratorAdapterComponent.cs @@ -27,7 +27,7 @@ public sealed partial class ChemicalFuelGeneratorAdapterComponent : Component public string SolutionName = "tank"; /// - /// The solution on the to use. + /// The solution to use. /// [ViewVariables] public Entity? Solution = null; diff --git a/Content.Server/Stunnable/Systems/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs index 90d2dc7588..48b2715cac 100644 --- a/Content.Server/Stunnable/Systems/StunbatonSystem.cs +++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs @@ -26,7 +26,7 @@ namespace Content.Server.Stunnable.Systems base.Initialize(); SubscribeLocalEvent(OnExamined); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); SubscribeLocalEvent(OnStaminaHitAttempt); SubscribeLocalEvent(OnChargeChanged); } @@ -75,7 +75,7 @@ namespace Content.Server.Stunnable.Systems } // https://github.com/space-wizards/space-station-14/pull/17288#discussion_r1241213341 - private void OnSolutionChange(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionChange(Entity entity, ref SolutionChangedEvent args) { // Explode if baton is activated and rigged. if (!TryComp(entity, out var riggable) || diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs index eddc8739bb..166f52b920 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Solution.cs @@ -18,7 +18,7 @@ public sealed partial class GunSystem base.InitializeSolution(); SubscribeLocalEvent(OnSolutionMapInit); - SubscribeLocalEvent(OnSolutionChanged); + SubscribeLocalEvent(OnSolutionChanged); } private void OnSolutionMapInit(Entity entity, ref MapInitEvent args) @@ -26,10 +26,10 @@ public sealed partial class GunSystem UpdateSolutionShots(entity); } - private void OnSolutionChanged(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionChanged(Entity entity, ref SolutionChangedEvent args) { - if (args.Solution.Name == entity.Comp.SolutionId) - UpdateSolutionShots(entity, args.Solution); + if (args.Solution.Comp.Id == entity.Comp.SolutionId) + UpdateSolutionShots(entity, args.Solution.Comp.Solution); } protected override void UpdateSolutionShots(Entity ent, Solution? solution = null) diff --git a/Content.Shared/Administration/EditSolutionsEuiState.cs b/Content.Shared/Administration/EditSolutionsEuiState.cs index 636a57c520..7fee516d9d 100644 --- a/Content.Shared/Administration/EditSolutionsEuiState.cs +++ b/Content.Shared/Administration/EditSolutionsEuiState.cs @@ -11,7 +11,7 @@ namespace Content.Shared.Administration public readonly List<(string, NetEntity)>? Solutions; public readonly GameTick Tick; - public EditSolutionsEuiState(NetEntity target, List<(string, NetEntity)>? solutions, GameTick tick) + public EditSolutionsEuiState(NetEntity target, List<(string, NetEntity)> solutions, GameTick tick) { Target = target; Solutions = solutions; diff --git a/Content.Shared/Body/Components/BloodstreamComponent.cs b/Content.Shared/Body/Components/BloodstreamComponent.cs index e1f60f0376..dca7d58be7 100644 --- a/Content.Shared/Body/Components/BloodstreamComponent.cs +++ b/Content.Shared/Body/Components/BloodstreamComponent.cs @@ -148,10 +148,10 @@ public sealed partial class BloodstreamComponent : Component /// Defines which reagents are considered as 'blood' and how much of it is normal. /// /// - /// Slime-people might use slime as their blood or something like that. + /// Default is human blood at 5 liters (600u) of blood. /// [DataField, AutoNetworkedField] - public Solution BloodReferenceSolution = new([new("Blood", 300)]); + public Solution BloodReferenceSolution = new([new("Blood", 600)]); /// /// Caches the blood data of an entity. diff --git a/Content.Shared/Body/Systems/LungSystem.cs b/Content.Shared/Body/Systems/LungSystem.cs index 8a7a00001a..ec11d417bb 100644 --- a/Content.Shared/Body/Systems/LungSystem.cs +++ b/Content.Shared/Body/Systems/LungSystem.cs @@ -20,7 +20,7 @@ public sealed class LungSystem : EntitySystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnGotEquipped); SubscribeLocalEvent(OnGotUnequipped); } @@ -44,13 +44,12 @@ public sealed class LungSystem : EntitySystem } } - private void OnComponentInit(Entity entity, ref ComponentInit args) + private void OnMapInit(Entity entity, ref MapInitEvent args) { - if (_solutionContainerSystem.EnsureSolution(entity.Owner, entity.Comp.SolutionName, out var solution)) - { - solution.MaxVolume = 100.0f; - solution.CanReact = false; // No dexalin lungs - } + _solutionContainerSystem.EnsureSolution(entity.Owner, entity.Comp.SolutionName, out var solution); + + solution.Comp.Solution.MaxVolume = 100.0f; + solution.Comp.Solution.CanReact = false; // No dexalin lungs } // TODO: JUST METABOLIZE GASES DIRECTLY DON'T CONVERT TO REAGENTS!!! (Needs Metabolism refactor :B) diff --git a/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs b/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs index bde65b99fe..6e8724494b 100644 --- a/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs +++ b/Content.Shared/Body/Systems/SharedBloodstreamSystem.cs @@ -110,10 +110,25 @@ public abstract class SharedBloodstreamSystem : EntitySystem } } - private void OnMapInit(Entity ent, ref MapInitEvent args) + private void OnMapInit(Entity entity, ref MapInitEvent args) { - ent.Comp.NextUpdate = _timing.CurTime + ent.Comp.AdjustedUpdateInterval; - DirtyField(ent, ent.Comp, nameof(BloodstreamComponent.NextUpdate)); + entity.Comp.NextUpdate = _timing.CurTime + entity.Comp.AdjustedUpdateInterval; + DirtyField(entity, entity.Comp, nameof(BloodstreamComponent.NextUpdate)); + + SolutionContainer.EnsureSolution(entity.Owner, entity.Comp.BloodSolutionName, out var bloodSolution); + SolutionContainer.EnsureSolution(entity.Owner, entity.Comp.BloodTemporarySolutionName, out var tempSolution); + SolutionContainer.EnsureSolution(entity.Owner, entity.Comp.MetabolitesSolutionName, out var metabolitesSolution); + + bloodSolution.Comp.Solution.MaxVolume = entity.Comp.BloodReferenceSolution.Volume * entity.Comp.MaxVolumeModifier; + metabolitesSolution.Comp.Solution.MaxVolume = bloodSolution.Comp.Solution.MaxVolume; + tempSolution.Comp.Solution.MaxVolume = entity.Comp.BleedPuddleThreshold * 4; // give some leeway, for chemstream as well + entity.Comp.BloodReferenceSolution.SetReagentData(GetEntityBloodData((entity, entity.Comp))); + + // Fill blood solution with BLOOD + // The DNA string might not be initialized yet, but the reagent data gets updated in the GenerateDnaEvent subscription + var solution = entity.Comp.BloodReferenceSolution.Clone(); + solution.ScaleTo(entity.Comp.BloodReferenceSolution.Volume - bloodSolution.Comp.Solution.Volume); + bloodSolution.Comp.Solution.AddSolution(solution, PrototypeManager); } // prevent the infamous UdderSystem debug assert, see https://github.com/space-wizards/space-station-14/pull/35314 @@ -157,8 +172,8 @@ public abstract class SharedBloodstreamSystem : EntitySystem private void OnReactionAttempt(Entity ent, ref SolutionRelayEvent args) { - if (args.Name != ent.Comp.BloodSolutionName - && args.Name != ent.Comp.BloodTemporarySolutionName) + if (args.Solution.Comp.Id != ent.Comp.BloodSolutionName + && args.Solution.Comp.Id != ent.Comp.BloodTemporarySolutionName) { return; } diff --git a/Content.Shared/Body/Systems/StomachSystem.cs b/Content.Shared/Body/Systems/StomachSystem.cs index 9adc79c6ea..16d2f54f75 100644 --- a/Content.Shared/Body/Systems/StomachSystem.cs +++ b/Content.Shared/Body/Systems/StomachSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Body.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; -using Robust.Shared.Utility; namespace Content.Shared.Body.Systems; @@ -12,33 +11,22 @@ public sealed class StomachSystem : EntitySystem public const string DefaultSolutionName = "stomach"; - public bool CanTransferSolution( - EntityUid uid, - Solution solution, - StomachComponent? stomach = null, - SolutionContainerManagerComponent? solutions = null) + public bool CanTransferSolution(Entity entity, Solution solution) { - return Resolve(uid, ref stomach, ref solutions, logMissing: false) - && _solutionContainerSystem.ResolveSolution((uid, solutions), DefaultSolutionName, ref stomach.Solution, out var stomachSolution) + return Resolve(entity, ref entity.Comp1, logMissing: false) + && _solutionContainerSystem.ResolveSolution((entity, entity.Comp2), DefaultSolutionName, ref entity.Comp1.Solution, out var stomachSolution) // TODO: For now no partial transfers. Potentially change by design && stomachSolution.CanAddSolution(solution); } - public bool TryTransferSolution( - EntityUid uid, - Solution solution, - StomachComponent? stomach = null, - SolutionContainerManagerComponent? solutions = null) + public bool TryTransferSolution(Entity entity, Solution solution) { - if (!Resolve(uid, ref stomach, ref solutions, logMissing: false) - || !_solutionContainerSystem.ResolveSolution((uid, solutions), DefaultSolutionName, ref stomach.Solution) - || !CanTransferSolution(uid, solution, stomach, solutions)) - { + if (!Resolve(entity, ref entity.Comp1, logMissing: false) + || !_solutionContainerSystem.ResolveSolution((entity, entity.Comp2), DefaultSolutionName, ref entity.Comp1.Solution) + || !CanTransferSolution(entity, solution)) return false; - } - - _solutionContainerSystem.TryAddSolution(stomach.Solution.Value, solution); + _solutionContainerSystem.TryAddSolution(entity.Comp1.Solution.Value, solution); return true; } } diff --git a/Content.Shared/Chemistry/Components/Solution.cs b/Content.Shared/Chemistry/Components/Solution.cs index bea7a0a071..129140b66c 100644 --- a/Content.Shared/Chemistry/Components/Solution.cs +++ b/Content.Shared/Chemistry/Components/Solution.cs @@ -1,6 +1,5 @@ using System.Collections; using System.Linq; -using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using JetBrains.Annotations; @@ -59,12 +58,6 @@ namespace Content.Shared.Chemistry.Components [DataField] public float Temperature { get; set; } = 293.15f; - /// - /// The name of this solution, if it is contained in some - /// - [DataField] - public string? Name; - /// /// Checks if a solution can fit into the container. /// @@ -205,7 +198,7 @@ namespace Content.Shared.Chemistry.Components DebugTools.Assert(!Contents.Any(x => x.Quantity <= FixedPoint2.Zero)); // No duplicate reagents iDs - DebugTools.Assert(Contents.Select(x => x.Reagent).ToHashSet().Count == Contents.Count); + DebugTools.Assert(Contents.Select(x => x.Reagent).ToHashSet().Count == Contents.Count, $"Solution: {this}, contained duplcate contents {Contents}"); // If it isn't flagged as dirty, check heat capacity is correct. if (!_heatCapacityDirty) diff --git a/Content.Shared/Chemistry/Components/SolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionComponent.cs index 847f8f03c9..e06919dccb 100644 --- a/Content.Shared/Chemistry/Components/SolutionComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionComponent.cs @@ -1,6 +1,7 @@ using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Materials; +using Content.Shared.Temperature.Components; using Robust.Shared.GameStates; using Robust.Shared.Serialization; @@ -8,23 +9,33 @@ namespace Content.Shared.Chemistry.Components; /// /// Holds the composition of an entity made from reagents and its reagent temperature. -/// If the entity is used to represent a collection of reagents inside of a container such as a beaker, syringe, bloodstream, food, or similar the entity is tracked by a on the container and has a tracking which container it's in. +/// If the entity is used to represent a collection of reagents inside of a container such as a beaker, syringe, bloodstream, food, or similar the entity is tracked by a on the container and has a tracking which container it's in. /// /// -/// Once reagents and materials have been merged this component should be depricated in favor of using a combination of and . May require minor reworks to both. +/// Once reagents and materials have been merged this component should be depricated in favor of using a combination of and . May require minor reworks to both. /// [RegisterComponent, NetworkedComponent] -[Access(typeof(SharedSolutionContainerSystem))] public sealed partial class SolutionComponent : Component { + public const string DefaultSolutionId = "solution"; + + /// + /// The name of this solution. This value should *never* change once the solution is initialized. + /// + [DataField] + [Access(typeof(SharedSolutionContainerSystem))] + public string Id = DefaultSolutionId; + /// /// The reagents the entity is composed of and their temperature. /// - [DataField] + [DataField, AlwaysPushInheritance] public Solution Solution = new(); } - +/// +/// We manually network the component state as it raises one less event and therefore is better performance wise. +/// [Serializable, NetSerializable] public sealed class SolutionComponentState(Solution solution) : ComponentState { diff --git a/Content.Shared/Chemistry/Components/SolutionManager/ContainedSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/ContainedSolutionComponent.cs index d648a9f00c..25c36e0f16 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/ContainedSolutionComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/ContainedSolutionComponent.cs @@ -12,6 +12,7 @@ namespace Content.Shared.Chemistry.Components.SolutionManager; /// The field should then be extracted out into this component. /// Solution entities would just become an apporpriately composed entity hanging out in the container. /// Will probably require entities in components being given a relation to associate themselves with their container. +/// TODO: Proper relations system so this can be initialized with a SolutionComponent attached to it :) /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedSolutionContainerSystem))] @@ -20,12 +21,6 @@ public sealed partial class ContainedSolutionComponent : Component /// /// The entity that the solution is contained in. /// - [DataField(required: true), AutoNetworkedField] + [DataField, AutoNetworkedField] public EntityUid Container; - - /// - /// The name/key of the container the solution is located in. - /// - [DataField(required: true), AutoNetworkedField] - public string ContainerName = default!; } diff --git a/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs index 4000a29021..26e6346c8a 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs @@ -4,11 +4,14 @@ using Robust.Shared.GameStates; namespace Content.Shared.Chemistry.Components.SolutionManager; -/// -/// A map of the solution entities contained within this entity. -/// Every solution entity this maps should have a to track its state and a to track its container. -/// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +/// +/// Exists for simple backwards compatibility. +/// On this component will transfer all its data where it can to a +/// Then it will delete itself. +/// This component will be deleted in the indeterminate future. +/// +[Obsolete] +[RegisterComponent] [Access(typeof(SharedSolutionContainerSystem))] public sealed partial class SolutionContainerManagerComponent : Component { @@ -22,7 +25,7 @@ public sealed partial class SolutionContainerManagerComponent : Component /// The names of each solution container attached to this entity. /// Actually accessing them must be done via . /// - [DataField, AutoNetworkedField] + [DataField] public HashSet Containers = new(DefaultCapacity); /// @@ -31,6 +34,6 @@ public sealed partial class SolutionContainerManagerComponent : Component /// /// Should be null after mapinit. /// - [DataField, AutoNetworkedField] - public Dictionary? Solutions = null; + [DataField] + public Dictionary? Solutions; } diff --git a/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs new file mode 100644 index 0000000000..99f7355bba --- /dev/null +++ b/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs @@ -0,0 +1,37 @@ +using Content.Shared.Chemistry.EntitySystems; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Chemistry.Components.SolutionManager; + +/// +/// Allows for an entity to have and manage multiple solutions. +/// Spawns additional solutions from their prototypes, and stores them in a container. +/// Also used in the case another component spawns a solution for this entity. +/// Every solution entity this maps should have a to track its state and a to track its container. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedSolutionContainerSystem))] +public sealed partial class SolutionManagerComponent : Component +{ + public static readonly string DefaultContainerId = "solutions"; + + /// + /// The names of the container for solutions attached to this entity. + /// + [DataField, AutoNetworkedField] + public string Container = DefaultContainerId; + + /// + /// A cache of solutions currently attached to this entity. + /// + [ViewVariables] + [Access(typeof(SharedSolutionContainerSystem), Other = AccessPermissions.None)] + public Dictionary> Solutions = new (); + + /// + /// A list of solution entities to spawn when this component starts up. + /// + [DataField("solutions", readOnly: true)] + public List SolutionEnts = new (); +} diff --git a/Content.Shared/Chemistry/Components/SolutionTransferComponent.cs b/Content.Shared/Chemistry/Components/SolutionTransferComponent.cs index 149fe3f643..639506cd4d 100644 --- a/Content.Shared/Chemistry/Components/SolutionTransferComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionTransferComponent.cs @@ -25,7 +25,7 @@ public sealed partial class SolutionTransferComponent : Component /// The maximum amount of solution that can be transferred at once from this solution. /// [DataField("maxTransferAmount"), AutoNetworkedField] - public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(100); + public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(120); /// /// Can this entity take reagent from reagent tanks? diff --git a/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs b/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs index 2bfa1c9de3..34acfee504 100644 --- a/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs @@ -17,7 +17,7 @@ public sealed class ReactiveContainerSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(OnInserted); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); } private void OnInserted(EntityUid uid, ReactiveContainerComponent comp, EntInsertedIntoContainerMessage args) @@ -34,7 +34,7 @@ public sealed class ReactiveContainerSystem : EntitySystem _reactiveSystem.DoEntityReaction(args.Entity, solution, ReactionMethod.Touch); } - private void OnSolutionChange(EntityUid uid, ReactiveContainerComponent comp, SolutionContainerChangedEvent args) + private void OnSolutionChange(EntityUid uid, ReactiveContainerComponent comp, SolutionChangedEvent args) { // The changes are already networked as part of the same game state. if (_timing.ApplyingState) @@ -42,10 +42,10 @@ public sealed class ReactiveContainerSystem : EntitySystem if (!_solutionContainerSystem.TryGetSolution(uid, comp.Solution, out _, out var solution)) return; + if (solution.Volume == 0) return; - if (!TryComp(uid, out var manager)) - return; + if (!_containerSystem.TryGetContainer(uid, comp.Container, out var container)) return; diff --git a/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs b/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs index 697605af1d..a944b9ffd9 100644 --- a/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs @@ -23,17 +23,17 @@ public sealed class RehydratableSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnSolutionChange); + SubscribeLocalEvent(OnSolutionChange); } - private void OnSolutionChange(Entity ent, ref SolutionContainerChangedEvent args) + private void OnSolutionChange(Entity ent, ref SolutionChangedEvent args) { // The changes are already networked as part of the same game state. if (_timing.ApplyingState) return; - var quantity = _solutions.GetTotalPrototypeQuantity(ent, ent.Comp.CatalystPrototype); - _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner)} was hydrated, now contains a solution of: {SharedSolutionContainerSystem.ToPrettyString(args.Solution)}."); + var quantity = _solutions.GetTotalPrototypeQuantity(ent.Owner, ent.Comp.CatalystPrototype); + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner)} was hydrated, now contains a solution of: {SharedSolutionContainerSystem.ToPrettyString(args.Solution.Comp.Solution)}."); if (quantity != FixedPoint2.Zero && quantity >= ent.Comp.CatalystMinimum) { Expand(ent); diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Capabilities.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Capabilities.cs index aa4c59e89f..6039c30c58 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Capabilities.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Capabilities.cs @@ -11,7 +11,7 @@ public abstract partial class SharedSolutionContainerSystem { #region Solution Accessors - public bool TryGetRefillableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetRefillableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -22,7 +22,7 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.Solution, out soln, out solution); } - public bool TryGetDrainableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetDrainableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -33,9 +33,9 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.Solution, out soln, out solution); } - public bool TryGetExtractableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetExtractableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { - if (!Resolve(entity, ref entity.Comp1, logMissing: false)) + if (!Resolve(entity, ref entity.Comp1, logMissing: false) || entity.Comp1.GrindableSolutionName == null) { (soln, solution) = (default!, null); return false; @@ -44,7 +44,7 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.GrindableSolutionName, out soln, out solution); } - public bool TryGetDumpableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetDumpableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -55,7 +55,7 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.Solution, out soln, out solution); } - public bool TryGetDrawableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetDrawableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -66,7 +66,7 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.Solution, out soln, out solution); } - public bool TryGetInjectableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetInjectableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -77,7 +77,7 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.Solution, out soln, out solution); } - public bool TryGetFitsInDispenser(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetFitsInDispenser(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -88,7 +88,7 @@ public abstract partial class SharedSolutionContainerSystem return TryGetSolution((entity.Owner, entity.Comp2), entity.Comp1.Solution, out soln, out solution); } - public bool TryGetMixableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) + public bool TryGetMixableSolution(Entity entity, [NotNullWhen(true)] out Entity? soln, [NotNullWhen(true)] out Solution? solution) { if (!Resolve(entity, ref entity.Comp1, logMissing: false)) { @@ -148,13 +148,17 @@ public abstract partial class SharedSolutionContainerSystem #region Static Methods + public static string ToPrettyString(SolutionComponent solution) + { + var sb = new StringBuilder($"{solution.Id}:"); + sb.Append(ToPrettyString(solution.Solution)); + return sb.ToString(); + } + public static string ToPrettyString(Solution solution) { var sb = new StringBuilder(); - if (solution.Name == null) - sb.Append("["); - else - sb.Append($"{solution.Name}:["); + sb.Append("["); var first = true; foreach (var (id, quantity) in solution.Contents) { diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs new file mode 100644 index 0000000000..4ae9aba173 --- /dev/null +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs @@ -0,0 +1,79 @@ +using Content.Shared.Chemistry.Components.SolutionManager; +using Robust.Shared.Containers; + +namespace Content.Shared.Chemistry.EntitySystems; + +/// +/// This exists so that entity prototypes and maps with can load their solutions. +/// This system is extremely simple and will not have compatibility for new features that come as a result of future refactors. +/// This compatibility layer will degrade over time and eventually break as more solution logic relies on well-defined prototypes. +/// This is only here to give you more time to port your solutions to the new system. It is going to be deleted eventually. +/// You have been warned. +/// +public abstract partial class SharedSolutionContainerSystem +{ + public void InitializeContainerManager() + { + SubscribeLocalEvent(OnSolutionContainerInit); + } + + private void OnSolutionContainerInit(Entity container, ref MapInitEvent args) + { + // Create the manager, this should also create a container, so we ensure it exists. + EnsureComp(container, out var manager); + var solutionContainer = ContainerSystem.EnsureContainer(container, manager.Container); + + // First, if this entity was saved with an entity in a container, try to put it in the SolutionManager + foreach (var name in container.Comp.Containers) + { + if (ContainerSystem.GetContainer(container, $"solution@{name}") is not ContainerSlot slot || slot.ContainedEntity is not { } solutionUid) + continue; + + if (!SolutionQuery.TryComp(solutionUid, out var solution)) + continue; + + if (TryGetSolution(container.Owner, name, out var solutionEnt)) + { + // Only a warning so tests don't fail. If you're using this to find maps/prototypes which need porting, change this to Log.Error so tests fail. + Log.Warning($"Attempted to port a solution id: {name} entity: {ToPrettyString(solutionUid)} " + + $"from a {nameof(SolutionContainerManagerComponent)} on {ToPrettyString(container)}, {MetaData(container).EntityPrototype}, " + + $"but the entity already had a solution with that id."); + solutionEnt.Value.Comp.Solution = solution.Solution; + } + else + { + ContainerSystem.Insert(solutionUid, solutionContainer, force: true); + } + + // We don't need it anymore + ContainerSystem.ShutdownContainer(slot); + } + + if (container.Comp.Solutions == null) + { + RemCompDeferred(container); + return; + } + + + // Next, if this entity was never initialized, create its solutions. + foreach (var (name, solution) in container.Comp.Solutions) + { + // Solution already exists so we ignore it. + if (EnsureSolution(container.Owner, name, out var solutionEnt)) + { + // Only a warning so tests don't fail. If you're using this to find maps/prototypes which need porting, change this to Log.Error so tests fail. + Log.Warning($"Attempted to port a solution id: {name} " + + $"from a {nameof(SolutionContainerManagerComponent)} on {ToPrettyString(container)}, {MetaData(container).EntityPrototype}, " + + $"but the entity already had a solution with that id."); + } + + // Clone the solution to the component. + solutionEnt.Comp.Solution = solution; + } + + // Clear its data + container.Comp.Solutions = null; + RemCompDeferred(container); + } +} diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs index 11122415c5..cecc3e7210 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs @@ -7,23 +7,6 @@ namespace Content.Shared.Chemistry.EntitySystems; #region Events -/// -/// Raised on the container of the solution entity when the contained solution is changed. -/// If you want to subscribe with the solution entity itself -/// then use instead. -/// -/// -/// This is always raised on the client when handling the component state so that we can update UIs accordingly. -/// You might need an IGameTiming.ApplyingState guard to prevent mispredicts if the changes from your subscription are -/// networked with the same game state. -/// -[ByRefEvent] -public record struct SolutionContainerChangedEvent(Solution Solution, string SolutionId) -{ - public readonly Solution Solution = Solution; - public readonly string SolutionId = SolutionId; -} - /// /// An event raised when more reagents are added to a (managed) solution than it can hold. /// @@ -47,13 +30,11 @@ public record struct SolutionContainerOverflowEvent(EntityUid SolutionEnt, Solut /// /// /// The event that is being relayed. -/// The container entity that the event is being relayed to. -/// The name of the solution entity that the event is being relayed from. +/// The container entity that the event is being relayed to. [ByRefEvent] -public record struct SolutionRelayEvent(TEvent Event, EntityUid ContainerEnt, string Name) +public record struct SolutionRelayEvent(TEvent Event, Entity Solution) { - public readonly EntityUid ContainerEnt = ContainerEnt; - public readonly string Name = Name; + public readonly Entity Solution = Solution; public TEvent Event = Event; } @@ -78,28 +59,12 @@ public abstract partial class SharedSolutionContainerSystem { protected void InitializeRelays() { - SubscribeLocalEvent(OnSolutionChanged); SubscribeLocalEvent(OnSolutionOverflow); SubscribeLocalEvent(RelaySolutionRefEvent); } #region Event Handlers - protected virtual void OnSolutionChanged(Entity entity, ref SolutionChangedEvent args) - { - var (solutionId, solutionComp) = args.Solution; - var solution = solutionComp.Solution; - - var relayEvent = new SolutionContainerChangedEvent(solution, entity.Comp.ContainerName); - RaiseLocalEvent(entity.Comp.Container, ref relayEvent); - - // The appearance changes are already networked as part of the same game state. - if (_timing.ApplyingState) - return; - - UpdateAppearance(entity.Comp.Container, (solutionId, solutionComp, entity.Comp)); - } - protected virtual void OnSolutionOverflow(Entity entity, ref SolutionOverflowEvent args) { var solution = args.Solution.Comp.Solution; @@ -117,18 +82,20 @@ public abstract partial class SharedSolutionContainerSystem private void RelaySolutionValEvent(EntityUid uid, ContainedSolutionComponent comp, TEvent @event) { - var relayEvent = new SolutionRelayEvent(@event, uid, comp.ContainerName); + var solution = Comp(uid); + var relayEvent = new SolutionRelayEvent(@event, (uid, solution)); RaiseLocalEvent(comp.Container, ref relayEvent); } private void RelaySolutionRefEvent(Entity entity, ref TEvent @event) { - var relayEvent = new SolutionRelayEvent(@event, entity.Owner, entity.Comp.ContainerName); + var solution = Comp(entity); + var relayEvent = new SolutionRelayEvent(@event, (entity, solution)); RaiseLocalEvent(entity.Comp.Container, ref relayEvent); @event = relayEvent.Event; } - private void RelaySolutionContainerEvent(EntityUid uid, SolutionContainerManagerComponent comp, TEvent @event) + private void RelaySolutionContainerEvent(EntityUid uid, SolutionManagerComponent comp, TEvent @event) { foreach (var (name, soln) in EnumerateSolutions((uid, comp))) { @@ -137,7 +104,7 @@ public abstract partial class SharedSolutionContainerSystem } } - private void RelaySolutionContainerEvent(Entity entity, ref TEvent @event) + private void RelaySolutionContainerEvent(Entity entity, ref TEvent @event) { foreach (var (name, soln) in EnumerateSolutions((entity.Owner, entity.Comp))) { diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs index e6e50b23b5..e921bc6442 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs @@ -1,6 +1,5 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; -using System.Numerics; using System.Runtime.CompilerServices; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -16,7 +15,6 @@ using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Shared.Containers; using Robust.Shared.GameStates; -using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Timing; @@ -27,9 +25,8 @@ namespace Content.Shared.Chemistry.EntitySystems; /// /// The event raised whenever a solution entity is modified. -/// Raised on the solution entity itself. -/// If you want to subscribe with the entity containing the solution entity -/// then use instead. +/// This event is raised on the owner of the solution. +/// If the changed solution is contained in a , it will be raised on the owner of that component. /// /// /// Raised after chemcial reactions and are handled. @@ -69,38 +66,42 @@ public partial record struct SolutionAccessAttemptEvent(string SolutionName) [UsedImplicitly] public abstract partial class SharedSolutionContainerSystem : EntitySystem { + public static readonly EntProtoId DefaultSolution = "Solution"; + + [Dependency] protected readonly IGameTiming Timing = default!; + [Dependency] protected readonly INetManager Net = default!; [Dependency] protected readonly IPrototypeManager PrototypeManager = default!; [Dependency] protected readonly ChemicalReactionSystem ChemicalReactionSystem = default!; [Dependency] protected readonly ExamineSystemShared ExamineSystem = default!; [Dependency] protected readonly OpenableSystem Openable = default!; [Dependency] protected readonly SharedAppearanceSystem AppearanceSystem = default!; - [Dependency] protected readonly SharedHandsSystem Hands = default!; [Dependency] protected readonly SharedContainerSystem ContainerSystem = default!; - [Dependency] protected readonly MetaDataSystem MetaDataSys = default!; - [Dependency] protected readonly INetManager NetManager = default!; - [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] protected readonly SharedHandsSystem Hands = default!; + + [Dependency] protected readonly EntityQuery ContainedQuery = default!; + [Dependency] protected readonly EntityQuery SolutionQuery = default!; + [Dependency] protected readonly EntityQuery SolutionManagerQuery = default!; public override void Initialize() { base.Initialize(); InitializeRelays(); + InitializeContainerManager(); SubscribeLocalEvent(OnSolutionGetState); SubscribeLocalEvent(OnSolutionHandleState); SubscribeLocalEvent(OnComponentInit); - SubscribeLocalEvent(OnSolutionStartup); + SubscribeLocalEvent(OnSolutionInit); SubscribeLocalEvent(OnSolutionShutdown); - SubscribeLocalEvent(OnContainerManagerInit); + SubscribeLocalEvent(OnExamineSolution); SubscribeLocalEvent>(OnSolutionExaminableVerb); - SubscribeLocalEvent(OnMapInit); - if (NetManager.IsServer) - { - SubscribeLocalEvent(OnContainerManagerShutdown); - SubscribeLocalEvent(OnContainedSolutionShutdown); - } + SubscribeLocalEvent(OnManagerInit); + SubscribeLocalEvent(OnManagerShutdown); + SubscribeLocalEvent(OnSolutionAdded); + SubscribeLocalEvent(OnSolutionRemoved); } private void OnSolutionGetState(Entity ent, ref ComponentGetState args) @@ -118,32 +119,37 @@ public abstract partial class SharedSolutionContainerSystem : EntitySystem // Always raise the event on the client so that we can update UIs accordingly. var changedEv = new SolutionChangedEvent(ent); RaiseLocalEvent(ent, ref changedEv); + + if (!ContainedQuery.TryComp(ent, out var contained) || !SolutionManagerQuery.TryComp(contained.Container, out var manager)) + return; + + manager.Solutions[ent.Comp.Id] = ent; } /// /// Attempts to resolve a solution associated with an entity. /// - /// The entity that holdes the container the solution entity is in. + /// The entity that holdes the container the solution entity is in. /// The name of the solution entities container. - /// A reference to a solution entity to load the associated solution entity into. Will be unchanged if not null. + /// A reference to a solution entity to load the associated solution entity into. Will be unchanged if not null. /// Returns the solution state of the solution entity. /// Whether the solution was successfully resolved. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public bool ResolveSolution(Entity container, string? name, [NotNullWhen(true)] ref Entity? entity, [NotNullWhen(true)] out Solution? solution) + public bool ResolveSolution(Entity entity, string name, [NotNullWhen(true)] ref Entity? solutionEnt, [NotNullWhen(true)] out Solution? solution) { - if (!ResolveSolution(container, name, ref entity)) + if (!ResolveSolution(entity, name, ref solutionEnt)) { solution = null; return false; } - solution = entity.Value.Comp.Solution; + solution = solutionEnt.Value.Comp.Solution; return true; } - /// + /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public bool ResolveSolution(Entity container, string? name, [NotNullWhen(true)] ref Entity? entity) + public bool ResolveSolution(Entity container, string name, [NotNullWhen(true)] ref Entity? entity) { if (entity is not null) { @@ -159,171 +165,217 @@ public abstract partial class SharedSolutionContainerSystem : EntitySystem /// Attempts to fetch a solution entity associated with an entity. /// /// - /// If the solution entity will be frequently accessed please use the equivalent method and cache the result. + /// If the solution entity will be frequently accessed please use the equivalent + /// + /// method and cache the result. /// - /// The entity the solution entity should be associated with. + /// The entity the solution entity should be associated with. /// The name of the solution entity to fetch. - /// Returns the solution entity that was fetched. + /// Returns the solution entity that was fetched. /// Returns the solution state of the solution entity that was fetched. /// /// Should we print an error if the solution specified by name is missing /// public bool TryGetSolution( - Entity container, - string? name, - [NotNullWhen(true)] out Entity? entity, + Entity entity, + string name, + [NotNullWhen(true)] out Entity? solutionEnt, [NotNullWhen(true)] out Solution? solution, bool errorOnMissing = false) { - if (!TryGetSolution(container, name, out entity, errorOnMissing: errorOnMissing)) + if (!TryGetSolution(entity, name, out solutionEnt, errorOnMissing: errorOnMissing)) { solution = null; return false; } - solution = entity.Value.Comp.Solution; + solution = solutionEnt.Value.Comp.Solution; return true; } - /// + /// public bool TryGetSolution( - Entity container, - string? name, - [NotNullWhen(true)] out Entity? entity, + Entity entity, + string name, + [NotNullWhen(true)] out Entity? solutionEnt, bool errorOnMissing = false) { // use connected container instead of entity from arguments, if it exists. - var ev = new GetConnectedContainerEvent(); - RaiseLocalEvent(container, ref ev); - if (ev.ContainerEntity.HasValue) - container = ev.ContainerEntity.Value; + solutionEnt = null; - EntityUid uid; - if (name is null) - uid = container; - else if ( - ContainerSystem.TryGetContainer(container, $"solution@{name}", out var solutionContainer) && - solutionContainer is ContainerSlot solutionSlot && - solutionSlot.ContainedEntity is { } containedSolution - ) + var ev = new GetConnectedContainerEvent(); + RaiseLocalEvent(entity, ref ev); + if (ev.ContainerEntity.HasValue) + entity = ev.ContainerEntity.Value; + + if (SolutionQuery.TryComp(entity, out var comp) && comp.Id == name) + { + solutionEnt = (entity.Owner, comp); + return true; + } + + if (!SolutionManagerQuery.Resolve(entity, ref entity.Comp, errorOnMissing)) + return false; + + if (entity.Comp.Solutions.TryGetValue(name, out var solution)) { var attemptEv = new SolutionAccessAttemptEvent(name); - RaiseLocalEvent(container, ref attemptEv); + RaiseLocalEvent(entity, ref attemptEv); if (attemptEv.Cancelled) - { - entity = null; return false; - } - uid = containedSolution; - } - else - { - entity = null; - if (!errorOnMissing) - return false; - Log.Error($"{ToPrettyString(container)} does not have a solution with ID: {name}"); - return false; + solutionEnt = solution; + return true; } - if (!TryComp(uid, out SolutionComponent? comp)) - { - entity = null; - if (!errorOnMissing) - return false; - Log.Error($"{ToPrettyString(container)} does not have a solution with ID: {name}"); - return false; - } + if (errorOnMissing) + Log.Error($"{ToPrettyString(entity)} does not have a solution with ID: {name}"); - entity = (uid, comp); - return true; + return false; } /// /// Version of TryGetSolution that doesn't take or return an entity. - /// Used for prototypes and with old code parity. - public bool TryGetSolution(SolutionContainerManagerComponent container, + /// Used for prototypes. + /// + public bool TryGetSolution(EntProtoId entProtoId, string name, [NotNullWhen(true)] out Solution? solution, bool errorOnMissing = false) { solution = null; - if (container.Solutions != null) - return container.Solutions.TryGetValue(name, out solution); - if (!errorOnMissing) + + if (!PrototypeManager.Resolve(entProtoId, out var proto)) return false; - Log.Error($"{container} does not have a solution with ID: {name}"); + + return TryGetSolution(proto, name, out solution, errorOnMissing); + } + + public bool TryGetSolution(EntityPrototype entProto, + string name, + [NotNullWhen(true)] out Solution? solution, + bool errorOnMissing = false) + { + solution = null; + + if (!TryGetSolutionFill(entProto, out var solutions)) + return false; + + foreach (var protoId in solutions) + { + if (!PrototypeManager.Resolve(protoId, out var proto)) + continue; + + if (!proto.TryGetComponent(out var sol, Factory)) + { + Log.Error($"Entity prototype {proto}, tried to spawn in a solution container in prototype {entProto.ID}, but had no {nameof(SolutionComponent)}"); + continue; + } + + if (sol.Id != name) + continue; + + solution = sol.Solution; + return true; + } + + if (errorOnMissing) + Log.Error($"{entProto.ID} does not have a solution with ID: {name}"); + return false; } - public IEnumerable<(string? Name, Entity Solution)> EnumerateSolutions(Entity container, bool includeSelf = true) + public IEnumerable<(string? Name, Entity Solution)> EnumerateSolutions(Entity entity, bool includeSelf = true) { - if (includeSelf && TryComp(container, out SolutionComponent? solutionComp)) - yield return (null, (container.Owner, solutionComp)); + if (includeSelf && SolutionQuery.TryComp(entity, out var solutionComp)) + yield return (solutionComp.Id, (entity.Owner, solutionComp)); - if (!Resolve(container, ref container.Comp, logMissing: false)) + if (!SolutionManagerQuery.Resolve(entity, ref entity.Comp, logMissing: false)) yield break; - foreach (var name in container.Comp.Containers) + foreach (var (id, solution) in entity.Comp.Solutions) { - var attemptEv = new SolutionAccessAttemptEvent(name); - RaiseLocalEvent(container, ref attemptEv); + var attemptEv = new SolutionAccessAttemptEvent(id); + RaiseLocalEvent(entity, ref attemptEv); if (attemptEv.Cancelled) continue; - if (ContainerSystem.GetContainer(container, $"solution@{name}") is ContainerSlot slot && slot.ContainedEntity is { } solutionId) - yield return (name, (solutionId, Comp(solutionId))); + yield return (id, solution); } } - public IEnumerable<(string Name, Solution Solution)> EnumerateSolutions(SolutionContainerManagerComponent container) + public IEnumerable<(string Id, Solution Solution)> EnumerateSolutions(EntityPrototype entProto) { - if (container.Solutions is not { Count: > 0 } solutions) + if (!TryGetSolutionFill(entProto, out var solutions)) yield break; - foreach (var (name, solution) in solutions) + foreach (var protoId in solutions) { - yield return (name, solution); + if (!PrototypeManager.Resolve(protoId, out var proto)) + continue; + + if (!proto.TryGetComponent(out var sol, Factory)) + { + Log.Error($"Entity prototype {proto}, tried to spawn in a solution container in prototype {entProto.ID}, but had no {nameof(SolutionComponent)}"); + continue; + } + + yield return (sol.Id, sol.Solution); } } + private bool TryGetSolutionFill(Entity entity, [NotNullWhen(true)] out List? fill) + { + fill = null; + if (!SolutionManagerQuery.Resolve(entity, ref entity.Comp)) + return false; - protected void UpdateAppearance(Entity container, Entity soln) + fill = entity.Comp.SolutionEnts; + return true; + } + + private bool TryGetSolutionFill(EntityPrototype entProto, [NotNullWhen(true)] out List? fill) + { + fill = null; + if (!entProto.TryGetComponent(out var manager, Factory)) + return false; + + fill = manager.SolutionEnts; + return true; + } + + protected void UpdateAppearance(Entity container, Entity soln) { var (uid, appearanceComponent) = container; if (!HasComp(uid) || !Resolve(uid, ref appearanceComponent, logMissing: false)) return; - var (_, comp, relation) = soln; - var solution = comp.Solution; + var solution = soln.Comp.Solution; AppearanceSystem.SetData(uid, SolutionContainerVisuals.FillFraction, solution.FillFraction, appearanceComponent); AppearanceSystem.SetData(uid, SolutionContainerVisuals.Color, solution.GetColor(PrototypeManager), appearanceComponent); - AppearanceSystem.SetData(uid, SolutionContainerVisuals.SolutionName, relation.ContainerName, appearanceComponent); + AppearanceSystem.SetData(uid, SolutionContainerVisuals.SolutionName, soln.Comp.Id, appearanceComponent); if (solution.GetPrimaryReagentId() is { } reagent) AppearanceSystem.SetData(uid, SolutionContainerVisuals.BaseOverride, reagent.ToString(), appearanceComponent); } - public FixedPoint2 GetTotalPrototypeQuantity(EntityUid owner, string reagentId) + public FixedPoint2 GetTotalPrototypeQuantity(Entity owner, string reagentId) { var reagentQuantity = FixedPoint2.New(0); - if (Exists(owner) - && TryComp(owner, out SolutionContainerManagerComponent? managerComponent)) + if (Exists(owner)) { - foreach (var (_, soln) in EnumerateSolutions((owner, managerComponent))) + foreach (var (_, solution) in EnumerateSolutions(owner)) { - var solution = soln.Comp.Solution; - reagentQuantity += solution.GetTotalPrototypeQuantity(reagentId); + reagentQuantity += solution.Comp.Solution.GetTotalPrototypeQuantity(reagentId); } } return reagentQuantity; } - /// /// Dirties a solution entity that has been modified and prompts updates to chemical reactions and overflow state. /// Should be invoked whenever a solution entity is modified. @@ -331,46 +383,37 @@ public abstract partial class SharedSolutionContainerSystem : EntitySystem /// /// 90% of this system is ensuring that this proc is invoked whenever a solution entity is changed. The other 10% is this proc. /// - /// + /// /// /// - public void UpdateChemicals(Entity soln, bool needsReactionsProcessing = true, ReactionMixerComponent? mixerComponent = null) + public void UpdateChemicals(Entity solution, bool needsReactionsProcessing = true, ReactionMixerComponent? mixerComponent = null) { - Dirty(soln); - - var (uid, comp) = soln; - var solution = comp.Solution; - // Process reactions - if (needsReactionsProcessing && solution.CanReact) - ChemicalReactionSystem.FullyReactSolution(soln, mixerComponent); + if (needsReactionsProcessing && solution.Comp.Solution.CanReact) + ChemicalReactionSystem.FullyReactSolution(solution, mixerComponent); - var overflow = solution.Volume - solution.MaxVolume; + var overflow = solution.Comp.Solution.Volume - solution.Comp.Solution.MaxVolume; if (overflow > FixedPoint2.Zero) { - var overflowEv = new SolutionOverflowEvent(soln, overflow); - RaiseLocalEvent(uid, ref overflowEv); + var overflowEv = new SolutionOverflowEvent(solution, overflow); + RaiseLocalEvent(solution, ref overflowEv); } - UpdateAppearance((uid, comp, null)); + var owner = GetSolutionOwner(solution); - var changedEv = new SolutionChangedEvent(soln); - RaiseLocalEvent(uid, ref changedEv); - } + var changedEv = new SolutionChangedEvent(solution); + RaiseLocalEvent(owner, ref changedEv); + Dirty(solution); - public void UpdateAppearance(Entity soln) - { - var (uid, comp, appearanceComponent) = soln; - var solution = comp.Solution; - - if (!Exists(uid) || !Resolve(uid, ref appearanceComponent, false)) + if (Timing.ApplyingState) return; - AppearanceSystem.SetData(uid, SolutionContainerVisuals.FillFraction, solution.FillFraction, appearanceComponent); - AppearanceSystem.SetData(uid, SolutionContainerVisuals.Color, solution.GetColor(PrototypeManager), appearanceComponent); + UpdateAppearance(owner, solution); + } - if (solution.GetPrimaryReagentId() is { } reagent) - AppearanceSystem.SetData(uid, SolutionContainerVisuals.BaseOverride, reagent.ToString(), appearanceComponent); + public EntityUid GetSolutionOwner(Entity entity) + { + return ContainedQuery.CompOrNull(entity)?.Container ?? entity.Owner; } /// @@ -830,27 +873,16 @@ public abstract partial class SharedSolutionContainerSystem : EntitySystem entity.Comp.Solution.ValidateSolution(); } - private void OnSolutionStartup(Entity entity, ref ComponentStartup args) + private void OnSolutionInit(Entity entity, ref MapInitEvent args) { UpdateChemicals(entity); } private void OnSolutionShutdown(Entity entity, ref ComponentShutdown args) { - RemoveAllSolution(entity); - } - - private void OnContainerManagerInit(Entity entity, ref ComponentInit args) - { - if (entity.Comp.Containers is not { Count: > 0 } containers) - return; - - var containerManager = EnsureComp(entity); - foreach (var name in containers) - { - // The actual solution entity should be directly held within the corresponding slot. - ContainerSystem.EnsureContainer(entity.Owner, $"solution@{name}", containerManager); - } + // If we are contained within another entity, update that entity. Otherwise, don't update if we're being deleted. + if (ContainedQuery.HasComp(entity) || !Terminating(entity)) + RemoveAllSolution(entity); } /// @@ -1049,211 +1081,132 @@ public abstract partial class SharedSolutionContainerSystem : EntitySystem return true; } - private void OnMapInit(Entity entity, ref MapInitEvent args) + /// + /// We want all our solutions spawned before MapInit. + /// They should only ever be attached to this entity so spawning them before MapInit should be fine. + /// + private void OnManagerInit(Entity entity, ref MapInitEvent args) { - EnsureAllSolutions(entity); + var container = ContainerSystem.EnsureContainer(entity.Owner, entity.Comp.Container); + foreach (var solution in entity.Comp.SolutionEnts) + { + CreateSolution(solution, container); + } } - private void OnContainerManagerShutdown(Entity entity, ref ComponentShutdown args) + private void OnManagerShutdown(Entity entity, ref ComponentShutdown args) { - foreach (var name in entity.Comp.Containers) - { - if (ContainerSystem.TryGetContainer(entity, $"solution@{name}", out var solutionContainer)) - ContainerSystem.ShutdownContainer(solutionContainer); - } - entity.Comp.Containers.Clear(); - } - - private void OnContainedSolutionShutdown(Entity entity, ref ComponentShutdown args) - { - if (TryComp(entity.Comp.Container, out SolutionContainerManagerComponent? container)) - { - container.Containers.Remove(entity.Comp.ContainerName); - Dirty(entity.Comp.Container, container); - } - - if (ContainerSystem.TryGetContainer(entity, $"solution@{entity.Comp.ContainerName}", out var solutionContainer)) + if (ContainerSystem.TryGetContainer(entity, entity.Comp.Container, out var solutionContainer)) ContainerSystem.ShutdownContainer(solutionContainer); } + private void OnSolutionAdded(Entity entity, ref EntInsertedIntoContainerMessage args) + { + // Container networking boilerplate + if (args.Container.ID != entity.Comp.Container || !SolutionQuery.TryComp(args.Entity, out var solution)) + return; + + // Don't add a solution entity with the same id as this entity's solution if it exists! + DebugTools.Assert(!TryComp(entity, out var sol) || sol.Id != solution.Id, $"Tried to add a solution {MetaData(args.Entity).EntityPrototype} {solution.Id} to {ToPrettyString(entity)} but it itself was a solution with a matching id!"); + + EnsureComp(args.Entity, out var contained); + contained.Container = entity.Owner; + + // Throw if we already have a solution with the same ID. Only throw on server to avoid prediction causing issues. + if (!entity.Comp.Solutions.TryAdd(solution.Id, (args.Entity, solution)) && Net.IsServer) + Log.Error($"Solution {ToPrettyString(entity)}, tried to add a solution with a duplicate id: {solution.Id}"); + } + + private void OnSolutionRemoved(Entity entity, ref EntRemovedFromContainerMessage args) + { + // Container networking jank + if (args.Container.ID != entity.Comp.Container || !SolutionQuery.TryComp(args.Entity, out var solution)) + return; + + RemComp(args.Entity); + entity.Comp.Solutions.Remove(solution.Id); + } + #endregion Event Handlers + /// + /// A method which ensures a solution with a given ID exists. + /// + /// Entity we're trying to attach a new solution to. + /// Name of the new solution. + /// Solution entity found or created. + /// Returns true if the solution already existed, and false if it had to create a new solution. + /// + /// Only run this after the entity is already initialized. + /// If you're running this when your entity is created, it is recommended to run on + /// Deviance from these instructions may prevent your game from building. YOU HAVE BEEN WARNED. + /// public bool EnsureSolution( - Entity entity, + Entity entity, string name, - [NotNullWhen(true)] out Solution? solution, - FixedPoint2 maxVol = default) + out Entity solutionEntity) { - return EnsureSolution(entity, name, maxVol, null, out _, out solution); - } - - public bool EnsureSolution( - Entity entity, - string name, - out bool existed, - [NotNullWhen(true)] out Solution? solution, - FixedPoint2 maxVol = default) - { - return EnsureSolution(entity, name, maxVol, null, out existed, out solution); - } - - public bool EnsureSolution( - Entity entity, - string name, - FixedPoint2 maxVol, - Solution? prototype, - out bool existed, - [NotNullWhen(true)] out Solution? solution) - { - solution = null; - existed = false; - - var (uid, meta) = entity; - if (!Resolve(uid, ref meta)) - throw new InvalidOperationException("Attempted to ensure solution on invalid entity."); - var manager = EnsureComp(uid); - if (meta.EntityLifeStage >= EntityLifeStage.MapInitialized) + if (SolutionQuery.TryComp(entity, out var comp) && comp.Id == name) { - EnsureSolutionEntity((uid, manager), name, out existed, - out var solEnt, maxVol, prototype); - solution = solEnt!.Value.Comp.Solution; + solutionEntity = (entity.Owner, comp); return true; } - solution = EnsureSolutionPrototype((uid, manager), name, maxVol, prototype, out existed); - return true; - } - public void EnsureAllSolutions(Entity entity) - { - if (NetManager.IsClient) - return; + // Ensure we have a SolutionManagerComponent + // EnsureComp should ensure a container and fill that container with default spawns! + if (entity.Comp == null) + EnsureComp(entity, out entity.Comp); - if (entity.Comp.Solutions is not { } prototypes) - return; - - foreach (var (name, prototype) in prototypes) + // Check the cache first, even if the component didn't exist before, creating one may have spawned and cached solutions! + if (entity.Comp.Solutions.TryGetValue(name, out var solution)) { - EnsureSolutionEntity((entity.Owner, entity.Comp), name, out _, out _, prototype.MaxVolume, prototype); + solutionEntity = solution; + return true; } - entity.Comp.Solutions = null; - Dirty(entity); + // Create a default entity if one doesn't already exist! + solutionEntity = CreateDefaultSolution((entity, entity.Comp), name); + return false; } - public bool EnsureSolutionEntity( - Entity entity, + /// This is private since you should really be specifying a solution prototype to create. + private Entity CreateDefaultSolution( + Entity entity, + string name) + { + var container = ContainerSystem.EnsureContainer(entity.Owner, entity.Comp.Container); + return CreateDefaultSolution(name, container); + } + + private Entity CreateDefaultSolution( string name, - [NotNullWhen(true)] out Entity? solutionEntity, - FixedPoint2 maxVol = default) => - EnsureSolutionEntity(entity, name, out _, out solutionEntity, maxVol); - - public bool EnsureSolutionEntity( - Entity entity, - string name, - out bool existed, - [NotNullWhen(true)] out Entity? solutionEntity, - FixedPoint2 maxVol = default, - Solution? prototype = null - ) + Container container) { - existed = true; - solutionEntity = null; - - var (uid, container) = entity; - - var solutionSlot = ContainerSystem.EnsureContainer(uid, $"solution@{name}", out existed); - if (!Resolve(uid, ref container, logMissing: false)) - { - existed = false; - container = AddComp(uid); - container.Containers.Add(name); - if (NetManager.IsClient) - return false; - } - else if (!existed) - { - container.Containers.Add(name); - Dirty(uid, container); - } - - var needsInit = false; - SolutionComponent solutionComp; - if (solutionSlot.ContainedEntity is not { } solutionId) - { - if (NetManager.IsClient) - return false; - prototype ??= new() { MaxVolume = maxVol }; - prototype.Name = name; - (solutionId, solutionComp, _) = SpawnSolutionUninitialized(solutionSlot, name, maxVol, prototype); - existed = false; - needsInit = true; - Dirty(uid, container); - } - else - { - solutionComp = Comp(solutionId); - DebugTools.Assert(TryComp(solutionId, out ContainedSolutionComponent? relation) && relation.Container == uid && relation.ContainerName == name); - DebugTools.Assert(solutionComp.Solution.Name == name); - - var solution = solutionComp.Solution; - solution.MaxVolume = FixedPoint2.Max(solution.MaxVolume, maxVol); - - // Depending on MapInitEvent order some systems can ensure solution empty solutions and conflict with the prototype solutions. - // We want the reagents from the prototype to exist even if something else already created the solution. - if (prototype is { Volume.Value: > 0 }) - solution.AddSolution(prototype, PrototypeManager); - - Dirty(solutionId, solutionComp); - } - - if (needsInit) - EntityManager.InitializeAndStartEntity(solutionId, Transform(solutionId).MapID); - solutionEntity = (solutionId, solutionComp); - return true; - } - - private Solution EnsureSolutionPrototype(Entity entity, string name, FixedPoint2 maxVol, Solution? prototype, out bool existed) - { - existed = true; - - var (uid, container) = entity; - if (!Resolve(uid, ref container, logMissing: false)) - { - container = AddComp(uid); - existed = false; - } - - if (container.Solutions is null) - container.Solutions = new(SolutionContainerManagerComponent.DefaultCapacity); - - if (!container.Solutions.TryGetValue(name, out var solution)) - { - solution = prototype ?? new() { Name = name, MaxVolume = maxVol }; - container.Solutions.Add(name, solution); - existed = false; - } - else - solution.MaxVolume = FixedPoint2.Max(solution.MaxVolume, maxVol); - - Dirty(uid, container); + var solution = SpawnSolutionUninitialized(DefaultSolution); + solution.Comp.Id = name; + ContainerSystem.Insert(solution.Owner, container, force: true); + EntityManager.InitializeAndStartEntity(solution); return solution; } - private Entity SpawnSolutionUninitialized(ContainerSlot container, string name, FixedPoint2 maxVol, Solution prototype) + public Entity CreateSolution( + EntProtoId proto, + Container container) { - var coords = new EntityCoordinates(container.Owner, Vector2.Zero); - var uid = EntityManager.CreateEntityUninitialized(null, coords, null); + // TODO: Replace this with an engine bound method when e#6192 is merged. + var solution = SpawnSolutionUninitialized(proto); + ContainerSystem.Insert(solution.Owner, container, force: true); + EntityManager.InitializeAndStartEntity(solution); + return solution; + } - var solution = new SolutionComponent() { Solution = prototype }; - AddComp(uid, solution); + private Entity SpawnSolutionUninitialized(EntProtoId solution) + { + var uid = EntityManager.CreateEntityUninitialized(solution); - var relation = new ContainedSolutionComponent() { Container = container.Owner, ContainerName = name }; - AddComp(uid, relation); - - MetaDataSys.SetEntityName(uid, $"solution - {name}", raiseEvents: false); - ContainerSystem.Insert(uid, container, force: true); - - return (uid, solution, relation); + // If you pass in a ProtoId without a SolutionComponent that's your own damn fault! + var comp = SolutionQuery.Comp(uid); + return (uid, comp); } public void AdjustDissolvedReagent( diff --git a/Content.Shared/Chemistry/EntitySystems/SolutionPurgeSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionPurgeSystem.cs index bf39aaecc4..b31320e5ac 100644 --- a/Content.Shared/Chemistry/EntitySystems/SolutionPurgeSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionPurgeSystem.cs @@ -27,7 +27,8 @@ public sealed class SolutionPurgeSystem : EntitySystem { base.Update(frameTime); - var query = EntityQueryEnumerator(); + // TODO: SolutionPurgeComponent on Solution Entities! + var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var purge, out var manager)) { if (_timing.CurTime < purge.NextPurgeTime) diff --git a/Content.Shared/Chemistry/EntitySystems/SolutionRegenerationSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionRegenerationSystem.cs index 369b837202..6aeaa7fd6f 100644 --- a/Content.Shared/Chemistry/EntitySystems/SolutionRegenerationSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionRegenerationSystem.cs @@ -38,7 +38,8 @@ public sealed class SolutionRegenerationSystem : EntitySystem { base.Update(frameTime); - var query = EntityQueryEnumerator(); + // TODO: SolutionRegenerationComponent on Solution Entities! + var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var regen, out var manager)) { if (_timing.CurTime < regen.NextRegenTime) diff --git a/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs index 468e28f65f..2e030594e6 100644 --- a/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionSpikerSystem.cs @@ -26,7 +26,7 @@ public sealed class SolutionSpikerSystem : EntitySystem private void OnInteractUsing(Entity entity, ref InteractUsingEvent args) { - if (TrySpike(args.Used, args.Target, args.User, entity.Comp)) + if (TrySpike(args.Used, (args.Target, entity.Comp), args.User)) args.Handled = true; } @@ -37,31 +37,29 @@ public sealed class SolutionSpikerSystem : EntitySystem /// Source of the solution. /// Target to spike with the solution from source. /// User spiking the target solution. - private bool TrySpike(EntityUid source, EntityUid target, EntityUid user, RefillableSolutionComponent? spikableTarget = null, - SolutionSpikerComponent? spikableSource = null, - SolutionContainerManagerComponent? managerSource = null, - SolutionContainerManagerComponent? managerTarget = null) + private bool TrySpike(Entity source, + Entity target, + EntityUid user) { - if (!Resolve(source, ref spikableSource, ref managerSource, false) - || !Resolve(target, ref spikableTarget, ref managerTarget, false) - || !_solution.TryGetRefillableSolution((target, spikableTarget, managerTarget), out var targetSoln, out var targetSolution) - || !_solution.TryGetSolution((source, managerSource), spikableSource.SourceSolution, out _, out var sourceSolution)) + if (!Resolve(source, ref source.Comp, false) + || !_solution.TryGetRefillableSolution((target, target.Comp), out var targetSoln, out var targetSolution) + || !_solution.TryGetSolution(source.Owner, source.Comp.SourceSolution, out _, out var sourceSolution)) { return false; } - if (targetSolution.Volume == 0 && !spikableSource.IgnoreEmpty) + if (targetSolution.Volume == 0 && !source.Comp.IgnoreEmpty) { - _popup.PopupClient(Loc.GetString(spikableSource.PopupEmpty, ("spiked-entity", target), ("spike-entity", source)), user, user); + _popup.PopupClient(Loc.GetString(source.Comp.PopupEmpty, ("spiked-entity", target), ("spike-entity", source)), user, user); return false; } if (!_solution.ForceAddSolution(targetSoln.Value, sourceSolution)) return false; - _popup.PopupClient(Loc.GetString(spikableSource.Popup, ("spiked-entity", target), ("spike-entity", source)), user, user); + _popup.PopupClient(Loc.GetString(source.Comp.Popup, ("spiked-entity", target), ("spike-entity", source)), user, user); sourceSolution.RemoveAllSolution(); - if (spikableSource.Delete) + if (source.Comp.Delete) QueueDel(source); return true; diff --git a/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs b/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs index 3928ff7179..4ba58952b6 100644 --- a/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs @@ -29,7 +29,8 @@ public sealed class SolutionTransferSystem : EntitySystem /// /// Default transfer amounts for the set-transfer verb. /// - public static readonly FixedPoint2[] DefaultTransferAmounts = new FixedPoint2[] { 1, 5, 10, 25, 50, 100, 250, 500, 1000 }; + /// TODO: Turn this into a prototype just like with injectors. + public static readonly FixedPoint2[] DefaultTransferAmounts = new FixedPoint2[] { 1, 5, 10, 15, 30, 60, 120, 240, 480, 960 }; public override void Initialize() { diff --git a/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs index ef96723cff..e6c9090339 100644 --- a/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs @@ -11,11 +11,11 @@ namespace Content.Shared.EntityEffects.Effects.Solution; /// Quantity is modified by scale. /// /// -public sealed class AddReagentToSolutionEntityEffectSystem : EntityEffectSystem +public sealed class AddReagentToSolutionEntityEffectSystem : EntityEffectSystem { [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!; - protected override void Effect(Entity entity, ref EntityEffectEvent args) + protected override void Effect(Entity entity, ref EntityEffectEvent args) { var solution = args.Effect.Solution; var reagent = args.Effect.Reagent; @@ -40,7 +40,7 @@ public sealed partial class AddReagentToSolution : EntityEffectBase [DataField(required: true)] - public string? Solution = "reagents"; + public string Solution = "reagents"; /// /// A modifier for how much reagent we're creating. diff --git a/Content.Shared/Fluids/EntitySystems/DrainSystem.cs b/Content.Shared/Fluids/EntitySystems/DrainSystem.cs index 8b5fefdd8b..4a11eed714 100644 --- a/Content.Shared/Fluids/EntitySystems/DrainSystem.cs +++ b/Content.Shared/Fluids/EntitySystems/DrainSystem.cs @@ -1,5 +1,4 @@ using Content.Shared.Audio; -using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Database; using Content.Shared.DoAfter; @@ -23,6 +22,7 @@ namespace Content.Shared.Fluids.EntitySystems; /// /// Handles the draining of solutions from containers into drains. +/// TODO: This system is very bad, and needs to be rewritten. /// public sealed class DrainSystem : EntitySystem { @@ -130,9 +130,9 @@ public sealed class DrainSystem : EntitySystem { base.Update(frameTime); - var query = EntityQueryEnumerator(); + var query = EntityQueryEnumerator(); var curTime = _timing.CurTime; - while (query.MoveNext(out var uid, out var drain, out var manager)) + while (query.MoveNext(out var uid, out var drain)) { if (curTime < drain.NextUpdate) continue; @@ -141,7 +141,7 @@ public sealed class DrainSystem : EntitySystem Dirty(uid, drain); // Best to do this one every second rather than once every tick... - if (!_solutionContainerSystem.ResolveSolution((uid, manager), DrainComponent.SolutionName, ref drain.Solution, out var drainSolution)) + if (!_solutionContainerSystem.ResolveSolution(uid, DrainComponent.SolutionName, ref drain.Solution, out var drainSolution)) continue; if (drainSolution.Volume <= 0 && !drain.AutoDrain) @@ -201,12 +201,9 @@ public sealed class DrainSystem : EntitySystem private void OnExamined(Entity ent, ref ExaminedEvent args) { - if (!args.IsInDetailsRange || - !HasComp(ent) || - !_solutionContainerSystem.ResolveSolution(ent.Owner, DrainComponent.SolutionName, ref ent.Comp.Solution, out var drainSolution)) - { + if (!args.IsInDetailsRange + || !_solutionContainerSystem.ResolveSolution(ent.Owner, DrainComponent.SolutionName, ref ent.Comp.Solution, out var drainSolution)) return; - } var text = drainSolution.AvailableVolume != 0 ? Loc.GetString("drain-component-examine-volume", ("volume", drainSolution.AvailableVolume)) diff --git a/Content.Shared/Fluids/SharedAbsorbentSystem.cs b/Content.Shared/Fluids/SharedAbsorbentSystem.cs index 62c59b8227..36e7520641 100644 --- a/Content.Shared/Fluids/SharedAbsorbentSystem.cs +++ b/Content.Shared/Fluids/SharedAbsorbentSystem.cs @@ -38,7 +38,7 @@ public abstract class SharedAbsorbentSystem : EntitySystem SubscribeLocalEvent(OnAfterInteract); SubscribeLocalEvent(OnActivateInWorld); - SubscribeLocalEvent(OnAbsorbentSolutionChange); + SubscribeLocalEvent(OnAbsorbentSolutionChange); } private void OnActivateInWorld(Entity ent, ref UserActivateInWorldEvent args) @@ -59,7 +59,7 @@ public abstract class SharedAbsorbentSystem : EntitySystem args.Handled = true; } - private void OnAbsorbentSolutionChange(Entity ent, ref SolutionContainerChangedEvent args) + private void OnAbsorbentSolutionChange(Entity ent, ref SolutionChangedEvent args) { // The changes are already networked as part of the same game state. if (_timing.ApplyingState) diff --git a/Content.Shared/Fluids/SharedPuddleSystem.cs b/Content.Shared/Fluids/SharedPuddleSystem.cs index 18cae762f8..8c44009724 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.cs @@ -66,7 +66,7 @@ public abstract partial class SharedPuddleSystem : EntitySystem base.Initialize(); // Shouldn't need re-anchoring. SubscribeLocalEvent(OnAnchorChanged); - SubscribeLocalEvent(OnSolutionUpdate); + SubscribeLocalEvent(OnSolutionUpdate); SubscribeLocalEvent(OnGetFootstepSound); SubscribeLocalEvent(HandlePuddleExamined); SubscribeLocalEvent(OnEntRemoved); @@ -110,25 +110,25 @@ public abstract partial class SharedPuddleSystem : EntitySystem _standoutReagents = [.. _prototypeManager.EnumeratePrototypes().Where(x => x.Standsout).Select(x => x.ID)]; } - private void OnSolutionUpdate(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionUpdate(Entity entity, ref SolutionChangedEvent args) { // The changes are already networked as part of the same game state. if (_timing.ApplyingState) return; - if (args.SolutionId != entity.Comp.SolutionName) + if (args.Solution.Comp.Id != entity.Comp.SolutionName) return; - if (args.Solution.Volume <= 0) + if (args.Solution.Comp.Solution.Volume <= 0) { _deletionQueue.Add(entity); return; } _deletionQueue.Remove(entity); - UpdateSlip((entity, entity.Comp), args.Solution); - UpdateSlow(entity, args.Solution); - UpdateEvaporation(entity, args.Solution); + UpdateSlip((entity, entity.Comp), args.Solution.Comp.Solution); + UpdateSlow(entity, args.Solution.Comp.Solution); + UpdateEvaporation(entity, args.Solution.Comp.Solution); UpdateAppearance((entity, entity.Comp)); } diff --git a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs index 811aabf3eb..9dca252eb4 100644 --- a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs +++ b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs @@ -41,7 +41,7 @@ public abstract class SharedReagentGrinderSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnBeakerSolutionContainerChanged); + SubscribeLocalEvent(OnBeakerSolutionContainerChanged); SubscribeLocalEvent(OnGrinderStartup); SubscribeLocalEvent(OnEntRemovingAttempt); @@ -56,7 +56,7 @@ public abstract class SharedReagentGrinderSystem : EntitySystem SubscribeLocalEvent(OnEjectChamberContentMessage); } - private void OnBeakerSolutionContainerChanged(Entity ent, ref SolutionContainerChangedEvent args) + private void OnBeakerSolutionContainerChanged(Entity ent, ref SolutionChangedEvent args) { // Update the UI if the reagents inside the beaker are changed. // This is needed in case the component state for the container is applied before that of the solution container @@ -356,10 +356,11 @@ public abstract class SharedReagentGrinderSystem : EntitySystem switch (program) { case GrinderProgram.Grind: - if (_solutionContainersSystem.TryGetSolution(ent.Owner, ent.Comp.GrindableSolutionName, out _, out var solution)) - { + if (ent.Comp.GrindableSolutionName is not { } solutionId) + return null; + + if (_solutionContainersSystem.TryGetSolution(ent.Owner, solutionId, out _, out var solution)) return solution; - } break; case GrinderProgram.Juice: return ent.Comp.JuiceSolution; diff --git a/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs b/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs index f3b8024d6d..b3862bd422 100644 --- a/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs +++ b/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs @@ -5,7 +5,6 @@ using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.Climbing.Systems; @@ -57,8 +56,6 @@ public abstract partial class SharedCryoPodSystem : EntitySystem [Dependency] private readonly EntityQuery _bloodstreamQuery = default!; [Dependency] private readonly EntityQuery _itemSlotsQuery = default!; [Dependency] private readonly EntityQuery _dispenserQuery = default!; - [Dependency] private readonly EntityQuery _solutionContainerQuery = default!; - public override void Initialize() { @@ -111,9 +108,8 @@ public abstract partial class SharedCryoPodSystem : EntitySystem var patient = entity.Comp.BodyContainer.ContainedEntity; if (patient == null - || !_solutionContainerQuery.TryComp(entity, out var podSolutionManager) || !_solutionContainer.TryGetSolution( - (entity.Owner, podSolutionManager), + entity.Owner, CryoPodComponent.InjectionBufferSolutionName, out var injectingSolution, out _) @@ -352,14 +348,12 @@ public abstract partial class SharedCryoPodSystem : EntitySystem if (beaker == null || !beaker.Value.Valid || !_dispenserQuery.TryComp(beaker, out var fitsInDispenserComponent) - || !_solutionContainerQuery.TryComp(beaker, out var beakerSolutionManager) - || !_solutionContainerQuery.TryComp(cryoPod, out var podSolutionManager) || !_solutionContainer.TryGetFitsInDispenser( - (beaker.Value, fitsInDispenserComponent, beakerSolutionManager), + (beaker.Value, fitsInDispenserComponent), out var beakerSolution, out _) || !_solutionContainer.TryGetSolution( - (cryoPod.Owner, podSolutionManager), + cryoPod.Owner, CryoPodComponent.InjectionBufferSolutionName, out var injectionSolutionComp, out var injectionSolution)) @@ -377,9 +371,8 @@ public abstract partial class SharedCryoPodSystem : EntitySystem public void ClearInjectionBuffer(Entity cryoPod) { - if (_solutionContainerQuery.TryComp(cryoPod, out var podSolutionManager) - && _solutionContainer.TryGetSolution( - (cryoPod.Owner, podSolutionManager), + if (_solutionContainer.TryGetSolution( + cryoPod.Owner, CryoPodComponent.InjectionBufferSolutionName, out var injectingSolution, out _)) @@ -402,9 +395,8 @@ public abstract partial class SharedCryoPodSystem : EntitySystem if (beaker == null || !beaker.Value.Valid || !_dispenserQuery.TryComp(beaker, out var fitsInDispenserComponent) - || !_solutionContainerQuery.TryComp(beaker, out var solutionContainerManagerComponent) || !_solutionContainer.TryGetFitsInDispenser( - (beaker.Value, fitsInDispenserComponent, solutionContainerManagerComponent), + (beaker.Value, fitsInDispenserComponent), out var containerSolution, out _)) return (null, null); @@ -419,9 +411,8 @@ public abstract partial class SharedCryoPodSystem : EntitySystem protected List? GetInjectingReagents(Entity entity) { - if (!_solutionContainerQuery.TryComp(entity, out var solutionManager) - || !_solutionContainer.TryGetSolution( - (entity.Owner, solutionManager), + if (!_solutionContainer.TryGetSolution( + entity.Owner, CryoPodComponent.InjectionBufferSolutionName, out var injectingSolution, out _)) diff --git a/Content.Shared/Metabolism/MetabolizerSystem.cs b/Content.Shared/Metabolism/MetabolizerSystem.cs index af9ee038e2..dfc6e9cde9 100644 --- a/Content.Shared/Metabolism/MetabolizerSystem.cs +++ b/Content.Shared/Metabolism/MetabolizerSystem.cs @@ -32,7 +32,7 @@ public sealed class MetabolizerSystem : EntitySystem [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly EntityQuery _organQuery = default!; - [Dependency] private readonly EntityQuery _solutionQuery = default!; + [Dependency] private readonly EntityQuery _solutionQuery = default!; public override void Initialize() { @@ -87,7 +87,7 @@ public sealed class MetabolizerSystem : EntitySystem } private bool LookupSolution( - Entity ent, + Entity ent, MetabolismSolutionEntry solutionData, bool lookupTransfer, [NotNullWhen(true)] out Solution? solution, @@ -106,28 +106,24 @@ public sealed class MetabolizerSystem : EntitySystem if (lookupTransfer ? solutionData.TransferSolutionOnBody : solutionData.SolutionOnBody) { - if (ent.Comp2?.Body is { } body) - { - if (!_solutionQuery.TryComp(body, out var bodySolution)) - return false; - - solutionOwner = body; - return _solutionContainerSystem.TryGetSolution((body, bodySolution), solutionName, out solutionEntity, out solution); - } - } - else - { - if (!_solutionQuery.Resolve(ent, ref ent.Comp3, logMissing: false)) + if (ent.Comp2?.Body is not { } body) return false; - solutionOwner = ent; - return _solutionContainerSystem.TryGetSolution((ent, ent), solutionName, out solutionEntity, out solution); + if (!_solutionContainerSystem.TryGetSolution(body, solutionName, out solutionEntity, out solution)) + return false; + + solutionOwner = body; + return true; } - return false; + if (!_solutionContainerSystem.TryGetSolution((ent, ent.Comp3), solutionName, out solutionEntity, out solution)) + return false; + + solutionOwner = ent; + return true; } - private void TryMetabolizeStage(Entity ent, ProtoId stage) + private void TryMetabolizeStage(Entity ent, ProtoId stage) { if (!ent.Comp1.Solutions.TryGetValue(stage, out var solutionData)) return; @@ -261,9 +257,10 @@ public sealed class MetabolizerSystem : EntitySystem } } - private void TryMetabolize(Entity ent) + private void TryMetabolize(Entity ent) { _organQuery.Resolve(ent, ref ent.Comp2, logMissing: false); + _solutionQuery.Resolve(ent, ref ent.Comp3, logMissing: false); foreach (var stage in ent.Comp1.Stages) { diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs index dbd75597ea..6c29e4fb0d 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs @@ -298,7 +298,7 @@ public sealed partial class IngestionSystem /// The entity trying to make the ingestion happening, not necessarily the one eating /// Solution we're returning /// The time it takes us to eat this entity - public bool CanAccessSolution(Entity ingested, + public bool CanAccessSolution(EntityUid ingested, EntityUid user, [NotNullWhen(true)] out Entity? solution, out TimeSpan? time) @@ -306,19 +306,20 @@ public sealed partial class IngestionSystem solution = null; time = null; - if (!Resolve(ingested, ref ingested.Comp)) - { - _popup.PopupClient(Loc.GetString("ingestion-try-use-is-empty", ("entity", ingested)), ingested, user); - return false; - } - + // TODO: Relay this event to solutions using solution relay var ev = new EdibleEvent(user); RaiseLocalEvent(ingested, ref ev); solution = ev.Solution; time = ev.Time; - return !ev.Cancelled && solution != null; + if (solution == null) + { + _popup.PopupClient(Loc.GetString("ingestion-try-use-is-empty", ("entity", ingested)), ingested, user); + return false; + } + + return !ev.Cancelled; } /// diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index 7733aa2cb7..e906bb93e6 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -23,6 +23,7 @@ using Content.Shared.UserInterface; using Content.Shared.Verbs; using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; using Robust.Shared.Prototypes; namespace Content.Shared.Nutrition.EntitySystems; @@ -66,7 +67,7 @@ public sealed partial class IngestionSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnEdibleInit); + SubscribeLocalEvent(OnEdibleInit); // Interactions SubscribeLocalEvent(OnUseEdibleInHand, after: [typeof(OpenableSystem), typeof(InventorySystem), typeof(ActivatableUISystem)]); @@ -83,7 +84,7 @@ public sealed partial class IngestionSystem : EntitySystem // Verbs SubscribeLocalEvent>(AddEdibleVerbs); - SubscribeLocalEvent(OnSolutionContainerChanged); + SubscribeLocalEvent(OnSolutionContainerChanged); // Misc SubscribeLocalEvent(OnAttemptShake); @@ -135,7 +136,7 @@ public sealed partial class IngestionSystem : EntitySystem return ingestionEv.Handled; } - private void OnEdibleInit(Entity entity, ref ComponentInit args) + private void OnEdibleInit(Entity entity, ref MapInitEvent args) { // Beakers, Soap and other items have drainable, and we should be able to eat that solution. // This ensures that tests fail when you configured the yaml from and EdibleComponent uses the wrong solution, @@ -161,7 +162,7 @@ public sealed partial class IngestionSystem : EntitySystem _appearance.SetData(entity, FoodVisuals.Visual, drainAvailable.Float(), entity.Comp2); } - private void OnSolutionContainerChanged(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionContainerChanged(Entity entity, ref SolutionChangedEvent args) { // The changes are already networked as part of the same game state. if (_timing.ApplyingState) @@ -381,7 +382,7 @@ public sealed partial class IngestionSystem : EntitySystem var afterEv = new IngestedEvent(args.User, entity, split, forceFed, beforeEv.Transfer >= beforeEv.Max); RaiseLocalEvent(food, ref afterEv); - _stomach.TryTransferSolution(stomachToUse.Value.Owner, split, stomachToUse); + _stomach.TryTransferSolution((stomachToUse.Value, stomachToUse.Value.Comp), split); if (!afterEv.Destroy) { diff --git a/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs b/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs index 1ddb9965b7..4f594f0f44 100644 --- a/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs @@ -30,11 +30,10 @@ public sealed partial class PressurizedSolutionSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnShake); SubscribeLocalEvent(OnOpened); SubscribeLocalEvent(OnLand); - SubscribeLocalEvent(OnSolutionUpdate); + SubscribeLocalEvent(OnSolutionUpdate); } /// @@ -242,10 +241,6 @@ public sealed partial class PressurizedSolutionSystem : EntitySystem #endregion #region Event Handlers - private void OnMapInit(Entity entity, ref MapInitEvent args) - { - RollSprayThreshold(entity); - } private void OnOpened(Entity entity, ref OpenableOpenedEvent args) { @@ -265,13 +260,13 @@ public sealed partial class PressurizedSolutionSystem : EntitySystem SprayOrAddFizziness(entity, entity.Comp.SprayChanceModOnLand, entity.Comp.FizzinessAddedOnLand); } - private void OnSolutionUpdate(Entity entity, ref SolutionContainerChangedEvent args) + private void OnSolutionUpdate(Entity entity, ref SolutionChangedEvent args) { // The changes are already networked as part of the same game state. if (_timing.ApplyingState) return; - if (args.SolutionId != entity.Comp.Solution) + if (args.Solution.Comp.Id != entity.Comp.Solution) return; // If the solution is no longer capable of being fizzy, clear any built up fizziness diff --git a/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs b/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs index b5c8ad08c5..928a9977ab 100644 --- a/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs +++ b/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs @@ -136,9 +136,6 @@ public sealed partial class FoodHasReagent : FoodMetamorphRule public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients) { - if (!entMan.TryGetComponent(food, out var solMan)) - return false; - var solutionMan = entMan.System(); if (!solutionMan.TryGetSolution(food, Solution, out var foodSoln, out var foodSolution)) diff --git a/Content.Shared/Tools/Components/WelderComponent.cs b/Content.Shared/Tools/Components/WelderComponent.cs index a9111c7f53..59a7bd51e1 100644 --- a/Content.Shared/Tools/Components/WelderComponent.cs +++ b/Content.Shared/Tools/Components/WelderComponent.cs @@ -41,7 +41,7 @@ public sealed partial class WelderComponent : Component /// Name of the fuel solution. /// [DataField] - public string FuelSolutionName = "Welder"; + public string FuelSolutionName = "welder"; /// /// Reagent that will be used as fuel for welding. diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs b/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs index 1507b1d6e8..b0da547a27 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.Welder.cs @@ -57,9 +57,9 @@ public abstract partial class SharedToolSystem Dirty(entity, entity.Comp); } - public (FixedPoint2 fuel, FixedPoint2 capacity) GetWelderFuelAndCapacity(EntityUid uid, WelderComponent? welder = null, SolutionContainerManagerComponent? solutionContainer = null) + public (FixedPoint2 fuel, FixedPoint2 capacity) GetWelderFuelAndCapacity(EntityUid uid, WelderComponent? welder = null, SolutionManagerComponent? solutionContainer = null) { - if (!Resolve(uid, ref welder, ref solutionContainer)) + if (!Resolve(uid, ref welder)) return default; if (!SolutionContainerSystem.TryGetSolution( @@ -209,7 +209,8 @@ public abstract partial class SharedToolSystem private void UpdateWelders() { - var query = EntityQueryEnumerator(); + // TODO: Same as the other EntityQueryEnumerators... + var query = EntityQueryEnumerator(); var curTime = _timing.CurTime; while (query.MoveNext(out var uid, out var welder, out var solutionContainer)) { diff --git a/Resources/Locale/en-US/reagents/meta/fun.ftl b/Resources/Locale/en-US/reagents/meta/fun.ftl index eb4ff634d7..ce9a08170a 100644 --- a/Resources/Locale/en-US/reagents/meta/fun.ftl +++ b/Resources/Locale/en-US/reagents/meta/fun.ftl @@ -10,8 +10,8 @@ reagent-desc-buzzochloric-bees = Liquid bees. Oh god it's LIQUID BEES NO- reagent-name-ground-bee = ground Bee reagent-desc-ground-bee = Bee grounds. Gross. -reagent-name-saxoite = saxoite -reagent-desc-saxoite = Smells like jazz. +reagent-name-brass = brass +reagent-desc-brass = Smells like clockwork. reagent-name-licoxide = licoxide reagent-desc-licoxide = A synthetic battery acid. It looks... electrifying. diff --git a/Resources/Prototypes/Body/Animals/ruminant.yml b/Resources/Prototypes/Body/Animals/ruminant.yml index a6ca80975e..f880f129e3 100644 --- a/Resources/Prototypes/Body/Animals/ruminant.yml +++ b/Resources/Prototypes/Body/Animals/ruminant.yml @@ -9,10 +9,18 @@ - Ruminant - Wheat - BananaPeel - - type: SolutionContainerManager + - type: SolutionManager solutions: - stomach: - maxVol: 80 + - SolutionStomachRuminant + +- type: entity + parent: SolutionStomach + id: SolutionStomachRuminant + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 240 - type: entity id: BaseMobRuminant diff --git a/Resources/Prototypes/Body/Species/arachnid.yml b/Resources/Prototypes/Body/Species/arachnid.yml index e1b8e5dcdd..92c9a0c496 100644 --- a/Resources/Prototypes/Body/Species/arachnid.yml +++ b/Resources/Prototypes/Body/Species/arachnid.yml @@ -112,7 +112,7 @@ bloodReferenceSolution: reagents: - ReagentId: CopperBlood - Quantity: 300 + Quantity: 600 - type: MeleeWeapon animation: WeaponArcBite soundHit: diff --git a/Resources/Prototypes/Body/Species/diona.yml b/Resources/Prototypes/Body/Species/diona.yml index bab251032b..5673853e48 100644 --- a/Resources/Prototypes/Body/Species/diona.yml +++ b/Resources/Prototypes/Body/Species/diona.yml @@ -101,7 +101,7 @@ bloodReferenceSolution: reagents: - ReagentId: Sap - Quantity: 300 + Quantity: 600 - type: Reactive groups: Flammable: [ Touch ] diff --git a/Resources/Prototypes/Body/Species/gingerbread.yml b/Resources/Prototypes/Body/Species/gingerbread.yml index 5c429af01c..088d7d685a 100644 --- a/Resources/Prototypes/Body/Species/gingerbread.yml +++ b/Resources/Prototypes/Body/Species/gingerbread.yml @@ -60,9 +60,9 @@ bloodReferenceSolution: reagents: - ReagentId: Sugar - Quantity: 100 - - ReagentId: Butter Quantity: 200 + - ReagentId: Butter + Quantity: 400 - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Body/Species/moth.yml b/Resources/Prototypes/Body/Species/moth.yml index 4b46381c3c..d40ccad10d 100644 --- a/Resources/Prototypes/Body/Species/moth.yml +++ b/Resources/Prototypes/Body/Species/moth.yml @@ -157,7 +157,7 @@ bloodReferenceSolution: reagents: - ReagentId: InsectBlood - Quantity: 300 + Quantity: 600 - type: DamageVisuals damageOverlayGroups: Brute: diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml index f0ba746a6f..6f0a03b1e7 100644 --- a/Resources/Prototypes/Body/Species/slime.yml +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -134,7 +134,7 @@ bloodReferenceSolution: # TODO Color slime blood based on their slime color or smth reagents: - ReagentId: Slime - Quantity: 300 + Quantity: 600 - type: Barotrauma damage: types: @@ -255,10 +255,9 @@ id: OrganSlimePersonCore name: sentient slime core components: - - type: SolutionContainerManager + - type: SolutionManager solutions: - stomach: - maxVol: 50.0 + - SolutionStomach - type: Stomach - type: Metabolizer maxReagents: 6 diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index dabfebcb55..b889d5acc3 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -247,7 +247,7 @@ bloodReferenceSolution: reagents: - ReagentId: AmmoniaBlood - Quantity: 300 + Quantity: 600 - type: MeleeWeapon soundHit: collection: AlienClaw diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 616b371361..9daf7b2997 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -204,7 +204,7 @@ bloodReferenceSolution: reagents: - ReagentId: SulfurBlood - Quantity: 300 + Quantity: 600 - type: CreamPied sprite: sprite: Effects/creampie.rsi diff --git a/Resources/Prototypes/Body/base_organs.yml b/Resources/Prototypes/Body/base_organs.yml index 0cfaf8b4ac..924759a43e 100644 --- a/Resources/Prototypes/Body/base_organs.yml +++ b/Resources/Prototypes/Body/base_organs.yml @@ -334,11 +334,9 @@ - type: Lung - type: Metabolizer stages: [ Respiration ] - - type: SolutionContainerManager + - type: SolutionManager solutions: - Lung: - maxVol: 100.0 - canReact: false + - SolutionLungGas - type: Sprite layers: - state: lung-l @@ -346,6 +344,17 @@ - type: Item heldPrefix: lungs +- type: entity + parent: Solution + id: SolutionLungGas # TODO: Metabolize directly from gasses :( + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: Lung + solution: + maxVol: 100.0 + canReact: false + - type: entity parent: OrganBase id: OrganBaseHeart @@ -372,10 +381,9 @@ - type: Organ category: Stomach - type: Stomach - - type: SolutionContainerManager + - type: SolutionManager solutions: - stomach: - maxVol: 50 + - SolutionStomach - type: Metabolizer maxReagents: 3 stages: [ Digestion ] @@ -385,6 +393,16 @@ - type: Item heldPrefix: stomach +- type: entity + parent: Solution + id: SolutionStomach + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: stomach + solution: + maxVol: 150 # 1.25 liters which is average for a human + - type: entity parent: OrganBase id: OrganBaseLiver diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 4dfe9a6613..3dbe34a1a4 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -45,13 +45,9 @@ storagebase: !type:AllSelector children: - id: JugBicaridine - - id: JugPuncturase - - id: JugDermaline - - id: JugDylovene - - id: JugHyronalin - - id: JugSaline - - id: JugDexalinPlus - - id: JugTranexamicAcid + - id: JugPunctTranex + - id: JugPyraDerma + - id: JugDexPlusSaline - type: entity parent: ClothingBackpackDuffelSyndicateBundle diff --git a/Resources/Prototypes/Chemistry/injector_modes.yml b/Resources/Prototypes/Chemistry/injector_modes.yml index 1e2b38aa41..6b2e0b96f7 100644 --- a/Resources/Prototypes/Chemistry/injector_modes.yml +++ b/Resources/Prototypes/Chemistry/injector_modes.yml @@ -48,7 +48,8 @@ - 5 - 10 - 15 - - 50 + - 30 + - 60 - type: injectorMode parent: [ BaseSyringeMode, BaseInjectMode ] @@ -66,14 +67,6 @@ parent: [ BaseBluespaceSyringeMode, BaseDrawMode ] id: BluespaceSyringeDrawMode -- type: injectorMode - parent: [ BaseCryostasisSyringeMode, BaseInjectMode ] - id: CryostasisSyringeInjectMode - -- type: injectorMode - parent: [ BaseCryostasisSyringeMode, BaseDrawMode ] - id: CryostasisSyringeDrawMode - ## Dropper - type: injectorMode abstract: true diff --git a/Resources/Prototypes/Entities/Clothing/Back/specific.yml b/Resources/Prototypes/Entities/Clothing/Back/specific.yml index c440fe9a66..9188f7f064 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/specific.yml @@ -20,7 +20,7 @@ type: ChameleonBoundUserInterface - type: entity - parent: [Clothing, ClothingSlotBase] + parent: [SolutionTank, SolutionGinormous, Clothing, ClothingSlotBase] id: ClothingBackpackWaterTank name: backpack water tank description: Holds a large amount of fluids. Supplies to spray nozzles in your hands, and has a slot on the side for said spray nozzles. @@ -54,10 +54,6 @@ - type: SolutionAmmoProvider solutionId: tank proto: BulletWaterShot - - type: SolutionContainerManager - solutions: - tank: - maxVol: 1000 #much water - type: SolutionTransfer transferAmount: 50 maxTransferAmount: 100 diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml index c5baa4f4ad..aea649be5e 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml @@ -107,8 +107,8 @@ - WhitelistChameleon - type: entity - parent: ClothingEyesHudBase - id: ClothingEyesHudFriedOnion + parent: [SolutionFood, SolutionSmall, ClothingEyesHudBase] + id: ClothingEyesHudFriedOnion # It's been too long since I've had good onion rings... name: fried onion goggles description: Filler components: @@ -118,13 +118,11 @@ sprite: Clothing/Eyes/Hud/friedonion.rsi - type: ShowHungerIcons - type: Edible - - type: SolutionContainerManager - solutions: - food: - maxVol: 3 - reagents: - - ReagentId: Nutriment - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 - type: FlavorProfile flavors: - onion diff --git a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml index d90e02b16e..3c30cae415 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: Clothing + parent: [SolutionFood, SolutionToolSmall, Clothing] id: ClothingHandsBase components: - type: Sprite @@ -12,13 +12,11 @@ - type: Item size: Small storedRotation: -90 - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 15 - type: Tag tags: - ClothMade diff --git a/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml b/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml index 3b85ce94c9..d3845f5fb0 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: Clothing + parent: [SolutionFood, SolutionToolSmall, Clothing] id: ClothingHeadBase components: - type: Clothing @@ -13,13 +13,11 @@ storedRotation: -90 - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 15 - type: Tag tags: - ClothMade @@ -61,7 +59,7 @@ equippedPrefix: off - type: Item heldPrefix: off - size: Normal + size: Normal # I'm not updating the solution because these probably shouldn't be edible... - type: ToggleableVisuals spriteLayer: light - type: ItemTogglePointLight diff --git a/Resources/Prototypes/Entities/Clothing/Head/misc.yml b/Resources/Prototypes/Entities/Clothing/Head/misc.yml index 5584a7c076..b9167595b5 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/misc.yml @@ -302,7 +302,7 @@ - FacialHair - type: entity - parent: Clothing + parent: [SolutionDrink, Clothing] id: WaterDropletHat name: water droplet description: Makes 8-eyed friends 8 times more adorable! @@ -328,13 +328,12 @@ - water - type: DrainableSolution solution: drink - - type: SolutionContainerManager - solutions: - drink: - maxVol: 2 - reagents: - - ReagentId: Water - Quantity: 2 + - type: Solution + solution: + maxVol: 2 # Droplets are pretty small. + reagents: + - ReagentId: Water + Quantity: 2 - type: DamageOnHighSpeedImpact minimumSpeed: 0.1 damage: diff --git a/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml b/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml index 6ab6da4c0f..952e3da407 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml @@ -32,9 +32,9 @@ event: !type:ToggleMaskEvent - type: entity - id: ClothingMaskBaseButcherable - parent: ClothingMaskBase abstract: true + parent: [SolutionFood, SolutionToolSmall, ClothingMaskBase] + id: ClothingMaskBaseButcherable components: - type: Butcherable butcheringType: Knife @@ -46,13 +46,11 @@ Cloth: 50 - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 15 - type: Tag tags: - ClothMade diff --git a/Resources/Prototypes/Entities/Clothing/Multiple/towel.yml b/Resources/Prototypes/Entities/Clothing/Multiple/towel.yml index dff5aa7901..c80fd341cc 100644 --- a/Resources/Prototypes/Entities/Clothing/Multiple/towel.yml +++ b/Resources/Prototypes/Entities/Clothing/Multiple/towel.yml @@ -1,9 +1,9 @@ - type: entity + abstract: true + parent: [UnsensoredClothingUniformBase, ClothingHeadBase, ClothingBeltBase] id: BaseTowel name: base towel - abstract: true description: If you want to survive out here, you gotta know where your towel is. - parent: [ UnsensoredClothingUniformBase, ClothingHeadBase, ClothingBeltBase ] components: - type: Sprite sprite: Clothing/Multiple/towel.rsi @@ -21,15 +21,9 @@ spillWhenThrown: false - type: Absorbent pickupAmount: 15 - - type: SolutionContainerManager + - type: SolutionManager solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Fiber - Quantity: 30 - absorbed: - maxVol: 30 + - SolutionMopSmall - type: UseDelay delay: 1 - type: Fiber diff --git a/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml b/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml index 2e1b0dea73..c4e0bb6e02 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: Clothing + parent: [SolutionFood, SolutionToolSmall, Clothing] id: ClothingNeckBase components: - type: Item @@ -21,13 +21,11 @@ Cloth: 100 - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 15 - type: Tag tags: - ClothMade diff --git a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml index af23e97116..876fc2fde8 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml @@ -263,7 +263,7 @@ equippedPrefix: goldautism - type: entity - parent: BaseItem + parent: [SolutionSpray, SolutionTiny, BaseItem] id: SprayFlowerPin name: flower pin description: A cute flower pin. Something seems off with it... @@ -281,13 +281,11 @@ - neck - type: EquipSpray verbLocId: equip-spray-verb-press - - type: SolutionContainerManager - solutions: - spray: - maxVol: 30 - reagents: - - ReagentId: Water - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 30 - type: RefillableSolution solution: spray - type: DrainableSolution diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index b6cf2e4e6a..762f92e355 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -48,6 +48,19 @@ - type: StaticPrice price: 70 +- type: entity + abstract: true + parent: [SolutionFood, SolutionNormal, ClothingOuterStorageBase] + id: ClothingOuterStorageEdible + components: + - type: Edible + requiresSpecialDigestion: true + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 60 + - type: entity abstract: true parent: [ClothingOuterStorageBase, BaseFoldable] diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index bf92009013..235650d789 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -123,7 +123,7 @@ id: SyndieHandyFlag - type: entity - parent: ClothingOuterStorageBase + parent: ClothingOuterStorageEdible id: ClothingOuterCoatTrench name: trench coat description: A comfy trench coat. @@ -139,15 +139,6 @@ modifiers: coefficients: Slash: 0.95 - - type: Edible - requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Fiber - Quantity: 20 - type: entity parent: ClothingOuterStorageFoldableBase diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index 8c78b46277..f67d9eb82e 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -1,5 +1,5 @@ - type: entity - parent: ClothingOuterStorageBase + parent: ClothingOuterStorageEdible id: ClothingOuterWinterCoat name: winter coat description: A heavy jacket made from 'synthetic' animal furs. @@ -21,15 +21,6 @@ priceMultiplier: 0 - type: ZombificationResistance zombificationResistanceCoefficient: 0.55 - - type: Edible - requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Fiber - Quantity: 30 - type: Tag tags: - ClothMade @@ -875,13 +866,11 @@ - cobwebs ignoreReagents: - Fiber - - type: SolutionContainerManager - solutions: # 15 (3 (fiber count of web) * 5 (to craft)) + 5 (magical crafting bonus) - food: - maxVol: 20 - reagents: - - ReagentId: Fiber - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 50 # 50 (10 (fiber count of web) * 5 (to craft)) - type: ToggleableClothing clothingPrototype: ClothingHeadHatHoodWinterWeb diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml index cd945af5e3..73a0d66464 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: Clothing + parent: [SolutionFood, SolutionToolNormal, Clothing] id: ClothingShoesBase components: - type: Clothing @@ -12,13 +12,11 @@ size: Normal - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 30 - type: Tag tags: - ClothMade diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml index 0fd65eaccb..67596970ca 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml @@ -190,13 +190,11 @@ - cobwebs ignoreReagents: - Fiber - - type: SolutionContainerManager - solutions: # 6 (3 (fiber count of web) * 2 (to craft)) + 4 (magical crafting bonus) - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: # 20 (10 (fiber count of web) * 2 (to craft)) + reagents: + - ReagentId: Fiber + Quantity: 20 - type: Butcherable spawned: - id: MaterialWebSilk1 diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml index db8e3bb603..2f499bc2e6 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/misc.yml @@ -79,15 +79,13 @@ reagents: - ReagentId: JuiceThatMakesYouWeh Quantity: 60 - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Fiber - Quantity: 20 - - ReagentId: JuiceThatMakesYouWeh - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Fiber # Lose some fiber from gutting the lizard and turning it into a shoe. You monster. + Quantity: 20 + - ReagentId: JuiceThatMakesYouWeh + Quantity: 20 - type: entity parent: ClothingShoesBaseButcherable diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml index 0abbfebc2a..7039858584 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: Clothing + parent: [SolutionFood, SolutionToolNormal, Clothing] id: UnsensoredClothingUniformBase components: - type: Sprite @@ -19,13 +19,11 @@ Cloth: 150 - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Fiber - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 30 - type: Tag tags: - ClothMade diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 64cd197c69..2a7a6b38c0 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -735,13 +735,6 @@ - cobwebs ignoreReagents: - Fiber - - type: SolutionContainerManager - solutions: # 24 (3 (fiber count of web) * 8 (to craft)) + 6 (magical crafting bonus) - food: - maxVol: 30 - reagents: - - ReagentId: Fiber - Quantity: 30 - type: Construction graph: WebObjects node: jumpskirt diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index b94b8dcd66..9051a15c7b 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -1204,13 +1204,6 @@ - cobwebs ignoreReagents: - Fiber - - type: SolutionContainerManager - solutions: # 24 (3 (fiber count of web) * 8 (to craft)) + 6 (magical crafting bonus) - food: - maxVol: 30 - reagents: - - ReagentId: Fiber - Quantity: 30 - type: Construction graph: WebObjects node: jumpsuit diff --git a/Resources/Prototypes/Entities/Debugging/drugs.yml b/Resources/Prototypes/Entities/Debugging/drugs.yml deleted file mode 100644 index 0ba92443ad..0000000000 --- a/Resources/Prototypes/Entities/Debugging/drugs.yml +++ /dev/null @@ -1,16 +0,0 @@ -- type: entity - parent: [DrinkBaseMaterialGlass, DrinkBase] - id: DrinkMeth - name: meth # beer it is. coffee. beer? coff-ee? be-er? c-o... b-e - description: Just a whole glass of meth. - suffix: DEBUG - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 20 - reagents: - - ReagentId: Desoxyephedrine - Quantity: 20 - - type: Sprite - sprite: Objects/Consumable/Drinks/beer.rsi diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 05660888e8..ca837b7acc 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -25,11 +25,11 @@ - type: ActiveEdgeSpreader - type: EdgeSpreader id: Smoke - - type: SolutionContainerManager - solutions: - solutionArea: - maxVol: 600 - canReact: false + - type: Solution + id: solutionArea + solution: + maxVol: 600 # Required for it to spawn correctly, but should be removed in the future:tm: Arguably could move the solution to SmokeComponent as well considering it's nonreactive + canReact: false - type: entity parent: BaseFoam diff --git a/Resources/Prototypes/Entities/Effects/puddle.yml b/Resources/Prototypes/Entities/Effects/puddle.yml index dbde82b534..05b3106ad3 100644 --- a/Resources/Prototypes/Entities/Effects/puddle.yml +++ b/Resources/Prototypes/Entities/Effects/puddle.yml @@ -1,4 +1,5 @@ # TODO: Fix - The idea is that blood and vomit is potentially not tile-bound versions of puddles(?) +# TODO: Replace this whole thing with a SolutionFillComponent that uses a reagent table. - type: entity id: PuddleTemporary parent: Puddle @@ -18,117 +19,99 @@ parent: PuddleTemporary suffix: Vomit components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: Vomit - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Vomit + Quantity: 10 - type: entity id: PuddleEgg parent: PuddleTemporary suffix: Egg components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: Egg - Quantity: 6 # same as when cooking + - type: Solution + solution: + reagents: + - ReagentId: Egg + Quantity: 6 # same as when cooking - type: entity id: PuddleTomato parent: PuddleTemporary suffix: Tomato components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: JuiceTomato - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: JuiceTomato + Quantity: 10 - type: entity parent: PuddleTemporary id: PuddleBloodSmall suffix: Blood (5u) components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: Blood - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 5 - type: entity parent: PuddleTemporary id: PuddleBlood suffix: Blood (30u) components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: Blood - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 30 - type: entity parent: PuddleTemporary id: PuddleFluorosulfuricAcidSmall suffix: FluorosulfuricAcid (5u) components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: FluorosulfuricAcid - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: FluorosulfuricAcid + Quantity: 5 - type: entity parent: PuddleTemporary id: PuddleFluorosulfuricAcid suffix: FluorosulfuricAcid (15u) components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: FluorosulfuricAcid - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: FluorosulfuricAcid + Quantity: 15 - type: entity id: PuddleWatermelon parent: PuddleTemporary suffix: Watermelon components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: JuiceWatermelon - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: JuiceWatermelon + Quantity: 30 - type: entity id: PuddleFlour parent: PuddleTemporary suffix: Flour components: - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - reagents: - - ReagentId: Flour - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Flour + Quantity: 15 - type: entity id: PuddleSparkle @@ -151,8 +134,9 @@ color: "#FFFFFF80" - type: entity - name: puddle + parent: SolutionTile id: Puddle + name: puddle description: A puddle of liquid. placement: mode: SnapgridCenter @@ -189,11 +173,9 @@ - walls base: splat mode: CardinalFlags - - type: SolutionContainerManager - solutions: - puddle: - maxVol: 1000 - type: Puddle + - type: Solution + id: puddle - type: MixableSolution solution: puddle - type: Appearance diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 1ec65e2dc6..a4cc78054b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -84,7 +84,7 @@ - type: entity name: bee - parent: [ SimpleMobBase, FlyingMobBase ] + parent: [ SolutionFood, SolutionTiny, SimpleMobBase, FlyingMobBase ] id: MobBee description: Nice to have, but you can't build a civilization on a foundation of honey alone. components: @@ -127,12 +127,11 @@ Base: dead - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: GroundBee - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: GroundBee + Quantity: 1 - type: Butcherable spawned: - id: null # Should give nothing when you butcher it so we set the item id it needs to spawn to null @@ -353,7 +352,7 @@ - type: entity name: cockroach - parent: SimpleMobBase + parent: [SolutionFood, SolutionTiny, SimpleMobBase] id: MobCockroach description: This station is just crawling with bugs. components: @@ -412,12 +411,11 @@ baseDecayRate: 0.25 - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Slime - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Slime + Quantity: 5 - type: Butcherable spawned: - id: FoodMeatSlime @@ -789,7 +787,7 @@ - type: entity name: butterfly - parent: [ SimpleMobBase, FlyingMobBase ] + parent: [ SolutionFood, SolutionTiny, SimpleMobBase, FlyingMobBase ] id: MobButterfly description: Despite popular misconceptions, it's not actually made of butter. components: @@ -832,12 +830,11 @@ Base: dead - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 1 - type: Butcherable spawned: - id: null # Should give nothing when you butcher it so we set the item id it needs to spawn to null @@ -907,13 +904,9 @@ Base: dead Dead: Base: dead - - type: SolutionContainerManager + - type: SolutionManager solutions: - udder: - maxVol: 250 - reagents: - - ReagentId: Milk - Quantity: 30 + - SolutionUdder - type: Udder reagentId: Milk quantityPerUpdate: 25 @@ -947,6 +940,19 @@ - Chef - FoodRecipes +- type: entity + parent: Solution + id: SolutionUdder + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: food # TODO This should really use a different id... + solution: + maxVol: 240 + reagents: + - ReagentId: Milk + Quantity: 30 + - type: entity name: crab parent: [ SimpleMobBase, BaseMobHemocyanin ] @@ -1060,15 +1066,10 @@ Base: dead Dead: Base: dead - - type: SolutionContainerManager + - type: SolutionManager solutions: - udder: - maxVol: 250 - reagents: - - ReagentId: MilkGoat - Quantity: 30 - wool: - maxVol: 250 + - SolutionUdderGoat + - SolutionWool - type: Udder reagentId: MilkGoat quantityPerUpdate: 25 @@ -1116,6 +1117,29 @@ rootTask: task: RuminantHostileCompound +- type: entity + parent: SolutionUdder + id: SolutionUdderGoat + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: food + solution: + maxVol: 240 + reagents: + - ReagentId: MilkGoat + Quantity: 30 + +- type: entity + parent: Solution + id: SolutionWool + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: wool + solution: + maxVol: 240 + # Note that we gotta make this bitch vomit someday when you feed it anthrax or sumthin. Needs to be a small item thief too and aggressive if attacked. - type: entity name: goose @@ -1716,9 +1740,7 @@ - type: entity name: mouse - parent: - - SimpleMobBase - - BaseMobAnimal + parent: [SimpleMobBase, BaseMobAnimal, SolutionVermin] id: MobMouse description: Squeak! components: @@ -1750,7 +1772,6 @@ movement: state: mouse-0 - type: Item - size: Tiny heldPrefix: 0 - type: Clothing quickEquip: false @@ -1826,12 +1847,6 @@ baseDecayRate: 0.5 # I'm very hungry! Give me. The cheese. - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - type: Butcherable spawned: - id: FoodMeatRat @@ -1900,6 +1915,17 @@ - !type:GibBehavior recursive: false +- type: entity + abstract: true + parent: [SolutionFood, SolutionTiny] + id: SolutionVermin + components: + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 15 + - type: entity parent: MobMouse suffix: Dead @@ -1916,22 +1942,6 @@ Slash: 7 Blunt: 3 -- type: entity - parent: MobMouse - id: MobMouseAdmeme - suffix: Admeme - components: - # allow admeme mouse to eat pills - - type: IgnoreBadFood - # intended for swarms that eat pills so only temporary - - type: TimedDespawn - lifetime: 60 - - type: Hunger - baseDecayRate: 10 # always hungry - starvingSlowdownModifier: 1 - - type: Thirst - baseDecayRate: 10 # always thirsty - - type: entity parent: MobMouse id: MobMouse1 @@ -2017,14 +2027,13 @@ reagents: - ReagentId: UnstableMutagen Quantity: 50 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Uranium - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 5 + - ReagentId: Uranium + Quantity: 10 - type: Butcherable spawned: - id: FoodMeatRat @@ -2091,7 +2100,6 @@ tags: - VimPilot - - type: entity name: slug parent: SimpleMobBase @@ -2517,10 +2525,9 @@ thresholds: 0: Alive 90: Dead - - type: SolutionContainerManager + - type: SolutionManager solutions: - melee: - maxVol: 30 + - SolutionVenomSpider - type: SolutionRegeneration solution: melee generated: @@ -2583,6 +2590,11 @@ Cold: -0.03 Shock: -0.03 +- type: entity + parent: [SolutionWeapon, SolutionTiny] + id: SolutionVenomSpider + categories: [ HideSpawnMenu ] + - type: entity parent: MobSpiderBase id: MobSpiderAngryBase @@ -3512,16 +3524,16 @@ baseDecayRate: 0.3 - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Blood - Quantity: 55 - - ReagentId: Fat - Quantity: 5 + - type: Solution + id: food + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Blood # TODO Instead of this, eat from the bloodstream directly + Quantity: 55 + - ReagentId: Fat + Quantity: 5 - type: Butcherable spawned: - id: FoodMeat diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml index 921f88de36..3b5cb7b982 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml @@ -1,6 +1,6 @@ - type: entity save: false - parent: [ BaseSimpleMob, BaseMobAnimal, MobCombat ] + parent: [ BaseSimpleMob, BaseMobAnimal, MobCombat, MobBloodstream ] id: BaseMobArgocyte suffix: AI description: A dangerous alien found on the wrong side of planets, known for their propensity for munching on ruins. @@ -14,7 +14,6 @@ task: SimpleHostileCompound #todo custom argocyte AI - type: Sprite sprite: Mobs/Aliens/Argocyte/argocyte_common.rsi - - type: SolutionContainerManager - type: ReplacementAccent accent: xeno - type: Bloodstream diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml index 61eb23c929..950fd3c510 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml @@ -306,13 +306,11 @@ name: hivelord remains description: All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Rororium - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Rororium + Quantity: 5 - type: Sprite sprite: Objects/Consumable/Food/rorocore.rsi state: boiled diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/moproach.yml b/Resources/Prototypes/Entities/Mobs/NPCs/moproach.yml index c38b2cedf7..60f8c0f138 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/moproach.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/moproach.yml @@ -40,16 +40,9 @@ preserve: - Water quantity: 10 - - type: SolutionContainerManager + - type: SolutionManager solutions: - absorbed: - maxVol: 50 - food: - reagents: - - ReagentId: Slime - Quantity: 5 - - type: DrainableSolution - solution: drainBuffer + - SolutionMopNormal - type: InteractionPopup interactSuccessString: petting-success-cleanbot interactFailureString: petting-failure-cleanbot diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index b489ff3767..a615e5ebab 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -112,7 +112,7 @@ speechSounds: Pai #couldn't decide if this should be borg or pai sounds so I flipped a coin. - type: entity - parent: MobSiliconBase + parent: [MobSiliconBase, SolutionFireExtinguisherMini] id: MobFireBot name: firebot description: A little fire extinguishing bot. He looks rather anxious. @@ -126,13 +126,6 @@ - type: HTN rootTask: task: FirebotCompound - - type: SolutionContainerManager - solutions: - spray: - maxVol: 10 - reagents: - - ReagentId: Water - Quantity: 10 - type: SolutionRegeneration solution: spray generated: @@ -264,7 +257,7 @@ canCreateVacuum: false - type: entity - parent: MobSiliconBase + parent: [MobSiliconBase, SolutionMopNormal] id: MobCleanBot name: cleanbot description: The creep of automation now threatening space janitors. @@ -290,18 +283,12 @@ preserve: - Water quantity: 10 - - type: SolutionContainerManager - solutions: - absorbed: - maxVol: 50 - type: MovementSpeedModifier baseWalkSpeed: 2 baseSprintSpeed: 3 - type: HTN rootTask: task: CleanbotCompound - - type: DrainableSolution - solution: drainBuffer - type: InteractionPopup interactSuccessString: petting-success-cleanbot interactFailureString: petting-failure-cleanbot diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 1cffe9cb71..3a21fde727 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -243,12 +243,9 @@ types: Piercing: 6 Poison: 4 - - type: SolutionContainerManager + - type: SolutionManager solutions: - melee: - reagents: - - ReagentId: ChloralHydrate - Quantity: 80 + - SolutionVenomSpiderSpace - type: MeleeChemicalInjector solution: melee transferAmount: 4 @@ -276,6 +273,17 @@ - type: TypingIndicator proto: spider +- type: entity + parent: [SolutionWeapon, SolutionTiny] + id: SolutionVenomSpiderSpace + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: ChloralHydrate + Quantity: 30 + - type: entity id: MobSpiderSpaceSalvage parent: MobSpiderSpace @@ -349,12 +357,9 @@ types: Piercing: 6 Poison: 4 - - type: SolutionContainerManager + - type: SolutionManager solutions: - melee: - reagents: - - ReagentId: NorepinephricAcid - Quantity: 90 + - SolutionVenomCobraSpace - type: MeleeChemicalInjector solution: melee transferAmount: 6 @@ -375,6 +380,17 @@ passiveVisibilityRate: -0.25 movementVisibilityRate: 0.25 +- type: entity + parent: [SolutionWeapon, SolutionTiny] + id: SolutionVenomCobraSpace + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: NorepinephricAcid + Quantity: 30 + - type: entity id: MobCobraSpaceSalvage parent: MobCobraSpace @@ -383,9 +399,7 @@ - type: SalvageMobRestrictions - type: entity - parent: - - SimpleSpaceMobBase - - BaseMobAnimal + parent: [SimpleSpaceMobBase, BaseMobAnimal, SolutionVermin] id: MobSnail name: snail description: Revolting unless you're french. @@ -462,6 +476,15 @@ Dead: Base: dead - type: Edible + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 8 + - ReagentId: Fat + Quantity: 3 + - ReagentId: Water + Quantity: 4 #It makes saline if you add salt! - type: Thirst startingThirst: 25 # spawn with Okay thirst state thresholds: @@ -481,16 +504,6 @@ baseDecayRate: 0.1 - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - type: Butcherable - spawned: - - id: FoodMeatSnail - amount: 1 - type: Tag tags: - Trash diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml index 0a35ebf5e5..df26033c6b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml @@ -79,12 +79,9 @@ damage: types: Piercing: 2 - - type: SolutionContainerManager + - type: SolutionManager solutions: - melee: - reagents: - - ReagentId: Toxin - Quantity: 5 + - SolutionVenomTick - type: MeleeChemicalInjector solution: melee - type: ReplacementAccent @@ -93,6 +90,18 @@ speechVerb: SmallMob - type: NonSpreaderZombie +- type: entity + parent: Solution + id: SolutionVenomTick + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: melee + solution: + reagents: + - ReagentId: Toxin + Quantity: 5 + - type: entity id: MobTickSalvage parent: MobTick diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index 29793609e1..bf5faa5fef 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -70,7 +70,7 @@ bloodReferenceSolution: reagents: - ReagentId: FluorosulfuricAcid - Quantity: 650 + Quantity: 1300 - type: MeleeWeapon altDisarm: false angle: 0 @@ -403,12 +403,9 @@ damage: types: Piercing: 5 - - type: SolutionContainerManager + - type: SolutionManager solutions: - melee: - reagents: - - ReagentId: Toxin - Quantity: 50 + - SolutionVenomPurpleSnake - type: MeleeChemicalInjector solution: melee - type: Fixtures @@ -430,6 +427,17 @@ - DoorBumpOpener - FootstepSound +- type: entity + parent: [SolutionWeapon, SolutionTiny] + id: SolutionVenomPurpleSnake + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: Toxin + Quantity: 30 + - type: entity name: space adder parent: MobPurpleSnake @@ -498,7 +506,7 @@ bloodReferenceSolution: reagents: - ReagentId: FluorosulfuricAcid - Quantity: 300 + Quantity: 600 - type: MeleeWeapon altDisarm: false angle: 0 @@ -565,15 +573,23 @@ - type: Tag tags: - CannotSuicide - - type: SolutionContainerManager # Being hit speeds you up so you can escape + - type: SolutionManager # Being hit speeds you up so you can escape solutions: - bite: - reagents: - - ReagentId: Stimulants - Quantity: 50 - - ReagentId: TranexamicAcid - Quantity: 50 + - SolutionVenomDale - type: MeleeChemicalInjector transferAmount: 1 - solution: bite + solution: melee pierceArmor: true + +- type: entity + parent: [SolutionWeapon, SolutionNormal] + id: SolutionVenomDale + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: Stimulants + Quantity: 50 + - ReagentId: TranexamicAcid + Quantity: 50 diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index 8c74d49989..45e3b9a3fe 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -262,7 +262,7 @@ id: MobBloodstream abstract: true components: - - type: SolutionContainerManager + - type: SolutionManager - type: InjectableSolution solution: bloodstream - type: Bloodstream diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml index f1f4ad06d0..d655517df9 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml @@ -1,8 +1,7 @@ - type: entity abstract: true - parent: [ DrinkBaseMaterialCardboard, DrinkBase, DrinkBaseOpenable, DrinkVisualsOpenable ] - id: DrinkCartonBaseFull - suffix: Full + parent: [ DrinkBaseMaterialCardboard, SolutionNormal, DrinkBase, DrinkBaseOpenable, DrinkVisualsOpenable, DrinkBaseEmptyTrash ] + id: DrinkCartonBase components: - type: Openable sound: @@ -10,36 +9,53 @@ closeable: true closeSound: collection: bottleCloseSounds - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - - type: TrashOnSolutionEmpty - solution: drink - - type: Item - size: Normal - type: entity abstract: true - parent: DrinkCartonBaseFull - id: DrinkCartonSmallBaseFull + parent: DrinkCartonBase + id: DrinkCartonBaseFull + suffix: Full + components: + - type: Tag + tags: [] + +- type: entity + abstract: true + parent: [SolutionSmall, DrinkCartonBase ] + id: DrinkCartonSmallBase components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - type: Item size: Small - type: entity abstract: true - parent: DrinkCartonBaseFull - id: DrinkCartonBaseXtraLargeFull + parent: DrinkCartonSmallBase + id: DrinkCartonSmallBaseFull + suffix: Full + components: + - type: Tag + tags: [ ] + +- type: entity + abstract: true + parent: [SolutionLarge, DrinkCartonBase ] + id: DrinkCartonBaseLarge + components: + - type: Item + size: Large + shape: + - 0,0,1,3 + - type: Tag + tags: + - DrinkBottle # Need this to fit in the soda dispenser, probably needs a better name + - Trash + +- type: entity + abstract: true + parent: DrinkCartonBaseLarge + id: DrinkCartonBaseLargeFull + suffix: Full components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - type: Tag tags: - DrinkBottle # Need this to fit in the soda dispenser, probably needs a better name @@ -47,92 +63,118 @@ # Small carton - type: entity - parent: [DrinkBaseMaterialPlastic, DrinkCartonSmallBaseFull] - id: DrinkJuiceLimeCarton + parent: [DrinkBaseMaterialPlastic, DrinkCartonSmallBase] + id: DrinkCartonLime name: lime juice description: Sweet-sour goodness. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: JuiceLime - Quantity: 50 - type: Sprite sprite: Objects/Consumable/Drinks/limejuice.rsi - type: entity - parent: DrinkCartonSmallBaseFull - id: DrinkJuiceOrangeCarton + parent: DrinkCartonLime + id: DrinkJuiceLimeCarton + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: JuiceLime + Quantity: 60 + - type: Tag + tags: [ ] + +- type: entity + parent: DrinkCartonSmallBase + id: DrinkCartonOrange name: orange juice description: Full of vitamins and deliciousness! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: JuiceOrange - Quantity: 50 - type: Sprite sprite: Objects/Consumable/Drinks/orangejuice.rsi - type: entity - parent: DrinkCartonSmallBaseFull - id: DrinkJuiceTomatoCarton + parent: DrinkCartonOrange + id: DrinkJuiceOrangeCarton + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: JuiceOrange + Quantity: 60 + - type: Tag + tags: [ ] + +- type: entity + parent: DrinkCartonSmallBase + id: DrinkCartonTomato name: tomato juice description: Well, at least it LOOKS like tomato juice. You can't tell with all that redness. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: JuiceTomato - Quantity: 50 - type: Sprite sprite: Objects/Consumable/Drinks/tomatojuice.rsi +- type: entity + parent: DrinkCartonTomato + id: DrinkJuiceTomatoCarton + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: JuiceTomato + Quantity: 60 + - type: Tag + tags: [] + - type: entity parent: DrinkCartonSmallBaseFull id: DrinkCoconutWaterCarton name: coconut water description: It's the inside of the coconut that counts. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: CoconutWater - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: CoconutWater + Quantity: 60 - type: Sprite sprite: Objects/Consumable/Drinks/coconutwater.rsi - type: entity - parent: DrinkCartonSmallBaseFull - id: DrinkCreamCarton + parent: DrinkCartonSmallBase + id: DrinkCartonCream name: milk cream description: It's cream. Made from milk. What else did you think you'd find in there? components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Cream - Quantity: 50 - type: Sprite sprite: Objects/Consumable/Drinks/cream.rsi +- type: entity + parent: DrinkCartonCream + id: DrinkCreamCarton + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Cream + Quantity: 60 + - type: Tag + tags: [ ] + - type: entity parent: [DrinkBaseMaterialPlastic, DrinkCartonSmallBaseFull] id: DrinkJuiceLemonCarton name: lemon juice description: First it's sour, then it's still sour. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: JuiceLemon - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: JuiceLemon + Quantity: 60 - type: Sprite sprite: Objects/Consumable/Drinks/lemonjuice.rsi @@ -142,113 +184,128 @@ name: pineapple juice description: Tastes like a tropical vacation far from space. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: JuicePineapple - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: JuicePineapple + Quantity: 60 - type: Sprite sprite: Objects/Consumable/Drinks/pineapplejuice.rsi -# Large carton +# Normal sized cartons - type: entity - parent: [DrinkBaseMaterialPlastic, DrinkCartonBaseFull] # Looks like a plastic jug, fight me - id: DrinkMilkCarton + parent: [DrinkBaseMaterialPlastic, DrinkCartonBase] # Looks like a plastic jug, fight me + id: DrinkCartonMilk name: milk description: An opaque white liquid produced by the mammary glands of mammals. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Milk - Quantity: 100 - type: Sprite sprite: Objects/Consumable/Drinks/milk.rsi - type: entity - parent: DrinkCartonBaseFull - id: DrinkSoyMilkCarton + parent: DrinkCartonMilk + id: DrinkMilkCarton + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Milk + Quantity: 120 + - type: Tag + tags: [ ] + +- type: entity + parent: DrinkCartonBase + id: DrinkCartonSoyMilk name: soy milk description: White and nutritious soy goodness! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: MilkSoy - Quantity: 100 - type: Sprite sprite: Objects/Consumable/Drinks/soymilk.rsi - type: entity - parent: [DrinkBaseMaterialPlastic, DrinkCartonBaseFull] - id: DrinkOatMilkCarton + parent: DrinkCartonSoyMilk + id: DrinkSoyMilkCarton + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: MilkSoy + Quantity: 120 + - type: Tag + tags: [ ] + +- type: entity + parent: [DrinkBaseMaterialPlastic, DrinkCartonBase] + id: DrinkCartonOatMilk name: oat milk description: It's oat milk. Tan and nutritious goodness! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: MilkOat - Quantity: 100 - type: Sprite sprite: Objects/Consumable/Drinks/oatmilk.rsi -# Xtra large +- type: entity + parent: DrinkCartonOatMilk + id: DrinkOatMilkCarton + name: oat milk + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: MilkOat + Quantity: 120 + - type: Tag + tags: [ ] + +# Large cartons - type: entity - parent: [DrinkBaseMaterialPlastic, DrinkCartonBaseXtraLargeFull] + parent: [DrinkBaseMaterialPlastic, DrinkCartonBaseLargeFull] id: DrinkJuiceLimeCartonXL name: lime juice XL description: Sweet-sour goodness. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - reagents: - - ReagentId: JuiceLime - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: JuiceLime + Quantity: 240 - type: Label currentLabel: reagent-name-juice-lime - type: Sprite sprite: Objects/Consumable/Drinks/limejuice.rsi - type: entity - parent: DrinkCartonBaseXtraLargeFull + parent: DrinkCartonBaseLargeFull id: DrinkJuiceOrangeCartonXL name: orange juice XL description: Full of vitamins and deliciousness! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - reagents: - - ReagentId: JuiceOrange - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: JuiceOrange + Quantity: 240 - type: Label currentLabel: reagent-name-juice-orange - type: Sprite sprite: Objects/Consumable/Drinks/orangejuice.rsi - type: entity - parent: DrinkCartonBaseXtraLargeFull + parent: DrinkCartonBaseLargeFull id: DrinkCreamCartonXL name: milk cream XL description: It's cream. Made from milk. What else did you think you'd find in there? components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - reagents: - - ReagentId: Cream - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: Cream + Quantity: 240 - type: Label currentLabel: reagent-name-cream - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml index 14e4b741c5..c264d88acb 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml @@ -3,7 +3,7 @@ # Inheritors are an easily and freely accessible solution like cups, teapots, cans, flasks, bottles, or beakers. - type: entity abstract: true - parent: BaseItem + parent: [SolutionDrink, BaseItem] id: DrinkBase components: - type: Sprite @@ -36,10 +36,6 @@ solution: *sol - type: SolutionItemStatus solution: *sol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: SolutionTransfer canChangeTransferAmount: true - type: UserInterface @@ -52,12 +48,13 @@ # This drink is empty trash - type: entity abstract: true + parent: SolutionDrink id: DrinkBaseEmptyTrash suffix: Empty components: - type: SpaceGarbage - type: TrashOnSolutionEmpty - solution: *sol + solution: drink - type: Tag tags: - Trash diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml index 3aa1e1d547..ee608ddf1b 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml @@ -2,33 +2,27 @@ - type: entity abstract: true - parent: [ DrinkBaseMaterialGlass, DrinkBase, DrinkBaseOpenable ] - id: DrinkBottleGlassBaseFull - suffix: Full + parent: [ DrinkBaseMaterialGlass, SolutionNormal, DrinkBase, DrinkBaseOpenable, DrinkBaseEmptyTrash ] + id: DrinkBottleGlassBase components: - - type: Item - size: Normal - type: Openable sound: collection: bottleOpenSounds closeable: true closeSound: collection: bottleCloseSounds - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - type: Sprite sprite: Objects/Consumable/Drinks/alco-bottle.rsi # fallback - type: Tool qualities: - Rolling speedModifier: 0.75 # not as good as a rolling pin but does the job - - type: TrashOnSolutionEmpty - solution: drink + - type: Item + size: Normal - type: Tag tags: - DrinkBottle + - Trash - type: Destructible # Same as parent, but spawns BrokenBottle instead of ShardGlass thresholds: - trigger: # Overkill threshold @@ -56,13 +50,19 @@ - type: entity abstract: true - parent: DrinkBottleGlassBaseFull - id: DrinkBottleGlassSmallBaseFull + parent: DrinkBottleGlassBase + id: DrinkBottleGlassBaseFull + suffix: Full + components: + - type: Tag + tags: + - DrinkBottle + +- type: entity + abstract: true + parent: [ SolutionSmall, DrinkBottleGlassBase ] + id: DrinkBottleGlassSmallBase components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - type: Item size: Small - type: Sprite @@ -70,61 +70,87 @@ - type: FitsInDispenser solution: drink +- type: entity + abstract: true + parent: DrinkBottleGlassSmallBase + id: DrinkBottleGlassSmallBaseFull + suffix: Full + +- type: entity + abstract: true + parent: [ SolutionLarge, DrinkBottleGlassBase ] + id: DrinkBottleGlassLargeBaseFull + suffix: Full + components: + - type: Item + size: Large + shape: + - 0,0,1,3 + # Large Glass Bottles - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkAbsintheBottleFull + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleAbsinthe name: Jailbreaker Verte description: One sip of this and you just know you're gonna have a good time. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Absinthe - Quantity: 100 - type: Label currentLabel: reagent-name-absinthe - type: Sprite sprite: Objects/Consumable/Drinks/absinthebottle.rsi - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkBlueCuracaoBottleFull + parent: DrinkBottleAbsinthe + id: DrinkAbsintheBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Absinthe + Quantity: 120 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleAlcoClear name: Miss Blue Curaçao description: A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: BlueCuracao - Quantity: 100 - type: Label currentLabel: reagent-name-blue-curacao - type: Sprite sprite: Objects/Consumable/Drinks/alco-bottle.rsi layers: - - state: icon_empty - map: ["enum.OpenableVisuals.Layer"] - - state: fill-6 - map: ["enum.SolutionContainerLayers.Fill"] + - state: icon_empty + map: ["enum.OpenableVisuals.Layer"] + - state: fill-6 + map: ["enum.SolutionContainerLayers.Fill"] - type: SolutionContainerVisuals maxFillLevels: 6 +- type: entity + parent: DrinkBottleAlcoClear + id: DrinkBlueCuracaoBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: BlueCuracao + Quantity: 120 + - type: entity parent: [DrinkVisualsOpenable, DrinkBottleGlassBaseFull] id: DrinkBottleOfNothingFull name: bottle of nothing description: A bottle filled with nothing. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Nothing - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Nothing + Quantity: 120 - type: Label currentLabel: reagent-name-nothing - type: Sprite @@ -136,12 +162,11 @@ name: champagne bottle description: Only people devoid of imagination can't find an excuse for champagne. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Champagne - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Champagne + Quantity: 120 - type: Label currentLabel: reagent-name-champagne - type: Sprite @@ -152,34 +177,38 @@ examineTextUnsealed: "sealable-component-on-examine-is-unsealed-no-cork" # tell the player why it can't close - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkCognacBottleFull + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleCognac name: cognac bottle description: A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Cognac - Quantity: 100 - type: Label currentLabel: reagent-name-cognac - type: Sprite sprite: Objects/Consumable/Drinks/cognacbottle.rsi +- type: entity + parent: DrinkBottleCognac + id: DrinkCognacBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Cognac + Quantity: 120 + - type: entity parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] id: DrinkGrenadineBottleFull name: Briar Rose grenadine syrup bottle description: Sweet and tangy, a bar syrup used to add color or flavor to drinks. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Grenadine - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Grenadine + Quantity: 120 - type: Label currentLabel: reagent-name-grenadine - type: Sprite @@ -193,68 +222,82 @@ maxFillLevels: 6 - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkGinBottleFull + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleGin name: Griffeater gin description: A bottle of high quality gin, produced in the New London Space Station. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Gin - Quantity: 100 - type: Label currentLabel: reagent-name-gin - type: Sprite sprite: Objects/Consumable/Drinks/ginbottle.rsi - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkGildlagerBottleFull + parent: DrinkBottleGin + id: DrinkGinBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Gin + Quantity: 120 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleGildlager name: Gildlager bottle description: 100 proof cinnamon schnapps, made for alcoholic teen girls on spring break. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Gildlager - Quantity: 100 - type: Label currentLabel: reagent-name-gildlager - type: Sprite sprite: Objects/Consumable/Drinks/gildlagerbottle.rsi - type: entity - parent: [DrinkVisualsOpenable, DrinkBottleGlassBaseFull] - id: DrinkCoffeeLiqueurBottleFull + parent: DrinkBottleGildlager + id: DrinkGildlagerBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Gildlager + Quantity: 120 + +- type: entity + parent: [ DrinkVisualsOpenable, DrinkBottleGlassBase ] + id: DrinkBottleCoffeeLiqueur name: coffee liqueur bottle description: The great taste of coffee with none of the benifits. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: CoffeeLiqueur - Quantity: 100 - type: Label currentLabel: reagent-name-coffeeliqueur - type: Sprite sprite: Objects/Consumable/Drinks/coffeeliqueurbottle.rsi +- type: entity + parent: DrinkBottleCoffeeLiqueur + id: DrinkCoffeeLiqueurBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: CoffeeLiqueur + Quantity: 120 + - type: entity parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] id: DrinkMelonLiquorBottleFull name: Emeraldine melon liquor description: A bottle of 46 proof Emeraldine melon liquor. Sweet and light. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: MelonLiquor - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: MelonLiquor + Quantity: 120 - type: Label currentLabel: reagent-name-melon-liquor - type: Sprite @@ -268,138 +311,173 @@ maxFillLevels: 6 - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkPatronBottleFull + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottlePatron name: Wrapp Artiste Patrón bottle description: Silver laced tequila, served in space night clubs across the galaxy. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Patron - Quantity: 100 - type: Label currentLabel: reagent-name-patron - type: Sprite sprite: Objects/Consumable/Drinks/patronbottle.rsi - type: entity - parent: [DrinkVisualsOpenable, DrinkBottleGlassBaseFull] - id: DrinkPoisonWinebottleFull + parent: DrinkBottlePatron + id: DrinkPatronBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Patron + Quantity: 120 + +- type: entity + parent: [DrinkVisualsOpenable, DrinkBottleGlassBase] + id: DrinkBottlePoisonWine name: Warlock's Velvet bottle description: What a delightful packaging for a surely high quality wine! The vintage must be amazing! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: PoisonWine - Quantity: 100 - type: Sprite sprite: Objects/Consumable/Drinks/pwinebottle.rsi - type: Tag tags: - Wine - DrinkBottle + - Trash - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkRumBottleFull + parent: DrinkBottlePoisonWine + id: DrinkPoisonWinebottleFull + name: Warlock's Velvet bottle + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: PoisonWine + Quantity: 120 + - type: Tag + tags: + - Wine + - DrinkBottle + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleRum name: Captain Pete's Cuban spiced rum description: This isn't just rum, oh no. It's practically GRIFF in a bottle. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Rum - Quantity: 100 - type: Label currentLabel: reagent-name-rum - type: Sprite sprite: Objects/Consumable/Drinks/rumbottle.rsi - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkTequilaBottleFull + parent: DrinkBottleRum + id: DrinkRumBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Rum + Quantity: 120 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleTequila name: Caccavo Guaranteed Quality tequila bottle description: Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Tequila - Quantity: 100 - type: Label currentLabel: reagent-name-tequila - type: Sprite sprite: Objects/Consumable/Drinks/tequillabottle.rsi - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkVermouthBottleFull + parent: DrinkBottleTequila + id: DrinkTequilaBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Tequila + Quantity: 120 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleVermouth name: Goldeneye vermouth bottle description: Sweet, sweet dryness! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Vermouth - Quantity: 100 - type: Label currentLabel: reagent-name-vermouth - type: Sprite sprite: Objects/Consumable/Drinks/vermouthbottle.rsi - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkVodkaBottleFull + parent: DrinkBottleVermouth + id: DrinkVermouthBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Vermouth + Quantity: 120 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleVodka name: vodka bottle description: Aah, vodka. Prime choice of drink AND fuel by Russians worldwide. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Vodka - Quantity: 100 - type: Label currentLabel: reagent-name-vodka - type: Sprite sprite: Objects/Consumable/Drinks/vodkabottle.rsi - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] - id: DrinkWhiskeyBottleFull + parent: DrinkBottleVodka + id: DrinkVodkaBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Vodka + Quantity: 120 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassBase] + id: DrinkBottleWhiskey name: Uncle Git's Special Reserve description: A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Whiskey - Quantity: 100 - type: Label currentLabel: reagent-name-whiskey - type: Sprite sprite: Objects/Consumable/Drinks/whiskeybottle.rsi - type: entity - parent: [DrinkVisualsOpenable, DrinkBottleGlassBaseFull] - id: DrinkWineBottleFull + parent: DrinkBottleWhiskey + id: DrinkWhiskeyBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Whiskey + Quantity: 120 + +- type: entity + parent: [DrinkVisualsOpenable, DrinkBottleGlassBase] + id: DrinkBottleWine name: Doublebearded Bearded Special wine bottle description: A faint aura of unease and asspainery surrounds the bottle. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Wine - Quantity: 100 - type: Label currentLabel: reagent-name-wine - type: Sprite @@ -408,22 +486,65 @@ tags: - Wine - DrinkBottle - -# Extra large bottles + - Trash - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] + parent: DrinkBottleWine + id: DrinkWineBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Wine + Quantity: 120 + - type: Tag + tags: + - Wine + - DrinkBottle + +- type: entity + name: nt cahors bottle + parent: DrinkBottleGlassBase + id: DrinkBottleNTCahors + components: + - type: Sprite + sprite: Objects/Consumable/Drinks/ntcahors.rsi + - type: Tag + tags: + - Wine + - DrinkBottle + - Trash + +- type: entity + name: nt cahors bottle + parent: DrinkBottleNTCahors + id: DrinkNTCahorsBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: NTCahors + Quantity: 120 + - type: Tag + tags: + - Wine + - DrinkBottle + +# Large bottles + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassLargeBaseFull] id: DrinkBeerGrowler # todo Needs to be renamed DrinkBeerBottleFullGrowler name: beer growler # beer it is. coffee. beer? coff-ee? be-er? c-o... b-e description: An alcoholic beverage made from malted grains, hops, yeast, and water. XL growler bottle. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - reagents: - - ReagentId: Beer - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: Beer + Quantity: 240 - type: Label currentLabel: reagent-name-beer - type: Sprite @@ -438,18 +559,16 @@ - DrinkBottle - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassBaseFull] + parent: [DrinkVisualsAllFilled, DrinkBottleGlassLargeBaseFull] id: DrinkAleBottleFullGrowler name: Magm-Ale growler description: A true dorf's drink of choice. XL growler bottle. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - reagents: - - ReagentId: Ale - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: Ale + Quantity: 240 - type: Label currentLabel: reagent-name-ale - type: Sprite @@ -463,17 +582,11 @@ # Small glass bottles - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassSmallBaseFull] - id: DrinkBeerBottleFull + parent: [DrinkVisualsAllFilled, DrinkBottleGlassSmallBase] + id: DrinkBottleBeer name: beer bottle # beer it is. coffee. beer? coff-ee? be-er? c-o... b-e description: An alcoholic beverage made from malted grains, hops, yeast, and water. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Beer - Quantity: 50 - type: Label currentLabel: reagent-name-beer - type: Sprite @@ -487,17 +600,22 @@ - Beer - type: entity - parent: [DrinkVisualsAllFilled, DrinkBottleGlassSmallBaseFull] - id: DrinkAleBottleFull + parent: DrinkBottleBeer + id: DrinkBeerBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Beer + Quantity: 60 + +- type: entity + parent: [DrinkVisualsAllFilled, DrinkBottleGlassSmallBase] + id: DrinkBottleAle name: Magm-Ale bottle description: A true dorf's drink of choice. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Ale - Quantity: 50 - type: Label currentLabel: reagent-name-ale - type: Sprite @@ -507,18 +625,28 @@ - type: Sealable examineTextUnsealed: "sealable-component-on-examine-is-unsealed-crown-cap" # tell the player why it can't close +- type: entity + parent: DrinkBottleAle + id: DrinkAleBottleFull + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Ale + Quantity: 60 + - type: entity parent: [DrinkVisualsOpenable, DrinkBottleGlassSmallBaseFull] id: DrinkSakeBottleFull name: small sake bottle description: The regret of the next morning seems to be nipping on the bottle too. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Sake - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Sake + Quantity: 60 - type: Label currentLabel: reagent-name-sake - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_plastic.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_plastic.yml index 3343ad42ce..4cae4c027f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_plastic.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_plastic.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: [ DrinkBaseMaterialPlastic, DrinkBase, DrinkBaseOpenable ] + parent: [ DrinkBaseMaterialPlastic, SolutionNormal, DrinkBase, DrinkBaseOpenable ] id: DrinkBottlePlasticBaseFull suffix: Full components: @@ -12,10 +12,6 @@ closeable: true closeSound: collection: bottleCloseSounds - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - type: Sprite sprite: Objects/Consumable/Drinks/generic_jug.rsi # fallback to generic plastic jug - type: TrashOnSolutionEmpty @@ -26,15 +22,11 @@ - type: entity abstract: true - parent: DrinkBottlePlasticBaseFull + parent: [SolutionSmall, DrinkBottlePlasticBaseFull] id: DrinkBottlePlasticSmallBaseFull components: - type: Item size: Small - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: Sprite sprite: Objects/Consumable/Drinks/waterbottle.rsi # fallback - type: FitsInDispenser @@ -43,15 +35,15 @@ # Empty - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: [DrinkVisualsOpenable, SolutionLarge, DrinkBottlePlasticBaseFull] id: CustomDrinkJug name: beverage jug description: A jug for storing custom made drinks. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 + - type: Item + size: Large + shape: + - 0,0,1,3 # Small Plastic Bottles @@ -61,12 +53,11 @@ name: water bottle description: Simple clean water of unknown origin. You think that maybe you dont want to know it. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Water - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 60 - type: Sprite sprite: Objects/Consumable/Drinks/waterbottle.rsi - type: Label @@ -80,12 +71,11 @@ name: Space Cola bottle description: Cola. In spaaace! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Cola - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Cola + Quantity: 120 - type: Label currentLabel: reagent-name-cola - type: Sprite @@ -97,12 +87,11 @@ name: Space Solar Wind bottle description: Blows right through you like a solar wind. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: SpaceMountainWind - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SpaceMountainWind + Quantity: 120 - type: Label currentLabel: reagent-name-space-mountain-wind - type: Sprite @@ -114,12 +103,11 @@ name: Space-Up bottle description: Tastes like a hull breach in your mouth. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: SpaceUp - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SpaceUp + Quantity: 120 - type: Label currentLabel: reagent-name-space-up - type: Sprite @@ -131,13 +119,11 @@ name: soda water bottle description: Like water, but angry! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: SodaWater - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SodaWater + Quantity: 120 - type: Sprite sprite: Objects/Consumable/Drinks/sodawater-bottle.rsi - type: Label @@ -149,239 +135,210 @@ name: tonic water bottle description: Like soda water, but angrier maybe? Often sweeter. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: TonicWater - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: TonicWater + Quantity: 120 - type: Sprite sprite: Objects/Consumable/Drinks/tonic-bottle.rsi - type: Label currentLabel: reagent-name-tonic-water -- type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] - id: DrinkEnergyDrinkJug - name: Red Bool jug - description: A jug of Red Bool, with enough caffeine to kill a whole station. - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: EnergyDrink - Quantity: 100 - - type: Label - currentLabel: reagent-name-energy-drink - # TODO new sprite - -# Xtra large -# TODO these have too much volume +# Large - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkSugarJug name: sugar jug suffix: For Drinks, Full description: Some people put this in their coffee... components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: Sugar - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 240 - type: Label currentLabel: reagent-name-sugar # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkLemonLimeJug name: Smite jug description: A dual citrus sensation. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: LemonLime - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: LemonLime + Quantity: 240 - type: Label currentLabel: reagent-name-lemon-lime # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkMeadJug name: mead jug description: Storing mead in a plastic jug should be a crime. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 150 - reagents: - - ReagentId: Mead - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: Mead + Quantity: 240 - type: Label currentLabel: reagent-name-mead # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkIceJug name: ice jug description: Stubborn water. Pretty cool. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: Ice - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: Ice + Quantity: 240 - type: Label currentLabel: reagent-name-ice # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkCoconutWaterJug name: coconut water jug description: It's on the inside of the coconut that counts. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: CoconutWater - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: CoconutWater + Quantity: 240 - type: Label currentLabel: reagent-name-coconut-water # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkCoffeeJug name: coffee jug description: Wake up juice, of the heated kind. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: Coffee - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: Coffee + Quantity: 240 - type: Label currentLabel: reagent-name-coffee # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkTeaJug name: tea jug description: The drink of choice for the Bri'ish and hipsters. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: Tea - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: Tea + Quantity: 240 - type: Label currentLabel: reagent-name-tea # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkGreenTeaJug name: green tea jug description: It's like tea... but green! great for settling the stomach. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: GreenTea - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: GreenTea + Quantity: 240 - type: Label currentLabel: reagent-name-green-tea # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkIcedTeaJug name: iced tea jug description: For when the regular tea is too hot for you. Boohoo. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: IcedTea - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: IcedTea + Quantity: 240 - type: Label currentLabel: reagent-name-iced-tea # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkDrGibbJug name: Dr. Gibb jug description: 42 different flavours... in a jug! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: DrGibb - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: DrGibb + Quantity: 240 - type: Label currentLabel: reagent-name-dr-gibb # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkRootBeerJug name: root beer jug description: This drink makes Australians giggle. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: RootBeer - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: RootBeer + Quantity: 240 - type: Label currentLabel: reagent-name-root-beer # TODO new sprite - type: entity - parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull] + parent: CustomDrinkJug id: DrinkWaterMelonJuiceJug name: watermelon juice jug description: May include leftover seeds. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 300 - reagents: - - ReagentId: JuiceWatermelon - Quantity: 300 + - type: Solution + solution: + reagents: + - ReagentId: JuiceWatermelon + Quantity: 240 - type: Label currentLabel: reagent-name-juice-watermelon # TODO new sprite + +- type: entity + parent: CustomDrinkJug + id: DrinkEnergyDrinkJug + name: Red Bool jug + description: A jug of Red Bool, with enough caffeine to kill a whole station. + components: + - type: Solution + solution: + reagents: + - ReagentId: EnergyDrink + Quantity: 240 + - type: Label + currentLabel: reagent-name-energy-drink + # TODO new sprite diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml index bb3eb76c29..4adf9404aa 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml @@ -1,25 +1,20 @@ # When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_soda.yml - type: entity abstract: true - parent: [ DrinkBaseMaterialMetal, DrinkBase, DrinkBaseOpenable, DrinkVisualsOpenable ] - id: DrinkCanBaseFull - suffix: Full + parent: [ DrinkBaseMaterialMetal, SolutionSmall, DrinkBase, DrinkBaseOpenable, DrinkVisualsOpenable ] + id: DrinkCanBase components: - - type: SolutionContainerManager + - type: Solution + solution: + maxVol: 40 # Cans are about 330ml which translates to about 40u + - type: SolutionManager solutions: - drink: - maxVol: 30 - grindable: &grindable - reagents: # 5u -> 1/2 steel sheet (10u) - - ReagentId: Aluminium # Fun fact: soda can makeup is approx. 75% aluminium and 25% tin/iron. - Quantity: 4 - - ReagentId: Iron - Quantity: 1 + - SolutionCanComposite - type: SolutionTransfer canChangeTransferAmount: true maxTransferAmount: 15 - type: Extractable - grindableSolutionName: grindable + grindableSolutionName: composite - type: FitsInDispenser solution: drink - type: Tool @@ -36,22 +31,37 @@ tags: - DrinkCan -## Filled +# When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_soda.yml +- type: entity + abstract: true + parent: DrinkCanBase + id: DrinkCanBaseFull + suffix: Full # :) - type: entity - parent: DrinkCanBaseFull - id: DrinkColaCan + parent: SolutionComposite + id: SolutionCanComposite + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 5 + reagents: # 5u -> 1/2 steel sheet (10u) + - ReagentId: Aluminium # Fun fact: soda can makeup is approx. 75% aluminium and 25% tin/iron. + Quantity: 4 + - ReagentId: Iron + Quantity: 1 + +## Filled + +### Needed because empty cola is important to construction +- type: entity + abstract: true + parent: DrinkCanBase + id: DrinkColaCanBase name: Space Cola can description: A sweet, carbonated soft drink. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cola - Quantity: 30 - grindable: *grindable - type: Tag tags: - Cola @@ -61,17 +71,23 @@ - type: Item sprite: Objects/Consumable/Drinks/cola.rsi +- type: entity + parent: DrinkColaCanBase + id: DrinkColaCan + suffix: Full + components: + - type: Solution + solution: + reagents: + - ReagentId: Cola + Quantity: 40 + # created when taking apart an ied - type: entity - parent: [ DrinkBaseOpenableOpen, DrinkColaCan ] + parent: [ DrinkBaseOpenableOpen, DrinkColaCanBase ] id: DrinkColaCanEmpty suffix: Empty components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - grindable: *grindable - type: Tag tags: - Cola @@ -84,14 +100,11 @@ name: iced tea can description: A refreshing can of iced tea. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: IcedTea - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: IcedTea + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/ice_tea_can.rsi - type: Item @@ -103,14 +116,11 @@ name: Smite can description: You wanted ORANGE. It gave you Lemon-Lime. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: LemonLime - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: LemonLime + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/lemon-lime.rsi - type: Item @@ -122,14 +132,11 @@ name: Smite Cranberry can description: Y'all want a Smite Cranberry? Beloved by administrators everywhere. Drink in moderation. A limited run for the holidays! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: LemonLimeCranberry - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: LemonLimeCranberry + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/lemon-lime-cranberry.rsi - type: Item @@ -174,14 +181,11 @@ name: grape soda can description: Sweetened drink with a grape flavor and a deep purple color. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: GrapeSoda - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: GrapeSoda + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/purple_can.rsi - type: Item @@ -193,14 +197,11 @@ name: root beer can description: Some of that tasty root beer goodness, now in a portable can! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: RootBeer - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: RootBeer + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/rootbeer.rsi - type: Item @@ -216,14 +217,11 @@ name: soda water can description: Soda water. Why not make a scotch and soda? components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: SodaWater - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: SodaWater + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/sodawater.rsi - type: Item @@ -235,14 +233,11 @@ name: Space Solar Wind can description: Blows right through you like a solar wind. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: SpaceMountainWind - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: SpaceMountainWind + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/space_mountain_wind.rsi - type: Item @@ -254,14 +249,11 @@ name: Space-Up can description: Tastes like a hull breach in your mouth. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: SpaceUp - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: SpaceUp + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/space-up.rsi - type: Item @@ -273,14 +265,11 @@ name: Sol Dry can description: Sweet ginger soda from outer space! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: SolDry - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: SolDry + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/sol_dry.rsi - type: Item @@ -292,14 +281,11 @@ name: Starkist can description: The taste of a star in liquid form. And, a bit of tuna...? components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Starkist - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: Starkist + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/starkist.rsi - type: Item @@ -311,14 +297,11 @@ name: tonic water can description: Quinine tastes funny, but at least it'll keep that Space Malaria away. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: TonicWater - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: TonicWater + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/tonic.rsi - type: Item @@ -330,14 +313,11 @@ name: Fourteen Loko can description: The MBO has advised crew members that consumption of Fourteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsibly. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: FourteenLoko - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: FourteenLoko + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/fourteen_loko.rsi - type: Item @@ -349,14 +329,11 @@ name: Changeling Sting can description: You take a tiny sip and feel a burning sensation... components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: ChangelingSting - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: ChangelingSting + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/changelingsting.rsi - type: Item @@ -368,14 +345,11 @@ name: Dr. Gibb can description: A delicious blend of 42 different flavours. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DrGibb - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: DrGibb + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/dr_gibb.rsi - type: Item @@ -387,18 +361,15 @@ name: Blood-red Brew can description: A home-brewed drink made from the crazed minds at the Syndicate. Not recommended by doctors. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Stimulants - Quantity: 5 - - ReagentId: NuclearCola - Quantity: 20 - - ReagentId: Ice - Quantity: 5 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: Stimulants + Quantity: 10 + - ReagentId: NuclearCola + Quantity: 25 + - ReagentId: Ice + Quantity: 5 - type: Sprite sprite: Objects/Consumable/Drinks/robustnukie.rsi - type: Item @@ -410,14 +381,11 @@ name: Red Bool can description: A can of Red Bool, with enough caffeine to kill a horse. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: EnergyDrink - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: EnergyDrink + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/energy_drink.rsi - type: Item @@ -429,14 +397,11 @@ name: Shambler's Juice can description: ~Shake me up some of that Shambler's Juice!~ components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: ShamblersJuice - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: ShamblersJuice + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/shamblersjuice.rsi - type: Item @@ -448,14 +413,11 @@ name: PWR Game can description: The only drink with the PWR that true gamers crave. When a gamer talks about gamerfuel, this is what they're literally referring to. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: PwrGame - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: PwrGame + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/pwrgame.rsi - type: Item @@ -467,14 +429,11 @@ name: beer can description: Small joy, big taste, no worries! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Beer - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: Beer + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/beer_can.rsi - type: Item @@ -490,14 +449,11 @@ name: wine can description: Your way to forgetting all worries and having fun! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Wine - Quantity: 30 - grindable: *grindable + - type: Solution + solution: + reagents: + - ReagentId: Wine + Quantity: 40 - type: Sprite sprite: Objects/Consumable/Drinks/wine_can.rsi - type: Item diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml index 896142562f..e7f4c3b56f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml @@ -1,13 +1,11 @@ # A cup is a small container used to hold liquids for drinking.[1] - type: entity abstract: true - parent: DrinkBase + parent: [SolutionTiny, DrinkBase] id: DrinkBaseCup components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 20 + - type: Item + size: Tiny - type: FitsInDispenser solution: drink - type: SolutionTransfer @@ -49,6 +47,9 @@ name: teacup description: A plain white porcelain teacup. components: + - type: Solution + solution: + maxVol: 17 # About 5 imperial fluid ounces which is the english measurement for a teacup. Also I think fucked up volume sizes are funny. HAHAHAHAHAHAHA - type: Sprite sprite: Objects/Consumable/Drinks/teacup.rsi - type: SolutionContainerVisuals @@ -60,6 +61,8 @@ name: coupe glass description: A classic thin neck coupe glass, the icon of fragile labels on crates around the galaxy. components: + - type: Item + size: Small - type: Sprite sprite: Objects/Consumable/Drinks/glass_coupe_shape.rsi - type: SolutionContainerVisuals @@ -71,12 +74,9 @@ name: water cup description: A paper water cup. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 5 # One sip at a time. No rushing at the water cooler - - type: Item - size: Tiny + - type: Solution + solution: + maxVol: 10 # Miserably small - type: Sprite sprite: Objects/Consumable/Drinks/water_cup.rsi - type: SolutionContainerVisuals @@ -203,12 +203,11 @@ suffix: Full description: A heated drink consisting melted chocolate and heated milk. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: HotCocoa - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: HotCocoa + Quantity: 30 - type: Icon sprite: Objects/Consumable/Drinks/mug.rsi state: icon-vend-brown @@ -227,12 +226,11 @@ suffix: Full description: Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Coffee - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Coffee + Quantity: 30 - type: Icon sprite: Objects/Consumable/Drinks/mug.rsi state: icon-vend-brown @@ -251,12 +249,11 @@ suffix: Full description: A nice, strong and tasty beverage while you are reading. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: CafeLatte - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: CafeLatte + Quantity: 30 - type: Icon sprite: Objects/Consumable/Drinks/cafe_latte.rsi state: icon-vend @@ -277,12 +274,11 @@ id: DrinkTeacup name: tea components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Tea - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Tea + Quantity: 17 - type: Icon sprite: Objects/Consumable/Drinks/teacup.rsi state: icon-vend-tea @@ -294,12 +290,11 @@ id: DrinkGreenTea name: green tea components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: GreenTea - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: GreenTea + Quantity: 17 - type: Icon sprite: Objects/Consumable/Drinks/teacup.rsi state: icon-vend-green-tea @@ -308,21 +303,21 @@ # TODO this needs fill levels - type: entity - parent: [DrinkBaseMaterialPlastic, DrinkBaseCup] + parent: [DrinkBaseMaterialPlastic, SolutionSmall, DrinkBaseCup] id: DrinkLean name: grape juice description: Damn, no fun allowed. components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: JuiceGrape - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: JuiceGrape + Quantity: 60 - type: Sprite sprite: Objects/Consumable/Drinks/lean.rsi - type: Item sprite: Objects/Consumable/Drinks/lean.rsi + size: Small - type: TrashOnSolutionEmpty solution: drink diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml index 31680db9ed..e03b922e70 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml @@ -1,12 +1,8 @@ - type: entity abstract: true - parent: [DrinkBaseMaterialStrongMetal, DrinkBase, DrinkBaseOpenable, DrinkVisualsOpenable] + parent: [DrinkBaseMaterialStrongMetal, SolutionSmall, DrinkBase, DrinkBaseOpenable, DrinkVisualsOpenable] id: FlaskBase components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: Sprite sprite: Objects/Consumable/Drinks/flask.rsi - type: FitsInDispenser @@ -21,15 +17,11 @@ # Flasks - type: entity - parent: [DrinkBaseMaterialStrongMetal, DrinkBase] + parent: [DrinkBaseMaterialStrongMetal, SolutionSmall, DrinkBase] id: DrinkFlaskOld name: old flask description: A decrepit old flask, its lid seems to be missing. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: Sprite sprite: Objects/Consumable/Drinks/flask_old.rsi - type: FitsInDispenser @@ -53,12 +45,11 @@ components: - type: Sprite sprite: Objects/Consumable/Drinks/mreflask.rsi - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Water - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 60 - type: TrashOnSolutionEmpty solution: drink diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml index 3ae53b077b..d7b87aeb24 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: [ DrinkBaseMaterialPlastic, DrinkBase, DrinkBaseOpenable, DrinkVisualsAllFilled ] + parent: [ DrinkBaseMaterialPlastic, SolutionSmall, DrinkBase, DrinkBaseOpenable, DrinkVisualsAllFilled ] id: BaseSqueezeBottle components: - type: Openable @@ -14,10 +14,6 @@ map: [ "enum.SolutionContainerLayers.Fill" ] # already has liquid, so no visible: false - state: icon-front map: [ "enum.SolutionContainerLayers.Overlay" ] - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: SolutionContainerVisuals maxFillLevels: 6 - type: TrashOnSolutionEmpty @@ -31,13 +27,11 @@ components: - type: Sprite sprite: Objects/Consumable/Drinks/glue-tube.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: SpaceGlue - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: SpaceGlue + Quantity: 60 - type: Glue - type: entity @@ -48,13 +42,11 @@ components: - type: Sprite sprite: Objects/Consumable/Drinks/lube-tube.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: SpaceLube - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: SpaceLube + Quantity: 60 - type: Lube # Find your nearest clown and give them a gift :o) @@ -65,19 +57,17 @@ suffix: DEBUG description: This anomalous beaker infinitely produces space lube and as such is to be closely guarded such that it doesn't fall in the wrong hands. components: - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 1000 - reagents: - - ReagentId: SpaceLube - Quantity: 1000 + - type: Solution + solution: + reagents: + - ReagentId: SpaceLube + Quantity: 960 - type: SolutionRegeneration solution: beaker generated: reagents: - ReagentId: SpaceLube - Quantity: 200 + Quantity: 240 - type: entity parent: [DrinkBaseMaterialGlass, DrinkBase] @@ -143,13 +133,11 @@ name: delicious mopwata description: A foggy brown bottle with a faded label depicting a mop. It comes full of murky... vintage. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - reagents: - - ReagentId: Mopwata - Quantity: 40 + - type: Solution + solution: + reagents: + - ReagentId: Mopwata + Quantity: 50 # Extra space for the random fill - type: RandomFillSolution solution: drink weightedRandomId: RandomFillMopwata diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml index 2b2ae6117d..f7ab48976b 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml @@ -4,24 +4,21 @@ # Transformable container - normal glass - type: entity - parent: [DrinkBaseMaterialGlass, DrinkBaseCup, DrinkVisualsFillOverlay] + parent: [DrinkBaseMaterialGlass, SolutionSmall, DrinkBaseCup, DrinkVisualsFillOverlay] id: DrinkGlass name: metamorphic glass description: A metamorphic glass that automagically turns into a glass appropriate for the drink within. There's a sanded off patent number on the bottom. components: + - type: Item + size: Small - type: Sprite sprite: Objects/Consumable/Drinks/glass_clear.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: SolutionContainerVisuals maxFillLevels: 9 metamorphic: true metamorphicDefaultSprite: sprite: Objects/Consumable/Drinks/glass_clear.rsi state: icon - - type: TransformableContainer - type: entity parent: DrinkGlass @@ -31,10 +28,6 @@ components: - type: Sprite sprite: Objects/Consumable/Drinks/jar.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - type: SolutionContainerVisuals metamorphicDefaultSprite: sprite: Objects/Consumable/Drinks/jar.rsi @@ -49,13 +42,11 @@ id: DrinkAbsintheGlass suffix: absinthe components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Absinthe - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Absinthe + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/absintheglass.rsi state: icon @@ -65,13 +56,11 @@ id: DrinkAcidSpitGlass suffix: acid spit components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: AcidSpit - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: AcidSpit + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/acidspitglass.rsi state: icon @@ -81,13 +70,11 @@ id: DrinkAleGlass suffix: ale components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ale - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ale + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/aleglass.rsi state: icon @@ -97,13 +84,11 @@ id: DrinkAlienBrainHemorrhage suffix: alien brain hemorrhage components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: AlienBrainHemorrhage - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: AlienBrainHemorrhage + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/alienbrainhemorrhage.rsi state: icon @@ -113,13 +98,11 @@ id: DrinkAlliesCocktail suffix: allies cocktail components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: AlliesCocktail - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: AlliesCocktail + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/alliescocktail.rsi state: icon @@ -129,13 +112,11 @@ id: DrinkAloe suffix: aloe components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Aloe - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Aloe + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/aloe.rsi state: icon @@ -145,13 +126,11 @@ id: DrinkAmasecGlass suffix: amasec components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Amasec - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Amasec + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/amasecglass.rsi state: icon @@ -161,13 +140,11 @@ id: DrinkAndalusia suffix: andalusia components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Andalusia - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Andalusia + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/andalusia.rsi state: icon @@ -177,13 +154,11 @@ id: DrinkAntifreeze suffix: antifreeze components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Antifreeze - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Antifreeze + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/antifreeze.rsi state: icon @@ -193,13 +168,11 @@ id: DrinkArnoldPalmer suffix: arnold palmer components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: ArnoldPalmer - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: ArnoldPalmer + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/arnoldpalmer.rsi state: icon @@ -209,13 +182,11 @@ id: DrinkAtomicBombGlass suffix: atomic bomb components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: AtomicBomb - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: AtomicBomb + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/atomicbombglass.rsi state: icon @@ -225,13 +196,11 @@ id: DrinkB52Glass suffix: b-52 components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: B52 - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: B52 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/b52glass.rsi state: icon @@ -241,13 +210,11 @@ id: DrinkBahamaMama suffix: bahama mama components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BahamaMama - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BahamaMama + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bahama_mama.rsi state: icon @@ -257,13 +224,11 @@ id: DrinkBananaHonkGlass suffix: banana honk components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BananaHonk - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BananaHonk + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bananahonkglass.rsi state: icon @@ -273,13 +238,11 @@ id: DrinkBarefootGlass suffix: barefoot components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Barefoot - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Barefoot + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/b&p.rsi state: icon @@ -289,13 +252,11 @@ id: DrinkBeepskySmashGlass suffix: beepsky smash components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BeepskySmash - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BeepskySmash + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/beepskysmashglass.rsi state: icon @@ -305,13 +266,11 @@ id: DrinkBeerglass suffix: beer components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Beer - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Beer + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/beerglass.rsi state: icon @@ -321,13 +280,11 @@ id: DrinkBerryJuice suffix: berry juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: JuiceBerry - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: JuiceBerry + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/berryjuice.rsi state: icon @@ -337,13 +294,11 @@ id: DrinkBlackRussianGlass suffix: black russian components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BlackRussian - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BlackRussian + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/blackrussianglass.rsi state: icon @@ -353,13 +308,11 @@ id: DrinkBlueCuracaoGlass suffix: blue curacao components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BlueCuracao - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BlueCuracao + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/curacaoglass.rsi state: icon @@ -369,13 +322,11 @@ id: DrinkBloodyMaryGlass suffix: bloody mary components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BloodyMary - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BloodyMary + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bloodymaryglass.rsi state: icon @@ -385,13 +336,11 @@ id: DrinkBlueHawaiianGlass suffix: blue hawaiian components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BlueHawaiian - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BlueHawaiian + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bluehawaiian.rsi state: icon @@ -401,13 +350,11 @@ id: DrinkBooger suffix: booger components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Booger - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Booger + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/booger.rsi state: icon @@ -417,13 +364,11 @@ id: DrinkBraveBullGlass suffix: brave bull components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BraveBull - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BraveBull + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bravebullglass.rsi state: icon @@ -433,13 +378,11 @@ id: DrinkBronxGlass suffix: bronx components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Bronx - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Bronx + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bronx.rsi state: icon @@ -449,13 +392,11 @@ id: BudgetInsulsDrinkGlass suffix: budget insuls components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: BudgetInsulsDrink - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BudgetInsulsDrink + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/budgetinsulsdrink.rsi state: icon @@ -465,13 +406,11 @@ id: DrinkCarrotJuice suffix: carrot juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: JuiceCarrot - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: JuiceCarrot + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/carrotjuice.rsi state: icon @@ -481,13 +420,11 @@ id: DrinkChocolateGlass suffix: chocolate components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: HotCocoa - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: HotCocoa + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/chocolateglass.rsi state: icon @@ -497,13 +434,11 @@ id: RubberneckGlass suffix: rubberneck components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Rubberneck - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Rubberneck + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/rubberneck.rsi state: icon @@ -513,13 +448,11 @@ id: DrinkCoconutRum suffix: coconut rum components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: CoconutRum - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: CoconutRum + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/coconutrum.rsi state: icon @@ -529,13 +462,11 @@ id: DrinkCoconutWaterGlass suffix: coconut water components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: CoconutWater - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: CoconutWater + Quantity: 60 #TODO - type: Icon - type: entity @@ -543,13 +474,11 @@ id: DrinkCoffee suffix: coffee components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Coffee - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Coffee + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/coffee.rsi state: icon @@ -559,13 +488,11 @@ id: DrinkCognacGlass suffix: cognac components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cognac - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Cognac + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/cognacglass.rsi state: icon @@ -575,13 +502,11 @@ id: DrinkCosmopolitan suffix: cosmopolitan components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cosmopolitan - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Cosmopolitan + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/cosmopolitan.rsi state: icon @@ -591,26 +516,22 @@ id: DrinkCream suffix: cream components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cream - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Cream + Quantity: 60 - type: entity parent: DrinkGlass id: DrinkCrushDepthGlass suffix: crush depth components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: CrushDepth - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: CrushDepth + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/crushdepth.rsi state: icon @@ -620,13 +541,11 @@ id: DrinkCubaLibreGlass suffix: cuba libre components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: CubaLibre - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: CubaLibre + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/cubalibreglass.rsi state: icon @@ -636,13 +555,11 @@ id: DrinkDarkandStormyGlass suffix: dark and stormy components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DarkandStormy - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DarkandStormy + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/dark&stormy.rsi state: icon @@ -652,13 +569,11 @@ id: DrinkDeadRumGlass suffix: dead rum components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DeadRum - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DeadRum + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/rumglass.rsi state: icon @@ -668,13 +583,11 @@ id: DrinkDemonsBlood suffix: demon's blood components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DemonsBlood - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DemonsBlood + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/demonsblood.rsi state: icon @@ -684,13 +597,11 @@ id: DrinkDevilsKiss suffix: devil's kiss components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DevilsKiss - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DevilsKiss + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/devilskiss.rsi state: icon @@ -700,13 +611,11 @@ id: DrinkDoctorsDelightGlass suffix: doctor's delight components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DoctorsDelight - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DoctorsDelight + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/doctorsdelightglass.rsi state: icon @@ -716,13 +625,11 @@ id: DrinkDriestMartiniGlass suffix: driest martini components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DriestMartini - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DriestMartini + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/driestmartiniglass.rsi state: icon @@ -732,13 +639,11 @@ id: DrinkDrGibbGlass suffix: dr gibb components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DrGibb - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DrGibb + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/dr_gibb_glass.rsi state: icon @@ -748,13 +653,11 @@ id: DrinkEggnog suffix: eggnog components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Eggnog - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Eggnog + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/eggnogglass.rsi state: icon @@ -764,13 +667,11 @@ id: DrinkElectricSharkGlass suffix: electric shark components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: ElectricShark - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: ElectricShark + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/electricshark.rsi state: icon @@ -780,13 +681,11 @@ id: DrinkErikaSurprise suffix: erika surprise components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: ErikaSurprise - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: ErikaSurprise + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/erikasurprise.rsi state: icon @@ -796,13 +695,11 @@ id: DrinkFourteenLokoGlass suffix: fourteen loko components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: FourteenLoko - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/fourteen_loko_glass.rsi state: icon @@ -812,13 +709,11 @@ id: DrinkGargleBlasterGlass suffix: pan-galactic gargle blaster components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: GargleBlaster - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/gargleblasterglass.rsi state: icon @@ -828,13 +723,11 @@ id: DrinkGinGlass suffix: gin components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Gin - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/ginvodkaglass.rsi state: icon @@ -844,13 +737,11 @@ id: DrinkGinFizzGlass suffix: gin fizz components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: GinFizz - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/ginfizzglass.rsi state: icon @@ -860,13 +751,11 @@ id: DrinkGinTonicglass suffix: gin and tonic components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: GinTonic - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/gintonicglass.rsi state: icon @@ -876,13 +765,11 @@ id: DrinkGildlagerGlass suffix: gildlager components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Gildlager - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/gildlagerglass.rsi state: icon @@ -892,13 +779,11 @@ id: DrinkGrapeJuice suffix: grape juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceGrape - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/grapejuice.rsi state: icon @@ -908,13 +793,11 @@ id: DrinkGrapeSodaGlass suffix: grape soda components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: GrapeSoda - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/gsodaglass.rsi state: icon @@ -924,13 +807,11 @@ id: DrinkGreenTeaGlass suffix: green tea components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: GreenTea - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/greenteaglass.rsi state: icon @@ -940,13 +821,11 @@ id: DrinkGrenadineGlass suffix: grenadine components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Grenadine - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/grenadineglass.rsi state: icon @@ -956,13 +835,11 @@ id: DrinkGrogGlass suffix: grog components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Grog - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/grogglass.rsi state: icon @@ -972,13 +849,11 @@ id: DrinkHippiesDelightGlass suffix: hippies' delight components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: HippiesDelight - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/hippiesdelightglass.rsi state: icon @@ -989,13 +864,11 @@ suffix: hooch description: You've really hit rock bottom now... your liver packed its bags and left last night. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Hooch - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/glass_brown2.rsi state: icon @@ -1005,13 +878,11 @@ id: DrinkIcedCoffeeGlass suffix: iced coffee components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IcedCoffee - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/icedcoffeeglass.rsi state: icon @@ -1021,13 +892,11 @@ id: DrinkIcedGreenTeaGlass suffix: iced green tea components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IcedGreenTea - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/icedgreenteaglass.rsi state: icon @@ -1037,13 +906,11 @@ id: DrinkIcedTeaGlass suffix: iced tea components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IcedTea - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/icedteaglass.rsi state: icon @@ -1053,13 +920,11 @@ id: DrinkIcedBeerGlass suffix: iced beer components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IcedBeer - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/iced_beerglass.rsi state: icon @@ -1069,13 +934,11 @@ id: DrinkIceGlass suffix: ice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Ice - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/iceglass.rsi state: icon @@ -1085,13 +948,11 @@ id: DrinkIceCreamGlass suffix: ice cream components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IceCream - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/icecreamglass.rsi state: icon @@ -1101,13 +962,11 @@ id: IrishBoolGlass suffix: irish bool components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IrishBool - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/beerglass.rsi state: icon @@ -1117,13 +976,11 @@ id: DrinkIrishSlammer suffix: grenade penguin components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IrishSlammer - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/irishslammer.rsi state: icon @@ -1133,13 +990,11 @@ id: DrinkIrishCoffeeGlass suffix: irish coffee components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IrishCoffee - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/irishcoffeeglass.rsi state: icon @@ -1149,13 +1004,11 @@ id: DrinkIrishCreamGlass suffix: irish cream components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: IrishCream - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/irishcreamglass.rsi state: icon @@ -1165,13 +1018,11 @@ id: DrinkCoffeeLiqueurGlass suffix: coffee liqueur components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: CoffeeLiqueur - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/coffeeliqueurglass.rsi state: icon @@ -1181,13 +1032,11 @@ id: DrinkJackRoseGlass suffix: jack rose components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JackRose - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/jackrose.rsi state: icon @@ -1197,13 +1046,11 @@ id: DrinkJungleBirdGlass suffix: jungle bird components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JungleBird - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/junglebird.rsi state: icon @@ -1213,13 +1060,11 @@ id: DrinkKalimotxoGlass suffix: kalimotxo components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Kalimotxo - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/kalimotxo.rsi state: icon @@ -1229,13 +1074,11 @@ id: DrinkOrangeLimeSodaGlass suffix: citrus bikeshed components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: OrangeLimeSoda - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/orangelime_soda.rsi state: icon @@ -1245,13 +1088,11 @@ id: DrinkLemonadeGlass suffix: lemonade components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Lemonade - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/lemonadeglass.rsi state: icon @@ -1261,13 +1102,11 @@ id: DrinkLemonJuice suffix: lemon juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceLemon - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/lemonjuiceglass.rsi state: icon @@ -1277,13 +1116,11 @@ id: DrinkLemonLime suffix: lemon lime components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: LemonLime - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/lemonlime.rsi state: icon @@ -1293,13 +1130,11 @@ id: DrinkLimeJuice suffix: lime juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceLime - Quantity: 30 + Quantity: 60 #TODO Icon - type: entity @@ -1307,13 +1142,11 @@ id: DrinkLongIslandIcedTeaGlass suffix: long island iced tea components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: LongIslandIcedTea - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/longislandicedteaglass.rsi state: icon @@ -1323,13 +1156,11 @@ id: DrinkManhattanGlass suffix: manhattan components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Manhattan - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/manhattanglass.rsi state: icon @@ -1339,13 +1170,11 @@ id: DrinkManhattanProjectGlass suffix: manhattan project components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: ManhattanProject - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/proj_manhattanglass.rsi state: icon @@ -1355,13 +1184,11 @@ id: DrinkManlyDorfGlass suffix: manly dorf components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: ManlyDorf - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/manlydorfglass.rsi state: icon @@ -1371,13 +1198,11 @@ id: DrinkMargaritaGlass suffix: margarita components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Margarita - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/margaritaglass.rsi state: icon @@ -1387,13 +1212,11 @@ id: DrinkMartiniGlass suffix: classic martini components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Martini - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/martiniglass.rsi state: icon @@ -1403,13 +1226,11 @@ id: DrinkMeadGlass suffix: mead components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Mead - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/meadglass.rsi state: icon @@ -1428,13 +1249,11 @@ id: DrinkMojito suffix: mojito components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Mojito - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/mojito.rsi state: icon @@ -1444,13 +1263,11 @@ id: DrinkMonkeyBusinessGlass suffix: monkey business components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: MonkeyBusiness - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/monkeybusiness.rsi state: icon @@ -1460,13 +1277,11 @@ id: DrinkNeurotoxinGlass suffix: neurotoxin components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Neurotoxin - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/neurotoxinglass.rsi state: icon @@ -1476,13 +1291,11 @@ id: DrinkNothing suffix: nothing components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Nothing - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/nothing.rsi state: icon @@ -1492,13 +1305,11 @@ id: DrinkNTCahors suffix: neotheology cahors whine components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: NTCahors - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/wineglass.rsi state: icon @@ -1508,13 +1319,11 @@ id: DrinkNuclearColaGlass suffix: nuclear cola components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: NuclearCola - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/nuclear_colaglass.rsi state: icon @@ -1524,13 +1333,11 @@ id: DrinkOrangeJuice suffix: orange juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceOrange - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/orangejuice.rsi state: icon @@ -1540,13 +1347,11 @@ id: DrinkPainkillerGlass suffix: painkiller components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Painkiller - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/painkiller.rsi state: icon @@ -1556,13 +1361,11 @@ id: DrinkPatronGlass suffix: patron components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Patron - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/patronglass.rsi state: icon @@ -1572,13 +1375,11 @@ id: DrinkPinaColadaGlass suffix: piña colada components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: PinaColada - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/pinacolada.rsi state: icon @@ -1588,13 +1389,11 @@ id: DrinkPoisonBerryJuice suffix: poison berry juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceBerryPoison - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/poisonberryjuice.rsi state: icon @@ -1604,13 +1403,11 @@ id: DrinkPoisonWineGlass suffix: poison wine components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: PoisonWine - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/pwineglass.rsi state: icon @@ -1620,13 +1417,11 @@ id: DrinkPoscaGlass suffix: posca components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Posca - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/glass_light_yellow.rsi state: icon @@ -1636,13 +1431,11 @@ id: DrinkRadlerGlass suffix: radler components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Radler - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/radler.rsi state: icon @@ -1652,13 +1445,11 @@ id: DrinkRedMeadGlass suffix: red mead components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: RedMead - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/red_meadglass.rsi state: icon @@ -1668,13 +1459,11 @@ id: DrinkRewriter suffix: rewriter components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Rewriter - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/rewriter.rsi state: icon @@ -1684,13 +1473,11 @@ id: DrinkRootBeerGlass suffix: root beer components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: RootBeer - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/rootbeerglass.rsi state: icon @@ -1700,13 +1487,11 @@ id: DrinkRootBeerFloatGlass suffix: root beer float components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: RootBeerFloat - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/rootbeerfloatglass.rsi state: icon @@ -1716,13 +1501,11 @@ id: DrinkRumGlass suffix: rum components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Rum - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/rumglass.rsi state: icon @@ -1732,13 +1515,11 @@ id: DrinkRoyRogersGlass suffix: roy rogers components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: RoyRogers - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/royrogers.rsi state: icon @@ -1748,13 +1529,11 @@ id: DrinkSakeGlass suffix: sake components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Sake - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/sakeglass.rsi state: icon @@ -1764,13 +1543,11 @@ id: DrinkSbitenGlass suffix: sbiten components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Sbiten - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/sbitenglass.rsi state: icon @@ -1780,13 +1557,11 @@ id: DrinkScrewdriverCocktailGlass suffix: screwdriver components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: ScrewdriverCocktail - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/screwdriverglass.rsi state: icon @@ -1796,13 +1571,11 @@ id: DrinkCogChampBase suffix: cogchamp components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: CogChamp - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/cogchamp.rsi state: icon @@ -1812,13 +1585,11 @@ id: DrinkSuiDreamGlass suffix: sui dream components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SuiDream - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/sdreamglass.rsi state: icon @@ -1828,13 +1599,11 @@ id: DrinkEmeraldGlass suffix: melon liquor components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: MelonLiquor - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/emeraldglass.rsi state: icon @@ -1844,13 +1613,11 @@ id: DrinkMoonshineGlass suffix: moonshine components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Moonshine - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/glass_clear.rsi state: icon @@ -1860,13 +1627,11 @@ id: DrinkGlassWhite suffix: milk components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Milk - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/glass_white.rsi state: icon @@ -1876,13 +1641,11 @@ id: DrinkShirleyTempleGlass suffix: shirley temple components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: ShirleyTemple - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/shirleytemple.rsi state: icon @@ -1892,13 +1655,11 @@ id: DrinkSilencerGlass suffix: silencer components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Silencer - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/silencerglass.rsi state: icon @@ -1908,13 +1669,11 @@ id: DrinkSingulo suffix: singulo components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Singulo - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/singulo.rsi state: icon @@ -1924,13 +1683,11 @@ id: DrinkSolDryGlass suffix: sol dry components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SolDry - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/sol_dry_glass.rsi state: icon @@ -1940,13 +1697,11 @@ id: DrinkSnowWhite suffix: snow white components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SnowWhite - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/snowwhite.rsi state: icon @@ -1956,13 +1711,11 @@ id: DrinkSoyLatte suffix: soy latte components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SoyLatte - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/soy_latte.rsi state: icon @@ -1972,13 +1725,11 @@ id: DrinkSpaceUpGlass suffix: space-up components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SpaceUp - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/space-up_glass.rsi state: icon @@ -1988,13 +1739,11 @@ id: DrinkSpaceMountainWindGlass suffix: space mountain wind components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SpaceMountainWind - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/space_mountain_wind_glass.rsi state: icon @@ -2004,13 +1753,11 @@ id: DrinkSyndicatebomb suffix: syndicate bomb components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: SyndicateBomb - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/syndicatebomb.rsi state: icon @@ -2020,13 +1767,11 @@ id: DrinkTeaGlass suffix: tea components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Tea - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/teaglass.rsi state: icon @@ -2036,13 +1781,11 @@ id: DrinkTequilaGlass suffix: tequila components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Tequila - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/tequillaglass.rsi state: icon @@ -2052,13 +1795,11 @@ id: DrinkTequilaSunriseGlass suffix: tequila sunrise components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: TequilaSunrise - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/tequillasunriseglass.rsi state: icon @@ -2068,13 +1809,11 @@ id: DrinkTheMartinez suffix: the martinez components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: TheMartinez - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: TheMartinez + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/the_martinez.rsi state: icon @@ -2084,13 +1823,11 @@ id: DrinkThreeMileIslandGlass suffix: three mile island components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: ThreeMileIsland - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: ThreeMileIsland + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/threemileislandglass.rsi state: icon @@ -2100,26 +1837,22 @@ id: DrinkTomatoJuice suffix: tomato juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceTomato - Quantity: 30 + Quantity: 60 - type: entity parent: DrinkGlass id: DrinkTortugaGlass suffix: tortuga components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Tortuga - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/tortuga.rsi state: icon @@ -2129,13 +1862,11 @@ id: DrinkToxinsSpecialGlass suffix: toxins special components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: ToxinsSpecial - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/toxinsspecialglass.rsi state: icon @@ -2145,13 +1876,11 @@ id: DrinkVampiroGlass suffix: vampiro components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Vampiro - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/vampiro.rsi state: icon @@ -2161,13 +1890,11 @@ id: DrinkVermouthGlass suffix: vermouth components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Vermouth - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/vermouthglass.rsi state: icon @@ -2177,13 +1904,11 @@ id: DrinkVodkaGlass suffix: vodka components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Vodka - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/ginvodkaglass.rsi state: icon @@ -2193,13 +1918,11 @@ id: DrinkVodkaMartiniGlass suffix: vodka martini components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: VodkaMartini - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/martiniglass.rsi state: icon @@ -2209,13 +1932,11 @@ id: DrinkVodkaRedBool suffix: vodka red bool components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: VodkaRedBool - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/ginvodkaglass.rsi state: icon @@ -2225,13 +1946,11 @@ id: DrinkVodkaTonicGlass suffix: vodka tonic components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: VodkaTonic - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/vodkatonicglass.rsi state: icon @@ -2242,13 +1961,11 @@ name: water jug description: Stay hydrated. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Water - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/water.rsi state: icon @@ -2258,13 +1975,11 @@ id: DrinkWatermelonJuice suffix: watermelon juice components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: JuiceWatermelon - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/watermelonglass.rsi state: icon @@ -2274,13 +1989,11 @@ id: DrinkWatermelonWakeup suffix: watermelon wakeup components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: WatermelonWakeup - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/champagneglass.rsi state: icon @@ -2290,13 +2003,11 @@ id: DrinkWhiskeyColaGlass suffix: whiskey cola components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: WhiskeyCola - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/whiskeycolaglass.rsi state: icon @@ -2306,13 +2017,11 @@ id: DrinkWhiskeyGlass suffix: whiskey components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Whiskey - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/whiskeyglass.rsi state: icon @@ -2322,13 +2031,11 @@ id: DrinkWhiskeySodaGlass suffix: whiskey soda components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: WhiskeySoda - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/whiskeysodaglass.rsi state: icon @@ -2338,13 +2045,11 @@ id: DrinkWhiteRussianGlass suffix: white russian components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: WhiteRussian - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/whiterussianglass.rsi state: icon @@ -2354,13 +2059,11 @@ id: DrinkWineGlass suffix: wine components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Wine - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/wineglass.rsi state: icon @@ -2370,13 +2073,11 @@ id: XenoBasherGlass suffix: xeno basher components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: XenoBasher - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/xenobasher.rsi state: icon @@ -2386,13 +2087,11 @@ id: DrinkCaipirinha suffix: caipirinha components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Caipirinha - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/caipirinha.rsi state: icon @@ -2402,13 +2101,11 @@ id: DrinkDaiquiri suffix: daiquiri components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Daiquiri - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/daiquiri.rsi state: icon @@ -2418,13 +2115,11 @@ id: DrinkDeathInTheAfternoon suffix: death in the afternoon components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: DeathInTheAfternoon - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/deathintheafternoon.rsi state: icon @@ -2434,13 +2129,11 @@ id: DrinkEmpress75 suffix: empress 75 components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Empress75 - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/empress75.rsi state: icon @@ -2450,13 +2143,11 @@ id: DrinkEspressoMartini suffix: espresso martini components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: EspressoMartini - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/espressomartini.rsi state: icon @@ -2466,13 +2157,11 @@ id: DrinkMayojito suffix: mayojito components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Mayojito - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/mayojito.rsi state: icon @@ -2482,13 +2171,11 @@ id: DrinkMimeosa suffix: mimeosa components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Mimeosa - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/mimeosa.rsi state: icon @@ -2498,13 +2185,11 @@ id: DrinkMimosa suffix: mimosa components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Mimosa - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/mimosa.rsi state: icon @@ -2514,13 +2199,11 @@ id: DrinkMoscowMule suffix: moscow mule components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: MoscowMule - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/moscowmule.rsi state: icon @@ -2530,13 +2213,11 @@ id: DrinkTheSunAlsoRises suffix: the sun also rises components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: TheSunAlsoRises - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/thesunalsorises.rsi state: icon @@ -2546,13 +2227,11 @@ id: DrinkWhiskeySour suffix: whiskey sour components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: WhiskeySour - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/whiskeysour.rsi state: icon @@ -2562,13 +2241,11 @@ id: DrinkBloodGlass suffix: blood components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: Blood - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bloodglass.rsi state: icon @@ -2579,13 +2256,11 @@ suffix: bacchus blessing description: You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...? components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 + - type: Solution + solution: reagents: - ReagentId: BacchusBlessing - Quantity: 30 + Quantity: 60 - type: Icon sprite: Objects/Consumable/Drinks/bacchusblessing.rsi state: icon diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_solutioncontainerexample.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_solutioncontainerexample.yml deleted file mode 100644 index 3a491e9373..0000000000 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_solutioncontainerexample.yml +++ /dev/null @@ -1,57 +0,0 @@ -# For empty check out chemistry bottles - -# With cut-out - -- type: entity - parent: DrinkBaseCup - id: DrinkVisualizerTestCut - name: solution container vis cut-out - description: A stainless steel insulated pitcher. Everyone's best friend in the morning. - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: JuiceWatermelon - Quantity: 30 - - type: Sprite - sprite: Objects/Consumable/Drinks/pitcher.rsi - layers: - - state: icon - - state: fill-6 - map: ["enum.SolutionContainerLayers.Fill"] - # REMEMBER IF YOU'RE SPAWNING WITH LIQUID ALREADY IN IT YOU WANT THIS TRUE - visible: true - - type: Appearance - - type: SolutionContainerVisuals - maxFillLevels: 6 - fillBaseName: fill- - -# Without (For food, non cut-out stuff) - -- type: entity - parent: DrinkBaseCup - id: DrinkVisualizerTestNot - name: solution container vis cut-not - description: A stainless steel insulated pitcher. Everyone's best friend in the morning. - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: JuiceWatermelon - Quantity: 30 - - type: Sprite - sprite: Objects/Consumable/Drinks/pitcher.rsi - layers: - - state: icon-6 - map: ["enum.SolutionContainerLayers.Fill"] - visible: true - - type: Appearance - - type: SolutionContainerVisuals - maxFillLevels: 6 - fillBaseName: icon- - changeColor: false - emptySpriteName: icon diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml index 2a44c451ab..9d23f09eb8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml @@ -4,10 +4,9 @@ name: shot glass description: Perfect for slamming down onto the table angrily. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 5 + - type: Solution + solution: + maxVol: 5 # Shot glass translates to about 5.3u so we round down because Nanotrasen is cheap. - type: Item size: Tiny - type: Sprite @@ -19,17 +18,18 @@ solution: drink - type: entity - parent: [DrinkBaseMaterialMetal, DrinkBase] + parent: [DrinkBaseMaterialMetal, SolutionLarge, DrinkBase] id: DrinkIceBucket name: ice bucket description: A special bucket of refreshy ice. Prohibited use for challenge with the same name! components: - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Ice - Quantity: 200 + - type: Item + size: Large + - type: Solution + solution: + reagents: + - ReagentId: Ice + Quantity: 240 - type: Sprite sprite: Objects/Consumable/Drinks/icebucket.rsi state: icon @@ -38,18 +38,18 @@ Steel: 75 - type: entity - parent: [DrinkBaseMaterialPorcelain, DrinkBase] + parent: [DrinkBaseMaterialPorcelain, SolutionNormal, DrinkBase] id: DrinkTeapot name: teapot # short and stout description: An elegant teapot. It simply oozes class. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: Tea - Quantity: 100 + - type: Item + size: Normal + - type: Solution + solution: + reagents: + - ReagentId: Tea + Quantity: 120 - type: Sprite sprite: Objects/Consumable/Drinks/teapot.rsi - type: FitsInDispenser @@ -108,15 +108,14 @@ # Bartender tools - type: entity - parent: [DrinkBaseMaterialStrongMetal, DrinkBase] + parent: [DrinkBaseMaterialStrongMetal, SolutionSmall, DrinkBase] id: DrinkShaker name: shaker description: The trusty mixing buddy of the bartender. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 + - type: Solution + solution: + maxVol: 90 # Shakers are often about 700ml give or take and I like weird sizes so. - type: FitsInDispenser solution: drink - type: ExaminableSolution @@ -126,6 +125,8 @@ state: icon - type: Item sprite: Objects/Consumable/Drinks/shaker.rsi + shape: + - 0,0,0,2 # 3 tall - type: PhysicalComposition materialComposition: Steel: 50 @@ -156,10 +157,11 @@ name: jigger description: Like a shaker, but smaller. Used to control the amount of ingredients. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 20 + - type: Item + size: Tiny + - type: Solution + solution: + maxVol: 10 # Two shot glasses in size - type: SolutionTransfer canChangeTransferAmount: true minTransferAmount: 1 @@ -177,15 +179,13 @@ Steel: 20 - type: entity - parent: [DrinkBaseMaterialStrongMetal, DrinkBase, DrinkVisualsFill] + parent: [DrinkBaseMaterialStrongMetal, SolutionNormal, DrinkBase, DrinkVisualsFill] id: Pitcher name: metal pitcher description: A stainless steel insulated pitcher. Everyone's best friend in the morning. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 60 + - type: Item + size: Normal - type: Sprite sprite: Objects/Consumable/Drinks/pitcher.rsi - type: SolutionContainerVisuals diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/trash_drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/trash_drinks.yml deleted file mode 100644 index 879ab62ba4..0000000000 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/trash_drinks.yml +++ /dev/null @@ -1,166 +0,0 @@ -# File for containers like bottles or milk jugs that are empty -# TODO these prototypes have ambiguous names and should be renamed to match their filled versions, with "Full" replaced by "Empty" - -# When used as the first parent, this empties a bottle's reagent and spawns it already opened -- type: entity - abstract: true - parent: [ DrinkBaseOpenableOpen, DrinkBaseEmptyTrash ] - id: DrinkBottleBaseEmpty - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - - type: Tag - tags: - - DrinkBottle - - Trash - -- type: entity - abstract: true - parent: [ DrinkBaseOpenableOpen, DrinkBaseEmptyTrash ] - id: DrinkBottleBaseSmallEmpty - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - - type: Tag - tags: - - DrinkBottle - - Trash - -- type: entity - abstract: true - parent: [ DrinkBaseOpenableOpen, DrinkBaseEmptyTrash ] - id: DrinkCartonBaseEmpty - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - -- type: entity - abstract: true - parent: [ DrinkBaseOpenableOpen, DrinkBaseEmptyTrash ] - id: DrinkCartonBaseLargeEmpty - components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - -# Small bottles - -- type: entity - parent: [ DrinkBottleBaseSmallEmpty, DrinkAleBottleFull ] - id: DrinkBottleAle - -- type: entity - parent: [ DrinkBottleBaseSmallEmpty, DrinkBeerBottleFull ] - id: DrinkBottleBeer - components: - - type: Tag - tags: - - Beer - - Trash - -# Large bottles - -- type: entity - parent: [ DrinkBottleBaseEmpty, DrinkAbsintheBottleFull ] - id: DrinkBottleAbsinthe - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkBlueCuracaoBottleFull] - id: DrinkBottleAlcoClear - -- type: entity - parent: [ DrinkBottleBaseEmpty, DrinkCognacBottleFull ] - id: DrinkBottleCognac - -- type: entity - parent: [ DrinkBottleBaseEmpty, DrinkGinBottleFull ] - id: DrinkBottleGin - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkGildlagerBottleFull] - id: DrinkBottleGildlager - -- type: entity - name: coffee liqueur bottle - parent: [DrinkBottleBaseEmpty, DrinkCoffeeLiqueurBottleFull] - id: DrinkBottleCoffeeLiqueur - -# todo make a real cahors bottle -- type: entity - name: nt cahors bottle - parent: [DrinkBottleBaseEmpty, DrinkBottleGlassBaseFull] - id: DrinkBottleNTCahors - components: - - type: Sprite - sprite: Objects/Consumable/Drinks/ntcahors.rsi - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkPatronBottleFull] - id: DrinkBottlePatron - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkPoisonWinebottleFull] - id: DrinkBottlePoisonWine - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkRumBottleFull] - id: DrinkBottleRum - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkTequilaBottleFull] - id: DrinkBottleTequila - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkVermouthBottleFull] - id: DrinkBottleVermouth - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkVodkaBottleFull] - id: DrinkBottleVodka - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkWhiskeyBottleFull] - id: DrinkBottleWhiskey - -- type: entity - parent: [DrinkBottleBaseEmpty, DrinkWineBottleFull] - id: DrinkBottleWine - -# Small cartons - -- type: entity - parent: [DrinkCartonBaseEmpty, DrinkJuiceLimeCarton] - id: DrinkCartonLime - -- type: entity - parent: [DrinkCartonBaseEmpty, DrinkJuiceOrangeCarton] - id: DrinkCartonOrange - -- type: entity - parent: [DrinkCartonBaseEmpty, DrinkJuiceTomatoCarton] - id: DrinkCartonTomato - -- type: entity - parent: [DrinkCartonBaseEmpty, DrinkCreamCarton] - id: DrinkCartonCream - -# Large cartons - -- type: entity - parent: [DrinkCartonBaseLargeEmpty, DrinkMilkCarton] - id: DrinkCartonMilk - -- type: entity - parent: [DrinkCartonBaseLargeEmpty, DrinkSoyMilkCarton] - id: DrinkCartonSoyMilk - -- type: entity - parent: [DrinkCartonBaseLargeEmpty, DrinkOatMilkCarton] - id: DrinkCartonOatMilk diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bagel.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bagel.yml index 9a905db90a..cacdaa6102 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bagel.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bagel.yml @@ -3,7 +3,7 @@ - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionVeryTiny, FoodInjectableBase] id: FoodBagelBase description: A delicious bagel. components: @@ -15,13 +15,11 @@ - type: Sprite sprite: Objects/Consumable/Food/Baked/bagel.rsi state: bagel - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 - type: entity parent: FoodBagelBase @@ -40,15 +38,13 @@ - medicine - type: Sprite state: bagel-poppy - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Bicaridine - Quantity: 5 - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 5 + - ReagentId: Nutriment + Quantity: 10 - type: entity parent: FoodBagelBase @@ -67,13 +63,10 @@ - type: Tag tags: - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 2.5 - - ReagentId: Fiber - Quantity: 2.5 - + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Fiber + Quantity: 5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml index 1913f6b4e1..9809b64b5c 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml @@ -3,7 +3,7 @@ - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionNormal, FoodInjectableBase] id: FoodBreadBase components: - type: Item @@ -16,16 +16,14 @@ - type: Tag tags: - Bread - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Nutriment - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 80 - type: entity - parent: FoodBreadBase + parent: [SolutionVeryTiny, FoodBreadBase] id: FoodBreadSliceBase abstract: true components: @@ -38,13 +36,11 @@ tags: - Bread - Slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 # 1/8 of a loaf of bread # Custom Bread Example @@ -61,6 +57,7 @@ - state: alpha-filling color: "#FF613F" - type: SliceableFood + count: 8 slice: FoodBreadVolcanicSlice - type: entity @@ -92,6 +89,7 @@ layers: - state: banana - type: SliceableFood + count: 8 slice: FoodBreadBananaSlice - type: Tag tags: @@ -134,20 +132,19 @@ layers: - state: cotton - type: SliceableFood + count: 8 slice: FoodBreadCottonSlice - type: Tag tags: - ClothMade - Bread - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 40 + - ReagentId: Fiber + Quantity: 40 - type: entity name: cotton bread slice @@ -169,15 +166,13 @@ - ClothMade - Bread - Slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Fiber - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Fiber + Quantity: 5 - type: entity name: cornbread @@ -193,14 +188,8 @@ layers: - state: cornbread - type: SliceableFood + count: 8 slice: FoodBreadCornSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 15 # Tastes like bread, banana, nut. - type: entity @@ -216,13 +205,6 @@ - type: Sprite layers: - state: cornbread-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - type: entity name: cream cheese bread @@ -239,16 +221,15 @@ layers: - state: creamcheese - type: SliceableFood + count: 8 slice: FoodBreadCreamcheeseSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 100 + - ReagentId: Vitamin + Quantity: 4 # Tastes like bread, cheese. - type: entity @@ -265,15 +246,13 @@ - type: Sprite layers: - state: creamcheese-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 1.2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12.5 + - ReagentId: Vitamin + Quantity: 0.5 - type: entity name: meat bread @@ -289,16 +268,17 @@ layers: - state: meat - type: SliceableFood + count: 8 slice: FoodBreadMeatSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 104 + - ReagentId: Protein + Quantity: 4 + - ReagentId: Vitamin + Quantity: 4 - type: Tag tags: - Meat @@ -318,15 +298,15 @@ - type: Sprite layers: - state: meat-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 1.2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 13 + - ReagentId: Protein + Quantity: 0.5 + - ReagentId: Vitamin + Quantity: 0.5 - type: Tag tags: - Meat @@ -347,20 +327,17 @@ layers: - state: mimana - type: SliceableFood + count: 8 slice: FoodBreadMimanaSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Nothing - Quantity: 5 - - ReagentId: MuteToxin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 96 + - ReagentId: Vitamin + Quantity: 4 + - ReagentId: MuteToxin + Quantity: 10 # Tastes like bread, cheese. - type: entity @@ -376,19 +353,15 @@ - type: Sprite layers: - state: mimana-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Nothing - Quantity: 1 - - ReagentId: MuteToxin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12 + - ReagentId: Vitamin + Quantity: 0.5 + - ReagentId: MuteToxin + Quantity: 1.25 - type: entity name: bread @@ -400,6 +373,7 @@ layers: - state: plain - type: SliceableFood + count: 8 slice: FoodBreadPlainSlice - type: entity @@ -426,18 +400,15 @@ layers: - state: sausage - type: SliceableFood + count: 8 slice: FoodBreadSausageSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Protein - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 100 + - ReagentId: Protein + Quantity: 10 - type: Tag tags: - Meat @@ -456,17 +427,13 @@ - type: Sprite layers: - state: sausage-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Protein - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12.5 + - ReagentId: Protein + Quantity: 1.25 - type: Tag tags: - Meat @@ -487,16 +454,17 @@ layers: - state: spidermeat - type: SliceableFood + count: 8 slice: FoodBreadMeatSpiderSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 104 + - ReagentId: Protein + Quantity: 4 + - ReagentId: Vitamin + Quantity: 4 - type: Tag tags: - Meat @@ -516,15 +484,15 @@ - type: Sprite layers: - state: spidermeat-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 1.2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 13 + - ReagentId: Protein + Quantity: 0.5 + - ReagentId: Vitamin + Quantity: 0.5 - type: Tag tags: - Meat @@ -545,16 +513,15 @@ layers: - state: tofu - type: SliceableFood + count: 8 slice: FoodBreadTofuSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 48 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Protein - Quantity: 12 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 90 + - ReagentId: Protein + Quantity: 10 # Tastes like bread, tofu. - type: entity @@ -570,15 +537,13 @@ - type: Sprite layers: - state: tofu-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2.4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 11.25 + - ReagentId: Protein + Quantity: 1.25 - type: entity name: xeno meat bread @@ -594,16 +559,17 @@ layers: - state: xenomeat - type: SliceableFood + count: 8 slice: FoodBreadMeatXenoSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 104 + - ReagentId: Protein + Quantity: 4 + - ReagentId: Vitamin + Quantity: 4 - type: Tag tags: - Meat @@ -623,15 +589,15 @@ - type: Sprite layers: - state: xenomeat-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 1.2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 13 + - ReagentId: Protein + Quantity: 0.5 + - ReagentId: Vitamin + Quantity: 0.5 - type: Tag tags: - Meat @@ -651,19 +617,17 @@ - type: SliceableFood count: 12 slice: FoodBreadBaguetteSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: TableSalt - Quantity: 1 - - ReagentId: Blackpepper - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 78 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: TableSalt + Quantity: 3 + - ReagentId: Blackpepper + Quantity: 3 - type: Clothing slots: [ BELT ] equippedPrefix: baguette @@ -711,21 +675,19 @@ - state: baguette-cotton-inhand-left right: - state: baguette-cotton-inhand-right - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Fiber - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: TableSalt - Quantity: 1 - - ReagentId: Blackpepper - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 39 + - ReagentId: Fiber + Quantity: 39 + - ReagentId: Vitamin + Quantity: 0.6 + - ReagentId: TableSalt + Quantity: 0.6 + - ReagentId: Blackpepper + Quantity: 0.6 - type: entity name: crostini @@ -735,19 +697,17 @@ components: - type: Sprite state: crostini - - type: SolutionContainerManager - solutions: - food: - maxVol: 2 - reagents: - - ReagentId: Nutriment - Quantity: 0.5 - - ReagentId: Vitamin - Quantity: 0.1 - - ReagentId: TableSalt - Quantity: 0.1 - - ReagentId: Blackpepper - Quantity: 0.1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6.5 + - ReagentId: Vitamin + Quantity: 0.05 + - ReagentId: TableSalt + Quantity: 0.05 + - ReagentId: Blackpepper + Quantity: 0.05 - type: entity parent: FoodBreadBaguetteSlice @@ -764,21 +724,19 @@ - Bread - Slice - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 2 - reagents: - - ReagentId: Nutriment - Quantity: 0.25 - - ReagentId: Fiber - Quantity: 0.25 - - ReagentId: Vitamin - Quantity: 0.1 - - ReagentId: TableSalt - Quantity: 0.1 - - ReagentId: Blackpepper - Quantity: 0.1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 3.25 + - ReagentId: Fiber + Quantity: 3.25 + - ReagentId: Vitamin + Quantity: 0.05 + - ReagentId: TableSalt + Quantity: 0.05 + - ReagentId: Blackpepper + Quantity: 0.05 - type: entity name: buttered toast @@ -792,20 +750,18 @@ - bread - type: Sprite state: buttered-toast - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Butter + Quantity: 2.5 # Tastes like bread, butter. - type: entity name: french toast - parent: FoodBreadSliceBase + parent: [SolutionTiny, FoodBreadSliceBase] id: FoodBreadFrenchToast description: A slice of bread soaked in a beaten egg mixture. components: @@ -815,20 +771,22 @@ - bread - type: Sprite state: french-toast - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: EggCooked + Quantity: 6 + - ReagentId: Protein + Quantity: 6 + - ReagentId: Vitamin + Quantity: 3 # Tastes like bread, butter. - type: entity name: garlic bread - parent: FoodBreadSliceBase + parent: [SolutionTiny, FoodBreadSliceBase] id: FoodBreadGarlicSlice description: Alas, it is limited. components: @@ -839,20 +797,22 @@ - type: Sprite layers: - state: garlic-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 16 + - ReagentId: Vitamin + Quantity: 4 + - ReagentId: Allicin + Quantity: 4 + - ReagentId: Butter + Quantity: 2.5 # Tastes like garlic, Italy. - type: entity name: jelly toast - parent: FoodBreadSliceBase + parent: [SolutionTiny, FoodBreadSliceBase] id: FoodBreadJellySlice description: As if science are gonna give up their slimes for toast! components: @@ -863,15 +823,13 @@ - type: Sprite layers: - state: jelly-toast - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Vitamin + Quantity: 5 # Tastes like garlic, Italy. - type: entity @@ -886,43 +844,37 @@ - type: Tag tags: - Trash - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Mold - Quantity: 7 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2.5 + - ReagentId: Mold + Quantity: 10 # Tastes like decaying fungus. - type: entity name: two slice - parent: FoodBreadSliceBase + parent: [SolutionTiny, FoodBreadSliceBase] id: FoodBreadTwoSlice description: Classy. components: - type: Sprite layers: - state: two-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Wine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Wine + Quantity: 5 # Tastes like decaying fungus. - type: entity name: bread dog id: MobBreadDog - parent: EdibleBase + parent: [SolutionLarge, FoodBase] description: It's a bread. It's a dog. It's a... breaddog? components: - type: FlavorProfile @@ -930,18 +882,19 @@ - meaty - bread - type: SliceableFood + count: 8 slice: FoodBreadSausageSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Protein - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 105 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: Protein + Quantity: 10 + - ReagentId: UncookedAnimalProteins + Quantity: 25 - type: Sprite noRot: true drawdepth: Mobs @@ -1003,7 +956,7 @@ Blunt: 1 - type: entity - parent: FoodBreadBase + parent: [SolutionVeryTiny, FoodBreadSliceBase] id: FoodBreadNutriBatard name: nutri-bâtard description: bon 'pétite! @@ -1048,10 +1001,8 @@ size: Small storedOffset: -1,0 heldPrefix: batard-cotton - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Fiber - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 10 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml index 9436776d0d..01a594ab2d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml @@ -2,7 +2,7 @@ # Base - type: entity - parent: FoodInjectableBase + parent: [SolutionNormal, FoodInjectableBase] id: FoodCakeBase abstract: true components: @@ -11,15 +11,15 @@ - sweet - type: Sprite sprite: Objects/Consumable/Food/Baked/cake.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 # flavored cakes have less room for spiking - reagents: - - ReagentId: Nutriment - Quantity: 40 - - ReagentId: Vitamin - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: Sugar + Quantity: 10 - type: Item size: Normal - type: Tag @@ -40,7 +40,7 @@ stash: !type:ContainerSlot {} - type: entity - parent: FoodCakeBase + parent: [SolutionVeryTiny, FoodCakeBase] id: FoodCakeSliceBase abstract: true description: Just a slice of cake, it is enough for everyone. @@ -49,15 +49,15 @@ flavors: - sweet - type: Edible - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Vitamin + Quantity: 1.25 + - ReagentId: Sugar + Quantity: 1.25 - type: Item size: Tiny - type: Tag @@ -79,6 +79,7 @@ - state: alpha-filling color: blue - type: SliceableFood + count: 8 slice: FoodCakeBlueberrySlice - type: Tag tags: @@ -133,16 +134,8 @@ - type: Sprite state: plain - type: SliceableFood + count: 8 slice: FoodCakePlainSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Vitamin - Quantity: 5 - type: Item heldPrefix: plain @@ -155,15 +148,6 @@ components: - type: Sprite state: plain-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 1 - type: Item heldPrefix: plain-slice # Tastes like sweetness, cake. @@ -177,18 +161,21 @@ - type: Sprite state: carrot - type: SliceableFood + count: 8 slice: FoodCakeCarrotSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: JuiceCarrot - Quantity: 15 - - ReagentId: Sugar - Quantity: 5 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Vitamin + Quantity: 24 + - ReagentId: Sugar + Quantity: 10 + - ReagentId: JuiceCarrot + Quantity: 10 + - ReagentId: Oculine + Quantity: 6 - type: Tag tags: - Cake @@ -214,17 +201,19 @@ components: - type: Sprite state: carrot-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: JuiceCarrot - Quantity: 3 - - ReagentId: Sugar - Quantity: 1 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: Sugar + Quantity: 1.25 + - ReagentId: JuiceCarrot + Quantity: 1.25 + - ReagentId: Oculine + Quantity: 0.75 - type: Tag tags: - Cake @@ -254,6 +243,7 @@ - type: Sprite state: brain - type: SliceableFood + count: 8 slice: FoodCakeBrainSlice - type: Tag tags: @@ -308,6 +298,7 @@ - type: Sprite state: cheese - type: SliceableFood + count: 8 slice: FoodCakeCheeseSlice - type: Item inhandVisuals: @@ -352,6 +343,7 @@ - state: alpha-filling color: "#ff9900" - type: SliceableFood + count: 8 slice: FoodCakeOrangeSlice - type: Tag tags: @@ -407,6 +399,7 @@ - state: alpha-filling color: "#00ff00" - type: SliceableFood + count: 8 slice: FoodCakeLimeSlice - type: Tag tags: @@ -462,6 +455,7 @@ - state: alpha-filling color: "#ffff00" - type: SliceableFood + count: 8 slice: FoodCakeLemonSlice - type: Tag tags: @@ -518,18 +512,21 @@ - lemoon - berry - type: SliceableFood + count: 8 slice: FoodCakeLemoonSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 70 - reagents: - - ReagentId: Nutriment - Quantity: 40 - - ReagentId: Vitamin - Quantity: 20 - - ReagentId: Milk - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 64 + - ReagentId: Vitamin + Quantity: 20 + - ReagentId: Sugar + Quantity: 10 + - ReagentId: Milk + Quantity: 10 + - ReagentId: JuiceBerry + Quantity: 6 - type: Tag tags: - Cake @@ -549,17 +546,19 @@ flavors: - lemoon - berry - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Milk - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8 + - ReagentId: Vitamin + Quantity: 2.5 + - ReagentId: Sugar + Quantity: 1.25 + - ReagentId: Milk + Quantity: 1.25 + - ReagentId: JuiceBerry + Quantity: 0.75 - type: Tag tags: - Cake @@ -589,18 +588,21 @@ - state: alpha color: "#ba672e" - type: SliceableFood + count: 8 slice: FoodCakeChocolateSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 40 - - ReagentId: Theobromine - Quantity: 5 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: Sugar + Quantity: 16 + - ReagentId: CocoaPowder + Quantity: 8 + - ReagentId: Theobromine + Quantity: 8 - type: Item inhandVisuals: left: @@ -619,17 +621,19 @@ layers: - state: alpha-slice color: "#ba672e" - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Theobromine - Quantity: 1 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Vitamin + Quantity: 1.25 + - ReagentId: Sugar + Quantity: 2 + - ReagentId: CocoaPowder + Quantity: 1 + - ReagentId: Theobromine + Quantity: 1 - type: Item inhandVisuals: left: @@ -652,6 +656,7 @@ - state: alpha-filling color: "#ff4300" - type: SliceableFood + count: 8 slice: FoodCakeAppleSlice - type: Tag tags: @@ -706,6 +711,7 @@ - type: Sprite state: slime - type: SliceableFood + count: 8 slice: FoodCakeSlimeSlice - type: Tag tags: @@ -760,16 +766,17 @@ - type: Sprite state: pumpkinspice - type: SliceableFood + count: 8 slice: FoodCakePumpkinSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 60 - reagents: - - ReagentId: Nutriment - Quantity: 35 - - ReagentId: Vitamin - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 84 + - ReagentId: Vitamin + Quantity: 16 + - ReagentId: Sugar + Quantity: 10 - type: Tag tags: - Cake @@ -793,15 +800,15 @@ components: - type: Sprite state: pumpkinspice-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 7 - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10.5 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: Sugar + Quantity: 1.25 - type: Tag tags: - Cake @@ -828,6 +835,7 @@ - type: Sprite state: christmas - type: SliceableFood + count: 8 slice: FoodCakeChristmasSlice - type: Tag tags: @@ -873,6 +881,7 @@ - type: Sprite state: birthday - type: SliceableFood + count: 8 slice: FoodCakeBirthdaySlice - type: Item heldPrefix: birthday @@ -898,18 +907,8 @@ - type: Sprite state: vanilla - type: SliceableFood + count: 8 slice: FoodCakeVanillaSlice - - type: SolutionContainerManager #TODO Sprinkles - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 25 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Sugar - Quantity: 15 - type: Item heldPrefix: vanilla @@ -921,17 +920,6 @@ components: - type: Sprite state: vanilla-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Sugar - Quantity: 5 - type: Item inhandVisuals: left: @@ -951,18 +939,8 @@ - type: Sprite state: clown - type: SliceableFood + count: 8 slice: FoodCakeClownSlice - - type: SolutionContainerManager #TODO Sprinkles - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Sugar - Quantity: 15 - type: Item heldPrefix: clown @@ -974,17 +952,6 @@ components: - type: Sprite state: clown-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Sugar - Quantity: 5 - type: Item heldPrefix: clown-slice # Tastes like sweetness, cake, clown. @@ -998,18 +965,19 @@ - type: Sprite state: trumpet - type: SliceableFood + count: 8 slice: FoodCakeSpacemanSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: PolypyryliumOligomers - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Vitamin + Quantity: 16 + - ReagentId: Sugar + Quantity: 10 + - ReagentId: PolypyryliumOligomers + Quantity: 12 - type: Item heldPrefix: trumpet @@ -1021,17 +989,17 @@ components: - type: Sprite state: trumpet-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: PolypyryliumOligomers - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: Sugar + Quantity: 1.25 + - ReagentId: PolypyryliumOligomers + Quantity: 1.5 - type: Item heldPrefix: trumpet-slice # Tastes like sweetness, cake, jam. @@ -1039,7 +1007,7 @@ - type: entity name: cak id: MobCatCake - parent: EdibleBase + parent: [SolutionLarge, FoodBase] description: It's a cake. It's a cat. It's a cak. components: - type: FlavorProfile @@ -1049,15 +1017,19 @@ solution: food - type: RefillableSolution solution: food - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 88 + - ReagentId: Vitamin + Quantity: 16 + - ReagentId: Sugar + Quantity: 10 + - ReagentId: Protein + Quantity: 12 + - ReagentId: UncookedAnimalProteins + Quantity: 24 - type: Sprite noRot: true drawdepth: Mobs @@ -1129,28 +1101,30 @@ - type: entity name: suppermatter - parent: FoodCakeBase + parent: [SolutionLarge, FoodCakeBase] id: FoodCakeSuppermatter description: Extremely dense and powerful food. components: - type: Sprite state: suppermatter - type: SliceableFood - slice: FoodCakeSuppermatterSlice count: 8 - - type: SolutionContainerManager - solutions: - food: - maxVol: 125 # SUPER dense cake - reagents: - - ReagentId: Nutriment - Quantity: 80 - - ReagentId: Sugar - Quantity: 30 + slice: FoodCakeSuppermatterSlice + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 120 + - ReagentId: Vitamin + Quantity: 20 + - ReagentId: Sugar + Quantity: 50 + - ReagentId: Plasma + Quantity: 10 - type: Edible transferAmount: 12 - type: Item - size: Normal + size: Large heldPrefix: suppermatter - type: PointLight color: "#FFFF00" @@ -1165,15 +1139,17 @@ components: - type: Sprite state: suppermatter-shard - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Sugar - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Vitamin + Quantity: 2.5 + - ReagentId: Sugar + Quantity: 6.25 + - ReagentId: Plasma + Quantity: 1.25 - type: Edible transferAmount: 3 - type: PointLight @@ -1199,22 +1175,23 @@ - type: Sprite state: cotton - type: SliceableFood + count: 8 slice: FoodCakeCottonSlice - type: Tag tags: - Cake - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: Sugar + Quantity: 10 + - ReagentId: Fiber + Quantity: 10 - type: Item heldPrefix: cotton @@ -1231,17 +1208,17 @@ - Cake - ClothMade - Slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Fiber - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Vitamin + Quantity: 1.25 + - ReagentId: Sugar + Quantity: 1.25 + - ReagentId: Fiber + Quantity: 1.25 - type: Item heldPrefix: cotton-slice @@ -1260,18 +1237,21 @@ - sweet - berry - motivating - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 40 - - ReagentId: Vitamin - Quantity: 10 - - ReagentId: Milk - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 70 + - ReagentId: Vitamin + Quantity: 20 + - ReagentId: Sugar + Quantity: 10 + - ReagentId: Milk + Quantity: 10 + - ReagentId: JuiceBerry + Quantity: 10 - type: SliceableFood + count: 8 slice: FoodCakeBerryDelightSlice - type: Tag tags: @@ -1301,17 +1281,19 @@ - sweet - berry - motivating - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Milk - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8.75 + - ReagentId: Vitamin + Quantity: 2.5 + - ReagentId: Sugar + Quantity: 1.25 + - ReagentId: Milk + Quantity: 1.25 + - ReagentId: JuiceBerry + Quantity: 1.25 - type: Tag tags: - Cake diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml index 05bbf930ab..bf8955a4fb 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml @@ -1,20 +1,18 @@ # Base - type: entity - parent: FoodInjectableBase + parent: [SolutionTiny, FoodInjectableBase] id: FoodDonkpocketBase abstract: true components: - type: Edible - type: Sprite sprite: Objects/Consumable/Food/Baked/donkpocket.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 - type: Item size: Tiny - type: Tag @@ -41,9 +39,22 @@ - type: Sprite state: plain +- type: entity + parent: [SolutionFood, SolutionTiny] + id: SolutionFoodDonkpocketWarm + categories: [ HideSpawnMenu ] # Needed for a very specific lighter so can't be abstract + components: + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12 + - ReagentId: Omnizine + Quantity: 3 + - type: entity name: warm donk-pocket - parent: FoodDonkpocket + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocket] id: FoodDonkpocketWarm description: The heated food of choice for the seasoned traitor. components: @@ -52,15 +63,6 @@ - bread - meaty - cheap - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Omnizine - Quantity: 2 - type: entity name: dank-pocket @@ -72,18 +74,12 @@ flavors: - leafy - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - type: Sprite state: dank - type: entity name: warm dank-pocket - parent: FoodDonkpocketDank + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketDank] id: FoodDonkpocketDankWarm description: The heated food of choice for the seasoned botanist. components: @@ -91,14 +87,6 @@ flavors: - leafy - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 4 - type: entity name: spicy-pocket @@ -116,7 +104,7 @@ - type: entity name: warm spicy-pocket - parent: FoodDonkpocketSpicy + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketSpicy] id: FoodDonkpocketSpicyWarm description: The classic snack food, now maybe a bit too spicy. components: @@ -125,14 +113,6 @@ - spicy - meaty - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 2 - type: Sprite state: spicy @@ -152,7 +132,7 @@ - type: entity name: warm teriyaki-pocket - parent: FoodDonkpocketTeriyaki + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketTeriyaki] id: FoodDonkpocketTeriyakiWarm description: An East Asian take on the classic stationside snack, now steamy and warm. components: @@ -161,14 +141,6 @@ - meaty - sweet - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 2 - type: entity name: pizza-pocket @@ -182,18 +154,12 @@ - cheesy - tomato - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - type: Sprite state: pizza - type: entity name: warm pizza-pocket - parent: FoodDonkpocketPizza + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketPizza] id: FoodDonkpocketPizzaWarm description: Cheese filling really hits the spot when warm. components: @@ -203,14 +169,6 @@ - cheesy - tomato - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Omnizine - Quantity: 2 - type: entity name: honk-pocket @@ -222,20 +180,19 @@ flavors: - funny - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Honk - Quantity: 0.50 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8 + - ReagentId: Honk + Quantity: 2 - type: Sprite state: banana - type: entity name: warm honk-pocket - parent: FoodDonkpocketHonk + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketHonk] id: FoodDonkpocketHonkWarm description: The award-winning donk-pocket, now warm and toasty. components: @@ -243,16 +200,15 @@ flavors: - funny - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Honk - Quantity: 1 - - ReagentId: Omnizine - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Honk + Quantity: 2 + - ReagentId: Omnizine + Quantity: 3 - type: entity name: berry-pocket @@ -264,18 +220,12 @@ flavors: - sweet - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - type: Sprite state: berry - type: entity name: warm berry-pocket - parent: FoodDonkpocketBerry + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketBerry] id: FoodDonkpocketBerryWarm description: A relentlessly sweet donk-pocket, now warm and delicious. components: @@ -283,16 +233,15 @@ flavors: - sweet - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 2 - - ReagentId: Sugar - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Omnizine + Quantity: 3 + - ReagentId: JuiceBerry + Quantity: 2 - type: entity name: stonk-pocket @@ -304,32 +253,18 @@ flavors: - profits - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - type: Sprite state: stonk - type: entity name: warm stonk-pocket - parent: FoodDonkpocketStonk + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketStonk] id: FoodDonkpocketStonkWarm components: - type: FlavorProfile flavors: - profits - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 2 - type: entity name: carp-pocket @@ -341,32 +276,18 @@ flavors: - cheap - fishops - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - type: Sprite state: carp - type: entity name: warm carp-pocket - parent: FoodDonkpocketCarp + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketCarp] id: FoodDonkpocketCarpWarm components: - type: FlavorProfile flavors: - cheap - fishops - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 2 - type: entity name: dink-pocket @@ -378,14 +299,15 @@ flavors: - cold - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: JuiceCarrot - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: JuiceCarrot + Quantity: 1 + - ReagentId: Cellulose + Quantity: 7 - type: Sprite state: dink @@ -399,14 +321,13 @@ flavors: - cotton - cheap - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Fiber - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Fiber + Quantity: 5 - type: Sprite state: moth - type: Edible @@ -418,16 +339,15 @@ - type: entity name: warm moth-pocket - parent: FoodDonkpocketMoth + parent: [SolutionFoodDonkpocketWarm, FoodDonkpocketMoth] id: FoodDonkpocketMothWarm components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Fiber - Quantity: 5 - - ReagentId: Omnizine - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 10 + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: Omnizine + Quantity: 3 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donut.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donut.yml index 2403aefe6d..ae3b36f15b 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donut.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donut.yml @@ -1,9 +1,9 @@ # Base - type: entity - parent: FoodInjectableBase - id: FoodDonutBase abstract: true + parent: [SolutionVeryTiny, FoodInjectableBase] + id: FoodDonutBase description: Goes great with robust coffee. components: - type: Tag @@ -11,13 +11,13 @@ - Donut - type: Sprite sprite: Objects/Consumable/Food/Baked/donut.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Sugar + Quantity: 3 - type: Item sprite: Objects/Consumable/Food/Baked/donut.rsi size: Tiny @@ -31,6 +31,15 @@ tags: - Donut - Fruit + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Sugar + Quantity: 3 + - ReagentId: Vitamin + Quantity: 1 # Tastes like donut. # The sprinkles are now an overlay, so you can put them on any donut! If we really @@ -43,9 +52,9 @@ # Plain Donuts - type: entity - name: plain donut parent: FoodDonutBase id: FoodDonutPlain + name: plain donut components: - type: FlavorProfile flavors: @@ -54,31 +63,22 @@ state: plain - type: entity - name: plain jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellyPlain + name: plain jelly-donut components: - type: FlavorProfile flavors: - jelly - type: Sprite state: jelly-plain - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Donuts - type: entity - name: donut parent: FoodDonutBase id: FoodDonutHomer + name: donut components: - type: FlavorProfile flavors: @@ -89,9 +89,9 @@ heldPrefix: pink - type: entity - name: chaos donut parent: FoodDonutBase id: FoodDonutChaos + name: chaos donut description: Like life, it never quite tastes the same. components: - type: FlavorProfile @@ -105,9 +105,9 @@ # Tastes like donut, chaos. - type: entity - name: meat donut parent: FoodDonutBase id: FoodDonutMeat + name: meat donut description: Tastes as gross as it looks. components: - type: FlavorProfile @@ -122,9 +122,9 @@ # Tastes like meat. - type: entity - name: pink donut parent: FoodDonutBase id: FoodDonutPink + name: pink donut description: Goes great with a soy latte. components: - type: FlavorProfile @@ -136,9 +136,9 @@ heldPrefix: pink - type: entity - name: spaceman's donut parent: FoodDonutBase id: FoodDonutSpaceman + name: spaceman's donut description: Goes great with a cold beaker of malk. components: - type: Sprite @@ -146,9 +146,9 @@ # Tastes like donut, violets. - type: entity - name: apple donut parent: FoodDonutBase id: FoodDonutApple + name: apple donut description: Goes great with a shot of cinnamon schnapps. components: - type: FlavorProfile @@ -160,9 +160,9 @@ # Tastes like donut, green apples. - type: entity - name: caramel donut parent: FoodDonutBase id: FoodDonutCaramel + name: caramel donut description: Goes great with a mug of hot coco. components: - type: Sprite @@ -170,9 +170,9 @@ # Tastes like donut, buttery sweetness. - type: entity - name: chocolate donut parent: FoodDonutBase id: FoodDonutChocolate + name: chocolate donut description: Goes great with a glass of warm milk. components: - type: FlavorProfile @@ -180,21 +180,21 @@ - chocolate - type: Sprite state: choc - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Theobromine - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Sugar + Quantity: 3 + - ReagentId: Theobromine + Quantity: 1 # Tastes like donut, bitterness. - type: entity - name: blue pumpkin donut parent: FoodDonutBase id: FoodDonutBluePumpkin + name: blue pumpkin donut description: Goes great with a mug of soothing drunken blue pumpkin. components: - type: FlavorProfile @@ -206,9 +206,9 @@ # Tastes like donut, blue pumpkin. - type: entity - name: bungo donut parent: FoodDonutBase id: FoodDonutBungo + name: bungo donut description: Goes great with a mason jar of hippie's delight. components: - type: FlavorProfile @@ -220,9 +220,9 @@ # Tastes like donut, tropical sweetness. - type: entity - name: matcha donut parent: FoodDonutBase id: FoodDonut + name: matcha donut description: The L-theanine in this donut is relaxing, yet not euphoric. Goes great with a cup of tea. components: - type: FlavorProfile @@ -233,9 +233,9 @@ # Tastes like donut, matcha. - type: entity - name: sweet pea donut parent: FoodDonutBase id: FoodDonutSweetpea + name: sweet pea donut description: Goes great with a bottle of Bastion Burbon! components: - type: Sprite @@ -245,128 +245,83 @@ # Jelly Donuts - type: entity - name: jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellyHomer + name: jelly-donut description: You jelly? components: - type: Sprite state: jelly-homer - type: Item heldPrefix: pink - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 - type: entity - name: pink jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellyPink + name: pink jelly-donut description: Goes great with a soy latte. components: - type: Sprite state: jelly-pink - type: Item heldPrefix: pink - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 - type: entity - name: spaceman's jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellySpaceman + name: spaceman's jelly-donut description: Goes great with a cold beaker of malk. components: - type: Sprite state: jelly-purple - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, violets. - type: entity - name: apple jelly-donut parent: FoodDonutFruitBase id: FoodDonutJellyApple + name: apple jelly-donut description: Goes great with a shot of cinnamon schnapps. components: - type: Sprite state: jelly-green - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, green apples. - type: entity - name: caramel jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellyCaramel + name: caramel jelly-donut description: Goes great with a mug of hot coco. components: - type: Sprite state: jelly-beige - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, buttery sweetness. - type: entity - name: chocolate jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellyChocolate + name: chocolate jelly-donut description: Goes great with a glass of warm milk. components: - type: Sprite state: jelly-choc - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Theobromine - Quantity: 1 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Sugar + Quantity: 3 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: Theobromine + Quantity: 1 # Tastes like jelly-donut, bitterness. - type: entity - name: blue pumpkin jelly-donut parent: FoodDonutFruitBase id: FoodDonutJellyBluePumpkin + name: blue pumpkin jelly-donut description: Goes great with a mug of soothing drunken blue pumpkin. components: - type: FlavorProfile @@ -375,91 +330,46 @@ - bluepumpkin - type: Sprite state: jelly-blue - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, blue pumpkin. - type: entity - name: bungo jelly-donut parent: FoodDonutFruitBase id: FoodDonutJellyBungo + name: bungo jelly-donut description: Goes great with a mason jar of hippie's delight. components: - type: Sprite state: jelly-yellow - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, tropical sweetness. - type: entity - name: matcha jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJelly + name: matcha jelly-donut description: The L-theanine in this jelly-donut is relaxing, yet not euphoric. Goes great with a cup of tea. components: - type: Sprite state: jelly-olive - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, matcha. - type: entity - name: sweet pea jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellySweetpea + name: sweet pea jelly-donut description: Goes great with a bottle of Bastion Burbon! components: - type: Sprite state: jelly-laugh - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, fizzy tutti frutti. - type: entity - name: scurret jelly-donut - parent: FoodDonutBase + parent: FoodDonutFruitBase id: FoodDonutJellyScurret + name: scurret jelly-donut description: No holes in this donut in case a suspicious looking pole shows up. components: - type: Sprite state: jelly-slug - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 1 # Tastes like jelly-donut, fizzy tutti frutti. # Poison donut @@ -468,10 +378,8 @@ id: FoodDonutPoison suffix: Poison components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Amatoxin - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Amatoxin + Quantity: 10 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml index 81293d76fc..16ad404a8d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml @@ -2,19 +2,17 @@ # Base - type: entity - parent: FoodInjectableBase + parent: [SolutionVeryTiny, FoodInjectableBase] id: FoodBakedBase abstract: true components: - type: Sprite sprite: Objects/Consumable/Food/Baked/misc.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 - type: Item size: Tiny @@ -32,15 +30,6 @@ - type: Sprite sprite: Objects/Consumable/Food/Baked/misc.rsi state: muffin - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - type: FlavorProfile flavors: - sweet @@ -55,17 +44,15 @@ components: - type: Sprite state: muffin-berry - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: JuiceBerry - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: JuiceBerry + Quantity: 1 - type: Tag tags: - Fruit @@ -78,17 +65,15 @@ components: - type: Sprite state: muffin-cherry - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: JuiceCherry - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: JuiceCherry + Quantity: 1 - type: Tag tags: - Fruit @@ -113,17 +98,15 @@ components: - type: Sprite state: muffin-chocolate - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: CocoaPowder - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: CocoaPowder + Quantity: 1 - type: entity name: banana muffin @@ -133,17 +116,15 @@ components: - type: Sprite state: muffin-banana - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: JuiceBanana - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: JuiceBanana + Quantity: 1 - type: Tag tags: - Fruit @@ -176,15 +157,6 @@ components: - type: Sprite state: bun-meat - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 # Cookies @@ -205,15 +177,6 @@ components: - type: Sprite state: cookie-oatmeal - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 1 - type: entity name: raisin cookie @@ -223,15 +186,6 @@ components: - type: Sprite state: cookie-raisin - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 1 - type: Tag tags: - Fruit @@ -269,17 +223,6 @@ lizard: "" star: "" corgi: "" - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 # Waffles/Pancakes @@ -441,15 +384,13 @@ - state: pancakescc9 map: ["pancakescc9"] visible: false - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Theobromine - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Theobromine + Quantity: 1 - type: entity name: waffles @@ -461,15 +402,6 @@ layers: - state: tray - state: waffles - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 1 - type: entity name: soy waffles @@ -481,15 +413,6 @@ layers: - state: tray - state: waffles-soy - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 1 - type: entity name: soylent waffles @@ -501,15 +424,6 @@ layers: - state: tray - state: waffles-soylent - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 1 - type: entity name: roffle waffles @@ -521,15 +435,6 @@ layers: - state: tray - state: waffles-roffle - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 2 # Misc @@ -550,15 +455,6 @@ components: - type: Sprite state: cannoli - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 1 - type: entity name: dumplings @@ -568,15 +464,13 @@ components: - type: Sprite state: dumplings - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Protein - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Protein + Quantity: 2 - type: FlavorProfile flavors: - meaty @@ -599,15 +493,17 @@ - smokey - type: Sprite state: chevrechaud - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 0.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10.5 + - ReagentId: Vitamin + Quantity: 1.05 + - ReagentId: TableSalt + Quantity: 0.05 + - ReagentId: Blackpepper + Quantity: 0.05 - type: entity name: cotton chèvre chaud @@ -629,20 +525,22 @@ - type: Tag tags: - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Fiber - Quantity: 1 - - ReagentId: Vitamin - Quantity: 0.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.25 + - ReagentId: Fiber + Quantity: 3.25 + - ReagentId: Vitamin + Quantity: 1.05 + - ReagentId: TableSalt + Quantity: 0.05 + - ReagentId: Blackpepper + Quantity: 0.05 - type: entity - parent: FoodBakedBase + parent: [SolutionNormal, FoodBakedBase] id: FoodBakedBrownieBatch name: brownies description: A pan of brownies. @@ -657,17 +555,17 @@ - type: Sprite sprite: Objects/Consumable/Food/Baked/brownie.rsi state: brownie-batch - - type: SolutionContainerManager - solutions: - food: - maxVol: 78 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Theobromine - Quantity: 18 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 48 + - ReagentId: Sugar + Quantity: 32 + - ReagentId: Theobromine + Quantity: 8 - type: SliceableFood - count: 6 + count: 8 slice: FoodBakedBrownie - type: entity @@ -684,21 +582,21 @@ - type: Sprite sprite: Objects/Consumable/Food/snacks.rsi state: mre-brownie-open - - type: SolutionContainerManager - solutions: - food: - maxVol: 13 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Theobromine - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Sugar + Quantity: 4 + - ReagentId: Theobromine + Quantity: 2 - type: Tag tags: - Slice - type: entity - parent: FoodBakedBase + parent: [SolutionNormal, FoodBakedBase] id: FoodBakedCannabisBrownieBatch name: special brownies description: A pan of "special" brownies. @@ -714,19 +612,19 @@ - type: Sprite sprite: Objects/Consumable/Food/Baked/brownie.rsi state: brownie-batch - - type: SolutionContainerManager - solutions: - food: - maxVol: 228 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Theobromine - Quantity: 18 - - ReagentId: THC - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 48 + - ReagentId: Sugar + Quantity: 32 + - ReagentId: Theobromine + Quantity: 8 + - ReagentId: THC + Quantity: 16 - type: SliceableFood - count: 6 + count: 8 slice: FoodBakedCannabisBrownie - type: entity @@ -743,17 +641,17 @@ - type: Sprite sprite: Objects/Consumable/Food/snacks.rsi state: mre-brownie-open - - type: SolutionContainerManager - solutions: - food: - maxVol: 38 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Theobromine - Quantity: 3 - - ReagentId: THC - Quantity: 25 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Sugar + Quantity: 4 + - ReagentId: Theobromine + Quantity: 1 + - ReagentId: THC + Quantity: 2 - type: Tag tags: - Slice @@ -770,20 +668,18 @@ - oily - type: Sprite state: onionrings - - type: SolutionContainerManager - solutions: - food: - maxVol: 4 - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Allicin - Quantity: 1 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Vitamin + Quantity: 1 - type: entity - parent: FoodBakedBase + parent: [SolutionSmall, FoodBakedBase] id: FoodBakedCroissant name: croissant description: Buttery, flaky goodness. @@ -800,17 +696,13 @@ - butter - type: Sprite state: croissant - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Butter - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Butter + Quantity: 2.5 - type: entity parent: FoodBakedCroissant @@ -835,22 +727,18 @@ - type: Tag tags: - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: Nutriment - Quantity: 1.5 - - ReagentId: Fiber - Quantity: 1.5 - - ReagentId: Butter - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Fiber + Quantity: 10 + - ReagentId: Butter + Quantity: 2.5 - type: entity - parent: FoodBakedBase + parent: [SolutionSmall, FoodBakedBase] id: FoodBakedGrilledCheeseSandwich name: grilled cheese sandwich description: Bread and cheese toasted with butter, perfect for a chilly day in space. @@ -866,17 +754,13 @@ - type: Sprite sprite: Objects/Consumable/Food/Baked/misc.rsi state: grilled-cheese - - type: SolutionContainerManager - solutions: - food: - maxVol: 21 - reagents: - - ReagentId: Nutriment - Quantity: 11 - - ReagentId: Butter - Quantity: 2 - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 37.5 + - ReagentId: Butter + Quantity: 2.5 - type: entity parent: FoodBakedGrilledCheeseSandwich @@ -897,19 +781,15 @@ - type: Tag tags: - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 21 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Fiber - Quantity: 5 - - ReagentId: Butter - Quantity: 2 - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: Fiber + Quantity: 12.5 + - ReagentId: Butter + Quantity: 2.5 # Entity Tables diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml index b2dd9257b5..303166429a 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml @@ -3,33 +3,30 @@ - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionNormal, FoodInjectableBase] id: FoodPieBase components: - type: Item - shape: - - 0,0,1,0 + size: Normal - type: FlavorProfile flavors: - sweet - type: Sprite sprite: Objects/Consumable/Food/Baked/pie.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: #Most of these are this with slight variations, not worth changing until we have the rest of the reagents - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 14 - - ReagentId: Sugar - Quantity: 5 + - type: Solution + solution: + reagents: #Most of these are this with slight variations, not worth changing until we have the rest of the reagents + - ReagentId: Nutriment + Quantity: 64 + - ReagentId: Vitamin + Quantity: 8 + - ReagentId: Sugar + Quantity: 8 - type: Edible #It's actually possible now to have a pie stored in a tin rather than spawning trash when you finish eating it. But right now I'm just cleaning up. trash: - FoodPlateTin - type: SliceableFood - count: 4 + count: 8 - type: Tag tags: - Pie @@ -47,17 +44,15 @@ - sweet - type: Sprite sprite: Objects/Consumable/Food/Baked/pie.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: Nutriment - Quantity: 7.5 - - ReagentId: Vitamin - Quantity: 3.5 - - ReagentId: Sugar - Quantity: 1.25 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: Sugar + Quantity: 1 - type: Tag tags: - Pie @@ -475,17 +470,17 @@ - mushroom - type: Sprite state: amanita - - type: SolutionContainerManager - solutions: - food: - maxVol: 17 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Amatoxin - Quantity: 3 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 64 + - ReagentId: Vitamin + Quantity: 8 + - ReagentId: Sugar + Quantity: 8 + - ReagentId: Amatoxin + Quantity: 10 # Tastes like pie, mushrooms. - type: entity @@ -514,17 +509,6 @@ - sweet - type: Sprite state: grape - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Sugar - Quantity: 5 - type: Tag tags: - Fruit @@ -559,13 +543,15 @@ - chocolate - type: Sprite state: cocolava - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Nutriment - Quantity: 25 - - ReagentId: Theobromine - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 64 + - ReagentId: Vitamin + Quantity: 8 + - ReagentId: Sugar + Quantity: 8 + - ReagentId: Theobromine + Quantity: 8 # Tastes like tart, dark chocolate. diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml index a288ad001c..20c002a818 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml @@ -3,7 +3,7 @@ - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionNormal, FoodInjectableBase] id: FoodPizzaBase components: - type: FlavorProfile @@ -12,17 +12,16 @@ - bread - type: Sprite sprite: Objects/Consumable/Food/Baked/pizza.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + maxVol: 180 + reagents: + - ReagentId: Nutriment + Quantity: 120 + - ReagentId: Vitamin + Quantity: 12 - type: SliceableFood - count: 8 + count: 12 - type: Item size: Normal shape: @@ -34,7 +33,7 @@ - ReptilianFood - type: entity - parent: FoodInjectableBase # Not sliceable + parent: [SolutionVeryTiny, FoodInjectableBase] # Not sliceable id: FoodPizzaSliceBase abstract: true components: @@ -44,16 +43,13 @@ - bread - type: Sprite sprite: Objects/Consumable/Food/Baked/pizza.rsi - - type: SolutionContainerManager - solutions: - food: - # Note: Keep FoodPizzaMoldySlice & FoodPizzaSliceBase roughly in sync - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 0.8 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 1 - type: Item size: Tiny - type: Tag @@ -198,17 +194,6 @@ - state: vegetable - type: SliceableFood slice: FoodPizzaVegetableSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 25 - - ReagentId: JuiceCarrot - Quantity: 5 - - ReagentId: Vitamin - Quantity: 5 - type: entity name: slice of vegetable pizza @@ -230,17 +215,6 @@ - state: vegetable-slice - type: Item heldPrefix: vegetable-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: JuiceCarrot - Quantity: 1 - - ReagentId: Vitamin - Quantity: 1 # Tastes like crust, tomato, cheese, carrot. @@ -258,23 +232,20 @@ - state: donkpocket - type: SliceableFood slice: FoodPizzaDonkpocketSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Nutriment - Quantity: 27 - - ReagentId: Vitamin - Quantity: 6 - - ReagentId: Omnizine - Quantity: 9 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 120 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: Omnizine + Quantity: 9 - type: Tag tags: - Meat - Pizza - - type: entity name: slice of donk-pocket pizza parent: FoodPizzaSliceBase @@ -289,17 +260,15 @@ - state: donkpocket-slice - type: Item heldPrefix: donkpocket-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4.5 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Omnizine - Quantity: 1.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 0.25 + - ReagentId: Omnizine + Quantity: 0.75 - type: Tag tags: - Meat @@ -324,15 +293,15 @@ - state: dank - type: SliceableFood slice: FoodPizzaDankSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: THC - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 102 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: THC + Quantity: 30 - type: entity name: slice of dank pizza @@ -351,15 +320,15 @@ - state: dank-slice - type: Item heldPrefix: dank-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 3.5 - - ReagentId: THC - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 0.5 + - ReagentId: Vitamin + Quantity: 0.25 + - ReagentId: THC + Quantity: 2.5 # Tastes like crust, tomato, cheese, meat, satisfaction. - type: entity @@ -475,19 +444,19 @@ - state: arnold - type: SliceableFood slice: FoodPizzaArnoldSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 85 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Iron - Quantity: 10 - - ReagentId: Omnizine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Protein + Quantity: 18 + - ReagentId: Vitamin + Quantity: 12 + - ReagentId: Iron + Quantity: 18 + - ReagentId: Omnizine + Quantity: 30 - type: Tag tags: - Meat @@ -511,19 +480,19 @@ - state: arnold-slice - type: Item heldPrefix: arnold-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 0.8 - - ReagentId: Iron - Quantity: 1.6 - - ReagentId: Omnizine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Protein + Quantity: 1.5 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: Iron + Quantity: 1.5 + - ReagentId: Omnizine + Quantity: 2.5 - type: Tag tags: - Meat @@ -551,18 +520,15 @@ - type: Tag tags: - Trash - - type: SolutionContainerManager - solutions: - food: - # Note: Keep FoodPizzaMoldySlice & FoodPizzaSliceBase roughly in sync - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Mold - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: Mold + Quantity: 8 # Tastes like stale crust, rancid cheese, mushroom. - type: entity @@ -589,17 +555,19 @@ - type: PointLight enabled: true radius: 2 - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Radium - Quantity: 4 - - ReagentId: Uranium - Quantity: 16 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 102 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: CapsaicinOil + Quantity: 20 + - ReagentId: Radium + Quantity: 4 + - ReagentId: Uranium + Quantity: 16 - type: entity name: slice of spicy rock pizza @@ -626,17 +594,19 @@ - type: PointLight enabled: true radius: 2 - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2.5 - - ReagentId: Radium - Quantity: 0.5 - - ReagentId: Uranium - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8.5 + - ReagentId: Vitamin + Quantity: 1.25 + - ReagentId: CapsaicinOil + Quantity: 1.66 + - ReagentId: Radium + Quantity: 0.33 + - ReagentId: Uranium + Quantity: 1.33 # Tastes like crust, tomato, cheese, radiation. @@ -661,17 +631,15 @@ tags: - ClothMade - Pizza - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Fiber + Quantity: 90 + - ReagentId: Vitamin + Quantity: 20 - type: entity name: slice of cotton pizza @@ -693,17 +661,15 @@ - ClothMade - Pizza - Slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 3.5 - - ReagentId: Vitamin - Quantity: 0.8 - - ReagentId: Fiber - Quantity: 1.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2.66 + - ReagentId: Fiber + Quantity: 7.5 + - ReagentId: Vitamin + Quantity: 2.66 - type: entity name: world peazza @@ -720,17 +686,15 @@ - state: worldpeas - type: SliceableFood slice: FoodPizzaWorldpeasSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Happiness - Quantity: 12 - - ReagentId: Pax - Quantity: 8 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 90 + - ReagentId: Happiness + Quantity: 15 + - ReagentId: Pax + Quantity: 15 - type: entity name: slice of world peazza @@ -747,14 +711,12 @@ - state: worldpeas-slice - type: Item heldPrefix: worldpeas-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 3.5 - - ReagentId: Happiness - Quantity: 2 - - ReagentId: Pax - Quantity: 1.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Happiness + Quantity: 1.25 + - ReagentId: Pax + Quantity: 1.25 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/bowl.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/bowl.yml index ce82ba1e1b..8f71eebafa 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/bowl.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/bowl.yml @@ -10,10 +10,6 @@ shape: - 0,0,1,0 storedOffset: 0,-3 - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 # enough to make cheese in. - type: Sprite sprite: Objects/Consumable/Food/bowl.rsi layers: @@ -21,6 +17,9 @@ - map: ["enum.SolutionContainerLayers.Fill"] state: fill-1 visible: false + - type: Solution + solution: + maxVol: 50 - type: MixableSolution solution: food - type: Edible diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/condiments.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/condiments.yml index 5cfe12d74a..da8e5ce239 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/condiments.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/condiments.yml @@ -1,7 +1,7 @@ # TODO: Removes the icon components from all these when that gets fixed. - type: entity - parent: BaseItem + parent: [SolutionFood, BaseItem] id: BaseFoodCondiment abstract: true components: @@ -46,12 +46,11 @@ # Note NOT refillable. # It be a shame if it turned out ALL drinks were ALWAYS refillable.... ffs. # Well its fixed now, but I want to share my pain. - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 + - type: Solution + solution: + maxVol: 1 # Cheap - type: SolutionTransfer - maxTransferAmount: 10 + maxTransferAmount: 1 - type: Sprite layers: - state: packet-trans-2 @@ -91,13 +90,11 @@ name: Astrotame description: The sweetness of a thousand sugars but none of the calories. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Astrotame - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Astrotame + Quantity: 1 - type: Sprite layers: - state: packet-trans-2 @@ -119,13 +116,11 @@ name: BBQ sauce description: Hand wipes not included. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: BbqSauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: BbqSauce + Quantity: 1 - type: Icon state: packet-bbq - type: Appearance @@ -139,13 +134,11 @@ name: corn oil description: Corn oil. A delicious oil used in cooking. Made from corn. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Cornoil - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Cornoil + Quantity: 1 - type: Icon state: packet-cornoil - type: Appearance @@ -159,13 +152,11 @@ name: coldsauce description: Coldsauce. Leaves the tongue numb in its passage. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Coldsauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Coldsauce + Quantity: 1 - type: Icon state: packet-frostoil - type: Appearance @@ -179,13 +170,11 @@ name: horseradish sauce description: A packet of smelly horseradish sauce. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: HorseradishSauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: HorseradishSauce + Quantity: 1 - type: Icon state: packet-greygoo - type: Appearance @@ -199,13 +188,11 @@ name: hotsauce description: You can almost TASTE the stomach ulcers now! components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Hotsauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Hotsauce + Quantity: 1 - type: Icon state: packet-hotsauce - type: Appearance @@ -219,12 +206,11 @@ name: ketchup description: You feel more American already. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Ketchup - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Ketchup + Quantity: 1 - type: Sprite - type: Icon state: packet-ketchup @@ -239,12 +225,11 @@ name: mustard description: A condiment made from the ground-up seeds of the Mustard plant. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Mustard - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Mustard + Quantity: 1 - type: Icon state: packet-mustard - type: Appearance @@ -258,12 +243,11 @@ name: black pepper description: Often used to flavor food or make people sneeze. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Blackpepper - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Blackpepper + Quantity: 1 - type: Icon state: packet-pepper - type: Appearance @@ -277,12 +261,11 @@ name: salt description: Salt. From space oceans, presumably. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: TableSalt - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: TableSalt + Quantity: 1 - type: Sprite layers: - state: packet-solid-2 @@ -305,12 +288,11 @@ name: soy sauce description: A salty soy-based flavoring. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Soysauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Soysauce + Quantity: 1 - type: Icon state: packet-soysauce - type: Appearance @@ -324,12 +306,11 @@ name: sugar description: Tasty spacey sugar! components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Sugar - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 1 - type: Icon state: packet-sugar - type: Appearance @@ -355,10 +336,9 @@ sound: collection: pop closeable: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 + - type: Solution + solution: + maxVol: 50 # ~ 400 to 450ml - type: RefillableSolution solution: food - type: Spillable @@ -389,12 +369,11 @@ name: coldsauce bottle description: Leaves the tongue numb in its passage. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Coldsauce - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Coldsauce + Quantity: 50 - type: Sprite layers: - state: bottle-empty @@ -415,12 +394,11 @@ name: universal enzyme description: Used in cooking various dishes. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Enzyme - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Enzyme + Quantity: 50 - type: Sprite layers: - state: bottle-empty @@ -441,12 +419,11 @@ name: vinegar bottle description: Used in cooking to enhance flavor. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Vinegar - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Vinegar + Quantity: 50 - type: Sprite layers: - state: bottle-empty @@ -464,12 +441,11 @@ name: hotsauce bottle description: You can almost TASTE the stomach ulcers now! components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Hotsauce - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Hotsauce + Quantity: 50 - type: Sprite layers: - state: bottle-empty @@ -490,12 +466,11 @@ name: ketchup bottle description: You feel more American already. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Ketchup - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ketchup + Quantity: 50 - type: Sprite layers: - state: bottle-empty @@ -516,12 +491,11 @@ name: BBQ sauce bottle description: Hand wipes not included. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: BbqSauce - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: BbqSauce + Quantity: 50 - type: Sprite layers: - state: bottle-empty @@ -540,7 +514,7 @@ # Shakers - type: entity - parent: BaseFoodCondiment # TODO: This should not inherit TrashOnSolutionEmpty, SpaceGarbage and the price of 0 + parent: [SolutionVeryTiny, BaseFoodCondiment] # TODO: This should not inherit TrashOnSolutionEmpty, SpaceGarbage and the price of 0 id: BaseFoodShaker abstract: true name: empty shaker @@ -553,10 +527,6 @@ solution: food destroyOnEmpty: false utensil: None # don't conflict with stirring - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - type: SolutionTransfer canChangeTransferAmount: true minTransferAmount: 5 @@ -590,12 +560,11 @@ name: salt shaker description: Salt. From space oceans, presumably. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: TableSalt - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: TableSalt + Quantity: 15 - type: Sprite state: shaker-salt - type: Icon @@ -610,12 +579,11 @@ name: pepper shaker description: Often used to flavor food or make people sneeze. components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Blackpepper - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Blackpepper + Quantity: 15 - type: Sprite state: shaker-pepper - type: Icon diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml index cda1735790..c95ff41a2e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml @@ -4,18 +4,21 @@ # trash prototypes use "trash" state - type: entity abstract: true - parent: [FoodBase, FoodOpenableBase] + parent: [FoodBaseTrash, FoodOpenableBase] id: FoodTinBase name: tin description: A tin of something, sealed tight. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 15 + - type: Solution + solution: + maxVol: 50 # about 400-450ml + reagents: + - ReagentId: Nutriment + Quantity: 40 + - ReagentId: Sugar + Quantity: 5 + - ReagentId: TableSalt + Quantity: 5 - type: Openable openableByHand: false sound: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/breakfast.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/breakfast.yml index c9b9cdcce1..49b8e9f937 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/breakfast.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/breakfast.yml @@ -12,15 +12,15 @@ size: Normal - type: Sprite sprite: Objects/Consumable/Food/breakfast.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 60 - reagents: - - ReagentId: Nutriment - Quantity: 40 - - ReagentId: Vitamin - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 45 + - ReagentId: Protein + Quantity: 15 + - ReagentId: Vitamin + Quantity: 15 # Breakfasts diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml index 30f307b6eb..25627fb085 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml @@ -11,13 +11,6 @@ sprite: Objects/Consumable/Food/burger.rsi layers: - state: bun - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6.66 # 1/3 of a loaf of bread, technically losing 0.01 nutriment per batch of three buns over making bread loaves/slices - type: Butcherable butcherDelay: 1 spawned: @@ -51,14 +44,13 @@ nameGeneration: food-sequence-burger-gen - type: Appearance - type: FoodMetamorphableByAdding - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - canReact: false # Dont want cause reactions inside burgers after merging ingredients - reagents: - - ReagentId: Nutriment - Quantity: 3.3 # 1/2 of a bun + - type: Solution + solution: + maxVol: 7.5 + canReact: false # Dont want cause reactions inside burgers after merging ingredients, TODO Remove + reagents: + - ReagentId: Nutriment + Quantity: 5 # 1/2 of a bun - type: entity parent: FoodBreadSliceBase @@ -70,13 +62,13 @@ sprite: Objects/Consumable/Food/burger_sequence.rsi layers: - state: bun_top - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3.3 # 1/2 of a bun + - type: Solution + solution: + maxVol: 7.5 + canReact: false # Dont want cause reactions inside burgers after merging ingredients, TODO Remove + reagents: + - ReagentId: Nutriment + Quantity: 5 # 1/2 of a bun - type: FoodSequenceElement entries: Burger: BunTopBurger @@ -94,15 +86,15 @@ - meaty - type: Sprite sprite: Objects/Consumable/Food/burger.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 7 - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Vitamin + Quantity: 10 - type: Item sprite: Objects/Consumable/Food/burger.rsi shape: @@ -111,9 +103,9 @@ # Custom Burger Example - type: entity - name: jelly burger parent: FoodBurgerBase id: FoodBurgerJelly + name: jelly burger description: Culinary delight..? components: - type: FlavorProfile @@ -144,9 +136,9 @@ # Burger - type: entity - name: appendix burger parent: FoodBurgerBase id: FoodBurgerAppendix + name: appendix burger description: Tastes like appendicitis. components: - type: FlavorProfile @@ -155,17 +147,6 @@ - grass - type: Sprite state: appendix - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 6 - type: Tag tags: - Meat @@ -186,9 +167,9 @@ # Tastes like bun, grass. - type: entity - name: bacon burger parent: FoodBurgerBase id: FoodBurgerBacon + name: bacon burger description: The perfect combination of all things American. components: - type: FlavorProfile @@ -197,15 +178,15 @@ - bacon - type: Sprite state: bacon - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 19 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 35 + - ReagentId: Protein + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - Meat @@ -226,9 +207,9 @@ # Tastes like bun, bacon. - type: entity - name: baseball burger parent: FoodBurgerBase id: FoodBurgerBaseball + name: baseball burger description: It's still warm. The steam coming off of it smells kinda sweaty. components: - type: FlavorProfile @@ -237,17 +218,15 @@ - homerun - type: Sprite state: baseball - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Protein - Quantity: 5 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Cellulose + Quantity: 30 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - Meat @@ -281,23 +260,12 @@ - meaty - type: Sprite state: bearger - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 5 - type: Tag tags: - Meat - type: entity - parent: FoodBurgerBase + parent: [SolutionNormal, FoodBurgerBase] id: FoodBurgerBig name: big bite burger description: Forget the Big Mac. THIS is the future! @@ -305,7 +273,6 @@ - type: Item size: Normal shape: - - 0,0,1,1 storedOffset: 0,3 inhandVisuals: left: @@ -317,17 +284,17 @@ - meaty - oily - cheesy - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 18 - - ReagentId: Protein - Quantity: 18 - - ReagentId: Vitamin - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 75 + - ReagentId: Protein + Quantity: 20 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Allicin + Quantity: 2 - type: Sprite state: bigbite - type: Tag @@ -354,17 +321,6 @@ - meaty - type: Sprite state: brain - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 5 - type: Tag tags: - Meat @@ -392,25 +348,14 @@ - bun - meaty - cat - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Protein - Quantity: 3 - - ReagentId: Vitamin - Quantity: 2 - type: Tag tags: - Meat - type: entity - name: cheese burger parent: FoodBurgerBase id: FoodBurgerCheese + name: cheese burger description: This noble burger stands proudly clad in golden cheese. components: - type: FlavorProfile @@ -420,17 +365,13 @@ - cheesy - type: Sprite state: cheese - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Nutriment - Quantity: 7 - - ReagentId: Vitamin - Quantity: 7 - - ReagentId: Protein - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 45 + - ReagentId: Protein + Quantity: 10 - type: Tag tags: - Meat @@ -451,9 +392,9 @@ # Tastes like bun, beef patty, cheese. - type: entity - name: chicken sandwich # Burger for you euro-cucks parent: FoodBurgerBase id: FoodBurgerChicken + name: chicken sandwich description: A delicious chicken sandwich, it is said the proceeds from this treat helps criminalize disarming people on the space frontier. components: - type: FlavorProfile @@ -462,19 +403,17 @@ - chicken - type: Sprite state: chicken - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 7 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Mayo - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: Mayo + Quantity: 2 - type: Tag tags: - Meat @@ -513,25 +452,14 @@ - funny - type: Sprite state: clown - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 6 - type: Tag tags: - Meat - type: entity - name: corger #not curger parent: FoodBurgerBase id: FoodBurgerCorgi + name: corger #not curger description: The Head of Personnel's favorite! components: - type: FlavorProfile @@ -540,15 +468,15 @@ - validhunting - type: Sprite state: ian - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Bicaridine #keeping it somewhat consistent with the meat itself - Quantity: 7 - - ReagentId: Vitamin - Quantity: 12 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Bicaridine #keeping it somewhat consistent with the meat itself + Quantity: 20 + - ReagentId: Vitamin + Quantity: 10 - type: Tag tags: - Meat @@ -560,9 +488,9 @@ - state: dog-inhand-right - type: entity - name: crab burger parent: FoodBurgerBase id: FoodBurgerCrab + name: crab burger description: A delicious patty of the crabby kind, slapped in between a bun. components: - type: FlavorProfile @@ -571,17 +499,6 @@ - crabby - type: Sprite state: crab - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Protein - Quantity: 5 - - ReagentId: Vitamin - Quantity: 4 - type: Tag tags: - Meat @@ -601,7 +518,7 @@ color: "#7e1a07" - type: entity - parent: FoodBurgerBase + parent: [SolutionNormal, FoodBurgerBase] id: FoodBurgerCrazy name: crazy hamburger # Burger for you euro-cucks description: This looks like the sort of food that a demented clown in a trenchcoat would make. @@ -609,7 +526,7 @@ - type: Item size: Normal shape: - - 0,0,1,1 + - 0,0,1,2 storedOffset: -2,0 inhandVisuals: left: @@ -624,21 +541,33 @@ - flare - type: Sprite state: crazy - - type: SolutionContainerManager - solutions: - food: - maxVol: 65 - reagents: - - ReagentId: Nutriment - Quantity: 31 - - ReagentId: Protein - Quantity: 15 - - ReagentId: CapsaicinOil - Quantity: 3 - - ReagentId: Vitamin - Quantity: 8 - - ReagentId: Sulfur # What you get for eating something with a flare in it - Quantity: 5 + - type: Solution + solution: + maxVol: 180 + reagents: + - ReagentId: Nutriment # Adds up to 180, completely filled to the brim. + Quantity: 100 + - ReagentId: Protein + Quantity: 20 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: MindbreakerToxin + Quantity: 10 + # Taken from flare entity :) + - ReagentId: Iron + Quantity: 10 + - ReagentId: Phosphorus + Quantity: 6 + - ReagentId: Carbon + Quantity: 2 + - ReagentId: Oxygen + Quantity: 4 + - ReagentId: Charcoal + Quantity: 4 + - ReagentId: Sulfur + Quantity: 4 - type: Tag tags: - Meat @@ -670,15 +599,6 @@ - duck - type: Sprite state: chicken - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Protein - Quantity: 5 - type: Tag tags: - Meat @@ -703,15 +623,15 @@ flavors: - bun - shocking - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Licoxide - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Plasma + Quantity: 20 + - ReagentId: Licoxide + Quantity: 10 # Tastes like bun, pure electricity. - type: entity @@ -747,7 +667,7 @@ # Tastes like bun, fish. - type: entity - parent: FoodBurgerBase + parent: [SolutionNormal, FoodBurgerBase] id: FoodBurgerFive name: five alarm burger description: HOT! HOT! HOT! @@ -755,7 +675,6 @@ - type: Item size: Normal shape: - - 0,0,1,1 storedOffset: 0,1 inhandVisuals: left: @@ -768,21 +687,19 @@ - spicy - type: Sprite state: fivealarm - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 25 - - ReagentId: Protein - Quantity: 5 - - ReagentId: CapsaicinOil - Quantity: 5 - - ReagentId: Blackpepper - Quantity: 5 - - ReagentId: Vitamin - Quantity: 12 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 45 + - ReagentId: Protein + Quantity: 10 + - ReagentId: CapsaicinOil + Quantity: 30 + - ReagentId: Blackpepper + Quantity: 3 + - ReagentId: Vitamin + Quantity: 12 - type: Tag tags: - Meat @@ -796,9 +713,8 @@ description: Too spooky! components: - type: Item - size: Normal + size: Normal # Just annoying to store not actually that big :) shape: - - 0,0,1,1 storedOffset: 0,3 inhandVisuals: left: @@ -821,15 +737,15 @@ - spooky - type: Sprite state: ghost - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 7 - - ReagentId: Vitamin - Quantity: 12 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: Fresium + Quantity: 15 - type: Tag tags: - ClothMade @@ -848,17 +764,6 @@ - people - type: Sprite state: human - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 5 - type: Tag tags: - Meat @@ -896,23 +801,23 @@ - egg - type: Sprite state: mcguffin - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 8 - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: EggCooked + Quantity: 6 + - ReagentId: Protein + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - Meat - type: entity - parent: FoodBurgerBase + parent: [SolutionNormal, FoodBurgerBase] id: FoodBurgerMcrib name: BBQ Rib Sandwich description: An elusive rib shaped burger with limited availability across the galaxy. Not as good as you remember it. @@ -926,23 +831,25 @@ - bacon - type: Sprite state: mcrib - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 11 - - ReagentId: Protein - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: BbqSauce - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 70 + - ReagentId: Protein + Quantity: 30 + - ReagentId: BbqSauce + Quantity: 10 + - ReagentId: Allicin + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - Meat - type: Item + size: Normal + shape: inhandVisuals: left: - state: bun-inhand-left @@ -970,19 +877,15 @@ - nothing - type: Sprite state: mime - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Protein - Quantity: 9 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Nothing - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Nothing + Quantity: 30 - type: Item inhandVisuals: left: @@ -1003,17 +906,6 @@ - meaty - type: Sprite state: plain - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 3 - type: Tag tags: - Meat @@ -1036,17 +928,17 @@ - meaty - type: Sprite state: rat - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Protein + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Fat + Quantity: 1 - type: Tag tags: - Meat @@ -1074,15 +966,23 @@ - metallic - type: Sprite state: ro - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: SulfuricAcid - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: SulfuricAcid + Quantity: 5 + - ReagentId: Oil + Quantity: 5 + - ReagentId: Phosphorus + Quantity: 5 + - ReagentId: Iron + Quantity: 9 + - ReagentId: Carbon + Quantity: 1 - type: Tag tags: - Meat @@ -1131,15 +1031,15 @@ - soy - type: Sprite state: soylent - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 13 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 37 + - ReagentId: Protein + Quantity: 8 + - ReagentId: Vitamin + Quantity: 5 # Tastes like bun, redditors. - type: entity @@ -1164,17 +1064,6 @@ - magical - type: Sprite state: spell - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Protein - Quantity: 5 - - ReagentId: Vitamin - Quantity: 10 # Tastes like bun, silver. - type: entity @@ -1186,7 +1075,6 @@ - type: Item size: Normal shape: - - 0,0,1,1 storedOffset: 0,4 inhandVisuals: left: @@ -1198,19 +1086,19 @@ - meaty - oily - cheesy - - type: SolutionContainerManager - solutions: - food: - maxVol: 90 - reagents: - - ReagentId: Nutriment - Quantity: 44 - - ReagentId: Vitamin - Quantity: 24 - - ReagentId: TableSalt - Quantity: 5 - - ReagentId: Blackpepper - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 79 + - ReagentId: Protein + Quantity: 20 + - ReagentId: Vitamin + Quantity: 11 + - ReagentId: TableSalt + Quantity: 5 + - ReagentId: Blackpepper + Quantity: 5 - type: Sprite state: superbite - type: Tag @@ -1230,15 +1118,15 @@ - tofu - type: Sprite state: tofu - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Protein - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 16 + - ReagentId: Protein + Quantity: 9 + - ReagentId: Vitamin + Quantity: 5 - type: Item inhandVisuals: left: @@ -1268,17 +1156,6 @@ - acid - type: Sprite state: x - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 5 - type: Tag tags: - Meat @@ -1322,17 +1199,6 @@ - light - type: Sprite state: mothroach - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Protein - Quantity: 4 - - ReagentId: Vitamin - Quantity: 7 - type: Tag tags: - Meat diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/cottonburger.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/cottonburger.yml index af417c2d11..1a2162f250 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/cottonburger.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/cottonburger.yml @@ -12,15 +12,13 @@ sprite: Objects/Consumable/Food/cottonburger.rsi layers: - state: cottonbun - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 3.33 - - ReagentId: Fiber - Quantity: 3.33 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Fiber + Quantity: 5 - type: Butcherable butcherDelay: 1 spawned: @@ -62,16 +60,14 @@ nameGeneration: food-sequence-cotton-burger-gen - type: Appearance - type: FoodMetamorphableByAdding - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - canReact: false # Dont want cause reactions inside burgers after merging ingredients - reagents: - - ReagentId: Nutriment - Quantity: 1.665 - - ReagentId: Fiber - Quantity: 1.665 + - type: Solution + solution: + maxVol: 7.5 + reagents: + - ReagentId: Nutriment + Quantity: 2.5 + - ReagentId: Fiber + Quantity: 2.5 - type: Tag tags: - ClothMade @@ -90,15 +86,14 @@ sprite: Objects/Consumable/Food/cottonburger.rsi layers: - state: cottonbun_top - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 1.665 - - ReagentId: Fiber - Quantity: 1.665 + - type: Solution + solution: + maxVol: 7.5 + reagents: + - ReagentId: Nutriment + Quantity: 2.5 + - ReagentId: Fiber + Quantity: 2.5 - type: FoodSequenceElement entries: CottonBurger: CottonBunTopBurger diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml index 80e7123abe..ca6c7ca508 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml @@ -1,7 +1,7 @@ # Base - type: entity - parent: [FoodInjectableBase, ItemHeftyBase] + parent: [SolutionVeryTiny, FoodInjectableBase, ItemHeftyBase] id: FoodEggBase description: An egg! abstract: true @@ -18,13 +18,11 @@ - type: Item sprite: Objects/Consumable/Food/egg.rsi size: Tiny - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Egg - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Egg + Quantity: 6 # About 50ml which is the expected size of an egg - type: DrawableSolution solution: food - type: SolutionSpiker @@ -83,13 +81,6 @@ state: eggshells - type: Item size: Tiny - - type: SolutionContainerManager - solutions: - food: - maxVol: 2 - reagents: - - ReagentId: Egg - Quantity: 1 - type: Tag tags: - Egg @@ -126,13 +117,11 @@ layers: - state: icon map: [ "enum.DamageStateVisualLayers.Base" ] - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: EggCooked - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: EggCooked + Quantity: 6 - type: Temperature # preserve temperature from the boiling step currentTemperature: 344 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml index 6ba1895548..3a9540bc80 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml @@ -1,10 +1,10 @@ # -# Base component for edible food-like items +# Base component for edible food-like items, different from BaseDrink # - type: entity abstract: true - parent: BaseItem - id: EdibleBase + parent: [BaseItem, SolutionFood, SolutionSmall] + id: FoodBase components: - type: FlavorProfile flavors: @@ -20,8 +20,8 @@ # - type: entity abstract: true - parent: EdibleBase - id: FoodBase + parent: FoodBase + id: FoodBaseTrash components: - type: SpaceGarbage @@ -31,7 +31,7 @@ - type: entity abstract: true - parent: FoodBase + parent: FoodBaseTrash id: FoodInjectableBase components: - type: InjectableSolution diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml index cc343d900b..f111364226 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml @@ -2,19 +2,17 @@ # Base - type: entity - parent: FoodInjectableBase + parent: [SolutionVeryTiny, FoodInjectableBase] id: FoodFrozenBase abstract: true components: - type: Sprite sprite: Objects/Consumable/Food/frozen.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 # For sprinkles or something? Idk. - reagents: - - ReagentId: Nutriment - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 # Ice-cream @@ -70,15 +68,13 @@ storedRotation: -45 - type: Sprite state: cornuto - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Theobromine - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Theobromine + Quantity: 1 # Popsicle @@ -135,15 +131,13 @@ - type: Edible trash: - FoodFrozenPopsicleTrash - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Theobromine - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Theobromine + Quantity: 1 # Snowcone @@ -166,17 +160,15 @@ - type: Edible trash: - FoodFrozenSnowconeTrash - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 # For sprinkles or something? Idk. - reagents: - - ReagentId: Ice - Quantity: 8 - - ReagentId: Water - Quantity: 2 - - ReagentId: Sugar - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Ice + Quantity: 8 + - ReagentId: Water + Quantity: 2 + - ReagentId: Sugar + Quantity: 2 - type: entity name: flavorless snowcone @@ -184,13 +176,11 @@ id: FoodFrozenSnowcone description: It's just shaved ice. Still fun to chew on. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Ice - Quantity: 8 + - type: Solution + solution: + reagents: + - ReagentId: Ice + Quantity: 8 - type: entity name: berry snowcone diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml index 9b3f0520a3..f7e39cb684 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml @@ -7,15 +7,11 @@ - type: entity abstract: true - parent: BaseItem - id: ReagentContainerBase + parent: [SolutionFood, SolutionSmall, BaseItem] + id: ReagentContainerBase # Despite the name its basically only used for ingredients components: - type: Sprite sprite: Objects/Consumable/Food/ingredients.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - type: SolutionTransfer # This is potentially badly-handled due to 'drink opening', # but it lets the flour be tampered with, refilled, etc. @@ -29,6 +25,7 @@ edible: Food # usually contains powders like flour or condiments like ketchup solution: food utensil: Spoon + destroyOnEmpty: false - type: Damageable - type: Injurable damageContainer: Inorganic @@ -36,6 +33,7 @@ solution: food - type: TrashOnSolutionEmpty solution: food + - type: entity abstract: true parent: ReagentContainerBase @@ -66,6 +64,22 @@ types: Blunt: 0 +- type: entity + abstract: true + parent: [SolutionNormal, ReagentPacketBase] + id: ReagentPacket + components: + - type: Item + size: Normal + +- type: entity + abstract: true + parent: [SolutionSmall, ReagentPacketBase] + id: ReagentPacketSmall + components: + - type: Item + size: Small + - type: entity abstract: true id: ItemHeftyBase @@ -80,7 +94,7 @@ Blunt: 1 - type: entity - parent: [ReagentPacketBase, ItemHeftyBase] + parent: [ReagentPacket, ItemHeftyBase] id: ReagentContainerFlour name: flour bag description: A big bag of flour. Good for baking! @@ -96,32 +110,28 @@ layers: - state: flour-big map: ["enum.OpenableVisuals.Layer"] - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Flour - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Flour + Quantity: 120 # About a pound of flour - type: entity - parent: [ReagentPacketBase, ItemHeftyBase] + parent: [ReagentPacketSmall, ItemHeftyBase] id: ReagentContainerFlourSmall name: flour pack description: A pack of flour. Good for baking! components: - type: Sprite state: flour-small - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Flour - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Flour + Quantity: 60 - type: entity - parent: ReagentPacketBase + parent: [ReagentPacket, ItemHeftyBase] id: ReagentContainerCornmeal name: cornmeal bag description: A big bag of cornmeal. Good for cooking! @@ -137,31 +147,28 @@ layers: - state: cornmeal-big map: ["enum.OpenableVisuals.Layer"] - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Cornmeal - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Cornmeal + Quantity: 120 - type: entity - parent: ReagentPacketBase + parent: [ReagentPacketSmall, ItemHeftyBase] id: ReagentContainerCornmealSmall name: cornmeal pack description: A pack of cornmeal. Good for cooking! components: - type: Sprite state: cornmeal - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Cornmeal - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Cornmeal + Quantity: 60 - type: entity - parent: ReagentPacketBase + parent: [ReagentPacket, ItemHeftyBase] id: ReagentContainerRice name: rice bag description: A big bag of rice. Good for cooking! @@ -177,31 +184,28 @@ layers: - state: rice-big map: ["enum.OpenableVisuals.Layer"] - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Rice - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Rice + Quantity: 120 - type: entity - parent: ReagentPacketBase + parent: [ReagentPacketSmall, ItemHeftyBase] id: ReagentContainerRiceSmall name: rice pack description: A pack of rice. Good for cooking! components: - type: Sprite state: rice-small - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Rice - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Rice + Quantity: 60 - type: entity - parent: ReagentPacketBase + parent: [ReagentPacket, ItemHeftyBase] id: ReagentContainerSugar name: sugar bag description: A big bag of tasty spacey sugar. @@ -217,33 +221,30 @@ layers: - state: sugar-big map: ["enum.OpenableVisuals.Layer"] - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Sugar - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 120 - type: entity - parent: ReagentPacketBase + parent: [ReagentPacketSmall, ItemHeftyBase] id: ReagentContainerSugarSmall name: sugar pack description: A pack of tasty spacey sugar. components: - type: Sprite state: sugar-small - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Sugar - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 60 # Misc - type: entity - parent: ReagentPacketBase + parent: ReagentPacketBase # TODO Move to condiments.yml and parent off of BaseFoodCondimentBottle id: ReagentContainerOliveoil name: olive oil description: Olive oil. From space olives presumably. @@ -259,18 +260,17 @@ layers: - state: oliveoil map: ["enum.OpenableVisuals.Layer"] - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: OilOlive - Quantity: 20 + - type: Solution + solution: + maxVol: 50 + reagents: + - ReagentId: OilOlive + Quantity: 50 - type: Edible edible: Drink # slurping sounds! - type: entity - parent: ReagentPacketBase + parent: ReagentPacketBase # TODO Move to condiments.yml and parent off of BaseFoodCondimentBottle id: ReagentContainerMayo name: mayonnaise description: Bottle of mayonnaise. @@ -286,222 +286,186 @@ layers: - state: mayo map: ["enum.OpenableVisuals.Layer"] - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 # you always need more mayo - reagents: - - ReagentId: Mayo - Quantity: 50 + - type: Solution + solution: + maxVol: 50 + reagents: + - ReagentId: Mayo + Quantity: 50 - type: Tag tags: - Mayo -# - type: entity -# parent: ReagentPacketBase -# id: ReagentContainerAllspice -# name: all-spice -# description: -# components: -# - type: Sprite -# state: spice -# - type: SolutionContainerManager -# maxVol: 10 -# contents: -# reagents: -# - ReagentId: Allspice -# Quantity: 10 - # Baking - type: entity abstract: true - parent: FoodBase + parent: FoodBaseTrash id: FoodBakingBase description: Used in various recipes. components: - type: Sprite sprite: Objects/Consumable/Food/ingredients.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 15 + +# TODO Replace all nutriment in dough with something that is less metabolically efficient - type: entity - parent: FoodBakingBase - id: FoodDough - name: dough - description: A piece of dough. + abstract: true + parent: [SolutionNormal, FoodBakingBase] + id: FoodDoughBase components: - type: Item size: Normal - type: FlavorProfile flavors: - - dough + - chalky + - dough + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + +- type: entity + abstract: true + parent: [SolutionVeryTiny, FoodBakingBase] + id: FoodDoughSliceBase + components: + - type: Item + size: Tiny + - type: FlavorProfile + flavors: + - chalky + - dough + - type: Sprite + state: dough-slice + - type: Tag + tags: + - Slice + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + +- type: entity + abstract: true + parent: FoodDoughSliceBase + id: FoodDoughRopeBase + components: + - type: Item + size: Small + storedRotation: -45 + - type: Tag + tags: [] + +- type: entity + parent: FoodDoughBase + id: FoodDough + name: dough + description: A piece of dough. + components: - type: Sprite state: dough - type: SliceableFood - count: 3 + count: 8 slice: FoodDoughSlice - type: Construction graph: Pizza node: start - type: entity - parent: FoodBakingBase + parent: FoodDoughSliceBase id: FoodDoughSlice name: dough slice description: A slice of dough. Can be cooked into a bun. components: - - type: Item - size: Tiny - - type: FlavorProfile - flavors: - - dough - type: Sprite state: dough-slice - - type: Tag - tags: - - Slice - type: Construction graph: DoughRope node: start - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 5 - type: entity - parent: FoodBakingBase + parent: FoodDoughRopeBase id: FoodDoughRope name: dough rope description: A thin noodle of dough. Can be cooked into a bagel. components: - - type: Item - storedRotation: -45 - - type: FlavorProfile - flavors: - - dough - type: Sprite state: dough-rope - type: Construction graph: DoughRope node: rolled - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 5 - type: entity - parent: FoodBakingBase + parent: FoodDoughBase id: FoodDoughCornmeal name: cornmeal dough description: A piece of cornmeal dough. components: - - type: Item - size: Normal - - type: FlavorProfile - flavors: - - chalky - - dough - type: Sprite state: cornmealdough - type: SliceableFood - count: 3 + count: 8 slice: FoodDoughCornmealSlice - type: entity - parent: FoodBakingBase + parent: FoodDoughSliceBase id: FoodDoughCornmealSlice name: cornmeal dough slice description: A slice of cornmeal dough. components: - - type: Item - size: Tiny - - type: FlavorProfile - flavors: - - chalky - - dough - type: Sprite state: cornmealdough-slice - - type: Tag - tags: - - Slice - type: entity - parent: FoodBakingBase + parent: FoodDoughBase id: FoodDoughTortilla name: tortilla dough description: A piece of tortilla dough. components: - - type: Item - size: Normal - - type: FlavorProfile - flavors: - - chalky - - dough - type: Sprite state: tortilladough - type: SliceableFood - count: 3 + count: 8 slice: FoodDoughTortillaSlice - type: entity - parent: FoodBakingBase + parent: FoodDoughSliceBase id: FoodDoughTortillaSlice name: tortilla dough slice description: A slice of tortilla dough. components: - - type: Item - size: Tiny - - type: FlavorProfile - flavors: - - chalky - - dough - type: Sprite state: tortilladough-slice - type: Construction graph: Tortilla node: start - - type: Tag - tags: - - Slice - type: entity - parent: FoodBakingBase + parent: [SolutionVeryTiny, FoodDoughBase] id: FoodDoughTortillaFlat name: flattened tortilla dough description: A flattened slice of tortilla dough, cook this to get a taco shell. components: - - type: Item - size: Tiny - - type: FlavorProfile - flavors: - - chalky - - dough - type: Sprite state: tortilladough-flat - type: Construction graph: Tortilla node: flat + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 - type: entity - parent: FoodBakingBase + parent: FoodDoughBase id: FoodDoughCotton name: cotton dough description: A piece of fabric dough. components: - - type: Item - size: Normal - type: FlavorProfile flavors: - dough @@ -509,7 +473,7 @@ - type: Sprite state: cotton-dough - type: SliceableFood - count: 3 + count: 8 slice: FoodDoughCottonSlice - type: Construction graph: CottonPizza @@ -517,24 +481,20 @@ - type: Tag tags: - ClothMade - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Fiber + Quantity: 40 - type: entity - parent: FoodBakingBase + parent: FoodDoughSliceBase id: FoodDoughCottonSlice name: cotton dough slice description: A slice of cotton dough. components: - - type: Item - size: Tiny - type: FlavorProfile flavors: - dough @@ -548,24 +508,20 @@ - type: Construction graph: DoughRopeCotton node: start - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 1.5 - - ReagentId: Fiber - Quantity: 3.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2.5 + - ReagentId: Fiber + Quantity: 5 - type: entity - parent: FoodBakingBase + parent: FoodDoughRopeBase id: FoodDoughCottonRope name: cotton dough rope description: A thin noodle of cotton dough. Can be cooked into a cotton bagel. components: - - type: Item - storedRotation: -45 - type: FlavorProfile flavors: - dough @@ -575,15 +531,13 @@ - type: Construction graph: DoughRopeCotton node: rolled - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 1.5 - - ReagentId: Fiber - Quantity: 3.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2.5 + - ReagentId: Fiber + Quantity: 5 - type: Tag tags: - ClothMade @@ -591,7 +545,7 @@ - type: entity name: raw pastry base parent: FoodBakingBase - id: FoodDoughPastryBaseRaw + id: FoodDoughPastryBaseRaw # Unused description: Must be cooked before use. components: - type: Sprite @@ -600,31 +554,28 @@ - type: entity name: pastry base parent: FoodBakingBase - id: FoodDoughPastryBase + id: FoodDoughPastryBase # Unused description: A base for any self-respecting pastry. components: - type: Sprite state: dough-pastry-baked - type: entity - parent: FoodBakingBase + parent: FoodDoughBase id: FoodDoughPie name: pie dough description: Cook it to get a pie. components: - - type: Item - size: Normal - type: Sprite state: dough-pie - type: entity - parent: FoodBakingBase + parent: FoodDough id: FoodDoughFlat name: flat dough description: A flattened dough. components: - type: Item - size: Normal shape: - 0,0,2,1 - type: Sprite @@ -633,17 +584,16 @@ graph: Pizza node: flat - type: SliceableFood - count: 3 + count: 4 slice: FoodCroissantRaw - type: entity - parent: FoodBakingBase + parent: FoodDoughCotton id: FoodDoughCottonFlat name: flat cotton dough description: A flattened cotton dough. components: - type: Item - size: Normal shape: - 0,0,2,1 - type: Sprite @@ -652,15 +602,18 @@ graph: CottonPizza node: flat - type: SliceableFood - count: 3 + count: 4 slice: FoodCroissantRawCotton - type: entity - parent: FoodBakingBase + parent: FoodDough id: FoodDoughPizzaBaked name: pizza bread description: Add ingredients to make a pizza. components: + - type: FlavorProfile + flavors: + - bread - type: Item size: Normal shape: @@ -669,13 +622,11 @@ state: pizzabread - type: entity - parent: FoodBakingBase + parent: FoodDoughBase id: FoodCakeBatter name: cake batter description: Cook it to get a cake. components: - - type: Item - size: Normal - type: FlavorProfile flavors: - sweetdough @@ -683,7 +634,7 @@ state: cakebatter - type: entity - parent: FoodBakingBase + parent: [SolutionSmall, FoodBakingBase] id: FoodButter name: stick of butter description: A stick of delicious, golden, fatty goodness. @@ -716,19 +667,17 @@ density: 10 mask: - ItemMask - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Butter - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Butter + Quantity: 30 - type: SliceableFood - count: 3 + count: 12 slice: FoodButterSlice - type: entity - parent: FoodBakingBase + parent: [SolutionVeryTiny, FoodBakingBase] id: FoodButterSlice name: butter slice description: A pat of delicious, golden, fatty goodness. @@ -737,13 +686,12 @@ size: Tiny - type: Sprite state: butter-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Butter - Quantity: 5 + - type: Solution + solution: + maxVol: 5 + reagents: + - ReagentId: Butter + Quantity: 2.5 - type: Tag tags: - Slice @@ -757,21 +705,19 @@ - type: Sprite state: butter color: "#82C36E" - - type: SolutionContainerManager - solutions: - food: - maxVol: 100 - reagents: - - ReagentId: Butter - Quantity: 10 - - ReagentId: THC - Quantity: 82 + - type: Solution + solution: + reagents: + - ReagentId: Butter + Quantity: 30 + - ReagentId: THC + Quantity: 15 - type: Extractable grindableSolutionName: food - type: entity name: cheese wheel - parent: FoodBakingBase + parent: [SolutionNormal, FoodBakingBase] id: FoodCheese description: A big wheel of delicious Cheddar. components: @@ -785,9 +731,14 @@ - type: SliceableFood count: 4 slice: FoodCheeseSlice + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 - type: entity - parent: FoodBakingBase + parent: [SolutionTiny, FoodBakingBase] id: FoodCheeseSlice name: cheese wedge description: A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far. @@ -797,13 +748,11 @@ - cheesy - type: Sprite state: cheesewedge - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 3.75 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 - type: Tag tags: - Slice @@ -821,7 +770,7 @@ - state: cheesewedge-inhand-right - type: entity - parent: FoodBakingBase + parent: [SolutionSmall, FoodBakingBase] id: FoodChevre name: chèvre log description: A soft log of creamy Chèvre. @@ -837,20 +786,18 @@ - type: Sprite state: chevrelog - type: SliceableFood - count: 3 + count: 6 slice: FoodChevreSlice - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 0.6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 24 + - ReagentId: Vitamin + Quantity: 6 - type: entity - parent: FoodBakingBase + parent: [SolutionTiny, FoodBakingBase] id: FoodChevreSlice name: chèvre disk description: A small disk of creamy Chèvre. An ideal adornment for French side dishes. @@ -863,21 +810,20 @@ - creamy - type: Sprite state: chevredisk - - type: SolutionContainerManager - solutions: - food: - maxVol: 2 - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Vitamin - Quantity: 0.2 + - type: Solution + solution: + maxVol: 10 + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: Vitamin + Quantity: 1 - type: Tag tags: - Slice - type: entity - parent: FoodBakingBase + parent: [SolutionNormal, FoodBakingBase] id: FoodTofu name: tofu description: Solid white block with a subtle flavor. @@ -889,21 +835,19 @@ - tofu - type: Sprite state: tofu - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Protein - Quantity: 9 - - ReagentId: Nutriment - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 45 + - ReagentId: Nutriment + Quantity: 30 - type: SliceableFood - count: 3 + count: 5 slice: FoodTofuSlice - type: entity - parent: FoodBakingBase + parent: [SolutionTiny, FoodBakingBase] id: FoodTofuSlice name: tofu slice description: A slice of tofu. Ingredient of various vegetarian dishes. @@ -915,22 +859,20 @@ - tofu - type: Sprite state: tofu-slice - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Protein - Quantity: 3 - - ReagentId: Nutriment - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 9 + - ReagentId: Nutriment + Quantity: 6 - type: Tag tags: - Slice - type: entity name: burned mess - parent: FoodBakingBase + parent: [SolutionSmall, FoodBakingBase] id: FoodBadRecipe description: Someone should be demoted from cook for this. components: @@ -939,15 +881,15 @@ - terrible - type: Sprite state: badrecipe - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: GastroToxin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: GastroToxin + Quantity: 15 + - ReagentId: Carbon + Quantity: 10 - type: Tag tags: - Trash @@ -958,31 +900,31 @@ id: FoodCocoaBeans description: You can never have too much chocolate! components: + - type: Item + size: Tiny - type: FlavorProfile flavors: - chocolate - type: Sprite sprite: Objects/Specific/Hydroponics/cocoa.rsi state: produce-beans - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: CocoaPowder - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: CocoaPowder + Quantity: 6 - type: Extractable juiceSolution: reagents: - ReagentId: CocoaPowder - Quantity: 2 + Quantity: 10 - type: entity - parent: FoodBakingBase + parent: [SolutionSmall, FoodBakingBase] id: FoodCroissantRaw name: raw croissant description: Buttery, flaky goodness waiting to happen. @@ -997,13 +939,11 @@ - dough - type: Sprite state: croissant-raw - - type: SolutionContainerManager - solutions: - food: - maxVol: 4 - reagents: - - ReagentId: Nutriment - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 - type: entity parent: FoodCroissantRaw @@ -1022,3 +962,10 @@ - cotton - type: Sprite state: croissant-raw-cotton + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Fiber + Quantity: 10 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml index 4561464d18..8889e2b3a0 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml @@ -15,13 +15,11 @@ - 0,0,1,0 - type: Sprite sprite: Objects/Consumable/Food/meals.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Nutriment - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 40 # Bonus for complete meal # Meals @@ -91,13 +89,13 @@ - type: Tag tags: - CarrotFries - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: JuiceCarrot - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: JuiceCarrot + Quantity: 20 + - ReagentId: Nutriment + Quantity: 20 # Tastes like carrots, salt. - type: entity @@ -116,15 +114,13 @@ - nachos - type: Sprite state: nachos - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: TableSalt - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: TableSalt + Quantity: 2 # Tastes like nachos. - type: entity @@ -144,15 +140,13 @@ - cheesy - type: Sprite state: nachos-cheesy - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: TableSalt - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: TableSalt + Quantity: 2 # Tastes like nachos, cheese. - type: entity @@ -173,17 +167,15 @@ - spicy - type: Sprite state: nachos-cuban - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 25 - - ReagentId: CapsaicinOil - Quantity: 7 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 # Tastes like nachos, hot pepper. - type: entity @@ -192,6 +184,9 @@ name: mint description: It's wafer thin. components: + - type: Edible + trash: + - FoodPlateSmall - type: Item storedOffset: 0,-1 - type: FlavorProfile @@ -199,14 +194,13 @@ - minty - type: Sprite state: mint - - type: SolutionContainerManager - solutions: - food: - # Note that this acts as the limiter against injecting anything. - maxVol: 1 - reagents: - - ReagentId: Nutriment - Quantity: 1 + - type: Solution + solution: + # Note that this acts as the limiter against injecting anything. + maxVol: 2 + reagents: + - ReagentId: Nutriment + Quantity: 1 # Tastes like parsnips, salt. - type: entity @@ -223,15 +217,6 @@ - cheesy - type: Sprite state: eggplantparm - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 2 - type: Tag tags: - Fruit @@ -254,12 +239,14 @@ # Tastes like sweet potato. - type: entity - parent: FoodMealBase + parent: [SolutionNormal, FoodMealBase] id: FoodMealCubancarp name: Cuban carp description: A grifftastic sandwich that burns your tongue and then leaves it numb! components: - type: Item + size: Normal + shape: storedOffset: 3,-7 - type: FlavorProfile flavors: @@ -268,19 +255,17 @@ - spicy - type: Sprite state: cubancarp - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 40 - - ReagentId: CarpoToxin - Quantity: 3 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: CapsaicinOil - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 100 + - ReagentId: CarpoToxin + Quantity: 5 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - CubanCarp @@ -301,22 +286,13 @@ - cabbage - type: Sprite state: cornedbeef - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 4 - type: Tag tags: - Meat # Tastes like meat, cabbage. - type: entity - parent: FoodMealBase + parent: [SolutionNormal, FoodMealBase] id: FoodMealBearsteak name: filet migrawr description: Because eating bear wasn't manly enough. @@ -324,7 +300,6 @@ - type: Item size: Normal shape: - - 0,0,1,1 storedOffset: -1,4 - type: FlavorProfile flavors: @@ -332,22 +307,13 @@ - fishy - type: Sprite state: bearsteak - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 5 - type: Tag tags: - Meat # Tastes like meat, salmon. - type: entity - parent: FoodMealBase + parent: [SolutionTiny, FoodMealBase] id: FoodMealPigblanket name: pig in a blanket description: A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it. @@ -355,34 +321,26 @@ - type: Item size: Tiny shape: - - 0,0,0,0 - type: FlavorProfile flavors: - meaty - butter - type: Sprite state: pigblanket - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 1 - type: Tag tags: - Meat # Tastes like meat, butter. - type: entity - parent: FoodMealBase + parent: [SolutionNormal, FoodMealBase] id: FoodMealRibs name: bbq ribs description: BBQ ribs, slathered in a healthy coating of BBQ sauce. The least vegan thing to ever exist. components: - type: Item + size: Normal + shape: storedOffset: 0,-4 - type: Edible trash: @@ -393,17 +351,15 @@ - smokey - type: Sprite state: ribs - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Protein - Quantity: 20 - - ReagentId: BbqSauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 60 + - ReagentId: Protein + Quantity: 30 + - ReagentId: BbqSauce + Quantity: 10 - type: Tag tags: - Meat @@ -422,15 +378,6 @@ - bun - type: Sprite state: benedict - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 4 - type: Tag tags: - Meat @@ -450,13 +397,6 @@ - cheesy - type: Sprite state: omelette - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 9 - type: Tag tags: - Meat @@ -477,24 +417,13 @@ - peppery - type: Sprite state: friedegg - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: TableSalt - Quantity: 1 - - ReagentId: Blackpepper - Quantity: 1 - type: Tag tags: - Meat # Tastes like egg, salt, pepper. - type: entity - parent: FoodMealBase + parent: [SolutionNormal, FoodMealBase] id: FoodMealMilkape name: milk ape description: The king of Jungle Thick. @@ -502,7 +431,6 @@ - type: Item size: Normal shape: - - 0,0,1,1 - type: FlavorProfile flavors: - milk @@ -525,19 +453,10 @@ - memoryleek - type: Sprite state: memoryLeek - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Allicin - Quantity: 5 # Tastes like pain. - type: entity - parent: FoodMealBase + parent: [SolutionNormal, FoodMealBase] id: DisgustingSweptSoup name: salty sweet miso cola soup description: Jesus christ. @@ -545,21 +464,9 @@ - type: Item size: Normal shape: - - 0,0,1,1 storedOffset: 0,-2 - type: Sprite state: saltysweet - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 9 - - ReagentId: Water - Quantity: 10 - - ReagentId: Blackpepper - Quantity: 3 # Tastes awesome. - type: entity @@ -588,15 +495,15 @@ - fishy - type: Sprite state: sashimi - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: CarpoToxin - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: CarpoToxin + Quantity: 5 + - ReagentId: TableSalt + Quantity: 1 - type: Tag tags: - Meat @@ -615,31 +522,31 @@ - meaty - type: Sprite state: enchiladas - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Protein - Quantity: 5 - - ReagentId: CapsaicinOil - Quantity: 6 - - ReagentId: Vitamin - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: Protein + Quantity: 5 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - Meat # What do Europeans eat instead of enchiladas? 25.4 millimeter-iladas. - type: entity - parent: FoodMealBase + parent: [SolutionNormal, FoodMealBase] id: FoodSaladWatermelonFruitBowl name: melon fruit bowl description: The only salad where you can eat the bowl. components: - type: Item + size: Normal + shape: storedOffset: 0,-3 - type: FlavorProfile flavors: @@ -647,21 +554,19 @@ - sour - type: Sprite state: melonfruitbowl - - type: SolutionContainerManager - solutions: - food: - maxVol: 65 - reagents: - - ReagentId: Nutriment - Quantity: 30 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: Water - Quantity: 5 - - ReagentId: Bicaridine - Quantity: 5 - - ReagentId: Kelotane - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 45 + - ReagentId: Vitamin + Quantity: 60 + - ReagentId: Water + Quantity: 5 + - ReagentId: Bicaridine + Quantity: 5 + - ReagentId: Kelotane + Quantity: 5 - type: Tag tags: - Fruit @@ -683,12 +588,12 @@ - butter - type: Sprite state: corn-in-butter - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: Butter + Quantity: 2.5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 41c8f65885..bd3ca13ca4 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -12,17 +12,15 @@ sprite: Objects/Consumable/Food/meat.rsi - type: Extractable grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: UncookedAnimalProteins - Quantity: 1 - - ReagentId: Fat - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: UncookedAnimalProteins + Quantity: 20 + - ReagentId: Fat + Quantity: 5 - type: Item shape: - 0,0,1,0 @@ -81,16 +79,8 @@ components: - type: Sprite state: plain - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatCutlet - type: InternalTemperature conductivity: 0.43 @@ -117,14 +107,8 @@ components: - type: Sprite state: plain - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatCutlet - type: Item storedOffset: -2,1 @@ -150,12 +134,15 @@ - Meat - type: Sprite state: fish - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: CarpoToxin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: CarpoToxin + Quantity: 5 + - ReagentId: UncookedAnimalProteins + Quantity: 20 + - ReagentId: Fat + Quantity: 5 - type: Extractable juiceSolution: reagents: @@ -171,7 +158,7 @@ - type: entity # bacon is cured so not raw = cant rot - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatBase] id: FoodMeatBacon name: raw bacon description: A raw piece of bacon. @@ -182,14 +169,13 @@ - Meat - type: Sprite state: bacon - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 2 - - ReagentId: Fat - Quantity: 9 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 6 + - ReagentId: Fat + Quantity: 9 - type: InternalTemperature conductivity: 0.44 thickness: 0.004 # bacon is thin so faster to cook than a steak @@ -214,16 +200,8 @@ components: - type: Sprite state: bear - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatBearCutlet - type: Construction graph: BearSteak @@ -247,16 +225,8 @@ components: - type: Sprite state: bird - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatPenguinCutlet - type: Construction graph: PenguinSteak @@ -278,16 +248,8 @@ components: - type: Sprite state: bird - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatChickenCutlet - type: InternalTemperature conductivity: 0.41 @@ -311,16 +273,8 @@ components: - type: Sprite state: bird - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatDuckCutlet - type: Construction graph: DuckSteak @@ -348,12 +302,13 @@ - Meat - type: Sprite state: corgi - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Bicaridine - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Bicaridine + Quantity: 20 - type: StaticPrice price: 750 - type: StealTarget @@ -378,14 +333,6 @@ - crabby - type: Sprite state: crab - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 1 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: CrabSteak node: start @@ -399,14 +346,6 @@ components: - type: Sprite state: goliath - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - ReagentId: Fat - Quantity: 3 - type: InternalTemperature thickness: 0.1 # very big, do cook it in lava - type: Construction @@ -436,19 +375,20 @@ - state: dragon - state: dragon_veins shader: unshaded - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Ichor - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 20 + - ReagentId: Ichor + Quantity: 10 - type: Extractable juiceSolution: reagents: - ReagentId: Ichor Quantity: 10 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatDragonCutlet - type: Construction graph: DragonSteak @@ -463,23 +403,24 @@ - state: dragon-inhand-right - type: entity - parent: FoodMeatRawBase + parent: [SolutionVeryTiny, FoodMeatRawBase] id: FoodMeatRat name: raw rat meat description: Prime meat from maintenance! components: - type: Sprite state: plain - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 1 + - ReagentId: UncookedAnimalProteins + Quantity: 4 + - ReagentId: Fat + Quantity: 1 - type: SliceableFood - count: 3 + count: 1 slice: FoodMeatCutlet - type: Item storedOffset: -2,1 @@ -497,16 +438,8 @@ components: - type: Sprite state: lizard - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatLizardCutlet - type: Construction graph: LizardSteak @@ -545,16 +478,15 @@ - Recyclable - type: Sprite state: rotten - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - ReagentId: GastroToxin - Quantity: 4 - - ReagentId: Fat - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 10 + - ReagentId: GastroToxin + Quantity: 16 + - ReagentId: Fat + Quantity: 4 - type: Item storedOffset: -2,1 inhandVisuals: @@ -571,16 +503,8 @@ components: - type: Sprite state: spider - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatSpiderCutlet - type: Item storedOffset: 0,2 @@ -594,14 +518,6 @@ components: - type: Sprite state: spiderleg - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 10 - - ReagentId: Fat - Quantity: 3 - type: Item size: Normal shape: @@ -615,7 +531,7 @@ color: "#333333" - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatBase] id: FoodMeatWheat name: meatwheat clump description: This doesn't look like meat, but your standards aren't that high to begin with. @@ -625,16 +541,14 @@ - falsemeat - type: Sprite state: clump - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 15 - type: Item size: Tiny shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -644,7 +558,7 @@ color: "#934C64" - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatBase] id: FoodMeatSnake name: raw snake meat description: A long piece of snake meat, hopefully not poisonous. @@ -655,14 +569,15 @@ - Meat - type: Sprite state: snake - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 10 - - ReagentId: Toxin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 10 + - ReagentId: Fat + Quantity: 3 + - ReagentId: Toxin + Quantity: 2 - type: Item storedOffset: -1,3 inhandVisuals: @@ -688,14 +603,13 @@ - Meat - type: Sprite state: xeno - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: SulfuricAcid - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: SulfuricAcid + Quantity: 30 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatXenoCutlet - type: Item storedOffset: -2,1 @@ -725,12 +639,11 @@ - Meat - type: Sprite state: rouny - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: SulfuricAcid - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: SulfuricAcid + Quantity: 30 - type: Construction graph: RounySteak node: start @@ -751,7 +664,7 @@ - type: Sprite state: tomato - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatTomatoCutlet - type: StaticPrice price: 100 @@ -813,7 +726,7 @@ slice: FoodMeatSalamiSlice - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatBase] id: FoodMeatMeatball name: meatball description: A raw ball of meat. Meat ball. @@ -821,8 +734,16 @@ - type: Item size: Tiny shape: - - 0,0,0,0 storedOffset: -1,2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7 + - ReagentId: UncookedAnimalProteins + Quantity: 5 + - ReagentId: Fat + Quantity: 3 - type: Tag tags: - Raw @@ -836,7 +757,7 @@ # meat patty - grillin' time - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatBase] id: FoodMeatPatty name: meat patty description: A flat slab of ground meat. Ready for grillin'. @@ -856,8 +777,16 @@ - type: Item size: Tiny shape: - - 0,0,0,0 heldPrefix: generic-pink + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2.5 + - ReagentId: UncookedAnimalProteins + Quantity: 10 + - ReagentId: Fat + Quantity: 2.5 - type: entity parent: FoodMeatBase @@ -888,52 +817,24 @@ - state: slime-inhand-right - type: entity - parent: FoodMeatRawBase - id: FoodMeatSnail - name: raw snail meat - description: Improved with salt. - components: - - type: Sprite - state: snail - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 3 - - ReagentId: Water - Quantity: 4 #It makes saline if you add salt! - - type: Item - storedOffset: -1,-3 - inhandVisuals: - left: - - state: generic-pink-inhand-left - color: "#E2AE7C" - right: - - state: generic-pink-inhand-right - color: "#E2AE7C" - -- type: entity - parent: FoodMeatRawBase + parent: [SolutionHuge, FoodMeatRawBase] id: FoodMeatAnomaly name: anomalous meat mass description: An impossibly dense slab of meat. Just looking at it makes you uncomfortable. components: - type: Sprite state: anomalymeat - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 90 - - ReagentId: Fat - Quantity: 90 + - type: Solution # Literally no space for anything but meat. + solution: + reagents: + - ReagentId: Nutriment + Quantity: 80 + - ReagentId: UncookedAnimalProteins + Quantity: 320 + - ReagentId: Fat + Quantity: 80 - type: SliceableFood - count: 10 + count: 16 sliceTime: 5 slice: FoodMeat #That's... So much meat - type: InternalTemperature @@ -958,13 +859,11 @@ # Cooked - type: entity - parent: FoodBase + parent: FoodBaseTrash id: MaterialSmileExtract name: smile extract description: It's a real panacea. But at what cost? components: - - type: Item - size: Tiny - type: Extractable grindableSolutionName: food - type: FlavorProfile @@ -975,16 +874,15 @@ layers: - map: [ "enum.DamageStateVisualLayers.Base" ] state: rainbow_slime_extract - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Omnizine - Quantity: 30 - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Iron - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Omnizine + Quantity: 30 + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Iron + Quantity: 10 - type: StaticPrice price: 3000 #It has so much Omnizin in it - type: Tag @@ -992,7 +890,24 @@ - Meat - type: entity + abstract: true parent: FoodMeatBase + id: FoodMeatCookedBase + components: + - type: Tag + tags: + - Cooked + - Meat + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Protein + Quantity: 10 + +- type: entity + parent: FoodMeatCookedBase id: FoodMeatCooked name: steak description: A cooked slab of meat. Smells primal. @@ -1005,16 +920,8 @@ - type: Sprite layers: - state: plain-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Protein - Quantity: 5 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatCutletCooked - type: Construction graph: MeatSteak @@ -1032,15 +939,11 @@ - state: plain-cooked-inhand-right - type: entity - parent: FoodMeatBase + parent: [SolutionVeryTiny, FoodMeatCookedBase] # Bacon shrinks when its cooked so we shrink solution size as well. id: FoodMeatBaconCooked name: bacon description: A delicious piece of cooked bacon. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: bacon-cooked @@ -1050,14 +953,13 @@ - enum.DamageStateVisualLayers.Base: bacon-cooked: "" bacon2-cooked: "" - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Protein + Quantity: 5 - type: Construction graph: Bacon node: bacon @@ -1076,7 +978,7 @@ color: "#5B3E2A" - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatBearCooked name: cooked bear description: A well-cooked slab of bear meat. Tough, but tasty with the right sides. @@ -1089,16 +991,8 @@ - type: Sprite layers: - state: product-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatBearCutletCooked - type: Construction graph: BearSteak @@ -1112,28 +1006,16 @@ heldPrefix: meatball - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatPenguinCooked name: penguin filet description: A cooked filet of penguin. Can be used as a substitute for fish in recipes. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: bird-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatPenguinCutletCooked - type: Construction graph: PenguinSteak @@ -1153,28 +1035,16 @@ color: "#F7E3A3" - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatChickenCooked name: cooked chicken description: A cooked piece of chicken. Best used in other recipes. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: bird-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatChickenCutletCooked - type: Construction graph: ChickenSteak @@ -1195,14 +1065,10 @@ - type: entity name: fried chicken - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatChickenFried description: A juicy hunk of chicken meat, fried to perfection. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: chicken-fried @@ -1212,14 +1078,6 @@ - enum.DamageStateVisualLayers.Base: chicken-fried: "" chicken2-fried: "" - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: FoodSequenceElement entries: Burger: MeatChicken @@ -1239,40 +1097,27 @@ name: mystery fried chicken description: “Eleven secret herbs and… oh no. That’s not chicken." components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 5 - - ReagentId: Ammonia - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Ammonia + Quantity: 5 - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatDuckCooked name: cooked duck description: A cooked piece of duck. Best used in other recipes. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: bird-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatDuckCutletCooked - type: Construction graph: DuckSteak @@ -1292,7 +1137,7 @@ color: "#F7E3A3" - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatCrabCooked name: cooked crab description: Some deliciously cooked crab meat. @@ -1300,21 +1145,9 @@ - type: FlavorProfile flavors: - crabby - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: crab-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: Construction graph: CrabSteak node: cooked crab @@ -1331,7 +1164,7 @@ - state: plain-cooked-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatGoliathCooked name: goliath steak description: A delicious, lava cooked steak. @@ -1344,14 +1177,6 @@ - type: Sprite layers: - state: goliath-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: Construction graph: GoliathSteak node: goliath steak @@ -1369,7 +1194,7 @@ - type: entity name: rouny steak - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatRounyCooked description: Some kill to survive. You on the other hand, kill for fun. components: @@ -1385,14 +1210,6 @@ - type: Sprite layers: - state: rouny-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Protein - Quantity: 10 - type: Construction graph: RounySteak node: rouny steak @@ -1408,7 +1225,7 @@ - state: plain-cooked-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatLizardCooked name: lizard steak description: Cooked, tough lizard meat. @@ -1421,16 +1238,8 @@ - type: Sprite layers: - state: lizard-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatLizardCutletCooked - type: Construction graph: LizardSteak @@ -1448,26 +1257,14 @@ - state: plain-cooked-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatSpiderlegCooked name: boiled spider leg description: A giant spider's leg that's still twitching after being cooked. Gross! components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: spiderleg-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 - type: FoodSequenceElement entries: Burger: MeatSpiderBurger @@ -1483,25 +1280,20 @@ color: "#44201A" - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatCookedBase] id: FoodMeatMeatballCooked name: meatball description: A cooked meatball. Perfect to add to other dishes... except fruity ones. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite state: meatball-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Protein + Quantity: 5 - type: FoodSequenceElement entries: Burger: MeatBall @@ -1512,12 +1304,11 @@ - type: Item size: Tiny shape: - - 0,0,0,0 storedOffset: -1,2 heldPrefix: meatball - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatCookedBase] id: FoodMeatPattyCooked name: cooked meat patty description: A cooked meat patty. @@ -1529,14 +1320,13 @@ - Steak - type: Sprite state: patty - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 7.5 - - ReagentId: Protein - Quantity: 7.5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Protein + Quantity: 5 - type: Construction graph: CookedPatty node: cooked meat patty @@ -1547,33 +1337,26 @@ - type: Item size: Tiny shape: - - 0,0,0,0 heldPrefix: meatball - type: entity - parent: FoodMeatBase + parent: [SolutionTiny, FoodMeatCookedBase] id: FoodMeatSnailCooked name: boiled snail description: Improved with salt. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: snail-cooked - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Protein - Quantity: 3 - - ReagentId: Water - Quantity: 4 # makes saline if you add salt! + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Protein + Quantity: 5 + - ReagentId: Water + Quantity: 4 # makes saline if you add salt! - type: FoodSequenceElement entries: Burger: MeatSnail @@ -1589,28 +1372,23 @@ color: "#5B3E2A" - type: entity - parent: FoodMeatBase + parent: [SolutionLarge, FoodMeatCookedBase] # Intentionlly gets smaller when cooked id: FoodMeatAnomalyCooked name: anomalous steak description: A gigantic mass of cooked meat. A meal for a dinner party, or someone REALLY hungry. components: - - type: Tag - tags: - - Cooked - - Meat - type: Sprite layers: - state: anomalymeat-cooked #Kinda hard to cook this... thing evenly - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 100 - - ReagentId: Protein - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 160 + - ReagentId: Protein + Quantity: 80 - type: SliceableFood - count: 10 + count: 8 sliceTime: 5 slice: FoodMeatCooked - type: Construction @@ -1619,7 +1397,6 @@ - type: Item size: Normal shape: - - 0,0,1,1 inhandVisuals: left: - state: plain-cooked-inhand-left @@ -1627,7 +1404,7 @@ - state: plain-cooked-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCookedBase id: FoodMeatDragonCooked name: dragon steak description: Pouring ketchup on this is considered a capital crime on most stations. @@ -1640,18 +1417,17 @@ - type: Sprite layers: - state: dragon-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Ichor - Quantity: 6 - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Protein - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Ichor + Quantity: 5 + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Protein + Quantity: 15 - type: SliceableFood - count: 3 + count: 5 slice: FoodMeatDragonCutletCooked - type: Construction graph: DragonSteak @@ -1673,7 +1449,35 @@ # Raw - type: entity - parent: FoodMeatBase + abstract: true + parent: [SolutionVeryTiny, FoodMeatBase] + id: FoodMeatCutletBase + components: + - type: Tag + tags: + - Raw + - Cutlet + - Meat + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 1 + - ReagentId: UncookedAnimalProteins + Quantity: 4 + - ReagentId: Fat + Quantity: 1 + - type: Item + size: Tiny + shape: + inhandVisuals: + left: + - state: generic-pink-inhand-left + right: + - state: generic-pink-inhand-right + +- type: entity + parent: FoodMeatCutletBase id: FoodMeatCutlet name: raw cutlet description: A raw meat cutlet. @@ -1685,60 +1489,27 @@ - Meat - type: Sprite state: cutlet - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: Cutlet node: start defaultTarget: cutlet - - type: Item - size: Tiny - shape: - - 0,0,0,0 - inhandVisuals: - left: - - state: generic-pink-inhand-left - right: - - state: generic-pink-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatBearCutlet name: raw bear cutlet description: A very manly cutlet of raw bear meat. components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite layers: - state: cutlet - state: cutlet-alpha color: brown - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: BearCutlet node: start defaultTarget: bear cutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -1748,35 +1519,19 @@ color: brown - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatPenguinCutlet name: raw penguin cutlet description: A cutlet of raw penguin meat. Can be used as a substitute for fish in recipes. components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite state: cutlet color: white - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: PenguinCutlet node: start defaultTarget: penguin cutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -1786,110 +1541,50 @@ color: white - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatChickenCutlet name: raw chicken cutlet description: A cutlet of raw chicken. Remember to wash your hands! components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite state: cutlet color: white - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: ChickenCutlet node: start defaultTarget: chicken cutlet - - type: Item - size: Tiny - shape: - - 0,0,0,0 - inhandVisuals: - left: - - state: generic-pink-inhand-left - right: - - state: generic-pink-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatDuckCutlet name: raw duck cutlet description: A cutlet of raw duck. Remember to wash your hands! components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite state: cutlet color: white - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: DuckCutlet node: start defaultTarget: duck cutlet - - type: Item - size: Tiny - shape: - - 0,0,0,0 - inhandVisuals: - left: - - state: generic-pink-inhand-left - right: - - state: generic-pink-inhand-right - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatLizardCutlet name: raw lizard cutlet description: Delicious dino cutlet. components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite layers: - state: cutlet color: green - state: cutlet-alpha color: pink - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: LizardCutlet node: start defaultTarget: lizard cutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -1899,34 +1594,18 @@ color: green - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatSpiderCutlet name: raw spider cutlet description: A cutlet of raw spider meat. So Kafkaesque. components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite state: spidercutlet - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 3 - - ReagentId: Fat - Quantity: 2 - type: Construction graph: SpiderCutlet node: start defaultTarget: spider cutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -1936,7 +1615,7 @@ color: green - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatXenoCutlet name: raw xeno cutlet description: A slab of raw xeno meat, dripping with acid. @@ -1945,27 +1624,18 @@ flavors: - meaty - acid - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite state: xenocutlet - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: SulfuricAcid - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: SulfuricAcid + Quantity: 6 - type: Construction graph: XenoCutlet node: start defaultTarget: xeno cutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -1975,15 +1645,12 @@ color: green - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatTomatoCutlet name: raw killer tomato cutlet description: A cutlet from a slab of tomato. components: - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,0 - type: Tag tags: @@ -1996,62 +1663,39 @@ price: 30 - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatSalamiSlice name: salami slice description: A slice of cured salami. components: - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,0 - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite state: salami-slice - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Protein - Quantity: 1 - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletBase id: FoodMeatDragonCutlet name: raw dragon cutlet description: A raw dragon meat cutlet. components: - - type: Tag - tags: - - Raw - - Cutlet - - Meat - type: Sprite layers: - state: dragoncutlet - state: dragoncutlet_veins shader: unshaded - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Ichor - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 4 + - ReagentId: Ichor + Quantity: 2 - type: Construction graph: DragonCutlet node: start defaultTarget: dragon cutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 inhandVisuals: left: - state: generic-pink-inhand-left @@ -2063,26 +1707,31 @@ # Cooked - type: entity - parent: FoodMeatBase - id: FoodMeatCutletCooked - name: cutlet - description: A cooked meat cutlet. Needs some seasoning. + abstract: true + parent: FoodMeatCutletBase + id: FoodMeatCutletCookedBase components: - type: Tag tags: - Cooked - Cutlet - Meat + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: Protein + Quantity: 2 + +- type: entity + parent: FoodMeatCutletCookedBase + id: FoodMeatCutletCooked + name: cutlet + description: A cooked meat cutlet. Needs some seasoning. + components: - type: Sprite state: cutlet-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - type: Construction graph: Cutlet node: cutlet @@ -2091,9 +1740,6 @@ Burger: MeatCutlet Taco: MeatCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2104,29 +1750,16 @@ color: "#5B3614" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatBearCutletCooked name: bear cutlet description: A very manly cutlet of cooked bear meat. components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite layers: - state: cutlet-cooked - state: cutlet-alpha color: brown - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - type: Construction graph: BearCutlet node: bear cutlet @@ -2135,9 +1768,6 @@ Burger: BearCutletBurger Taco: BearCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2148,27 +1778,14 @@ color: "#5B3614" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatPenguinCutletCooked name: penguin cutlet description: A cutlet of cooked penguin meat. components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite state: cutlet-cooked color: white - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - type: Construction graph: PenguinCutlet node: penguin cutlet @@ -2177,9 +1794,6 @@ Burger: PenguinCutletBurger Taco: PenguinCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2190,27 +1804,14 @@ color: "#5B3614" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatChickenCutletCooked name: chicken cutlet description: A cutlet of cooked chicken. Remember to wash your hands! components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite state: cutlet-cooked color: white - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - type: Construction graph: ChickenCutlet node: chicken cutlet @@ -2219,9 +1820,6 @@ Burger: ChickenCutlet Taco: ChickenCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2232,27 +1830,14 @@ color: "#5B3614" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatDuckCutletCooked name: duck cutlet description: A cutlet of cooked duck. Remember to wash your hands! components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite state: cutlet-cooked color: white - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - type: Construction graph: DuckCutlet node: duck cutlet @@ -2261,9 +1846,6 @@ Burger: DuckCutlet Taco: DuckCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2274,28 +1856,15 @@ color: "#5B3614" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatLizardCutletCooked name: lizard cutlet description: Delicious cooked dino cutlet. components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite layers: - state: cutlet-cooked color: green - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 - type: Construction graph: LizardCutlet node: lizard cutlet @@ -2304,9 +1873,6 @@ Burger: LizardCutletBurger Taco: LizardCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2317,26 +1883,13 @@ color: "#153F06" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatSpiderCutletCooked name: spider cutlet description: A cutlet of cooked spider meat. Finally edible. components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite state: spidercutlet-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Protein - Quantity: 1 - type: Construction graph: SpiderCutlet node: spider cutlet @@ -2345,9 +1898,6 @@ Burger: SpiderCutletBurger Taco: SpiderCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,0 inhandVisuals: left: @@ -2358,26 +1908,13 @@ color: "#153F06" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatXenoCutletCooked name: xeno cutlet description: A cutlet of cooked xeno, dripping with... tastiness? components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite state: xenocutlet-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Protein - Quantity: 1 - type: Construction graph: XenoCutlet node: xeno cutlet @@ -2386,9 +1923,6 @@ Burger: XenoCutlet Taco: XenoCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: @@ -2399,28 +1933,22 @@ color: "#153F06" - type: entity - parent: FoodMeatBase + parent: FoodMeatCutletCookedBase id: FoodMeatDragonCutletCooked name: dragon cutlet description: It's a meal for kings! components: - - type: Tag - tags: - - Cooked - - Cutlet - - Meat - type: Sprite state: dragoncutlet-cooked - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Ichor - Quantity: 2 - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Protein - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Ichor + Quantity: 1 + - ReagentId: Nutriment + Quantity: 3 + - ReagentId: Protein + Quantity: 3 - type: Construction graph: DragonCutlet node: dragon cutlet @@ -2429,9 +1957,6 @@ Burger: DragonCutlet Taco: DragonCutlet - type: Item - size: Tiny - shape: - - 0,0,0,0 storedOffset: -1,1 inhandVisuals: left: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml index ce20fbb46c..ffdc81c2d2 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/noodles.yml @@ -3,7 +3,7 @@ - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionSmall, FoodInjectableBase] id: FoodNoodlesBase description: Now that's a nice pasta! components: @@ -12,13 +12,11 @@ - 0,0,1,0 - type: Sprite sprite: Objects/Consumable/Food/noodles.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 # Noodles @@ -51,20 +49,20 @@ - tomato - type: Sprite state: tomato - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 35 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 45 + - ReagentId: Vitamin + Quantity: 5 - type: Tag tags: - - Fruit + - Fruit # ??? # Tastes like pasta, tomato. - type: entity - parent: FoodNoodlesBase + parent: [SolutionNormal, FoodNoodlesBase] id: FoodNoodlesCopy name: copypasta description: You probably shouldn't try this, you always hear people talking about how bad it is... @@ -82,13 +80,13 @@ - copypasta - type: Sprite state: copypasta - - type: SolutionContainerManager - solutions: - food: - maxVol: 80 - reagents: - - ReagentId: Nutriment - Quantity: 70 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 90 + - ReagentId: Vitamin + Quantity: 10 # Tastes like pasta, bad humor. - type: entity @@ -105,15 +103,13 @@ - meaty - type: Sprite state: meatball - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Protein - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 40 + - ReagentId: Protein + Quantity: 5 - type: Tag tags: - Meat @@ -133,15 +129,6 @@ - meaty - type: Sprite state: spesslaw - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 6 # Tastes like pasta, meat. - type: entity @@ -158,17 +145,13 @@ - carrot - type: Sprite state: chowmein - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Protein - Quantity: 6 - - ReagentId: Vitamin - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 45 + - ReagentId: Vitamin + Quantity: 12 # Tastes like pasta, tomato. - type: entity @@ -185,11 +168,11 @@ - butter - type: Sprite state: butter - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 23 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: Butter + Quantity: 5 # Tastes like pasta, butter. diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index b45c77966d..2a497f9b12 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -2,23 +2,29 @@ # For produce that can't be immediately eaten - type: entity - parent: BaseItem - id: ProduceBase abstract: true + parent: [SolutionFood, SolutionTiny, BaseItem] # Produce should be less efficient volume wise + id: ProduceBase components: - - type: SolutionContainerManager - type: Sprite state: produce - type: Produce - type: PotencyVisuals - type: Appearance + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 - type: Extractable grindableSolutionName: food - type: entity + abstract: true parent: ProduceBase id: ProduceBaseRuminant - abstract: true components: # let cows eat raw produce like wheat and oats - type: Edible @@ -30,11 +36,10 @@ # For produce that can be immediately eaten - type: entity - parent: FoodInjectableBase + parent: [SolutionTiny, FoodInjectableBase] id: FoodProduceBase abstract: true components: - - type: SolutionContainerManager - type: Sprite state: produce - type: Produce @@ -46,21 +51,20 @@ # Subclasses - type: entity + parent: ProduceBaseRuminant + id: WheatBushel name: wheat bushel description: Sigh... wheat... a-grain? - id: WheatBushel - parent: ProduceBaseRuminant components: - type: Sprite sprite: Objects/Specific/Hydroponics/wheat.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Flour - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Flour + Quantity: 15 - type: Produce seedId: wheat - type: Tag @@ -69,21 +73,20 @@ - Ruminant - type: entity + parent: ProduceBaseRuminant + id: MeatwheatBushel name: meatwheat bushel description: Some blood-drenched wheat stalks. You can crush them into what passes for meat if you squint hard enough. - id: MeatwheatBushel - parent: ProduceBaseRuminant components: - type: Sprite sprite: Objects/Specific/Hydroponics/meatwheat.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 15 - type: SpawnItemsOnUse items: - id: FoodMeatWheat @@ -93,21 +96,20 @@ seedId: meatwheat - type: entity + parent: ProduceBaseRuminant + id: OatBushel name: oat bushel description: Eat oats, do squats. - id: OatBushel - parent: ProduceBaseRuminant components: - type: Sprite sprite: Objects/Specific/Hydroponics/oat.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Oats - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Oats + Quantity: 15 - type: Produce seedId: oat - type: Extractable @@ -117,35 +119,33 @@ Quantity: 5 - type: entity + parent: ProduceBaseRuminant + id: Sugarcane name: sugarcane description: Sickly sweet. - id: Sugarcane - parent: ProduceBaseRuminant components: - type: Sprite sprite: Objects/Specific/Hydroponics/sugarcane.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Sugar - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 15 - type: Produce seedId: sugarcane - type: entity + parent: ProduceBase + id: Papercane name: papercane roll description: Why do we even need to grow paper? - id: Papercane - parent: ProduceBase components: - type: Sprite sprite: Objects/Specific/Hydroponics/papercane.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - type: Produce seedId: papercane - type: Log @@ -161,17 +161,15 @@ - type: FlavorProfile flavors: - peas - - type: SolutionContainerManager - solutions: - food: - maxVol: 13 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Sugar - Quantity: 5 - - ReagentId: Laughter - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Sugar + Quantity: 5 + - ReagentId: Laughter + Quantity: 5 - type: Extractable juiceSolution: reagents: @@ -189,16 +187,15 @@ - Ruminant - type: entity + parent: ProduceBase + id: Log name: tower-cap log description: It's better than bad, it's good! - id: Log - parent: ProduceBase components: - type: Sprite sprite: Objects/Specific/Hydroponics/towercap.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - type: MeleeWeapon damage: types: @@ -208,16 +205,15 @@ - type: Log - type: entity + parent: ProduceBase + id: SteelLog name: steel-cap log description: Steel doesn't grow on trees! It grows on mushrooms, of course. - id: SteelLog - parent: ProduceBase components: - type: Sprite sprite: Objects/Specific/Hydroponics/steelcap.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - type: MeleeWeapon damage: types: @@ -229,10 +225,10 @@ spawnCount: 1 - type: entity + parent: ProduceBaseRuminant + id: Nettle name: nettle description: Stingy little prick. - id: Nettle - parent: ProduceBaseRuminant components: - type: Sprite sprite: Objects/Specific/Hydroponics/nettle.rsi @@ -244,12 +240,12 @@ damage: types: Heat: 10 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Histamine - Quantity: 3 + - type: Solution + solution: + maxVol: 6 + reagents: + - ReagentId: Histamine + Quantity: 3 - type: Produce seedId: nettle - type: MeleeChemicalInjector @@ -260,10 +256,10 @@ grindableSolutionName: food - type: entity + parent: [ ProduceBase, BaseMajorContraband ] + id: DeathNettle name: death nettle description: This nettle's out for blood. - id: DeathNettle - parent: [ProduceBase, BaseMajorContraband] components: - type: Sprite sprite: Objects/Specific/Hydroponics/death_nettle.rsi @@ -276,14 +272,13 @@ types: Heat: 8 Caustic: 8 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: SulfuricAcid - Quantity: 15 - - ReagentId: FluorosulfuricAcid - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: SulfuricAcid + Quantity: 7.5 + - ReagentId: FluorosulfuricAcid + Quantity: 7.5 - type: Produce seedId: deathNettle - type: MeleeChemicalInjector @@ -342,15 +337,15 @@ butcheringType: Knife spawned: - id: TrashBananaPeel - - type: SolutionContainerManager - solutions: - food: - maxVol: 6 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: JuiceBanana + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/banana.rsi - type: Item @@ -388,15 +383,15 @@ butcheringType: Knife spawned: - id: TrashMimanaPeel - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: MuteToxin - Quantity: 5 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: MuteToxin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/mimana.rsi - type: Item @@ -407,7 +402,7 @@ juiceSolution: reagents: - ReagentId: JuiceBanana - Quantity: 10 + Quantity: 5 - ReagentId: Nothing Quantity: 5 - type: Tag @@ -419,7 +414,7 @@ Taco: Mimana - type: entity - parent: BaseItem + parent: [SolutionFood, SolutionVeryTiny, BaseItem] id: TrashBananaPeel name: banana peel components: @@ -458,16 +453,14 @@ - Trash - BananaPeel - Ruminant - - WhitelistChameleon - HamsterWearable - - type: SolutionContainerManager - solutions: - food: - maxVol: 4 - reagents: - - ReagentId: PulpedBananaPeel - Quantity: 4 + - type: Solution + solution: + maxVol: 7.5 + reagents: + - ReagentId: PulpedBananaPeel + Quantity: 4 - type: Extractable grindableSolutionName: food - type: SpaceGarbage @@ -494,16 +487,15 @@ - type: Item sprite: Objects/Specific/Hydroponics/banana.rsi heldPrefix: baked-peel - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: PulpedBananaPeel - Quantity: 1 - - ReagentId: Bananadine - Quantity: 1 - - ReagentId: Carbon - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: PulpedBananaPeel + Quantity: 1 + - ReagentId: Bananadine + Quantity: 1 + - ReagentId: Carbon + Quantity: 2 - type: entity parent: TrashBananaPeel @@ -554,17 +546,15 @@ tags: - Carrot - Vegetable - - type: SolutionContainerManager - solutions: - food: - maxVol: 12 - reagents: - - ReagentId: JuiceCarrot - Quantity: 5 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Oculine - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Vitamin + Quantity: 7 + - ReagentId: Oculine + Quantity: 3 - type: Sprite sprite: Objects/Specific/Hydroponics/carrot.rsi - type: Item @@ -592,15 +582,15 @@ - type: FlavorProfile flavors: - cabbage - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Water + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/cabbage.rsi - type: Item @@ -624,17 +614,15 @@ - type: FlavorProfile flavors: - garlic - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Allicin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 4 + - ReagentId: Allicin + Quantity: 4 - type: Sprite sprite: Objects/Specific/Hydroponics/garlic.rsi - type: Produce @@ -656,15 +644,15 @@ - type: FlavorProfile flavors: - sour - - type: SolutionContainerManager - solutions: - food: - maxVol: 9 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: JuiceLemon + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/lemon.rsi - type: Item @@ -694,15 +682,13 @@ - type: FlavorProfile flavors: - lemoon - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Milk - Quantity: 16 + - type: Solution + solution: + reagents: + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Milk + Quantity: 10 - type: Sprite sprite: Objects/Specific/Hydroponics/lemoon.rsi - type: Item @@ -731,6 +717,15 @@ - type: FlavorProfile flavors: - sour + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: JuiceLime + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/lime.rsi - type: Item @@ -760,6 +755,15 @@ - type: FlavorProfile flavors: - orange + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: JuiceOrange + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/orange.rsi - type: Item @@ -788,17 +792,15 @@ - type: FlavorProfile flavors: - truenature - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Haloperidol - Quantity: 5 - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Haloperidol + Quantity: 5 + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/extradimensional_orange.rsi scale: 0.5,0.5 @@ -831,17 +833,15 @@ - type: FlavorProfile flavors: - pineapple - - type: SolutionContainerManager - solutions: - food: - maxVol: 16 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Water - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 8 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: JuicePineapple + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/pineapple.rsi - type: Item @@ -869,15 +869,6 @@ - type: FlavorProfile flavors: - potatoes - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - type: Sprite sprite: Objects/Specific/Hydroponics/potato.rsi - type: Item @@ -893,7 +884,6 @@ Burger: Potato Taco: Potato - - type: entity name: tomato parent: [FoodProduceBase, ItemHeftyBase] @@ -903,17 +893,15 @@ - type: FlavorProfile flavors: - tomato - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 7 - - ReagentId: Vitamin - Quantity: 3 - - ReagentId: Water - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 7 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: Water + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/tomato.rsi - type: Item @@ -963,17 +951,15 @@ id: FoodBlueTomato description: This one is blue. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 24 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: SpaceLube - Quantity: 15 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: SpaceLube + Quantity: 15 + - ReagentId: Vitamin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/blue_tomato.rsi - type: Item @@ -1014,15 +1000,13 @@ id: FoodBloodTomato description: Wait, that's not ketchup... components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Blood - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/blood_tomato.rsi - type: Item @@ -1067,15 +1051,6 @@ - type: FlavorProfile flavors: - eggplant - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - type: Sprite sprite: Objects/Specific/Hydroponics/eggplant.rsi - type: Item @@ -1096,15 +1071,15 @@ - type: FlavorProfile flavors: - apple - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: JuiceApple + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/apple.rsi - type: Item @@ -1134,17 +1109,15 @@ flavors: - apple - metallic - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: DoctorsDelight - Quantity: 13 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: DoctorsDelight + Quantity: 15 - type: Sprite sprite: Objects/Specific/Hydroponics/golden_apple.rsi - type: Item @@ -1175,17 +1148,15 @@ - type: FlavorProfile flavors: - chocolate - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: CocoaPowder - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: CocoaPowder + Quantity: 6 - type: Sprite sprite: Objects/Specific/Hydroponics/cocoa.rsi - type: Produce @@ -1215,15 +1186,13 @@ butcheringType: Knife spawned: - id: FoodCornTrash #no idea why you'd ever do this, but it's just here for consistency - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Cornmeal - Quantity: 15 - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Cornmeal + Quantity: 15 + - ReagentId: Nutriment + Quantity: 5 - type: Tag tags: - Corn @@ -1260,13 +1229,11 @@ - type: Tag tags: - Trash - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Cornmeal - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Cornmeal + Quantity: 15 - type: entity name: onion @@ -1277,17 +1244,15 @@ - type: FlavorProfile flavors: - onion - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Allicin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Allicin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/onion.rsi - type: Item @@ -1310,17 +1275,15 @@ - type: FlavorProfile flavors: - onion - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Allicin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Allicin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/onion_red.rsi - type: Item @@ -1340,12 +1303,13 @@ id: FoodMushroom description: "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!" components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12 + - ReagentId: Vitamin + Quantity: 8 - type: Sprite sprite: Objects/Specific/Hydroponics/chanterelle.rsi - type: Item @@ -1364,13 +1328,14 @@ id: ProduceSliceBase abstract: true components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 3 - reagents: - - ReagentId: Nutriment - Quantity: 2 + - type: Solution + solution: + maxVol: 7.5 + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: Vitamin + Quantity: 1 - type: Sprite state: slice - type: Extractable @@ -1415,17 +1380,15 @@ - onion - type: Sprite sprite: Objects/Specific/Hydroponics/onion.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Allicin - Quantity: 1 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 1 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Vitamin + Quantity: 1 - type: Tag tags: - Vegetable @@ -1446,17 +1409,15 @@ - onion - type: Sprite sprite: Objects/Specific/Hydroponics/onion_red.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Allicin - Quantity: 1 - - ReagentId: Vitamin - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 1 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Vitamin + Quantity: 1 - type: Tag tags: - Vegetable @@ -1475,17 +1436,15 @@ - type: FlavorProfile flavors: - spicy - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: CapsaicinOil - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 3 - type: Sprite sprite: Objects/Specific/Hydroponics/chili.rsi - type: Item @@ -1511,17 +1470,15 @@ flavors: - spicy - cold - - type: SolutionContainerManager - solutions: - food: - maxVol: 18 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: FrostOil - Quantity: 10 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: FrostOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 4 - type: Sprite sprite: Objects/Specific/Hydroponics/chilly.rsi - type: Item @@ -1543,15 +1500,13 @@ - type: FlavorProfile flavors: - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 ##I'm pretty sure this has to match the total of 100 potency yields - reagents: - - ReagentId: Aloe - Quantity: 10 - - ReagentId: Dermaline - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Aloe + Quantity: 10 + - ReagentId: Dermaline + Quantity: 10 - type: Sprite sprite: Objects/Specific/Hydroponics/aloe.rsi - type: Item @@ -1581,15 +1536,13 @@ - type: FlavorProfile flavors: - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 22 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Bicaridine - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Bicaridine + Quantity: 10 - type: Sprite sprite: Objects/Specific/Hydroponics/poppy.rsi - type: Produce @@ -1613,15 +1566,13 @@ - type: FlavorProfile flavors: - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 22 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Bicaridine - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Bicaridine + Quantity: 10 - type: Sprite sprite: Objects/Specific/Hydroponics/lily.rsi - type: Produce @@ -1638,7 +1589,7 @@ - type: entity name: lingzhi - parent: FoodProduceBase + parent: [SolutionSmall, FoodProduceBase] id: FoodLingzhi description: A potent medicinal mushroom. Don't go overboard. components: @@ -1646,15 +1597,13 @@ flavors: - mushroom - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Ultravasculine - Quantity: 20 - - ReagentId: Epinephrine - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Ultravasculine + Quantity: 20 + - ReagentId: Epinephrine + Quantity: 20 - type: Sprite sprite: Objects/Specific/Hydroponics/lingzhi.rsi - type: Item @@ -1681,19 +1630,17 @@ flavors: - leafy - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 14 - reagents: - - ReagentId: Bicaridine - Quantity: 5 - - ReagentId: Kelotane - Quantity: 5 - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 5 + - ReagentId: Kelotane + Quantity: 5 + - ReagentId: Nutriment + Quantity: 3 + - ReagentId: Vitamin + Quantity: 2 - type: Sprite sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi - type: Item @@ -1724,17 +1671,15 @@ flavors: - leafy - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Omnizine - Quantity: 3 - - ReagentId: SpaceDrugs - Quantity: 5 - - ReagentId: Nutriment - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Omnizine + Quantity: 3 + - ReagentId: SpaceDrugs + Quantity: 10 + - ReagentId: Nutriment + Quantity: 2 - type: Sprite sprite: Objects/Specific/Hydroponics/ambrosia_deus.rsi - type: Item @@ -1757,20 +1702,18 @@ - type: entity name: galaxythistle - parent: FoodProduceBase + parent: [SolutionSmall, FoodProduceBase] id: FoodGalaxythistle description: A medicinal plant used for its antitoxin. components: - type: FlavorProfile flavors: - medicine - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Stellibinin - Quantity: 25 + - type: Solution + solution: + reagents: + - ReagentId: Stellibinin + Quantity: 30 - type: Sprite sprite: Objects/Specific/Hydroponics/galaxythistle.rsi - type: Item @@ -1790,7 +1733,7 @@ - type: entity name: glasstle - parent: FoodProduceBase + parent: [SolutionSmall, FoodProduceBase] id: FoodGlasstle description: A fragile crystal plant with lot of spiky thorns. components: @@ -1801,15 +1744,13 @@ - type: FlavorProfile flavors: - sharp - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Razorium - Quantity: 15 - - ReagentId: Desoxyephedrine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Razorium + Quantity: 20 + - ReagentId: Desoxyephedrine + Quantity: 10 - type: Sprite sprite: Objects/Specific/Hydroponics/glasstle.rsi - type: Produce @@ -1868,15 +1809,13 @@ - type: FlavorProfile flavors: - mushroom - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Amatoxin - Quantity: 10 - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Amatoxin + Quantity: 10 + - ReagentId: Nutriment + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/fly_amanita.rsi - type: Item @@ -1903,15 +1842,15 @@ - type: FlavorProfile flavors: - gunpowder - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Sulfur - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Iron + Quantity: 5 + - ReagentId: Sulfur + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/gatfruit.rsi - type: Produce @@ -1940,15 +1879,15 @@ - type: FlavorProfile flavors: - plastic - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Sulfur - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Iron + Quantity: 5 + - ReagentId: Sulfur + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/capfruit.rsi - type: Item @@ -1996,12 +1935,11 @@ sprite: Objects/Specific/Hydroponics/rice.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Rice - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Rice + Quantity: 15 - type: Produce seedId: rice @@ -2013,20 +1951,20 @@ components: - type: Sprite sprite: Objects/Specific/Hydroponics/soybeans.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 4 - reagents: - - ReagentId: Nutriment - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 12 + - ReagentId: Nutriment + Quantity: 8 - type: Produce seedId: soybeans - type: Extractable juiceSolution: reagents: - ReagentId: MilkSoy - Quantity: 5 + Quantity: 15 - type: Tag tags: - Vegetable @@ -2048,15 +1986,15 @@ sprite: Objects/Specific/Hydroponics/spacemans_trumpet.rsi - type: Item heldPrefix: produce - - type: SolutionContainerManager - solutions: - food: - maxVol: 4 - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: PolypyryliumOligomers - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: Cellulose + Quantity: 10 + - ReagentId: PolypyryliumOligomers + Quantity: 3 - type: Produce seedId: spacemansTrumpet - type: Tag @@ -2077,15 +2015,15 @@ components: - type: Sprite sprite: Objects/Specific/Hydroponics/koibean.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: CarpoToxin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 12 + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: CarpoToxin + Quantity: 4 - type: Produce seedId: koibean - type: Extractable @@ -2108,22 +2046,24 @@ description: Round green object that you can slice and eat. components: - type: Item - size: Small + size: Normal heldPrefix: produce - type: FlavorProfile flavors: - watermelon - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Water - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: Vitamin + Quantity: 4 + - ReagentId: Sugar + Quantity: 4 + - ReagentId: JuiceWatermelon + Quantity: 8 + - ReagentId: Water + Quantity: 40 - type: Sprite sprite: Objects/Specific/Hydroponics/watermelon.rsi - type: Produce @@ -2132,7 +2072,7 @@ juiceSolution: reagents: - ReagentId: JuiceWatermelon - Quantity: 20 + Quantity: 40 - type: Damageable - type: Injurable damageContainer: Biological @@ -2155,7 +2095,7 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: SliceableFood - count: 5 + count: 4 slice: FoodWatermelonSlice - type: Butcherable butcheringType: Knife @@ -2167,7 +2107,7 @@ - type: entity name: watermelon slice - parent: ProduceSliceBase + parent: [SolutionTiny, ProduceSliceBase] id: FoodWatermelonSlice description: Juicy green and red slice. components: @@ -2178,22 +2118,24 @@ - watermelon - type: Sprite sprite: Objects/Specific/Hydroponics/watermelon.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Water - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 1 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: Sugar + Quantity: 1 + - ReagentId: JuiceWatermelon + Quantity: 2 + - ReagentId: Water + Quantity: 10 - type: Extractable juiceSolution: reagents: - ReagentId: JuiceWatermelon - Quantity: 4 + Quantity: 10 - type: Tag tags: - Fruit @@ -2211,23 +2153,23 @@ description: The water within this melon has been blessed by some deity that's particularly fond of watermelon. components: - type: Item - size: Small + size: Normal heldPrefix: produce - type: FlavorProfile flavors: - holy - watermelon - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Holywater - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: Vitamin + Quantity: 4 + - ReagentId: Sugar + Quantity: 4 + - ReagentId: Holywater + Quantity: 48 - type: Sprite sprite: Objects/Specific/Hydroponics/holymelon.rsi - type: Produce @@ -2259,7 +2201,7 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: SliceableFood - count: 5 + count: 4 slice: FoodHolymelonSlice - type: Butcherable butcheringType: Knife @@ -2271,7 +2213,7 @@ - type: entity name: holymelon slice - parent: ProduceSliceBase + parent: [SolutionTiny, ProduceSliceBase] id: FoodHolymelonSlice description: Juicy golden and red slice. components: @@ -2283,22 +2225,22 @@ - watermelon - type: Sprite sprite: Objects/Specific/Hydroponics/holymelon.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 1 - - ReagentId: Holywater - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 1 + - ReagentId: Vitamin + Quantity: 1 + - ReagentId: Sugar + Quantity: 1 + - ReagentId: Holywater + Quantity: 12 - type: Extractable juiceSolution: reagents: - ReagentId: Wine - Quantity: 4 + Quantity: 5 - type: Tag tags: - Fruit @@ -2318,15 +2260,15 @@ - type: FlavorProfile flavors: - grape - - type: SolutionContainerManager - solutions: - food: - maxVol: 9 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: JuiceGrape + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/grape.rsi - type: Item @@ -2351,15 +2293,15 @@ - type: FlavorProfile flavors: - berry - - type: SolutionContainerManager - solutions: - food: - maxVol: 11 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: JuiceBerry + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/berries.rsi - type: Item @@ -2395,15 +2337,13 @@ butcheringType: Knife spawned: - id: FoodBungoPit - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Enzyme - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Enzyme + Quantity: 10 - type: Sprite sprite: Objects/Specific/Hydroponics/bungo.rsi - type: Produce @@ -2433,15 +2373,14 @@ tags: - Recyclable - Trash - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Bungotoxin - Quantity: 5 + - type: Solution + solution: + maxVol: 7.5 + reagents: + - ReagentId: Nutriment + Quantity: 2 + - ReagentId: Bungotoxin + Quantity: 5 - type: Extractable grindableSolutionName: food - type: Seed @@ -2458,15 +2397,13 @@ - type: FlavorProfile flavors: - peas - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/pea.rsi - type: Item @@ -2490,17 +2427,15 @@ - type: FlavorProfile flavors: - numbingtranquility - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Happiness - Quantity: 3 - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Pax - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Happiness + Quantity: 5 + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Pax + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/world_pea.rsi - type: Item @@ -2522,20 +2457,20 @@ description: A large, orange... berry. Seriously. components: - type: Item - size: Small + size: Normal heldPrefix: produce - type: FlavorProfile flavors: - pumpkin - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: PumpkinFlesh - Quantity: 20 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: PumpkinFlesh # Mostly empty space + Quantity: 20 + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/pumpkin.rsi - type: Produce @@ -2578,17 +2513,19 @@ - type: FlavorProfile flavors: - bluepumpkin - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Ammonia - Quantity: 10 - - ReagentId: Chlorine - Quantity: 5 - - ReagentId: Vitamin - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: PumpkinFlesh # Mostly empty space + Quantity: 20 + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Ammonia + Quantity: 10 + - ReagentId: Chlorine + Quantity: 10 + - ReagentId: Vitamin + Quantity: 10 - type: Extractable juiceSolution: reagents: @@ -2631,12 +2568,13 @@ - cotton - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Cellulose + Quantity: 10 - type: Log spawnedPrototype: MaterialCotton1 spawnCount: 2 @@ -2663,14 +2601,15 @@ - pyrotton - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Fiber - Quantity: 5 - - ReagentId: Phlogiston - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Phlogiston + Quantity: 5 + - ReagentId: Cellulose + Quantity: 5 - type: Log spawnedPrototype: MaterialPyrotton1 spawnCount: 2 @@ -2702,15 +2641,14 @@ butcheringType: Knife spawned: - id: TrashCherryPit - - type: SolutionContainerManager - solutions: - food: - maxVol: 8 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 3.5 + - ReagentId: Vitamin + Quantity: 3.5 - type: Sprite sprite: Objects/Specific/Hydroponics/cherry.rsi - type: Produce @@ -2744,13 +2682,12 @@ tags: - Recyclable - Trash - - type: SolutionContainerManager - solutions: - food: - maxVol: 1 - reagents: - - ReagentId: Toxin - Quantity: 1 + - type: Solution + solution: + maxVol: 1 + reagents: + - ReagentId: Toxin + Quantity: 1 - type: Extractable grindableSolutionName: food - type: Seed @@ -2759,10 +2696,10 @@ - type: BadFood - type: entity + parent: [SolutionNormal, FoodProduceBase] # Anomalously large + id: FoodAnomalyBerry name: anomaly berry description: A strange blue fruit. Something about it doesn't seem right. - parent: FoodProduceBase - id: FoodAnomalyBerry components: - type: FlavorProfile flavors: @@ -2777,17 +2714,22 @@ - type: Edible trash: - EffectAnomalyFloraBulb # Random loot - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Artifexium - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Vitamin + Quantity: 20 + - ReagentId: JuiceBerry + Quantity: 20 + - ReagentId: Artifexium + Quantity: 1 + - type: Extractable + juiceSolution: + reagents: + - ReagentId: JuiceBerry + Quantity: 30 - type: Tag tags: - Fruit @@ -2799,7 +2741,7 @@ - type: entity name: bloonion bulb description: A strange floating bulb.. Nothing worth crying over. - parent: BaseStructureDynamic + parent: [SolutionCryo, BaseStructureDynamic, ProduceBase] id: FoodBloonion components: - type: Appearance @@ -2809,7 +2751,6 @@ sprite: Objects/Specific/Hydroponics/bloonion.rsi state: produce - type: Item - size: Small sprite: Objects/Specific/Hydroponics/bloonion.rsi heldPrefix: produce - type: Produce @@ -2822,22 +2763,19 @@ flavors: - onion - strange - - type: SolutionContainerManager - solutions: - food: - maxVol: 7 - canReact: false - reagents: - - ReagentId: Potassium - Quantity: 1 - - ReagentId: Phosphorus - Quantity: 1 - - ReagentId: Sugar - Quantity: 1 - - ReagentId: Allicin - Quantity: 4 - - type: Extractable - grindableSolutionName: food + - type: Solution + solution: + reagents: + - ReagentId: Potassium + Quantity: 1 + - ReagentId: Phosphorus + Quantity: 1 + - ReagentId: Sugar + Quantity: 3 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Allicin + Quantity: 5 - type: ExplodeOnTrigger - type: Explosive explosionType: Default diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml index f49e3a1256..3f0245a985 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml @@ -56,11 +56,8 @@ - type: Edible trash: - FoodKebabSkewer - - type: SolutionContainerManager - solutions: - food: - canReact: false # Dont want cause reactions inside skewers after merging ingredients - maxVol: 0 + - type: Solution + id: food # I'm not having this inherit from basefood because this shouldn't be edible, nor have a solution until you attach an entity to it. - type: FoodSequenceStartPoint key: Skewer maxLayers: 4 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml index 27cc06023c..a59d7961aa 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml @@ -2,7 +2,7 @@ # Base - type: entity - parent: FoodBase + parent: [SolutionTiny, FoodBaseTrash] id: FoodSnackBase abstract: true components: @@ -11,13 +11,11 @@ - FoodSnack - type: Sprite sprite: Objects/Consumable/Food/snacks.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 # Room for extra condiments - reagents: - - ReagentId: Nutriment - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 - type: Item sprite: Objects/Consumable/Food/snacks.rsi heldPrefix: packet @@ -139,17 +137,15 @@ tags: - FoodSnack - ReptilianFood - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Theobromine - Quantity: 3 - - ReagentId: CocoaPowder - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Theobromine + Quantity: 3 + - ReagentId: CocoaPowder + Quantity: 2 - type: entity parent: FoodSnackBase @@ -314,15 +310,13 @@ solution: food - type: InjectableSolution solution: food - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 #big cup - reagents: - - ReagentId: DryRamen - Quantity: 30 - - ReagentId: Soysauce - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: DryRamen + Quantity: 20 + - ReagentId: Soysauce + Quantity: 5 - type: Sprite state: ramen - type: Edible @@ -338,15 +332,13 @@ name: hell ramen description: Super spicy flavor! components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: DryRamen - Quantity: 30 - - ReagentId: CapsaicinOil - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: DryRamen + Quantity: 20 + - ReagentId: CapsaicinOil + Quantity: 5 - type: entity parent: FoodSnackBase @@ -364,15 +356,13 @@ - type: Item heldPrefix: chinese1 storedOffset: 1,-2 - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 # Room for extra condiments - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Soysauce - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Soysauce + Quantity: 2 - type: Edible trash: - FoodPacketChowMeinTrash @@ -393,17 +383,15 @@ - type: Item heldPrefix: chinese2 storedOffset: 0,-2 - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 # Room for extra condiments - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: CapsaicinOil - Quantity: 2 - - ReagentId: Soysauce - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: CapsaicinOil + Quantity: 2 + - ReagentId: Soysauce + Quantity: 2 - type: Edible trash: - FoodPacketDanDanTrash @@ -419,13 +407,12 @@ - fortunecookie - type: Sprite state: cookie_fortune - - type: SolutionContainerManager - solutions: - food: - maxVol: 1 - reagents: - - ReagentId: Nutriment - Quantity: 1 + - type: Solution + solution: + maxVol: 2.5 + reagents: + - ReagentId: Nutriment + Quantity: 1 - type: Item sprite: Objects/Consumable/Food/snacks.rsi heldPrefix: cookie_fortune @@ -476,13 +463,6 @@ - ReptilianFood - type: Sprite state: nutribrick-open - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 20 - type: entity parent: BaseItem @@ -508,7 +488,7 @@ path: /Audio/Effects/unwrap.ogg - type: entity - parent: FoodSnackBase + parent: [SolutionVeryTiny, FoodSnackBase] id: FoodSnackMREBrownieOpen name: brownie suffix: MRE @@ -522,15 +502,13 @@ - type: Item heldPrefix: mre-brownie-open storedOffset: -1,-1 - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Theobromine - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Theobromine + Quantity: 1 - type: entity parent: FoodSnackBase @@ -551,13 +529,11 @@ tags: - FoodSnack - ReptilianFood - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 # Room for extra condiments - reagents: - - ReagentId: Sugar - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 15 - type: FlavorProfile flavors: - sweet @@ -573,7 +549,7 @@ - type: entity categories: [ HideSpawnMenu ] - parent: BaseItem + parent: [SolutionFood, SolutionVeryTiny, BaseItem] id: FoodPacketTrash description: This is rubbish. abstract: true @@ -592,13 +568,12 @@ - type: SpaceGarbage - type: StaticPrice price: 0 - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: ToxinTrash - Quantity: 5 + - type: Solution + solution: + maxVol: 7.5 + reagents: + - ReagentId: ToxinTrash + Quantity: 7.5 - type: Edible requiresSpecialDigestion: true @@ -861,13 +836,11 @@ components: - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Fiber - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 10 - type: Tag tags: - ClothMade diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml index 0adee3d271..1a693d352e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -1,8 +1,9 @@ # When adding new food also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\food_meal.yml +# This is actually soups AND salads. Wild. - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionSmall, FoodInjectableBase] id: FoodBowlBase components: - type: Item @@ -13,13 +14,11 @@ trash: - FoodBowlBig utensil: Spoon - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 - type: Sprite sprite: Objects/Consumable/Food/bowl.rsi - type: DamageOnLand @@ -83,15 +82,15 @@ - state: bowl - state: alpha-filling color: green - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: Water + Quantity: 15 # Salad @@ -108,17 +107,15 @@ layers: - state: bowl - state: aesir - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 6 - - ReagentId: Omnizine - Quantity: 8 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: Omnizine + Quantity: 8 - type: Tag tags: - Soup @@ -138,19 +135,17 @@ layers: - state: bowl - state: herb - - type: SolutionContainerManager - solutions: - food: - maxVol: 70 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Kelotane - Quantity: 12 - - ReagentId: Bicaridine - Quantity: 12 - - ReagentId: Vitamin - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 19 + - ReagentId: Vitamin + Quantity: 11 + - ReagentId: Bicaridine + Quantity: 15 + - ReagentId: Kelotane + Quantity: 15 - type: Tag tags: - Fruit @@ -172,17 +167,19 @@ layers: - state: bowl - state: valid - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 25 - - ReagentId: DoctorsDelight - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 26 + - ReagentId: Vitamin + Quantity: 9 + - ReagentId: Bicaridine + Quantity: 10 + - ReagentId: Kelotane + Quantity: 10 + - ReagentId: Protein + Quantity: 5 - type: Tag tags: - Meat @@ -204,17 +201,17 @@ layers: - state: bowl - state: coleslaw - - type: SolutionContainerManager - solutions: - food: - maxVol: 45 - reagents: - - ReagentId: Nutriment - Quantity: 20 - - ReagentId: Vitamin - Quantity: 10 - - ReagentId: Allicin - Quantity: 8 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Vitamin + Quantity: 20 + - ReagentId: Allicin + Quantity: 10 + - ReagentId: Water + Quantity: 10 - type: entity name: caesar salad @@ -232,15 +229,17 @@ layers: - state: bowl - state: caesar - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 31 + - ReagentId: Vitamin + Quantity: 6 + - ReagentId: Water + Quantity: 5 + - ReagentId: Allicin + Quantity: 1 - type: entity name: kimchi salad @@ -257,17 +256,21 @@ layers: - state: bowl - state: kimchi - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: Allicin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 16 + - ReagentId: Vitamin + Quantity: 21 + - ReagentId: Water + Quantity: 10 + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Oculine + Quantity: 3 + - ReagentId: Allicin + Quantity: 4 - type: entity name: fruit salad @@ -282,15 +285,23 @@ layers: - state: bowl - state: fruit - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Sugar - Quantity: 10 - - ReagentId: Vitamin - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 16 + - ReagentId: Vitamin + Quantity: 16 + - ReagentId: JuiceOrange + Quantity: 5 + - ReagentId: JuiceApple + Quantity: 5 + - ReagentId: JuiceGrape + Quantity: 5 + - ReagentId: Sugar + Quantity: 1 + - ReagentId: JuiceWatermelon + Quantity: 12 - type: Tag tags: - Fruit @@ -310,15 +321,23 @@ layers: - state: bowl - state: fruit - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Sugar - Quantity: 8 - - ReagentId: Vitamin - Quantity: 17 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 19 + - ReagentId: Vitamin + Quantity: 13 + - ReagentId: JuiceBanana + Quantity: 5 + - ReagentId: JuiceApple + Quantity: 5 + - ReagentId: JuiceGrape + Quantity: 5 + - ReagentId: Sugar + Quantity: 1 + - ReagentId: JuiceWatermelon + Quantity: 12 - type: Tag tags: - Fruit @@ -338,15 +357,19 @@ layers: - state: bowl - state: citrusdelight - - type: SolutionContainerManager - solutions: - food: - maxVol: 38 - reagents: - - ReagentId: Nutriment - Quantity: 18 - - ReagentId: Vitamin - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: JuiceOrange + Quantity: 5 + - ReagentId: JuiceLemon + Quantity: 5 + - ReagentId: JuiceLime + Quantity: 5 - type: Tag tags: - Fruit @@ -366,17 +389,15 @@ layers: - state: bowl - state: eden - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Omnizine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: Omnizine + Quantity: 5 # Rice @@ -408,17 +429,19 @@ layers: - state: bowl - state: rice-egg - - type: SolutionContainerManager - solutions: - food: - maxVol: 35 - reagents: - - ReagentId: Nutriment - Quantity: 25 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Protein - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: EggCooked + Quantity: 6 + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Vitamin + Quantity: 7 + - ReagentId: Oculine + Quantity: 3 - type: Tag tags: - Meat @@ -438,19 +461,17 @@ layers: - state: bowl - state: rice-pork - - type: SolutionContainerManager - solutions: - food: - maxVol: 40.5 - reagents: - - ReagentId: Nutriment - Quantity: 18 - - ReagentId: Vitamin - Quantity: 7 - - ReagentId: Dexalin ##This is probably a reference to something but I don't get it - Quantity: 6.5 - - ReagentId: Epinephrine - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 42 + - ReagentId: Protein + Quantity: 6 + - ReagentId: Dexalin #This is probably a reference to something but I don't get it. Same. + Quantity: 6.5 + - ReagentId: Epinephrine + Quantity: 2 - type: Tag tags: - Meat @@ -470,19 +491,19 @@ layers: - state: bowl - state: rice-pudding - - type: SolutionContainerManager - solutions: - food: - maxVol: 25 - reagents: - - ReagentId: Nutriment - Quantity: 9 - - ReagentId: Vitamin - Quantity: 3 - - ReagentId: Milk ##This is probably a reference to something but I don't get it - Quantity: 5 - - ReagentId: Sugar - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Protein + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Milk + Quantity: 5 + - ReagentId: Sugar + Quantity: 5 - type: entity name: black-eyed gumbo @@ -500,17 +521,17 @@ layers: - state: bowl - state: gumbo - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: CapsaicinOil - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 40 + - ReagentId: Protein + Quantity: 4 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: CapsaicinOil + Quantity: 10 - type: Tag tags: - Meat @@ -532,17 +553,6 @@ layers: - state: bowl - state: oatmeal - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 7 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Milk - Quantity: 10 - type: entity name: space liberty duff @@ -575,15 +585,15 @@ - type: Sprite sprite: Objects/Consumable/Food/meals.rsi state: amanita-jelly - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Amatoxin - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Amatoxin + Quantity: 30 + - ReagentId: Nutriment + Quantity: 15 + - ReagentId: Vodka + Quantity: 5 # Soup @@ -600,17 +610,21 @@ layers: - state: bowl - state: meatball - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 17 - - ReagentId: Water - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Protein + Quantity: 5 + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Vitamin + Quantity: 12 + - ReagentId: Oculine + Quantity: 3 + - ReagentId: Water + Quantity: 10 - type: Tag tags: - Meat @@ -629,17 +643,6 @@ layers: - state: bowl - state: slime - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 1 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: Water - Quantity: 10 - type: entity name: tomato soup @@ -655,17 +658,13 @@ layers: - state: bowl - state: tomato - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Iron - Quantity: 10 - - ReagentId: Blood - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 20 + - ReagentId: Vitamin + Quantity: 10 - type: Tag tags: - Fruit @@ -685,17 +684,15 @@ layers: - state: bowl - state: wingfangchu - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Protein - Quantity: 15 - - ReagentId: Soysauce - Quantity: 10 - - ReagentId: Vitamin - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Soysauce + Quantity: 10 - type: entity name: clown's tears @@ -710,19 +707,21 @@ layers: - state: bowl - state: clowntears - - type: SolutionContainerManager - solutions: - food: - maxVol: 55 - reagents: - - ReagentId: Nutriment - Quantity: 2 - - ReagentId: Vitamin - Quantity: 9 - - ReagentId: Water - Quantity: 10 - - ReagentId: Razorium - Quantity: 1 # silly + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12 + - ReagentId: Vitamin + Quantity: 4 + - ReagentId: JuiceBanana + Quantity: 5 + - ReagentId: Honk + Quantity: 4 + - ReagentId: Silicon + Quantity: 5 + - ReagentId: Razorium + Quantity: 1 # silly - type: entity name: vegetable soup @@ -738,19 +737,17 @@ layers: - state: bowl - state: vegetable - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: Water - Quantity: 10 - - ReagentId: Oculine - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: Vitamin + Quantity: 17 + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Oculine + Quantity: 3 - type: entity name: nettle soup @@ -765,21 +762,19 @@ layers: - state: bowl - state: nettle - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: Water - Quantity: 10 - - ReagentId: Omnizine - Quantity: 5 - - ReagentId: Histamine - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 12 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Omnizine + Quantity: 3 + - ReagentId: SpaceDrugs + Quantity: 10 + - ReagentId: Histamine + Quantity: 3 - type: entity name: mystery soup @@ -808,19 +803,21 @@ layers: - state: bowl - state: chili-hot - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: CapsaicinOil - Quantity: 5 - - ReagentId: Vitamin - Quantity: 20 - - ReagentId: Allicin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 7 + - ReagentId: Protein + Quantity: 2 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Water + Quantity: 4 - type: Tag tags: - ChiliBowl @@ -840,22 +837,28 @@ layers: - state: bowl - state: chili-cold - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 8 - - ReagentId: Vitamin - Quantity: 25 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: FrostOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 7 + - ReagentId: Protein + Quantity: 2 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Water + Quantity: 4 - type: Tag tags: - ChiliBowl - type: entity name: chili con carnival - parent: FoodBowlBase + parent: FoodSoupChiliHot id: FoodSoupChiliClown description: A delicious stew of meat, chilies, and salty, salty clown tears. components: @@ -869,19 +872,6 @@ layers: - state: bowl - state: chili-clown - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 12 - - ReagentId: CapsaicinOil - Quantity: 5 - - ReagentId: Vitamin - Quantity: 20 - - ReagentId: Allicin - Quantity: 3 - type: Tag tags: - ChiliBowl @@ -900,19 +890,21 @@ layers: - state: bowl - state: monkeydelight - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 5 - - ReagentId: TableSalt - Quantity: 1 - - ReagentId: Blackpepper - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: JuiceBanana + Quantity: 5 + - ReagentId: TableSalt + Quantity: 1 + - ReagentId: Blackpepper + Quantity: 1 - type: Tag tags: - Meat @@ -931,17 +923,15 @@ layers: - state: bowl - state: tomato - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 20 - - ReagentId: Water - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: Vitamin + Quantity: 6 + - ReagentId: Water + Quantity: 10 - type: Tag tags: - Fruit @@ -961,15 +951,17 @@ layers: - state: bowl - state: eyeball - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 10 # Eyes are yummy - - ReagentId: Vitamin - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 # Eyes are yummy + - ReagentId: Vitamin + Quantity: 12 + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Oculine + Quantity: 8 - type: Tag tags: - Meat @@ -992,17 +984,6 @@ - state: bowl2 - state: miso #rip milo - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 9 - - ReagentId: Vitamin - Quantity: 3 - - ReagentId: Water - Quantity: 10 - type: Tag tags: - Meat @@ -1021,19 +1002,15 @@ layers: - state: bowl - state: mushroom - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 20 - - ReagentId: Water - Quantity: 5 - - ReagentId: Milk - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 24 + - ReagentId: Vitamin + Quantity: 16 + - ReagentId: Milk + Quantity: 5 - type: entity name: beet soup @@ -1045,17 +1022,6 @@ layers: - state: bowl - state: beet - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 7 - - ReagentId: Water - Quantity: 10 # Tastes like borsch, bortsch, borstch, borsh, borshch, borscht. - type: entity @@ -1068,15 +1034,6 @@ layers: - state: bowl - state: redbeet - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 15 # Tastes like beet. - type: entity @@ -1094,17 +1051,19 @@ layers: - state: bowl - state: stew - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Protein - Quantity: 20 - - ReagentId: Vitamin - Quantity: 15 + - type: Solution + solution: + reagents: # This loses a lot of reagents because it takes so many ingredients, if you're refactoring cooking, redo these numbers. + - ReagentId: Nutriment + Quantity: 30 + - ReagentId: Protein + Quantity: 6 + - ReagentId: Vitamin + Quantity: 15 + - ReagentId: JuiceCarrot + Quantity: 5 + - ReagentId: Oculine + Quantity: 3 - type: Tag tags: - Meat @@ -1124,15 +1083,6 @@ layers: - state: bowl - state: sweetpotato - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 15 # Tastes like sweet potato. - type: entity @@ -1148,17 +1098,15 @@ layers: - state: bowl - state: onion - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 25 - - ReagentId: Allicin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Allicin + Quantity: 5 - type: entity name: bisque @@ -1173,19 +1121,17 @@ layers: - state: bowl - state: bisque - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: Protein - Quantity: 5 - - ReagentId: Water - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 29 + - ReagentId: Vitamin + Quantity: 11 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Water + Quantity: 5 # Tastes like crab. - type: entity @@ -1207,15 +1153,13 @@ layers: - state: bowl - state: electron - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Licoxide - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 25 + - ReagentId: Licoxide + Quantity: 10 - type: entity name: bungo curry @@ -1230,17 +1174,15 @@ layers: - state: bowl - state: bungo - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: CapsaicinOil - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: CapsaicinOil + Quantity: 10 - type: Tag tags: - Fruit @@ -1261,17 +1203,19 @@ layers: - state: bowl - state: escargot - - type: SolutionContainerManager - solutions: - food: - maxVol: 40 - reagents: - - ReagentId: Nutriment - Quantity: 15 - - ReagentId: Vitamin - Quantity: 15 - - ReagentId: Allicin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 27 + - ReagentId: Protein + Quantity: 10 + - ReagentId: Butter + Quantity: 5 + - ReagentId: Vitamin + Quantity: 5 + - ReagentId: Allicin + Quantity: 5 - type: Tag tags: - Meat diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml index ff647216c0..c0fd9a3510 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml @@ -1,7 +1,7 @@ # When adding new food also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\food_single.yml - type: entity - parent: FoodMealBase + parent: [SolutionSmall, FoodMealBase] id: FoodTacoShell name: taco shell description: A taco shell, easy to hold, but falls on its side when put down. @@ -16,14 +16,12 @@ - state: tacoshell_back - map: ["foodSequenceLayers"] - state: tacoshell_forward - - type: SolutionContainerManager - solutions: - food: - canReact: false # Dont want cause reactions inside tacos after merging ingredients - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 6.66 + - type: Solution + solution: + canReact: false # Dont want cause reactions inside tacos after merging ingredients, TODO KILL + reagents: + - ReagentId: Nutriment + Quantity: 10 - type: FoodSequenceStartPoint key: Taco maxLayers: 3 @@ -39,7 +37,7 @@ - type: entity abstract: true - parent: FoodInjectableBase + parent: [SolutionSmall, FoodInjectableBase] id: FoodTacoBase components: - type: FlavorProfile @@ -50,15 +48,13 @@ transferAmount: 3 - type: Sprite sprite: Objects/Consumable/Food/taco.rsi - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 4 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 29 + - ReagentId: Protein + Quantity: 2 - type: Item sprite: Objects/Consumable/Food/taco.rsi shape: @@ -98,15 +94,17 @@ - fishy - type: Sprite state: fishtaco - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 42 + - ReagentId: Protein + Quantity: 2 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Vitamin + Quantity: 9 - type: entity name: rat taco @@ -116,15 +114,6 @@ components: - type: Sprite state: rattaco - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 6 - - ReagentId: Vitamin - Quantity: 4 - type: entity name: beef taco supreme @@ -134,15 +123,17 @@ components: - type: Sprite state: beeftacosupreme - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 22 - - ReagentId: Vitamin - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 42 + - ReagentId: Protein + Quantity: 2 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Vitamin + Quantity: 9 - type: entity name: chicken taco supreme @@ -152,15 +143,17 @@ components: - type: Sprite state: chickentacosupreme - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 22 - - ReagentId: Vitamin - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 42 + - ReagentId: Protein + Quantity: 2 + - ReagentId: Allicin + Quantity: 1 + - ReagentId: Vitamin + Quantity: 9 - type: entity parent: FoodTacoBase @@ -176,19 +169,19 @@ - spicy - type: Sprite state: dragontaco - - type: SolutionContainerManager - solutions: - food: - maxVol: 32 - reagents: - - ReagentId: Nutriment - Quantity: 14 - - ReagentId: Vitamin - Quantity: 4 - - ReagentId: Ichor - Quantity: 4 - - ReagentId: CapsaicinOil - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 18 + - ReagentId: Protein + Quantity: 6 + - ReagentId: Ichor + Quantity: 2 + - ReagentId: CapsaicinOil + Quantity: 10 + - ReagentId: Vitamin + Quantity: 3 - type: entity name: soft taco @@ -204,15 +197,6 @@ - onion - type: Sprite state: softtaco - - type: SolutionContainerManager - solutions: - food: - maxVol: 30 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 18 - type: Tag tags: - Meat diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cigarette.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cigarette.yml index e9a54e6867..30f03b8703 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cigarette.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/cigarette.yml @@ -58,10 +58,6 @@ state: burnt-icon - type: Smokable state: Burnt - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 20 - type: Tag tags: - Cigarette @@ -74,387 +70,335 @@ parent: Cigarette name: cigarette components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Omnizine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Omnizine + Quantity: 20 - type: entity id: CigaretteOmnizine parent: SoakedCigarette name: Hot Dog Water Flavor Explosion components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Omnizine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Omnizine + Quantity: 10 - type: entity id: CigaretteIron parent: SoakedCigarette name: Rusty Orange Baja Blast components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Iron - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Iron + Quantity: 10 - type: entity id: CigaretteTricordrazine parent: SoakedCigarette name: Licorice Allsorts components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Tricordrazine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Tricordrazine + Quantity: 10 - type: entity id: CigaretteDylovene parent: SoakedCigarette name: Urinal Cake Dissolver components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Dylovene - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Dylovene + Quantity: 10 - type: entity id: CigaretteDermaline parent: SoakedCigarette name: Aloe Peanut Butter Medley components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Dermaline - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Dermaline + Quantity: 10 - type: entity id: CigaretteArithrazine parent: SoakedCigarette name: Roman Pipe Works components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Arithrazine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Arithrazine + Quantity: 10 - type: entity id: CigaretteNutriment parent: SoakedCigarette name: Grandma's Christmas Fruitcake components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Nutriment - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Nutriment + Quantity: 10 - type: entity id: CigaretteBicaridine parent: SoakedCigarette name: Wet Dog Enhanced Cigarette components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Bicaridine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Bicaridine + Quantity: 10 - type: entity id: CigaretteDexalin parent: SoakedCigarette name: Rocky Mountain Musk components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Dexalin - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Dexalin + Quantity: 10 - type: entity id: CigaretteSaline parent: SoakedCigarette name: North Atlantic Cruise components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Saline - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Saline + Quantity: 10 - type: entity id: CigaretteBbqSauce parent: SoakedCigarette name: Spicy Wood Aroma components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: BbqSauce - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: BbqSauce + Quantity: 10 - type: entity id: CigaretteFrezon parent: SoakedCigarette name: Atmospheric Adventure components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Frezon - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Frezon + Quantity: 10 - type: entity id: CigaretteCapsaicinOil parent: SoakedCigarette name: Chilly P components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: CapsaicinOil - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: CapsaicinOil + Quantity: 10 - type: entity id: CigaretteRadium parent: SoakedCigarette name: Ex Ray components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Radium - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Radium + Quantity: 10 - type: entity id: CigaretteHaloperidol parent: SoakedCigarette name: Warm Bovine Extract components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Haloperidol - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Haloperidol + Quantity: 10 - type: entity id: CigaretteLaughter parent: SoakedCigarette name: Clown Adjacency Bonus components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Laughter - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Laughter + Quantity: 10 - type: entity id: CigaretteLipolicide parent: SoakedCigarette name: 80's Workout Routine components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Lipolicide - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Lipolicide + Quantity: 10 - type: entity id: CigaretteSodiumPolyacrylate parent: SoakedCigarette name: Unhealthy Habits components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: SodiumPolyacrylate - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: SodiumPolyacrylate + Quantity: 10 - type: entity id: CigaretteMold parent: SoakedCigarette name: Beneath The Sink Experience components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Mold - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Mold + Quantity: 10 - type: entity id: CigaretteLicoxide parent: SoakedCigarette name: Wake Up Call components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Licoxide - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Licoxide + Quantity: 10 - type: entity id: CigaretteWeldingFuel parent: SoakedCigarette name: Plasma Sauce components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: WeldingFuel - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: WeldingFuel + Quantity: 10 - type: entity id: CigaretteRobustHarvest parent: SoakedCigarette name: Hippie Romance Novel components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: RobustHarvest - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: RobustHarvest + Quantity: 10 - type: entity id: CigarettePhlogiston parent: SoakedCigarette name: Dragon Dating Sim components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Phlogiston - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Phlogiston + Quantity: 10 - type: entity id: CigaretteBanana parent: SoakedCigarette name: Pun Pun's Tropical Getaway components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Potassium - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Potassium + Quantity: 10 - type: entity id: CigaretteBlackPepper parent: SoakedCigarette name: English Spice components: - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 40 - reagents: - - ReagentId: Nicotine - Quantity: 10 - - ReagentId: Blackpepper - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 + - ReagentId: Blackpepper + Quantity: 10 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml index 25d6865f20..d1515f611d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml @@ -21,13 +21,11 @@ - type: Construction graph: smokeableJoint node: joint - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 30 - reagents: - - ReagentId: THC - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: THC + Quantity: 20 - type: RandomMetadata nameSegments: [NamesRollie] @@ -41,23 +39,21 @@ - type: Construction graph: smokeableJointRainbow node: jointRainbow - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 20 - reagents: - - ReagentId: SpaceDrugs - Quantity: 4 - - ReagentId: Lipolicide - Quantity: 4 - - ReagentId: MindbreakerToxin - Quantity: 2.66 - - ReagentId: Happiness - Quantity: 2.66 -# - ReagentId: ColorfulReagent -# Quantity: 1.33 - - ReagentId: Psicodine - Quantity: 0.8 + - type: Solution + solution: + reagents: + - ReagentId: SpaceDrugs + Quantity: 10 + - ReagentId: Lipolicide + Quantity: 5 + - ReagentId: MindbreakerToxin + Quantity: 5 + - ReagentId: Happiness + Quantity: 5 + # - ReagentId: ColorfulReagent + # Quantity: 1.33 + - ReagentId: Psicodine + Quantity: 3.67 - type: entity id: Blunt @@ -82,13 +78,11 @@ - type: Construction graph: smokeableBlunt node: blunt - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 30 - reagents: - - ReagentId: THC - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: THC + Quantity: 20 - type: RandomMetadata nameSegments: [NamesRollie] @@ -102,20 +96,18 @@ - type: Construction graph: smokeableBluntRainbow node: bluntRainbow - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 20 - reagents: - - ReagentId: SpaceDrugs - Quantity: 4 - - ReagentId: Lipolicide - Quantity: 4 - - ReagentId: MindbreakerToxin - Quantity: 2.66 - - ReagentId: Happiness - Quantity: 2.66 -# - ReagentId: ColorfulReagent -# Quantity: 1.33 - - ReagentId: Psicodine - Quantity: 0.8 + - type: Solution + solution: + reagents: + - ReagentId: SpaceDrugs + Quantity: 10 + - ReagentId: Lipolicide + Quantity: 5 + - ReagentId: MindbreakerToxin + Quantity: 5 + - ReagentId: Happiness + Quantity: 5 + # - ReagentId: ColorfulReagent + # Quantity: 1.33 + - ReagentId: Psicodine + Quantity: 3.67 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/cigar.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/cigar.yml index a17bedd446..b2479f0765 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/cigar.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigars/cigar.yml @@ -29,10 +29,6 @@ state: burnt-icon - type: Smokable state: Burnt - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 20 - type: Tag tags: - Cigar @@ -64,7 +60,3 @@ state: burnt-icon - type: Smokable state: Burnt - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 20 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml index 39baa36b8b..e10996b39b 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml @@ -1,7 +1,7 @@ - type: entity description: "If you want to get cancer, might as well do it in style." id: BaseSmokable - parent: BaseItem + parent: [SolutionSmokable, SolutionTiny, BaseItem] abstract: true components: - type: Reactive @@ -33,13 +33,11 @@ - type: Tag tags: - Trash - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 20 - reagents: - - ReagentId: Nicotine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 - type: entity parent: BaseSmokable @@ -62,13 +60,9 @@ path: /Audio/Weapons/Guns/Empty/empty.ogg ejectSound: path: /Audio/Weapons/Guns/Empty/empty.ogg - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 30 - type: entity - parent: BaseItem + parent: [SolutionSmokable, SolutionTiny, BaseItem] id: BaseVape abstract: true components: @@ -76,10 +70,6 @@ damage: types: Heat: 2 - - type: SolutionContainerManager - solutions: - smokable: - maxVol: 10 - type: RefillableSolution solution: smokable - type: ExaminableSolution diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml index 3247728b5f..6efa7080c5 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml @@ -24,13 +24,14 @@ - type: Sprite sprite: Objects/Fun/Instruments/saxophone.rsi - type: Extractable - grindableSolutionName: sax - - type: SolutionContainerManager - solutions: - sax: - reagents: - - ReagentId: Saxoite - Quantity: 10 + grindableSolutionName: instrument + - type: Solution + id: instrument + solution: + maxVol: 20 # Based on material balance and not container balance so no size parent. + reagents: + - ReagentId: Brass + Quantity: 10 - type: entity parent: BaseWoodwindInstrument @@ -49,7 +50,7 @@ slots: - neck - type: ActivatableUI - inHandsOnly: false + inHandsOnly: false - type: entity parent: BaseWoodwindInstrument diff --git a/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml index 55994be348..b25c3cc993 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml @@ -4,7 +4,7 @@ - type: entity abstract: true - parent: [BaseItem, BaseStash] + parent: [SolutionFood, SolutionSmall, BaseItem, BaseStash] id: BasePlushie components: - type: EmitSoundOnUse @@ -39,13 +39,11 @@ requiresSpecialDigestion: true useSound: *BasePlushieSound delay: 2 - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 30 - type: Tag tags: - Payload @@ -70,7 +68,6 @@ entries: CottonBurger: ThronglerPlushie - - type: entity parent: BasePlushie id: PlushieGhost @@ -148,20 +145,14 @@ size: Normal sprite: Objects/Fun/Plushies/bee.rsi - type: Extractable - grindableSolutionName: bee - - type: SolutionContainerManager - solutions: - bee: - reagents: - - ReagentId: GroundBee - Quantity: 10 - food: - maxVol: 10 - reagents: - - ReagentId: GroundBee - Quantity: 5 - - ReagentId: Fiber - Quantity: 5 + grindableSolutionName: food + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 25 + - ReagentId: GroundBee + Quantity: 5 - type: Clothing quickEquip: false sprite: Objects/Fun/Plushies/bee.rsi @@ -357,20 +348,6 @@ transferAmount: 10 - type: MeleeWeapon soundHit: *PlushieLizardSound - - type: Extractable - juiceSolution: - reagents: - - ReagentId: JuiceThatMakesYouWeh - Quantity: 30 - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Fiber - Quantity: 10 - - ReagentId: JuiceThatMakesYouWeh - Quantity: 10 - type: Clothing quickEquip: false sprite: Objects/Fun/Plushies/lizard.rsi @@ -386,6 +363,18 @@ - Payload - ClothMade - PlushieLizard + - type: Extractable + juiceSolution: + reagents: + - ReagentId: JuiceThatMakesYouWeh + Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 20 + - ReagentId: JuiceThatMakesYouWeh + Quantity: 10 - type: entity parent: BasePlushie @@ -549,15 +538,13 @@ reagents: - ReagentId: JuiceThatMakesYouHew Quantity: 30 - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Fiber - Quantity: 10 - - ReagentId: JuiceThatMakesYouHew - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 20 + - ReagentId: JuiceThatMakesYouHew + Quantity: 10 - type: Clothing quickEquip: false sprite: Objects/Fun/Plushies/lizard.rsi @@ -568,10 +555,9 @@ entries: CottonBurger: InversedLizardPlushie - - type: entity parent: BasePlushie - id: PlushieDiona + id: PlushieDiona # TODO Better way of doing the flowering visuals. Probably make it an "AppearanceChangeEntityEffect" on reactive? name: diona plushie description: An adorable stuffed toy that resembles a diona. Love water and cuddles. Do not wet! components: @@ -599,13 +585,6 @@ soundHit: *PlushieDionaSound - type: Edible useSound: *PlushieDionaSound - - type: SolutionContainerManager - solutions: - food: - maxVol: 11 - reagents: - - ReagentId: Fiber - Quantity: 10 - type: RefillableSolution solution: food - type: SolutionContainerVisuals @@ -621,7 +600,7 @@ effects: - !type:AddReagentToSolution reagent: Water - solution: plushie + solution: food - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml index 7a67993df7..a585fae134 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml @@ -2,7 +2,7 @@ - type: entity abstract: true - parent: BaseItem + parent: [SolutionFood, SolutionVeryTiny, BaseItem] # Crayons are less pourous than most foods, so we just assume they have less capacity. id: CrayonInedible name: crayon description: A colourful crayon. A forbidden flavor. @@ -41,14 +41,13 @@ flavors: - chewy - bitter - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: MindbreakerToxin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: MindbreakerToxin + Quantity: 10 # special crayons diff --git a/Resources/Prototypes/Entities/Objects/Fun/darts.yml b/Resources/Prototypes/Entities/Objects/Fun/darts.yml index 9ecf62715e..6eebd41731 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/darts.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/darts.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [BaseItem, SolutionDart] id: Dart name: dart description: Light throwing dart for playing darts. Don't get in the eye! @@ -44,10 +44,6 @@ - type: Item size: Tiny sprite: Objects/Fun/Darts/dart_red.rsi - - type: SolutionContainerManager - solutions: - melee: - maxVol: 2 - type: MeleeChemicalInjector solution: melee - type: RefillableSolution @@ -87,6 +83,16 @@ acts: [ "Destruction" ] - type: BalloonPopper +- type: entity + parent: Solution + id: SolutionDart + categories: [ HideSpawnMenu ] # Not abstract so weapons with multiple solutions can exist + components: + - type: Solution + id: melee + solution: + maxVol: 2 + - type: entity parent: Dart id: DartBlue @@ -119,10 +125,9 @@ id: HypoDart suffix: HypoDart components: - - type: SolutionContainerManager - solutions: - melee: - maxVol: 10 + - type: Solution + solution: + maxVol: 10 - type: SolutionInjectOnEmbed transferAmount: 10 blockSlots: NONE diff --git a/Resources/Prototypes/Entities/Objects/Fun/orbs.yml b/Resources/Prototypes/Entities/Objects/Fun/orbs.yml index 3f04c6b80b..f91dd8e031 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/orbs.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/orbs.yml @@ -134,13 +134,11 @@ - type: DeviceLinkSink ports: - Trigger - - type: SolutionContainerManager - solutions: - magic9ball: - maxVol: 20 - reagents: - - ReagentId: Ethanol - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Ethanol + Quantity: 30 - type: Damageable - type: Injurable damageContainer: Inorganic @@ -169,7 +167,7 @@ params: volume: -4 - !type:SpillBehavior - solution: magic9ball + solution: solution - !type:DoActsBehavior acts: [ "Destruction" ] - type: PhysicalComposition diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 112f9e8f58..ce3eaa20aa 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -65,7 +65,7 @@ - type: Dumpable - type: entity - parent: FoodProduceBase + parent: [SolutionSmall, FoodProduceBase] id: PlasticBanana name: banana suffix: Plastic @@ -77,18 +77,17 @@ flavors: - plastic - type: Edible - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nothing - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Nothing + Quantity: 30 - type: Tag tags: - Banana - type: entity - parent: DrinkBase + parent: [SolutionSmall, DrinkBase] id: CrazyGlue name: crazy glue description: A bottle of crazy glue manufactured by Honk! Co. @@ -110,13 +109,11 @@ consumptionUnit: 10 - type: Item sprite: Objects/Fun/glue.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: SpaceGlue - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SpaceGlue + Quantity: 60 - type: Openable sound: collection: packetOpenSounds @@ -124,7 +121,7 @@ solution: drink - type: entity - parent: DrinkBase + parent: [SolutionSmall, DrinkBase] id: CrazyLube name: crazy lube description: A bottle of super slipery crazy lube manufactured by Honk! Co. @@ -138,13 +135,11 @@ - state: icon map: ["enum.OpenableVisuals.Layer"] - type: Appearance - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: SpaceLube - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SpaceLube + Quantity: 60 - type: GenericVisualizer visuals: enum.OpenableVisuals.Opened: @@ -197,7 +192,7 @@ sprite: Objects/Fun/mrdips.rsi - type: entity - parent: BaseItem + parent: [ SolutionFood, SolutionSmall, BaseItem ] id: Error name: error description: Hmmmm. Something went wrong. @@ -206,13 +201,13 @@ sprite: error.rsi state: error - type: Edible - - type: SolutionContainerManager - solutions: - food: - maxVol: 26 - reagents: - - ReagentId: Nutriment - Quantity: 5 + - type: Solution + id: food + solution: + maxVol: 26 # I'm assuming these values are some kind of reference so I'm leaving them as is + reagents: + - ReagentId: Nutriment + Quantity: 5 - type: Slippery slipData: knockdownTime: 3 diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml index 5ae1f06089..0856fd0d83 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: BaseSheet id: SheetGlassBase name: glass description: A sheet of glass, used often on the station in various applications. @@ -9,19 +9,8 @@ sprite: Objects/Materials/Sheets/glass.rsi - type: Item sprite: Objects/Materials/Sheets/glass.rsi - size: Normal - - type: StaticPrice - price: 0 - - type: Tag - tags: - - Sheet - - ConstructionMaterial - - type: Material - type: Damageable damageModifierSet: Glass - - type: Injurable - damageContainer: Inorganic - - type: Appearance - type: Destructible thresholds: - trigger: @@ -46,10 +35,6 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - - type: SolutionContainerManager - solutions: - glass: - canReact: false - type: entity parent: SheetGlassBase @@ -79,14 +64,11 @@ - type: Construction graph: Glass node: SheetGlass - - type: Extractable - grindableSolutionName: glass - - type: SolutionContainerManager - solutions: - glass: - reagents: - - ReagentId: Silicon - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 10 - type: entity parent: SheetGlass @@ -164,6 +146,16 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Solution + solution: + maxVol: 15 + reagents: + - ReagentId: Silicon + Quantity: 10 + - ReagentId: Iron + Quantity: 4.5 + - ReagentId: Carbon + Quantity: 0.5 - type: entity parent: SheetRGlass @@ -176,19 +168,6 @@ - type: Stack stackType: ReinforcedGlass count: 1 - - type: Extractable - grindableSolutionName: rglass - - type: SolutionContainerManager - solutions: - rglass: - reagents: - - ReagentId: Silicon - Quantity: 10 - - ReagentId: Iron - Quantity: 4.5 - - ReagentId: Carbon - Quantity: 0.5 - canReact: false - type: entity parent: SheetGlassBase @@ -241,6 +220,14 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Solution + solution: + maxVol: 20 + reagents: + - ReagentId: Silicon + Quantity: 10 + - ReagentId: Plasma + Quantity: 10 - type: entity parent: SheetPGlass @@ -253,17 +240,6 @@ - type: Stack stackType: PlasmaGlass count: 1 - - type: Extractable - grindableSolutionName: pglass - - type: SolutionContainerManager - solutions: - pglass: - reagents: - - ReagentId: Silicon - Quantity: 10 - - ReagentId: Plasma - Quantity: 10 - canReact: false - type: entity parent: SheetPGlass @@ -292,21 +268,18 @@ - type: Construction graph: Glass node: SheetRPGlass - - type: Extractable - grindableSolutionName: rpglass - - type: SolutionContainerManager - solutions: - rpglass: - reagents: - - ReagentId: Silicon - Quantity: 10 - - ReagentId: Plasma - Quantity: 10 - - ReagentId: Iron - Quantity: 4.5 - - ReagentId: Carbon - Quantity: 0.5 - canReact: false + - type: Solution + solution: + maxVol: 25 + reagents: + - ReagentId: Silicon + Quantity: 10 + - ReagentId: Plasma + Quantity: 10 + - ReagentId: Iron + Quantity: 4.5 + - ReagentId: Carbon + Quantity: 0.5 - type: entity parent: SheetRPGlass @@ -371,17 +344,14 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - - type: Extractable - grindableSolutionName: uglass - - type: SolutionContainerManager - solutions: - uglass: - reagents: - - ReagentId: Silicon - Quantity: 10 - - ReagentId: Uranium - Quantity: 10 - canReact: false + - type: Solution + solution: + maxVol: 20 + reagents: + - ReagentId: Silicon + Quantity: 10 + - ReagentId: Uranium + Quantity: 10 - type: entity parent: SheetUGlass @@ -421,21 +391,18 @@ - type: Construction graph: Glass node: SheetRUGlass - - type: Extractable - grindableSolutionName: ruglass - - type: SolutionContainerManager - solutions: - ruglass: - reagents: - - ReagentId: Silicon - Quantity: 10 - - ReagentId: Uranium - Quantity: 10 - - ReagentId: Iron - Quantity: 4.5 - - ReagentId: Carbon - Quantity: 0.5 - canReact: false + - type: Solution + solution: + maxVol: 25 + reagents: + - ReagentId: Silicon + Quantity: 10 + - ReagentId: Uranium + Quantity: 10 + - ReagentId: Iron + Quantity: 4.5 + - ReagentId: Carbon + Quantity: 0.5 - type: entity parent: SheetRUGlass @@ -500,19 +467,16 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - - type: Extractable - grindableSolutionName: cglass - - type: SolutionContainerManager - solutions: - cglass: - reagents: - - ReagentId: Silicon - Quantity: 10 - - ReagentId: Zinc - Quantity: 3.3 - - ReagentId: Copper - Quantity: 6.7 - canReact: false + - type: Solution + solution: + maxVol: 20 + reagents: + - ReagentId: Silicon + Quantity: 10 + - ReagentId: Zinc + Quantity: 3.3 + - ReagentId: Copper + Quantity: 6.7 - type: entity parent: SheetClockworkGlass diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml index fad87e7f69..357fe7ddd3 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: BaseSheet id: SheetMetalBase description: A sheet of metal, used often on the station in various applications. components: @@ -8,9 +8,6 @@ sprite: Objects/Materials/Sheets/metal.rsi - type: Item sprite: Objects/Materials/Sheets/metal.rsi - size: Normal - - type: StaticPrice - price: 0 - type: Tag tags: - Sheet @@ -18,20 +15,6 @@ - ConstructionMaterial - type: Damageable damageModifierSet: Metallic - - type: Injurable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 100 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: SolutionContainerManager - solutions: - steel: - canReact: false - type: GuideHelp guides: - ExpandingRepairingStation @@ -60,17 +43,13 @@ map: ["base"] - type: Item heldPrefix: steel - - type: Appearance - - type: Extractable - grindableSolutionName: steel - - type: SolutionContainerManager - solutions: - steel: - reagents: - - ReagentId: Iron - Quantity: 9 - - ReagentId: Carbon - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 9 + - ReagentId: Carbon + Quantity: 1 - type: entity parent: SheetSteel @@ -103,7 +82,6 @@ description: A sheet of brass, primarily used by clockwork enthusiasts and the remnants of Ratvarian cults. suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Brass: 100 @@ -121,20 +99,16 @@ map: ["base"] - type: Item heldPrefix: brass - - type: Appearance - type: FloorTile outputs: - PlatingBrass - - type: Extractable - grindableSolutionName: brass - - type: SolutionContainerManager - solutions: - brass: - reagents: - - ReagentId: Zinc - Quantity: 3.3 - - ReagentId: Copper - Quantity: 6.7 + - type: Solution + solution: + reagents: + - ReagentId: Zinc + Quantity: 3.3 + - ReagentId: Copper + Quantity: 6.7 - type: entity parent: SheetBrass @@ -166,7 +140,6 @@ name: plasteel suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Plasteel: 100 @@ -184,20 +157,16 @@ map: ["base"] - type: Item heldPrefix: plasteel - - type: Appearance - - type: Extractable - grindableSolutionName: plasteel - - type: SolutionContainerManager - solutions: - plasteel: - reagents: - - ReagentId: Plasma - Quantity: 10 - - ReagentId: Iron - Quantity: 9 - - ReagentId: Carbon - Quantity: 1 - canReact: false + - type: Solution + solution: + maxVol: 20 + reagents: + - ReagentId: Plasma + Quantity: 10 + - ReagentId: Iron + Quantity: 9 + - ReagentId: Carbon + Quantity: 1 - type: entity parent: SheetPlasteel diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml index 280c1f71bf..387be2348c 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: BaseSheet id: SheetOtherBase description: A sheet of material, used often on the station in various applications. components: @@ -8,26 +8,6 @@ sprite: Objects/Materials/Sheets/other.rsi - type: Item sprite: Objects/Materials/Sheets/other.rsi - size: Normal - - type: Tag - tags: - - Sheet - - ConstructionMaterial - - type: Damageable - - type: Injurable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 100 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: SolutionContainerManager - solutions: - paper: - canReact: false - type: entity parent: SheetOtherBase @@ -42,7 +22,6 @@ - paper - paper_2 - paper_3 - - type: Material - type: PhysicalComposition materialComposition: Paper: 100 @@ -53,16 +32,11 @@ map: ["base"] - type: Item heldPrefix: paper - - type: Appearance - - type: Extractable - grindableSolutionName: paper - - type: SolutionContainerManager - solutions: - paper: - reagents: - - ReagentId: Cellulose - Quantity: 3 - + - type: Solution + solution: + reagents: + - ReagentId: Cellulose + Quantity: 5 - type: entity parent: SheetPaper @@ -81,7 +55,6 @@ name: plasma suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Plasma: 100 @@ -99,16 +72,11 @@ map: ["base"] - type: Item heldPrefix: plasma - - type: Appearance - - type: Extractable - grindableSolutionName: plasma - - type: SolutionContainerManager - solutions: - plasma: - reagents: - - ReagentId: Plasma - Quantity: 10 - canReact: false + - type: Solution + solution: + reagents: + - ReagentId: Plasma + Quantity: 10 - type: entity parent: SheetPlasma @@ -142,7 +110,6 @@ - Plastic - Sheet - ConstructionMaterial - - type: Material - type: PhysicalComposition materialComposition: Plastic: 100 @@ -160,18 +127,13 @@ map: ["base"] - type: Item heldPrefix: plastic - - type: Appearance - - type: Extractable - grindableSolutionName: plastic - - type: SolutionContainerManager - solutions: - plastic: - reagents: - - ReagentId: Oil - Quantity: 5 - - ReagentId: Phosphorus - Quantity: 5 - canReact: false + - type: Solution + solution: + reagents: + - ReagentId: Oil + Quantity: 5 + - ReagentId: Phosphorus + Quantity: 5 - type: entity parent: SheetPlastic @@ -196,14 +158,14 @@ count: 1 - type: entity - parent: [SheetOtherBase, EdibleBase] + parent: [SheetOtherBase, FoodBase] id: SheetUranium name: uranium suffix: Full components: - - type: Material - type: Edible transferAmount: 10 + solution: composite - type: BadFood - type: PhysicalComposition materialComposition: @@ -220,20 +182,15 @@ layers: - state: uranium_3 map: ["base"] - - type: Appearance - type: Item heldPrefix: uranium - - type: Extractable - grindableSolutionName: food - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Uranium - Quantity: 8 - - ReagentId: Radium - Quantity: 2 - canReact: false + - type: Solution + solution: + reagents: + - ReagentId: Uranium + Quantity: 8 + - ReagentId: Radium + Quantity: 2 - type: entity parent: SheetUranium @@ -272,17 +229,13 @@ - type: Item sprite: Objects/Materials/Sheets/meaterial.rsi heldPrefix: meat - - type: Extractable - grindableSolutionName: meatsheet - - type: SolutionContainerManager - solutions: - meatsheet: - reagents: - - ReagentId: Protein - Quantity: 7 - - ReagentId: Fat - Quantity: 3 - canReact: false + - type: Solution + solution: + reagents: + - ReagentId: Protein + Quantity: 7 + - ReagentId: Fat + Quantity: 3 - type: entity parent: MaterialSheetMeat diff --git a/Resources/Prototypes/Entities/Objects/Materials/base.yml b/Resources/Prototypes/Entities/Objects/Materials/base.yml new file mode 100644 index 0000000000..0d49a037b5 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Materials/base.yml @@ -0,0 +1,41 @@ +- type: entity + abstract: true + parent: [SolutionCryo, SolutionCompositeNormalStackable, BaseItem] + id: MaterialBase + description: A raw material. + components: + - type: Appearance + - type: Sprite + sprite: Objects/Materials/materials.rsi + - type: Item + sprite: Objects/Materials/materials.rsi + size: Normal + - type: Material + - type: Tag + tags: + - RawMaterial + - type: Damageable + - type: Injurable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Extractable + grindableSolutionName: composite + +- type: entity + abstract: true + parent: MaterialBase + id: BaseSheet + components: + - type: Tag + tags: + - Sheet + - ConstructionMaterial + - type: StaticPrice + price: 0 diff --git a/Resources/Prototypes/Entities/Objects/Materials/crystal_shard.yml b/Resources/Prototypes/Entities/Objects/Materials/crystal_shard.yml index 57fa544df1..b7057b7912 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/crystal_shard.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/crystal_shard.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: MaterialBase id: ShardCrystalBase name: crystal shard description: A small piece of crystal. @@ -28,16 +28,6 @@ Slash: 3.5 - type: Damageable damageModifierSet: Glass - - type: Injurable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 100 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: StaticPrice price: 50 diff --git a/Resources/Prototypes/Entities/Objects/Materials/ingots.yml b/Resources/Prototypes/Entities/Objects/Materials/ingots.yml index 77e39bfb9d..feb79ff44b 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/ingots.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/ingots.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: MaterialBase id: IngotBase description: A heavy metal ingot stamped with the Nanotrasen logo. components: @@ -8,9 +8,6 @@ sprite: Objects/Materials/ingots.rsi - type: Item sprite: Objects/Materials/ingots.rsi - size: Normal - - type: StaticPrice - price: 0 - type: Tag tags: - Ingot @@ -34,7 +31,6 @@ name: gold bar suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Gold: 100 @@ -52,15 +48,11 @@ map: ["base"] - type: Item heldPrefix: gold - - type: Appearance - - type: Extractable - grindableSolutionName: gold - - type: SolutionContainerManager - solutions: - gold: - reagents: - - ReagentId: Gold - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Gold + Quantity: 10 - type: entity parent: IngotGold @@ -79,7 +71,6 @@ name: silver bar suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Silver: 100 @@ -97,15 +88,11 @@ map: ["base"] - type: Item heldPrefix: silver - - type: Appearance - - type: Extractable - grindableSolutionName: gold - - type: SolutionContainerManager - solutions: - gold: - reagents: - - ReagentId: Silver - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Silver + Quantity: 10 - type: entity parent: IngotSilver diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index db66583163..6aea06edff 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -1,36 +1,9 @@ -- type: entity - abstract: true - parent: BaseItem - id: MaterialBase - description: A raw material. - components: - - type: Sprite - sprite: Objects/Materials/materials.rsi - - type: Item - sprite: Objects/Materials/materials.rsi - size: Normal - - type: Tag - tags: - - RawMaterial - - type: Damageable - - type: Injurable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 100 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: entity parent: MaterialBase id: MaterialCardboard name: cardboard suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Cardboard: 100 @@ -46,15 +19,11 @@ layers: - state: cardboard_3 map: ["base"] - - type: Appearance - - type: Extractable - grindableSolutionName: cardboard - - type: SolutionContainerManager - solutions: - cardboard: - reagents: - - ReagentId: Cellulose - Quantity: 6 + - type: Solution + solution: + reagents: + - ReagentId: Cellulose + Quantity: 10 - type: Item heldPrefix: cardboard - type: FloorTile @@ -86,7 +55,7 @@ count: 1 - type: entity - parent: MaterialBase + parent: [MaterialBase, FoodBase] id: MaterialCloth name: cloth suffix: Full @@ -120,11 +89,6 @@ - type: PhysicalComposition materialComposition: Cloth: 100 - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fiber - Quantity: 3 - type: Sprite state: cloth_3 layers: @@ -133,16 +97,15 @@ - type: Appearance - type: Edible requiresSpecialDigestion: true + solution: composite - type: FlavorProfile flavors: - fiber - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Fiber - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Fiber + Quantity: 10 - type: Tag tags: - ClothMade @@ -176,7 +139,7 @@ count: 1 - type: entity - parent: MaterialBase + parent: [MaterialBase, FoodBase] id: MaterialDurathread name: durathread suffix: Full @@ -188,7 +151,6 @@ - durathread - durathread_2 - durathread_3 - - type: Material - type: PhysicalComposition materialComposition: Durathread: 100 @@ -197,19 +159,22 @@ layers: - state: durathread_3 map: ["base"] - - type: Appearance - type: Construction graph: Durathread node: MaterialDurathread - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Fiber - Quantity: 5 + solution: composite + - type: Solution + solution: + maxVol: 20 + reagents: + - ReagentId: Fiber + Quantity: 10 + - ReagentId: Oil + Quantity: 5 + - ReagentId: Phosphorus + Quantity: 5 - type: Tag tags: - ClothMade @@ -234,7 +199,6 @@ name: wood suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Wood: 100 @@ -250,7 +214,6 @@ layers: - state: wood map: ["base"] - - type: Appearance - type: Item heldPrefix: wood - type: Tag @@ -258,14 +221,11 @@ - Wooden - RawMaterial - ConstructionMaterial - - type: Extractable - grindableSolutionName: wood - - type: SolutionContainerManager - solutions: - wood: - reagents: - - ReagentId: Cellulose - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Cellulose + Quantity: 10 - type: entity parent: MaterialWoodPlank @@ -289,7 +249,6 @@ name: biomass suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Biomass: 1 @@ -302,7 +261,7 @@ color: "#8A9A5B" - type: GuideHelp guides: - - Cloning + - Cloning # Should remove this, we don't have cloning and don't want cloning - type: entity parent: MaterialBiomass @@ -378,18 +337,14 @@ layers: - state: diamond map: ["base"] - - type: Appearance - type: Item heldPrefix: diamond - - type: Extractable - grindableSolutionName: diamond - - type: SolutionContainerManager - solutions: - diamond: - reagents: - - ReagentId: Carbon - Quantity: 20 - - type: Material + - type: Solution + solution: + maxVol: 30 + reagents: + - ReagentId: Carbon + Quantity: 30 - type: PhysicalComposition materialComposition: Diamond: 100 @@ -407,7 +362,7 @@ count: 1 - type: entity - parent: MaterialBase + parent: [SolutionCompositeSmallStackable, MaterialBase, FoodBase] id: MaterialCotton name: cotton suffix: Full @@ -427,34 +382,26 @@ - type: Appearance - type: Edible requiresSpecialDigestion: true + solution: composite - type: FlavorProfile flavors: - fiber - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Fiber - Quantity: 5 - - type: Extractable - juiceSolution: + - type: Solution + solution: reagents: - ReagentId: Fiber - Quantity: 3 + Quantity: 2.5 - type: Tag tags: - ClothMade - RawMaterial - Boll - - type: Material - type: PhysicalComposition materialComposition: Cotton: 100 - type: Item heldPrefix: cotton - - type: entity parent: MaterialCotton id: MaterialCotton1 @@ -466,7 +413,7 @@ count: 1 - type: entity - parent: MaterialBase + parent: [SolutionCompositeSmallStackable, MaterialBase, FoodBase] id: MaterialPyrotton name: pyrotton suffix: Full @@ -483,25 +430,16 @@ layers: - state: pyrotton_3 map: ["base"] - - type: Appearance - type: Edible requiresSpecialDigestion: true - - type: SolutionContainerManager - solutions: - food: - maxVol: 10 - reagents: - - ReagentId: Fiber - Quantity: 5 - - ReagentId: Phlogiston - Quantity: 5 - - type: Extractable - juiceSolution: + solution: composite + - type: Solution + solution: reagents: - ReagentId: Fiber - Quantity: 3 + Quantity: 2.5 - ReagentId: Phlogiston - Quantity: 3 + Quantity: 2.5 - type: Tag tags: - ClothMade @@ -520,12 +458,11 @@ count: 1 - type: entity - parent: MaterialBase + parent: [MaterialBase, FoodBase] id: MaterialBananium name: bananium suffix: Full components: - - type: Material - type: PhysicalComposition materialComposition: Bananium: 150 @@ -545,20 +482,19 @@ flavors: - banana - type: Edible + solution: composite trash: - TrashBananiumPeel - type: BadFood - - type: SolutionContainerManager - solutions: - food: - maxVol: 11 - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Honk - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 4 + - ReagentId: Vitamin + Quantity: 2 + - ReagentId: Honk + Quantity: 4 - type: Extractable juiceSolution: reagents: @@ -566,7 +502,6 @@ Quantity: 5 - ReagentId: Honk Quantity: 5 - - type: Appearance - type: Item heldPrefix: bananium @@ -581,7 +516,7 @@ count: 1 - type: entity - parent: MaterialBase + parent: [SolutionCompositeNormalStackable, MaterialBase, FoodBase] id: MaterialWebSilk name: silk description: A webby material. @@ -598,23 +533,17 @@ stackType: WebSilk - type: Edible requiresSpecialDigestion: true + solution: composite - type: FlavorProfile flavors: - cobwebs ignoreReagents: - Fiber - - type: Extractable - juiceSolution: + - type: Solution + solution: reagents: - ReagentId: Fiber - Quantity: 3 - - type: SolutionContainerManager - solutions: - food: - maxVol: 3 - reagents: - - ReagentId: Fiber - Quantity: 3 + Quantity: 10 - type: Tag tags: - ClothMade @@ -721,7 +650,7 @@ count: 1 - type: entity - parent: MaterialBase + parent: [MaterialBase, FoodBase] id: MaterialBones name: bones suffix: Full @@ -738,16 +667,16 @@ layers: - state: cotton_3 map: ["base"] - - type: Appearance - type: Edible + solution: composite - type: BadFood - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: Vitamin - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Vitamin + Quantity: 3 + - ReagentId: Carbon + Quantity: 7 - type: Item heldPrefix: bones diff --git a/Resources/Prototypes/Entities/Objects/Materials/ore.yml b/Resources/Prototypes/Entities/Objects/Materials/ore.yml index 708d175a51..44ecbb82f5 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/ore.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/ore.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: MaterialBase id: OreBase description: A piece of unrefined ore. components: @@ -8,7 +8,6 @@ sprite: Objects/Materials/ore.rsi - type: Item sprite: Objects/Materials/ore.rsi - size: Normal - type: Tag tags: - Ore @@ -24,6 +23,8 @@ restitution: 0.3 friction: 0.2 +# Ores have twice the reagents compared to their smelted forms + - type: entity parent: OreBase id: GoldOre @@ -34,18 +35,9 @@ stackType: GoldOre - type: Sprite state: gold - - type: Material - type: PhysicalComposition materialComposition: RawGold: 100 - - type: Extractable - grindableSolutionName: goldore - - type: SolutionContainerManager - solutions: - goldore: - reagents: - - ReagentId: Gold - Quantity: 10 - type: Item heldPrefix: gold - type: Tag @@ -71,18 +63,11 @@ stackType: DiamondOre - type: Sprite state: diamond - - type: Material - type: PhysicalComposition materialComposition: RawDiamond: 100 - type: Extractable grindableSolutionName: diamondore - - type: SolutionContainerManager - solutions: - diamondore: - reagents: - - ReagentId: Carbon - Quantity: 20 - type: Item heldPrefix: diamond @@ -104,18 +89,9 @@ stackType: SteelOre - type: Sprite state: iron - - type: Material - type: PhysicalComposition materialComposition: RawIron: 100 - - type: Extractable - grindableSolutionName: ironore - - type: SolutionContainerManager - solutions: - ironore: - reagents: - - ReagentId: Iron - Quantity: 10 - type: Item heldPrefix: iron @@ -137,7 +113,6 @@ stackType: PlasmaOre - type: Sprite state: plasma - - type: Material - type: PhysicalComposition materialComposition: RawPlasma: 100 @@ -146,14 +121,6 @@ energy: 0.6 castShadows: false color: "#e592e7" - - type: Extractable - grindableSolutionName: plasmaore - - type: SolutionContainerManager - solutions: - plasmaore: - reagents: - - ReagentId: Plasma - Quantity: 10 - type: Item heldPrefix: plasma - type: Tag @@ -179,18 +146,9 @@ stackType: SilverOre - type: Sprite state: silver - - type: Material - type: PhysicalComposition materialComposition: RawSilver: 100 - - type: Extractable - grindableSolutionName: silverore - - type: SolutionContainerManager - solutions: - silverore: - reagents: - - ReagentId: Silver - Quantity: 10 - type: Item heldPrefix: silver - type: Tag @@ -216,18 +174,9 @@ stackType: SpaceQuartz - type: Sprite state: spacequartz - - type: Material - type: PhysicalComposition materialComposition: RawQuartz: 100 - - type: Extractable - grindableSolutionName: quartzore - - type: SolutionContainerManager - solutions: - quartzaore: - reagents: - - ReagentId: Silicon - Quantity: 10 - type: Item heldPrefix: spacequartz @@ -249,7 +198,6 @@ stackType: UraniumOre - type: Sprite state: uranium - - type: Material - type: PhysicalComposition materialComposition: RawUranium: 100 @@ -258,17 +206,6 @@ energy: 0.8 castShadows: false color: "#9be792" - - type: Extractable - grindableSolutionName: uraniumore - - type: SolutionContainerManager - solutions: - uraniumore: - reagents: - - ReagentId: Uranium - Quantity: 8 - - ReagentId: Radium - Quantity: 2 - canReact: false - type: Item heldPrefix: uranium - type: Tag @@ -294,7 +231,6 @@ stackType: BananiumOre - type: Sprite state: bananium - - type: Material - type: PhysicalComposition materialComposition: RawBananium: 100 @@ -303,18 +239,6 @@ energy: 1 castShadows: false color: "#eef066" - - type: Extractable - grindableSolutionName: bananiumore - - type: SolutionContainerManager - solutions: - bananiumore: - reagents: - - ReagentId: Nutriment - Quantity: 4 - - ReagentId: Vitamin - Quantity: 2 - - ReagentId: Honk - Quantity: 5 - type: Item heldPrefix: bananium - type: Tag @@ -340,23 +264,19 @@ stackType: Coal - type: Sprite state: coal - - type: Material - - type: Extractable - grindableSolutionName: coal - - type: SolutionContainerManager - solutions: - coal: - reagents: - - ReagentId: Carbon - Quantity: 8.4 - - ReagentId: Ammonia - Quantity: 0.8 - - ReagentId: Hydrogen - Quantity: 0.5 - - ReagentId: Sulfur - Quantity: 0.2 - - ReagentId: Mercury - Quantity: 0.1 + - type: Solution + solution: + reagents: + - ReagentId: Carbon + Quantity: 8.4 + - ReagentId: Ammonia + Quantity: 0.8 + - ReagentId: Hydrogen + Quantity: 0.5 + - ReagentId: Sulfur + Quantity: 0.2 + - ReagentId: Mercury + Quantity: 0.1 - type: PhysicalComposition materialComposition: Coal: 100 @@ -405,20 +325,16 @@ stackType: SaltOre - type: Sprite state: salt - - type: Material - type: PhysicalComposition materialComposition: RawSalt: 100 - - type: Extractable - grindableSolutionName: saltore - - type: SolutionContainerManager - solutions: - saltore: - reagents: - - ReagentId: TableSalt - Quantity: 10 - - ReagentId: Iodine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: TableSalt + Quantity: 9.99 + - ReagentId: Iodine + Quantity: 0.01 - type: Item heldPrefix: salt @@ -429,4 +345,3 @@ components: - type: Stack count: 1 - diff --git a/Resources/Prototypes/Entities/Objects/Materials/parts.yml b/Resources/Prototypes/Entities/Objects/Materials/parts.yml index 3322531dd3..c65d497137 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/parts.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/parts.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: MaterialBase id: PartBase components: - type: Sprite @@ -10,16 +10,6 @@ sprite: Objects/Materials/parts.rsi - type: Damageable damageModifierSet: FlimsyMetallic - - type: Injurable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 100 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: Tag tags: - ConstructionMaterial @@ -48,12 +38,10 @@ - state: rods_5 map: ["base"] - type: Item - size: Normal heldPrefix: rods - type: Construction graph: MetalRod node: MetalRod - - type: Appearance - type: FloorTile outputs: - Lattice @@ -62,16 +50,13 @@ price: 0 - type: StackPrice price: 7.5 - - type: Extractable - grindableSolutionName: rod - - type: SolutionContainerManager - solutions: - rod: - reagents: - - ReagentId: Iron - Quantity: 4.5 - - ReagentId: Carbon - Quantity: 0.5 + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 4.5 + - ReagentId: Carbon + Quantity: 0.5 - type: GuideHelp guides: - ExpandingRepairingStation diff --git a/Resources/Prototypes/Entities/Objects/Materials/shards.yml b/Resources/Prototypes/Entities/Objects/Materials/shards.yml index d699cb1d2e..7b51fefe82 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/shards.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/shards.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: MaterialBase id: ShardBase description: It's a shard of some unknown material. components: @@ -101,14 +101,12 @@ tags: - GlassShard - Trash - - type: Extractable - grindableSolutionName: shardglass - - type: SolutionContainerManager - solutions: - shardglass: - reagents: - - ReagentId: Silicon - Quantity: 5 #Half of the value of regular glass. TECHNICALLY, welding a single shard of glass gives you the full thing back with just 1 sheet, but that is stupid so I am making it half. + - type: Solution + solution: + maxVol: 5 + reagents: + - ReagentId: Silicon + Quantity: 5 #Half of the value of regular glass. TECHNICALLY, welding a single shard of glass gives you the full thing back with just 1 sheet, but that is stupid so I am making it half. - type: Construction graph: ShivConstruct node: start @@ -137,14 +135,15 @@ tags: - ReinforcedGlassShard - Trash - - type: Extractable - grindableSolutionName: shardrglass - - type: SolutionContainerManager - solutions: - shardrglass: - reagents: - - ReagentId: Silicon - Quantity: 5 #I don't care enough to divide all of the reinforced glass materials by 2 because reinforced glass shards are due for removal anyways. + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 5 + - ReagentId: Iron + Quantity: 2.25 + - ReagentId: Carbon + Quantity: 0.25 - type: Construction graph: ReinforcedShivConstruct node: start @@ -173,16 +172,13 @@ tags: - PlasmaGlassShard - Trash - - type: Extractable - grindableSolutionName: shardpglass - - type: SolutionContainerManager - solutions: - shardpglass: - reagents: - - ReagentId: Silicon - Quantity: 5 - - ReagentId: Plasma - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 5 + - ReagentId: Plasma + Quantity: 5 - type: Construction graph: PlasmaShivConstruct node: start @@ -213,16 +209,13 @@ tags: - UraniumGlassShard - Trash - - type: Extractable - grindableSolutionName: sharduglass - - type: SolutionContainerManager - solutions: - sharduglass: - reagents: - - ReagentId: Silicon - Quantity: 5 - - ReagentId: Uranium - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 5 + - ReagentId: Uranium + Quantity: 5 - type: Construction graph: UraniumShivConstruct node: start @@ -243,15 +236,12 @@ damage: types: Piercing: 5 - - type: Extractable - grindableSolutionName: shardcglass - - type: SolutionContainerManager - solutions: - shardcglass: - reagents: - - ReagentId: Silicon - Quantity: 5 - - ReagentId: Zinc - Quantity: 1.65 - - ReagentId: Copper - Quantity: 3.35 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 5 + - ReagentId: Zinc + Quantity: 1.65 + - ReagentId: Copper + Quantity: 3.35 diff --git a/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml b/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml index 4ddfabd793..363ad4d95f 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml @@ -1,6 +1,6 @@ - type: entity name: lamp - parent: BaseItem + parent: [SolutionToolWelderIndsutrial, BaseItem] id: ArabianLamp description: Why the heck won't this piece of junk open!? components: @@ -91,13 +91,6 @@ right: - state: inhand-right-flame shader: unshaded - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 25 - maxVol: 25 - type: SolutionTransfer transferAmount: 5 canChangeTransferAmount: false @@ -114,7 +107,7 @@ heldOnly: true exactVolume: true - type: SolutionRegeneration - solution: Welder + solution: welder generated: reagents: - ReagentId: WeldingFuel diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index 5d4ca1a7ee..c86f97eaab 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -1,24 +1,8 @@ - type: entity - name: fire extinguisher - parent: BaseItem - id: FireExtinguisher - description: It extinguishes fires. + abstract: true + parent: [SolutionSpray, BaseItem] + id: BaseFireExtinguisher components: - - type: Sprite - sprite: Objects/Misc/fire_extinguisher.rsi - layers: - - state: fire_extinguisher_closed - map: [ "enum.ToggleableVisuals.Layer" ] - - type: Item - sprite: Objects/Misc/fire_extinguisher.rsi - size: Normal - - type: SolutionContainerManager - solutions: - spray: - maxVol: 100 - reagents: - - ReagentId: Water - Quantity: 100 - type: RefillableSolution solution: spray - type: DrainableSolution @@ -50,13 +34,6 @@ verbToggleOn: fire-extinguisher-component-verb-remove verbToggleOff: fire-extinguisher-component-verb-engage - type: SpraySafety - - type: MeleeWeapon - wideAnimationRotation: 180 - damage: - types: - Blunt: 10 - soundHit: - path: /Audio/Weapons/smash.ogg - type: Tool qualities: - Rolling @@ -64,30 +41,66 @@ - type: Appearance - type: Tag tags: - - FireExtinguisher + - FireExtinguisher - type: GenericVisualizer visuals: enum.ToggleableVisuals.Enabled: enum.ToggleableVisuals.Layer: True: { state: fire_extinguisher_open } False: { state: fire_extinguisher_closed } + +- type: entity + parent: [SolutionFireExtinguisher, BaseFireExtinguisher] + id: FireExtinguisher + name: fire extinguisher + description: It extinguishes fires. + components: + - type: Sprite + sprite: Objects/Misc/fire_extinguisher.rsi + layers: + - state: fire_extinguisher_closed + map: [ "enum.ToggleableVisuals.Layer" ] + - type: Item + sprite: Objects/Misc/fire_extinguisher.rsi + size: Normal + - type: MeleeWeapon + wideAnimationRotation: 180 + damage: + types: + Blunt: 10 + soundHit: + path: /Audio/Weapons/smash.ogg - type: PhysicalComposition materialComposition: Steel: 100 - type: entity - parent: FireExtinguisher + parent: [SolutionSpray, SolutionNormal] + id: SolutionFireExtinguisher + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 120 + +- type: entity + parent: [SolutionFireExtinguisherLarge, FireExtinguisher] id: BorgFireExtinguisher name: maneuvering jet description: Based on fire extinguisher technology, the maneuvering jet is... well yes, its just a bigger fire extinguisher. + +- type: entity + parent: [SolutionSpray, SolutionLarge] + id: SolutionFireExtinguisherLarge + categories: [ HideSpawnMenu ] components: - - type: SolutionContainerManager - solutions: - spray: - maxVol: 200 - reagents: - - ReagentId: Water - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 240 - type: entity name: extinguisher spray @@ -109,7 +122,7 @@ - type: entity name: pocket fire extinguisher - parent: FireExtinguisher + parent: [SolutionFireExtinguisherMini, BaseFireExtinguisher] id: FireExtinguisherMini description: A light and compact fibreglass-framed model fire extinguisher. It holds less water than its bigger brother. components: @@ -121,13 +134,6 @@ - type: Item sprite: Objects/Misc/fire_extinguisher_mini.rsi size: Small - - type: SolutionContainerManager - solutions: - spray: - maxVol: 30 - reagents: - - ReagentId: Water - Quantity: 30 - type: MeleeWeapon wideAnimationRotation: 180 damage: @@ -140,6 +146,17 @@ Steel: 50 Glass: 40 +- type: entity + parent: [SolutionSpray, SolutionSmall] + id: SolutionFireExtinguisherMini + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 60 + # used for a engi xenoborg module - type: entity parent: [ FireExtinguisher, BaseXenoborgContraband ] diff --git a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml index 1f1b9a9c6a..13dadc47ed 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/kudzu.yml @@ -19,9 +19,9 @@ affectAirborne: true - type: entity + parent: [ BaseKudzu, SolutionFood ] id: Kudzu name: kudzu - parent: BaseKudzu description: A rapidly growing, dangerous plant. WHY ARE YOU STOPPING TO LOOK AT IT?! components: - type: MeleeSound @@ -95,12 +95,11 @@ - type: FlavorProfile flavors: - fiber - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nutriment - Quantity: 0.1 + - type: Solution + solution: + reagents: + - ReagentId: Nutriment + Quantity: 0.1 - type: Tag tags: - Ruminant @@ -169,9 +168,9 @@ - MobLuminousPerson - type: entity + parent: [BaseKudzu, SolutionFood] id: FleshKudzu name: tendons - parent: BaseKudzu description: A rapidly growing cluster of meaty tendons. WHY ARE YOU STOPPING TO LOOK AT IT?! placement: mode: SnapgridCenter @@ -252,14 +251,13 @@ ignoreWhitelist: tags: - Flesh - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Razorium - Quantity: 2 - - ReagentId: Protein - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Razorium + Quantity: 2 + - ReagentId: Protein + Quantity: 1 - type: AutoEmote # Meat Kudzu used to have respirator, but couldn't breathe so all it would do is gasp. emotes: - MeatGasp diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 6218da86eb..ba2a7b2e3a 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [SolutionFood, BaseItem] id: BasePaper abstract: true components: @@ -51,13 +51,12 @@ flavors: - paper - type: BadFood - - type: SolutionContainerManager - solutions: - food: - maxVol: 1 - reagents: - - ReagentId: Fiber - Quantity: 1 + - type: Solution + solution: + maxVol: 2.5 # I consider paper to be like material sheets, so we divide their capacity by 12 + reagents: + - ReagentId: Fiber + Quantity: 1.25 - type: Item size: Tiny - type: PhysicalComposition diff --git a/Resources/Prototypes/Entities/Objects/Misc/spaceshroom.yml b/Resources/Prototypes/Entities/Objects/Misc/spaceshroom.yml index d047049433..24e8cb090d 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/spaceshroom.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/spaceshroom.yml @@ -42,7 +42,7 @@ - type: entity name: spaceshroom - parent: FoodProduceBase + parent: [SolutionSmall, FoodProduceBase] id: FoodSpaceshroom description: A wild mushroom. There's no telling what effect it could have... components: @@ -58,15 +58,13 @@ reagents: - ReagentId: SpaceDrugs Quantity: 10 - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: # 20u out of 60u space, with 10-15 extra from solution random fill + - ReagentId: Nutriment + Quantity: 12 + - ReagentId: Vitamin + Quantity: 8 - type: RandomFillSolution solution: food weightedRandomId: RandomFillSpaceshroom @@ -126,22 +124,20 @@ # Cooked Object - type: entity name: cooked spaceshroom - parent: FoodProduceBase + parent: [SolutionSmall, FoodProduceBase] id: FoodSpaceshroomCooked description: A wild mushroom that has been cooked through. It seems the heat has removed its chemical effects. components: - type: FlavorProfile flavors: - spaceshroomcooked - - type: SolutionContainerManager - solutions: - food: - maxVol: 15 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Vitamin - Quantity: 5 + - type: Solution + solution: + reagents: # Cooked means no drugs I guess? Lame! + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Vitamin + Quantity: 10 - type: Sprite sprite: Objects/Misc/spaceshroom.rsi state: spaceshroom_cooked diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index 0c318dd20d..119604c074 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -14,10 +14,9 @@ intensitySlope: 1.5 - type: Sprite sprite: Objects/Power/power_cells.rsi - - type: SolutionContainerManager + - type: SolutionManager solutions: - battery: - maxVol: 5 + - SolutionRiggable - type: InjectableSolution solution: battery - type: DrawableSolution @@ -41,6 +40,16 @@ Neither: {visible: true, state: o1} Empty: {visible: false} +- type: entity + parent: Solution + id: SolutionRiggable + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: battery + solution: + maxVol: 5 + - type: entity name: potato battery description: Someone's stuck two nails and some wire in a large potato. Somehow it provides a little charge. @@ -278,10 +287,13 @@ - type: Item size: Ginormous - type: MultiHandedItem - - type: SolutionContainerManager + - type: SolutionManager solutions: - battery: - maxVol: 15 + - SolutionRiggableLarge + - type: Riggable + reagent: + ReagentId: Plasma + Quantity: 15 - type: Extractable juiceSolution: reagents: @@ -295,6 +307,16 @@ sprintModifier: 0.8 - type: HeldSpeedModifier +- type: entity + parent: SolutionRiggable + id: SolutionRiggableLarge + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: battery + solution: + maxVol: 15 + - type: entity id: PowerCageSmall parent: BasePowerCage diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml index 34868ac653..b1f58a91e8 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml @@ -1,5 +1,5 @@ - type: entity - parent: [ DrinkBaseMaterialStrongPlastic, DrinkBase, DrinkVisualsAll ] + parent: [ SolutionLarge, DrinkBaseMaterialStrongPlastic, DrinkBase, DrinkVisualsAll ] id: Jug name: jug description: Used to contain a very large amount of chemicals or solutions. Chugging is extremely ill-advised. @@ -7,12 +7,8 @@ - type: Sprite sprite: Objects/Specific/Chemistry/jug.rsi - type: Item - size: Normal + size: Large sprite: Objects/Specific/Chemistry/jug.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 200 - type: SolutionContainerVisuals maxFillLevels: 6 inHandsMaxFillLevels: 5 @@ -31,14 +27,13 @@ components: - type: Label currentLabel: reagent-name-puncturase-tranexamic - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Puncturase - Quantity: 160 - - ReagentId: TranexamicAcid - Quantity: 40 + - type: Solution + solution: + reagents: + - ReagentId: Puncturase + Quantity: 192 + - ReagentId: TranexamicAcid + Quantity: 48 - type: entity parent: Jug @@ -47,14 +42,13 @@ components: - type: Label currentLabel: reagent-name-pyrazine-dermaline - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Pyrazine - Quantity: 50 - - ReagentId: Dermaline - Quantity: 150 + - type: Solution + solution: + reagents: + - ReagentId: Pyrazine + Quantity: 60 + - ReagentId: Dermaline + Quantity: 180 - type: entity parent: Jug @@ -63,14 +57,13 @@ components: - type: Label currentLabel: reagent-name-dexalin-plus-saline - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: DexalinPlus - Quantity: 100 - - ReagentId: Saline - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: DexalinPlus + Quantity: 120 + - ReagentId: Saline + Quantity: 120 - type: entity parent: Jug @@ -79,12 +72,11 @@ components: - type: Label currentLabel: reagent-name-tricordrazine - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Tricordrazine - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Tricordrazine + Quantity: 240 - type: entity parent: Jug @@ -93,12 +85,11 @@ components: - type: Label currentLabel: reagent-name-blood - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Blood - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 240 - type: entity parent: Jug @@ -107,12 +98,11 @@ components: - type: Label currentLabel: reagent-name-water - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Water - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 240 - type: entity parent: Jug @@ -122,12 +112,11 @@ components: - type: Label currentLabel: reagent-name-carbon - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Carbon - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Carbon + Quantity: 240 - type: entity parent: Jug @@ -137,12 +126,11 @@ components: - type: Label currentLabel: reagent-name-iodine - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Iodine - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Iodine + Quantity: 240 - type: entity parent: Jug @@ -152,12 +140,11 @@ components: - type: Label currentLabel: reagent-name-fluorine - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Fluorine - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Fluorine + Quantity: 240 - type: entity parent: Jug @@ -167,12 +154,11 @@ components: - type: Label currentLabel: reagent-name-chlorine - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Chlorine - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Chlorine + Quantity: 240 - type: entity parent: Jug @@ -182,12 +168,11 @@ components: - type: Label currentLabel: reagent-name-aluminium - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Aluminium - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Aluminium + Quantity: 240 - type: entity parent: Jug @@ -197,12 +182,11 @@ components: - type: Label currentLabel: reagent-name-phosphorus - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Phosphorus - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Phosphorus + Quantity: 240 - type: entity parent: Jug @@ -212,12 +196,11 @@ components: - type: Label currentLabel: reagent-name-sulfur - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Sulfur - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Sulfur + Quantity: 240 - type: entity parent: Jug @@ -227,12 +210,11 @@ components: - type: Label currentLabel: reagent-name-silicon - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Silicon - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 240 - type: entity parent: Jug @@ -242,12 +224,11 @@ components: - type: Label currentLabel: reagent-name-hydrogen - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Hydrogen - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Hydrogen + Quantity: 240 - type: entity parent: Jug @@ -257,12 +238,11 @@ components: - type: Label currentLabel: reagent-name-lithium - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Lithium - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Lithium + Quantity: 240 - type: entity parent: Jug @@ -272,12 +252,11 @@ components: - type: Label currentLabel: reagent-name-sodium - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Sodium - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Sodium + Quantity: 240 - type: entity parent: Jug @@ -287,12 +266,11 @@ components: - type: Label currentLabel: reagent-name-potassium - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Potassium - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Potassium + Quantity: 240 - type: entity parent: Jug @@ -302,12 +280,11 @@ components: - type: Label currentLabel: reagent-name-radium - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Radium - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Radium + Quantity: 240 - type: entity parent: Jug @@ -317,12 +294,11 @@ components: - type: Label currentLabel: reagent-name-iron - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Iron - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 240 - type: entity parent: Jug @@ -332,12 +308,11 @@ components: - type: Label currentLabel: reagent-name-copper - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Copper - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Copper + Quantity: 240 - type: entity parent: Jug @@ -347,12 +322,11 @@ components: - type: Label currentLabel: reagent-name-gold - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Gold - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Gold + Quantity: 240 - type: entity parent: Jug @@ -362,12 +336,11 @@ components: - type: Label currentLabel: reagent-name-mercury - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Mercury - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Mercury + Quantity: 240 - type: entity parent: Jug @@ -377,12 +350,11 @@ components: - type: Label currentLabel: reagent-name-silver - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Silver - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Silver + Quantity: 240 - type: entity parent: Jug @@ -392,12 +364,11 @@ components: - type: Label currentLabel: reagent-name-ethanol - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Ethanol - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Ethanol + Quantity: 240 - type: entity parent: Jug @@ -407,12 +378,11 @@ components: - type: Label currentLabel: reagent-name-sugar - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Sugar - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 240 - type: entity parent: Jug @@ -422,12 +392,11 @@ components: - type: Label currentLabel: reagent-name-nitrogen - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Nitrogen - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Nitrogen + Quantity: 240 - type: entity parent: Jug @@ -437,12 +406,11 @@ components: - type: Label currentLabel: reagent-name-oxygen - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Oxygen - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Oxygen + Quantity: 240 - type: entity parent: Jug @@ -452,12 +420,11 @@ components: - type: Label currentLabel: reagent-name-plant-b-gone - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: PlantBGone - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: PlantBGone + Quantity: 240 - type: entity parent: Jug @@ -467,12 +434,11 @@ components: - type: Label currentLabel: reagent-name-welding-fuel - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: WeldingFuel - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 240 - type: entity parent: Jug @@ -482,12 +448,11 @@ components: - type: Label currentLabel: reagent-name-bicaridine - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Bicaridine - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 240 - type: entity parent: Jug @@ -497,12 +462,11 @@ components: - type: Label currentLabel: reagent-name-puncturase - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Puncturase - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Puncturase + Quantity: 240 - type: entity parent: Jug @@ -512,12 +476,11 @@ components: - type: Label currentLabel: reagent-name-dermaline - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Dermaline - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Dermaline + Quantity: 240 - type: entity parent: Jug @@ -527,12 +490,11 @@ components: - type: Label currentLabel: reagent-name-dylovene - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Dylovene - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Dylovene + Quantity: 240 - type: entity parent: Jug @@ -542,12 +504,11 @@ components: - type: Label currentLabel: reagent-name-tranexamic-acid - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: TranexamicAcid - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: TranexamicAcid + Quantity: 240 - type: entity parent: Jug @@ -557,12 +518,11 @@ components: - type: Label currentLabel: reagent-name-hyronalin - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Hyronalin - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Hyronalin + Quantity: 240 - type: entity parent: Jug @@ -572,12 +532,11 @@ components: - type: Label currentLabel: reagent-name-saline - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: Saline - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: Saline + Quantity: 240 - type: entity parent: Jug @@ -587,9 +546,8 @@ components: - type: Label currentLabel: reagent-name-dexalin-plus - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: DexalinPlus - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: DexalinPlus + Quantity: 240 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml index 2f492adc28..8f5ac040d0 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml @@ -1,6 +1,6 @@ - type: entity name: bottle - parent: BaseItem + parent: [SolutionDrink, SolutionTiny, BaseItem] # This solution name is hardcoded in ChemMasterComponent id: BaseChemistryEmptyBottle abstract: true description: A small bottle. @@ -29,10 +29,6 @@ solution: drink destroyOnEmpty: false utensil: None - - type: SolutionContainerManager - solutions: - drink: # This solution name and target volume is hard-coded in ChemMasterComponent - maxVol: 30 - type: MixableSolution solution: drink - type: RefillableSolution @@ -162,13 +158,11 @@ components: - type: Label currentLabel: reagent-name-aloxadone - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Aloxadone - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Aloxadone + Quantity: 30 - type: entity id: ChemistryBottleAmbuzol @@ -177,13 +171,11 @@ components: - type: Label currentLabel: reagent-name-ambuzol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ambuzol - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ambuzol + Quantity: 30 - type: entity id: ChemistryBottleAmbuzolPlus @@ -192,13 +184,11 @@ components: - type: Label currentLabel: reagent-name-ambuzol-plus - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: AmbuzolPlus - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: AmbuzolPlus + Quantity: 30 - type: entity id: ChemistryBottleArithrazine @@ -207,13 +197,11 @@ components: - type: Label currentLabel: reagent-name-arithrazine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Arithrazine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Arithrazine + Quantity: 30 - type: entity id: ChemistryBottleBarozine @@ -222,13 +210,11 @@ components: - type: Label currentLabel: reagent-name-barozine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Barozine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Barozine + Quantity: 30 - type: entity id: ChemistryBottleBicaridine @@ -237,13 +223,11 @@ components: - type: Label currentLabel: reagent-name-bicaridine - - type: SolutionContainerManager - solutions: - drink: # This solution name and target volume is hard-coded in ChemMasterComponent - maxVol: 30 - reagents: - - ReagentId: Bicaridine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 30 - type: entity id: ChemistryBottleBruizine @@ -252,13 +236,11 @@ components: - type: Label currentLabel: reagent-name-bruizine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Bruizine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Bruizine + Quantity: 30 - type: entity id: ChemistryBottleCognizine @@ -267,13 +249,11 @@ components: - type: Label currentLabel: reagent-name-cognizine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cognizine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Cognizine + Quantity: 30 - type: entity id: ChemistryBottleCryoxadone @@ -282,13 +262,11 @@ components: - type: Label currentLabel: reagent-name-cryoxadone - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cryoxadone - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Cryoxadone + Quantity: 30 - type: entity id: ChemistryBottleCryptobiolin @@ -297,13 +275,11 @@ components: - type: Label currentLabel: reagent-name-cryptobiolin - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Cryptobiolin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Cryptobiolin + Quantity: 30 - type: entity id: ChemistryBottleDermaline @@ -312,13 +288,11 @@ components: - type: Label currentLabel: reagent-name-dermaline - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Dermaline - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Dermaline + Quantity: 30 - type: entity id: ChemistryBottleDexalin @@ -327,13 +301,11 @@ components: - type: Label currentLabel: reagent-name-dexalin - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Dexalin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Dexalin + Quantity: 30 - type: entity id: ChemistryBottleDexalinPlus @@ -342,13 +314,11 @@ components: - type: Label currentLabel: reagent-name-dexalin-plus - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DexalinPlus - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: DexalinPlus + Quantity: 30 - type: entity id: ChemistryBottleDiphenhydramine @@ -357,13 +327,11 @@ components: - type: Label currentLabel: reagent-name-diphenhydramine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Diphenhydramine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Diphenhydramine + Quantity: 30 - type: entity id: ChemistryBottleDiphenylmethylamine @@ -372,13 +340,11 @@ components: - type: Label currentLabel: reagent-name-diphenylmethylamine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Diphenylmethylamine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Diphenylmethylamine + Quantity: 30 - type: entity id: ChemistryBottleDoxarubixadone @@ -387,13 +353,11 @@ components: - type: Label currentLabel: reagent-name-doxarubixadone - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Doxarubixadone - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Doxarubixadone + Quantity: 30 - type: entity id: ChemistryBottleDylovene @@ -402,13 +366,11 @@ components: - type: Label currentLabel: reagent-name-dylovene - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Dylovene - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Dylovene + Quantity: 30 - type: entity id: ChemistryBottleEpinephrine @@ -417,13 +379,11 @@ components: - type: Label currentLabel: reagent-name-epinephrine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Epinephrine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Epinephrine + Quantity: 30 - type: entity id: ChemistryBottleEthyloxyephedrine @@ -432,13 +392,11 @@ components: - type: Label currentLabel: reagent-name-ethyloxyephedrine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ethyloxyephedrine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ethyloxyephedrine + Quantity: 30 - type: entity id: ChemistryBottleEthylredoxrazine @@ -447,13 +405,11 @@ components: - type: Label currentLabel: reagent-name-ethylredoxrazine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ethylredoxrazine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ethylredoxrazine + Quantity: 30 - type: entity id: ChemistryBottleHaloperidol @@ -462,13 +418,11 @@ components: - type: Label currentLabel: reagent-name-haloperidol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Haloperidol - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Haloperidol + Quantity: 30 - type: entity id: ChemistryBottleHolywater @@ -477,13 +431,11 @@ components: - type: Label currentLabel: reagent-name-holywater - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Holywater - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Holywater + Quantity: 30 - type: entity id: ChemistryBottleHyronalin @@ -492,13 +444,11 @@ components: - type: Label currentLabel: reagent-name-hyronalin - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Hyronalin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Hyronalin + Quantity: 30 - type: entity id: ChemistryBottleInaprovaline @@ -507,13 +457,11 @@ components: - type: Label currentLabel: reagent-name-inaprovaline - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Inaprovaline - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Inaprovaline + Quantity: 30 - type: entity id: ChemistryBottleInsuzine @@ -522,13 +470,11 @@ components: - type: Label currentLabel: reagent-name-insuzine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Insuzine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Insuzine + Quantity: 30 - type: entity id: ChemistryBottleIpecac @@ -537,13 +483,11 @@ components: - type: Label currentLabel: reagent-name-ipecac - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ipecac - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ipecac + Quantity: 30 - type: entity id: ChemistryBottleKelotane @@ -552,13 +496,11 @@ components: - type: Label currentLabel: reagent-name-kelotane - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Kelotane - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Kelotane + Quantity: 30 - type: entity id: ChemistryBottleLacerinol @@ -567,13 +509,11 @@ components: - type: Label currentLabel: reagent-name-lacerinol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Lacerinol - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Lacerinol + Quantity: 30 - type: entity id: ChemistryBottleLeporazine @@ -582,13 +522,11 @@ components: - type: Label currentLabel: reagent-name-leporazine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Leporazine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Leporazine + Quantity: 30 - type: entity id: ChemistryBottleLipozine @@ -597,13 +535,11 @@ components: - type: Label currentLabel: reagent-name-lipozine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Lipozine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Lipozine + Quantity: 30 - type: entity id: ChemistryBottleMannitol @@ -612,13 +548,11 @@ components: - type: Label currentLabel: reagent-name-mannitol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Mannitol - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Mannitol + Quantity: 30 - type: entity id: ChemistryBottleOculine @@ -627,13 +561,11 @@ components: - type: Label currentLabel: reagent-name-oculine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Oculine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Oculine + Quantity: 30 - type: entity id: ChemistryBottleOmnizine @@ -642,13 +574,11 @@ components: - type: Label currentLabel: reagent-name-omnizine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Omnizine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Omnizine + Quantity: 30 - type: entity id: ChemistryBottleOpporozidone @@ -657,13 +587,11 @@ components: - type: Label currentLabel: reagent-name-opporozidone - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Opporozidone - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Opporozidone + Quantity: 30 - type: entity id: ChemistryBottlePhalanximine @@ -672,13 +600,11 @@ components: - type: Label currentLabel: reagent-name-phalanximine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Phalanximine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Phalanximine + Quantity: 30 - type: entity id: ChemistryBottlePolypyryliumOligomers @@ -687,13 +613,11 @@ components: - type: Label currentLabel: reagent-name-polypyrylium-oligomers - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: PolypyryliumOligomers - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: PolypyryliumOligomers + Quantity: 30 - type: entity id: ChemistryBottlePotassiumIodide @@ -702,13 +626,11 @@ components: - type: Label currentLabel: reagent-name-potassium-iodide - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: PotassiumIodide - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: PotassiumIodide + Quantity: 30 - type: entity id: ChemistryBottlePsicodine @@ -717,13 +639,11 @@ components: - type: Label currentLabel: reagent-name-psicodine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Psicodine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Psicodine + Quantity: 30 - type: entity id: ChemistryBottlePulpedBananaPeel @@ -732,13 +652,11 @@ components: - type: Label currentLabel: reagent-name-pulped-banana-peel - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: PulpedBananaPeel - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: PulpedBananaPeel + Quantity: 30 - type: entity id: ChemistryBottlePuncturase @@ -747,13 +665,11 @@ components: - type: Label currentLabel: reagent-name-puncturase - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Puncturase - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Puncturase + Quantity: 30 - type: entity id: ChemistryBottlePyrazine @@ -762,13 +678,11 @@ components: - type: Label currentLabel: reagent-name-pyrazine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Pyrazine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Pyrazine + Quantity: 30 - type: entity id: ChemistryBottleSaline @@ -777,13 +691,11 @@ components: - type: Label currentLabel: reagent-name-saline - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Saline - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Saline + Quantity: 30 - type: entity id: ChemistryBottleSiderlac @@ -792,13 +704,11 @@ components: - type: Label currentLabel: reagent-name-siderlac - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Siderlac - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Siderlac + Quantity: 30 - type: entity id: ChemistryBottleSigynate @@ -807,13 +717,11 @@ components: - type: Label currentLabel: reagent-name-sigynate - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Sigynate - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Sigynate + Quantity: 30 - type: entity id: ChemistryBottleStellibinin @@ -822,13 +730,11 @@ components: - type: Label currentLabel: reagent-name-stellibinin - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Stellibinin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Stellibinin + Quantity: 30 - type: entity id: ChemistryBottleSynaptizine @@ -837,13 +743,11 @@ components: - type: Label currentLabel: reagent-name-synaptizine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Synaptizine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Synaptizine + Quantity: 30 - type: entity id: ChemistryBottleTranexamicAcid @@ -852,13 +756,11 @@ components: - type: Label currentLabel: reagent-name-tranexamic-acid - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: TranexamicAcid - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: TranexamicAcid + Quantity: 30 - type: entity id: ChemistryBottleTricordrazine @@ -867,13 +769,11 @@ components: - type: Label currentLabel: reagent-name-tricordrazine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Tricordrazine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Tricordrazine + Quantity: 30 - type: entity id: ChemistryBottleUltravasculine @@ -882,13 +782,11 @@ components: - type: Label currentLabel: reagent-name-ultravasculine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ultravasculine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ultravasculine + Quantity: 30 - type: entity parent: BaseChemistryBottleFilled @@ -897,13 +795,11 @@ components: - type: Label currentLabel: reagent-name-charcoal - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Charcoal - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Charcoal + Quantity: 30 # Other bottles @@ -914,13 +810,11 @@ components: - type: Label currentLabel: reagent-name-robust-harvest - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: RobustHarvest - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: RobustHarvest + Quantity: 30 - type: entity id: ChemistryBottleEZNutrient @@ -929,13 +823,11 @@ components: - type: Label currentLabel: reagent-name-e-z-nutrient - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: EZNutrient - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: EZNutrient + Quantity: 30 - type: entity id: ChemistryBottleLeft4Zed @@ -944,13 +836,11 @@ components: - type: Label currentLabel: reagent-name-left4-zed - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Left4Zed - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Left4Zed + Quantity: 30 - type: entity id: ChemistryBottleUnstableMutagen @@ -959,13 +849,11 @@ components: - type: Label currentLabel: reagent-name-unstable-mutagen - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: UnstableMutagen - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: UnstableMutagen + Quantity: 30 - type: entity id: ChemistryBottleNocturine @@ -974,13 +862,11 @@ components: - type: Label currentLabel: reagent-name-nocturine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Nocturine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Nocturine + Quantity: 30 - type: entity id: ChemistryBottleEphedrine @@ -989,13 +875,11 @@ components: - type: Label currentLabel: reagent-name-ephedrine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ephedrine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ephedrine + Quantity: 30 - type: entity id: ChemistryBottlePax @@ -1004,13 +888,11 @@ components: - type: Label currentLabel: reagent-name-pax - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Pax - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Pax + Quantity: 30 - type: entity id: ChemistryBottleMuteToxin @@ -1019,13 +901,11 @@ components: - type: Label currentLabel: reagent-name-mute-toxin - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: MuteToxin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: MuteToxin + Quantity: 30 - type: entity id: ChemistryBottleLead @@ -1034,13 +914,11 @@ components: - type: Label currentLabel: reagent-name-lead - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Lead - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Lead + Quantity: 30 - type: entity id: ChemistryBottleToxin @@ -1049,13 +927,11 @@ components: - type: Label currentLabel: reagent-name-toxin - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Toxin - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Toxin + Quantity: 30 - type: entity parent: BaseChemistryBottleFilled @@ -1064,13 +940,11 @@ components: - type: Label currentLabel: reagent-name-laughter - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Laughter - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Laughter + Quantity: 30 # Base reagent bottles - type: entity @@ -1080,13 +954,11 @@ components: - type: Label currentLabel: reagent-name-aluminium - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Aluminium - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Aluminium + Quantity: 30 - type: entity id: ChemistryBottleCarbon @@ -1095,13 +967,11 @@ components: - type: Label currentLabel: reagent-name-carbon - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Carbon - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Carbon + Quantity: 30 - type: entity id: ChemistryBottleChlorine @@ -1110,13 +980,11 @@ components: - type: Label currentLabel: reagent-name-chlorine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Chlorine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Chlorine + Quantity: 30 - type: entity id: ChemistryBottleCopper @@ -1125,13 +993,11 @@ components: - type: Label currentLabel: reagent-name-copper - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Copper - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Copper + Quantity: 30 - type: entity id: ChemistryBottleEthanol @@ -1140,13 +1006,11 @@ components: - type: Label currentLabel: reagent-name-ethanol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Ethanol - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Ethanol + Quantity: 30 - type: entity id: ChemistryBottleFluorine @@ -1155,13 +1019,11 @@ components: - type: Label currentLabel: reagent-name-fluorine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Fluorine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Fluorine + Quantity: 30 - type: entity id: ChemistryBottleHydrogen @@ -1170,13 +1032,11 @@ components: - type: Label currentLabel: reagent-name-hydrogen - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Hydrogen - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Hydrogen + Quantity: 30 - type: entity id: ChemistryBottleIodine @@ -1185,13 +1045,11 @@ components: - type: Label currentLabel: reagent-name-iodine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Iodine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Iodine + Quantity: 30 - type: entity id: ChemistryBottleIron @@ -1200,13 +1058,11 @@ components: - type: Label currentLabel: reagent-name-iron - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Iron - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 30 - type: entity id: ChemistryBottleLithium @@ -1215,13 +1071,11 @@ components: - type: Label currentLabel: reagent-name-lithium - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Lithium - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Lithium + Quantity: 30 - type: entity id: ChemistryBottleMercury @@ -1230,13 +1084,11 @@ components: - type: Label currentLabel: reagent-name-mercury - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Mercury - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Mercury + Quantity: 30 - type: entity id: ChemistryBottleNitrogen @@ -1245,13 +1097,11 @@ components: - type: Label currentLabel: reagent-name-nitrogen - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Nitrogen - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Nitrogen + Quantity: 30 - type: entity id: ChemistryBottleOxygen @@ -1260,13 +1110,11 @@ components: - type: Label currentLabel: reagent-name-oxygen - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Oxygen - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Oxygen + Quantity: 30 - type: entity id: ChemistryBottlePhosphorus @@ -1275,13 +1123,11 @@ components: - type: Label currentLabel: reagent-name-phosphorus - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Phosphorus - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Phosphorus + Quantity: 30 - type: entity id: ChemistryBottlePotassium @@ -1290,13 +1136,11 @@ components: - type: Label currentLabel: reagent-name-potassium - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Potassium - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Potassium + Quantity: 30 - type: entity id: ChemistryBottleRadium @@ -1305,13 +1149,11 @@ components: - type: Label currentLabel: reagent-name-radium - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Radium - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Radium + Quantity: 30 - type: entity id: ChemistryBottleSilicon @@ -1320,13 +1162,11 @@ components: - type: Label currentLabel: reagent-name-silicon - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Silicon - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 30 - type: entity id: ChemistryBottleSodium @@ -1335,13 +1175,11 @@ components: - type: Label currentLabel: reagent-name-sodium - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Sodium - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Sodium + Quantity: 30 - type: entity id: ChemistryBottleSugar @@ -1350,13 +1188,11 @@ components: - type: Label currentLabel: reagent-name-sugar - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Sugar - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 30 - type: entity id: ChemistryBottleSulfur @@ -1365,13 +1201,11 @@ components: - type: Label currentLabel: reagent-name-sulfur - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Sulfur - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Sulfur + Quantity: 30 # Entity tables - type: entityTable diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml index 0ecaf17aeb..5bc8c0c054 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml @@ -23,7 +23,7 @@ ## Entities - type: entity - parent: BaseChemistryVial + parent: [SolutionTiny, BaseChemistryVial] id: ChemistryEmptyVial name: vial description: A small vial. @@ -35,10 +35,6 @@ - type: SolutionContainerVisuals maxFillLevels: 6 inHandsMaxFillLevels: 4 - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - type: SolutionTransfer maxTransferAmount: 30 - type: StaticPrice @@ -69,7 +65,7 @@ acts: [ "Destruction" ] - type: entity - parent: BaseChemistryVial + parent: [SolutionVeryTiny, BaseChemistryVial] id: ChemistryEmptyVialSmall name: mini vial description: A smaller vial. @@ -81,10 +77,6 @@ - type: SolutionContainerVisuals maxFillLevels: 5 inHandsMaxFillLevels: 4 - - type: SolutionContainerManager - solutions: - drink: - maxVol: 10 - type: SolutionTransfer maxTransferAmount: 10 - type: StaticPrice @@ -114,13 +106,11 @@ components: - type: Label currentLabel: reagent-name-vestine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Vestine - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Vestine + Quantity: 30 - type: Tag tags: &TagVial # Remove trash tag when we have a filled solution - CentrifugeCompatible @@ -132,13 +122,11 @@ components: - type: Label currentLabel: reagent-name-radium - - type: SolutionContainerManager - solutions: - drink: - maxVol: 10 - reagents: - - ReagentId: Radium - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Radium + Quantity: 5 - type: Tag tags: *TagVial @@ -149,13 +137,11 @@ components: - type: Label currentLabel: reagent-name-chlorine - - type: SolutionContainerManager - solutions: - drink: - maxVol: 10 - reagents: - - ReagentId: Chlorine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Chlorine + Quantity: 5 - type: Tag tags: *TagVial @@ -166,12 +152,10 @@ components: - type: Label currentLabel: reagent-name-plasma - - type: SolutionContainerManager - solutions: - drink: - maxVol: 10 - reagents: - - ReagentId: Plasma - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Plasma + Quantity: 15 - type: Tag tags: *TagVial diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry.yml index ae6f7a4476..f09f84dc99 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [SolutionBeaker, SolutionSmall, BaseItem] id: BaseBeaker abstract: true components: @@ -21,10 +21,6 @@ damage: types: Blunt: 0 - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - type: MixableSolution solution: beaker - type: FitsInDispenser @@ -100,7 +96,7 @@ - type: DnaSubstanceTrace - type: entity - parent: BaseItem + parent: [SolutionBeaker, SolutionSmall, BaseItem] id: BaseBeakerMetallic abstract: true components: @@ -122,10 +118,6 @@ damage: types: Blunt: 0 - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - type: MixableSolution solution: beaker - type: FitsInDispenser @@ -192,13 +184,11 @@ components: - type: Label currentLabel: reagent-name-cryoxadone - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Cryoxadone - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Cryoxadone + Quantity: 60 - type: entity parent: Beaker @@ -207,13 +197,11 @@ components: - type: Label currentLabel: reagent-name-arithrazine - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Arithrazine - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Arithrazine + Quantity: 60 - type: entity parent: Beaker @@ -222,13 +210,11 @@ components: - type: Label currentLabel: reagent-name-sigynate - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Sigynate - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Sigynate + Quantity: 60 - type: entity parent: Beaker @@ -237,13 +223,11 @@ components: - type: Label currentLabel: reagent-name-phalanximine - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Phalanximine - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Phalanximine + Quantity: 60 - type: entity parent: Beaker @@ -252,13 +236,11 @@ components: - type: Label currentLabel: reagent-name-diphenhydramine - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Diphenhydramine - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Diphenhydramine + Quantity: 60 - type: entity parent: Beaker @@ -267,13 +249,11 @@ components: - type: Label currentLabel: reagent-name-bruizine - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Bruizine - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Bruizine + Quantity: 60 - type: entity parent: Beaker @@ -282,17 +262,15 @@ components: - type: Label currentLabel: reagent-name-lacerinol - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 50 - reagents: - - ReagentId: Lacerinol - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: Lacerinol + Quantity: 60 - type: entity name: large beaker - parent: BaseBeaker + parent: [SolutionNormal, BaseBeaker] description: Used to contain a large amount of chemicals or solutions. id: LargeBeaker components: @@ -308,10 +286,6 @@ - type: Item size: Normal sprite: Objects/Specific/Chemistry/beaker_large.rsi - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 100 - type: Appearance - type: SolutionContainerVisuals maxFillLevels: 6 @@ -326,7 +300,7 @@ - type: entity name: cryostasis beaker - parent: BaseBeakerMetallic + parent: [SolutionCryo, BaseBeakerMetallic] description: Used to contain chemicals or solutions without reactions. id: CryostasisBeaker components: @@ -338,15 +312,10 @@ - state: beakernoreact - type: SolutionContainerVisuals maxFillLevels: 0 - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 60 - canReact: false - type: entity name: bluespace beaker - parent: BaseBeakerMetallic + parent: [SolutionGinormous, BaseBeakerMetallic] description: Powered by experimental bluespace technology. id: BluespaceBeaker components: @@ -358,14 +327,10 @@ - state: beakerbluespace - type: SolutionContainerVisuals maxFillLevels: 0 - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 1000 - type: entity name: dropper - parent: BaseItem + parent: [SolutionInjector, SolutionToolTiny, BaseItem] description: Used to transfer small amounts of chemical solution between containers. id: Dropper components: @@ -376,10 +341,6 @@ - state: dropper1 map: ["enum.SolutionContainerLayers.Fill"] visible: false - - type: SolutionContainerManager - solutions: - injector: - maxVol: 5 - type: Injector ignoreMobs: true ignoreClosed: false @@ -417,7 +378,7 @@ parent: Dropper id: BorgDropper name: hydraulic pipette - description: State-of-the-art hydraulic dropper built for cyborgs. It features a higher capacity than hand-powered droppers, able to hold 15 units of liquid. + description: State-of-the-art hydraulic dropper built for cyborgs. components: - type: Sprite sprite: Objects/Specific/Chemistry/dropper.rsi @@ -426,16 +387,12 @@ - state: dropper1 map: ["enum.SolutionContainerLayers.Fill"] visible: false - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - type: Item sprite: Objects/Specific/Chemistry/dropper.rsi - type: entity name: syringe - parent: BaseItem + parent: [SolutionInjector, SolutionToolTiny, BaseItem] description: Used to draw blood samples from mobs, or to inject them with reagents. id: BaseSyringe abstract: true @@ -454,10 +411,6 @@ - type: Item size: Tiny sprite: Objects/Specific/Chemistry/syringe.rsi - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - type: Injector activeModeProtoId: SyringeDrawMode allowedModes: @@ -491,7 +444,7 @@ - type: entity name: mini syringe - parent: Syringe + parent: [SolutionToolVeryTiny, Syringe] description: A regular syringe, reshaped to fit inside of a gun. id: MiniSyringe components: @@ -502,10 +455,6 @@ map: ["enum.SolutionContainerLayers.Fill"] visible: false - state: syringeproj - - type: SolutionContainerManager - solutions: - injector: - maxVol: 5 - type: SolutionContainerVisuals maxFillLevels: 3 fillBaseName: minisyringe @@ -563,7 +512,7 @@ - type: entity id: SyringeBluespace - parent: BaseSyringe + parent: [SolutionToolLarge, BaseSyringe] name: bluespace syringe description: Injecting with advanced bluespace technology. components: @@ -577,10 +526,6 @@ - type: Icon sprite: Objects/Specific/Chemistry/syringe.rsi state: bluespace_base0 - - type: SolutionContainerManager - solutions: - injector: - maxVol: 100 - type: Injector activeModeProtoId: BluespaceSyringeDrawMode allowedModes: @@ -596,7 +541,7 @@ - type: entity id: SyringeCryostasis - parent: BaseSyringe + parent: [SolutionCryo, BaseSyringe] name: cryostasis syringe description: A syringe used to contain chemicals or solutions without reactions. components: @@ -610,16 +555,6 @@ - type: Icon sprite: Objects/Specific/Chemistry/syringe.rsi state: cryo_base0 - - type: SolutionContainerManager - solutions: - injector: - maxVol: 10 - canReact: false - - type: Injector - activeModeProtoId: CryostasisSyringeDrawMode - allowedModes: - - CryostasisSyringeInjectMode - - CryostasisSyringeDrawMode - type: Tag tags: - Syringe @@ -627,7 +562,7 @@ - type: entity name: pill - parent: BaseItem + parent: [SolutionPill, BaseItem] id: Pill description: It's not a suppository. components: @@ -646,11 +581,6 @@ - type: BadFood - type: FlavorProfile ignoreReagents: [] - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - canReact: false - type: ExplosionResistance damageCoefficient: 0.025 # survives conventional explosives but not minibombs and nukes - type: Damageable @@ -676,6 +606,15 @@ tags: - Pill +- type: entity + abstract: true + parent: [SolutionFood, SolutionTiny] + id: SolutionPill + components: + - type: Solution + solution: + maxVol: 20 + - type: entity name: pill canister id: PillCanister diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/paper_centrifuge.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/paper_centrifuge.yml index aaeeb17bf8..dafca05c97 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/paper_centrifuge.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/paper_centrifuge.yml @@ -1,30 +1,26 @@ - type: entity abstract: true - parent: BaseItem + parent: [SolutionTiny, BaseItem] id: BaseHandheldMixer components: - - type: SolutionContainerManager - solutions: - mixer: - maxVol: 10 - type: MixableSolution - solution: mixer + solution: solution - type: RefillableSolution - solution: mixer + solution: solution - type: DrainableSolution - solution: mixer + solution: solution - type: ExaminableSolution - solution: mixer + solution: solution exactVolume: true - type: DrawableSolution - solution: mixer + solution: solution - type: InjectableSolution - solution: mixer + solution: solution - type: Spillable - solution: mixer + solution: solution - type: SolutionTransfer - type: SolutionItemStatus - solution: mixer + solution: solution - type: Appearance - type: DnaSubstanceTrace - type: ReactionMixer diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml index ef8700476d..2a762a2e8f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml @@ -1,4 +1,5 @@ # Leaves +# TODO We have mortar and pestle, all these ground items are very stupid and should just be made by grinding leaves instead of through construction. - type: entity name: cannabis leaves @@ -11,48 +12,39 @@ - type: Produce seedId: cannabis - type: Edible # Precursor to the one true edible - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: THC - Quantity: 15 - + - type: Solution + solution: + reagents: + - ReagentId: THC + Quantity: 15 - type: entity name: dried cannabis leaves - parent: BaseItem + parent: ProduceBaseRuminant id: LeavesCannabisDried description: "Dried cannabis leaves, ready to be ground." components: - type: Stack stackType: LeavesCannabisDried count: 1 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: THC - Quantity: 12 - type: Sprite sprite: Objects/Specific/Hydroponics/tobacco.rsi state: dried - type: entity name: ground cannabis - parent: BaseItem + parent: [SolutionFood, SolutionTiny, BaseItem] id: GroundCannabis description: "Ground cannabis, ready to take you on a trip." components: - type: Stack stackType: GroundCannabis count: 1 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: THC - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: THC + Quantity: 30 # Takes 2 dried leaves to make one ground cannabis. - type: Sprite sprite: Objects/Misc/reagent_fillings.rsi state: powderpile @@ -85,49 +77,31 @@ # energy: 2 #- type: RgbLightController # cycleRate: 0.6 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: SpaceDrugs - Quantity: 3 - - ReagentId: Lipolicide - Quantity: 3 - - ReagentId: MindbreakerToxin - Quantity: 2 - - ReagentId: Happiness - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: SpaceDrugs + Quantity: 6 + - ReagentId: Lipolicide + Quantity: 3 + - ReagentId: MindbreakerToxin + Quantity: 2 + - ReagentId: Happiness + Quantity: 2 # - ReagentId: ColorfulReagent # Quantity: 1 - - ReagentId: Psicodine - Quantity: 0.6 + - ReagentId: Psicodine + Quantity: 1 - type: entity name: dried rainbow cannabis leaves - parent: LeavesCannabisDried + parent: LeavesCannabisRainbow id: LeavesCannabisRainbowDried description: "Dried rainbow cannabis leaves, ready to be ground." components: - type: Stack stackType: LeavesCannabisRainbowDried count: 1 - - type: SolutionContainerManager - solutions: - food: - maxVol: 8.5 #fuck you saveload test fail - reagents: - - ReagentId: SpaceDrugs - Quantity: 2.4 - - ReagentId: Lipolicide - Quantity: 2.4 - - ReagentId: MindbreakerToxin - Quantity: 1.6 - - ReagentId: Happiness - Quantity: 1.6 -# - ReagentId: ColorfulReagent -# Quantity: 0.8 - - ReagentId: Psicodine - Quantity: 0.48 - type: Sprite sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi state: dried @@ -141,22 +115,21 @@ - type: Stack stackType: GroundCannabisRainbow count: 1 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: SpaceDrugs - Quantity: 4 - - ReagentId: Lipolicide - Quantity: 4 - - ReagentId: MindbreakerToxin - Quantity: 2.66 - - ReagentId: Happiness - Quantity: 2.66 + - type: Solution + solution: + reagents: + - ReagentId: SpaceDrugs + Quantity: 12 + - ReagentId: Lipolicide + Quantity: 6 + - ReagentId: MindbreakerToxin + Quantity: 4 + - ReagentId: Happiness + Quantity: 4 # - ReagentId: ColorfulReagent -# Quantity: 1.33 - - ReagentId: Psicodine - Quantity: 0.8 +# Quantity: 2 + - ReagentId: Psicodine + Quantity: 2 - type: Sprite sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi state: powderpile_rainbow @@ -175,12 +148,11 @@ sprite: Objects/Specific/Hydroponics/tea_plant.rsi - type: Produce seedId: teaPlant - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Vitamin - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Vitamin + Quantity: 15 - type: entity name: dried tea leaves @@ -188,12 +160,13 @@ id: LeavesTeaDried description: "Dried tea leaves, ready to be ground." components: - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: TeaPowder - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Vitamin + Quantity: 10 + - ReagentId: TeaPowder # Convert some of the Vitamin to Tea + Quantity: 5 - type: Sprite sprite: Objects/Specific/Hydroponics/tea_plant.rsi state: dried @@ -208,47 +181,39 @@ sprite: Objects/Specific/Hydroponics/tobacco.rsi - type: Produce seedId: tobacco - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nicotine - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 5 - type: entity name: dried tobacco leaves - parent: BaseItem + parent: LeavesTobacco id: LeavesTobaccoDried description: "Dried tobacco leaves, ready to be ground." components: - type: Stack stackType: LeavesTobaccoDried count: 1 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nicotine - Quantity: 2 - type: Sprite sprite: Objects/Specific/Hydroponics/tobacco.rsi state: dried - type: entity name: ground tobacco - parent: BaseItem + parent: [SolutionFood, SolutionTiny, BaseItem] id: GroundTobacco description: "Ground tobacco, perfect for hand-rolled cigarettes." components: - type: Stack stackType: GroundTobacco count: 1 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Nicotine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Nicotine + Quantity: 10 - type: Sprite sprite: Objects/Misc/reagent_fillings.rsi state: powderpile diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index d8b458a0b3..b5733897f6 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -3,7 +3,6 @@ id: SeedBase abstract: true components: - - type: SolutionContainerManager - type: Sprite sprite: Objects/Specific/Hydroponics/seeds.rsi layers: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/sprays.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/sprays.yml index 7bca0fb699..665a7505aa 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/sprays.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/sprays.yml @@ -11,13 +11,11 @@ - type: Sprite sprite: Objects/Tools/Hydroponics/sprays.rsi state: plantbgone - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: PlantBGone - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: PlantBGone + Quantity: 60 - type: Item sprite: Objects/Tools/Hydroponics/sprays.rsi heldPrefix: plantbgone @@ -32,13 +30,11 @@ - type: Sprite sprite: Objects/Tools/Hydroponics/sprays.rsi state: weedspray - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - reagents: - - ReagentId: WeedKiller - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: WeedKiller + Quantity: 60 - type: Tag tags: - Spray @@ -56,12 +52,10 @@ components: - type: Sprite state: pestspray - - type: SolutionContainerManager - solutions: - drink: - maxVol: 50 - reagents: - - ReagentId: PestKiller - Quantity: 50 + - type: Solution + solution: + reagents: + - ReagentId: PestKiller + Quantity: 60 - type: Item sprite: Objects/Tools/Hydroponics/sprays.rsi diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index a4b7f604f6..757260aa7a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [SolutionMopLarge, BaseItem] name: mop id: MopItem description: A mop that can't be stopped, viscera cleanup detail awaits. @@ -39,10 +39,6 @@ sprite: Objects/Specific/Janitorial/mop.rsi - type: Absorbent useAbsorberSolution: true - - type: SolutionContainerManager - solutions: - absorbed: - maxVol: 100 - type: UseDelay delay: 1 - type: PhysicalComposition @@ -57,6 +53,22 @@ - Janitorial - type: DnaSubstanceTrace +# There's a surprising amount of non-mop mops so we need to define these. +- type: entity + parent: [SolutionMop, SolutionToolSmall] + id: SolutionMopSmall + categories: [ HideSpawnMenu ] + +- type: entity + parent: [SolutionMop, SolutionToolNormal] + id: SolutionMopNormal + categories: [ HideSpawnMenu ] + +- type: entity + parent: [SolutionMop, SolutionToolLarge] + id: SolutionMopLarge + categories: [ HideSpawnMenu ] + - type: entity parent: MopItem name: advanced mop @@ -287,9 +299,9 @@ SpawnMobMoproach: 2 - type: entity - parent: BaseItem - name: damp rag + parent: [SolutionMopSmall, BaseItem] id: RagItem + name: damp rag description: For cleaning up messes, you suppose. components: - type: Sprite @@ -323,10 +335,6 @@ - type: Construction graph: Rag node: rag - - type: SolutionContainerManager - solutions: - absorbed: - maxVol: 30 - type: UseDelay delay: 1.5 - type: Tag diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml index 69eff77aeb..c258cd8580 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml @@ -2,7 +2,7 @@ - type: entity abstract: true - parent: BaseItem + parent: [SolutionSoapBase, BaseItem] id: BaseSoap name: soap components: @@ -42,13 +42,6 @@ density: 10 mask: - ItemMask - - type: SolutionContainerManager - solutions: - soap: - maxVol: 50 - reagents: - - ReagentId: SoapReagent - Quantity: 50 - type: SolutionTransfer transferAmount: 10 minTransferAmount: 1 @@ -69,6 +62,14 @@ - type: Residue residueAdjective: residue-slippery +- type: entity + abstract: true + parent: [SolutionFood, SolutionSmall] + id: SolutionSoapBase + components: + - type: Solution + id: soap + - type: entity parent: BaseSoap id: Soap @@ -80,9 +81,14 @@ map: ["enum.SolutionContainerLayers.Fill"] - type: Residue residueColor: residue-green + - type: Solution + solution: + reagents: + - ReagentId: SoapReagent + Quantity: 60 - type: entity - parent: BaseSoap + parent: Soap id: SoapNT description: A Nanotrasen brand bar of soap. Smells of plasma. components: @@ -94,18 +100,18 @@ fillBaseName: nt- - type: Item heldPrefix: nt - - type: SolutionContainerManager - solutions: - soap: - maxVol: 100 - reagents: - - ReagentId: SoapReagent - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SoapReagent + Quantity: 55 + - ReagentId: Plasma + Quantity: 5 - type: Residue residueColor: residue-grey - type: entity - parent: BaseSoap + parent: Soap id: SoapDeluxe description: A deluxe Waffle Co. brand bar of soap. Smells of strawberries. components: @@ -121,7 +127,7 @@ residueColor: residue-brown - type: entity - parent: [BaseSoap, BaseSyndicateContraband] + parent: [Soap, BaseSyndicateContraband] id: SoapSyndie description: An untrustworthy bar of soap. Smells of fear. components: @@ -156,13 +162,13 @@ description: A tiny piece of syndicate soap. categories: [ HideSpawnMenu ] components: - - type: SolutionContainerManager - solutions: - soap: - maxVol: 1.5 # 50 / 30 = 1.666 - reagents: - - ReagentId: SoapReagent - Quantity: 1.5 + - type: Solution + id: soap + solution: + maxVol: 2 # 60 / 30 = 2 + reagents: + - ReagentId: SoapReagent + Quantity: 2 - type: SolutionContainerVisuals maxFillLevels: 0 - type: Sprite @@ -203,7 +209,7 @@ residueColor: residue-red - type: entity - parent: BaseSoap + parent: Soap id: SoapHomemade description: A homemade bar of soap. Smells of... well.... components: @@ -223,7 +229,7 @@ residueColor: residue-red - type: entity - parent: BaseSoap + parent: [SolutionLarge, BaseSoap] id: SoapOmega name: omega soap description: The most advanced soap known to mankind. Smells of bluespace. @@ -241,12 +247,11 @@ launchForwardsMultiplier: 3.0 - type: Item heldPrefix: omega - - type: SolutionContainerManager - solutions: - soap: - maxVol: 240 #In the Greek alphabet, Omega is the 24th letter - reagents: - - ReagentId: SoapReagent - Quantity: 240 + - type: Solution + id: soap + solution: + reagents: + - ReagentId: SoapReagent + Quantity: 240 #In the Greek alphabet, Omega is the 24th letter - type: Residue residueColor: residue-blue diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml index 5276bdc1b9..1df2c803cf 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: [ DrinkBaseMaterialPlastic, DrinkBase ] + parent: [ DrinkBaseMaterialPlastic, SolutionSmall, DrinkBase ] id: SprayBottleBase components: - type: Edible @@ -20,10 +20,6 @@ state: cleaner - type: Item sprite: Objects/Specific/Janitorial/spray_bottle.rsi - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - type: UseDelay - type: Spray solution: drink @@ -53,7 +49,7 @@ inHandsMaxFillLevels: 4 - type: entity - parent: SprayBottle + parent: [SolutionNormal, SprayBottle] id: MegaSprayBottle name: mega spray bottle suffix: Empty @@ -66,13 +62,11 @@ - state: cleaner_large-fill-1 map: ["enum.SolutionContainerLayers.Fill"] visible: false + - type: Item + size: Normal - type: SolutionContainerVisuals maxFillLevels: 7 fillBaseName: cleaner_large-fill- - - type: SolutionContainerManager - solutions: - drink: - maxVol: 250 - type: Spray transferAmount: 15 sprayedPrototype: BigVapor @@ -90,13 +84,11 @@ - type: Tag tags: - Spray - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: Water - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 60 - type: entity parent: SprayBottle @@ -104,13 +96,11 @@ suffix: Space Cleaner description: BLAM!-brand non-foaming space cleaner! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 100 - reagents: - - ReagentId: SpaceCleaner - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: SpaceCleaner + Quantity: 60 - type: Label currentLabel: space cleaner - type: Tag @@ -123,45 +113,39 @@ suffix: Space Cleaner description: BLAM!-brand non-foaming space cleaner, now in a bigger package for those huge blood puddles! components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 250 - reagents: - - ReagentId: SpaceCleaner - Quantity: 250 + - type: Solution + solution: + reagents: + - ReagentId: SpaceCleaner + Quantity: 120 - type: Label currentLabel: space cleaner - type: entity - parent: SprayBottle + parent: [SolutionNormal, SprayBottle] id: BorgSprayBottle name: internal spray jet suffix: Filled description: A pressurized vessel for spraying reagents, installed directly into a custodial cyborg. Typically filled with space cleaner for dealing with those nasty spills. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 200 - reagents: - - ReagentId: SpaceCleaner - Quantity: 200 + - type: Solution + solution: + reagents: + - ReagentId: SpaceCleaner + Quantity: 120 - type: entity - parent: MegaSprayBottle + parent: [SolutionLarge, MegaSprayBottle] id: BorgMegaSprayBottle name: adv. internal spray jet suffix: Filled description: An upgraded version of the integrated spray bottle, installed directly into a custodial cyborg. This one is capable of creating space cleaner from moisture in the air. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 250 - reagents: - - ReagentId: SpaceCleaner - Quantity: 250 + - type: Solution + solution: + reagents: + - ReagentId: SpaceCleaner + Quantity: 240 - type: SolutionTransfer canSend: false # No giving away infinite space cleaner! - type: SolutionRegeneration @@ -173,14 +157,11 @@ # Vapor - type: entity + parent: [SolutionSmall, SolutionVapor] id: Vapor categories: [ HideSpawnMenu ] name: "vapor" components: - - type: SolutionContainerManager - solutions: - vapor: - maxVol: 50 - type: Vapor active: true transferAmountPercentage: 0.5 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Kitchen/equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Kitchen/equipment.yml index a6274bf5d5..8c7fa0a9eb 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Kitchen/equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Kitchen/equipment.yml @@ -1,31 +1,27 @@ - type: entity abstract: true - parent: BaseItem + parent: [SolutionToolSmall, BaseItem] id: BaseHandheldGrinder components: - - type: SolutionContainerManager - solutions: - grinderOutput: - maxVol: 20 - type: SolutionTransfer - type: DrawableSolution - solution: grinderOutput + solution: solution - type: RefillableSolution - solution: grinderOutput + solution: solution - type: DrainableSolution - solution: grinderOutput + solution: solution - type: Edible edible: Drink - solution: grinderOutput + solution: solution destroyOnEmpty: false utensil: Spoon - type: MixableSolution - solution: grinderOutput + solution: solution - type: ExaminableSolution - solution: grinderOutput + solution: solution exactVolume: true - type: SolutionItemStatus - solution: grinderOutput + solution: solution - type: SolutionContainerVisuals maxFillLevels: 4 fillBaseName: fill- @@ -34,7 +30,7 @@ - type: Injurable damageContainer: Inorganic - type: Spillable - solution: grinderOutput + solution: solution - type: Appearance - type: HandheldGrinder diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index 7555e88861..a6444943b6 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -396,7 +396,7 @@ # Pills - type: entity name: pill - suffix: Dexalin 10u + suffix: Dexalin 20u parent: Pill id: PillDexalin components: @@ -405,20 +405,18 @@ - type: Sprite state: pill16 - type: Label - currentLabel: dexalin 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Dexalin - Quantity: 10 + currentLabel: dexalin 20u + - type: Solution + solution: + reagents: + - ReagentId: Dexalin + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterDexalin - suffix: Dexalin 10u, 7 + suffix: Dexalin 20u, 7 components: - type: Label currentLabel: dexalin 10u @@ -430,7 +428,7 @@ - type: entity name: pill - suffix: Dylovene 10u + suffix: Dylovene 20u parent: Pill id: PillDylovene components: @@ -439,23 +437,21 @@ - type: Sprite state: pill10 - type: Label - currentLabel: dylovene 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Dylovene - Quantity: 10 + currentLabel: dylovene 20u + - type: Solution + solution: + reagents: + - ReagentId: Dylovene + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterDylovene - suffix: Dylovene 10u, 5 + suffix: Dylovene 20u, 5 components: - type: Label - currentLabel: dylovene 10u + currentLabel: dylovene 20u - type: EntityTableContainerFill containers: storagebase: @@ -464,7 +460,7 @@ - type: entity name: pill - suffix: Hyronalin 10u + suffix: Hyronalin 20u parent: Pill id: PillHyronalin components: @@ -473,23 +469,21 @@ - type: Sprite state: pill17 - type: Label - currentLabel: hyronalin 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Hyronalin - Quantity: 10 + currentLabel: hyronalin 20u + - type: Solution + solution: + reagents: + - ReagentId: Hyronalin + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterHyronalin - suffix: Hyronalin 10u, 5 + suffix: Hyronalin 20u, 5 components: - type: Label - currentLabel: hyronalin 10u + currentLabel: hyronalin 20u - type: EntityTableContainerFill containers: storagebase: @@ -498,7 +492,7 @@ - type: entity name: pill - suffix: Potassium iodide 10u + suffix: Potassium iodide 20u parent: Pill id: PillPotassiumIodide components: @@ -507,23 +501,21 @@ - type: Sprite state: pill9 - type: Label - currentLabel: potassium iodide 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: PotassiumIodide - Quantity: 10 + currentLabel: potassium iodide 20u + - type: Solution + solution: + reagents: + - ReagentId: PotassiumIodide + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterPotassiumIodide - suffix: Potassium iodide 10u, 5 + suffix: Potassium iodide 20u, 5 components: - type: Label - currentLabel: potassium iodide 10u + currentLabel: potassium iodide 20u - type: EntityTableContainerFill containers: storagebase: @@ -532,7 +524,7 @@ - type: entity name: pill - suffix: Iron 10u + suffix: Iron 20u parent: Pill id: PillIron components: @@ -541,18 +533,16 @@ - type: Sprite state: pill14 - type: Label - currentLabel: iron 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Iron - Quantity: 10 + currentLabel: iron 20u + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 20 - type: entity name: pill - suffix: Copper 10u + suffix: Copper 20u parent: Pill id: PillCopper components: @@ -561,23 +551,21 @@ - type: Sprite state: pill13 - type: Label - currentLabel: copper 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Copper - Quantity: 10 + currentLabel: copper 20u + - type: Solution + solution: + reagents: + - ReagentId: Copper + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterIron - suffix: Iron 10u, 5 + suffix: Iron 20u, 5 components: - type: Label - currentLabel: iron 10u + currentLabel: iron 20u - type: EntityTableContainerFill containers: storagebase: @@ -588,10 +576,10 @@ name: pill canister parent: PillCanister id: PillCanisterCopper - suffix: Copper 10u, 5 + suffix: Copper 20u, 5 components: - type: Label - currentLabel: copper 10u + currentLabel: copper 20u - type: EntityTableContainerFill containers: storagebase: @@ -600,7 +588,7 @@ - type: entity name: pill - suffix: Kelotane 10u + suffix: Kelotane 20u parent: Pill id: PillKelotane components: @@ -609,23 +597,21 @@ - type: Sprite state: pill4 - type: Label - currentLabel: kelotane 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Kelotane - Quantity: 10 + currentLabel: kelotane 20u + - type: Solution + solution: + reagents: + - ReagentId: Kelotane + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterKelotane - suffix: Kelotane 10u, 5 + suffix: Kelotane 20u, 5 components: - type: Label - currentLabel: kelotane 10u + currentLabel: kelotane 20u - type: EntityTableContainerFill containers: storagebase: @@ -644,22 +630,20 @@ state: pill8 - type: Label currentLabel: dermaline 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Dermaline - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Dermaline + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterDermaline - suffix: Dermaline 10u, 5 + suffix: Dermaline 20u, 5 components: - type: Label - currentLabel: dermaline 10u + currentLabel: dermaline 20u - type: EntityTableContainerFill containers: storagebase: @@ -671,17 +655,15 @@ parent: Pill id: PillSpaceDrugs components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: SpaceDrugs - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: SpaceDrugs + Quantity: 20 - type: entity name: pill - suffix: Tricordrazine 10u + suffix: Tricordrazine 20u parent: Pill id: PillTricordrazine components: @@ -690,23 +672,21 @@ - type: Sprite state: pill3 - type: Label - currentLabel: tricordrazine 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Tricordrazine - Quantity: 10 + currentLabel: tricordrazine 20u + - type: Solution + solution: + reagents: + - ReagentId: Tricordrazine + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterTricordrazine - suffix: Tricordrazine 10u, 5 + suffix: Tricordrazine 20u, 5 components: - type: Label - currentLabel: tricordrazine 10u + currentLabel: tricordrazine 20u - type: EntityTableContainerFill containers: storagebase: @@ -715,7 +695,7 @@ - type: entity name: pill - suffix: Bicaridine 10u + suffix: Bicaridine 20u parent: Pill id: PillBicaridine components: @@ -724,23 +704,21 @@ - type: Sprite state: pill5 - type: Label - currentLabel: bicaridine 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Bicaridine - Quantity: 10 + currentLabel: bicaridine 20u + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterBicaridine - suffix: Bicaridine 10u, 5 + suffix: Bicaridine 20u, 5 components: - type: Label - currentLabel: bicaridine 10u + currentLabel: bicaridine 20u - type: EntityTableContainerFill containers: storagebase: @@ -749,7 +727,7 @@ - type: entity name: pill - suffix: Charcoal 10u + suffix: Charcoal 20u parent: Pill id: PillCharcoal components: @@ -758,23 +736,21 @@ - type: Sprite state: pill21 - type: Label - currentLabel: charcoal 10u - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Charcoal - Quantity: 10 + currentLabel: charcoal 20u + - type: Solution + solution: + reagents: + - ReagentId: Charcoal + Quantity: 20 - type: entity name: pill canister parent: PillCanister id: PillCanisterCharcoal - suffix: Charcoal 10u, 3 + suffix: Charcoal 20u, 3 components: - type: Label - currentLabel: charcoal 10u + currentLabel: charcoal 20u - type: EntityTableContainerFill containers: storagebase: @@ -786,43 +762,37 @@ parent: Pill id: PillRomerol components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Romerol - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Romerol + Quantity: 20 - type: entity name: ambuzol pill parent: Pill id: PillAmbuzol components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: Ambuzol - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Ambuzol + Quantity: 10 - type: entity name: ambuzol plus pill parent: Pill id: PillAmbuzolPlus components: - - type: Pill - pillType: 2 - - type: Sprite - state: pill3 - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - reagents: - - ReagentId: AmbuzolPlus - Quantity: 5 + - type: Pill + pillType: 2 + - type: Sprite + state: pill3 + - type: Solution + solution: + reagents: + - ReagentId: AmbuzolPlus + Quantity: 5 - type: entity parent: PillCanister @@ -870,13 +840,11 @@ components: - type: Label currentLabel: reagent-name-ephedrine - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Ephedrine - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Ephedrine + Quantity: 15 - type: entity suffix: inaprovaline @@ -885,13 +853,11 @@ components: - type: Label currentLabel: reagent-name-inaprovaline - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Inaprovaline - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Inaprovaline + Quantity: 15 - type: entity suffix: tranexamic acid @@ -900,13 +866,11 @@ components: - type: Label currentLabel: reagent-name-tranexamic-acid - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: TranexamicAcid - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: TranexamicAcid + Quantity: 15 - type: entity suffix: bicaridine @@ -915,13 +879,11 @@ components: - type: Label currentLabel: reagent-name-bicaridine - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Bicaridine - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 15 - type: entity suffix: dermaline @@ -930,13 +892,11 @@ components: - type: Label currentLabel: reagent-name-dermaline - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Dermaline - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Dermaline + Quantity: 15 - type: entity suffix: hyronalin @@ -945,13 +905,11 @@ components: - type: Label currentLabel: reagent-name-hyronalin - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Hyronalin - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Hyronalin + Quantity: 15 - type: entity suffix: ipecac @@ -960,13 +918,11 @@ components: - type: Label currentLabel: reagent-name-ipecac - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Ipecac - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Ipecac + Quantity: 15 - type: entity suffix: ambuzol @@ -975,13 +931,11 @@ components: - type: Label currentLabel: reagent-name-ambuzol - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Ambuzol - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Ambuzol + Quantity: 15 - type: entity suffix: sigynate @@ -990,13 +944,11 @@ components: - type: Label currentLabel: reagent-name-sigynate - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Sigynate - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Sigynate + Quantity: 15 - type: entity suffix: ethylredoxrazine @@ -1005,13 +957,11 @@ components: - type: Label currentLabel: reagent-name-ethylredoxrazine - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Ethylredoxrazine - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Ethylredoxrazine + Quantity: 15 - type: entity suffix: phalanximine @@ -1020,13 +970,11 @@ components: - type: Label currentLabel: reagent-name-phalanximine - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Phalanximine - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Phalanximine + Quantity: 15 - type: entity suffix: saline @@ -1035,13 +983,11 @@ components: - type: Label currentLabel: reagent-name-saline - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Saline - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Saline + Quantity: 15 #this is where all the syringes are so i didn't know where to put it - type: entity @@ -1051,13 +997,11 @@ components: - type: Label currentLabel: reagent-name-romerol - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Romerol - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Romerol + Quantity: 15 - type: entity suffix: hyperzine @@ -1066,13 +1010,11 @@ components: - type: Label currentLabel: reagent-name-stimulants - - type: SolutionContainerManager - solutions: - injector: - maxVol: 15 - reagents: - - ReagentId: Stimulants - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Stimulants + Quantity: 15 # Entity Tables - type: entityTable diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index 8bf35659e5..0daac3ac84 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: [SolutionHypospraySmall, BaseItem] id: BaseHypospray components: - type: Injector @@ -18,7 +18,25 @@ - type: Appearance - type: entity - parent: [BaseHypospray, BaseGrandTheftContraband] + abstract: true + parent: [SolutionHypospray, SolutionToolSmall] + id: SolutionHypospraySmall + components: + - type: Solution + solution: + maxVol: 20 + +- type: entity + abstract: true + parent: [SolutionHypospray, SolutionToolTiny] + id: SolutionHyposprayTiny + components: + - type: Solution + solution: + maxVol: 10 + +- type: entity + parent: [SolutionToolSmall, BaseHypospray, BaseGrandTheftContraband] id: Hypospray name: hypospray description: A sterile injector for rapid administration of drugs to patients. @@ -33,10 +51,6 @@ visible: false - type: Item sprite: Objects/Specific/Medical/hypospray.rsi - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 30 - type: RefillableSolution solution: hypospray - type: UseDelay @@ -69,17 +83,13 @@ visible: false - type: Item sprite: Objects/Specific/Medical/syndihypo.rsi - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 20 - type: SolutionContainerVisuals maxFillLevels: 4 fillBaseName: hypo_fill solutionName: hypospray - type: entity - parent: BaseHypospray + parent: [SolutionHyposprayTiny, BaseHypospray] id: BorgHypo name: borghypo description: A sterile injector for rapid administration of drugs to patients. This integrated model is specialized for use by medical borgs. @@ -94,10 +104,6 @@ visible: false - type: Item sprite: Objects/Specific/Medical/hypospray.rsi - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 10 - type: RefillableSolution solution: hypospray - type: SolutionContainerVisuals @@ -125,10 +131,9 @@ sprite: Objects/Specific/Medical/jetinjector.rsi - type: UseDelay delay: 1.5 - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 15 + - type: Solution + solution: + maxVol: 15 # Same as a syringe - type: SolutionContainerVisuals maxFillLevels: 3 fillBaseName: jetinjector_filled @@ -142,7 +147,7 @@ - JetInjectorInjectMode - type: entity - parent: JetInjector + parent: [SolutionHypospraySmall, JetInjector] id: AdvancedJetInjector name: advanced jet injector description: A pristine, fashionable, high quality injector. Allows for a faster injection, with a slightly larger capacity. @@ -157,10 +162,6 @@ visible: false - type: Item sprite: Objects/Specific/Medical/advanced_jetinjector.rsi - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 20 - type: SolutionContainerVisuals maxFillLevels: 4 - type: Injector @@ -176,15 +177,14 @@ suffix: Admeme description: The ultimate application of bluespace technology and rapid chemical administration. components: - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 3000 - - type: UseDelay - delay: 0.0 + - type: Solution + solution: + maxVol: 3000 # Badmin abuse + - type: UseDelay + delay: 0.0 - type: entity - parent: BaseHypospray + parent: BaseHypospray # I plan to resize medipens to 1x2 eventually:tm: id: ChemicalMedipen name: chemical medipen description: A single-dose, non-refillable medipen. @@ -208,14 +208,7 @@ color: "#439822" - state: base-colorB-inhand-right size: Tiny - - type: SolutionContainerManager - solutions: - pen: - maxVol: 15 - - type: ExaminableSolution - solution: pen - type: Injector - solutionName: pen currentTransferAmount: null activeModeProtoId: HyposprayInjectMode allowedModes: @@ -224,6 +217,7 @@ maxFillLevels: 1 changeColor: false emptySpriteName: firstaid_empty + solutionName: hypospray - type: PhysicalComposition materialComposition: Plastic: 50 @@ -231,7 +225,7 @@ - type: StaticPrice price: 75 # These are limited supply items. - type: TrashOnSolutionEmpty - solution: pen + solution: hypospray - type: entity parent: ChemicalMedipen @@ -248,15 +242,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: medipen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 15 - reagents: - - ReagentId: Epinephrine - Quantity: 12 - - ReagentId: TranexamicAcid - Quantity: 3 + - type: Solution + solution: + reagents: + - ReagentId: Epinephrine + Quantity: 15 + - ReagentId: TranexamicAcid + Quantity: 5 - type: entity parent: ChemicalMedipen @@ -285,15 +277,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: penacid_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 15 - reagents: - - ReagentId: Ultravasculine - Quantity: 10 - - ReagentId: Epinephrine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Ultravasculine + Quantity: 15 + - ReagentId: Epinephrine + Quantity: 5 - type: entity parent: ChemicalMedipen @@ -322,15 +312,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: bicpen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 20 - reagents: - - ReagentId: Bicaridine - Quantity: 15 - - ReagentId: TranexamicAcid - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Bicaridine + Quantity: 15 + - ReagentId: TranexamicAcid + Quantity: 5 - type: entity parent: ChemicalMedipen @@ -359,15 +347,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: dermpen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 20 - reagents: - - ReagentId: Dermaline - Quantity: 10 - - ReagentId: Leporazine - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Dermaline + Quantity: 10 + - ReagentId: Leporazine + Quantity: 10 - type: entity parent: ChemicalMedipen @@ -396,15 +382,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: arithpen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 20 - reagents: - - ReagentId: Arithrazine - Quantity: 15 - - ReagentId: Bicaridine - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Arithrazine + Quantity: 10 + - ReagentId: Bicaridine + Quantity: 10 - type: entity parent: ChemicalMedipen @@ -433,15 +417,15 @@ maxFillLevels: 1 changeColor: false emptySpriteName: punctpen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 15 - reagents: - - ReagentId: Puncturase - Quantity: 10 - - ReagentId: TranexamicAcid - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Puncturase + Quantity: 12 + - ReagentId: TranexamicAcid + Quantity: 5 + - ReagentId: Nothing # Needed for visuals to work, idk what else to put here :P + Quantity: 3 - type: entity parent: ChemicalMedipen @@ -470,15 +454,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: pyrapen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 20 - reagents: - - ReagentId: Pyrazine - Quantity: 10 - - ReagentId: Dermaline - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Pyrazine + Quantity: 10 + - ReagentId: Dermaline + Quantity: 10 - type: entity parent: ChemicalMedipen @@ -507,15 +489,13 @@ maxFillLevels: 1 changeColor: false emptySpriteName: dexpen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 40 - reagents: - - ReagentId: Saline - Quantity: 20 - - ReagentId: DexalinPlus - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Saline + Quantity: 10 + - ReagentId: DexalinPlus + Quantity: 10 - type: entity parent: ChemicalMedipen @@ -544,18 +524,21 @@ maxFillLevels: 1 changeColor: false emptySpriteName: hypovolemic_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 30 - reagents: - - ReagentId: Leporazine - Quantity: 10 - - ReagentId: Barozine - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Leporazine + Quantity: 10 + - ReagentId: Barozine + Quantity: 10 - type: entity - parent: [ChemicalMedipen, BaseSyndicateContraband] + abstract: true + parent: [SolutionToolSmall, ChemicalMedipen, BaseSyndicateContraband] + id: SyndicateMedipen # Interdyne gets more capacity + +- type: entity + parent: SyndicateMedipen id: Stimpack name: hyperzine injector description: A chemical injector containing a large shot of pure hyperzine. For when it's time to throw down. Effects last for about 60 seconds. @@ -579,13 +562,11 @@ layers: - state: stimpen map: ["enum.SolutionContainerLayers.Fill"] - - type: SolutionContainerManager - solutions: - pen: - maxVol: 30 - reagents: - - ReagentId: Stimulants - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: Stimulants + Quantity: 30 - type: SolutionContainerVisuals maxFillLevels: 1 changeColor: false @@ -594,7 +575,7 @@ price: 1500 - type: entity - parent: [ChemicalMedipen, BaseSyndicateContraband] + parent: [ SolutionToolTiny, SyndicateMedipen ] id: StimpackMini name: hyperzine microinjector description: A chemical microinjector containing a small shot of pure hyperzine. Effects last for about 30 seconds. @@ -618,13 +599,11 @@ layers: - state: microstimpen map: ["enum.SolutionContainerLayers.Fill"] - - type: SolutionContainerManager - solutions: - pen: - maxVol: 15 - reagents: - - ReagentId: Stimulants - Quantity: 15 + - type: Solution + solution: + reagents: + - ReagentId: Stimulants + Quantity: 15 - type: SolutionContainerVisuals maxFillLevels: 1 changeColor: false @@ -633,7 +612,7 @@ price: 583 # 3500 for 6 as a freaky fraction - type: entity - parent: [ChemicalMedipen, BaseSyndicateContraband] + parent: SyndicateMedipen id: CombatMedipen name: combat medipen description: A single-dose, non-refillable medipen containing a chemical cocktail that treats most forms of damage. @@ -659,27 +638,21 @@ maxFillLevels: 1 changeColor: false emptySpriteName: morphen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 30 - reagents: - - ReagentId: Omnizine - Quantity: 25 - - ReagentId: TranexamicAcid - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: Omnizine + Quantity: 25 + - ReagentId: TranexamicAcid + Quantity: 5 - type: StaticPrice price: 1500 - type: entity - parent: Pen # It is just like normal pen, isn't it? + parent: [Pen, SolutionHyposprayTiny] # It is just like normal pen, isn't it? id: Hypopen suffix: Hypopen components: - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 10 - type: RefillableSolution solution: hypospray refillTime: 0.75 @@ -733,10 +706,9 @@ maxFillLevels: 1 changeColor: false emptySpriteName: medipen_empty - - type: SolutionContainerManager - solutions: - pen: - maxVol: 60 - reagents: - - ReagentId: JuiceThatMakesYouWeh - Quantity: 60 + - type: Solution + solution: + maxVol: 60 + reagents: + - ReagentId: JuiceThatMakesYouWeh + Quantity: 60 # Need at least 50 to transform diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index 9e1ca7236b..f4125ca77e 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -100,7 +100,7 @@ # snap: Center - type: entity - parent: BaseItem + parent: [SolutionFood, SolutionTiny, BaseItem] id: Ash name: ash description: This used to be something, but now it's not. @@ -114,13 +114,11 @@ tags: - Burnt - Trash - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Ash - Quantity: 10 + - type: Solution + solution: + reagents: + - ReagentId: Ash + Quantity: 15 - type: SolutionSpiker sourceSolution: food ignoreEmpty: true @@ -135,22 +133,18 @@ name: ectoplasm description: Much less deadly in this form. components: - - type: Sprite - sprite: Mobs/Ghosts/revenant.rsi - state: ectoplasm - - type: Tag - tags: - - Trash - - Ectoplasm - - type: SolutionContainerManager - solutions: - food: - maxVol: 50 - reagents: - - ReagentId: Ash - Quantity: 25 - - ReagentId: Arcryox - Quantity: 25 - - type: GuideHelp - guides: - - MinorAntagonists + - type: Sprite + sprite: Mobs/Ghosts/revenant.rsi + state: ectoplasm + - type: Tag + tags: + - Trash + - Ectoplasm + - type: Solution + solution: + reagents: + - ReagentId: Fresium + Quantity: 15 + - type: GuideHelp + guides: + - MinorAntagonists diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml index aefcc5c8b4..68d3b0172c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml @@ -96,10 +96,6 @@ id: StrangePill description: This unusual pill bears no markings. There's no telling what it contains. components: - - type: SolutionContainerManager - solutions: - food: - maxVol: 20 - type: RandomFillSolution solution: food weightedRandomId: RandomFillStrangePill diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoborg/nocturine_hypo.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoborg/nocturine_hypo.yml index 120e7c9a0f..58aa84b927 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoborg/nocturine_hypo.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoborg/nocturine_hypo.yml @@ -4,13 +4,12 @@ name: nocturine hypo description: A self-refilling injector for rapid administration of nocturine to victms. components: - - type: SolutionContainerManager - solutions: - hypospray: - maxVol: 12 - reagents: - - ReagentId: Nocturine - Quantity: 12 + - type: Solution + solution: + maxVol: 12 + reagents: + - ReagentId: Nocturine + Quantity: 12 - type: SolutionRegeneration solution: hypospray generated: diff --git a/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml b/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml index 71b09ce007..8dcb1b8a4a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml @@ -5,10 +5,9 @@ components: - type: Item size: Tiny - - type: SolutionContainerManager + - type: SolutionManager solutions: - cube: - maxVol: 1 # needs room for water + - SolutionCube - type: RefillableSolution solution: cube - type: Reactive @@ -40,25 +39,36 @@ - LowImpassable - type: entity - parent: RehydratableItem + parent: Solution + id: SolutionCube # This will be deleted at a later date. Using solutions for this is really dumb. + name: cube + description: if you're reading this, nuh uh! file a bug report. + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: cube + solution: + maxVol: 1 + +- type: entity + abstract: true + parent: [SolutionTiny, SolutionFood, RehydratableItem] id: RehydratableAnimalCube description: Just add water! - abstract: true components: - type: Sprite sprite: Objects/Misc/monkeycube.rsi state: cube - - type: SolutionContainerManager - solutions: - cube: - maxVol: 19 # needs 1u room for water - reagents: # equals one piece of raw meat, ideally should vary depending on the animal type, but idk how to link this to biomass costs - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 + - type: Solution + solution: + reagents: # Same as raw meat. + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: UncookedAnimalProteins + Quantity: 20 + - ReagentId: Fat + Quantity: 5 - type: Edible - solution: cube - type: FlavorProfile flavors: - chewy @@ -151,17 +161,15 @@ name: carp cube description: Just add water! At your own risk. components: - - type: SolutionContainerManager - solutions: - cube: - maxVol: 24 # needs 1u room for water - reagents: # equals one piece of raw meat - plus a deadly toxin! - - ReagentId: UncookedAnimalProteins - Quantity: 9 - - ReagentId: Fat - Quantity: 9 - - ReagentId: CarpoToxin - Quantity: 5 + - type: Solution + solution: + reagents: + - ReagentId: CarpoToxin + Quantity: 5 + - ReagentId: UncookedAnimalProteins + Quantity: 20 + - ReagentId: Fat + Quantity: 5 - type: Rehydratable possibleSpawns: - MobCarp @@ -203,12 +211,6 @@ name: dehydrated space carp description: Looks like a plush toy carp, but just add water and it becomes a real-life space carp! components: - - type: SolutionContainerManager - solutions: - cube: - maxVol: 1 # needs room for water - - type: Edible - solution: cube - type: Fixtures # BaseItem from PlushieCarp overrides fixtures, making carp not react to extinguishers fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Objects/Tools/bucket.yml b/Resources/Prototypes/Entities/Objects/Tools/bucket.yml index 3c95afe69e..1f5c494299 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/bucket.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/bucket.yml @@ -1,5 +1,5 @@ - type: entity - parent: [ DrinkBaseMaterialStrongPlastic, DrinkBase, DrinkVisualsFill ] + parent: [ SolutionLarge, DrinkBaseMaterialStrongPlastic, DrinkBase, DrinkVisualsFill ] id: Bucket name: bucket description: It's a boring old bucket. @@ -9,20 +9,21 @@ - type: Sprite sprite: Objects/Tools/bucket.rsi - type: Item - size: Normal + size: Large + shape: + - 0,0,2,3 + - type: Solution + solution: + maxVol: 360 # 3 litres - type: Clothing sprite: Objects/Tools/bucket.rsi slots: - HEAD quickEquip: false - - type: SolutionContainerManager - solutions: - drink: - maxVol: 250 - type: SolutionTransfer - transferAmount: 100 - maxTransferAmount: 100 - minTransferAmount: 10 + transferAmount: 120 + maxTransferAmount: 360 + minTransferAmount: 60 - type: SpillWhenWorn solution: drink - type: SolutionContainerVisuals @@ -36,12 +37,11 @@ Plastic: 50 - type: entity - parent: Bucket + parent: [SolutionHuge, Bucket] id: BorgBucket name: internal tank description: The internal reservoir of a custodial cyborg, capable of holding a entire mop bucket worth of water. components: - - type: SolutionContainerManager - solutions: - drink: - maxVol: 500 + - type: SolutionTransfer + transferAmount: 240 + maxTransferAmount: 480 diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml index 23266e2d51..76d48ed4e3 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml @@ -3,9 +3,9 @@ # ability to have applied colors yet in GUIs. And also inhands... -Swept - type: entity - id: CableStack abstract: true - parent: BaseItem + parent: [SolutionCompositeSmallStackable, BaseItem] + id: CableStack name: cable stack suffix: Full components: @@ -16,6 +16,7 @@ stackType: Cable - type: Sprite sprite: Objects/Tools/cable-coils.rsi + - type: Appearance - type: Item sprite: Objects/Tools/cable-coils.rsi size: Small @@ -37,6 +38,8 @@ damageModifierSet: Metallic - type: Injurable damageContainer: Inorganic + - type: Extractable + grindableSolutionName: composite - type: Destructible thresholds: - trigger: @@ -70,19 +73,15 @@ - type: CablePlacer cablePrototypeID: CableHV blockingWireType: HighVoltage - - type: Appearance - - type: Extractable - grindableSolutionName: hvcable - - type: SolutionContainerManager - solutions: - hvcable: - reagents: - - ReagentId: Iron - Quantity: 3 - - ReagentId: Copper - Quantity: 2 - - ReagentId: Carbon #steel-reinforced - Quantity: 1 + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 2.5 + - ReagentId: Copper + Quantity: 2 + - ReagentId: Carbon #steel-reinforced + Quantity: 0.5 - type: entity parent: CableHVStack @@ -105,7 +104,7 @@ count: 1 - type: entity - parent: CableStack + parent: [SolutionCompositeCable, CableStack] id: CableMVStack name: MV cable coil suffix: Full @@ -124,21 +123,23 @@ - state: coilmv-30 map: ["base"] - type: Item - heldPrefix: coilmv + heldPrefix: composite - type: CablePlacer cablePrototypeID: CableMV blockingWireType: MediumVoltage - - type: Appearance - - type: Extractable - grindableSolutionName: mvcable - - type: SolutionContainerManager - solutions: - mvcable: - reagents: - - ReagentId: Iron - Quantity: 3 - - ReagentId: Copper - Quantity: 2 + +- type: entity + abstract: true + parent: SolutionCompositeSmallStackable + id: SolutionCompositeCable + components: + - type: Solution + solution: + reagents: + - ReagentId: Iron + Quantity: 3 + - ReagentId: Copper + Quantity: 2 - type: entity parent: CableMVStack @@ -161,7 +162,7 @@ count: 1 - type: entity - parent: CableStack + parent: [SolutionCompositeCable, CableStack] id: CableApcStack name: LV cable coil description: Low-Voltage stack of wires for connecting APCs to machines and other purposes. @@ -183,17 +184,6 @@ - type: CablePlacer cablePrototypeID: CableApcExtension blockingWireType: Apc - - type: Appearance - - type: Extractable - grindableSolutionName: lvcable - - type: SolutionContainerManager - solutions: - lvcable: - reagents: - - ReagentId: Iron - Quantity: 3 - - ReagentId: Copper - Quantity: 2 - type: entity parent: CableApcStack diff --git a/Resources/Prototypes/Entities/Objects/Tools/flare.yml b/Resources/Prototypes/Entities/Objects/Tools/flare.yml index 34c233921e..f0e27833c8 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flare.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flare.yml @@ -1,6 +1,6 @@ - type: entity name: emergency flare - parent: BaseItem + parent: [SolutionComposite, SolutionTiny, BaseItem] id: Flare description: A flare that produces a very bright light for a short while. Point the flame away from yourself. components: @@ -75,24 +75,22 @@ startValue: 10.0 endValue: 1.0 - type: Extractable - grindableSolutionName: flare - - type: SolutionContainerManager - solutions: - flare: - maxVol: 20 - reagents: - # flare casing - - ReagentId: Iron - Quantity: 10 - # red phosphorus = red flare trust - - ReagentId: Phosphorus - Quantity: 3 - - ReagentId: Carbon - Quantity: 1 - - ReagentId: Oxygen - Quantity: 2 - # fuel or something - - ReagentId: Charcoal - Quantity: 2 - - ReagentId: Sulfur - Quantity: 2 + grindableSolutionName: composite + - type: Solution + solution: + reagents: + # flare casing + - ReagentId: Iron + Quantity: 10 + # red phosphorus = red flare trust + - ReagentId: Phosphorus + Quantity: 6 + - ReagentId: Carbon + Quantity: 2 + - ReagentId: Oxygen + Quantity: 4 + # fuel or something + - ReagentId: Charcoal + Quantity: 4 + - ReagentId: Sulfur + Quantity: 4 diff --git a/Resources/Prototypes/Entities/Objects/Tools/lighters.yml b/Resources/Prototypes/Entities/Objects/Tools/lighters.yml index 2d3e55c6ed..159da3c5f4 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/lighters.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/lighters.yml @@ -1,8 +1,8 @@ - type: entity + abstract: true + parent: [SolutionWelder, BaseItem] + id: BaseLighter name: basic lighter - parent: BaseItem - id: Lighter - description: "A simple plastic cigarette lighter." components: - type: IgnitionSource ignited: false @@ -14,11 +14,51 @@ collection: lighterOffSounds - type: ItemToggleMeleeWeapon activatedDamage: - types: - Heat: 1 + types: + Heat: 1 - type: ItemToggleSize activatedSize: Small - type: ItemToggleHot + - type: Appearance + - type: Item + size: Tiny + - type: UseDelay + - type: RefillableSolution + solution: Welder + - type: MeleeWeapon + wideAnimationRotation: 180 + damage: + types: + Blunt: 0 + - type: Welder + fuelConsumption: 0.01 + fuelLitCost: 0.1 + tankSafe: true + - type: PointLight + enabled: false + netsync: false + radius: 1.1 #smallest possible + color: orange + - type: ItemTogglePointLight + - type: PhysicalComposition + +- type: entity + abstract: true + parent: [SolutionWelder, SolutionToolVeryTiny] + id: SolutionLighter + components: + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 7.5 + +- type: entity + name: basic lighter + parent: [SolutionLighter, BaseLighter] + id: Lighter + description: "A simple plastic cigarette lighter." + components: - type: Sprite sprite: Objects/Tools/Lighters/lighters.rsi layers: @@ -30,7 +70,6 @@ visible: false shader: unshaded map: [ "flame" ] - - type: Appearance - type: RandomSprite available: - skin: @@ -61,38 +100,11 @@ - state: inhand-right-flame shader: unshaded - type: Item - size: Tiny sprite: Objects/Tools/Lighters/lighters.rsi - - type: UseDelay - - type: RefillableSolution - solution: Welder - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 8 - maxVol: 8 #uses less fuel than a welder, so this isnt as bad as it looks - - type: MeleeWeapon - wideAnimationRotation: 180 - damage: - types: - Blunt: 0 - - type: Welder - fuelConsumption: 0.01 - fuelLitCost: 0.1 - tankSafe: true - - type: PointLight - enabled: false - netsync: false - radius: 1.1 #smallest possible - color: orange - - type: ItemTogglePointLight - - type: PhysicalComposition - type: entity name: cheap lighter - parent: Lighter + parent: BaseLighter id: CheapLighter description: "A dangerously inexpensive plastic lighter, don't burn your thumb!" components: @@ -111,17 +123,13 @@ available: - skin: cheap_icon_base: Rainbow - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 4 - maxVol: 4 #uses less fuel than a welder, so this isnt as bad as it looks + - type: Welder + fuelConsumption: 0.02 + fuelLitCost: 0.2 - type: entity name: flippo lighter - parent: BaseItem + parent: BaseBrandedLighter id: FlippoLighter description: "A rugged metal lighter, lasts quite a while." components: @@ -140,28 +148,9 @@ map: ["flame"] visible: false shader: unshaded - - type: ItemToggle - predictable: false - soundActivate: - path: /Audio/Items/Lighters/zippo_open.ogg - params: - volume: -5 - soundDeactivate: - path: /Audio/Items/Lighters/zippo_close.ogg - params: - volume: -5 - - type: ItemToggleMeleeWeapon - activatedDamage: - types: - Heat: 1 - - type: ItemToggleSize - activatedSize: Small - - type: ItemToggleHot - type: Item - size: Tiny sprite: Objects/Tools/Lighters/lighters.rsi heldPrefix: zippo - - type: Appearance - type: GenericVisualizer visuals: enum.ToggleableVisuals.Enabled: @@ -177,17 +166,6 @@ base: True: { visible: false } False: { visible: true } - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 12 - maxVol: 12 #uses less fuel than a welder, so this isnt as bad as it looks - - type: Welder - fuelConsumption: 0.01 - fuelLitCost: 0.1 - tankSafe: true - type: ToggleableVisuals spriteLayer: lighter_flame inhandVisuals: @@ -197,20 +175,8 @@ right: - state: zippo-inhand-right-flame shader: unshaded - - type: MeleeWeapon - wideAnimationRotation: 180 - damage: - types: - Blunt: 1 # does a little bit of damage on hit when off - type: PointLight - enabled: false - netsync: false radius: 1.2 #slightly stronger than the other lighters - color: orange - - type: ItemTogglePointLight - - type: UseDelay - - type: IgnitionSource - ignited: false - type: entity name: flippo engraved lighter @@ -238,7 +204,7 @@ - type: entity abstract: true - parent: BaseItem + parent: [SolutionToolWelderMini, BaseLighter] id: BaseBrandedLighter components: - type: ItemToggle @@ -251,23 +217,6 @@ path: /Audio/Items/Lighters/zippo_close.ogg params: volume: -5 - - type: ItemToggleMeleeWeapon - activatedDamage: - types: - Heat: 1 - - type: ItemToggleSize - activatedSize: Small - - type: ItemToggleHot - - type: Item - size: Tiny - - type: Appearance - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 12 - maxVol: 12 - type: Sprite layers: - state: icon @@ -306,10 +255,6 @@ right: - state: inhand-right-lit shader: unshaded - - type: ItemTogglePointLight - - type: UseDelay - - type: IgnitionSource - ignited: false - type: entity parent: [BaseBrandedLighter, BaseSyndicateContraband] @@ -349,8 +294,8 @@ shader: unshaded map: [ "flame" ] - type: Welder # the single worst lighter invented by mankind - fuelConsumption: 0.2 - fuelLitCost: 0.1 + fuelConsumption: 0.4 + fuelLitCost: 0.2 tankSafe: false - type: Item sprite: Objects/Tools/Lighters/lighters.rsi @@ -378,13 +323,6 @@ damage: types: Heat: 2 - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 3 - maxVol: 3 - type: entity parent: [BaseBrandedLighter, BaseSyndicateContraband] @@ -451,17 +389,15 @@ radius: 2 color: blue - type: RefillableSolution - solution: Welder - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: Plasma - Quantity: 10 - maxVol: 10 + solution: welder + - type: Solution + solution: + reagents: + - ReagentId: Plasma + Quantity: 15 - type: entity - parent: [BaseBrandedLighter, BaseCentcommContraband] + parent: [SolutionGinormous, BaseBrandedLighter, BaseCentcommContraband] id: CentCommFlippo name: Gilded CentComm Flippo description: "An Ornate, jade embossed and gilded flippo frame containing a bluespace powered jet. The latch is secured by a miniature access reader that only responds to CentComm officials. The nicest lighter known to man." @@ -485,13 +421,11 @@ color: Gold - type: RefillableSolution solution: Welder - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: Plasma - Quantity: 999 - maxVol: 999 + - type: Solution + solution: + reagents: + - ReagentId: Plasma + Quantity: 480 - type: Tool useSound: collection: Welder @@ -609,20 +543,9 @@ tags: - DonkPocket - Meat - - type: SolutionContainerManager + - type: SolutionManager solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 12 - maxVol: 12 - food: - maxVol: 20 - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Omnizine - Quantity: 10 + - SolutionFoodDonkpocketWarm - type: FlavorProfile flavors: - bread diff --git a/Resources/Prototypes/Entities/Objects/Tools/welders.yml b/Resources/Prototypes/Entities/Objects/Tools/welders.yml index 8833047777..6162f25a66 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/welders.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/welders.yml @@ -1,20 +1,18 @@ - type: entity - name: welding tool - parent: BaseItem - id: Welder - description: "Melts anything as long as it's fueled, don't forget your eye protection!" + abstract: true + parent: [SolutionWelder, BaseItem] + id: BaseWelder components: - - type: EmitSoundOnLand - sound: - path: /Audio/Items/welder_drop.ogg - type: Sprite - sprite: Objects/Tools/welder.rsi layers: - state: icon - state: welder_flame visible: false shader: unshaded - map: ["enum.ToggleableVisuals.Layer"] + map: [ "enum.ToggleableVisuals.Layer" ] + - type: EmitSoundOnLand + sound: + path: /Audio/Items/welder_drop.ogg - type: GenericVisualizer visuals: enum.ToggleableVisuals.Enabled: @@ -50,8 +48,8 @@ deactivatedSoundOnHitNoDamage: collection: MetalThud activatedDamage: - types: - Heat: 8 + types: + Heat: 8 - type: ItemToggleSize activatedSize: Large - type: ItemToggleHot @@ -77,14 +75,7 @@ soundHit: collection: MetalThud - type: RefillableSolution - solution: Welder - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 100 - maxVol: 100 + solution: welder - type: Tool useSound: collection: Welder @@ -106,9 +97,30 @@ - type: IgnitionSource temperature: 700 +- type: entity + parent: [SolutionToolWelder, BaseWelder] + id: Welder + name: welding tool + description: "Melts anything as long as it's fueled, don't forget your eye protection!" + components: + - type: Sprite + sprite: Objects/Tools/welder.rsi + +- type: entity + parent: [SolutionWelder, SolutionSmall] + id: SolutionToolWelder + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 100 # TODO: This needs to be dropped to 30 + reagents: + - ReagentId: WeldingFuel + Quantity: 100 + - type: entity name: industrial welding tool - parent: Welder + parent: [SolutionToolWelderIndsutrial, BaseWelder] id: WelderIndustrial description: "An industrial welder with over double the fuel capacity." components: @@ -116,13 +128,18 @@ sprite: Objects/Tools/welder_industrial.rsi - type: Item sprite: Objects/Tools/welder_industrial.rsi - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 250 - maxVol: 250 + +- type: entity + parent: [SolutionWelder, SolutionToolNormal] + id: SolutionToolWelderIndsutrial + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 250 # TODO: This needs to be dropped to 60 + reagents: + - ReagentId: WeldingFuel + Quantity: 250 - type: entity name: advanced industrial welding tool @@ -134,19 +151,12 @@ sprite: Objects/Tools/welder_industrialadv.rsi - type: Item sprite: Objects/Tools/welder_industrialadv.rsi - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 250 - maxVol: 250 - type: Tool speedModifier: 1.3 - type: entity name: experimental welding tool - parent: Welder + parent: [SolutionToolWelderExperimental, BaseWelder] id: WelderExperimental description: "An experimental welder capable of self-fuel generation and less harmful to the eyes." components: @@ -154,19 +164,12 @@ sprite: Objects/Tools/welder_experimental.rsi - type: Item sprite: Objects/Tools/welder_experimental.rsi - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 1000 - maxVol: 1000 - type: PointLight enabled: false radius: 1.5 color: lightblue - type: SolutionRegeneration - solution: Welder + solution: welder generated: reagents: - ReagentId: WeldingFuel @@ -174,9 +177,20 @@ - type: RequiresEyeProtection statusEffectTime: 5 # less harmful; sunglasses can block it +- type: entity + parent: [SolutionWelder, SolutionToolGinormous] # Bluespace technology + id: SolutionToolWelderExperimental + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 480 # Literally infinite so this number basically doesn't matter, also this should be a battery tbqh. + - type: entity name: emergency welding tool - parent: Welder + parent: [SolutionToolWelderMiniEmergency, BaseWelder] id: WelderMini description: "A miniature welder used during emergencies." components: @@ -186,14 +200,7 @@ size: Tiny sprite: Objects/Tools/welder_mini.rsi - type: RefillableSolution - solution: Welder - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 50 - maxVol: 50 + solution: welder - type: Tool speedModifier: 0.7 - type: PointLight @@ -201,6 +208,29 @@ radius: 1.0 color: orange +- type: entity + parent: [SolutionWelder, SolutionTiny] + id: SolutionToolWelderMiniEmergency # TODO, replace with below :( + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 50 # TODO: This needs to be dropped to 15 + reagents: + - ReagentId: WeldingFuel + Quantity: 50 + +- type: entity + parent: [SolutionWelder, SolutionToolTiny] + id: SolutionToolWelderMini + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 15 + - type: entity parent: [ Welder, BaseXenoborgContraband ] id: RefuelingWelder @@ -213,7 +243,7 @@ fuelConsumption: 2 fuelLitCost: 1 - type: SolutionRegeneration - solution: Welder + solution: welder generated: reagents: - ReagentId: WeldingFuel diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml index e28996656e..27862d7a4f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml @@ -28,16 +28,13 @@ - ExCable overTile: true - type: Appearance - - type: Extractable - grindableSolutionName: excable - - type: SolutionContainerManager - solutions: - mvcable: - reagents: - - ReagentId: Thermite - Quantity: 3 - - ReagentId: Charcoal - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Thermite + Quantity: 3 + - ReagentId: Charcoal + Quantity: 2 - type: Damageable - type: Injurable damageContainer: StructuralInorganic diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml index a8c3ecfd30..5eabdd8515 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml @@ -97,13 +97,11 @@ - state: base map: ["enum.OpenableVisuals.Layer"] - state: fuel - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: WeldingFuel - Quantity: 30 + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 60 - type: Construction node: fuel defaultTarget: firebomb diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml index fe1e7641c4..e02400e892 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -115,7 +115,7 @@ state: "practice" - type: entity - parent: [ BaseShellShotgun, BaseSecurityContraband ] + parent: [ SolutionAmmo, SolutionToolVeryTiny, BaseShellShotgun, BaseSecurityContraband ] id: ShellTranquilizer name: shell (.50 tranquilizer) description: The standard cartridge used by most modern shotguns. Tranquilizer ammunition contains a single ballistic syringe loaded with a strong sedative that harmlessly puts targets to sleep. @@ -131,12 +131,11 @@ - type: CartridgeAmmo proto: PelletShotgunTranquilizer - type: ChemicalAmmo - - type: SolutionContainerManager - solutions: - ammo: - reagents: - - ReagentId: ChloralHydrate - Quantity: 7 + - type: Solution + solution: + reagents: + - ReagentId: ChloralHydrate + Quantity: 7.5 - type: SolutionTransfer maxTransferAmount: 7 - type: SpentAmmoVisuals diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml index 2a4f513650..a490c77211 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml @@ -126,7 +126,7 @@ spread: 45 - type: entity - parent: BaseBulletPractice + parent: [SolutionAmmo, SolutionToolVeryTiny, BaseBulletPractice] id: PelletShotgunTranquilizer categories: [ HideSpawnMenu ] name: pellet (.50 tranquilizer) @@ -135,12 +135,8 @@ damage: types: Blunt: 1 - - type: SolutionContainerManager - solutions: - ammo: - maxVol: 15 - type: SolutionInjectOnProjectileHit - transferAmount: 15 + transferAmount: 7.5 solution: ammo - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml index 2d4d00ac76..47817e981c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml @@ -1,7 +1,7 @@ - type: entity - id: WeaponWaterGunBase abstract: true - parent: BaseItem + parent: [SolutionGun, SolutionSmall, BaseItem] # 12 shots + id: WeaponWaterGunBase components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi @@ -20,10 +20,6 @@ - SemiAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/water_spray.ogg - - type: SolutionContainerManager - solutions: - chamber: - maxVol: 50 #10 shots - type: SolutionAmmoProvider solutionId: chamber proto: BulletWaterShot @@ -51,8 +47,8 @@ Plastic: 150 - type: entity - id: WeaponWaterPistol parent: WeaponWaterGunBase + id: WeaponWaterPistol name: water pistol description: The dinkiest of water-based weaponry. You swear the trigger doesn't do anything. components: @@ -73,8 +69,8 @@ icon: Rainbow - type: entity + parent: [SolutionNormal, WeaponWaterGunBase] # 24 shots id: WeaponWaterBlaster - parent: WeaponWaterGunBase name: water blaster description: With this bad boy, you'll be the coolest kid at the summer barbecue. components: @@ -86,10 +82,6 @@ - FullAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/water_spray.ogg - - type: SolutionContainerManager - solutions: - chamber: - maxVol: 100 #20 shots - type: Sprite sprite: Objects/Weapons/Guns/Pistols/soaker.rsi layers: @@ -112,8 +104,8 @@ detail2: Sixteen - type: entity + parent: [SolutionHuge, WeaponWaterGunBase] # 96 shots id: WeaponWaterBlasterSuper - parent: WeaponWaterGunBase name: super water blaster description: No! No! Not in the eyes! components: @@ -125,10 +117,6 @@ - FullAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/water_spray.ogg - - type: SolutionContainerManager - solutions: - chamber: - maxVol: 500 #100 shots - type: Sprite sprite: Objects/Weapons/Guns/Pistols/soaker.rsi layers: @@ -140,8 +128,8 @@ - type: Item sprite: Objects/Weapons/Guns/Pistols/soaker.rsi size: Large - shape: # SMG size. - - 0,0,2,1 + shape: # Rifle Size. + - 0,0,2,2 - type: RandomSprite getAllGroups: true available: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml index d61b78f1ed..43a8190780 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/arrows.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [BaseItem, SolutionDart] id: BaseArrow abstract: true components: @@ -41,17 +41,13 @@ damage: types: Piercing: 25 - - type: SolutionContainerManager - solutions: - ammo: - maxVol: 2 - type: RefillableSolution # This is sus. You can't really just run an arrowhead under a sink faucet. - solution: ammo + solution: melee - type: InjectableSolution - solution: ammo + solution: melee - type: SolutionInjectOnEmbed transferAmount: 2 - solution: ammo + solution: melee - type: SolutionTransfer maxTransferAmount: 2 - type: Appearance diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/meteors.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/meteors.yml index 45aadfbc57..bf22e87158 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/meteors.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/meteors.yml @@ -191,6 +191,11 @@ maxSpawn: 8 spawnAfter: 0.5 +- type: entity + abstract: true + parent: [SolutionHuge, BaseMeteor] + id: BaseSolutionMeteor + - type: entity parent: BaseMeteor id: MeteorUrist @@ -200,13 +205,11 @@ components: - type: Sprite state: human_pixel - - type: SolutionContainerManager - solutions: - blood: - maxVol: 1000 - reagents: - - ReagentId: Blood - Quantity: 1000 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 480 - type: Explosive totalIntensity: 25 - type: Destructible @@ -223,7 +226,7 @@ params: volume: 10 - !type:SpillBehavior - solution: blood + solution: solution - !type:SpawnEntitiesBehavior spawn: FoodMeatHuman: @@ -233,7 +236,7 @@ # Cow Meteor - type: entity - parent: BaseMeteor + parent: BaseSolutionMeteor id: MeteorCow name: Cosmic cow description: Moo-ving at relativistic speeds! @@ -243,13 +246,11 @@ state: cow_pixel - type: Explosive totalIntensity: 25 - - type: SolutionContainerManager - solutions: - milk: - maxVol: 500 - reagents: - - ReagentId: Milk - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Milk + Quantity: 480 - type: Destructible thresholds: - trigger: @@ -262,7 +263,7 @@ sound: path: /Audio/Animals/cow_moo.ogg - !type:SpillBehavior - solution: milk + solution: solution - !type:SpawnEntitiesBehavior spawn: FoodMeat: @@ -275,7 +276,7 @@ # Clown Meteor - type: entity - parent: BaseMeteor + parent: BaseSolutionMeteor id: MeteorClown name: Honksteroid description: The final honkening! @@ -285,13 +286,11 @@ state: clown_pixel - type: Explosive totalIntensity: 25 - - type: SolutionContainerManager - solutions: - laughter: - maxVol: 500 - reagents: - - ReagentId: Laughter - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Laughter + Quantity: 480 - type: Destructible thresholds: - trigger: @@ -304,7 +303,7 @@ sound: path: /Audio/Items/bikehorn.ogg - !type:SpillBehavior - solution: laughter + solution: solution - !type:SpawnEntitiesBehavior spawn: FoodMeatClown: @@ -320,7 +319,7 @@ # Potato Meteor - type: entity - parent: BaseMeteor + parent: BaseSolutionMeteor id: MeteorPotato name: Space potato description: A starchy threat from the depths of the space. Contains 200% of your daily sodium intake! @@ -329,13 +328,11 @@ state: potato - type: Explosive totalIntensity: 25 - - type: SolutionContainerManager - solutions: - ketchup: - maxVol: 100 - reagents: - - ReagentId: Ketchup - Quantity: 100 + - type: Solution + solution: + reagents: + - ReagentId: Ketchup + Quantity: 120 - type: Destructible thresholds: - trigger: @@ -345,7 +342,7 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - !type:SpillBehavior - solution: ketchup + solution: solution - !type:SpawnEntitiesBehavior spawn: FoodMealFries: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 721a89964b..b3c49b1d65 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -1012,6 +1012,7 @@ muzzleFlash: null - type: entity + parent: [SolutionVapor, SolutionSmall] id: BulletWaterShot name: water categories: [ HideSpawnMenu ] @@ -1034,10 +1035,6 @@ map: ["enum.VaporVisualLayers.Base"] - type: Ammo muzzleFlash: null - - type: SolutionContainerManager - solutions: - vapor: - maxVol: 50 - type: Fixtures fixtures: projectile: @@ -1407,7 +1404,7 @@ - Opaque - type: entity - parent: BaseBullet + parent: [SolutionAmmo, BaseBullet] id: EnergyCrossbowBolt categories: [ HideSpawnMenu ] name: energy bolt @@ -1436,13 +1433,12 @@ drop: false - type: StaminaDamageOnCollide #additional stam damage to make repeated pushups less of a viable counter damage: 45 - - type: SolutionContainerManager - solutions: - bolt: - maxVol: 1.5 - reagents: - - ReagentId: Toxin - Quantity: 1.5 + - type: Solution + solution: + maxVol: 1.5 + reagents: + - ReagentId: Toxin + Quantity: 1.5 - type: SolutionInjectOnProjectileHit transferAmount: 1.5 - solution: bolt + solution: ammo diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml index 13bac56bcd..8062684d08 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml @@ -40,7 +40,7 @@ - type: entity name: Kardashev-Mosin - parent: [BaseWeaponSniper, BaseGunWieldable, BaseMajorContraband] + parent: [BaseWeaponSniper, BaseGunWieldable, SolutionDart, BaseMajorContraband] id: WeaponSniperMosin description: A true relic, the Kardashev-Mosin has served in nearly every armed conflict since its creation 670 years ago. The bolt-action design of the rifle remains virtually identical to its original design, whether used for hunting, sniping, or endless trench warfare. Loads 10 rounds of .30 rifle. components: @@ -71,10 +71,6 @@ - type: MeleeRequiresWield - type: AltFireMelee attackType: Heavy - - type: SolutionContainerManager - solutions: - melee: - maxVol: 2 - type: MeleeChemicalInjector solution: melee - type: RefillableSolution diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml index bfdd94add6..c1fc5668b5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml @@ -33,17 +33,10 @@ Slash: 4 Structural: 4 - type: Item - size: Normal + size: Large + shape: + - 0,0,2,2 sprite: Objects/Weapons/Melee/chainsaw.rsi - type: DisarmMalus - - type: RefillableSolution - solution: Welder - - type: SolutionContainerManager - solutions: - Welder: - reagents: - - ReagentId: WeldingFuel - Quantity: 300 - maxVol: 300 - type: UseDelay delay: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index b86b849874..0399ac8a1f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -1,6 +1,6 @@ - type: entity name: spear - parent: [BaseItem, BaseMinorContraband] + parent: [BaseItem, SolutionDart, BaseMinorContraband] id: Spear description: Definition of a Classic. Keeping murder affordable since 200,000 BCE. components: @@ -58,10 +58,6 @@ - type: Construction graph: Spear node: spear - - type: SolutionContainerManager - solutions: - melee: - maxVol: 2 - type: MeleeChemicalInjector solution: melee - type: RefillableSolution @@ -119,7 +115,6 @@ equippedFillBaseName: -fill- equippedMaxFillLevels: 1 - - type: entity name: reinforced spear parent: Spear diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 6d5830e161..c839af07f0 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -71,10 +71,9 @@ - type: StaticPrice price: 80 - type: Riggable - - type: SolutionContainerManager + - type: SolutionManager solutions: - battery: - maxVol: 5 + - SolutionRiggable - type: InjectableSolution solution: battery - type: DrawableSolution diff --git a/Resources/Prototypes/Entities/Objects/base_solution.yml b/Resources/Prototypes/Entities/Objects/base_solution.yml new file mode 100644 index 0000000000..e492424779 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/base_solution.yml @@ -0,0 +1,363 @@ +- type: entity + id: Solution # Not abstract because it's a fallback for missing solution protos! + categories: [ HideSpawnMenu ] + name: solution + components: + - type: Solution + +- type: entity + id: SolutionCryo + categories: [ HideSpawnMenu ] + name: solution + components: + - type: Solution + solution: + canReact: false + +# Solution Types + +- type: entity + abstract: true + parent: Solution + id: SolutionBeaker + components: + - type: Solution + id: beaker + +- type: entity + abstract: true + parent: Solution + id: SolutionInjector + components: + - type: Solution + id: injector + +- type: entity + abstract: true + parent: Solution + id: SolutionHypospray + components: + - type: Solution + id: hypospray + +- type: entity + abstract: true + parent: Solution + id: SolutionFood # Generally these should only ever be half full. That way they can be poisoned! + components: + - type: Solution + id: food + +- type: entity + abstract: true + parent: Solution + id: SolutionDrink + components: + - type: Solution + id: drink + +- type: entity + abstract: true + parent: Solution + id: SolutionSmokable + components: + - type: Solution + id: smokable + +- type: entity + abstract: true + parent: Solution + id: SolutionWeapon + components: + - type: Solution + id: melee + +- type: entity + abstract: true + parent: Solution + id: SolutionGun + components: + - type: Solution + id: chamber + +- type: entity + abstract: true + parent: Solution + id: SolutionAmmo + components: + - type: Solution + id: ammo + +- type: entity + abstract: true + parent: Solution + id: SolutionVapor # TODO Check if this compsystem is identical to spray... + components: + - type: Solution + id: vapor + +- type: entity + abstract: true + parent: Solution + id: SolutionSpray + components: + - type: Solution + id: spray + +- type: entity + abstract: true + parent: Solution + id: SolutionTank + components: + - type: Solution + id: tank + +- type: entity + abstract: true + parent: Solution + id: SolutionMop + components: + - type: Solution + id: absorbed + +- type: entity + abstract: true + parent: Solution + id: SolutionDrain + components: + - type: Solution + id: drainBuffer + +- type: entity + abstract: true + parent: Solution + id: SolutionWelder # TODO Refactor fuel usage to comply with welders becoming 30u-60u + components: + - type: Solution + id: welder + +- type: entity + abstract: true + parent: Solution + id: SolutionComposite + components: + - type: Solution + id: composite + +- type: entity + abstract: true + parent: Solution + id: SolutionLube + components: + - type: Solution + id: lube # For autolathes to run faster or slower + +# Solution Sizes + +## Of note, maxVol will be moved out of the Solution class into the SolutionComponent in the future +## These prototypes are meant to generally correspond to an itemSizePrototype, and be used with containers of the same type +## So a beaker will use solutions with a parent of SolutionSmall and a large beaker uses SolutionNormal +## Items with utility or tool functionality should generally inherit from one sizer smaller than their item size. +## It's fine to fine tune these values for specific applications, but generally you shouldn't go above the value the most relevant parent would have. +## Lastly, 120u equals about 1 liter. It was random before but that's the conversion now. + +## Very Tiny + +- type: entity + parent: Solution + id: SolutionVeryTiny # For things smaller than tiny + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 15 + +- type: entity + parent: Solution + id: SolutionToolVeryTiny + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 7.5 + +## Tiny + +- type: entity + parent: Solution + id: SolutionTiny + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 30 + +- type: entity + abstract: true + parent: [SolutionComposite, BaseItem] + id: SolutionCompositeTinyStackable + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 2.5 + - type: Item + size: Tiny + +- type: entity + parent: Solution + id: SolutionToolTiny + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 15 + +## Small + +- type: entity + parent: Solution + id: SolutionSmall + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 60 + +- type: entity + abstract: true + parent: [SolutionComposite, BaseItem] + id: SolutionCompositeSmallStackable + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 5 + - type: Item + size: Small + +- type: entity + parent: Solution + id: SolutionToolSmall + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 30 + +## Normal + +- type: entity + parent: Solution + id: SolutionNormal + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 120 + +- type: entity + abstract: true + parent: [SolutionComposite, BaseItem] + id: SolutionCompositeNormalStackable + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 10 + - type: Item + size: Normal + +- type: entity + parent: Solution + id: SolutionToolNormal + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 60 + +## Large + +- type: entity + parent: Solution + id: SolutionLarge + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 240 + +- type: entity + parent: Solution + id: SolutionToolLarge + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 120 + +## Huge + +- type: entity + parent: Solution + id: SolutionHuge + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 480 + +- type: entity + parent: [SolutionDrink, SolutionHuge] + id: SolutionDrinkHuge + categories: [ HideSpawnMenu ] + +## Ginormous + +- type: entity + parent: Solution + id: SolutionGinormous + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 960 + +- type: entity + parent: Solution + id: SolutionToolGinormous + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 480 + +## Below sizes are for solutions attached to entities bigger than Ginormous, aka not items or maybe two handed? + +# List of sizes neede still + +## Huge +# 400 - GasCondenser + +## IDK +# 3000 - Nuclear Tap + +- type: entity + parent: Solution + id: Solution3840 # I can't think of a better name, fight me + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 3840 + +- type: entity + abstract: true + parent: Solution + id: SolutionTile # Tile Anchored, Cannot be moved. Anything more than this and you should just not impose a max volume. + categories: [ HideSpawnMenu ] + components: + - type: Solution + solution: + maxVol: 7680 diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml b/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml index 0be3cb900c..571ece4518 100644 --- a/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml +++ b/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml @@ -58,9 +58,9 @@ sound: collection: MetalGlassBreak - type: Storage - maxItemSize: Normal + maxItemSize: Large grid: - - 0,0,19,5 + - 0,0,15,11 - type: ReagentDispenser beakerSlot: whitelistFailPopup: reagent-dispenser-component-cannot-put-entity-message diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml b/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml index 55d611808c..6e2979b653 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml @@ -233,8 +233,11 @@ - !type:SpawnEntitiesBehavior spawn: SheetSteel1: - min: 2 - max: 2 + min: 0 + max: 1 + SheetPlasteel1: + min: 0 + max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - type: IconSmooth diff --git a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml index 8bfe0dcc06..19fb548789 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml @@ -1,8 +1,9 @@ - type: entity - name: sink + parent: [SolutionTank, SolutionHuge] id: SinkEmpty - suffix: Empty + name: sink description: The faucets have been tightened to the maximum possible torque but are still known to drip. + suffix: Empty placement: mode: SnapgridCenter components: @@ -20,12 +21,9 @@ maxFillLevels: 1 fillBaseName: sink-fill- solutionName: drainBuffer - - type: SolutionContainerManager + - type: SolutionManager solutions: - drainBuffer: - maxVol: 100 - tank: - maxVol: 500 + - SolutionDrainNormal - type: SolutionRegeneration solution: tank generated: @@ -69,24 +67,20 @@ - type: entity - name: sink - id: Sink parent: SinkEmpty + id: Sink suffix: Water components: - - type: SolutionContainerManager - solutions: - drainBuffer: - maxVol: 200 - tank: - reagents: - - ReagentId: Water - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 480 - type: entity - name: wide sink - id: SinkWide parent: Sink + id: SinkWide + name: wide sink components: - type: Sprite sprite: Structures/Furniture/sink.rsi @@ -121,11 +115,8 @@ parent: SinkStemless suffix: Water components: - - type: SolutionContainerManager - solutions: - drainBuffer: - maxVol: 100 - tank: - reagents: - - ReagentId: Water - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 480 diff --git a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml index 79fc6f4ad9..c2853701c4 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: [ DisposalUnitBase, SeatBase ] + parent: [ SolutionTank, SolutionHuge, DisposalUnitBase, SeatBase] id: BaseToilet name: toilet description: The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean. @@ -48,6 +48,7 @@ containers: stash: !type:ContainerSlot {} disposals: !type:Container + solutions: !type:Container - type: Physics bodyType: Static - type: Fixtures @@ -83,12 +84,9 @@ - type: Rummageable table: !type:NestedSelector tableId: RatKingLoot - - type: SolutionContainerManager + - type: SolutionManager solutions: - drainBuffer: - maxVol: 100 - tank: - maxVol: 500 + - SolutionDrainNormal - type: SolutionRegeneration solution: tank generated: @@ -134,17 +132,13 @@ id: ToiletDirtyWater suffix: Dirty Water components: - - type: SolutionContainerManager - solutions: - drainBuffer: - maxVol: 100 - tank: - maxVol: 500 - reagents: - - ReagentId: Water - Quantity: 180 - - ReagentId: GastroToxin - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 180 + - ReagentId: GastroToxin + Quantity: 20 - type: entity parent: ToiletEmpty @@ -213,16 +207,12 @@ components: - type: StealTarget stealGroup: ToiletGoldenDirtyWater - - type: SolutionContainerManager - solutions: - drainBuffer: - maxVol: 100 - tank: - maxVol: 500 - reagents: - - ReagentId: Water - Quantity: 160 - - ReagentId: Gold - Quantity: 20 - - ReagentId: GastroToxin - Quantity: 20 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 160 + - ReagentId: Gold + Quantity: 20 + - ReagentId: GastroToxin + Quantity: 20 diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml index 02310ba196..d858bdcba0 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml @@ -106,10 +106,9 @@ - type: EmptyOnMachineDeconstruct containers: - scanner-body - - type: SolutionContainerManager + - type: SolutionManager solutions: - injectionBuffer: - maxVol: 50 + - SolutionCryoBuffer - type: CryoPod - type: CryoPodAir - type: Climbable # so that ejected bodies don't get stuck @@ -120,6 +119,14 @@ guides: - Cryogenics +- type: entity + parent: SolutionSmall + id: SolutionCryoBuffer + categories: [ HideSpawnMenu ] + components: + - type: Solution + id: injectionBuffer + - type: entity parent: BaseMachine id: CryoPodDestroyed diff --git a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml index 7578820bd8..9fd79cc739 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml @@ -90,9 +90,8 @@ tags: - Bottle - PillCanister - - type: SolutionContainerManager - solutions: - buffer: {} + - type: Solution # Chemmaster is special in how it interacts with reagents. For now. + id: buffer - type: DumpableSolution solution: buffer unlimited: true diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index a34bab04da..7045fd3a24 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -66,10 +66,9 @@ modifiers: SpaceLube: 0.25 SpaceGlue: 5 - - type: SolutionContainerManager + - type: SolutionManager solutions: - lube: - maxVol: 250 + - SolutionLatheLube - type: Spillable solution: lube - type: RefillableSolution @@ -77,6 +76,11 @@ - type: ExaminableSolution solution: lube +- type: entity + parent: [SolutionLube, SolutionLarge] + id: SolutionLatheLube # Its own prototype since some lathes might interface with solutions in other ways + categories: [ HideSpawnMenu ] + - type: entity abstract: true id: BaseHyperlathe diff --git a/Resources/Prototypes/Entities/Structures/Machines/nuke.yml b/Resources/Prototypes/Entities/Structures/Machines/nuke.yml index 0ac4a9e98f..ae163cfacc 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/nuke.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/nuke.yml @@ -129,7 +129,7 @@ bodyType: Dynamic - type: entity - parent: StorageTank + parent: StorageTankBig id: NuclearBombKeg name: nuclear fission explosive suffix: keg @@ -175,12 +175,11 @@ - MachineMask layer: - WallLayer - - type: SolutionContainerManager - solutions: - tank: - reagents: - - ReagentId: NuclearCola - Quantity: 3000 + - type: Solution + solution: + reagents: + - ReagentId: NuclearCola + Quantity: 3840 - type: ReagentTank transferAmount: 100 - type: StaticPrice diff --git a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml index 5109268189..abdd302ee4 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml @@ -78,15 +78,11 @@ - LargeBeaker - type: entity - parent: Recycler #too different so different parent + parent: [SolutionToolGinormous, Recycler] #too different so different parent id: ReagentGrinderIndustrial name: industrial reagent grinder description: An industrial reagent grinder. components: - - type: SolutionContainerManager - solutions: - output: - maxVol: 400 #*slaps roof of machine* This baby can fit so much omnizine in it - type: MaterialReclaimer whitelist: components: @@ -97,7 +93,7 @@ efficiency: 0.9 reclaimMaterials: false # Materials have ExtractableComponent, which is whitelisted, so we have to avoid infinite recycling loops onlyReclaimDrainable: false - solutionContainerId: output + solutionContainerId: solution - type: Sprite sprite: Structures/Machines/recycling.rsi layers: @@ -122,6 +118,6 @@ - machine_parts - machine_board - type: DrainableSolution - solution: output + solution: solution - type: ExaminableSolution - solution: output + solution: solution diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml index 612e144e53..663861db03 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml @@ -388,7 +388,7 @@ board: HellfireHeaterMachineCircuitBoard - type: entity - parent: [ BaseMachinePowered, SmallConstructibleMachine ] + parent: [ SolutionTank, SolutionHuge, BaseMachinePowered, SmallConstructibleMachine ] id: BaseGasCondenser name: condenser description: Condenses gases into liquids. Now we just need some plumbing. @@ -466,10 +466,6 @@ pipeDirection: South - type: Transform noRot: false - - type: SolutionContainerManager - solutions: - tank: - maxVol: 400 - type: MixableSolution solution: tank - type: DrainableSolution diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml index a7b55841e5..873ecd636e 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml @@ -245,13 +245,13 @@ supplyRampTolerance: 2500 - type: entity + parent: [SolutionTank, SolutionSmall, PortableGeneratorBase] + id: PortableGeneratorJrPacman name: J.R.P.A.C.M.A.N.-type portable generator description: |- A small generator capable of powering individual rooms, in case of emergencies. Runs off welding fuel and is rated for up to 8 kW. Rated ages 3 and up. - parent: PortableGeneratorBase - id: PortableGeneratorJrPacman suffix: Welding Fuel, 8 kW components: - type: AmbientSound @@ -303,10 +303,6 @@ solution: tank reagents: WeldingFuel: 1 - - type: SolutionContainerManager - solutions: - tank: - maxVol: 50 - type: RefillableSolution solution: tank - type: PortableGenerator diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml index 36d61bcc5f..d8dea2e463 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml @@ -910,10 +910,10 @@ maxRange: 2 spawns: - ReagentSlimeSpawner - - type: SolutionContainerManager - solutions: - anomaly: - maxVol: 1500 + - type: Solution + id: anomaly + solution: + maxVol: 1550 # Doesn't really matter since it's an anom anyways - type: PuddleCreateAnomaly solution: anomaly - type: InjectionAnomaly diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml index 7e7264c9a7..0520a0e330 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml @@ -1,4 +1,5 @@ - type: entity + parent: [SolutionDrain, SolutionGinormous] id: FloorDrain name: drain description: Drains puddles around it. Useful for dumping mop buckets or keeping certain rooms clean. @@ -34,10 +35,6 @@ maxFillLevels: 1 fillBaseName: fill- solutionName: drainBuffer - - type: SolutionContainerManager - solutions: - drainBuffer: - maxVol: 1000 - type: Damageable damageModifierSet: StructuralMetallic - type: Injurable @@ -59,3 +56,8 @@ - !type:PlaySoundBehavior sound: collection: MetalBreak + +- type: entity + parent: [SolutionDrain, SolutionNormal] + id: SolutionDrainNormal + categories: [ HideSpawnMenu ] diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml index d38321ba8d..84c8208320 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml @@ -1,8 +1,8 @@ # Mop Bucket - type: entity - name: mop bucket + parent: [SolutionGinormous, SolutionTank, BaseStructureDynamic, StructureWheeled] id: MopBucket - parent: [BaseStructureDynamic, StructureWheeled] + name: mop bucket description: Holds water and the tears of the janitor. components: - type: Clickable @@ -16,20 +16,16 @@ visible: false drawdepth: Objects - type: InteractionOutline - - type: SolutionContainerManager - solutions: - bucket: - maxVol: 600 - type: Spillable - solution: bucket + solution: tank spillDelay: 3.0 spillWhenThrown: false - type: DrainableSolution - solution: bucket + solution: tank - type: RefillableSolution - solution: bucket + solution: tank - type: ExaminableSolution - solution: bucket + solution: tank - type: ItemMapper mapLayers: mopbucket_shark_blue: @@ -76,11 +72,11 @@ - Rehydratable priority: 3 # Higher than drinking priority - type: ReactiveContainer - solution: bucket + solution: tank container: item_slot - type: Edible edible: Drink - solution: bucket + solution: tank destroyOnEmpty: false utensil: Spoon - type: Appearance @@ -125,16 +121,14 @@ components: - type: Sprite layers: - - state: mopbucket - - state: mopbucket_water-3 - map: [ "enum.SolutionContainerLayers.Fill" ] - - type: SolutionContainerManager - solutions: - bucket: - maxVol: 600 - reagents: - - ReagentId: Water - Quantity: 600 + - state: mopbucket + - state: mopbucket_water-3 + map: [ "enum.SolutionContainerLayers.Fill" ] + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 960 - type: entity parent: BaseWrappedCube @@ -150,226 +144,232 @@ # Janicart - type: entity - name: janitorial trolley + parent: [SolutionGinormous, SolutionTank, BaseStructureDynamic, StructureWheeled] id: JanitorialTrolley - parent: [BaseStructureDynamic, StructureWheeled] + name: janitorial trolley description: This is the alpha and omega of sanitation. components: - - type: Sprite - noRot: true - sprite: Objects/Specific/Janitorial/janitorial_cart.rsi - layers: - - state: cart - - state: cart_water-1 - map: ["enum.SolutionContainerLayers.Fill"] - visible: false - - type: Rotatable - - type: InteractionOutline - - type: ItemSlots - slots: - mop_slot: - name: janitorial-trolley-slot-component-slot-name-mop - whitelist: - tags: - - Mop - insertOnInteract: false # or it conflicts with bucket logic - priority: 9 # Higher than bucket slot - plunger_slot: - name: janitorial-trolley-slot-component-slot-name-plunger - whitelist: - tags: - - Plunger - - GoldenPlunger - priority: 8 - wetfloorsign_slot4: - name: janitorial-trolley-slot-component-slot-name-sign - whitelist: - tags: - - WetFloorSign - priority: 7 - wetfloorsign_slot3: - name: janitorial-trolley-slot-component-slot-name-sign - whitelist: - tags: - - WetFloorSign - priority: 7 - wetfloorsign_slot2: - name: janitorial-trolley-slot-component-slot-name-sign - whitelist: - tags: - - WetFloorSign - priority: 7 - wetfloorsign_slot1: - name: janitorial-trolley-slot-component-slot-name-sign - whitelist: - tags: - - WetFloorSign - priority: 7 - lightreplacer_slot: - name: janitorial-trolley-slot-component-slot-name-lightreplacer - whitelist: - components: - - LightReplacer - priority: 6 - spraybottle_slot: - name: janitorial-trolley-slot-component-slot-name-spray - whitelist: - tags: - - Spray - insertOnInteract: false # or it conflicts with bucket logic - priority: 5 # Higher than bucket slot - bucket_slot: - name: janitorial-trolley-slot-component-slot-name-bucket - whitelist: - tags: - - Bucket - insertOnInteract: false # or it also conflicts with bucket logic - priority: 4 # Higher than trash bag slot - trashbag_slot: - name: janitorial-trolley-slot-component-slot-name-trashbag - whitelist: - tags: - - TrashBag - - TrashBagBlue - priority: 3 # Higher than drinking priority - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.3 - density: 250 - layer: - - MobLayer - mask: - - MobMask - - type: Spillable - solution: bucket - spillDelay: 3.0 - spillWhenThrown: false - - type: SolutionContainerManager - solutions: - bucket: - maxVol: 800 + - type: Sprite + noRot: true + sprite: Objects/Specific/Janitorial/janitorial_cart.rsi + layers: + - state: cart + - state: cart_water-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: Rotatable + - type: InteractionOutline + # Removing storage until OnInteractUsing logic resolved + #- type: Storage + # popup: false + # capacity: 80 + # blacklist: # there is exclusive item slots for that + # tags: + # - Mop + # - TrashBag + # - Bucket + - type: ItemSlots + slots: + mop_slot: + name: janitorial-trolley-slot-component-slot-name-mop + whitelist: + tags: + - Mop + insertOnInteract: false # or it conflicts with bucket logic + priority: 9 # Higher than bucket slot + plunger_slot: + name: janitorial-trolley-slot-component-slot-name-plunger + whitelist: + tags: + - Plunger + - GoldenPlunger + priority: 8 + wetfloorsign_slot4: + name: janitorial-trolley-slot-component-slot-name-sign + whitelist: + tags: + - WetFloorSign + priority: 7 + wetfloorsign_slot3: + name: janitorial-trolley-slot-component-slot-name-sign + whitelist: + tags: + - WetFloorSign + priority: 7 + wetfloorsign_slot2: + name: janitorial-trolley-slot-component-slot-name-sign + whitelist: + tags: + - WetFloorSign + priority: 7 + wetfloorsign_slot1: + name: janitorial-trolley-slot-component-slot-name-sign + whitelist: + tags: + - WetFloorSign + priority: 7 + lightreplacer_slot: + name: janitorial-trolley-slot-component-slot-name-lightreplacer + whitelist: + components: + - LightReplacer + priority: 6 + spraybottle_slot: + name: janitorial-trolley-slot-component-slot-name-spray + whitelist: + tags: + - Spray + insertOnInteract: false # or it conflicts with bucket logic + priority: 5 # Higher than bucket slot + bucket_slot: + name: janitorial-trolley-slot-component-slot-name-bucket + whitelist: + tags: + - Bucket + insertOnInteract: false # or it also conflicts with bucket logic + priority: 4 # Higher than trash bag slot + trashbag_slot: + name: janitorial-trolley-slot-component-slot-name-trashbag + whitelist: + tags: + - TrashBag + priority: 3 # Higher than drinking priority + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.3 + density: 250 + layer: + - MobLayer + mask: + - MobMask + - type: Spillable + solution: tank + spillDelay: 3.0 + spillWhenThrown: false + - type: Solution + solution: reagents: - ReagentId: Water - Quantity: 600 # 3 quarters full at roundstart to make it more appealing - - type: DrainableSolution - solution: bucket - - type: RefillableSolution - solution: bucket - - type: ExaminableSolution - solution: bucket - - type: Damageable - damageModifierSet: Metallic - - type: Injurable - damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 400 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:EmptyAllContainersBehaviour - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - collection: MetalBreak - - type: ItemMapper - mapLayers: - cart_plunger: - whitelist: - tags: - - Plunger - cart_goldenplunger: - whitelist: - tags: - - GoldenPlunger - cart_mop: - whitelist: - tags: - - MopBasic - cart_advmop: - whitelist: - tags: - - MopAdv - cart_garbage: - whitelist: - tags: - - TrashBag - cart_garbage_blue: - whitelist: - tags: - - TrashBagBlue - cart_replacer: - whitelist: - components: - - LightReplacer - cart_spray: - whitelist: - tags: - - Spray - cart_sign1: # this is like stack of floor signs - minCount: 1 - whitelist: - tags: - - WetFloorSign - cart_sign2: - minCount: 2 - whitelist: - tags: - - WetFloorSign - cart_sign3: - minCount: 3 - whitelist: - tags: - - WetFloorSign - cart_sign4: - minCount: 4 - whitelist: - tags: - - WetFloorSign - cart_bucket: - whitelist: - tags: - - Bucket - sprite: Objects/Specific/Janitorial/janitorial_cart.rsi - - type: Appearance - - type: SolutionContainerVisuals - maxFillLevels: 3 - fillBaseName: cart_water- - - type: UserInterface - interfaces: - enum.StorageUiKey.Key: - type: StorageBoundUserInterface - - type: Edible - edible: Drink - solution: bucket - destroyOnEmpty: false - utensil: Spoon - - type: ContainerContainer - containers: - storagebase: !type:Container - ents: [] - mop_slot: !type:ContainerSlot {} - trashbag_slot: !type:ContainerSlot {} - bucket_slot: !type:ContainerSlot {} - plunger_slot: !type:ContainerSlot {} - goldenplunger_slot: !type:ContainerSlot {} - wetfloorsign_slot4: !type:ContainerSlot {} - wetfloorsign_slot3: !type:ContainerSlot {} - wetfloorsign_slot2: !type:ContainerSlot {} - wetfloorsign_slot1: !type:ContainerSlot {} - lightreplacer_slot: !type:ContainerSlot {} - spraybottle_slot: !type:ContainerSlot {} - - type: GuideHelp - guides: - - Janitorial - - type: DnaSubstanceTrace + Quantity: 960 + - type: DrainableSolution + solution: tank + - type: RefillableSolution + solution: tank + - type: ExaminableSolution + solution: tank + - type: Damageable + damageModifierSet: Metallic + - type: Injurable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 400 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: + - !type:EmptyAllContainersBehaviour + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - type: ItemMapper + mapLayers: + cart_plunger: + whitelist: + tags: + - Plunger + cart_goldenplunger: + whitelist: + tags: + - GoldenPlunger + cart_mop: + whitelist: + tags: + - MopBasic + cart_advmop: + whitelist: + tags: + - MopAdv + cart_garbage: + whitelist: + tags: + - TrashBag + cart_garbage_blue: + whitelist: + tags: + - TrashBagBlue + cart_replacer: + whitelist: + components: + - LightReplacer + cart_spray: + whitelist: + tags: + - Spray + cart_sign1: # this is like stack of floor signs + minCount: 1 + whitelist: + tags: + - WetFloorSign + cart_sign2: + minCount: 2 + whitelist: + tags: + - WetFloorSign + cart_sign3: + minCount: 3 + whitelist: + tags: + - WetFloorSign + cart_sign4: + minCount: 4 + whitelist: + tags: + - WetFloorSign + cart_bucket: + whitelist: + tags: + - Bucket + sprite: Objects/Specific/Janitorial/janitorial_cart.rsi + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 3 + fillBaseName: cart_water- + - type: UserInterface + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + - type: Edible + edible: Drink + solution: tank + destroyOnEmpty: false + utensil: Spoon + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + mop_slot: !type:ContainerSlot {} + trashbag_slot: !type:ContainerSlot {} + bucket_slot: !type:ContainerSlot {} + plunger_slot: !type:ContainerSlot {} + goldenplunger_slot: !type:ContainerSlot {} + wetfloorsign_slot4: !type:ContainerSlot {} + wetfloorsign_slot3: !type:ContainerSlot {} + wetfloorsign_slot2: !type:ContainerSlot {} + wetfloorsign_slot1: !type:ContainerSlot {} + lightreplacer_slot: !type:ContainerSlot {} + spraybottle_slot: !type:ContainerSlot {} + - type: GuideHelp + guides: + - Janitorial + - type: DnaSubstanceTrace diff --git a/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml b/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml index ef0ca38e74..bf2b443e6a 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml @@ -1,6 +1,6 @@ - type: entity id: StorageTank - parent: BaseStructureDynamic + parent: [SolutionTank, SolutionGinormous, BaseStructureDynamic] name: storage tank description: A liquids storage tank. abstract: true @@ -59,10 +59,6 @@ collection: MetalBreak - !type:DoActsBehavior acts: ["Destruction"] - - type: SolutionContainerManager - solutions: - tank: - maxVol: 1500 - type: DrainableSolution solution: tank - type: ReagentTank @@ -71,9 +67,9 @@ # For highcap tanks - type: entity - id: StorageTankBig - parent: StorageTank abstract: true + parent: [SolutionTank, Solution3840, StorageTank] + id: StorageTankBig components: - type: Fixtures fixtures: diff --git a/Resources/Prototypes/Entities/Structures/Storage/Tanks/tanks.yml b/Resources/Prototypes/Entities/Structures/Storage/Tanks/tanks.yml index e7fcf964d1..2f812e302f 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Tanks/tanks.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Tanks/tanks.yml @@ -39,12 +39,11 @@ parent: WeldingFuelTank suffix: Full components: - - type: SolutionContainerManager - solutions: - tank: - reagents: - - ReagentId: WeldingFuel - Quantity: 1500 + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 960 - type: entity parent: [StorageTankBig, WeldingFuelTank] # StorageTankBig must come first, or else the desnity won't get inherited. @@ -65,13 +64,11 @@ - type: SolutionContainerVisuals maxFillLevels: 7 fillBaseName: highfueltank-2- - - type: SolutionContainerManager - solutions: - tank: - reagents: - - ReagentId: WeldingFuel - Quantity: 5000 - maxVol: 5000 + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 3840 - type: Explosive explosionType: Default totalIntensity: 120 @@ -106,15 +103,14 @@ id: WaterTankFull suffix: Full components: - - type: SolutionContainerManager - solutions: - tank: - reagents: - - ReagentId: Water - Quantity: 1500 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 960 - type: entity - parent: StorageTank + parent: [SolutionHuge, StorageTank] id: WaterCooler name: water cooler description: Seems like a good place to stand and waste time. It has a stock of paper cups on the side. @@ -130,12 +126,11 @@ - type: SolutionContainerVisuals maxFillLevels: 4 fillBaseName: watercooler-2- - - type: SolutionContainerManager - solutions: - tank: - reagents: - - ReagentId: Water - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 480 - type: ContainerContainer containers: bin-container: !type:Container @@ -182,15 +177,11 @@ - type: SolutionContainerVisuals maxFillLevels: 7 fillBaseName: highwatertank-2- - - type: SolutionContainerManager - solutions: - tank: - reagents: - - ReagentId: Water -# This is *100, 000* on /tg/ - Quantity: 10000 - maxVol: 10000 -# It's pressurized... + - type: Solution + solution: + reagents: + - ReagentId: Water + Quantity: 3840 # This is *100, 000* on /tg/ - type: ExaminableSolution solution: tank - type: ReagentTank diff --git a/Resources/Prototypes/Entities/Structures/Storage/barrels.yml b/Resources/Prototypes/Entities/Structures/Storage/barrels.yml index cbc71babe0..b429f69584 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/barrels.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/barrels.yml @@ -1,5 +1,5 @@ - type: entity - parent: [ StorageTank ] + parent: StorageTank id: BaseBarrelChem abstract: true name: chemical barrel @@ -39,10 +39,6 @@ collection: MetalBreak - !type:DoActsBehavior acts: ["Destruction"] - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - type: PhysicalComposition materialComposition: Steel: 3000 # 30 sheets, 1 stack @@ -97,78 +93,66 @@ id: BarrelChemFilledIodine suffix: Iodine components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Iodine - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Iodine + Quantity: 960 - type: entity parent: BaseBarrelChem id: BarrelChemFilledFluorine suffix: Fluorine components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Fluorine - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Fluorine + Quantity: 960 - type: entity parent: BaseBarrelChem id: BarrelChemFilledChlorine suffix: Chlorine components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Chlorine - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Chlorine + Quantity: 960 - type: entity parent: BaseBarrelChem id: BarrelChemFilledEthanol suffix: Ethanol components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Ethanol - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Ethanol + Quantity: 960 - type: entity parent: BaseBarrelChem id: BarrelChemFilledPhosphorus suffix: Phosphorus components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Phosphorus - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Phosphorus + Quantity: 960 - type: entity parent: BaseBarrelChem id: BarrelChemFilledMercury suffix: Mercury components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Mercury - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Mercury + Quantity: 960 - type: entity parent: BaseBarrelChem @@ -177,13 +161,11 @@ components: - type: Sprite state: silicatebarrel - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Silicon - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Silicon + Quantity: 960 - type: entity parent: BaseBarrelChem @@ -193,13 +175,11 @@ components: - type: Sprite state: silicatebarrel - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: SpaceLube - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: SpaceLube + Quantity: 960 - type: entity parent: BaseBarrelChemRadioactive @@ -211,23 +191,19 @@ id: BaseBarrelChemRadioactiveFilledRadium suffix: Radium components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Radium - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Radium + Quantity: 960 - type: entity parent: BaseBarrelChemRadioactive id: BaseBarrelChemRadioactiveFilledUranium suffix: Uranium components: - - type: SolutionContainerManager - solutions: - tank: - maxVol: 500 - reagents: - - ReagentId: Uranium - Quantity: 500 + - type: Solution + solution: + reagents: + - ReagentId: Uranium + Quantity: 960 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml index cfcbd59dc2..e4d7607b9f 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml @@ -1,7 +1,7 @@ - type: entity - parent: BaseWallmountMetallic - id: BaseDispenser abstract: true + parent: [SolutionTank, SolutionGinormous, BaseWallmountMetallic] + id: BaseDispenser components: - type: Sprite sprite: Structures/Wallmounts/walldispenser.rsi @@ -60,13 +60,11 @@ - type: SolutionContainerVisuals maxFillLevels: 5 fillBaseName: fill- - - type: SolutionContainerManager - solutions: - tank: - maxVol: 5000 - reagents: - - ReagentId: SpaceCleaner - Quantity: 5000 + - type: Solution + solution: + reagents: + - ReagentId: SpaceCleaner + Quantity: 960 - type: entity parent: BaseDispenser @@ -83,13 +81,11 @@ - type: SolutionContainerVisuals maxFillLevels: 5 fillBaseName: fill- - - type: SolutionContainerManager - solutions: - tank: - maxVol: 1000 - reagents: - - ReagentId: WeldingFuel - Quantity: 1000 + - type: Solution + solution: + reagents: + - ReagentId: WeldingFuel + Quantity: 960 - type: ReagentTank tankType: Fuel - type: DamageOnToolInteract diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index a9872366ee..828b20059c 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -943,7 +943,7 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: StaticPrice - price: 250 + price: 300 - type: RadiationBlocker resistance: 5 - type: Sprite diff --git a/Resources/Prototypes/Entities/Structures/soil.yml b/Resources/Prototypes/Entities/Structures/soil.yml index 9aa084dd92..a999781300 100644 --- a/Resources/Prototypes/Entities/Structures/soil.yml +++ b/Resources/Prototypes/Entities/Structures/soil.yml @@ -1,4 +1,5 @@ - type: entity + parent: SolutionLarge id: hydroponicsSoil name: soil description: A mix of organic matter and minerals creating a soil to grow your plant in space. Seems to be dry. @@ -39,10 +40,8 @@ noRot: true - type: PlantHolder drawWarnings: false - - type: SolutionContainerManager - solutions: - soil: - maxVol: 200 + - type: Solution + id: soil - type: RefillableSolution solution: soil maxRefill: 50 diff --git a/Resources/Prototypes/Entities/Structures/spider_web.yml b/Resources/Prototypes/Entities/Structures/spider_web.yml index 1b039be8ea..e421c99577 100644 --- a/Resources/Prototypes/Entities/Structures/spider_web.yml +++ b/Resources/Prototypes/Entities/Structures/spider_web.yml @@ -95,7 +95,7 @@ - type: entity id: SpiderWebClown - parent: SpiderWebBase + parent: [SolutionFood, SolutionVeryTiny, SpiderWebBase] name: clown spider web description: It's stringy and slippy. components: @@ -127,9 +127,12 @@ - sweet - type: Edible delay: 2 - - type: SolutionContainerManager - solutions: - food: - reagents: - - ReagentId: Sugar - Quantity: 2 + - type: Solution + solution: + reagents: + - ReagentId: Sugar + Quantity: 2.5 + - ReagentId: Honk + Quantity: 2.5 + - ReagentId: SpaceLube + Quantity: 2.5 diff --git a/Resources/Prototypes/Entities/Tiles/water.yml b/Resources/Prototypes/Entities/Tiles/water.yml index a4478b5e58..d4f2616bf0 100644 --- a/Resources/Prototypes/Entities/Tiles/water.yml +++ b/Resources/Prototypes/Entities/Tiles/water.yml @@ -1,4 +1,5 @@ - type: entity + parent: SolutionTile id: FloorWaterEntity name: water description: A real thirst quencher. @@ -17,15 +18,14 @@ drawdepth: BelowFloor layers: - state: shoreline_water - - type: SolutionContainerManager - solutions: - pool: - maxVol: 9999999 #.inf seems to break the whole yaml file, but would definitely be preferable. - reagents: - - ReagentId: Water - Quantity: 9999999 + - type: Solution + id: pool + solution: + reagents: + - ReagentId: Water + Quantity: 7680 - type: SolutionRegeneration - solution: tank + solution: pool generated: reagents: - ReagentId: Water diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml index f9b99cc5b9..6552f99cdd 100644 --- a/Resources/Prototypes/Reagents/fun.yml +++ b/Resources/Prototypes/Reagents/fun.yml @@ -146,9 +146,9 @@ color: "#86530E" - type: reagent - id: Saxoite - name: reagent-name-saxoite - desc: reagent-desc-saxoite + id: Brass + name: reagent-name-brass + desc: reagent-desc-brass physicalDesc: reagent-physical-desc-ground-brass flavor: sax color: "#B8A603" diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index 8499e88470..97ee7e8595 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -140,7 +140,7 @@ time: 10 group: Savory reagents: - Mayo: 5 + Mayo: 2 solids: FoodBreadBun: 1 FoodMeatChicken: 1 @@ -272,7 +272,7 @@ time: 10 group: Savory reagents: - Egg: 12 + Egg: 6 solids: FoodBreadBun: 1 FoodCheeseSlice: 1 @@ -286,7 +286,7 @@ solids: FoodBreadBun: 1 FoodMealRibs: 1 - FoodOnionSlice: 1 + FoodOnionSlice: 5 - type: microwaveMealRecipe id: RecipeMimeBurger @@ -337,7 +337,7 @@ group: Savory solids: FoodBreadBun: 1 - FoodCheeseSlice: 2 + FoodCheeseSlice: 1 FoodSoybeans: 2 #replace with soylent green when those become craftable - type: microwaveMealRecipe @@ -362,7 +362,7 @@ solids: FoodBreadBun: 1 FoodMeat: 2 - FoodCheeseSlice: 2 + FoodCheeseSlice: 1 FoodTomato: 2 - type: microwaveMealRecipe @@ -425,7 +425,7 @@ Milk: 5 solids: FoodDough: 1 - FoodCheeseSlice: 2 + FoodCheeseSlice: 1 - type: microwaveMealRecipe id: RecipeMeatBread @@ -436,7 +436,7 @@ solids: FoodDough: 1 FoodMeatCutlet: 2 - FoodCheeseSlice: 2 + FoodCheeseSlice: 1 - type: microwaveMealRecipe id: RecipeMimanaBread @@ -448,7 +448,7 @@ Nothing: 5 solids: FoodDough: 1 - FoodMimana: 1 + FoodMimana: 2 - type: microwaveMealRecipe id: RecipeBread @@ -487,7 +487,7 @@ solids: FoodDough: 1 FoodMeatSpiderCutlet: 2 - FoodCheeseSlice: 2 + FoodCheeseSlice: 1 - type: microwaveMealRecipe id: RecipeTofuBread @@ -497,7 +497,7 @@ group: Breads solids: FoodDough: 1 - FoodTofu: 1 + FoodTofuSlice: 1 - type: microwaveMealRecipe id: RecipeXenoMeatBread @@ -568,7 +568,7 @@ group: Breakfast reagents: Milk: 5 - Egg: 12 + Egg: 6 solids: FoodBreadPlainSlice: 1 @@ -766,7 +766,7 @@ group: Pasta solids: FoodNoodlesBoiled: 1 - FoodMeatMeatball: 2 + FoodMeatMeatball: 1 - type: microwaveMealRecipe id: RecipeButterNoodles @@ -776,7 +776,7 @@ group: Pasta solids: FoodNoodlesBoiled: 1 - FoodButter: 1 + FoodButterSlice: 2 - type: microwaveMealRecipe id: RecipeChowMein @@ -799,8 +799,8 @@ time: 15 group: Savory reagents: - Oats: 15 - Water: 10 + Oats: 20 + Water: 20 solids: FoodBowlBig: 1 @@ -811,8 +811,8 @@ time: 15 group: Savory reagents: - Rice: 15 - Water: 10 + Rice: 20 + Water: 20 solids: FoodBowlBig: 1 @@ -823,8 +823,9 @@ time: 15 group: Dessert reagents: - Rice: 15 - Milk: 10 + Rice: 10 + Milk: 30 + Egg: 6 Sugar: 5 solids: FoodBowlBig: 1 @@ -847,7 +848,7 @@ group: Savory solids: FoodRiceBoiled: 1 - FoodMeatCutlet: 3 + FoodMeatCutlet: 2 FoodChiliPepper: 2 - type: microwaveMealRecipe @@ -894,7 +895,7 @@ time: 10 group: Soup reagents: - Water: 10 + Water: 20 solids: FoodBowlBig: 1 FoodMeatMeatball: 1 @@ -913,6 +914,7 @@ solids: FoodBowlBig: 1 Nettle: 1 + FoodAmbrosiaDeus: 1 FoodPotato: 1 - type: microwaveMealRecipe @@ -1015,10 +1017,10 @@ time: 10 group: Soup reagents: - Soysauce: 5 + Soysauce: 10 solids: FoodBowlBig: 1 - FoodMeatXenoCutlet: 2 + FoodMeatXenoCutlet: 5 - type: microwaveMealRecipe id: RecipeWingFangChuSoupSpider @@ -1058,6 +1060,7 @@ solids: FoodBowlBig: 1 FoodBanana: 1 + MaterialBananium: 1 ShardGlass: 1 #idk probably replace shard with someting bananium when #14663 merged @@ -1098,7 +1101,7 @@ reagents: Water: 10 solids: - FoodMeatSnail: 1 + MobSnail: 1 - type: microwaveMealRecipe id: RecipeEscargotSoup @@ -1111,7 +1114,8 @@ solids: FoodBowlBig: 1 FoodOnionSlice: 1 - FoodButter: 1 + FoodGarlic: 1 + FoodButterSlice: 2 FoodMeatSnailCooked: 1 #Pies @@ -1304,7 +1308,7 @@ time: 15 group: Savory solids: - FoodDough: 1 + FoodDoughSlice: 1 FoodCheeseSlice: 2 FoodChiliPepper: 1 FoodMeatFish: 2 @@ -1318,7 +1322,7 @@ reagents: TableSalt: 1 solids: - FoodMeatFish: 2 + FoodMeatFish: 1 - type: microwaveMealRecipe id: RecipeMisoColaSoup @@ -1550,7 +1554,7 @@ group: Cake solids: FoodCakePlain: 1 - FoodCarrot: 3 + FoodCarrot: 2 - type: microwaveMealRecipe id: RecipeLemonCake @@ -1570,7 +1574,7 @@ group: Cake solids: FoodCakePlain: 1 - FoodLemoon: 2 + FoodLemoon: 1 FoodBerries: 1 #dark colouring - type: microwaveMealRecipe @@ -1733,9 +1737,9 @@ group: Savory reagents: Water: 10 - UncookedAnimalProteins: 6 + UncookedAnimalProteins: 2 solids: - FoodDoughSlice: 3 + FoodDoughSlice: 1 - type: microwaveMealRecipe id: RecipeBrownies @@ -1748,7 +1752,7 @@ Sugar: 30 Egg: 18 solids: - FoodButter: 2 + FoodButter: 1 FoodSnackChocolateBar: 2 #Donks i guess @@ -1861,7 +1865,7 @@ time: 5 group: Soup reagents: - Nitrogen: 5 + FrostOil: 10 solids: FoodSoupChiliHot: 1 @@ -1911,7 +1915,7 @@ time: 15 group: Savory reagents: - BbqSauce: 5 + BbqSauce: 10 solids: FoodMeat: 2 FoodKebabSkewer: 1 @@ -1923,9 +1927,9 @@ time: 20 group: Savory solids: - FoodChiliPepper: 2 - FoodMeatCutlet: 1 - FoodCorn: 1 + FoodChiliPepper: 1 + FoodMeatCutlet: 2 + FoodDoughTortillaFlat: 1 # SALADS: These should be moved out of the microwave as soon as possible - type: microwaveMealRecipe @@ -1947,7 +1951,7 @@ group: Salad solids: FoodBowlBig: 1 - FoodAmbrosiaVulgaris: 3 + FoodAmbrosiaVulgaris: 2 FoodPotato: 1 FoodMeatMeatball: 1 @@ -1961,8 +1965,8 @@ Vinaigrette: 5 solids: FoodBowlBig: 1 - FoodOnionRed: 1 - FoodCabbage: 1 + FoodOnionRed: 2 + FoodCabbage: 2 - type: microwaveMealRecipe id: RecipeCaesarSalad @@ -2002,7 +2006,7 @@ solids: FoodBowlBig: 1 FoodCarrot: 1 - FoodCabbage: 1 + FoodCabbage: 2 FoodGarlic: 1 - type: microwaveMealRecipe @@ -2016,7 +2020,7 @@ FoodOrange: 1 FoodApple: 1 FoodGrape: 1 - FoodWatermelonSlice: 2 + FoodWatermelonSlice: 1 - type: microwaveMealRecipe id: RecipeJungleSalad @@ -2029,7 +2033,7 @@ FoodBanana: 1 FoodApple: 1 FoodGrape: 1 - FoodWatermelonSlice: 2 + FoodWatermelonSlice: 1 - type: microwaveMealRecipe id: RecipeWatermelonFruitBowlSalad @@ -2196,7 +2200,7 @@ time: 15 solids: FoodButter: 1 - LeavesCannabis: 6 + LeavesCannabis: 1 - type: microwaveMealRecipe id: RecipeCannabisBrownies @@ -2209,7 +2213,7 @@ Sugar: 30 Egg: 18 solids: - FoodCannabisButter: 2 + FoodCannabisButter: 1 FoodSnackChocolateBar: 2 - type: microwaveMealRecipe @@ -2221,7 +2225,7 @@ solids: FoodCorn: 1 FoodPlate: 1 - FoodButter: 1 + FoodButterSlice: 1 - type: microwaveMealRecipe id: RecipePeaSoup @@ -2230,10 +2234,10 @@ time: 10 group: Soup solids: - FoodPeaPod: 2 + FoodPeaPod: 3 FoodBowlBig: 1 reagents: - Water: 10 + Water: 20 - type: microwaveMealRecipe id: RecipeTacoShell @@ -2242,7 +2246,7 @@ time: 5 group: Breads solids: - FoodDoughTortillaFlat: 1 # one third of a standard bread dough recipe + FoodDoughTortillaFlat: 1 # one eighth a standard bread dough recipe - type: microwaveMealRecipe id: RecipeTacoBeef diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/firebomb.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/firebomb.yml index e2519b765c..eaf9d3aea3 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/firebomb.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/firebomb.yml @@ -37,7 +37,7 @@ solution: drink reagent: ReagentId: WeldingFuel - quantity: 30 + quantity: 60 steps: - tool: Screwing doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Reactions/food.yml b/Resources/Prototypes/Recipes/Reactions/food.yml index f9b819e43e..b9f7d84d78 100644 --- a/Resources/Prototypes/Recipes/Reactions/food.yml +++ b/Resources/Prototypes/Recipes/Reactions/food.yml @@ -35,9 +35,9 @@ conserveEnergy: false reactants: Flour: - amount: 15 + amount: 45 Water: - amount: 10 + amount: 15 effects: - !type:SpawnEntity entity: FoodDough @@ -79,11 +79,11 @@ conserveEnergy: false reactants: Fiber: - amount: 10 + amount: 40 Flour: amount: 5 Water: - amount: 10 + amount: 15 effects: - !type:SpawnEntity entity: FoodDoughCotton @@ -95,13 +95,15 @@ conserveEnergy: false reactants: Flour: - amount: 15 + amount: 20 + Butter: + amount: 10 Egg: - amount: 12 + amount: 6 Sugar: - amount: 5 + amount: 10 Milk: - amount: 5 + amount: 10 effects: - !type:SpawnEntity entity: FoodCakeBatter @@ -113,7 +115,7 @@ conserveEnergy: false reactants: Milk: - amount: 15 + amount: 30 TableSalt: amount: 5 catalyst: true @@ -128,10 +130,12 @@ conserveEnergy: false reactants: Flour: - amount: 15 - Egg: - amount: 12 - TableSalt: + amount: 40 + Butter: + amount: 10 + Water: + amount: 5 + Sugar: amount: 5 effects: - !type:SpawnEntity @@ -163,7 +167,7 @@ conserveEnergy: false reactants: MilkSoy: - amount: 30 + amount: 55 Enzyme: amount: 5 catalyst: true diff --git a/Resources/Prototypes/Recipes/Reactions/fun.yml b/Resources/Prototypes/Recipes/Reactions/fun.yml index 5a3764a504..a0b3c0eb01 100644 --- a/Resources/Prototypes/Recipes/Reactions/fun.yml +++ b/Resources/Prototypes/Recipes/Reactions/fun.yml @@ -11,7 +11,7 @@ - type: reaction id: BuzzochloricBees reactants: - Saxoite: # do you like jazz (not sorry) + Brass: # do you like jazz (not sorry) amount: 1 Fiber: # bees are fuzzy amount: 1 diff --git a/Resources/Prototypes/Recipes/Reactions/soap.yml b/Resources/Prototypes/Recipes/Reactions/soap.yml index 0a1b2e4ad6..e54ebf3020 100644 --- a/Resources/Prototypes/Recipes/Reactions/soap.yml +++ b/Resources/Prototypes/Recipes/Reactions/soap.yml @@ -6,11 +6,11 @@ priority: -1 # Ensures that the more complicated soaps get made instead reactants: Oil: - amount: 10 + amount: 20 Lye: - amount: 15 + amount: 30 TableSalt: - amount: 5 + amount: 10 effects: - !type:SpawnEntity entity: Soap @@ -22,11 +22,11 @@ minTemp: 373 reactants: Oil: - amount: 15 - Lye: amount: 20 + Lye: + amount: 25 TableSalt: - amount: 5 + amount: 10 Plasma: amount: 5 effects: @@ -40,11 +40,11 @@ minTemp: 373 reactants: Oil: - amount: 15 - Lye: amount: 20 + Lye: + amount: 25 TableSalt: - amount: 5 + amount: 10 JuiceBerry: amount: 5 effects: @@ -58,11 +58,11 @@ minTemp: 373 reactants: Fat: - amount: 10 + amount: 15 Lye: - amount: 20 + amount: 25 TableSalt: - amount: 5 + amount: 10 Blood: amount: 10 effects: @@ -76,11 +76,11 @@ minTemp: 373 reactants: Oil: - amount: 15 - Lye: amount: 20 + Lye: + amount: 25 TableSalt: - amount: 5 + amount: 10 Stimulants: amount: 5 effects: diff --git a/Resources/Prototypes/XenoArch/effects.yml b/Resources/Prototypes/XenoArch/effects.yml index 0ceb48401a..cbe56df1f4 100644 --- a/Resources/Prototypes/XenoArch/effects.yml +++ b/Resources/Prototypes/XenoArch/effects.yml @@ -251,10 +251,10 @@ components: - type: XAEApplyComponents components: - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 150 + - type: Solution + id: beaker + solution: + maxVol: 120 - type: FitsInDispenser solution: beaker - type: RefillableSolution diff --git a/Resources/migration.yml b/Resources/migration.yml index 420fa73922..a31ec9ebb0 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -827,3 +827,7 @@ CrateVendingMachineRestockGetmoreChocolateCorpFilled: VendingMachineRestockGetmo CrateVendingMachineRestockChangFilled: VendingMachineRestockChang CrateVendingMachineRestockDiscountDansFilled: VendingMachineRestockDiscountDans CrateVendingMachineRestockDonutFilled: VendingMachineRestockDonut + +# 2026-03-28 +# The great solutions YAML nuke +FoodMeatSnail: MobSnail