]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Replace string data fields with LocId where relevant (#20883)
authorDrSmugleaf <DrSmugleaf@users.noreply.github.com>
Wed, 11 Oct 2023 03:06:24 +0000 (20:06 -0700)
committerGitHub <noreply@github.com>
Wed, 11 Oct 2023 03:06:24 +0000 (23:06 -0400)
69 files changed:
Content.Client/Chemistry/Visualizers/SolutionContainerVisualsComponent.cs
Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs
Content.IntegrationTests/Tests/VendingMachineRestockTest.cs
Content.Server/Chemistry/Components/SolutionSpikerComponent.cs
Content.Server/Communications/CommunicationsConsoleComponent.cs
Content.Server/Communications/CommunicationsConsoleSystem.cs
Content.Server/Forensics/Components/FiberComponent.cs
Content.Server/Nuke/NukeLabelComponent.cs
Content.Server/Nuke/NukeLabelSystem.cs
Content.Server/NukeOps/WarDeclaratorComponent.cs
Content.Server/NukeOps/WarDeclaratorSystem.cs
Content.Server/Nutrition/Components/FoodComponent.cs
Content.Server/Nutrition/Components/OpenableComponent.cs
Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs
Content.Server/Nutrition/EntitySystems/FoodSystem.cs
Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs
Content.Server/StationEvents/Events/CargoGiftsRule.cs
Content.Server/Storage/Components/PickRandomComponent.cs
Content.Server/Tabletop/Components/TabletopGameComponent.cs
Content.Server/UserInterface/ActivatableUIComponent.cs
Content.Server/Wires/WiresComponent.cs
Content.Shared/Bed/Sleep/SleepEmitSoundComponent.cs
Content.Shared/CartridgeLoader/CartridgeComponent.cs
Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs
Content.Shared/Construction/Steps/PartAssemblyConstructionGraphStep.cs
Content.Shared/Examine/ExamineSystemShared.Group.cs
Content.Shared/Examine/GroupExamineComponent.cs
Content.Shared/Implants/Components/RattleComponent.cs
Content.Shared/Materials/MaterialPrototype.cs
Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs
Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml
Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml
Resources/Prototypes/Entities/Structures/Dispensers/booze.yml
Resources/Prototypes/Entities/Structures/Dispensers/chem.yml
Resources/Prototypes/Entities/Structures/Dispensers/soda.yml
Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml
Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml
Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml
Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml
Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml
Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml
Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml
Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml
Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml
Resources/Prototypes/Entities/Structures/Machines/bombs.yml
Resources/Prototypes/Entities/Structures/Machines/chem_master.yml
Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml
Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml
Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml
Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Resources/Prototypes/Entities/Structures/Machines/material_reclaimer.yml
Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml
Resources/Prototypes/Entities/Structures/Machines/research.yml
Resources/Prototypes/Entities/Structures/Machines/telecomms.yml
Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml
Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml
Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml
Resources/Prototypes/Entities/Structures/Power/apc.yml
Resources/Prototypes/Entities/Structures/Power/chargers.yml
Resources/Prototypes/Entities/Structures/Power/smes.yml
Resources/Prototypes/Entities/Structures/Power/substation.yml
Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml
Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml
Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml
Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml
Resources/Prototypes/Entities/Structures/hydro_tray.yml

index 5fd44fe2853f7936d26833af39ad8ab296902abe..5b8ae937665f032f378c63eaf0432dc4ee582405 100644 (file)
@@ -1,11 +1,4 @@
-using System;
 using Content.Shared.Chemistry;
-using JetBrains.Annotations;
-using Robust.Client.GameObjects;
-using Robust.Shared.GameObjects;
-using Robust.Shared.IoC;
-using Robust.Shared.Maths;
-using Robust.Shared.Serialization.Manager.Attributes;
 using Robust.Shared.Utility;
 
 namespace Content.Client.Chemistry.Visualizers
@@ -13,40 +6,40 @@ namespace Content.Client.Chemistry.Visualizers
     [RegisterComponent]
     public sealed partial class SolutionContainerVisualsComponent : Component
     {
-        [DataField("maxFillLevels")]
+        [DataField]
         public int MaxFillLevels = 0;
-        [DataField("fillBaseName")]
+        [DataField]
         public string? FillBaseName = null;
-        [DataField("layer")]
-        public SolutionContainerLayers FillLayer = SolutionContainerLayers.Fill;
-        [DataField("baseLayer")]
+        [DataField]
+        public SolutionContainerLayers Layer = SolutionContainerLayers.Fill;
+        [DataField]
         public SolutionContainerLayers BaseLayer = SolutionContainerLayers.Base;
-        [DataField("overlayLayer")]
+        [DataField]
         public SolutionContainerLayers OverlayLayer = SolutionContainerLayers.Overlay;
-        [DataField("changeColor")]
+        [DataField]
         public bool ChangeColor = true;
-        [DataField("emptySpriteName")]
+        [DataField]
         public string? EmptySpriteName = null;
-        [DataField("emptySpriteColor")]
+        [DataField]
         public Color EmptySpriteColor = Color.White;
-        [DataField("metamorphic")]
+        [DataField]
         public bool Metamorphic = false;
-        [DataField("metamorphicDefaultSprite")]
+        [DataField]
         public SpriteSpecifier? MetamorphicDefaultSprite;
-        [DataField("metamorphicNameFull")]
-        public string MetamorphicNameFull = "transformable-container-component-glass";
+        [DataField]
+        public LocId MetamorphicNameFull = "transformable-container-component-glass";
 
         /// <summary>
         /// Which solution of the SolutionContainerManagerComponent to represent.
         /// If not set, will work as default.
         /// </summary>
-        [DataField("solutionName")]
+        [DataField]
         public string? SolutionName;
 
-        [DataField("initialName")]
+        [DataField]
         public string InitialName = string.Empty;
 
-        [DataField("initialDescription")]
+        [DataField]
         public string InitialDescription = string.Empty;
     }
 }
index 7c518b4a617112878f7a240c04f2922ce86ec769..44a24595bacc5c528106c4ec1cc21542ffb9bb9e 100644 (file)
@@ -41,7 +41,7 @@ public sealed class SolutionContainerVisualsSystem : VisualizerSystem<SolutionCo
         if (args.Sprite == null)
             return;
 
-        if (!args.Sprite.LayerMapTryGet(component.FillLayer, out var fillLayer))
+        if (!args.Sprite.LayerMapTryGet(component.Layer, out var fillLayer))
             return;
 
         // Currently some solution methods such as overflowing will try to update appearance with a
index 7e1de7d0c888afefafac5e03c70fb5d0baf55092..49fee976317fea2b93b3842092c030cc219aee3f 100644 (file)
@@ -1,18 +1,17 @@
 #nullable enable
 using System.Collections.Generic;
-using Robust.Shared.GameObjects;
-using Robust.Shared.Map;
-using Robust.Shared.Prototypes;
-using Content.Server.Storage.Components;
 using Content.Server.VendingMachines;
+using Content.Server.Wires;
 using Content.Shared.Cargo.Prototypes;
 using Content.Shared.Damage;
 using Content.Shared.Damage.Prototypes;
-using Content.Shared.VendingMachines;
-using Content.Shared.Wires;
-using Content.Server.Wires;
 using Content.Shared.Prototypes;
 using Content.Shared.Storage.Components;
+using Content.Shared.VendingMachines;
+using Content.Shared.Wires;
+using Robust.Shared.GameObjects;
+using Robust.Shared.Map;
+using Robust.Shared.Prototypes;
 
 namespace Content.IntegrationTests.Tests
 {
@@ -96,7 +95,7 @@ namespace Content.IntegrationTests.Tests
   name: Test Ramen
   components:
   - type: Wires
-    LayoutId: Vending
+    layoutId: Vending
   - type: VendingMachine
     pack: TestInventory
   - type: Sprite
index 63b6ebefcc60bf236b748bef1a5524aa51440fb5..1fad6c9a3e81124e236472fe33815ff1f6995f6e 100644 (file)
@@ -7,24 +7,24 @@ public sealed partial class SolutionSpikerComponent : Component
     ///     The source solution to take the reagents from in order
     ///     to spike the other solution container.
     /// </summary>
-    [DataField("sourceSolution")]
+    [DataField]
     public string SourceSolution { get; private set; } = string.Empty;
 
     /// <summary>
     ///     If spiking with this entity should ignore empty containers or not.
     /// </summary>
-    [DataField("ignoreEmpty")]
+    [DataField]
     public bool IgnoreEmpty { get; private set; }
 
     /// <summary>
     ///     What should pop up when spiking with this entity.
     /// </summary>
-    [DataField("popup")]
-    public string Popup { get; private set; } = "spike-solution-generic";
+    [DataField]
+    public LocId Popup { get; private set; } = "spike-solution-generic";
 
     /// <summary>
     ///     What should pop up when spiking fails because the container was empty.
     /// </summary>
-    [DataField("popupEmpty")]
-    public string PopupEmpty { get; private set; } = "spike-solution-empty-generic";
+    [DataField]
+    public LocId PopupEmpty { get; private set; } = "spike-solution-empty-generic";
 }
