using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions.Conditions; /// /// Returns true if this solution entity has an amount of reagent in it within a specified minimum and maximum. /// /// public sealed partial class ReagentThresholdEntityConditionSystem : EntityConditionSystem { protected override void Condition(Entity entity, ref EntityConditionEvent args) { var quant = entity.Comp.Solution.GetTotalPrototypeQuantity(args.Condition.Reagent); args.Result = quant >= args.Condition.Min && quant <= args.Condition.Max; } } /// public sealed partial class ReagentCondition : EntityConditionBase { [DataField] public FixedPoint2 Min = FixedPoint2.Zero; [DataField] public FixedPoint2 Max = FixedPoint2.MaxValue; [DataField(required: true)] public ProtoId Reagent; public override string EntityConditionGuidebookText(IPrototypeManager prototype) { if (!prototype.Resolve(Reagent, out var reagentProto)) return String.Empty; return Loc.GetString("reagent-effect-condition-guidebook-reagent-threshold", ("reagent", reagentProto.LocalizedName ?? Loc.GetString("reagent-effect-condition-guidebook-this-reagent")), ("max", Max == FixedPoint2.MaxValue ? int.MaxValue : Max.Float()), ("min", Min.Float())); } }