using Content.Shared.Implants;
using Content.Shared.Implants.Components;
using Content.Shared.Roles;
using JetBrains.Annotations;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set;
namespace Content.Server.Jobs;
///
/// Adds implants on spawn to the entity
///
[UsedImplicitly]
public sealed partial class AddImplantSpecial : JobSpecial
{
[DataField("implants", customTypeSerializer: typeof(PrototypeIdHashSetSerializer))]
public HashSet Implants { get; private set; } = new();
public override void AfterEquip(EntityUid mob)
{
var entMan = IoCManager.Resolve();
var implantSystem = entMan.System();
var xformQuery = entMan.GetEntityQuery();
if (!xformQuery.TryGetComponent(mob, out var xform))
return;
foreach (var implantId in Implants)
{
var implant = entMan.SpawnEntity(implantId, xform.Coordinates);
if (!entMan.TryGetComponent(implant, out var implantComp))
return;
implantSystem.ForceImplant(mob, implant, implantComp);
}
}
}