Serv3 rework content changes (#7145)

This commit is contained in:
Paul Ritter
2022-04-03 02:01:22 +02:00
committed by GitHub
parent 6b01ab17a6
commit 2ff40d5a1f
133 changed files with 476 additions and 324 deletions

View File

@@ -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)
{

View File

@@ -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.");

View File

@@ -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"]);
});
}

View File

@@ -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();
}
});

View File

@@ -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]

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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(() =>
{

View File

@@ -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;
}

View File

@@ -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")]

View File

@@ -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>

View File

@@ -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();
}

View File

@@ -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")]

View File

@@ -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>

View File

@@ -12,7 +12,7 @@ namespace Content.Server.BarSign
private string _name = string.Empty;
[ViewVariables]
[DataField("id", required: true)]
[IdDataFieldAttribute]
public string ID { get; } = default!;

View File

@@ -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;

View File

@@ -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.

View File

@@ -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")]

View File

@@ -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")]

View File

@@ -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!;
}

View File

@@ -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]

View File

@@ -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;

View File

@@ -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>

View File

@@ -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";

View File

@@ -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;

View File

@@ -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>

View File

@@ -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")]

View File

@@ -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),

View File

@@ -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.

View File

@@ -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>))]

View File

@@ -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>

View File

@@ -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();

View File

@@ -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>

View File

@@ -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")]

View File

@@ -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>

View File

@@ -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")]

View File

@@ -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")]

View File

@@ -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]

View File

@@ -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!;
}
}

View File

@@ -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!;
}
}

View File

@@ -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>

View File

@@ -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)]

View File

@@ -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;

View File

@@ -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")]

View File

@@ -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!;
}

View File

@@ -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!;
}

View File

@@ -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)]

View File

@@ -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]

View File

@@ -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")]

View File

@@ -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,

View File

@@ -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>

View File

@@ -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!;

View File

@@ -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!;
}
}

View File

@@ -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!;
}
}

View File

@@ -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>

View File

@@ -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>();

View File

@@ -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!;
}

View File

@@ -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,

View File

@@ -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();
}

View File

@@ -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>

View File

@@ -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]

View File

@@ -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>

View File

@@ -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)]

View File

@@ -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";
}

View File

@@ -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")]

View File

@@ -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")]

View File

@@ -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; }

View File

@@ -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]

View File

@@ -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>

View File

@@ -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>))]

View File

@@ -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")]

View File

@@ -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>

View File

@@ -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>

View File

@@ -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")]

View File

@@ -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)

View File

@@ -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,

View File

@@ -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>

View File

@@ -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>

View File

@@ -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")]

View File

@@ -13,7 +13,7 @@ namespace Content.Shared.Tag
public sealed class TagPrototype : IPrototype
{
[ViewVariables]
[DataField("id", required: true)]
[IdDataFieldAttribute]
public string ID { get; } = default!;
}
}

View File

@@ -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>

View File

@@ -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")]

View File

@@ -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]

View File

@@ -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
";

View File

@@ -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();

View File

@@ -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));
}
}
}

View File

@@ -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>();

View File

@@ -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\"";
}
}

View File

@@ -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);

View File

@@ -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>();

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -1,5 +1,4 @@
- type: entity
abstract: true
parent: ClothingBackpack
id: ClothingBackpackFilled
components:

View File

@@ -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

View File

@@ -7,7 +7,7 @@
components:
- type: StorageFill
contents:
- id: MagazineClRifleBase
- id: MagazineClRiflePistol
amount: 6
- type: Sprite
layers:

View File

@@ -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

View File

@@ -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:
@@ -70,7 +70,7 @@
- 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:

View File

@@ -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

View File

@@ -709,9 +709,11 @@
combatToggleAction:
enabled: false
autoPopulate: false
name: action-name-combat
disarmAction:
enabled: false
autoPopulate: false
name: action-name-disarm
- type: Bloodstream
bloodMaxVolume: 50
- type: DiseaseCarrier #The other class lab animal and disease vector
@@ -1001,6 +1003,7 @@
path: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg #funny sfx use
beepInterval: 1
- type: Explosive
explosionType: Default
devastationRange: 1
heavyImpactRange: 2
lightImpactRange: 3

Some files were not shown because too many files have changed in this diff Show More