diff --git a/Content.Server/Body/Systems/MetabolizerSystem.cs b/Content.Server/Body/Systems/MetabolizerSystem.cs index 5233b0166c..c8851b49ac 100644 --- a/Content.Server/Body/Systems/MetabolizerSystem.cs +++ b/Content.Server/Body/Systems/MetabolizerSystem.cs @@ -156,10 +156,9 @@ namespace Content.Server.Body.Systems foreach (var group in meta.MetabolismGroups) { - if (!proto.Metabolisms.ContainsKey(group.Id)) + if (!proto.Metabolisms.TryGetValue(group.Id, out var entry)) continue; - var entry = proto.Metabolisms[group.Id]; var rate = entry.MetabolismRate * group.MetabolismRateModifier; // Remove $rate, as long as there's enough reagent there to actually remove that much diff --git a/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs b/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs index 70a79254d6..563708b8f3 100644 --- a/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs +++ b/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs @@ -36,7 +36,7 @@ public sealed class DumpReagentGuideText : IConsoleCommand return; } - foreach (var (_, entry) in reagent.Metabolisms) + foreach (var entry in reagent.Metabolisms.Values) { foreach (var effect in entry.Effects) { diff --git a/Content.Server/GuideGenerator/ReagentEntry.cs b/Content.Server/GuideGenerator/ReagentEntry.cs index 5c9ec40fd4..ab9e758206 100644 --- a/Content.Server/GuideGenerator/ReagentEntry.cs +++ b/Content.Server/GuideGenerator/ReagentEntry.cs @@ -32,7 +32,7 @@ public sealed class ReagentEntry public List Recipes { get; } = new(); [JsonPropertyName("metabolisms")] - public Dictionary, ReagentEffectsEntry>? Metabolisms { get; } + public Dictionary? Metabolisms { get; } public ReagentEntry(ReagentPrototype proto) { @@ -42,7 +42,7 @@ public sealed class ReagentEntry Description = proto.LocalizedDescription; PhysicalDescription = proto.LocalizedPhysicalDescription; SubstanceColor = proto.SubstanceColor.ToHex(); - Metabolisms = proto.Metabolisms; + Metabolisms = proto.Metabolisms?.ToDictionary(x => x.Key.Id, x => x.Value); } } diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index e45c904591..e41c834c80 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -112,7 +112,7 @@ public sealed class DrinkSystem : EntitySystem if (reagent.Metabolisms == null) continue; - foreach ((var _, var entry) in reagent.Metabolisms) + foreach (var entry in reagent.Metabolisms.Values) { foreach (var effect in entry.Effects) { diff --git a/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs b/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs index 1603d3d647..c9ce5f357c 100644 --- a/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs +++ b/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System.Collections.Frozen; +using System.Linq; using System.Text.Json.Serialization; using Content.Shared.Administration.Logs; using Content.Shared.Body.Prototypes; @@ -14,7 +15,6 @@ using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; using Robust.Shared.Utility; namespace Content.Shared.Chemistry.Reagent @@ -103,7 +103,7 @@ namespace Content.Shared.Chemistry.Reagent public float Viscosity; [DataField(serverOnly: true)] - public Dictionary, ReagentEffectsEntry>? Metabolisms; + public FrozenDictionary, ReagentEffectsEntry>? Metabolisms; [DataField(serverOnly: true)] public Dictionary, ReactiveReagentEffectEntry>? ReactiveEffects;