Allow ghosts to hear radio message globally (#15078)
This commit is contained in:
@@ -14,4 +14,10 @@ public sealed class ActiveRadioComponent : Component
|
||||
/// </summary>
|
||||
[DataField("channels", customTypeSerializer: typeof(PrototypeIdHashSetSerializer<RadioChannelPrototype>))]
|
||||
public HashSet<string> Channels = new();
|
||||
|
||||
/// <summary>
|
||||
/// If this radio can hear all messages on all maps
|
||||
/// </summary>
|
||||
[DataField("globalReceive")]
|
||||
public bool GlobalReceive = false;
|
||||
}
|
||||
|
||||
@@ -90,14 +90,14 @@ public sealed class RadioSystem : EntitySystem
|
||||
if (!radio.Channels.Contains(channel.ID))
|
||||
continue;
|
||||
|
||||
if (!channel.LongRange && transform.MapID != sourceMapId)
|
||||
if (!channel.LongRange && transform.MapID != sourceMapId && !radio.GlobalReceive)
|
||||
continue;
|
||||
|
||||
// don't need telecom server for long range channels or handheld radios and intercoms
|
||||
var needServer = !channel.LongRange && (!hasMicro || !speakerQuery.HasComponent(receiver));
|
||||
if (needServer && !hasActiveServer)
|
||||
continue;
|
||||
|
||||
|
||||
// check if message can be sent to specific receiver
|
||||
var attemptEv = new RadioReceiveAttemptEvent(channel, radioSource, receiver);
|
||||
RaiseLocalEvent(ref attemptEv);
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
- Service
|
||||
- Supply
|
||||
- Syndicate
|
||||
globalReceive: true
|
||||
- type: Sprite
|
||||
overrideContainerOcclusion: true # Ghosts always show up regardless of where they're contained.
|
||||
netsync: false
|
||||
|
||||
Reference in New Issue
Block a user