2025-02-05 14:21:12 +03:00
|
|
|
using Content.Server.Chat.Systems;
|
|
|
|
|
using Robust.Shared.Random;
|
|
|
|
|
|
|
|
|
|
namespace Content.Server._CP14.Demiplane;
|
|
|
|
|
|
|
|
|
|
public sealed partial class CP14DemiplaneSystem
|
|
|
|
|
{
|
|
|
|
|
private void InitEchoes()
|
|
|
|
|
{
|
|
|
|
|
SubscribeLocalEvent<EntitySpokeEvent>(OnSpeak);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnSpeak(EntitySpokeEvent ev)
|
|
|
|
|
{
|
|
|
|
|
var map = Transform(ev.Source).MapUid;
|
|
|
|
|
|
|
|
|
|
if (!_demiplaneQuery.TryComp(map, out var demiplane))
|
|
|
|
|
return;
|
2025-02-24 01:07:03 +03:00
|
|
|
|
2025-02-05 14:21:12 +03:00
|
|
|
//Get random exit, and send message there
|
|
|
|
|
if (demiplane.ExitPoints.Count == 0)
|
|
|
|
|
return;
|
|
|
|
|
var exit = _random.Pick(demiplane.ExitPoints);
|
|
|
|
|
|
|
|
|
|
_chat.TrySendInGameICMessage(exit,
|
|
|
|
|
ev.Message,
|
|
|
|
|
InGameICChatType.Whisper,
|
2025-02-24 00:09:19 +03:00
|
|
|
ChatTransmitRange.Normal,
|
|
|
|
|
true,
|
|
|
|
|
checkRadioPrefix: false,
|
2025-02-05 14:21:12 +03:00
|
|
|
nameOverride: Loc.GetString("cp14-demiplane-echoes"),
|
2025-02-24 00:09:19 +03:00
|
|
|
ignoreActionBlocker: false);
|
2025-02-05 14:21:12 +03:00
|
|
|
}
|
|
|
|
|
}
|