index e7b5f20cf39258ecb30fb0f35a0e51f636d32024..82a4a94539775f165be8520eaf25fd33ec488488 100644 (file)
@@ -1,6 +1,5 @@
 using Content.Server.UserInterface;
 using Content.Shared.Communications;
-using Robust.Server.GameObjects;
 using Robust.Shared.Audio;
 
 namespace Content.Server.Communications
@@ -21,41 +20,41 @@ namespace Content.Server.Communications
         /// If a Fluent ID isn't found, just uses the raw string
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("title", required: true)]
-        public string AnnouncementDisplayName = "comms-console-announcement-title-station";
+        [DataField(required: true)]
+        public LocId Title = "comms-console-announcement-title-station";
 
         /// <summary>
         /// Announcement color
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("color")]
-        public Color AnnouncementColor = Color.Gold;
+        [DataField]
+        public Color Color = Color.Gold;
 
         /// <summary>
         /// Time in seconds between announcement delays on a per-console basis
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("delay")]
-        public int DelayBetweenAnnouncements = 90;
+        [DataField]
+        public int Delay = 90;
 
         /// <summary>
         /// Can call or recall the shuttle
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("canShuttle")]
-        public bool CanCallShuttle = true;
+        [DataField]
+        public bool CanShuttle = true;
 
         /// <summary>
         /// Announce on all grids (for nukies)
         /// </summary>
-        [DataField("global")]
-        public bool AnnounceGlobal = false;
+        [DataField]
+        public bool Global = false;
 
         /// <summary>
         /// Announce sound file path
         /// </summary>
-        [DataField("sound")]
-        public SoundSpecifier AnnouncementSound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg");
+        [DataField]
+        public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg");
 
         public PlayerBoundUserInterface? UserInterface => Owner.GetUIOrNull(CommunicationsConsoleUiKey.Key);
     }
index b7ad536816a95cbe6d275a71d973b2a82449e2e0..e2a96335d019a3640885a477da2d7ca6014f8cb9 100644 (file)
@@ -188,7 +188,7 @@ namespace Content.Server.Communications
 
             // Calling shuttle checks
             if (_roundEndSystem.ExpectedCountdownEnd is null)
-                return comp.CanCallShuttle;
+                return comp.CanShuttle;
 
             // Recalling shuttle checks
             var recallThreshold = _cfg.GetCVar(CCVars.EmergencyRecallTurningPoint);
@@ -256,27 +256,27 @@ namespace Content.Server.Communications
                 }
             }
 
-            comp.AnnouncementCooldownRemaining = comp.DelayBetweenAnnouncements;
+            comp.AnnouncementCooldownRemaining = comp.Delay;
             UpdateCommsConsoleInterface(uid, comp);
 
             var ev = new CommunicationConsoleAnnouncementEvent(uid, comp, msg, message.Session.AttachedEntity);
             RaiseLocalEvent(ref ev);
 
             // allow admemes with vv
-            Loc.TryGetString(comp.AnnouncementDisplayName, out var title);
-            title ??= comp.AnnouncementDisplayName;
+            Loc.TryGetString(comp.Title, out var title);
+            title ??= comp.Title;
 
             msg += "\n" + Loc.GetString("comms-console-announcement-sent-by") + " " + author;
-            if (comp.AnnounceGlobal)
+            if (comp.Global)
             {
-                _chatSystem.DispatchGlobalAnnouncement(msg, title, announcementSound: comp.AnnouncementSound, colorOverride: comp.AnnouncementColor);
+                _chatSystem.DispatchGlobalAnnouncement(msg, title, announcementSound: comp.Sound, colorOverride: comp.Color);
 
                 if (message.Session.AttachedEntity != null)
                     _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Session.AttachedEntity.Value):player} has sent the following global announcement: {msg}");
 
                 return;
             }
-            _chatSystem.DispatchStationAnnouncement(uid, msg, title, colorOverride: comp.AnnouncementColor);
+            _chatSystem.DispatchStationAnnouncement(uid, msg, title, colorOverride: comp.Color);
 
             if (message.Session.AttachedEntity != null)
                 _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(message.Session.AttachedEntity.Value):player} has sent the following station announcement: {msg}");
index 766ad979b66d23e00005a79a094b2fbf534f50a2..2086c958702162ed8ac2cdf0874697ce697d776f 100644 (file)
@@ -7,10 +7,10 @@ namespace Content.Server.Forensics
     [RegisterComponent]
     public sealed partial class FiberComponent : Component
     {
-        [DataField("fiberMaterial")]
-        public string FiberMaterial = "fibers-synthetic";
+        [DataField]
+        public LocId FiberMaterial = "fibers-synthetic";
 
-        [DataField("fiberColor")]
+        [DataField]
         public string? FiberColor;
     }
 }
index a8e4786888cfca329ea4b13591d5b6474a5403c8..aea54e95dae47ac629df84c15168e6a58e50f961 100644 (file)
@@ -9,6 +9,6 @@ namespace Content.Server.Nuke;
 [RegisterComponent]
 public sealed partial class NukeLabelComponent : Component
 {
-    [DataField("prefix")] public string NukeLabel = "nuke-label-nanotrasen";
-    [DataField("serialLength")] public int SerialLength = 6;
+    [DataField] public LocId Prefix = "nuke-label-nanotrasen";
+    [DataField] public int SerialLength = 6;
 }
index b9416ee27924a0a977828c95173738fb8816d86a..39f0b1ca770748dce7882f5410d36ab49139cb70 100644 (file)
@@ -16,7 +16,7 @@ public sealed class NukeLabelSystem : EntitySystem
 
     private void OnMapInit(EntityUid uid, NukeLabelComponent nuke, MapInitEvent args)
     {
-        var label = Loc.GetString(nuke.NukeLabel, ("serial", _nuke.GenerateRandomNumberString(nuke.SerialLength)));
+        var label = Loc.GetString(nuke.Prefix, ("serial", _nuke.GenerateRandomNumberString(nuke.SerialLength)));
         var meta = MetaData(uid);
         _metaData.SetEntityName(uid, $"{meta.EntityName} ({label})", meta);
     }
index 1a1f9116c603aaf1794ebaa084c5bff4d899e53e..15279ee13cabcbfdf053923dddda2990d474d55b 100644 (file)
@@ -12,37 +12,37 @@ public sealed partial class WarDeclaratorComponent : Component
     /// Custom war declaration message. If empty, use default.
     /// </summary>
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("message")]
+    [DataField]
     public string Message;
 
     /// <summary>
     /// Permission to customize message text
     /// </summary>
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("allowEditingMessage")]
+    [DataField]
     public bool AllowEditingMessage = true;
 
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("maxMessageLength")]
+    [DataField]
     public int MaxMessageLength = 512;
 
     /// <summary>
     /// War declarement text color
     /// </summary>
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("color")]
-    public Color DeclarementColor = Color.Red;
+    [DataField]
+    public Color Color = Color.Red;
 
     /// <summary>
     /// War declarement sound file path
     /// </summary>
-    [DataField("sound")]
-    public SoundSpecifier DeclarementSound = new SoundPathSpecifier("/Audio/Announcements/war.ogg");
+    [DataField]
+    public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Announcements/war.ogg");
 
     /// <summary>
     /// Fluent ID for the declarement title
     /// </summary>
     [ViewVariables(VVAccess.ReadWrite)]
-    [DataField("title")]
-    public string DeclarementTitle = "comms-console-announcement-title-nukie";
+    [DataField]
+    public LocId Title = "comms-console-announcement-title-nukie";
 }
index 2df2cb34832bd3e29c011cdfc0b24e95f08351d0..dcf6c28d4345a7b7fa3c5d605cc4d55f854aefcc 100644 (file)
@@ -76,9 +76,9 @@ public sealed class WarDeclaratorSystem : EntitySystem
         {
             message = Loc.GetString("war-declarator-default-message");
         }
