HTN_Speaker (#432)

Needed for phrases
This commit is contained in:
RedBurningPhoenix
2024-07-10 16:11:32 +05:00
committed by GitHub
parent 86aa9a5ba3
commit 0b374ebd7c
2 changed files with 11 additions and 3 deletions

View File

@@ -1,13 +1,16 @@
using Content.Server.Chat.Systems; using Content.Server.Chat.Systems;
using Content.Shared.Random.Helpers;
using Robust.Shared.Random;
namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators;
public sealed partial class SpeakOperator : HTNOperator public sealed partial class SpeakOperator : HTNOperator
{ {
private ChatSystem _chat = default!; private ChatSystem _chat = default!;
private IRobustRandom _random = default!;
[DataField("speech", required: true)] [DataField("speech", required: true)]
public string Speech = string.Empty; public List<string> Speech { get; set; } = new();
/// <summary> /// <summary>
/// Whether to hide message from chat window and logs. /// Whether to hide message from chat window and logs.
@@ -19,13 +22,15 @@ public sealed partial class SpeakOperator : HTNOperator
{ {
base.Initialize(sysManager); base.Initialize(sysManager);
_chat = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<ChatSystem>(); _chat = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<ChatSystem>();
_random = IoCManager.Resolve<IRobustRandom>();
} }
public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime)
{ {
var speaker = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner); var speaker = blackboard.GetValue<EntityUid>(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); return base.Update(blackboard, frameTime);
} }
} }

View File

@@ -20,7 +20,10 @@
- !type:HTNPrimitiveTask - !type:HTNPrimitiveTask
operator: !type:SpeakOperator operator: !type:SpeakOperator
speech: medibot-start-inject speech:
- Пожалуйста, не двигайтесь.
- Пожалуйста, стойте на месте.
- Пожалуйста, не шевелитесь.
hidden: true hidden: true
- !type:HTNPrimitiveTask - !type:HTNPrimitiveTask