SpeakOperator.cs 943 B

1234567891011121314151617181920212223242526272829303132
  1. using Content.Server.Chat.Systems;
  2. namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators;
  3. public sealed partial class SpeakOperator : HTNOperator
  4. {
  5. private ChatSystem _chat = default!;
  6. [DataField(required: true)]
  7. public string Speech = string.Empty;
  8. /// <summary>
  9. /// Whether to hide message from chat window and logs.
  10. /// </summary>
  11. [DataField]
  12. public bool Hidden;
  13. public override void Initialize(IEntitySystemManager sysManager)
  14. {
  15. base.Initialize(sysManager);
  16. _chat = sysManager.GetEntitySystem<ChatSystem>();
  17. }
  18. public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime)
  19. {
  20. var speaker = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner);
  21. _chat.TrySendInGameICMessage(speaker, Loc.GetString(Speech), InGameICChatType.Speak, hideChat: Hidden, hideLog: Hidden);
  22. return base.Update(blackboard, frameTime);
  23. }
  24. }