using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Xenoarchaeology.Artifact.XAE.Components; using Content.Shared.Xenoarchaeology.Artifact; using Content.Shared.Xenoarchaeology.Artifact.XAE; namespace Content.Server.Xenoarchaeology.Artifact.XAE; /// /// System for xeno artifact activation effect that is fully charging batteries in certain range. /// public sealed class XAEChargeBatterySystem : BaseXAESystem { [Dependency] private readonly BatterySystem _battery = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; /// Pre-allocated and re-used collection. private readonly HashSet> _batteryEntities = new(); /// protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) { var chargeBatteryComponent = ent.Comp; _batteryEntities.Clear(); _lookup.GetEntitiesInRange(args.Coordinates, chargeBatteryComponent.Radius, _batteryEntities); foreach (var battery in _batteryEntities) { _battery.SetCharge(battery, battery.Comp.MaxCharge, battery); } } }