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
literal 0
HcmV?d00001
diff --git a/Resources/Audio/Machines/attributions.yml b/Resources/Audio/Machines/attributions.yml
index bbf4ea9ac0..3fa3aa06d7 100644
--- a/Resources/Audio/Machines/attributions.yml
+++ b/Resources/Audio/Machines/attributions.yml
@@ -46,4 +46,9 @@
- files: ["warning_buzzer.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken from TG station."
- source: "https://github.com/tgstation/tgstation/blob/d4f678a1772007ff8d7eddd21cf7218c8e07bfc0/sound/machines/warning-buzzer.ogg"
\ No newline at end of file
+ source: "https://github.com/tgstation/tgstation/blob/d4f678a1772007ff8d7eddd21cf7218c8e07bfc0/sound/machines/warning-buzzer.ogg"
+
+- files: ["anomaly_sync_connect.ogg"]
+ license: "CC0-1.0"
+ copyright: Created by newagesoup, convert to ogg mono by TheShuEd"
+ source: "https://freesound.org/people/newagesoup/sounds/341172/"
\ No newline at end of file
diff --git a/Resources/Locale/en-US/anomaly/anomaly.ftl b/Resources/Locale/en-US/anomaly/anomaly.ftl
index 29d5169694..83b992ce23 100644
--- a/Resources/Locale/en-US/anomaly/anomaly.ftl
+++ b/Resources/Locale/en-US/anomaly/anomaly.ftl
@@ -25,6 +25,9 @@ anomaly-scanner-particle-unstable = - [color=plum]Unstable type:[/color] {$type}
anomaly-scanner-particle-containment = - [color=goldenrod]Containment type:[/color] {$type}
anomaly-scanner-pulse-timer = Time until next pulse: [color=gray]{$time}[/color]
+anomaly-sync-connected = Anomaly successfully attached
+anomaly-sync-disconnected = The connection to the anomaly has been lost!
+
anomaly-generator-ui-title = Anomaly Generator
anomaly-generator-fuel-display = Fuel:
anomaly-generator-cooldown = Cooldown: [color=gray]{$time}[/color]
diff --git a/Resources/Locale/en-US/machine-linking/transmitter_ports.ftl b/Resources/Locale/en-US/machine-linking/transmitter_ports.ftl
index 154f20eee7..e5f92c5b00 100644
--- a/Resources/Locale/en-US/machine-linking/transmitter_ports.ftl
+++ b/Resources/Locale/en-US/machine-linking/transmitter_ports.ftl
@@ -45,3 +45,18 @@ signal-port-description-air-warning = This port is invoked with HIGH when in war
signal-port-name-air-normal = Normal
signal-port-description-air-normal = This port is invoked with HIGH when in normal mode and LOW when not.
+
+signal-port-name-decaying = Decaying
+signal-port-description-decaying = This port is invoked when a bound anomaly starts to decay.
+
+signal-port-name-stabilize = Stabilize
+signal-port-description-stabilize = This port is invoked when a bound anomaly is normalized.
+
+signal-port-name-growing = Growing
+signal-port-description-growing = This port is invoked when a bound anomaly starts to grow.
+
+signal-port-name-pulse = Pulse
+signal-port-description-pulse = This port is invoked when a bound anomaly is pulsing.
+
+signal-port-name-supercrit = Supercritical
+signal-port-description-supercrit = This port is invoked when a bound anomaly explode after supercrit state.
\ No newline at end of file
diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl
index 28c7377082..0f8a657aa4 100644
--- a/Resources/Locale/en-US/research/technologies.ftl
+++ b/Resources/Locale/en-US/research/technologies.ftl
@@ -53,7 +53,7 @@ research-technology-advanced-parts = Advanced Parts
research-technology-grappling = Grappling
research-technology-abnormal-artifact-manipulation = Abnormal Artifact Manipulation
research-technology-gravity-manipulation = Gravity Manipulation
-research-technology-mobile-anomaly-tech = Mobile Anomaly Tech
+research-technology-advanced-anomaly-research = Advanced Anomaly Research
research-technology-rped = Rapid Part Exchange
research-technology-super-parts = Super Parts
diff --git a/Resources/Prototypes/DeviceLinking/source_ports.yml b/Resources/Prototypes/DeviceLinking/source_ports.yml
index 73e96978a7..6e97c3c809 100644
--- a/Resources/Prototypes/DeviceLinking/source_ports.yml
+++ b/Resources/Prototypes/DeviceLinking/source_ports.yml
@@ -114,3 +114,28 @@
name: signal-port-name-air-normal
description: signal-port-description-air-normal
defaultLinks: [ DoorBolt ]
+
+- type: sourcePort
+ id: Decaying
+ name: signal-port-name-decaying
+ description: signal-port-description-decaying
+
+- type: sourcePort
+ id: Stabilize
+ name: signal-port-name-stabilize
+ description: signal-port-description-stabilize
+
+- type: sourcePort
+ id: Growing
+ name: signal-port-name-growing
+ description: signal-port-description-growing
+
+- type: sourcePort
+ id: Pulse
+ name: signal-port-name-pulse
+ description: signal-port-description-pulse
+
+- type: sourcePort
+ id: Supercritical
+ name: signal-port-name-supercrit
+ description: signal-port-description-supercrit
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml
index 043bf707b4..3b5d33ee06 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml
@@ -19,3 +19,4 @@
- AnomalyRock
- AnomalyLiquid
chance: 1
+ offset: 0.15 # not to put it higher. The anomaly sychnronizer looks for anomalies within this radius, and if the radius is higher, the anomaly can be attracted from a neighboring tile.
diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
index a25e5b7069..2aed92bc28 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
@@ -233,6 +233,22 @@
Cable: 1
PlasmaGlass: 10
+- type: entity
+ parent: BaseMachineCircuitboard
+ id: AnomalySynchronizerCircuitboard
+ name: anomaly synchronizer machine board
+ description: A machine printed circuit board for an anomaly synchronizer.
+ components:
+ - type: Sprite
+ state: science
+ - type: MachineBoard
+ prototype: MachineAnomalySynchronizer
+ requirements:
+ Manipulator: 2
+ Capacitor: 5
+ materialRequirements:
+ PlasmaGlass: 25
+
- type: entity
parent: BaseMachineCircuitboard
id: APECircuitboard
diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml
new file mode 100644
index 0000000000..d37cc714e2
--- /dev/null
+++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml
@@ -0,0 +1,75 @@
+- type: entity
+ id: MachineAnomalySynchronizer
+ parent: [ BaseMachinePowered, ConstructibleMachine ]
+ name: anomaly synchronizer
+ description: A sophisticated device that reads changes in anomalous waves, and converts them into energy signals.
+ components:
+ - type: AnomalySynchronizer
+ - type: Machine
+ board: AnomalySynchronizerCircuitboard
+ - type: DeviceNetwork
+ deviceNetId: Wireless
+ - type: WirelessNetworkConnection
+ range: 300
+ - type: DeviceNetworkRequiresPower
+ - type: DeviceLinkSource
+ ports:
+ - Decaying
+ - Stabilize
+ - Growing
+ - Pulse
+ - Supercritical
+ - type: Sprite
+ noRot: true
+ sprite: Structures/Machines/anomaly_sync.rsi
+ layers:
+ - state: base
+ - state: energy
+ shader: unshaded
+ map: ["enum.PowerDeviceVisualLayers.Powered"]
+ - type: AmbientSound
+ enabled: false
+ sound:
+ path: /Audio/Machines/scan_loop.ogg
+ range: 5
+ volume: -8
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.35,-0.35,0.35,0.35"
+ density: 190
+ mask:
+ - MachineMask
+ layer:
+ - Impassable
+ - MidImpassable
+ - LowImpassable
+ hard: False
+ - type: Transform
+ anchored: true
+ noRot: false
+ - type: ApcPowerReceiver
+ powerLoad: 15000
+ needsPower: true
+ - type: UpgradePowerDraw
+ powerDrawMultiplier: 0.80
+ scaling: Exponential
+ - type: ItemPlacer
+ whitelist:
+ components:
+ - Anomaly
+ - type: DeviceList
+ - type: PointLight
+ radius: 1.8
+ energy: 1.6
+ color: "#b53ca1"
+ - type: LitOnPowered
+ - type: Appearance
+ - type: GenericVisualizer
+ visuals:
+ enum.PowerDeviceVisuals.Powered:
+ enum.PowerDeviceVisualLayers.Powered:
+ True: { visible: true }
+ False: { visible: false }
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index fb77167b73..b82f3f6828 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -366,6 +366,7 @@
- AnalysisComputerCircuitboard
- ExosuitFabricatorMachineCircuitboard
- AnomalyVesselCircuitboard
+ - AnomalySynchronizerCircuitboard
- APECircuitboard
- ArtifactAnalyzerMachineCircuitboard
- TraversalDistorterMachineCircuitboard
diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml
index bc54c78ca1..88b655644f 100644
--- a/Resources/Prototypes/Recipes/Lathes/electronics.yml
+++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml
@@ -248,6 +248,16 @@
Steel: 100
Glass: 900
+- type: latheRecipe
+ id: AnomalySynchronizerCircuitboard
+ result: AnomalySynchronizerCircuitboard
+ completetime: 4
+ materials:
+ Steel: 500
+ Glass: 700
+ Gold: 200
+ Silver: 100
+
- type: latheRecipe
id: APECircuitboard
result: APECircuitboard
diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml
index 02d66c06bf..363dee815e 100644
--- a/Resources/Prototypes/Research/experimental.yml
+++ b/Resources/Prototypes/Research/experimental.yml
@@ -99,16 +99,17 @@
- TraversalDistorterMachineCircuitboard
- type: technology
- id: MobileAnomalyTech
- name: research-technology-mobile-anomaly-tech
+ id: AdvancedAnomalyResearch
+ name: research-technology-advanced-anomaly-research
icon:
- sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
+ sprite: Structures/Machines/anomaly_sync.rsi
state: base
discipline: Experimental
tier: 2
cost: 10000
recipeUnlocks:
- WeaponPistolCHIMP
+ - AnomalySynchronizerCircuitboard
technologyPrerequisites:
- BasicAnomalousResearch
diff --git a/Resources/Textures/Structures/Machines/anomaly_sync.rsi/base.png b/Resources/Textures/Structures/Machines/anomaly_sync.rsi/base.png
new file mode 100644
index 0000000000000000000000000000000000000000..e51f0e4a80808d8a8eb66203a197cb02661bc6aa
GIT binary patch
literal 923
zcmV;M17!S(P)Px&RY^oaR9J=Wmd{HYK@`Wo+O_y2=oU3Uv`|EaZhBFR1ae9aMKJvXT2u^ZPCcqe
z(H?qId-K#5EK&5<9uh%%NKS$#)!-qEsF6amYf_7Q=uPPM5NFuk?5^3mN(=d1CYjlJ
z@B3!nycwWMl`2)LRH=~g#EcxCn34Y_`?Xe#M<&Ms0A1aEvdur
zax|m4#R=|l7oK>%_>HFd%>K5iea4FTbb6PL6$^Qs
zo@8onA|3#-L06mj2nGgmm9p~6hXq4FG=;QV7M_@q=VqtS;b|)qe|nOsu|vF(y>xmP
ziDU{Lo;J+QPMM|?1AykT&mWR^w&T=Lb4v@>H)2#g&u5_=x0@^5GRJwT&zCQr15hup
zaz_{n|poelIVRUr##==)uR}FngKaaq+
z_9FB33jm<+=`+>1={=ytD0Q5!PF$QHRjyXUgSKAPe~$Bl&x
zP@3P^P!B;o*Y#-z0|4>(C*8rly`8eY^^F*S())<~wiD&*Rs!?m>{$2q)$4C}_sHbD
x*#v??(XE>hu<&%^slD!gPEBh3(yKUxOsIQ-(SDGpGwzWUm0Du+v>`;
zdwO5$UF%IUU)cxE4AFVAG;m!l#Ns992D=)nG?^0iq`6_(Zfxg!#4}W%&
zxgLD$%ld0xN&dek-~GJ*yLRk@gvSS$ObwnZFX0olvsSLI;h*TQt0{Zsq1HAq8|O}SACCt_)JcTN}d(-
z`dnqjl(fh`^2_SWMUCdIm8(+bpI__dTEFQf}R*Y2cYx6T7uN7u)dHrYiw7qiE-P(Wr{h2#Q?^eCj@~;JlK`vm1`ecHb{3-EH
TzNH;|x3>UV>HlIIa`(i=YoffM?=}aYwMlTLa?n{kp=7_cMHNJS9vgZ3br^9bD
z#5WpD76R%AgF@5mX&JA7ZwTA7Z6E*Ht&zI-RtMK_dOT;k-*b1ZRo+p_!dt)AYOM0M
znk(<^{I>1aYRi4*zn5S6K5g&5$TfQd>NnktU;Dmq<({eSOF5@(|CI3g&%9sE
zVAHL?f4$cFPM~XEeaS0+29_;pm;Y{ldPjL(;;iB$rhA&!zTTI~ADcI&e@Eq~62E=U
zuCuO5KDXM(>=tpjY
P0||J#`njxgN@xNA=Z2DO
literal 0
HcmV?d00001