using System.Linq; using Content.Shared._CP14.ModularCraft; using Content.Shared._CP14.ModularCraft.Components; using Content.Shared.Item; using Robust.Shared.Prototypes; namespace Content.Server._CP14.ModularCraft.Modifiers; public sealed partial class EditItem : CP14ModularCraftModifier { [DataField] public ProtoId? NewSize; /// /// Only works if the item has 1 shape. Increases or decreases it size. /// [DataField] public Vector2i? AdjustShape; [DataField] public Vector2i? StoredOffsetBonus; public override void Effect(EntityManager entManager, Entity start, Entity? part) { if (!entManager.TryGetComponent(start, out var itemComp) || itemComp.Shape is null) return; var itemSystem = entManager.System(); if (NewSize is not null) itemSystem.SetSize(start, NewSize.Value); var itemShape = itemSystem.GetItemShape((start, itemComp)); if (AdjustShape is not null && itemShape.Count == 1) { var box = itemComp.Shape.First(); box.Right += AdjustShape.Value.X; box.Top += AdjustShape.Value.Y; itemSystem.SetShape(start, new List{box}); } if (StoredOffsetBonus is not null) { var newOffset = itemComp.StoredOffset + StoredOffsetBonus.Value; itemSystem.SetStoredOffset(start, newOffset, itemComp); } } }