using Content.Shared.Mind;
using Content.Shared.Roles;
using Robust.Shared.Prototypes;
namespace Content.Shared.EntityEffects.Effects;
///
/// Adds a role to this entity's mind unless that role prototype is already present.
///
///
public sealed partial class AddMindRoleEntityEffectSystem : EntityEffectSystem
{
[Dependency] private SharedMindSystem _mind = default!;
[Dependency] private SharedRoleSystem _role = default!;
protected override void Effect(Entity entity, ref EntityEffectEvent args)
{
if (!_mind.TryGetMind(entity, out var mindId, out var mind))
return;
var rolePrototype = args.Effect.Role;
foreach (var role in mind.MindRoleContainer.ContainedEntities)
{
if (rolePrototype.Equals(MetaData(role).EntityPrototype?.ID))
return;
}
_role.MindAddRole(mindId, rolePrototype, mind);
}
}
///
public sealed partial class AddMindRole : EntityEffectBase
{
///
/// Mind role entity prototype to grant to this entity's mind.
///
[DataField(required: true)]
public EntProtoId Role;
}