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