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; }