using System; using System.Collections.Generic; using Robust.Shared.IoC; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Shared.Damage { /// /// A Group of s. /// /// /// These groups can be used to specify supported damage types of a , or to change/get/set damage in a . /// [Prototype("damageGroup")] [Serializable, NetSerializable] public class DamageGroupPrototype : IPrototype, ISerializationHooks { private IPrototypeManager _prototypeManager = default!; [DataField("id", required: true)] public string ID { get; } = default!; [DataField("damageTypes", required: true)] public List TypeIDs { get; } = default!; public HashSet DamageTypes { get; } = new(); // Create set of damage types void ISerializationHooks.AfterDeserialization() { _prototypeManager = IoCManager.Resolve(); foreach (var typeID in TypeIDs) { DamageTypes.Add(_prototypeManager.Index(typeID)); } } } }