-        var title = Loc.GetString(component.DeclarementTitle);
+        var title = Loc.GetString(component.Title);
 
-        _nukeopsRuleSystem.DeclareWar(args.Session.AttachedEntity.Value, message, title, component.DeclarementSound, component.DeclarementColor);
+        _nukeopsRuleSystem.DeclareWar(args.Session.AttachedEntity.Value, message, title, component.Sound, component.Color);
 
         if (args.Session.AttachedEntity != null)
             _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(args.Session.AttachedEntity.Value):player} has declared war with this text: {message}");
index 0f696d3694651987fae27439acd936bb7c26a905..af7435213215ca2551c868991e41f207f5212a56 100644 (file)
@@ -1,10 +1,8 @@
 using Content.Server.Body.Components;
-using Content.Server.Chemistry.EntitySystems;
 using Content.Server.Nutrition.EntitySystems;
 using Content.Shared.FixedPoint;
 using Robust.Shared.Audio;
 using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
 
 namespace Content.Server.Nutrition.Components;
 
@@ -17,8 +15,8 @@ public sealed partial class FoodComponent : Component
     [DataField]
     public SoundSpecifier UseSound = new SoundPathSpecifier("/Audio/Items/eatfood.ogg");
 
-    [DataField("trash")]
-    public EntProtoId? TrashPrototype;
+    [DataField]
+    public EntProtoId? Trash;
 
     [DataField]
     public FixedPoint2? TransferAmount = FixedPoint2.New(5);
@@ -55,7 +53,7 @@ public sealed partial class FoodComponent : Component
     /// The localization identifier for the eat message. Needs a "food" entity argument passed to it.
     /// </summary>
     [DataField]
-    public string EatMessage = "food-nom";
+    public LocId EatMessage = "food-nom";
 
     /// <summary>
     /// How long it takes to eat the food personally.
index 5164ed21ec56b9ba2d5b34e081bbeffd706e9e53..63efd5209625a8a55c5c2a841c8e9267e475a37f 100644 (file)
@@ -28,7 +28,7 @@ public sealed partial class OpenableComponent : Component
     /// Text shown when examining and its open.
     /// </summary>
     [DataField, ViewVariables(VVAccess.ReadWrite)]
-    public string ExamineText = "drink-component-on-examine-is-opened";
+    public LocId ExamineText = "drink-component-on-examine-is-opened";
 
     /// <summary>
     /// The locale id for the popup shown when IsClosed is called and closed. Needs a "owner" entity argument passed to it.
@@ -36,7 +36,7 @@ public sealed partial class OpenableComponent : Component
     /// It's still generic enough that you should change it if you make openable non-drinks, i.e. unwrap it first, peel it first.
     /// </summary>
     [DataField, ViewVariables(VVAccess.ReadWrite)]
-    public string ClosedPopup = "drink-component-try-use-drink-not-open";
+    public LocId ClosedPopup = "drink-component-try-use-drink-not-open";
 
     /// <summary>
     /// Sound played when opening.
index 9af2397720a3468e30cab95e5af40749475c9ad8..ee0e18e998fab81b7e078ce609224ace3e727707 100644 (file)
@@ -45,9 +45,9 @@ namespace Content.Server.Nutrition.EntitySystems
                 {
                     _puddle.TrySpillAt(uid, solution, out _, false);
                 }
-                if (!string.IsNullOrEmpty(foodComp.TrashPrototype))
+                if (!string.IsNullOrEmpty(foodComp.Trash))
                 {
-                    EntityManager.SpawnEntity(foodComp.TrashPrototype, Transform(uid).Coordinates);
+                    EntityManager.SpawnEntity(foodComp.Trash, Transform(uid).Coordinates);
                 }
             }
             ActivatePayload(uid);
index af037187408103d26a87696faa0cb51f226eb28d..6213b4e9c62bf796442596d0d0f97338c7de8441 100644 (file)
@@ -1,4 +1,3 @@
-using System.Linq;
 using Content.Server.Body.Components;
 using Content.Server.Body.Systems;
 using Content.Server.Chemistry.EntitySystems;
@@ -22,13 +21,12 @@ using Content.Shared.Interaction.Events;
 using Content.Shared.Inventory;
 using Content.Shared.Mobs.Systems;
 using Content.Shared.Nutrition;
-using Content.Shared.Verbs;
 using Content.Shared.Stacks;
+using Content.Shared.Storage;
+using Content.Shared.Verbs;
 using Robust.Shared.Audio;
 using Robust.Shared.Player;
 using Robust.Shared.Utility;
-using Content.Shared.Tag;
-using Content.Shared.Storage;
 
 namespace Content.Server.Nutrition.EntitySystems;
 
@@ -309,7 +307,7 @@ public sealed class FoodSystem : EntitySystem
         if (ev.Cancelled)
             return;
 
-        if (string.IsNullOrEmpty(component.TrashPrototype))
+        if (string.IsNullOrEmpty(component.Trash))
             QueueDel(uid);
         else
             DeleteAndSpawnTrash(component, uid, args.User);
