using Content.Shared.Access.Components;
using Content.Shared.Clothing.Components;
+using Content.Shared.Contraband;
using Content.Shared.Inventory;
using Content.Shared.Inventory.Events;
using Content.Shared.Item;
[Dependency] private readonly IComponentFactory _factory = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly ClothingSystem _clothingSystem = default!;
+ [Dependency] private readonly ContrabandSystem _contraband = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedItemSystem _itemSystem = default!;
[Dependency] private readonly TagSystem _tag = default!;
{
_clothingSystem.CopyVisuals(uid, otherClothing, clothing);
}
+
+ // properly mark contraband
+ if (proto.TryGetComponent("Contraband", out ContrabandComponent? contra))
+ {
+ EnsureComp<ContrabandComponent>(uid, out var current);
+ _contraband.CopyDetails(uid, contra, current);
+ }
+ else
+ {
+ RemComp<ContrabandComponent>(uid);
+ }
}
protected virtual void UpdateSprite(EntityUid uid, EntityPrototype proto) { }
_contrabandExamineEnabled = val;
}
+ public void CopyDetails(EntityUid uid, ContrabandComponent other, ContrabandComponent? contraband = null)
+ {
+ if (!Resolve(uid, ref contraband))
+ return;
+
+ contraband.Severity = other.Severity;
+ contraband.AllowedDepartments = other.AllowedDepartments;
+ Dirty(uid, contraband);
+ }
+
private void OnExamined(Entity<ContrabandComponent> ent, ref ExaminedEvent args)
{
if (!_contrabandExamineEnabled)
using (args.PushGroup(nameof(ContrabandComponent)))
{
var severity = _proto.Index(ent.Comp.Severity);
- if (severity.ShowDepartments && ent.Comp is { AllowedDepartments: not null })
+ if (severity.ShowDepartments && ent.Comp is { AllowedDepartments: not null })
{
// TODO shouldn't department prototypes have a localized name instead of just using the ID for this?
var list = ContentLocalizationManager.FormatList(ent.Comp.AllowedDepartments.Select(p => Loc.GetString($"department-{p.Id}")).ToList());