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
return;
}
- foreach (var (_, entry) in reagent.Metabolisms)
+ foreach (var entry in reagent.Metabolisms.Values)
{
foreach (var effect in entry.Effects)
{
public List<string> Recipes { get; } = new();
[JsonPropertyName("metabolisms")]
- public Dictionary<ProtoId<MetabolismGroupPrototype>, ReagentEffectsEntry>? Metabolisms { get; }
+ public Dictionary<string, ReagentEffectsEntry>? Metabolisms { get; }
public ReagentEntry(ReagentPrototype proto)
{
Description = proto.LocalizedDescription;
PhysicalDescription = proto.LocalizedPhysicalDescription;
SubstanceColor = proto.SubstanceColor.ToHex();
- Metabolisms = proto.Metabolisms;
+ Metabolisms = proto.Metabolisms?.ToDictionary(x => x.Key.Id, x => x.Value);
}
}
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)
{
-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;
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
public float Viscosity;
[DataField(serverOnly: true)]
- public Dictionary<ProtoId<MetabolismGroupPrototype>, ReagentEffectsEntry>? Metabolisms;
+ public FrozenDictionary<ProtoId<MetabolismGroupPrototype>, ReagentEffectsEntry>? Metabolisms;
[DataField(serverOnly: true)]
public Dictionary<ProtoId<ReactiveGroupPrototype>, ReactiveReagentEffectEntry>? ReactiveEffects;