using Content.Server.GameTicking; using Content.Server.Ghost.Components; using Content.Shared.Examine; using Content.Shared.Ghost; using Content.Shared.MobState.Components; using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Map; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Timing; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.Mind.Components { /// /// Stores a on a mob. /// [RegisterComponent, Friend(typeof(MindSystem))] public sealed class MindComponent : Component { /// /// The mind controlling this mob. Can be null. /// [ViewVariables] public Mind? Mind { get; set; } /// /// True if we have a mind, false otherwise. /// [ViewVariables] public bool HasMind => Mind != null; /// /// Whether examining should show information about the mind or not. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("showExamineInfo")] public bool ShowExamineInfo { get; set; } /// /// Whether the mind will be put on a ghost after this component is shutdown. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("ghostOnShutdown")] public bool GhostOnShutdown { get; set; } = true; } public sealed class MindRemovedMessage : EntityEventArgs { } public sealed class MindAddedMessage : EntityEventArgs { } }