Files
tbd-station-14/Content.Shared/Roles/MindRoleComponent.cs
2025-04-16 19:04:48 +02:00

69 lines
2.0 KiB
C#

using Content.Shared.Mind;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared.Roles;
/// <summary>
/// This holds data for, and indicates, a Mind Role entity
/// </summary>
[RegisterComponent, NetworkedComponent]
public sealed partial class MindRoleComponent : BaseMindRoleComponent
{
/// <summary>
/// Marks this Mind Role as Antagonist
/// A single antag Mind Role is enough to make the owner mind count as Antagonist.
/// </summary>
[DataField]
public bool Antag;
/// <summary>
/// The mind's current antagonist/special role, or lack thereof;
/// </summary>
[DataField]
public ProtoId<RoleTypePrototype>? RoleType;
/// <summary>
/// The role's subtype, shown only to admins to help with antag categorization
/// </summary>
[DataField]
public LocId? Subtype;
/// <summary>
/// True if this mindrole is an exclusive antagonist. Antag setting is not checked if this is True.
/// </summary>
[DataField]
public bool ExclusiveAntag;
/// <summary>
/// The Mind that this role belongs to
/// </summary>
public Entity<MindComponent> Mind { get; set; }
/// <summary>
/// The Antagonist prototype of this role
/// </summary>
[DataField]
public ProtoId<AntagPrototype>? AntagPrototype { get; set; }
/// <summary>
/// The Job prototype of this role
/// </summary>
[DataField]
public ProtoId<JobPrototype>? JobPrototype { get; set; }
/// <summary>
/// Used to order the characters on by role/antag status. Highest numbers are shown first.
/// </summary>
[DataField]
public int SortWeight;
}
// Why does this base component actually exist? It does make auto-categorization easy, but before that it was useless?
// I used it for easy organisation/bookkeeping of what components are for mindroles
[EntityCategory("Roles")]
public abstract partial class BaseMindRoleComponent : Component
{
}