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.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<string> Speech { get; set; } = new();
/// <summary>
/// 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<IEntitySystemManager>().GetEntitySystem<ChatSystem>();
_random = IoCManager.Resolve<IRobustRandom>();
}
public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime)
{
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);
}
}

View File

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