Serv3 rework content changes (#7145)
This commit is contained in:
@@ -35,13 +35,13 @@ namespace Content.Client.Actions
|
||||
[UsedImplicitly]
|
||||
public sealed class ActionsSystem : SharedActionsSystem
|
||||
{
|
||||
|
||||
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
|
||||
[Dependency] private readonly IItemSlotManager _itemSlotManager = default!;
|
||||
[Dependency] private readonly ISerializationManager _serializationManager = default!;
|
||||
[Dependency] private readonly IResourceManager _resourceManager = default!;
|
||||
[Dependency] private readonly IOverlayManager _overlayMan = default!;
|
||||
[Dependency] private readonly IOverlayManager _overlayMan = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly InteractionOutlineSystem _interactionOutline = default!;
|
||||
[Dependency] private readonly TargetOutlineSystem _targetOutline = default!;
|
||||
@@ -427,7 +427,7 @@ namespace Content.Client.Actions
|
||||
{
|
||||
// The user is targeting with this action, but it is not valid. Maybe mark this click as
|
||||
// handled and prevent further interactions.
|
||||
return !action.InteractOnMiss;
|
||||
return !action.InteractOnMiss;
|
||||
}
|
||||
|
||||
switch (action)
|
||||
@@ -611,7 +611,7 @@ namespace Content.Client.Actions
|
||||
|
||||
/*public void SaveActionAssignments(string path)
|
||||
{
|
||||
|
||||
|
||||
// Currently only tested with temporary innate actions (i.e., mapping actions). No guarantee it works with
|
||||
// other actions. If its meant to be used for full game state saving/loading, the entity that provides
|
||||
// actions needs to keep the same uid.
|
||||
@@ -666,9 +666,7 @@ namespace Content.Client.Actions
|
||||
if (!map.TryGet("action", out var actionNode))
|
||||
continue;
|
||||
|
||||
var action = _serializationManager.ReadValueCast<ActionType>(typeof(ActionType), actionNode);
|
||||
if (action == null)
|
||||
continue;
|
||||
var action = _serializationManager.Read<ActionType>(actionNode);
|
||||
|
||||
if (Ui.Component.Actions.TryGetValue(action, out var existingAction))
|
||||
{
|
||||
@@ -681,9 +679,7 @@ namespace Content.Client.Actions
|
||||
if (!map.TryGet("assignments", out var assignmentNode))
|
||||
continue;
|
||||
|
||||
var assignments = _serializationManager.ReadValueCast<List<(byte Hotbar, byte Slot)>>(typeof(List<(byte Hotbar, byte Slot)>), assignmentNode);
|
||||
if (assignments == null)
|
||||
continue;
|
||||
var assignments = _serializationManager.Read<List<(byte Hotbar, byte Slot)>>(assignmentNode);
|
||||
|
||||
foreach (var index in assignments)
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@ public sealed class GamePrototypeLoadManager : IGamePrototypeLoadManager
|
||||
private void LoadGamePrototype(GamePrototypeLoadMessage message)
|
||||
{
|
||||
_prototypeManager.LoadString(message.PrototypeData, true);
|
||||
_prototypeManager.Resync();
|
||||
_prototypeManager.ResolveResults();
|
||||
_localizationManager.ReloadLocalizations();
|
||||
GamePrototypeLoaded?.Invoke();
|
||||
Logger.InfoS("adminbus", "Loaded adminbus prototype data.");
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace Content.Client.Changelog
|
||||
return new List<ChangelogEntry>();
|
||||
|
||||
var node = (MappingDataNode)yamlData.Documents[0].RootNode.ToDataNode();
|
||||
return _serialization.ReadValueOrThrow<List<ChangelogEntry>>(node["Entries"]);
|
||||
return _serialization.Read<List<ChangelogEntry>>(node["Entries"]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ namespace Content.IntegrationTests
|
||||
if (client.Options?.ExtraPrototypes is { } extra)
|
||||
{
|
||||
prototypes.LoadString(extra, true);
|
||||
prototypes.Resync();
|
||||
prototypes.ResolveResults();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -306,7 +306,7 @@ namespace Content.IntegrationTests
|
||||
if (server.Options?.ExtraPrototypes is { } extra)
|
||||
{
|
||||
prototypes.LoadString(extra, true);
|
||||
prototypes.Resync();
|
||||
prototypes.ResolveResults();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -40,6 +40,12 @@ namespace Content.IntegrationTests.Tests.Body
|
||||
normalBodyTemperature: 310.15
|
||||
thermalRegulationTemperatureThreshold: 25
|
||||
- type: Respirator
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: 1.5
|
||||
damageRecovery:
|
||||
types:
|
||||
Asphyxiation: -1.5
|
||||
";
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Content.IntegrationTests.Tests.Chemistry
|
||||
public void DeserializeNullTest()
|
||||
{
|
||||
var node = new ValueDataNode("null");
|
||||
var unit = Serialization.ReadValue<FixedPoint2?>(node);
|
||||
var unit = Serialization.Read<FixedPoint2?>(node);
|
||||
|
||||
Assert.That(unit, Is.Null);
|
||||
}
|
||||
@@ -30,7 +30,7 @@ namespace Content.IntegrationTests.Tests.Chemistry
|
||||
public void DeserializeNullDefinitionTest()
|
||||
{
|
||||
var node = new MappingDataNode().Add("unit", "null");
|
||||
var definition = Serialization.ReadValueOrThrow<FixedPoint2TestDefinition>(node);
|
||||
var definition = Serialization.Read<FixedPoint2TestDefinition>(node);
|
||||
|
||||
Assert.That(definition.Unit, Is.Null);
|
||||
}
|
||||
|
||||
@@ -78,6 +78,9 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
id: HumanDummy
|
||||
components:
|
||||
- type: Body
|
||||
template: HumanoidTemplate
|
||||
preset: HumanPreset
|
||||
centerSlot: torso
|
||||
- type: MobState
|
||||
- type: Damageable
|
||||
damageContainer: Biological
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace Content.IntegrationTests.Tests
|
||||
{
|
||||
foreach (var proto in prototypeManager.EnumeratePrototypes<EntityPrototype>())
|
||||
{
|
||||
if (proto.Abstract || !proto.Components.ContainsKey("Sprite")) continue;
|
||||
if (proto.NoSpawn || proto.Abstract || !proto.Components.ContainsKey("Sprite")) continue;
|
||||
|
||||
Assert.DoesNotThrow(() =>
|
||||
{
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace Content.IntegrationTests.Tests
|
||||
//Generate list of non-abstract prototypes to test
|
||||
foreach (var prototype in prototypeMan.EnumeratePrototypes<EntityPrototype>())
|
||||
{
|
||||
if (prototype.Abstract)
|
||||
if (prototype.NoSpawn || prototype.Abstract)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Server.AI.Components
|
||||
// These are immutable so any dynamic changes aren't saved back over.
|
||||
// AiFactionSystem will just read these and then store them.
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("hostile")]
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Content.Server.AI.Utility
|
||||
/// Name of the BehaviorSet.
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -53,7 +53,7 @@ public sealed class GamePrototypeLoadManager : IGamePrototypeLoadManager
|
||||
msg.PrototypeData = prototypeData;
|
||||
_netManager.ServerSendToAll(msg); // everyone load it up!
|
||||
_prototypeManager.LoadString(prototypeData, true); // server needs it too.
|
||||
_prototypeManager.Resync();
|
||||
_prototypeManager.ResolveResults();
|
||||
_localizationManager.ReloadLocalizations();
|
||||
GamePrototypeLoaded?.Invoke();
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Content.Server.Advertisements
|
||||
public sealed class AdvertisementsPackPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("advertisements")]
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Content.Server.Atmos.Reactions
|
||||
public sealed class GasReactionPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Content.Server.BarSign
|
||||
private string _name = string.Empty;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Content.Server.Bible.Components
|
||||
public DamageSpecifier DamageOnUntrainedUse = default!;
|
||||
|
||||
//Chance the bible will fail to heal someone with no helmet
|
||||
[DataField("failChance", required:true)]
|
||||
[DataField("failChance")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public float FailChance = 0.34f;
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ public sealed class SeedPrototype : IPrototype
|
||||
{
|
||||
public const string Prototype = "SeedBase";
|
||||
|
||||
[DataField("id", required: true)] public string ID { get; private init; } = default!;
|
||||
[IdDataFieldAttribute] public string ID { get; private init; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// Unique identifier of this seed. Do NOT set this.
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Server.Construction.Completions;
|
||||
[UsedImplicitly]
|
||||
public sealed class AdminLog : IGraphAction
|
||||
{
|
||||
[DataField("logType", required: true)]
|
||||
[DataField("logType")]
|
||||
public LogType LogType = LogType.Construction;
|
||||
|
||||
[DataField("impact")]
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Content.Server.GameTicking.Presets
|
||||
[Prototype("gamePreset")]
|
||||
public sealed class GamePresetPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required:true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("alias")]
|
||||
|
||||
@@ -6,6 +6,6 @@ namespace Content.Server.GameTicking.Rules;
|
||||
[Prototype("gameRule")]
|
||||
public sealed class GameRulePrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required:true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Content.Server.Holiday
|
||||
[ViewVariables] [DataField("name")] public string Name { get; private set; } = string.Empty;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables]
|
||||
|
||||
@@ -102,7 +102,7 @@ public sealed class SpreaderSystem : EntitySystem
|
||||
{
|
||||
var direction = (DirectionFlag) (1 << i);
|
||||
var coords = transform.Coordinates.Offset(direction.AsDir().ToVec());
|
||||
if (grid.GetTileRef(coords).Tile.IsEmpty || _robustRandom.Prob(spreader.Chance)) continue;
|
||||
if (grid.GetTileRef(coords).Tile.IsEmpty || _robustRandom.Prob(1 - spreader.Chance)) continue;
|
||||
var ents = grid.GetLocal(coords);
|
||||
|
||||
if (ents.Any(x => IsTileBlockedFrom(x, direction))) continue;
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Content.Server.Maps;
|
||||
public sealed class GameMapPrototype : IPrototype
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Server.Objectives
|
||||
public sealed class ObjectivePrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables] [DataField("issuer")] public string Issuer { get; private set; } = "Unknown";
|
||||
|
||||
@@ -19,8 +19,8 @@ namespace Content.Server.Projectiles.Components
|
||||
public bool DeleteOnCollide { get; } = true;
|
||||
|
||||
// Get that juicy FPS hit sound
|
||||
[DataField("soundHit", required: true)] public SoundSpecifier? SoundHit = default!;
|
||||
[DataField("soundHitSpecies")] public SoundSpecifier? SoundHitSpecies = null;
|
||||
[DataField("soundHit")] public SoundSpecifier? SoundHit;
|
||||
[DataField("soundHitSpecies")] public SoundSpecifier? SoundHitSpecies;
|
||||
|
||||
public bool DamagedEntity;
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Content.Server.Salvage
|
||||
public sealed class SalvageMapPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Content.Server.Speech.Components
|
||||
public sealed class ReplacementAccentPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("words")]
|
||||
|
||||
@@ -28,7 +28,7 @@ public sealed class VocalComponent : Component
|
||||
public const float Variation = 0.125f;
|
||||
|
||||
// Not using the in-build sound support for actions, given that the sound is modified non-prototype specific factors like gender.
|
||||
[DataField("action", required: true)]
|
||||
[DataField("action")]
|
||||
public InstantAction Action = new()
|
||||
{
|
||||
UseDelay = TimeSpan.FromSeconds(10),
|
||||
|
||||
@@ -52,13 +52,13 @@ namespace Content.Server.Temperature.Components
|
||||
}
|
||||
}
|
||||
|
||||
[DataField("coldDamage", required: true)]
|
||||
[DataField("coldDamage")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public DamageSpecifier ColdDamage = default!;
|
||||
public DamageSpecifier ColdDamage = new();
|
||||
|
||||
[DataField("heatDamage", required: true)]
|
||||
[DataField("heatDamage")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public DamageSpecifier HeatDamage = default!;
|
||||
public DamageSpecifier HeatDamage = new();
|
||||
|
||||
/// <summary>
|
||||
/// Temperature won't do more than this amount of damage per second.
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Shared.Access;
|
||||
[Prototype("accessGroup")]
|
||||
public sealed class AccessGroupPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("tags", required: true, customTypeSerializer:typeof(PrototypeIdHashSetSerializer<AccessLevelPrototype>))]
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Content.Shared.Access
|
||||
public sealed class AccessLevelPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Content.Shared.Alert
|
||||
public sealed class AlertOrderPrototype : IPrototype, IComparer<AlertPrototype>, ISerializationHooks
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("order")] private readonly List<(string type, string alert)> _order = new();
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Content.Shared.Alert
|
||||
/// <summary>
|
||||
/// Type of alert, no 2 alert prototypes should have the same one.
|
||||
/// </summary>
|
||||
[DataField("alertType")]
|
||||
[IdDataFieldAttribute]
|
||||
public AlertType AlertType { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Content.Shared.Atmos.Monitor
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class AtmosAlarmThreshold : IPrototype, ISerializationHooks
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
[ViewVariables]
|
||||
[DataField("ignore")]
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Content.Shared.Atmos.Prototypes
|
||||
// TODO: Add interfaces for gas behaviours e.g. breathing, burning
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Content.Shared.Audio
|
||||
public sealed class SoundCollectionPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("files")]
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Content.Shared.Body.Prototypes
|
||||
public sealed class BodyPresetPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("partIDs")]
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace Content.Shared.Body.Prototypes
|
||||
private Dictionary<string, string> _mechanismLayers = new();
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables]
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Content.Shared.Body.Prototypes
|
||||
[Prototype("metabolismGroup")]
|
||||
public sealed class MetabolismGroupPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Content.Shared.Body.Prototypes
|
||||
[Prototype("metabolizerType")]
|
||||
public sealed class MetabolizerTypePrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Content.Shared.Cargo
|
||||
[DataField("description")] private string _description = string.Empty;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Content.Shared.CharacterAppearance
|
||||
[Prototype("spriteAccessory")]
|
||||
public sealed class SpriteAccessoryPrototype : IPrototype, ISerializationHooks
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("categories", required: true)]
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace Content.Shared.Chemistry.Dispenser
|
||||
private List<string> _inventory = new();
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
public List<string> Inventory => _inventory;
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Content.Shared.Chemistry.Reaction
|
||||
public sealed class ReactionPrototype : IPrototype, IComparable<ReactionPrototype>
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name")]
|
||||
|
||||
@@ -37,7 +37,8 @@ public sealed class ReactiveReagentEffectEntry
|
||||
|
||||
[DataField("effects", required: true)]
|
||||
public List<ReagentEffect> Effects = default!;
|
||||
[DataField("groups", required: true, readOnly: true, serverOnly: true,
|
||||
|
||||
[DataField("groups", readOnly: true, serverOnly: true,
|
||||
customTypeSerializer:typeof(PrototypeIdDictionarySerializer<HashSet<ReactionMethod>, ReactiveGroupPrototype>))]
|
||||
public Dictionary<string, HashSet<ReactionMethod>> ReactiveGroups { get; } = default!;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,6 @@ namespace Content.Shared.Chemistry.Reaction;
|
||||
[Prototype("reactiveGroup")]
|
||||
public sealed class ReactiveGroupPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Content.Shared.Chemistry.Reagent
|
||||
public sealed class ReagentPrototype : IPrototype, IInheritingPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name", required: true)]
|
||||
@@ -34,11 +34,11 @@ namespace Content.Shared.Chemistry.Reagent
|
||||
[DataField("group")]
|
||||
public string Group { get; } = "Unknown";
|
||||
|
||||
[DataField("parent", customTypeSerializer: typeof(PrototypeIdSerializer<ReagentPrototype>))]
|
||||
[ParentDataFieldAttribute(typeof(PrototypeIdSerializer<ReagentPrototype>))]
|
||||
public string? Parent { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[DataField("abstract")]
|
||||
[AbstractDataFieldAttribute]
|
||||
public bool Abstract { get; private set; }
|
||||
|
||||
[DataField("desc", required: true)]
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Content.Shared.Construction.Prototypes
|
||||
private readonly Dictionary<string, Dictionary<ConstructionGraphNode, ConstructionGraphNode?>> _pathfinding = new();
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables]
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace Content.Shared.Construction.Prototypes
|
||||
[DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("placementMode")]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Serialization.Manager.Result;
|
||||
using Robust.Shared.Serialization.Markdown.Mapping;
|
||||
using Robust.Shared.Serialization.Markdown.Validation;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Interfaces;
|
||||
@@ -47,17 +46,17 @@ namespace Content.Shared.Construction.Steps
|
||||
return null;
|
||||
}
|
||||
|
||||
public DeserializationResult Read(ISerializationManager serializationManager,
|
||||
public ConstructionGraphStep Read(ISerializationManager serializationManager,
|
||||
MappingDataNode node,
|
||||
IDependencyCollection dependencies,
|
||||
bool skipHook,
|
||||
ISerializationContext? context = null)
|
||||
ISerializationContext? context = null, ConstructionGraphStep? _ = null)
|
||||
{
|
||||
var type = GetType(node) ??
|
||||
throw new ArgumentException(
|
||||
"Tried to convert invalid YAML node mapping to ConstructionGraphStep!");
|
||||
|
||||
return serializationManager.Read(type, node, context, skipHook);
|
||||
return (ConstructionGraphStep)serializationManager.Read(type, node, context, skipHook)!;
|
||||
}
|
||||
|
||||
public ValidationNode Validate(ISerializationManager serializationManager, MappingDataNode node,
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Content.Shared.Damage.Prototypes
|
||||
public sealed class DamageContainerPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Content.Shared.Damage.Prototypes
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class DamageGroupPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)] public string ID { get; } = default!;
|
||||
[IdDataFieldAttribute] public string ID { get; } = default!;
|
||||
|
||||
[DataField("damageTypes", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer<DamageTypePrototype>))]
|
||||
public List<string> DamageTypes { get; } = default!;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Content.Shared.Damage.Prototypes
|
||||
public sealed class DamageModifierSetPrototype : DamageModifierSet, IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Content.Shared.Damage.Prototypes
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class DamageTypePrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Content.Shared.Damage.Prototypes;
|
||||
[Prototype("examinableDamage")]
|
||||
public sealed class ExaminableDamagePrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Content.Shared.Dataset
|
||||
public sealed class DatasetPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("values")] public IReadOnlyList<string> Values { get; } = new List<string>();
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Content.Shared.Decals;
|
||||
[Prototype("palette")]
|
||||
public sealed class ColorPalettePrototype : IPrototype
|
||||
{
|
||||
[DataField("id")] public string ID { get; } = null!;
|
||||
[IdDataFieldAttribute] public string ID { get; } = null!;
|
||||
[DataField("name")] public string Name { get; } = null!;
|
||||
[DataField("colors")] public Dictionary<string, Color> Colors { get; } = null!;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ using Robust.Shared.IoC;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Serialization.Manager.Result;
|
||||
using Robust.Shared.Serialization.Markdown;
|
||||
using Robust.Shared.Serialization.Markdown.Mapping;
|
||||
using Robust.Shared.Serialization.Markdown.Validation;
|
||||
@@ -20,12 +19,10 @@ namespace Content.Shared.Decals
|
||||
return serializationManager.ValidateNode<Dictionary<Vector2i, Dictionary<uint, Decal>>>(node, context);
|
||||
}
|
||||
|
||||
public DeserializationResult Read(ISerializationManager serializationManager, MappingDataNode node,
|
||||
IDependencyCollection dependencies, bool skipHook, ISerializationContext? context = null)
|
||||
public DecalGridComponent.DecalGridChunkCollection Read(ISerializationManager serializationManager, MappingDataNode node,
|
||||
IDependencyCollection dependencies, bool skipHook, ISerializationContext? context = null, DecalGridComponent.DecalGridChunkCollection? _ = null)
|
||||
{
|
||||
//todo this read method does not support pushing inheritance
|
||||
var dictionary =
|
||||
serializationManager.ReadValueOrThrow<Dictionary<Vector2i, Dictionary<uint, Decal>>>(node, context, skipHook);
|
||||
var dictionary = serializationManager.Read<Dictionary<Vector2i, Dictionary<uint, Decal>>>(node, context, skipHook: skipHook);
|
||||
|
||||
var uids = new SortedSet<uint>();
|
||||
var uidChunkMap = new Dictionary<uint, Vector2i>();
|
||||
@@ -54,8 +51,7 @@ namespace Content.Shared.Decals
|
||||
newDict[indices][newUid] = dictionary[indices][oldUid];
|
||||
}
|
||||
|
||||
return new DeserializedValue<DecalGridComponent.DecalGridChunkCollection>(
|
||||
new DecalGridComponent.DecalGridChunkCollection(newDict){NextUid = nextIndex});
|
||||
return new DecalGridComponent.DecalGridChunkCollection(newDict){NextUid = nextIndex};
|
||||
}
|
||||
|
||||
public DataNode Write(ISerializationManager serializationManager, DecalGridComponent.DecalGridChunkCollection value, bool alwaysWrite = false,
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Content.Shared.Decals
|
||||
[Prototype("decal")]
|
||||
public sealed class DecalPrototype : IPrototype
|
||||
{
|
||||
[DataField("id")] public string ID { get; } = null!;
|
||||
[IdDataFieldAttribute] public string ID { get; } = null!;
|
||||
[DataField("sprite")] public SpriteSpecifier Sprite { get; } = SpriteSpecifier.Invalid;
|
||||
[DataField("tags")] public List<string> Tags = new();
|
||||
}
|
||||
|
||||
@@ -12,17 +12,17 @@ namespace Content.Shared.Disease
|
||||
public sealed class DiseasePrototype : IPrototype, IInheritingPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name")]
|
||||
public string Name { get; } = string.Empty;
|
||||
|
||||
[DataField("parent", customTypeSerializer: typeof(PrototypeIdSerializer<DiseasePrototype>))]
|
||||
[ParentDataFieldAttribute(typeof(PrototypeIdSerializer<DiseasePrototype>))]
|
||||
public string? Parent { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[DataField("abstract")]
|
||||
[AbstractDataFieldAttribute]
|
||||
public bool Abstract { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Content.Shared.EntityList
|
||||
public sealed class EntityListPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables]
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Content.Shared.Explosion;
|
||||
[Prototype("explosion")]
|
||||
public sealed class ExplosionPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataField]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
@@ -27,14 +27,14 @@ public sealed class ExplosionPrototype : IPrototype
|
||||
|
||||
/// <summary>
|
||||
/// This set of points, together with <see cref="_tileBreakIntensity"/> define a function that maps the
|
||||
/// explosion intensity to a tile break chance via linear interpolation.
|
||||
/// explosion intensity to a tile break chance via linear interpolation.
|
||||
/// </summary>
|
||||
[DataField("tileBreakChance")]
|
||||
private readonly float[] _tileBreakChance = { 0f, 1f };
|
||||
|
||||
/// <summary>
|
||||
/// This set of points, together with <see cref="_tileBreakChance"/> define a function that maps the
|
||||
/// explosion intensity to a tile break chance via linear interpolation.
|
||||
/// explosion intensity to a tile break chance via linear interpolation.
|
||||
/// </summary>
|
||||
[DataField("tileBreakIntensity")]
|
||||
private readonly float[] _tileBreakIntensity = {0f, 15f };
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Content.Shared.HUD
|
||||
[DataField("name", required: true)]
|
||||
public string Name { get; } = string.Empty;
|
||||
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
[DataField("path", required: true)]
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
|
||||
namespace Content.Shared.Inventory;
|
||||
|
||||
public abstract class InventoryComponent : Component
|
||||
{
|
||||
[DataField("templateId", required: true,
|
||||
customTypeSerializer: typeof(PrototypeIdSerializer<InventoryTemplatePrototype>))]
|
||||
[DataField("templateId", customTypeSerializer: typeof(PrototypeIdSerializer<InventoryTemplatePrototype>))]
|
||||
public string TemplateId { get; } = "human";
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Content.Shared.Inventory;
|
||||
[Prototype("inventoryTemplate")]
|
||||
public sealed class InventoryTemplatePrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
[DataField("slots")]
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Content.Shared.Kitchen
|
||||
public sealed class FoodRecipePrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name")]
|
||||
|
||||
@@ -13,16 +13,16 @@ namespace Content.Shared.Maps
|
||||
[Prototype("tile")]
|
||||
public sealed class ContentTileDefinition : IPrototype, IInheritingPrototype, ITileDefinition
|
||||
{
|
||||
[DataField("parent", customTypeSerializer:typeof(PrototypeIdSerializer<ContentTileDefinition>))]
|
||||
[ParentDataFieldAttribute(typeof(PrototypeIdSerializer<ContentTileDefinition>))]
|
||||
public string? Parent { get; private set; }
|
||||
|
||||
[NeverPushInheritance]
|
||||
[DataField("abstract")]
|
||||
[AbstractDataFieldAttribute]
|
||||
public bool Abstract { get; private set; }
|
||||
|
||||
public string Path => "/Textures/Tiles/";
|
||||
|
||||
[DataField("id", required: true)] public string ID { get; } = string.Empty;
|
||||
[IdDataFieldAttribute] public string ID { get; } = string.Empty;
|
||||
|
||||
public ushort TileId { get; private set; }
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.ViewVariables;
|
||||
|
||||
namespace Content.Shared.Materials
|
||||
{
|
||||
@@ -16,15 +13,15 @@ namespace Content.Shared.Materials
|
||||
public sealed class MaterialPrototype : IPrototype, IInheritingPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("parent")]
|
||||
[ParentDataField(typeof(PrototypeIdSerializer<MaterialPrototype>))]
|
||||
public string? Parent { get; } = null;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("abstract")]
|
||||
[AbstractDataFieldAttribute]
|
||||
public bool Abstract { get; } = false;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables]
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Content.Shared.NameIdentifier;
|
||||
[Prototype("nameIdentifierGroup")]
|
||||
public sealed class NameIdentifierGroupPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Content.Shared.PDA
|
||||
public sealed class UplinkStoreListingPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("itemId", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Content.Shared.Research.Prototypes
|
||||
public sealed class LatheRecipePrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name")]
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Content.Shared.Research.Prototypes
|
||||
/// The ID of this technology prototype.
|
||||
/// </summary>
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Shared.Roles
|
||||
public sealed class AntagPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Content.Shared.Roles
|
||||
private string _name = string.Empty;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("supervisors")]
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Content.Shared.Roles
|
||||
private Dictionary<string, string> _inHand = new(0);
|
||||
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
public string GetGear(string slot, HumanoidCharacterProfile? profile)
|
||||
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Serialization.Manager;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Serialization.Manager.Result;
|
||||
using Robust.Shared.Serialization.Markdown.Mapping;
|
||||
using Robust.Shared.Serialization.Markdown.Validation;
|
||||
using Robust.Shared.Serialization.Markdown.Value;
|
||||
@@ -30,17 +29,17 @@ namespace Content.Shared.Sound
|
||||
return typeof(SoundPathSpecifier);
|
||||
}
|
||||
|
||||
public DeserializationResult Read(ISerializationManager serializationManager, MappingDataNode node,
|
||||
IDependencyCollection dependencies, bool skipHook, ISerializationContext? context = null)
|
||||
public SoundSpecifier Read(ISerializationManager serializationManager, MappingDataNode node,
|
||||
IDependencyCollection dependencies, bool skipHook, ISerializationContext? context = null, SoundSpecifier? _ = null)
|
||||
{
|
||||
var type = GetType(node);
|
||||
return serializationManager.Read(type, node, context, skipHook);
|
||||
return (SoundSpecifier) serializationManager.Read(type, node, context, skipHook)!;
|
||||
}
|
||||
|
||||
public DeserializationResult Read(ISerializationManager serializationManager, ValueDataNode node,
|
||||
IDependencyCollection dependencies, bool skipHook, ISerializationContext? context = null)
|
||||
public SoundSpecifier Read(ISerializationManager serializationManager, ValueDataNode node,
|
||||
IDependencyCollection dependencies, bool skipHook, ISerializationContext? context = null, SoundSpecifier? _ = null)
|
||||
{
|
||||
return new DeserializedValue<SoundSpecifier>(new SoundPathSpecifier(node.Value));
|
||||
return new SoundPathSpecifier(node.Value);
|
||||
}
|
||||
|
||||
public ValidationNode Validate(ISerializationManager serializationManager, MappingDataNode node,
|
||||
|
||||
@@ -11,7 +11,7 @@ public sealed class SpeciesPrototype : IPrototype
|
||||
/// <summary>
|
||||
/// Prototype ID of the species.
|
||||
/// </summary>
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Content.Shared.Stacks
|
||||
public sealed class StackPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Content.Shared.StatusEffect
|
||||
[Prototype("statusEffect")]
|
||||
public sealed class StatusEffectPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("alert")]
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Content.Shared.Tag
|
||||
public sealed class TagPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Content.Shared.Tools
|
||||
[Prototype("tool")]
|
||||
public sealed class ToolQualityPrototype : IPrototype
|
||||
{
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Shared.VendingMachines
|
||||
public sealed class VendingMachineInventoryPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[DataField("name")]
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Content.Shared.Weapons.Melee
|
||||
public sealed class MeleeWeaponAnimationPrototype : IPrototype
|
||||
{
|
||||
[ViewVariables]
|
||||
[DataField("id", required: true)]
|
||||
[IdDataFieldAttribute]
|
||||
public string ID { get; } = default!;
|
||||
|
||||
[ViewVariables]
|
||||
|
||||
@@ -16,13 +16,11 @@ namespace Content.Tests.Shared.Alert
|
||||
{
|
||||
const string PROTOTYPES = @"
|
||||
- type: alert
|
||||
name: AlertLowPressure
|
||||
alertType: LowPressure
|
||||
id: LowPressure
|
||||
icon: /Textures/Interface/Alerts/Pressure/lowpressure.png
|
||||
|
||||
- type: alert
|
||||
name: AlertHighPressure
|
||||
alertType: HighPressure
|
||||
id: HighPressure
|
||||
icon: /Textures/Interface/Alerts/Pressure/highpressure.png
|
||||
";
|
||||
|
||||
|
||||
@@ -25,50 +25,40 @@ namespace Content.Tests.Shared.Alert
|
||||
- category: Temperature
|
||||
|
||||
- type: alert
|
||||
name: AlertLowPressure
|
||||
id: LowPressure
|
||||
category: Pressure
|
||||
alertType: LowPressure
|
||||
|
||||
- type: alert
|
||||
name: AlertOverfed
|
||||
id: Overfed
|
||||
category: Hunger
|
||||
alertType: Overfed
|
||||
|
||||
- type: alert
|
||||
name: AlertHighPressure
|
||||
id: HighPressure
|
||||
category: Pressure
|
||||
alertType: HighPressure
|
||||
|
||||
- type: alert
|
||||
name: AlertPeckish
|
||||
id: Peckish
|
||||
category: Hunger
|
||||
alertType: Peckish
|
||||
|
||||
- type: alert
|
||||
name: AlertStun
|
||||
alertType: Stun
|
||||
id: Stun
|
||||
|
||||
- type: alert
|
||||
name: AlertHandcuffed
|
||||
alertType: Handcuffed
|
||||
id: Handcuffed
|
||||
|
||||
- type: alert
|
||||
name: AlertHot
|
||||
id: Hot
|
||||
category: Temperature
|
||||
alertType: Hot
|
||||
|
||||
- type: alert
|
||||
name: AlertCold
|
||||
id: Cold
|
||||
category: Temperature
|
||||
alertType: Cold
|
||||
|
||||
- type: alert
|
||||
name: AlertWeightless
|
||||
alertType: Weightless
|
||||
id: Weightless
|
||||
|
||||
- type: alert
|
||||
name: AlertPilotingShuttle
|
||||
alertType: PilotingShuttle
|
||||
id: PilotingShuttle
|
||||
";
|
||||
|
||||
[Test]
|
||||
@@ -78,7 +68,7 @@ namespace Content.Tests.Shared.Alert
|
||||
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
|
||||
prototypeManager.Initialize();
|
||||
prototypeManager.LoadFromStream(new StringReader(PROTOTYPES));
|
||||
prototypeManager.Resync();
|
||||
prototypeManager.ResolveResults();
|
||||
|
||||
var alertOrder = prototypeManager.EnumeratePrototypes<AlertOrderPrototype>().FirstOrDefault();
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Content.Tests.Shared.Alert
|
||||
{
|
||||
private const string Prototypes = @"
|
||||
- type: alert
|
||||
alertType: HumanHealth
|
||||
id: HumanHealth
|
||||
category: Health
|
||||
icon: /Textures/Interface/Alerts/Human/human.rsi/human.png
|
||||
name: Health
|
||||
@@ -78,7 +78,7 @@ namespace Content.Tests.Shared.Alert
|
||||
var proto = (YamlMappingNode) rootNode[0];
|
||||
var serMan = IoCManager.Resolve<ISerializationManager>();
|
||||
|
||||
return serMan.ReadValue<AlertPrototype>(new MappingDataNode(proto));
|
||||
return serMan.Read<AlertPrototype>(new MappingDataNode(proto));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,12 @@ namespace Content.Tests.Shared.Alert
|
||||
{
|
||||
const string PROTOTYPES = @"
|
||||
- type: alert
|
||||
name: AlertLowPressure
|
||||
alertType: LowPressure
|
||||
id: LowPressure
|
||||
category: Pressure
|
||||
icon: /Textures/Interface/Alerts/Pressure/lowpressure.png
|
||||
|
||||
- type: alert
|
||||
name: AlertHighPressure
|
||||
alertType: HighPressure
|
||||
id: HighPressure
|
||||
category: Pressure
|
||||
icon: /Textures/Interface/Alerts/Pressure/highpressure.png
|
||||
";
|
||||
@@ -42,7 +40,7 @@ namespace Content.Tests.Shared.Alert
|
||||
var factory = IoCManager.Resolve<IComponentFactory>();
|
||||
factory.RegisterClass<AlertsComponent>();
|
||||
prototypeManager.LoadFromStream(new StringReader(PROTOTYPES));
|
||||
prototypeManager.Resync();
|
||||
prototypeManager.ResolveResults();
|
||||
|
||||
var entSys = IoCManager.Resolve<IEntitySystemManager>();
|
||||
entSys.LoadExtraSystemType<ServerAlertsSystem>();
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace Content.Tests.Shared.Chemistry
|
||||
var serializationManager = IoCManager.Resolve<ISerializationManager>();
|
||||
serializationManager.Initialize();
|
||||
|
||||
var newReagent = serializationManager.ReadValue<ReagentPrototype>(new MappingDataNode(proto));
|
||||
var newReagent = serializationManager.Read<ReagentPrototype>(new MappingDataNode(proto));
|
||||
|
||||
Assert.That(defType, Is.EqualTo("reagent"));
|
||||
Assert.That(newReagent.ID, Is.EqualTo("H2"));
|
||||
@@ -43,6 +43,7 @@ namespace Content.Tests.Shared.Chemistry
|
||||
id: H2
|
||||
name: Hydrogen
|
||||
desc: A light, flammable gas.
|
||||
physicalDesc: A light, flammable gas.
|
||||
color: " + "\"#008080\"";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace Content.Tests.Shared
|
||||
_prototypeManager = IoCManager.Resolve<IPrototypeManager>();
|
||||
_prototypeManager.Initialize();
|
||||
_prototypeManager.LoadString(_damagePrototypes);
|
||||
_prototypeManager.Resync();
|
||||
_prototypeManager.ResolveResults();
|
||||
|
||||
// Create a damage data set
|
||||
_damageSpec = new(_prototypeManager.Index<DamageGroupPrototype>("Brute"), 6);
|
||||
|
||||
@@ -29,6 +29,7 @@ namespace Content.Tests.Shared.Utility
|
||||
prototypeManager.Initialize();
|
||||
|
||||
prototypeManager.LoadFromStream(new StringReader(Prototypes));
|
||||
prototypeManager.ResolveResults();
|
||||
|
||||
var dataSet = prototypeManager.Index<DatasetPrototype>(TestDatasetId);
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
- alertType: Magboots
|
||||
|
||||
- type: alert
|
||||
alertType: LowOxygen
|
||||
id: LowOxygen
|
||||
category: Breathing
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/breathing.rsi
|
||||
@@ -28,7 +28,7 @@
|
||||
description: "There is [color=red]not enough oxygen[/color] in the air you are breathing. Put on [color=green]internals[/color]."
|
||||
|
||||
- type: alert
|
||||
alertType: Toxins
|
||||
id: Toxins
|
||||
category: Toxins
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/breathing.rsi
|
||||
@@ -37,7 +37,7 @@
|
||||
description: "There are [color=red]too many toxins[/color] in the air you are breathing. Put on [color=green]internals[/color] or get away."
|
||||
|
||||
- type: alert
|
||||
alertType: LowPressure
|
||||
id: LowPressure
|
||||
category: Pressure
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/pressure.rsi
|
||||
@@ -47,7 +47,7 @@
|
||||
description: "The air around you is [color=red]hazardously thin[/color]. A [color=green]space suit[/color] would protect you."
|
||||
|
||||
- type: alert
|
||||
alertType: HighPressure
|
||||
id: HighPressure
|
||||
category: Pressure
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/pressure.rsi
|
||||
@@ -57,14 +57,14 @@
|
||||
description: "The air around you is [color=red]hazardously thick[/color]. A [color=green]pressurized suit[/color] would be enough protect you"
|
||||
|
||||
- type: alert
|
||||
alertType: Fire
|
||||
id: Fire
|
||||
icon: /Textures/Interface/Alerts/Fire/fire.png
|
||||
onClick: !type:ResistFire { }
|
||||
name: "[color=red]On Fire[/color]"
|
||||
description: "You're [color=red]on fire[/color]. Click the alert to stop, drop and roll to put the fire out or move to a vacuum area."
|
||||
|
||||
- type: alert
|
||||
alertType: Cold
|
||||
id: Cold
|
||||
category: Temperature
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/temperature.rsi
|
||||
@@ -74,7 +74,7 @@
|
||||
description: "You're [color=cyan]freezing cold![/color] Get somewhere warmer and take off any insulating clothing like a space suit."
|
||||
|
||||
- type: alert
|
||||
alertType: Hot
|
||||
id: Hot
|
||||
category: Temperature
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/temperature.rsi
|
||||
@@ -84,7 +84,7 @@
|
||||
description: "It's [color=red]too hot![/color] Get somewhere colder, take off any insulating clothing like a space suit, or at least get away from the flames."
|
||||
|
||||
- type: alert
|
||||
alertType: Weightless
|
||||
id: Weightless
|
||||
icon: /Textures/Interface/Alerts/Weightless/weightless.png
|
||||
name: Weightless
|
||||
description: >
|
||||
@@ -92,20 +92,20 @@
|
||||
Mag-boots or jetpacks would help you move with more control
|
||||
|
||||
- type: alert
|
||||
alertType: Stun
|
||||
id: Stun
|
||||
icon: /Textures/Objects/Weapons/Melee/stunbaton.rsi/stunbaton_off.png #Should probably draw a proper icon
|
||||
name: "[color=yellow]Stunned[/color]"
|
||||
description: "You're [color=yellow]stunned[/color]! Something is impairing your ability to move or interact with objects"
|
||||
|
||||
- type: alert
|
||||
alertType: Handcuffed
|
||||
id: Handcuffed
|
||||
onClick: !type:RemoveCuffs { }
|
||||
icon: /Textures/Interface/Alerts/Handcuffed/Handcuffed.png
|
||||
name: "[color=yellow]Handcuffed[/color]"
|
||||
description: "You're [color=yellow]handcuffed[/color] and can't use your hands. If anyone drags you, you won't be able to resist."
|
||||
|
||||
- type: alert
|
||||
alertType: Buckled
|
||||
id: Buckled
|
||||
category: Buckled
|
||||
onClick: !type:Unbuckle { }
|
||||
icon: /Textures/Interface/Alerts/Buckle/buckled.png
|
||||
@@ -113,7 +113,7 @@
|
||||
description: "You've been [color=yellow]buckled[/color] to something. Click the alert to unbuckle unless you're [color=yellow]handcuffed.[/color]"
|
||||
|
||||
- type: alert
|
||||
alertType: HumanCrit
|
||||
id: HumanCrit
|
||||
category: Health
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/human_health.rsi
|
||||
@@ -122,7 +122,7 @@
|
||||
description: "You're severely injured and unconscious."
|
||||
|
||||
- type: alert
|
||||
alertType: HumanDead
|
||||
id: HumanDead
|
||||
category: Health
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/human_health.rsi
|
||||
@@ -131,7 +131,7 @@
|
||||
description: You're dead, note that you can still be revived!
|
||||
|
||||
- type: alert
|
||||
alertType: HumanHealth
|
||||
id: HumanHealth
|
||||
category: Health
|
||||
icon:
|
||||
sprite: /Textures/Interface/Alerts/human_health.rsi
|
||||
@@ -142,7 +142,7 @@
|
||||
maxSeverity: 6
|
||||
|
||||
- type: alert
|
||||
alertType: PilotingShuttle
|
||||
id: PilotingShuttle
|
||||
category: Piloting
|
||||
onClick: !type:StopPiloting { }
|
||||
icon: /Textures/Interface/Alerts/piloting.png
|
||||
@@ -150,93 +150,93 @@
|
||||
description: You are piloting a shuttle. Click the alert to stop.
|
||||
|
||||
- type: alert
|
||||
alertType: Overfed
|
||||
id: Overfed
|
||||
category: Hunger
|
||||
icon: /Textures/Interface/Alerts/Hunger/Overfed.png
|
||||
name: "[color=yellow]Overfed[/color]"
|
||||
description: You ate too much food, lardass. Run around the station and lose some weight.
|
||||
|
||||
- type: alert
|
||||
alertType: Peckish
|
||||
id: Peckish
|
||||
category: Hunger
|
||||
icon: /Textures/Interface/Alerts/Hunger/Peckish.png
|
||||
name: "[color=yellow]Peckish[/color]"
|
||||
description: Some food would be good right about now.
|
||||
|
||||
- type: alert
|
||||
alertType: Starving
|
||||
id: Starving
|
||||
category: Hunger
|
||||
icon: /Textures/Interface/Alerts/Hunger/Starving.png
|
||||
name: "[color=red]Starving[/color]"
|
||||
description: You're severely malnourished. The hunger pains make moving around a chore.
|
||||
|
||||
- type: alert
|
||||
alertType: Overhydrated
|
||||
id: Overhydrated
|
||||
category: Thirst
|
||||
icon: /Textures/Interface/Alerts/Thirst/OverHydrated.png
|
||||
name: "[color=yellow]Overhydrated[/color]"
|
||||
description: You drank too much.
|
||||
|
||||
- type: alert
|
||||
alertType: Thirsty
|
||||
id: Thirsty
|
||||
category: Thirst
|
||||
icon: /Textures/Interface/Alerts/Thirst/Thirsty.png
|
||||
name: "[color=yellow]Thirsty[/color]"
|
||||
description: Something to drink would be good right about now.
|
||||
|
||||
- type: alert
|
||||
alertType: Parched
|
||||
id: Parched
|
||||
category: Thirst
|
||||
icon: /Textures/Interface/Alerts/Thirst/Parched.png
|
||||
name: "[color=red]Parched[/color]"
|
||||
description: You're severely thirsty. The thirst makes moving around a chore.
|
||||
|
||||
- type: alert
|
||||
alertType: Pulled
|
||||
id: Pulled
|
||||
icon: /Textures/Interface/Alerts/Pull/pulled.png
|
||||
onClick: !type:StopBeingPulled { }
|
||||
name: Pulled
|
||||
description: You're being pulled. Move to break free.
|
||||
|
||||
- type: alert
|
||||
alertType: Pulling
|
||||
id: Pulling
|
||||
icon: /Textures/Interface/Alerts/Pull/pulling.png
|
||||
onClick: !type:StopPulling { }
|
||||
name: Pulling
|
||||
description: You're pulling something. Click the alert to stop.
|
||||
|
||||
- type: alert
|
||||
alertType: Debug1
|
||||
id: Debug1
|
||||
icon: /Textures/Interface/Alerts/human_health.rsi/health1.png
|
||||
name: Debug1
|
||||
description: Debug
|
||||
|
||||
- type: alert
|
||||
alertType: Debug2
|
||||
id: Debug2
|
||||
icon: /Textures/Interface/Alerts/human_health.rsi/health2.png
|
||||
name: Debug2
|
||||
description: Debug
|
||||
|
||||
- type: alert
|
||||
alertType: Debug3
|
||||
id: Debug3
|
||||
icon: /Textures/Interface/Alerts/human_health.rsi/health3.png
|
||||
name: Debug3
|
||||
description: Debug
|
||||
|
||||
- type: alert
|
||||
alertType: Debug4
|
||||
id: Debug4
|
||||
icon: /Textures/Interface/Alerts/human_health.rsi/health4.png
|
||||
name: Debug4
|
||||
description: Debug
|
||||
|
||||
- type: alert
|
||||
alertType: Debug5
|
||||
id: Debug5
|
||||
icon: /Textures/Interface/Alerts/human_health.rsi/health5.png
|
||||
name: Debug5
|
||||
description: Debug
|
||||
|
||||
- type: alert
|
||||
alertType: Debug6
|
||||
id: Debug6
|
||||
icon: /Textures/Interface/Alerts/human_health.rsi/health6.png
|
||||
name: Debug6
|
||||
description: Debug
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
- type: alert
|
||||
alertType: Magboots
|
||||
id: Magboots
|
||||
icon: { sprite: "/Textures/Clothing/Shoes/Boots/magboots.rsi", state: "icon-on" }
|
||||
name: "Magboots"
|
||||
description: You are immume to airflow, but slightly slower.
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
id: HandsAnimal
|
||||
name: "animal hands"
|
||||
parent: PartAnimal
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
partType: Hand
|
||||
@@ -28,7 +28,7 @@
|
||||
id: LegsAnimal
|
||||
name: "animal legs"
|
||||
parent: PartAnimal
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
partType: Leg
|
||||
@@ -39,7 +39,7 @@
|
||||
id: FeetAnimal
|
||||
name: "animal feet"
|
||||
parent: PartAnimal
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
partType: Foot
|
||||
@@ -50,7 +50,7 @@
|
||||
id: TorsoAnimal
|
||||
name: "animal torso"
|
||||
parent: PartAnimal
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
partType: Torso
|
||||
@@ -76,7 +76,7 @@
|
||||
id: OrganAnimalLungs
|
||||
parent: BaseAnimalOrgan
|
||||
name: lungs
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Mechanism
|
||||
size: 1
|
||||
@@ -95,7 +95,7 @@
|
||||
id: OrganAnimalStomach
|
||||
parent: BaseAnimalOrgan
|
||||
name: stomach
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Mechanism
|
||||
size: 1
|
||||
@@ -118,7 +118,7 @@
|
||||
id: OrganAnimalLiver
|
||||
parent: BaseAnimalOrgan
|
||||
name: liver
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Mechanism
|
||||
size: 1
|
||||
@@ -134,7 +134,7 @@
|
||||
id: OrganAnimalHeart
|
||||
parent: BaseAnimalOrgan
|
||||
name: heart
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Mechanism
|
||||
size: 1
|
||||
@@ -151,7 +151,7 @@
|
||||
id: OrganAnimalKidneys
|
||||
parent: BaseAnimalOrgan
|
||||
name: kidneys
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Mechanism
|
||||
size: 1
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: ClothingBackpack
|
||||
id: ClothingBackpackFilled
|
||||
components:
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
name: demonomicon
|
||||
parent: BookBase
|
||||
id: BookDemonomicon
|
||||
abstract: true
|
||||
description: 'Who knows what dark spells may be contained in these horrid pages?'
|
||||
components:
|
||||
- type: Sprite
|
||||
@@ -27,7 +28,6 @@
|
||||
- type: entity
|
||||
parent: BookDemonomicon
|
||||
id: BookDemonomicon1
|
||||
abstract: true
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Paper
|
||||
@@ -40,7 +40,6 @@
|
||||
- type: entity
|
||||
parent: BookDemonomicon
|
||||
id: BookDemonomicon2
|
||||
abstract: true
|
||||
suffix: 2
|
||||
components:
|
||||
- type: Paper
|
||||
@@ -54,7 +53,6 @@
|
||||
- type: entity
|
||||
parent: BookDemonomicon
|
||||
id: BookDemonomicon3
|
||||
abstract: true
|
||||
suffix: 3
|
||||
components:
|
||||
- type: Paper
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: MagazineClRifleBase
|
||||
- id: MagazineClRiflePistol
|
||||
amount: 6
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -26,7 +26,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .25 caseless (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -40,12 +40,12 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .25 caseless (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
id: BoxMagazineClRifleRubber
|
||||
description: A box full of
|
||||
description: A box full of
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
@@ -55,7 +55,7 @@
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
# LRifle
|
||||
# LRifle
|
||||
- type: entity
|
||||
name: box of .30 rifle magazines
|
||||
parent: BoxCardboard
|
||||
@@ -69,7 +69,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .30 rifle (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -83,7 +83,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .30 rifle (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -97,7 +97,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .30 rifle (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -126,7 +126,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Lamia (flash) magazines.
|
||||
parent: BoxCardboard
|
||||
@@ -140,7 +140,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Lamia (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -154,7 +154,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Lamia (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -168,7 +168,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Drozd magazines
|
||||
parent: BoxCardboard
|
||||
@@ -182,7 +182,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Drozd (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -196,7 +196,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Drozd (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -210,7 +210,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .40 Drozd (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -239,7 +239,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of Calico .35 auto magazines
|
||||
parent: BoxCardboard
|
||||
@@ -253,7 +253,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of pistol .35 auto magazines
|
||||
parent: BoxCardboard
|
||||
@@ -267,7 +267,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of pistol .35 auto (flash) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -281,7 +281,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of pistol .35 auto (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -295,7 +295,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of pistol .35 auto (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -309,7 +309,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of pistol .35 auto (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -323,7 +323,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of machine pistol .35 auto magazines
|
||||
parent: BoxCardboard
|
||||
@@ -337,7 +337,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of machine pistol .35 auto (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -351,7 +351,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of machine pistol .35 auto (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -365,7 +365,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of machine pistol .35 auto (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -379,7 +379,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of SMG .35 auto magazines
|
||||
parent: BoxCardboard
|
||||
@@ -393,7 +393,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of SMG .35 auto (flash) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -407,7 +407,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of SMG .35 auto (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -421,7 +421,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of SMG .35 auto (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -435,7 +435,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of SMG .35 auto (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -464,7 +464,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of (.50 beanbag) ammo drums
|
||||
parent: BoxCardboard
|
||||
@@ -478,7 +478,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of (.50 slug) ammo drums
|
||||
parent: BoxCardboard
|
||||
@@ -492,7 +492,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of (.50 incendiary) ammo drums
|
||||
parent: BoxCardboard
|
||||
@@ -536,7 +536,7 @@
|
||||
layers:
|
||||
- state: boxwide
|
||||
- state: shelllethal
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of shotgun slug cartridges
|
||||
parent: BoxCardboard
|
||||
@@ -551,7 +551,7 @@
|
||||
layers:
|
||||
- state: boxwide
|
||||
- state: shellslug
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of shotgun flare cartridges
|
||||
parent: BoxCardboard
|
||||
@@ -566,7 +566,7 @@
|
||||
layers:
|
||||
- state: boxwide
|
||||
- state: shellflare
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of shotgun flash cartridges
|
||||
parent: BoxCardboard
|
||||
@@ -581,7 +581,7 @@
|
||||
layers:
|
||||
- state: boxwide
|
||||
- state: shellflash
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of shotgun incendiary cartridges
|
||||
parent: BoxCardboard
|
||||
@@ -596,7 +596,7 @@
|
||||
layers:
|
||||
- state: boxwide
|
||||
- state: shellincendiary
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of shotgun practice cartridges
|
||||
parent: BoxCardboard
|
||||
@@ -611,7 +611,7 @@
|
||||
layers:
|
||||
- state: boxwide
|
||||
- state: shellpractice
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of tranquilizer cartridges
|
||||
parent: BoxCardboard
|
||||
@@ -641,7 +641,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .20 rifle (flash) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -655,7 +655,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .20 rifle (high-velocity) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -669,7 +669,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .20 rifle (practice) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -683,7 +683,7 @@
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
|
||||
- type: entity
|
||||
name: box of .20 rifle (rubber) magazines
|
||||
parent: BoxCardboard
|
||||
@@ -696,4 +696,4 @@
|
||||
amount: 6
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
- state: box
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
- type: entity
|
||||
id: CrateSalvageAssortedGoodies
|
||||
suffix: Filled, Salvage Random
|
||||
abstract: true # You should use SalvageMaterialCrateSpawner instead
|
||||
noSpawn: true # You should use SalvageMaterialCrateSpawner instead
|
||||
parent: CrateGenericSteel
|
||||
components:
|
||||
- type: StorageFill
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
- type: entity
|
||||
id: PaperWrittenSalvageLoreMedium1PlasmaTrap
|
||||
abstract: true # keep this from spamming spawn sheet
|
||||
noSpawn: true # keep this from spamming spawn sheet
|
||||
suffix: "Salvage: Lore: Medium 1: Plasma Trap"
|
||||
parent: PaperWritten
|
||||
components:
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
- type: entity
|
||||
id: PaperWrittenSalvageLoreGaming1
|
||||
abstract: true # keep this from spamming spawn sheet
|
||||
noSpawn: true # keep this from spamming spawn sheet
|
||||
suffix: "Salvage: Lore: Gaming 1"
|
||||
parent: PaperWritten
|
||||
components:
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
- type: entity
|
||||
id: PaperWrittenSalvageLoreGaming2
|
||||
abstract: true # keep this from spamming spawn sheet
|
||||
noSpawn: true # keep this from spamming spawn sheet
|
||||
suffix: "Salvage: Lore: Gaming 2"
|
||||
parent: PaperWritten
|
||||
components:
|
||||
@@ -63,14 +63,14 @@
|
||||
Int: 528,491
|
||||
Wis: 1
|
||||
Cha: 1
|
||||
|
||||
|
||||
Where's the age?
|
||||
Why are those ability scores so ridiculous?
|
||||
What even are you trying to do here, Leah? - Your Friendly DM
|
||||
|
||||
- type: entity
|
||||
id: PaperWrittenSalvageLoreGaming3
|
||||
abstract: true # keep this from spamming spawn sheet
|
||||
noSpawn: true # keep this from spamming spawn sheet
|
||||
suffix: "Salvage: Lore: Gaming 3"
|
||||
parent: PaperWritten
|
||||
components:
|
||||
@@ -85,7 +85,7 @@
|
||||
|
||||
- type: entity
|
||||
id: PaperWrittenSalvageLoreGaming4
|
||||
abstract: true # keep this from spamming spawn sheet
|
||||
noSpawn: true # keep this from spamming spawn sheet
|
||||
suffix: "Salvage: Lore: Gaming 4"
|
||||
parent: PaperWritten
|
||||
components:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- type: entity
|
||||
id: Smoke
|
||||
name: smoke
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Effects
|
||||
@@ -23,7 +23,7 @@
|
||||
- type: entity
|
||||
id: Foam
|
||||
name: foam
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
@@ -62,7 +62,7 @@
|
||||
- type: entity
|
||||
id: IronMetalFoam
|
||||
name: iron metal foam
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
parent: Foam
|
||||
components:
|
||||
- type: Sprite
|
||||
@@ -90,7 +90,7 @@
|
||||
- type: entity
|
||||
id: AluminiumMetalFoam
|
||||
name: aluminium metal foam
|
||||
abstract: true
|
||||
noSpawn: true
|
||||
parent: Foam
|
||||
components:
|
||||
- type: Sprite
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
- type: RadiationPulse
|
||||
minPulseLifespan: 0.8
|
||||
maxPulseLifespan: 2.5
|
||||
radsPerSecond: 5
|
||||
radsPerSecond: 5
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user