]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Anomaly Synchronizer + Signallers tweaks (#24461)
authorEd <96445749+TheShuEd@users.noreply.github.com>
Tue, 13 Feb 2024 22:19:22 +0000 (01:19 +0300)
committerGitHub <noreply@github.com>
Tue, 13 Feb 2024 22:19:22 +0000 (17:19 -0500)
* content

* nerf

* fix rsi

Content.Server/Anomaly/AnomalySynchronizerSystem.cs
Content.Server/Anomaly/Components/AnomalySynchronizerComponent.cs
Resources/Prototypes/Entities/Objects/Devices/Electronics/signaller.yml
Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml
Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Resources/Prototypes/Recipes/Lathes/devices.yml
Resources/Prototypes/Research/arsenal.yml
Resources/Textures/Objects/Devices/signaller.rsi/meta.json
Resources/Textures/Objects/Devices/signaller.rsi/signaller2.png [new file with mode: 0644]

index 7b42b9d8901a8911f79abbfef1c422053ad6e172..434a3fef66b177a19631e34bb4a3452cf917639f 100644 (file)
@@ -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);
 
index 295ce885c290861eda0c54603f90aaedf1136c46..235e740cf35836914dad1a0db2d7691dad235e10 100644 (file)
@@ -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";
index 2a0b5ba1184941d0a6739dd05a7d542eab596ad0..aa889341b1bc50de4e509c1f3f707dcc306cbaab 100644 (file)
@@ -4,7 +4,7 @@
   parent: BaseItem
   id: RemoteSignaller
   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:
   - type: Sprite
     sprite: Objects/Devices/signaller.rsi
   - type: Tag
     tags:
     - 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
\ No newline at end of file
index 88169ecd675334a750d01ea3c883fb932fcd3884..3019b8adf836f7659a4b59e3972998b561fa33e1 100644 (file)
@@ -10,7 +10,7 @@
   - type: DeviceNetwork
     deviceNetId: Wireless
   - type: WirelessNetworkConnection
-    range: 300
+    range: 100
   - type: DeviceNetworkRequiresPower
   - type: DeviceLinkSource
     ports:
         shape:
           !type:PhysShapeAabb
           bounds: "-0.35,-0.35,0.35,0.35"
-        density: 190
+        density: 100
         mask:
-        - MachineMask
-        layer:
-        - Impassable
-        - MidImpassable
-        - LowImpassable
-        hard: False
+        - ItemMask 
+        hard: True
   - type: Transform
     anchored: true
     noRot: false
   - type: ApcPowerReceiver
-    powerLoad: 15000
+    powerLoad: 2500
     needsPower: true
   - type: ItemPlacer
     whitelist:
index 3a6cf772098a622289e37492be14503628467b80..a5d1ec8df0a73ac5d30bdd0c9acf46dc69e956b7 100644 (file)
       - ChemicalPayload
       - FlashPayload
       - Signaller
+      - SignallerAdvanced
       - SignalTrigger
       - VoiceTrigger
       - Igniter
index 62582fad9cfc18f55a90055fdfb66b345ae0561e..8b748f3fe5b3ffc0767e3d943a02d2cf96718dd6 100644 (file)
     Steel: 100
     Plastic: 200
     Glass: 100
+    
+- type: latheRecipe
+  id: SignallerAdvanced
+  result: RemoteSignallerAdvanced
+  category: Parts
+  completetime: 2
+  materials:
+    Steel: 100
+    Plastic: 200
+    Plasma: 100
 
 - type: latheRecipe
   id: AnomalyLocator
index 8a0fe5d77cb76c50bebcaa9487148768c24e6790..795c3ffdaf4c13ee9e307d63983268f852c34f06 100644 (file)
@@ -44,7 +44,8 @@
   tier: 1
   cost: 7500
   recipeUnlocks:
-  - Signaller
+  - Signaller  
+  - SignallerAdvanced
   - SignalTrigger
   - VoiceTrigger
   - TimerTrigger
index fc6d09bffac7a14b2629f3012b0c1ce0b0083988..cefaeebebfd8f5a27cc04a4e5bc761b6e67e392a 100644 (file)
@@ -2,7 +2,7 @@
     "version": 1,
 
     "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": {
         "x": 32,
         {
             "name": "signaller",
             "directions": 1
+        },
+        {
+            "name": "signaller2",
+            "directions": 1
         }
     ]
 }
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Devices/signaller.rsi/signaller2.png b/Resources/Textures/Objects/Devices/signaller.rsi/signaller2.png
new file mode 100644 (file)
index 0000000..799a7be
Binary files /dev/null and b/Resources/Textures/Objects/Devices/signaller.rsi/signaller2.png differ