@@ -319,7 +317,7 @@ public sealed class FoodSystem : EntitySystem
     {
         //We're empty. Become trash.
         var position = Transform(food).MapPosition;
-        var finisher = Spawn(component.TrashPrototype, position);
+        var finisher = Spawn(component.Trash, position);
 
         // If the user is holding the item
         if (user != null && _hands.IsHolding(user.Value, food, out var hand))
index 895afc6a9f637981c6a8f1c0862c62b0e295bbb4..ab5d722a737b056393400abfab85672bc0bb053a 100644 (file)
@@ -1,8 +1,6 @@
 using Content.Server.StationEvents.Events;
 using Content.Shared.Cargo.Prototypes;
 using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
 
 namespace Content.Server.StationEvents.Components;
 
@@ -15,43 +13,43 @@ public sealed partial class CargoGiftsRuleComponent : Component
     /// <summary>
     /// The base announcement string (which then incorporates the strings below)
     /// </summary>
-    [DataField("announce"), ViewVariables(VVAccess.ReadWrite)]
-    public string Announce = "cargo-gifts-event-announcement";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId Announce = "cargo-gifts-event-announcement";
 
     /// <summary>
     /// What is being sent
     /// </summary>
-    [DataField("description"), ViewVariables(VVAccess.ReadWrite)]
-    public string Description = "cargo-gift-default-description";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId Description = "cargo-gift-default-description";
 
     /// <summary>
     /// Sender of the gifts
     /// </summary>
-    [DataField("sender"), ViewVariables(VVAccess.ReadWrite)]
-    public string Sender = "cargo-gift-default-sender";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId Sender = "cargo-gift-default-sender";
 
     /// <summary>
     /// Destination of the gifts (who they get sent to on the station)
     /// </summary>
-    [DataField("dest"), ViewVariables(VVAccess.ReadWrite)]
-    public string Dest = "cargo-gift-default-dest";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId Dest = "cargo-gift-default-dest";
 
     /// <summary>
     /// Cargo that you would like gifted to the station, with the quantity for each
     /// Use Ids from cargoProduct Prototypes
     /// </summary>
-    [DataField("gifts", required: true, customTypeSerializer:typeof(PrototypeIdDictionarySerializer<int, CargoProductPrototype>)), ViewVariables(VVAccess.ReadWrite)]
-    public Dictionary<string, int> Gifts = new();
+    [DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
+    public Dictionary<ProtoId<CargoProductPrototype>, int> Gifts = new();
 
     /// <summary>
     /// How much space (minimum) you want to leave in the order database for supply to actually do their work
     /// </summary>
-    [DataField("orderSpaceToLeave"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public int OrderSpaceToLeave = 5;
 
     /// <summary>
     /// Time until we consider next lot of gifts (if supply is overflowing with orders)
     /// </summary>
-    [DataField("timeUntilNextGifts"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public float TimeUntilNextGifts = 10.0f;
 }
index 51fafd6cb30a5d8b946d467d503a3f5b20b8fff5..f0f9586ad33e4f7fff043b465fe24d72665e0d2f 100644 (file)
@@ -4,7 +4,6 @@ using Content.Server.Cargo.Systems;
 using Content.Server.GameTicking;
 using Content.Server.GameTicking.Rules.Components;
 using Content.Server.StationEvents.Components;
-using Content.Shared.Cargo.Prototypes;
 using Robust.Shared.Prototypes;
 
 namespace Content.Server.StationEvents.Events;
@@ -56,7 +55,7 @@ public sealed class CargoGiftsRule : StationEventSystem<CargoGiftsRuleComponent>
             var (productId, qty) = component.Gifts.First();
             component.Gifts.Remove(productId);
 
-            var product = _prototypeManager.Index<CargoProductPrototype>(productId);
+            var product = _prototypeManager.Index(productId);
 
             if (!_cargoSystem.AddAndApproveOrder(
                     station!.Value,
index ae48ce2e21441012c4813c55634da08c53489a1b..00c79b9ea4fb91250aa3b463608107af6ce49889 100644 (file)
@@ -14,18 +14,18 @@ public sealed partial class PickRandomComponent : Component
     /// <summary>
     /// Whitelist for potential picked items.
     /// </summary>
-    [DataField("whitelist"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public EntityWhitelist? Whitelist;
 
     /// <summary>
     /// Locale id for the pick verb text.
     /// </summary>
-    [DataField("verbText"), ViewVariables(VVAccess.ReadWrite)]
-    public string VerbText = "comp-pick-random-verb-text";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId VerbText = "comp-pick-random-verb-text";
 
     /// <summary>
     /// Locale id for the empty storage message.
     /// </summary>
-    [DataField("emptyText"), ViewVariables(VVAccess.ReadWrite)]
-    public string EmptyText = "comp-pick-random-empty";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId EmptyText = "comp-pick-random-empty";
 }
index 0196eec196be45f7011effdf662d4429a57b3793..da7a09b2131f6d20ded7da324428a26430bbeb0c 100644 (file)
@@ -1,5 +1,4 @@
 using System.Numerics;
-using Vector2 = System.Numerics.Vector2;
 
 namespace Content.Server.Tabletop.Components
 {
@@ -12,25 +11,25 @@ namespace Content.Server.Tabletop.Components
         /// <summary>
         /// The localized name of the board. Shown in the UI.
         /// </summary>
-        [DataField("boardName")]
-        public string BoardName { get; private set; } = "tabletop-default-board-name";
+        [DataField]
+        public LocId BoardName { get; private set; } = "tabletop-default-board-name";
 
         /// <summary>
         /// The type of method used to set up a tabletop.
         /// </summary>
-        [DataField("setup", required: true)]
+        [DataField(required: true)]
         public TabletopSetup Setup { get; private set; } = new TabletopChessSetup();
 
         /// <summary>
         /// The size of the viewport being opened. Must match the board dimensions otherwise you'll get the space parallax (unless that's what you want).
         /// </summary>
-        [DataField("size")]
+        [DataField]
         public Vector2i Size { get; private set; } = (300, 300);
 
         /// <summary>
         /// The zoom of the viewport camera.
         /// </summary>
-        [DataField("cameraZoom")]
+        [DataField]
         public Vector2 CameraZoom { get; private set; } = Vector2.One;
 
         /// <summary>
index fe9ae850c8498847d009ecb711375aedfee94fb2..ff605c81190381dba13a7dc0098134640beb3dc0 100644 (file)
@@ -1,4 +1,3 @@
-using Robust.Server.GameObjects;
 using Robust.Server.Player;
 using Robust.Shared.Reflection;
 using Robust.Shared.Serialization;
@@ -15,21 +14,21 @@ namespace Content.Server.UserInterface
         [ViewVariables] public PlayerBoundUserInterface? UserInterface => (Key != null) ? Owner.GetUIOrNull(Key) : null;
 
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("inHandsOnly")]
+        [DataField]
         public bool InHandsOnly { get; set; } = false;
 
-        [DataField("singleUser")]
+        [DataField]
         public bool SingleUser { get; set; } = false;
 
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("adminOnly")]
+        [DataField]
         public bool AdminOnly { get; set; } = false;
 
         [DataField("key", required: true)]
         private string _keyRaw = default!;
 
-        [DataField("verbText")]
-        public string VerbText = "ui-verb-toggle-open";
+        [DataField]
+        public LocId VerbText = "ui-verb-toggle-open";
 
         /// <summary>
         ///     Whether you need a hand to operate this UI. The hand does not need to be free, you just need to have one.
@@ -39,28 +38,28 @@ namespace Content.Server.UserInterface
         ///     more generic interaction / configuration that might not require hands.
         /// </remarks>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("requireHands")]
+        [DataField]
         public bool RequireHands = true;
 
         /// <summary>
         ///     Whether you can activate this ui with activateinhand or not
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("rightClickOnly")]
+        [DataField]
         public bool rightClickOnly = false;
 
         /// <summary>
         ///     Whether spectators (non-admin ghosts) should be allowed to view this UI.
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("allowSpectator")]
+        [DataField]
         public bool AllowSpectator = true;
 
         /// <summary>
         ///     Whether the UI should close when the item is deselected due to a hand swap or drop
         /// </summary>
         [ViewVariables(VVAccess.ReadWrite)]
-        [DataField("closeOnHandDeselect")]
+        [DataField]
         public bool CloseOnHandDeselect = true;
 
         /// <summary>
index 9283e1e18f2af56303c8a7ff2304ba8fb9f20488..526b73a300d0e276b34d03daddf4b0309a8e6d9b 100644 (file)
@@ -8,13 +8,13 @@ public sealed partial class WiresComponent : Component
     /// <summary>
     ///     The name of this entity's internal board.
     /// </summary>
-    [DataField("BoardName")]
-    public string BoardName { get; set; } = "wires-board-name-default";
+    [DataField]
+    public LocId BoardName { get; set; } = "wires-board-name-default";
 
     /// <summary>
     ///     The layout ID of this entity's wires.
     /// </summary>
-    [DataField("LayoutId", required: true)]
+    [DataField(required: true)]
     public string LayoutId { get; set; } = default!;
 
     /// <summary>
@@ -47,7 +47,7 @@ public sealed partial class WiresComponent : Component
     ///     If this should follow the layout saved the first time the layout dictated by the
     ///     layout ID is generated, or if a new wire order should be generated every time.
     /// </summary>
-    [DataField("alwaysRandomize")]
+    [DataField]
     public bool AlwaysRandomize { get; private set; }
 
     /// <summary>
@@ -64,6 +64,6 @@ public sealed partial class WiresComponent : Component
     [ViewVariables]
     public Dictionary<object, object> StateData { get; } = new();
 
-    [DataField("pulseSound")]
+    [DataField]
     public SoundSpecifier PulseSound = new SoundPathSpecifier("/Audio/Effects/multitool_pulse.ogg");
 }
index e1918eac262d24e5299d75e2a3c352b9ad548d25..6313f633f21677a8f9b1ee5cd843a23b7911e753 100644 (file)
@@ -8,24 +8,24 @@ public sealed partial class SleepEmitSoundComponent : Component
     /// <summary>
     /// Sound to play when sleeping
     /// </summary>
-    [DataField("snore"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public SoundSpecifier Snore = new SoundCollectionSpecifier("Snores", AudioParams.Default.WithVariation(0.2f));
 
     /// <summary>
     /// Interval between snore attempts in seconds
     /// </summary>
-    [DataField("interval"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public float Interval = 5f;
 
     /// <summary>
     /// Chance for snore attempt to succeed
     /// </summary>
-    [DataField("chance"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public float Chance = 0.33f;
 
     /// <summary>
     /// Popup for snore (e.g. Zzz...)
     /// </summary>
-    [DataField("popUp"), ViewVariables(VVAccess.ReadWrite)]
-    public string PopUp = "sleep-onomatopoeia";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId PopUp = "sleep-onomatopoeia";
 }
index ba7e6fe2d5807acf63c165c3fa24c96ca91d0bd4..56debb48f4f2a6ac7abe9a55a7a5f94327c6b55e 100644 (file)
@@ -11,7 +11,7 @@ namespace Content.Shared.CartridgeLoader;
 public sealed partial class CartridgeComponent : Component
 {
     [DataField(required: true)]
-    public string ProgramName = "default-program-name";
+    public LocId ProgramName = "default-program-name";
 
     [DataField]
     public SpriteSpecifier? Icon;
index 849fffcf5e3aa26c0c579a7a7c23ffb9d5a3c3a8..69697239533c341eab32084eecc71f8837bcf5c1 100644 (file)
@@ -9,15 +9,15 @@ public sealed partial class ReactionMixerComponent : Component
     ///     A list of IDs for categories of reactions that can be mixed (i.e. HOLY for a bible, DRINK for a spoon)
     /// </summary>
     [ViewVariables]
-    [DataField("reactionTypes")]
+    [DataField]
     public List<string> ReactionTypes = default!;
 
     /// <summary>
     ///     A string which identifies the string to be sent when successfully mixing a solution
     /// </summary>
     [ViewVariables]
-    [DataField("mixMessage")]
-    public string MixMessage = "default-mixing-success";
+    [DataField]
+    public LocId MixMessage = "default-mixing-success";
 }
 
 [ByRefEvent]
index 9119587a6b29d9301755d146af2cf5681a9944b2..f22fc459a717dbfd7165208f1494303f1b921310 100644 (file)
@@ -1,6 +1,5 @@
 using Content.Shared.Construction.Components;
 using Content.Shared.Examine;
-using JetBrains.Annotations;
 
 namespace Content.Shared.Construction.Steps;
 
@@ -10,14 +9,14 @@ public sealed partial class PartAssemblyConstructionGraphStep : ConstructionGrap
     /// <summary>
     /// A valid ID on <see cref="PartAssemblyComponent"/>'s dictionary of strings to part lists.
     /// </summary>
-    [DataField("assemblyId")]
+    [DataField]
     public string AssemblyId = string.Empty;
 
     /// <summary>
-    /// A localization string used for
+    /// A localization string used when examining and for the guidebook.
     /// </summary>
-    [DataField("guideString")]
-    public string GuideString = "construction-guide-condition-part-assembly";
+    [DataField]
+    public LocId GuideString = "construction-guide-condition-part-assembly";
 
     public bool Condition(EntityUid uid, IEntityManager entityManager)
     {
index 4b050da2f4b237abbd43b9e343e19bb3a6a29ec3..bd284f321c8e67340dbe383b58489b444e3d1110 100644 (file)
@@ -1,5 +1,5 @@
-using Robust.Shared.Utility;
 using Content.Shared.Verbs;
+using Robust.Shared.Utility;
 
 namespace Content.Shared.Examine
 {
@@ -23,7 +23,7 @@ namespace Content.Shared.Examine
         /// </summary>
         private void OnGroupExamineVerb(EntityUid uid, GroupExamineComponent component, GetVerbsEvent<ExamineVerb> args)
         {
-            foreach (var group in component.ExamineGroups)
+            foreach (var group in component.Group)
             {
                 if (!EntityHasComponent(uid, group.Components))
                     continue;
@@ -116,7 +116,7 @@ namespace Content.Shared.Examine
                 // Make sure we have the component name as a string
                 var componentName = _componentFactory.GetComponentName(component.GetType());
 
-                foreach (var examineGroup in groupExamine.ExamineGroups)
+                foreach (var examineGroup in groupExamine.Group)
                 {
                     // If any of the examine groups list of components contain this componentname
                     if (examineGroup.Components.Contains(componentName))
@@ -124,7 +124,7 @@ namespace Content.Shared.Examine
                         foreach (var entry in examineGroup.Entries)
                         {
                             // If any of the entries already are from your component, dont do anything else - no doubles!
-                            if (entry.ComponentName == componentName)
+                            if (entry.Component == componentName)
                                 return;
                         }
 
index a61971a2c5ffc7e5a4903a9bf4b0fcbd7eb194a2..f91fd4c4de8c06ce0b7e27ed0c8db5d033cdee75 100644 (file)
@@ -12,8 +12,8 @@ namespace Content.Shared.Examine
         /// <summary>
         ///     A list of ExamineGroups.
         /// </summary>
-        [DataField("group")]
-        public List<ExamineGroup> ExamineGroups = new()
+        [DataField]
+        public List<ExamineGroup> Group = new()
         {
             // TODO Remove hardcoded component names.
             new ExamineGroup()
@@ -33,14 +33,14 @@ namespace Content.Shared.Examine
         /// <summary>
         ///     The title of the Examine Group. Localized string that gets added to the examine tooltip.
         /// </summary>
-        [DataField("title")]
+        [DataField]
         [ViewVariables(VVAccess.ReadWrite)]
         public string? Title;
 
         /// <summary>
         ///     A list of ExamineEntries, containing which component it belongs to, which priority it has, and what FormattedMessage it holds.
         /// </summary>
-        [DataField("entries")]
+        [DataField]
         public List<ExamineEntry> Entries = new();
 
         // TODO custom type serializer, or just make this work via some other automatic grouping process that doesn't
@@ -48,25 +48,25 @@ namespace Content.Shared.Examine
         /// <summary>
         ///     A list of all components this ExamineGroup encompasses.
         /// </summary>
-        [DataField("components")]
+        [DataField]
         public List<string> Components = new();
 
         /// <summary>
         ///     The icon path for the Examine Group.
         /// </summary>
-        [DataField("icon")]
+        [DataField]
         public SpriteSpecifier Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/examine-star.png"));
 
         /// <summary>
         ///     The text shown in the context verb menu.
         /// </summary>
-        [DataField("contextText")]
-        public string ContextText = "verb-examine-group-other";
+        [DataField]
+        public LocId ContextText = "verb-examine-group-other";
 
         /// <summary>
         ///     Details shown when hovering over the button.
         /// </summary>
-        [DataField("hoverMessage")]
+        [DataField]
         public string HoverMessage = string.Empty;
     }
 
@@ -79,25 +79,25 @@ namespace Content.Shared.Examine
         /// <summary>
         ///     Which component does this entry relate to?
         /// </summary>
-        [DataField("component", required: true)]
-        public string ComponentName;
+        [DataField(required: true)]
+        public string Component;
 
         /// <summary>
         ///     What priority has this entry - entries are sorted high to low.
         /// </summary>
-        [DataField("priority")]
+        [DataField]
         public float Priority = 0f;
 
         /// <summary>
         ///     The FormattedMessage of this entry.
         /// </summary>
-        [DataField("message", required: true)]
+        [DataField(required: true)]
         public FormattedMessage Message;
 
-        /// <param name="componentName">Should be set to _componentFactory.GetComponentName(component.GetType()) to properly function.</param>
-        public ExamineEntry(string componentName, float priority, FormattedMessage message)
+        /// <param name="component">Should be set to _componentFactory.GetComponentName(component.GetType()) to properly function.</param>
+        public ExamineEntry(string component, float priority, FormattedMessage message)
         {
-            ComponentName = componentName;
+            Component = component;
             Priority = priority;
             Message = message;
         }
@@ -106,7 +106,7 @@ namespace Content.Shared.Examine
         {
             // parameterless ctor is required for data-definition serialization
             Message = default!;
-            ComponentName = default!;
+            Component = default!;
         }
     }
 
index e8b98e462f95a618f969ce5c784f701f4caf905f..ab1ccdb069daff55ddc1961668ff560314bf274b 100644 (file)
@@ -1,6 +1,6 @@
 using Content.Shared.Radio;
 using Robust.Shared.GameStates;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+using Robust.Shared.Prototypes;
 
 namespace Content.Shared.Implants.Components;
 
@@ -8,14 +8,14 @@ namespace Content.Shared.Implants.Components;
 public sealed partial class RattleComponent : Component
 {
     // The radio channel the message will be sent to
-    [DataField("radioChannel", customTypeSerializer: typeof(PrototypeIdSerializer<RadioChannelPrototype>))]
-    public string RadioChannel = "Syndicate";
+    [DataField]
+    public ProtoId<RadioChannelPrototype> RadioChannel = "Syndicate";
 
     // The message that the implant will send when crit
-    [DataField("critMessage")]
-    public string CritMessage = "deathrattle-implant-critical-message";
+    [DataField]
+    public LocId CritMessage = "deathrattle-implant-critical-message";
 
     // The message that the implant will send when dead
     [DataField("deathMessage")]
-    public string DeathMessage = "deathrattle-implant-dead-message";
+    public LocId DeathMessage = "deathrattle-implant-dead-message";
 }
index 7eb4dfd9a435760e4b992a39aa174993e4a87c4b..cf1159947be84109c8e3cbf47bbe9aa184ae170e 100644 (file)
@@ -1,7 +1,6 @@
 using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
 using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
+using Robust.Shared.Utility;
 
 namespace Content.Shared.Materials
 {
@@ -17,7 +16,7 @@ namespace Content.Shared.Materials
         public string[]? Parents { get; }
 
         [ViewVariables]
-        [AbstractDataFieldAttribute]
+        [AbstractDataField]
         public bool Abstract { get; } = false;
 
         [ViewVariables]
@@ -29,10 +28,10 @@ namespace Content.Shared.Materials
         ///     between the material and physical entities you can carry,
         ///     include which stack we should spawn by default.
         /// </summary>
-        [DataField("stackEntity", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
-        public string? StackEntity;
+        [DataField]
+        public ProtoId<EntityPrototype>? StackEntity;
 
-        [DataField("name")]
+        [DataField]
         public string Name = string.Empty;
 
         /// <summary>
@@ -40,22 +39,22 @@ namespace Content.Shared.Materials
         /// Lathe recipe tooltips and material storage display use this to let you change a material to sound nicer.
         /// For example, 5 bars of gold is better than 5 sheets of gold.
         /// </summary>
-        [DataField("unit")]
-        public string Unit = "materials-unit-sheet";
+        [DataField]
+        public LocId Unit = "materials-unit-sheet";
 
-        [DataField("color")]
+        [DataField]
         public Color Color { get; private set; } = Color.Gray;
 
         /// <summary>
         ///     An icon used to represent the material in graphic interfaces.
         /// </summary>
-        [DataField("icon")]
+        [DataField]
         public SpriteSpecifier Icon { get; private set; } = SpriteSpecifier.Invalid;
 
         /// <summary>
         /// The price per cm3.
         /// </summary>
-        [DataField("price", required: true)]
+        [DataField(required: true)]
         public double Price = 0;
     }
 }
index c3f1fc69f507e56f924ff63dcde17078b4710232..ea9edcb50762a6ea90e3063f074798a1b618341f 100644 (file)
@@ -1,5 +1,4 @@
-using Content.Shared.Nutrition.Components;
-using Content.Shared.Storage;
+using Content.Shared.Storage;
 using Content.Shared.Whitelist;
 using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
 
@@ -16,93 +15,93 @@ public sealed partial class ReproductiveComponent : Component
     /// <summary>
     /// The next time when breeding will be attempted.
     /// </summary>
-    [DataField("nextBreedAttempt", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
+    [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
     public TimeSpan NextBreedAttempt;
 
     /// <summary>
     /// Minimum length between each attempt to breed.
     /// </summary>
-    [DataField("minBreedAttemptInterval"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public TimeSpan MinBreedAttemptInterval = TimeSpan.FromSeconds(45);
 
     /// <summary>
     /// Maximum length between each attempt to breed.
     /// </summary>
-    [DataField("maxBreedAttemptInterval"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public TimeSpan MaxBreedAttemptInterval = TimeSpan.FromSeconds(60);
 
     /// <summary>
     /// How close to a partner an entity must be in order to breed.
     /// Unrealistically long.
     /// </summary>
-    [DataField("breedRange"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public float BreedRange = 3f;
 
     /// <summary>
     /// How many other entities with this component are allowed in range before we stop.
     /// </summary>
-    [DataField("capacity"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public int Capacity = 6;
 
     /// <summary>
     /// The chance that, on a given attempt,
     /// for each valid partner, the entity will breed.
     /// </summary>
-    [DataField("breedChance"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public float BreedChance = 0.15f;
 
     /// <summary>
     /// Entity prototypes for what type of
     /// offspring can be produced by this entity.
     /// </summary>
-    [DataField("offspring", required: true)]
+    [DataField(required: true)]
     public List<EntitySpawnEntry> Offspring = default!;
 
     /// <summary>
     /// Whether or not this entity has bred successfully
     /// and will produce offspring imminently
     /// </summary>
-    [DataField("gestating")]
+    [DataField]
     public bool Gestating;
 
     /// <summary>
     /// When gestation will end.
     /// Null if <see cref="Gestating"/> is false
     /// </summary>
-    [DataField("gestationEndTime"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public TimeSpan? GestationEndTime;
 
     /// <summary>
     /// How long it takes the entity after breeding
     /// to produce offspring
     /// </summary>
-    [DataField("gestationDuration"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public TimeSpan GestationDuration = TimeSpan.FromMinutes(1.5);
 
     /// <summary>
     /// How much hunger is consumed when an entity
     /// gives birth. A balancing tool to require feeding.
     /// </summary>
-    [DataField("hungerPerBirth"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public float HungerPerBirth = 75f;
 
     /// <summary>
     /// Popup shown when an entity gives birth.
     /// Configurable for things like laying eggs.
     /// </summary>
-    [DataField("birthPopup"), ViewVariables(VVAccess.ReadWrite)]
-    public string BirthPopup = "reproductive-birth-popup";
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
+    public LocId BirthPopup = "reproductive-birth-popup";
 
     /// <summary>
     /// Whether or not the offspring should be made into "infants".
     /// </summary>
-    [DataField("makeOffspringInfant"), ViewVariables(VVAccess.ReadWrite)]
+    [DataField, ViewVariables(VVAccess.ReadWrite)]
     public bool MakeOffspringInfant = true;
 
     /// <summary>
     /// An entity whitelist for what entities
     /// can be this one's partner.
     /// </summary>
-    [DataField("partnerWhitelist", required: true)]
+    [DataField(required: true)]
     public EntityWhitelist PartnerWhitelist = default!;
 }
index 8139994c503e87c063608098b06fd308e634c7fb..126e53384959ff683fa9d3e6d2ae4927fb1ff342 100644 (file)
@@ -94,7 +94,7 @@
   - type: WiresPanel
   - type: ActivatableUIRequiresPanel
   - type: Wires
-    LayoutId: Borg
+    layoutId: Borg
   - type: NameIdentifier
     group: Silicon
   - type: ContainerContainer
index c07d62946e70c4ff06cb73adf09b39732a80f541..3f5a7af8d3c6caf2e15c98468ecb15a5ec42e31a 100644 (file)
@@ -61,7 +61,7 @@
         toggleAction: ActionAGhostShowStationRecords
   - type: SolarControlConsole # look ma i AM the computer!
   - type: CommunicationsConsole
-    title: communicationsconsole-announcement-title-centcom
+    title: comms-console-announcement-title-centcom
     color: "#228b22"
   - type: RadarConsole
   - type: CargoOrderConsole
index 6dcd4ad683dcc9f8749d0f5d200591da17ed5628..ad4d2eac8a5190a922d323479735a8b24bf18184 100644 (file)
   - type: WiresVisuals
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-dawinstrument
-    LayoutId: DawInstrument
+    boardName: wires-board-name-dawinstrument
+    layoutId: DawInstrument
   - type: Machine
     board: DawInstrumentMachineCircuitboard
   - type: Instrument
index 725dee61d3797f1017231e75f4bd85288e8a042c..5eab64e73acefcd5e6dc4aebddc2c5b41065614c 100644 (file)
@@ -54,8 +54,8 @@
   - type: Clickable
   - type: WiresPanel
   - type: Wires #we just want the panel
-    BoardName: wires-board-name-mech
-    LayoutId: Mech
+    boardName: wires-board-name-mech
+    layoutId: Mech
   - type: Fixtures
     fixtures:
       fix1:
index f6364f6323b1b6a06424473d4bb2ab3b9c252cfd..f64bc4ce018aeee7428b0534c61d8d0665db5c8d 100644 (file)
@@ -17,8 +17,8 @@
   - type: Machine
     board: BoozeDispenserMachineCircuitboard
   - type: Wires
-    BoardName: wires-board-name-booze
-    LayoutId: BoozeDispenser
+    boardName: wires-board-name-booze
+    layoutId: BoozeDispenser
   - type: GuideHelp
     guides:
     - Bartender
index ba02da325e0cf749f1deb74dd83792a022eae32b..fd39cf2a5ec749abc0c7ec4e8250b6fad770d454 100644 (file)
@@ -26,8 +26,8 @@
   - type: Machine
     board: ChemDispenserMachineCircuitboard
   - type: Wires
-    BoardName: wires-board-name-chemdispenser
-    LayoutId: ChemDispenser
+    boardName: wires-board-name-chemdispenser
+    layoutId: ChemDispenser
   - type: UpgradePowerDraw
     powerDrawMultiplier: 0.75
     scaling: Exponential
index 3cd8e4dbcb008b1f01959e99794a72b0d4a945bc..4322d56947a3a9247e0947da148dfd099076d34c 100644 (file)
@@ -17,8 +17,8 @@
   - type: Machine
     board: SodaDispenserMachineCircuitboard
   - type: Wires
-    BoardName: wires-board-name-soda
-    LayoutId: SodaDispenser
+    boardName: wires-board-name-soda
+    layoutId: SodaDispenser
   - type: GuideHelp
     guides:
     - Bartender
index 7dea7bfb53a96032ba57b707addbd77f92c5226d..0cc5d90a1e192cbf19c229ccf07b3fe55f1e7623 100644 (file)
   - type: AccessReader
     access: [["Command"]]
   - type: Wires
-    LayoutId: AirlockCommand
+    layoutId: AirlockCommand
 
 - type: entity
   parent: AirlockCommand
   - type: AccessReader
     access: [["Security"]]
   - type: Wires
-    LayoutId: AirlockSecurity
+    layoutId: AirlockSecurity
 
 - type: entity
   parent: AirlockSecurity
   - type: AccessReader
     access: [["Detective"]]
   - type: Wires
-    LayoutId: AirlockSecurity
+    layoutId: AirlockSecurity
 
 - type: entity
   parent: AirlockSecurity
   - type: AccessReader
     access: [["Brig"]]
   - type: Wires
-    LayoutId: AirlockSecurity
+    layoutId: AirlockSecurity
 
 - type: entity
   parent: AirlockSecurity
   - type: AccessReader
     access: [["Armory"]]
   - type: Wires
-    LayoutId: AirlockArmory
+    layoutId: AirlockArmory
 
 - type: entity
   parent: AirlockSecurity
index 51d3cfdda0984842954d80104710983202e0d0de..35f2e4d05fb832d2d216edc2d6fd97e7c96d7a93 100644 (file)
@@ -76,8 +76,8 @@
   - type: WiresPanel
   - type: WiresPanelSecurity
   - type: Wires
-    BoardName: wires-board-name-airlock
-    LayoutId: Airlock
+    boardName: wires-board-name-airlock
+    layoutId: Airlock
   - type: DoorSignalControl
   - type: DeviceNetwork
     deviceNetId: Wireless
     price: 150
   - type: Tag
     tags:
-      - Airlock 
+      - Airlock
       # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor
   placement:
     mode: SnapgridCenter
index c653d2d0100f1490eb3da25821ee657a44b3e78a..b560e8cd10f06d338bba8df365718c7043c3cf66 100644 (file)
@@ -70,8 +70,8 @@
   - type: WiresPanelSecurity\r
     securityLevel: maxSecurity\r
   - type: Wires\r
-    BoardName: wires-board-name-highsec\r
-    LayoutId: HighSec\r
+    boardName: wires-board-name-highsec\r
+    layoutId: HighSec\r
     alwaysRandomize: true\r
   - type: UserInterface\r
     interfaces:\r
   - type: Tag\r
     tags:\r
       - HighSecDoor\r
-      # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor
\ No newline at end of file
+      # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor\r
index e6459f484a9ec2aa8baaca0033e05d1fbf162d3b..aa14d74838a3f7fabe64293f9bde1c952bfcd830 100644 (file)
@@ -43,7 +43,7 @@
     - state: panel_open
       map: ["enum.WiresVisualLayers.MaintenancePanel"]
   - type: Wires
-    LayoutId: Docking
+    layoutId: Docking
   - type: Door
     bumpOpen: false
     closeTimeTwo: 0.4
index e12daa537fce8551b3b7162d7b4f1c3c520ab9e1..dccc76e96c1a10c733341ee82002be603ad3e1dc 100644 (file)
@@ -84,8 +84,8 @@
     - type: WiresVisuals
     - type: WiresPanel
     - type: Wires
-      BoardName: wires-board-name-firelock
-      LayoutId: Firelock
+      boardName: wires-board-name-firelock
+      layoutId: Firelock
     - type: UserInterface
       interfaces:
         - key: enum.WiresUiKey.Key
index 6a973c5015e062c93f4813f94a812d5f7318022c..cdaba14d5281b7f03ced4b77f0907e7de99308b8 100644 (file)
     usesApcPower: true
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-windoor
-    LayoutId: Airlock
+    boardName: wires-board-name-windoor
+    layoutId: Airlock
   - type: UserInterface
     interfaces:
     - key: enum.WiresUiKey.Key
index b3463f124498c742dc81c525c76837f369776482..ab2bdb2c5d885a9a99c5acc1a46072ce1eb5bdc0 100644 (file)
@@ -87,8 +87,8 @@
     - PlushieHampter
   - type: WiresPanel
   - type: Wires
-    LayoutId: Arcade
-    BoardName: wires-board-name-arcade
+    layoutId: Arcade
+    boardName: wires-board-name-arcade
   - type: ActivatableUI
     key: enum.SpaceVillainArcadeUiKey.Key
   - type: ActivatableUIRequiresPower
   - type: ActivatableUIRequiresPower
   - type: WiresPanel
   - type: Wires
-    LayoutId: Arcade
-    BoardName: wires-board-name-arcade
+    layoutId: Arcade
+    boardName: wires-board-name-arcade
   - type: UserInterface
     interfaces:
       - key: enum.BlockGameUiKey.Key
index e7ae4d2394ea6887217a0942f5428a85b8ea9e5e..2184ee73ea66032fec5a4c4e0f1540ae813a90c2 100644 (file)
@@ -51,8 +51,8 @@
   - type: WiresVisuals
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-cryopod
-    LayoutId: CryoPod
+    boardName: wires-board-name-cryopod
+    layoutId: CryoPod
   - type: Damageable
     damageContainer: Inorganic
     damageModifierSet: Metallic
index 596b2f770700de2fc1600bddb0e6800bd81cdf85..dc2b5c66781ae1adf2b46ada5ba6df34888df31c 100644 (file)
@@ -38,8 +38,8 @@
   - type: Appearance
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-vessel
-    LayoutId: Vessel
+    boardName: wires-board-name-vessel
+    layoutId: Vessel
   - type: AmbientSound
     enabled: false
     range: 3
   - type: WiresPanel
   - type: WiresVisuals
   - type: Wires
-    BoardName: wires-board-name-ape
-    LayoutId: Ape
+    boardName: wires-board-name-ape
+    layoutId: Ape
   - type: GenericVisualizer
     visuals:
       enum.PowerDeviceVisuals.Powered:
     doAfterDelay: 5
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-anomalygenerator
-    LayoutId: AnomalyGenerator
+    boardName: wires-board-name-anomalygenerator
+    layoutId: AnomalyGenerator
   - type: Destructible
     thresholds:
     - trigger:
index 9bd5070b73b9dcd33e67c770d6da367617f13f69..580253f11895574c091cead7043982e212be0935 100644 (file)
@@ -13,7 +13,7 @@
         - key: enum.WiresUiKey.Key
           type: WiresBoundUserInterface
     - type: Wires
-      LayoutId: Defusable
+      layoutId: Defusable
       alwaysRandomize: true
     - type: Defusable
     - type: Rotatable
@@ -56,7 +56,7 @@
   description: A bomb for dummies, manual not included.
   components:
     - type: Wires
-      LayoutId: Defusable
+      layoutId: Defusable
       alwaysRandomize: true
     - type: Sprite
       sprite: Structures/Machines/bomb.rsi
index 8c006572ed0696149783f9a3fb360f3eb2a38f48..e215a70f4c0178d06f9d227cb94b5fa869f848cc 100644 (file)
@@ -61,8 +61,8 @@
   # Machine / Construction stuff
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-chemmaster
-    LayoutId: chem_master
+    boardName: wires-board-name-chemmaster
+    layoutId: chem_master
   - type: Machine
     board: ChemMasterMachineCircuitboard
   - type: ContainerContainer
index 6b3992b0d896251b98ba517548b0efc3a097fd7b..0cc9f71e55a04161744a0df66976d5d39fab08af 100644 (file)
@@ -61,8 +61,8 @@
     - Biomass
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-cloningpod
-    LayoutId: CloningPod
+    boardName: wires-board-name-cloningpod
+    layoutId: CloningPod
   - type: ApcPowerReceiver
     powerLoad: 200 #Receives most of its power from the console
   - type: Appearance
index 01b6f82e85b59283ec67bc3f94b7bb16909a6fde..d574b286c4582eb7ca0e38df0ac1988774a5dc7a 100644 (file)
@@ -96,8 +96,8 @@
     board: FatExtractorMachineCircuitboard
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-fatextractor
-    LayoutId: FatExtractor
+    boardName: wires-board-name-fatextractor
+    layoutId: FatExtractor
   - type: Appearance
   - type: Speech
     speechVerb: Robotic
index 7e2709ae95d71190b96283d5475f4a61e25e7bc5..657c597b1489a617595d025cf76779449aa4871d 100644 (file)
             max: 1
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-minigravitygenerator
-    LayoutId: MiniGravityGenerator
+    boardName: wires-board-name-minigravitygenerator
+    layoutId: MiniGravityGenerator
   - type: Machine
     board: MiniGravityGeneratorCircuitboard
   - type: ApcPowerReceiver
index a406b8e0c01a20791534294d3916762be578a80a..b1ea5f9e3d1da409827f234d32a0ccea984202f8 100644 (file)
@@ -31,8 +31,8 @@
         acts: ["Destruction"]
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-autolathe
-    LayoutId: Autolathe
+    boardName: wires-board-name-autolathe
+    layoutId: Autolathe
   - type: ActivatableUI
     key: enum.LatheUiKey.Key
   - type: ActivatableUIRequiresPower
   - type: Machine
     board: ProtolatheMachineCircuitboard
   - type: Wires
-    BoardName: wires-board-name-protolathe
-    LayoutId: Protolathe
+    boardName: wires-board-name-protolathe
+    layoutId: Protolathe
   - type: MaterialStorage
     whitelist:
       tags:
index bb8f6d200b75cf153e5b336d6a9ca771cf5e9947..b7886b7ca59bc44b153d5902582f9e8148d4108e 100644 (file)
@@ -59,8 +59,8 @@
     board: MaterialReclaimerMachineCircuitboard
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-reclaimer
-    LayoutId: Reclaimer
+    boardName: wires-board-name-reclaimer
+    layoutId: Reclaimer
   - type: MaterialReclaimer
     whitelist:
       components:
index 7a86fdf11ae8fcb0a871bfd1f2f7bd2dfd602c5c..c8d233f04cc25f8239d46fd9fb478c94a9197a57 100644 (file)
@@ -78,8 +78,8 @@
     board: MedicalScannerMachineCircuitboard
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-medicalscanner
-    LayoutId: MedicalScanner
+    boardName: wires-board-name-medicalscanner
+    layoutId: MedicalScanner
   - type: Appearance
   - type: Climbable
   - type: ApcPowerReceiver
index ef9b63ca73ec7143f2da8114bde8aa87e973aa5f..d042e9d10468a0ccce6c50a00b54389ecc2ff487 100644 (file)
@@ -24,7 +24,7 @@
   - type: ExtensionCableReceiver
   - type: WiresPanel
   - type: Wires
-    LayoutId: rndserver
+    layoutId: rndserver
   - type: WiresVisuals
   - type: Machine
     board: ResearchAndDevelopmentServerMachineCircuitboard
index 1c03d0114855b67245aa76eea097948e43f39df3..0f84f200bb07960831982aacd75d85355d4c3b87 100644 (file)
@@ -49,8 +49,8 @@
     board: TelecomServerCircuitboard
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-telecomserver
-    LayoutId: TelecomServer
+    boardName: wires-board-name-telecomserver
+    layoutId: TelecomServer
   - type: Transform
     anchored: true
   - type: Pullable
index 8e06d23ee76e036d7e04c059a35e79866994d13b..839ae47ef5637bf05300f06894f70dacbbe078fb 100644 (file)
@@ -64,8 +64,8 @@
       type: WiresBoundUserInterface
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-vendingmachine
-    LayoutId: Vending
+    boardName: wires-board-name-vendingmachine
+    layoutId: Vending
   - type: Anchorable
   - type: TypingIndicator
     proto: robot
index c4282a2d4df4e16d8d5714841618b0a0a91a4e82..e9d1c4a30d0ab0b5ed3a2164e505623f18f389cc 100644 (file)
       key: enum.ThermomachineUiKey.Key
     - type: WiresPanel
     - type: Wires
-      BoardName: wires-board-name-thermomachine
-      LayoutId: Thermomachine
+      boardName: wires-board-name-thermomachine
+      layoutId: Thermomachine
     - type: WiresVisuals
     - type: NodeContainer
       nodes:
index 5da747571a1cb87784afe43fc3e6aac7cfeb68e6..ca0cebffecd4778d18715ab7d48ed686ae631eff 100644 (file)
@@ -23,8 +23,8 @@
       type: WiresBoundUserInterface
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-pa
-    LayoutId: ParticleAccelerator
+    boardName: wires-board-name-pa
+    layoutId: ParticleAccelerator
 
 # Unfinished
 
index 0fe35f3464e4ebdd36db39f3d5cf4d77fdcaabf0..261b9a344c45824a0fe8a2919e164885b29909f5 100644 (file)
@@ -43,8 +43,8 @@
     # Construction, interaction
     - type: WiresPanel
     - type: Wires
-      BoardName: wires-board-name-generator
-      LayoutId: Generator
+      boardName: wires-board-name-generator
+      layoutId: Generator
     - type: UserInterface
       interfaces:
         - key: enum.GeneratorComponentUiKey.Key
index defe6d0cd4a9cfe06e2722738ff94da3319bbcf8..35a8f0f704908ffed20d655458cf91db67bac27b 100644 (file)
@@ -91,8 +91,8 @@
   - type: WallMount
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-apc
-    LayoutId: APC
+    boardName: wires-board-name-apc
+    layoutId: APC
   - type: WiresVisuals
   - type: Damageable
     damageContainer: Inorganic
index 8967f60e203718ac2b5b8ca8252b52bf1be55036..520b293cb5d3511b00880d2f8b62a331cc784bc9 100644 (file)
     - machine_board
     - entity_storage
   - type: Wires
-    LayoutId: borgcharger
+    layoutId: borgcharger
   - type: WiresPanel
   - type: WiresVisuals
   - type: Machine
index 08ddbe4b2a6c6cd5e3789f8608600333e2090703..68d72f64f89d293ecf876e3ac7310a00485bfb45 100644 (file)
@@ -63,8 +63,8 @@
       castShadows: false
     - type: WiresPanel
     - type: Wires
-      BoardName: wires-board-name-smes
-      LayoutId: SMES
+      boardName: wires-board-name-smes
+      layoutId: SMES
     - type: Machine
       board: SMESMachineCircuitboard
     - type: StationInfiniteBatteryTarget
index d160ea8365f52b6cc7d36d8b87a13508b06f4428..6e3ef2f7f1a175390e6bee78c237e64790c119c0 100644 (file)
@@ -87,8 +87,8 @@
     totalIntensity: 200
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-substation
-    LayoutId: Substation
+    boardName: wires-board-name-substation
+    layoutId: Substation
   - type: Machine
     board: SubstationMachineCircuitboard
   - type: StationInfiniteBatteryTarget
index 6d23dab829cc9185ead10cf357fae33a4b393676..3e91daaa3904a7cd9ed5a76f36742f529e9d4d7b 100644 (file)
@@ -59,8 +59,8 @@
       type: WiresBoundUserInterface
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-airalarm
-    LayoutId: AirAlarm
+    boardName: wires-board-name-airalarm
+    layoutId: AirAlarm
   - type: AccessReader
     access: [["Atmospherics"]]
   - type: ContainerFill
index da866d98231da19b0942622bd3981dbb423d74c5..7e0635edc8278b563f781b99c85f69fdf37f7db0 100644 (file)
@@ -66,8 +66,8 @@
       type: WiresBoundUserInterface
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-firealarm
-    LayoutId: FireAlarm
+    boardName: wires-board-name-firealarm
+    layoutId: FireAlarm
   - type: Sprite
     sprite: Structures/Wallmounts/air_monitors.rsi
     layers:
index 59409f41325b2074c9ad13ef649bd6470e649ec2..c8cdcfd40aac2b8dbcfd57419b62adea64597b2a 100644 (file)
@@ -50,8 +50,8 @@
     anchored: true
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-intercom
-    LayoutId: Intercom
+    boardName: wires-board-name-intercom
+    layoutId: Intercom
   - type: ActivatableUIRequiresPower
   - type: ActivatableUI
     key: enum.IntercomUiKey.Key
index fcdf92dab5c2346a63f62f21d942abaed54ad916..8679d595e318157d34a8e661c853428d5d0efd66 100644 (file)
@@ -23,7 +23,7 @@
   - type: WiresPanel
   - type: Wires
     alwaysRandomize: true
-    LayoutId: SurveillanceCamera
+    layoutId: SurveillanceCamera
   - type: Damageable
     damageContainer: Inorganic
     damageModifierSet: Metallic
index 944ff6ebff525ecbd17fe526d026a8e10963f438..f2b8feaa395fbeda8e03768055246b4c0e630084 100644 (file)
@@ -79,8 +79,8 @@
     board: HydroponicsTrayMachineCircuitboard
   - type: WiresPanel
   - type: Wires
-    BoardName: wires-board-name-hydroponicstray
-    LayoutId: HydroponicsTray
+    boardName: wires-board-name-hydroponicstray
+    layoutId: HydroponicsTray
   - type: AmbientSound
     volume: -9
     range: 5