Anomaly Synchronizer + Signallers tweaks (#24461)
* content * nerf * fix rsi
This commit is contained in:
@@ -25,8 +25,6 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly PowerReceiverSystem _power = default!;
|
||||
|
||||
private const float AttachRange = 0.15f; // The radius of one tile. It must not be set higher, otherwise the anomaly can be moved from tile to tile.
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -55,9 +53,9 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
|
||||
}
|
||||
|
||||
var coords = _transform.GetMapCoordinates(ent);
|
||||
var anomaly = _entityLookup.GetEntitiesInRange<AnomalyComponent>(coords, AttachRange).FirstOrDefault();
|
||||
var anomaly = _entityLookup.GetEntitiesInRange<AnomalyComponent>(coords, ent.Comp.AttachRange).FirstOrDefault();
|
||||
|
||||
if (anomaly.Owner is {Valid: false}) // no anomaly in range
|
||||
if (anomaly.Owner is { Valid: false }) // no anomaly in range
|
||||
{
|
||||
if (user is not null)
|
||||
_popup.PopupEntity(Loc.GetString("anomaly-sync-no-anomaly"), ent, user.Value);
|
||||
@@ -77,7 +75,6 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
|
||||
if (!TryComp<AnomalyComponent>(ent.Comp.ConnectedAnomaly, out var anomaly))
|
||||
return;
|
||||
|
||||
_anomaly.DoAnomalyPulse(ent.Comp.ConnectedAnomaly.Value, anomaly);
|
||||
DisconneсtFromAnomaly(ent, anomaly);
|
||||
}
|
||||
|
||||
@@ -92,7 +89,8 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
|
||||
return;
|
||||
|
||||
var user = args.User;
|
||||
args.Verbs.Add(new() {
|
||||
args.Verbs.Add(new()
|
||||
{
|
||||
Act = () =>
|
||||
{
|
||||
TryAttachNearbyAnomaly(ent, user);
|
||||
@@ -117,7 +115,9 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
|
||||
var targetXform = _transform.GetWorldPosition(ent);
|
||||
_transform.SetWorldPosition(anomaly, targetXform);
|
||||
|
||||
_anomaly.DoAnomalyPulse(anomaly, anomaly);
|
||||
if (ent.Comp.PulseOnConnect)
|
||||
_anomaly.DoAnomalyPulse(anomaly, anomaly);
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("anomaly-sync-connected"), ent, PopupType.Medium);
|
||||
_audio.PlayPvs(ent.Comp.ConnectedSound, ent);
|
||||
}
|
||||
@@ -129,7 +129,9 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
|
||||
if (ent.Comp.ConnectedAnomaly == null)
|
||||
return;
|
||||
|
||||
_anomaly.DoAnomalyPulse(ent.Comp.ConnectedAnomaly.Value, anomaly);
|
||||
if (ent.Comp.PulseOnDisconnect)
|
||||
_anomaly.DoAnomalyPulse(ent.Comp.ConnectedAnomaly.Value, anomaly);
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("anomaly-sync-disconnected"), ent, PopupType.Large);
|
||||
_audio.PlayPvs(ent.Comp.ConnectedSound, ent);
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
using Content.Shared.Anomaly;
|
||||
using Content.Shared.Anomaly.Components;
|
||||
using Content.Shared.DeviceLinking;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -18,6 +16,23 @@ public sealed partial class AnomalySynchronizerComponent : Component
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public EntityUid? ConnectedAnomaly;
|
||||
|
||||
/// <summary>
|
||||
/// Should the anomaly pulse when connected to the synchronizer?
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool PulseOnConnect = true;
|
||||
|
||||
/// <summary>
|
||||
/// Should the anomaly pulse when disconnected from synchronizer?
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool PulseOnDisconnect = false;
|
||||
|
||||
/// <summary>
|
||||
/// minimum distance from the synchronizer to the anomaly to be attached
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float AttachRange = 0.4f;
|
||||
|
||||
[DataField]
|
||||
public ProtoId<SourcePortPrototype> DecayingPort = "Decaying";
|
||||
|
||||
Reference in New Issue
Block a user