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 Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.Chemistry.EntitySystems; public sealed class SolutionRandomFillSystem : EntitySystem { [Dependency] private readonly SolutionContainerSystem _solutionsSystem = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IRobustRandom _random = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnRandomSolutionFillMapInit); } private void OnRandomSolutionFillMapInit(EntityUid uid, RandomFillSolutionComponent component, MapInitEvent args) { if (component.WeightedRandomId == null) return; var target = _solutionsSystem.EnsureSolution(uid, component.Solution); var pick = _proto.Index(component.WeightedRandomId).Pick(_random); var reagent = pick.reagent; var quantity = pick.quantity; if (!_proto.HasIndex(reagent)) { Log.Error($"Tried to add invalid reagent Id {reagent} using SolutionRandomFill."); return; } target.AddReagent(reagent, quantity); } }