-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes;
using System.Linq;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reaction;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Administration;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using Robust.Shared.Console;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Administration;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Robust.Shared.Console;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Administration;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Administration;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Robust.Shared.Console;
namespace Content.Server.Administration.Commands
using Content.Server.Administration.Logs;
using Content.Server.Administration.Managers;
using Content.Server.Administration.UI;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Disposal.Tube;
using Content.Server.Disposal.Tube.Components;
using Content.Server.EUI;
using Content.Server.Xenoarchaeology.XenoArtifacts;
using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components;
using Content.Shared.Administration;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Configurable;
using Content.Shared.Database;
using Content.Shared.Examine;
using System.Linq;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Administration;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using Robust.Shared.Toolshed;
using Content.Server.Administration.Systems;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.EUI;
using Content.Shared.Administration;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Eui;
using JetBrains.Annotations;
using Content.Server.Animals.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.DoAfter;
using Content.Server.Nutrition.Components;
using Content.Server.Popups;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.DoAfter;
using Content.Shared.IdentityManagement;
using Content.Shared.Nutrition.Components;
using System.Linq;
using Content.Server.Anomaly.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Anomaly.Components;
namespace Content.Server.Anomaly.Effects;
using Content.Server.Anomaly.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Anomaly.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Server.Fluids.EntitySystems;
namespace Content.Server.Anomaly.Effects;
using Content.Server.Anomaly.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Anomaly.Components;
using Robust.Shared.Random;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Robust.Shared.Prototypes;
using Content.Shared.Sprite;
using Robust.Server.GameObjects;
[Dependency] private readonly PointLightSystem _light = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
-
+
public const string FallbackReagent = "Water";
public override void Initialize()
using Content.Server.Body.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Chemistry.ReactionEffects;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Forensics;
using Content.Server.Popups;
using Content.Shared.Alert;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reaction;
using Content.Shared.Damage;
using Content.Shared.Damage.Prototypes;
using Content.Shared.IdentityManagement;
using Content.Shared.Popups;
using Content.Shared.Drunk;
-using Content.Shared.Mobs.Components;
using Content.Shared.Mobs.Systems;
using Content.Shared.Rejuvenate;
using Robust.Server.GameObjects;
-using Robust.Shared.Audio;
-using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Content.Shared.Speech.EntitySystems;
using Content.Server.Atmos.Components;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Body.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Atmos;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Inventory.Events;
namespace Content.Server.Body.Systems;
using Content.Server.Body.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Administration.Logs;
using Content.Shared.Body.Organ;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Database;
using Content.Shared.FixedPoint;
using Content.Server.Body.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Body.Organ;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Robust.Shared.Utility;
namespace Content.Server.Body.Systems
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Server.Botany.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Kitchen.Components;
using Content.Server.Popups;
using Content.Shared.Botany;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Examine;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Physics;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Components;
using Robust.Shared.Physics.Systems;
-using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
-using Robust.Shared.Utility;
namespace Content.Server.Botany.Systems;
using Content.Server.Atmos;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Botany.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Fluids.Components;
using Content.Server.Ghost.Roles.Components;
using Content.Server.Kitchen.Components;
using Content.Server.Popups;
using Content.Shared.Botany;
-using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Coordinates.Helpers;
using Content.Shared.Examine;
using Content.Server.Administration;
using Content.Server.Body.Systems;
using Content.Server.Cargo.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Shared.Administration;
using Content.Shared.Body.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Materials;
using Content.Shared.Mobs.Components;
using Content.Shared.Random;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-namespace Content.Server.Chemistry.Components.SolutionManager;
+namespace Content.Server.Chemistry.Components;
/// <summary>
/// Fills a solution container randomly using a weighted random prototype
+++ /dev/null
-namespace Content.Server.Chemistry.Components.SolutionManager
-{
- /// <summary>
- /// Denotes the solution that can removed be with syringes.
- /// </summary>
- [RegisterComponent]
- public sealed partial class DrawableSolutionComponent : Component
- {
- /// <summary>
- /// Solution name that can be removed with syringes.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite)]
- [DataField("solution")]
- public string Solution { get; set; } = "default";
- }
-}
+++ /dev/null
-namespace Content.Server.Chemistry.Components.SolutionManager
-{
- [RegisterComponent]
- public sealed partial class ExaminableSolutionComponent: Component
- {
- [ViewVariables(VVAccess.ReadWrite)]
- [DataField("solution")]
- public string Solution { get; set; } = "default";
- }
-}
+++ /dev/null
-namespace Content.Server.Chemistry.Components.SolutionManager
-{
- /// <summary>
- /// Denotes a solution which can be added with syringes.
- /// </summary>
- [RegisterComponent]
- public sealed partial class InjectableSolutionComponent : Component
- {
-
- /// <summary>
- /// Solution name which can be added with syringes.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite)]
- [DataField("solution")]
- public string Solution { get; set; } = "default";
- }
-}
+++ /dev/null
-using Content.Server.Chemistry.EntitySystems;
-using Content.Shared.Chemistry.Components;
-
-namespace Content.Server.Chemistry.Components.SolutionManager
-{
- [RegisterComponent]
- [Access(typeof(SolutionContainerSystem))]
- public sealed partial class SolutionContainerManagerComponent : Component
- {
- [DataField("solutions")]
- [Access(typeof(SolutionContainerSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
- public Dictionary<string, Solution> Solutions = new();
- }
-}
using Content.Shared.Administration.Logs;
using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Database;
using Content.Server.Body.Components;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
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.Database;
using Content.Shared.FixedPoint;
using Content.Server.Popups;
using Content.Shared.CombatMode;
using Content.Shared.Chemistry;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.DoAfter;
using Content.Shared.Mobs.Systems;
using System.Linq;
using System.Diagnostics.CodeAnalysis;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Database;
using Content.Shared.FixedPoint;
using Content.Server.Chemistry.Components;
using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Dispenser;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Database;
using Content.Shared.Emag.Components;
using Content.Shared.Emag.Systems;
-using Content.Shared.FixedPoint;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Content.Server.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Content.Shared.Popups;
using Robust.Shared.Random;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Construction;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Shared.Chemistry;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Placeable;
namespace Content.Server.Chemistry.EntitySystems;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Inventory;
using JetBrains.Annotations;
using Robust.Shared.Physics.Dynamics;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Robust.Shared.Timing;
-using Content.Server.Chemistry.Components.SolutionManager;
+using Content.Server.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Random;
using Content.Shared.Random.Helpers;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Robust.Shared.Timing;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Explosion.EntitySystems;
using Content.Server.Popups;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Content.Shared.Interaction;
using Robust.Shared.Player;
using Content.Server.Administration.Logs;
using Content.Shared.Verbs;
-using Content.Server.Chemistry.Components.SolutionManager;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.FixedPoint;
using Content.Shared.Interaction;
using Content.Server.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
-using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes;
namespace Content.Server.Chemistry.EntitySystems;
using System.Numerics;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
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.FixedPoint;
using Content.Shared.Physics;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Fluids.EntitySystems;
using Content.Shared.Audio;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Coordinates.Helpers;
using Content.Shared.Database;
-using Content.Server.Chemistry.EntitySystems;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using JetBrains.Annotations;
using Robust.Shared.Prototypes;
-using Content.Server.Chemistry.EntitySystems;
-using Content.Shared.Body.Prototypes;
+using Content.Shared.Body.Prototypes;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using JetBrains.Annotations;
using System.Linq;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reaction;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using Content.Server.Administration.Logs;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Construction;
using Content.Server.Destructible.Thresholds;
using Content.Server.Destructible.Thresholds.Behaviors;
using Content.Server.Explosion.EntitySystems;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Stack;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Damage;
using Content.Shared.Database;
using Content.Shared.Destructible;
-using Content.Server.Chemistry.EntitySystems;
-using Content.Server.Fluids.Components;
-using Content.Server.Fluids.EntitySystems;
using Content.Server.Explosion.Components;
using JetBrains.Annotations;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Fluids.Components;
using Content.Server.Fluids.EntitySystems;
+using Content.Shared.Chemistry.EntitySystems;
using JetBrains.Annotations;
namespace Content.Server.Destructible.Thresholds.Behaviors
using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Explosion.Components;
using Content.Server.Flash;
using Content.Server.Flash.Components;
using Content.Server.Radio.EntitySystems;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.Implants.Components;
using Content.Shared.Interaction;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Popups;
using Content.Shared.Audio;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Extinguisher;
using Content.Shared.FixedPoint;
using Content.Shared.Interaction;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Popups;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using Content.Shared.Fluids;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Fluids.Components;
using Content.Server.Chemistry.EntitySystems;
using Content.Server.DoAfter;
using Content.Server.Popups;
using Content.Shared.FixedPoint;
using Content.Shared.Audio;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.DoAfter;
using Content.Shared.Examine;
using Content.Server.Fluids.Components;
using Content.Server.Nutrition.EntitySystems;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reaction;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Clothing.Components;
using Content.Server.Administration.Logs;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.DoAfter;
using Content.Server.Fluids.Components;
using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Reaction;
using Content.Server.Spreader;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Database;
using Content.Shared.Examine;
using System.Linq;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Chemistry.ReactionEffects;
using Content.Server.Spreader;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reaction;
using Content.Shared.FixedPoint;
using Content.Shared.Smoking;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
-using Robust.Shared.Spawners;
using Robust.Shared.Timing;
using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent;
using Content.Server.Fluids.Components;
using Content.Server.Gravity;
using Content.Server.Popups;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Cooldown;
using Content.Shared.FixedPoint;
using Content.Shared.Interaction;
using Content.Server.Administration.Logs;
-using Content.Shared.IdentityManagement;
using Content.Shared.Popups;
using Content.Shared.Item;
using Content.Shared.Glue;
using Content.Shared.Interaction;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Nutrition.EntitySystems;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.Hands;
using Robust.Shared.Timing;
using System.Linq;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Construction;
using Content.Server.Hands.Systems;
using Content.Server.Kitchen.Components;
using Content.Server.Temperature.Systems;
using Content.Shared.Body.Components;
using Content.Shared.Body.Part;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Construction.EntitySystems;
using Content.Shared.Destructible;
using Content.Shared.FixedPoint;
using System.Linq;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Construction;
using Content.Server.Kitchen.Components;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Stack;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.FixedPoint;
using Content.Shared.Interaction;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Containers;
-using Robust.Shared.Player;
using Robust.Shared.Timing;
namespace Content.Server.Kitchen.EntitySystems
using Content.Server.Administration.Logs;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Nutrition.EntitySystems;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
using System.Linq;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Chemistry.EntitySystems;
using Content.Server.Construction;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Wires;
using Content.Shared.Body.Systems;
using Content.Shared.Chemistry.Components;
-using Content.Shared.FixedPoint;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Server.Atmos.Piping.Unary.EntitySystems;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Medical.Components;
using Content.Server.NodeContainer;
using Content.Server.NodeContainer.EntitySystems;
using Content.Server.UserInterface;
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.Containers.ItemSlots;
using Content.Shared.Database;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Forensics;
-using Content.Server.Nutrition.EntitySystems;
using Content.Server.Popups;
using Content.Server.Stunnable;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.IdentityManagement;
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
using Content.Server.Chat.Systems;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.NPC.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Damage;
-using Content.Shared.Emag.Components;
using Content.Shared.Interaction;
using Content.Shared.Popups;
using Content.Shared.Silicons.Bots;
-using Robust.Shared.Audio;
-using Robust.Shared.Player;
namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific;
using System.Threading;
using System.Threading.Tasks;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.NPC.Components;
using Content.Server.NPC.Pathfinding;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Damage;
using Content.Shared.Interaction;
using Content.Shared.Mobs.Components;
using System.Linq;
-using Content.Server.Chemistry.EntitySystems;
-using Content.Server.Examine;
using Content.Server.Fluids.EntitySystems;
using Content.Server.NPC.Queries;
using Content.Server.NPC.Queries.Considerations;
using Content.Server.Nutrition.Components;
using Content.Server.Nutrition.EntitySystems;
using Content.Server.Storage.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Examine;
using Content.Shared.Fluids.Components;
using Content.Shared.Hands.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Explosion.Components;
using Content.Server.Explosion.EntitySystems;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Nutrition.Components;
using Content.Server.Popups;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Interaction;
using Content.Shared.Nutrition.Components;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Chemistry.EntitySystems;
using Content.Server.Chemistry.ReagentEffects;
using Content.Server.Fluids.EntitySystems;
using Content.Shared.Body.Components;
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.Database;
using Content.Shared.DoAfter;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Inventory;
using Content.Server.Nutrition.Components;
using Content.Server.Popups;
using Content.Shared.Body.Components;
using Content.Shared.Body.Organ;
using Content.Shared.Chemistry;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Database;
using Content.Shared.DoAfter;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Chemistry.EntitySystems;
using Content.Server.Nutrition;
using Content.Server.Nutrition.Components;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Examine;
using Content.Shared.FixedPoint;
using Content.Shared.Hands.EntitySystems;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Nutrition.Components;
using Content.Shared.Nutrition.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Interaction;
-using Content.Shared.PDA;
using Content.Shared.Smoking;
using Content.Shared.Temperature;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Nutrition.Components;
using Content.Shared.Chemistry;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Clothing.Components;
using Content.Shared.Clothing.EntitySystems;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Server.Chemistry.EntitySystems;
using Content.Server.Nutrition.Components;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Tag;
namespace Content.Server.Nutrition.EntitySystems
using System.Linq;
using Content.Server.Administration.Logs;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Explosion.EntitySystems;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.Examine;
using Content.Shared.Payload.Components;
using Content.Server.Administration.Logs;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Explosion.EntitySystems;
using Content.Server.Kitchen.Components;
using Content.Server.Power.Components;
-using Content.Server.Stunnable.Components;
-using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.Rejuvenate;
-using Content.Server.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Content.Server.Audio;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Fluids.EntitySystems;
using Content.Server.Materials;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Content.Shared.Popups;
using Content.Shared.Power.Generator;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.Power.Events;
using Content.Server.Stunnable.Components;
using Content.Shared.Audio;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Damage.Events;
using Content.Shared.Examine;
using Content.Shared.Interaction.Events;
using System.Linq;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Tools.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Database;
using Content.Shared.DoAfter;
using Content.Shared.Examine;
using Content.Shared.Toggleable;
using Content.Shared.Tools.Components;
using Content.Shared.Weapons.Melee.Events;
-using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Utility;
using Content.Server.Atmos.EntitySystems;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Popups;
using Content.Server.Tools.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Maps;
using Content.Shared.Tools;
using Robust.Server.GameObjects;
using Content.Server.Body.Systems;
using Content.Server.Chat.Systems;
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.CombatMode.Disarm;
using Content.Server.Contests;
using Content.Server.Movement.Systems;
using Content.Shared.Actions.Events;
using Content.Shared.Administration.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.CombatMode;
using Content.Shared.Damage.Events;
using Content.Shared.Damage.Systems;
using Content.Shared.Database;
using Content.Shared.Effects;
-using Content.Shared.FixedPoint;
using Content.Shared.Hands.Components;
using Content.Shared.IdentityManagement;
using Content.Shared.Inventory;
using System.Linq;
-using Content.Server.Chemistry.EntitySystems;
using Content.Server.Weapons.Ranged.Components;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Weapons.Ranged.Events;
namespace Content.Server.Weapons.Ranged.Systems
using Content.Server.Chemistry.Components;
-using Content.Server.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Content.Shared.Vapor;
using Content.Shared.Weapons.Ranged;
--- /dev/null
+namespace Content.Shared.Chemistry.Components.SolutionManager;
+
+/// <summary>
+/// Denotes the solution that can removed be with syringes.
+/// </summary>
+[RegisterComponent]
+public sealed partial class DrawableSolutionComponent : Component
+{
+ /// <summary>
+ /// Solution name that can be removed with syringes.
+ /// </summary>
+ [ViewVariables(VVAccess.ReadWrite)]
+ [DataField("solution")]
+ public string Solution { get; set; } = "default";
+}
--- /dev/null
+namespace Content.Shared.Chemistry.Components.SolutionManager;
+
+[RegisterComponent]
+public sealed partial class ExaminableSolutionComponent : Component
+{
+ [ViewVariables(VVAccess.ReadWrite)]
+ [DataField("solution")]
+ public string Solution { get; set; } = "default";
+}
--- /dev/null
+namespace Content.Shared.Chemistry.Components.SolutionManager;
+
+/// <summary>
+/// Denotes a solution which can be added with syringes.
+/// </summary>
+[RegisterComponent]
+public sealed partial class InjectableSolutionComponent : Component
+{
+
+ /// <summary>
+ /// Solution name which can be added with syringes.
+ /// </summary>
+ [ViewVariables(VVAccess.ReadWrite)]
+ [DataField("solution")]
+ public string Solution { get; set; } = "default";
+}
--- /dev/null
+using Content.Shared.Chemistry.EntitySystems;
+
+namespace Content.Shared.Chemistry.Components.SolutionManager;
+
+[RegisterComponent]
+[Access(typeof(SolutionContainerSystem))]
+public sealed partial class SolutionContainerManagerComponent : Component
+{
+ [DataField("solutions")]
+ [Access(typeof(SolutionContainerSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
+ public Dictionary<string, Solution> Solutions = new();
+}
using System.Diagnostics.CodeAnalysis;
using System.Text;
-using Content.Server.Chemistry.Components.SolutionManager;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.FixedPoint;
-namespace Content.Server.Chemistry.EntitySystems;
+namespace Content.Shared.Chemistry.EntitySystems;
public sealed partial class SolutionContainerSystem
{
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
-using Content.Server.Chemistry.Components.SolutionManager;
-using Content.Server.Examine;
-using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Chemistry.Reaction;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Examine;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
-namespace Content.Server.Chemistry.EntitySystems;
+namespace Content.Shared.Chemistry.EntitySystems;
/// <summary>
/// This event alerts system that the solution was changed
[UsedImplicitly]
public sealed partial class SolutionContainerSystem : EntitySystem
{
- [Dependency]
- private readonly ChemicalReactionSystem _chemistrySystem = default!;
+ [Dependency] private readonly ChemicalReactionSystem _chemistrySystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
- [Dependency]
- private readonly IPrototypeManager _prototypeManager = default!;
- [Dependency] private readonly ExamineSystem _examine = default!;
+ [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
+ [Dependency] private readonly ExamineSystemShared _examine = default!;
public override void Initialize()
{
if (!_prototypeManager.TryIndex(primaryReagent.Value.Prototype, out ReagentPrototype? primary))
{
- Logger.Error(
- $"{nameof(Solution)} could not find the prototype associated with {primaryReagent}.");
+ Log.Error($"{nameof(Solution)} could not find the prototype associated with {primaryReagent}.");
return;
}
var removedSolution = new Solution();
// RemoveReagent does a RemoveSwap, meaning we don't have to copy the list if we iterate it backwards.
- for (var i = solution.Contents.Count-1; i >= 0; i--)
+ for (var i = solution.Contents.Count - 1; i >= 0; i--)
{
var (reagent, _) = solution.Contents[i];
var removedQuantity = solution.RemoveReagent(reagent, quantity);
var getMixableSolutionAttempt = new GetMixableSolutionAttemptEvent(uid);
RaiseLocalEvent(uid, ref getMixableSolutionAttempt);
- if(getMixableSolutionAttempt.MixedSolution != null)
+ if (getMixableSolutionAttempt.MixedSolution != null)
{
solution = getMixableSolutionAttempt.MixedSolution;
return true;
- type: SolutionContainerManager
solutions:
food:
- maxvol: 65
+ maxVol: 65
reagents:
- ReagentId: Nutriment
Quantity: 30
- type: SolutionContainerManager
solutions:
food:
- maxvol: 25
+ maxVol: 25
reagents:
- ReagentId: Nutriment
Quantity: 12
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 7
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 10
+ maxVol: 10
reagents:
- ReagentId: Nutriment
Quantity: 2
- type: SolutionContainerManager
solutions:
food:
- maxvol: 15
+ maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 7
- type: SolutionContainerManager
solutions:
food:
- maxvol: 38
+ maxVol: 38
reagents:
- ReagentId: Nutriment
Quantity: 18
- type: SolutionContainerManager
solutions:
food:
- maxvol: 25
+ maxVol: 25
reagents:
- ReagentId: Nutriment
Quantity: 8
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 4
- type: SolutionContainerManager
solutions:
food:
- maxvol: 40
+ maxVol: 40
reagents:
- ReagentId: Nutriment
Quantity: 18
- type: SolutionContainerManager
solutions:
food:
- maxvol: 25
+ maxVol: 25
reagents:
- ReagentId: Nutriment
Quantity: 9
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 5
- type: SolutionContainerManager
solutions:
food:
- maxvol: 20
+ maxVol: 20
reagents:
- ReagentId: Nutriment
Quantity: 7
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 6
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 7
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 1
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 3
- type: SolutionContainerManager
solutions:
food:
- maxvol: 30
+ maxVol: 30
reagents:
- ReagentId: Protein
Quantity: 9
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 2
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 5
- type: SolutionContainerManager
solutions:
food:
- maxvol: 12
+ maxVol: 12
reagents:
- ReagentId: Nutriment
Quantity: 5