diff --git a/Content.IntegrationTests/SaveLoadSaveTest.cs b/Content.IntegrationTests/SaveLoadSaveTest.cs
new file mode 100644
index 0000000000..3d73f5566e
--- /dev/null
+++ b/Content.IntegrationTests/SaveLoadSaveTest.cs
@@ -0,0 +1,54 @@
+using System.IO;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using Robust.Server.Interfaces.Maps;
+using Robust.Shared.Interfaces.Map;
+using Robust.Shared.Interfaces.Resources;
+using Robust.Shared.Map;
+using Robust.Shared.Utility;
+
+namespace Content.IntegrationTests
+{
+ ///
+ /// Tests that the
+ ///
+ [TestFixture]
+ public class SaveLoadSaveTest : ContentIntegrationTest
+ {
+ [Test]
+ public async Task SaveLoadSave()
+ {
+ var server = StartServer();
+ await server.WaitIdleAsync();
+ var mapLoader = server.ResolveDependency();
+ var mapManager = server.ResolveDependency();
+ server.Post(() =>
+ {
+ mapLoader.SaveBlueprint(new GridId(2), "save load save 1.yml");
+ var map = mapManager.CreateMap();
+ var grid = mapLoader.LoadBlueprint(map, "save load save 1.yml");
+ mapLoader.SaveBlueprint(grid.Index, "save load save 2.yml");
+ });
+
+ await server.WaitIdleAsync();
+ var userData = server.ResolveDependency().UserData;
+
+ string one;
+ string two;
+
+ using (var stream = userData.Open(new ResourcePath("save load save 1.yml"), FileMode.Open))
+ using (var reader = new StreamReader(stream))
+ {
+ one = reader.ReadToEnd();
+ }
+
+ using (var stream = userData.Open(new ResourcePath("save load save 2.yml"), FileMode.Open))
+ using (var reader = new StreamReader(stream))
+ {
+ two = reader.ReadToEnd();
+ }
+
+ Assert.That(one, Is.EqualTo(two));
+ }
+ }
+}
diff --git a/Content.Server/GameObjects/Components/Power/PowerDevice.cs b/Content.Server/GameObjects/Components/Power/PowerDevice.cs
index 53f8cf9afe..fd7d8cdf6d 100644
--- a/Content.Server/GameObjects/Components/Power/PowerDevice.cs
+++ b/Content.Server/GameObjects/Components/Power/PowerDevice.cs
@@ -32,6 +32,8 @@ namespace Content.Server.GameObjects.Components.Power
}
}
+ protected virtual bool SaveLoad => true;
+
///
/// The method of draw we will try to use to place our load set via component parameter, defaults to using power providers
///
@@ -191,8 +193,12 @@ namespace Content.Server.GameObjects.Components.Power
base.ExposeData(serializer);
serializer.DataField(ref _drawType, "drawtype", DrawTypes.Provider);
- serializer.DataField(ref _load, "load", 100);
serializer.DataField(ref _priority, "priority", Powernet.Priority.Medium);
+
+ if (SaveLoad)
+ {
+ serializer.DataField(ref _load, "load", 100);
+ }
}
void IExamine.Examine(FormattedMessage message)
diff --git a/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs b/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs
index 4771570b5c..4bc1ad6eca 100644
--- a/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs
+++ b/Content.Server/GameObjects/Components/Power/PowerProviderComponent.cs
@@ -23,6 +23,8 @@ namespace Content.Server.GameObjects.Components.Power
///
public override DrawTypes DrawType { get; protected set; } = DrawTypes.Node;
+ protected override bool SaveLoad => false;
+
///
/// Variable that determines the range that the power provider will try to supply power to
///
@@ -280,7 +282,7 @@ namespace Content.Server.GameObjects.Components.Power
// Stops an APC from trying to connect to itself
if (this == device)
return false;
-
+
return (device.Owner.Transform.WorldPosition - Owner.Transform.WorldPosition).LengthSquared <= _range;
}
}