1
0

ChangeNameInContainerSystem.cs 1.1 KB

123456789101112131415161718192021222324252627282930
  1. using Content.Shared.Chat;
  2. using Robust.Shared.Containers;
  3. using Content.Shared.Whitelist;
  4. using Content.Shared.Speech;
  5. namespace Content.Shared.ChangeNameInContainer;
  6. public sealed partial class ChangeNameInContainerSystem : EntitySystem
  7. {
  8. [Dependency] private readonly SharedContainerSystem _container = default!;
  9. [Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
  10. public override void Initialize()
  11. {
  12. base.Initialize();
  13. SubscribeLocalEvent<ChangeVoiceInContainerComponent, TransformSpeakerNameEvent>(OnTransformSpeakerName);
  14. }
  15. private void OnTransformSpeakerName(Entity<ChangeVoiceInContainerComponent> ent, ref TransformSpeakerNameEvent args)
  16. {
  17. if (!_container.TryGetContainingContainer((ent, null, null), out var container)
  18. || _whitelist.IsWhitelistFail(ent.Comp.Whitelist, container.Owner))
  19. return;
  20. args.VoiceName = Name(container.Owner);
  21. if (TryComp<SpeechComponent>(container.Owner, out var speechComp))
  22. args.SpeechVerb = speechComp.SpeechVerb;
  23. }
  24. }