using Content.Shared.Materials; using Content.Shared.Maps; namespace Content.Server.Materials; /// public sealed partial class ServerTileReclaimerSystem : TileReclaimerSystem { [Dependency] private MaterialStorageSystem _materialStorage = default!; protected override void SpawnMaterialsFromComposition(Entity ent, ContentTileDefinition tileDefinition, float efficiency) { if (!Resolve(ent, ref ent.Comp1, ref ent.Comp2)) return; foreach (var (material, amount) in tileDefinition.MaterialComposition) { var outputAmount = (int) (amount * efficiency); _materialStorage.TryChangeMaterialAmount(ent, material, outputAmount, ent.Comp1); } _materialStorage.EjectAllMaterial(ent, ent.Comp2.Coordinates, ent.Comp1, true); } }