Anomaly Synchronizer + Signallers tweaks (#24461)

* content

* nerf

* fix rsi
This commit is contained in:
Ed
2024-02-14 01:19:22 +03:00
committed by GitHub
parent 56c8084de5
commit 4d7fd1cace
9 changed files with 69 additions and 22 deletions

View File

@@ -25,8 +25,6 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
[Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly PowerReceiverSystem _power = 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() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -55,9 +53,9 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
} }
var coords = _transform.GetMapCoordinates(ent); 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) if (user is not null)
_popup.PopupEntity(Loc.GetString("anomaly-sync-no-anomaly"), ent, user.Value); _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)) if (!TryComp<AnomalyComponent>(ent.Comp.ConnectedAnomaly, out var anomaly))
return; return;
_anomaly.DoAnomalyPulse(ent.Comp.ConnectedAnomaly.Value, anomaly);
DisconneсtFromAnomaly(ent, anomaly); DisconneсtFromAnomaly(ent, anomaly);
} }
@@ -92,7 +89,8 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
return; return;
var user = args.User; var user = args.User;
args.Verbs.Add(new() { args.Verbs.Add(new()
{
Act = () => Act = () =>
{ {
TryAttachNearbyAnomaly(ent, user); TryAttachNearbyAnomaly(ent, user);
@@ -117,7 +115,9 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
var targetXform = _transform.GetWorldPosition(ent); var targetXform = _transform.GetWorldPosition(ent);
_transform.SetWorldPosition(anomaly, targetXform); _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); _popup.PopupEntity(Loc.GetString("anomaly-sync-connected"), ent, PopupType.Medium);
_audio.PlayPvs(ent.Comp.ConnectedSound, ent); _audio.PlayPvs(ent.Comp.ConnectedSound, ent);
} }
@@ -129,7 +129,9 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem
if (ent.Comp.ConnectedAnomaly == null) if (ent.Comp.ConnectedAnomaly == null)
return; 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); _popup.PopupEntity(Loc.GetString("anomaly-sync-disconnected"), ent, PopupType.Large);
_audio.PlayPvs(ent.Comp.ConnectedSound, ent); _audio.PlayPvs(ent.Comp.ConnectedSound, ent);

View File

@@ -1,5 +1,3 @@
using Content.Shared.Anomaly;
using Content.Shared.Anomaly.Components;
using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking;
using Robust.Shared.Audio; using Robust.Shared.Audio;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -18,6 +16,23 @@ public sealed partial class AnomalySynchronizerComponent : Component
[DataField, ViewVariables(VVAccess.ReadWrite)] [DataField, ViewVariables(VVAccess.ReadWrite)]
public EntityUid? ConnectedAnomaly; 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] [DataField]
public ProtoId<SourcePortPrototype> DecayingPort = "Decaying"; public ProtoId<SourcePortPrototype> DecayingPort = "Decaying";

View File

@@ -4,7 +4,7 @@
parent: BaseItem parent: BaseItem
id: RemoteSignaller id: RemoteSignaller
name: remote signaller name: remote signaller
description: A handheld device used for remotely sending signals to objects. description: A handheld device used for remotely sending signals to objects within a small radius of about 15 meters.
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Devices/signaller.rsi sprite: Objects/Devices/signaller.rsi
@@ -19,3 +19,21 @@
- type: Tag - type: Tag
tags: tags:
- Payload - Payload
- type: DeviceNetwork
deviceNetId: Wireless
receiveFrequencyId: BasicDevice
- type: WirelessNetworkConnection
range: 15
- type: entity
parent: RemoteSignaller
id: RemoteSignallerAdvanced
name: advanced remote signaller
description: A handheld device used for remotely sending signals to objects within a small radius of about 50 meters.
components:
- type: Sprite
state: signaller2
- type: WirelessNetworkConnection
range: 50
- type: StaticPrice
price: 30

View File

@@ -10,7 +10,7 @@
- type: DeviceNetwork - type: DeviceNetwork
deviceNetId: Wireless deviceNetId: Wireless
- type: WirelessNetworkConnection - type: WirelessNetworkConnection
range: 300 range: 100
- type: DeviceNetworkRequiresPower - type: DeviceNetworkRequiresPower
- type: DeviceLinkSource - type: DeviceLinkSource
ports: ports:
@@ -39,19 +39,15 @@
shape: shape:
!type:PhysShapeAabb !type:PhysShapeAabb
bounds: "-0.35,-0.35,0.35,0.35" bounds: "-0.35,-0.35,0.35,0.35"
density: 190 density: 100
mask: mask:
- MachineMask - ItemMask
layer: hard: True
- Impassable
- MidImpassable
- LowImpassable
hard: False
- type: Transform - type: Transform
anchored: true anchored: true
noRot: false noRot: false
- type: ApcPowerReceiver - type: ApcPowerReceiver
powerLoad: 15000 powerLoad: 2500
needsPower: true needsPower: true
- type: ItemPlacer - type: ItemPlacer
whitelist: whitelist:

View File

@@ -286,6 +286,7 @@
- ChemicalPayload - ChemicalPayload
- FlashPayload - FlashPayload
- Signaller - Signaller
- SignallerAdvanced
- SignalTrigger - SignalTrigger
- VoiceTrigger - VoiceTrigger
- Igniter - Igniter

View File

@@ -76,6 +76,16 @@
Steel: 100 Steel: 100
Plastic: 200 Plastic: 200
Glass: 100 Glass: 100
- type: latheRecipe
id: SignallerAdvanced
result: RemoteSignallerAdvanced
category: Parts
completetime: 2
materials:
Steel: 100
Plastic: 200
Plasma: 100
- type: latheRecipe - type: latheRecipe
id: AnomalyLocator id: AnomalyLocator

View File

@@ -44,7 +44,8 @@
tier: 1 tier: 1
cost: 7500 cost: 7500
recipeUnlocks: recipeUnlocks:
- Signaller - Signaller
- SignallerAdvanced
- SignalTrigger - SignalTrigger
- VoiceTrigger - VoiceTrigger
- TimerTrigger - TimerTrigger

View File

@@ -2,7 +2,7 @@
"version": 1, "version": 1,
"license": "CC-BY-SA-3.0", "license": "CC-BY-SA-3.0",
"copyright": "Taken from Goonstation at commit https://github.com/goonstation/goonstation/commit/354d9635460c296dc7dce23ab39481dc4de6dc00", "copyright": "Taken from Goonstation at commit https://github.com/goonstation/goonstation/commit/354d9635460c296dc7dce23ab39481dc4de6dc00, signaller2 created by TheShuEd",
"size": { "size": {
"x": 32, "x": 32,
@@ -12,6 +12,10 @@
{ {
"name": "signaller", "name": "signaller",
"directions": 1 "directions": 1
},
{
"name": "signaller2",
"directions": 1
} }
] ]
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B