diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs index cf07831959..613a15d21b 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs @@ -1,13 +1,16 @@ using Content.Server.Chat.Systems; +using Content.Shared.Random.Helpers; +using Robust.Shared.Random; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators; public sealed partial class SpeakOperator : HTNOperator { private ChatSystem _chat = default!; + private IRobustRandom _random = default!; [DataField("speech", required: true)] - public string Speech = string.Empty; + public List Speech { get; set; } = new(); /// /// Whether to hide message from chat window and logs. @@ -19,13 +22,15 @@ public sealed partial class SpeakOperator : HTNOperator { base.Initialize(sysManager); _chat = IoCManager.Resolve().GetEntitySystem(); + _random = IoCManager.Resolve(); } public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) { var speaker = blackboard.GetValue(NPCBlackboard.Owner); + var message = Loc.GetString(_random.Pick(Speech)); - _chat.TrySendInGameICMessage(speaker, Loc.GetString(Speech), InGameICChatType.Speak, hideChat: Hidden, hideLog: Hidden); + _chat.TrySendInGameICMessage(speaker, message, InGameICChatType.Speak, hideChat: Hidden, hideLog: Hidden); return base.Update(blackboard, frameTime); } } diff --git a/Resources/Prototypes/NPCs/medibot.yml b/Resources/Prototypes/NPCs/medibot.yml index c0853984ee..d96c64700f 100644 --- a/Resources/Prototypes/NPCs/medibot.yml +++ b/Resources/Prototypes/NPCs/medibot.yml @@ -20,7 +20,10 @@ - !type:HTNPrimitiveTask operator: !type:SpeakOperator - speech: medibot-start-inject + speech: + - Пожалуйста, не двигайтесь. + - Пожалуйста, стойте на месте. + - Пожалуйста, не шевелитесь. hidden: true - !type:HTNPrimitiveTask