diff --git a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs index 0505ddd363..24fbc7ce7e 100644 --- a/Content.Server/GameObjects/Components/Mobs/MindComponent.cs +++ b/Content.Server/GameObjects/Components/Mobs/MindComponent.cs @@ -1,7 +1,11 @@ using Content.Server.GameObjects.Components.Observer; +using Content.Server.GameObjects.EntitySystems; using Content.Server.Mobs; +using Content.Server.Players; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Mobs @@ -10,8 +14,10 @@ namespace Content.Server.GameObjects.Components.Mobs /// Stores a on a mob. /// [RegisterComponent] - public class MindComponent : Component + public class MindComponent : Component, IExamine { + private bool _showExamineInfo = false; + /// public override string Name => "Mind"; @@ -27,6 +33,16 @@ namespace Content.Server.GameObjects.Components.Mobs [ViewVariables] public bool HasMind => Mind != null; + /// + /// Whether examining should show information about the mind or not. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool ShowExamineInfo + { + get => _showExamineInfo; + set => _showExamineInfo = value; + } + /// /// Don't call this unless you know what the hell you're doing. /// Use instead. @@ -74,5 +90,23 @@ namespace Content.Server.GameObjects.Components.Mobs } } } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _showExamineInfo, "show_examine_info", false); + } + + public void Examine(FormattedMessage message) + { + if (!ShowExamineInfo) + return; + + // TODO: Use gendered pronouns depending on the entity + if(!HasMind) + message.AddMarkup($"[color=red]They are totally catatonic. The stresses of life in deep-space must have been too much for them. Any recovery is unlikely.[/color]"); + else if(Mind.Session == null) + message.AddMarkup("[color=yellow]They have a blank, absent-minded stare and appears completely unresponsive to anything. They may snap out of it soon.[/color]"); + } } } diff --git a/Resources/Prototypes/Entities/mobs/human.yml b/Resources/Prototypes/Entities/mobs/human.yml index 0815ecdd04..3fa58bea9b 100644 --- a/Resources/Prototypes/Entities/mobs/human.yml +++ b/Resources/Prototypes/Entities/mobs/human.yml @@ -6,6 +6,7 @@ drawdepth: Mobs components: - type: Mind + show_examine_info: true - type: Hands hands: - left