using System; using System.Collections.Generic; using Content.Shared.BodySystem; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; using YamlDotNet.RepresentationModel; namespace Content.Server.BodySystem { /// /// Data class representing a persistent item inside a BodyPart. This includes livers, eyes, cameras, brains, explosive implants, binary communicators, etc. /// public class Mechanism { [ViewVariables] public string Name { get; set; } /// /// Description shown in a mechanism installation console or when examining an uninstalled mechanism. /// [ViewVariables] public string Description { get; set; } /// /// The message to display upon examining a mob with this mechanism installed. If the string is empty (""), no message will be displayed. /// [ViewVariables] public string ExamineMessage { get; set; } /// /// Path to the RSI that represents this Mechanism. /// [ViewVariables] public string RSIPath { get; set; } /// /// RSI state that represents this Mechanism. /// [ViewVariables] public string RSIState { get; set; } /// /// Max HP of this mechanism. /// [ViewVariables] public int MaxDurability { get; set; } /// /// Current HP of this mechanism. /// [ViewVariables] public int CurrentDurability { get; set; } /// /// At what HP this mechanism is completely destroyed. /// [ViewVariables] public int DestroyThreshold { get; set; } /// /// Armor of this mechanism against attacks. /// [ViewVariables] public int Resistance { get; set; } /// /// Determines a handful of things - mostly whether this mechanism can fit into a BodyPart. /// [ViewVariables] public int Size { get; set; } /// /// What kind of BodyParts this mechanism can be installed into. /// [ViewVariables] public BodyPartCompatibility Compatibility { get; set; } public Mechanism(MechanismPrototype data) { LoadFromPrototype(data); } /// /// Loads the given MechanismPrototype - current data on this Mechanism will be overwritten! /// public void LoadFromPrototype(MechanismPrototype data) { Name = data.Name; Description = data.Description; ExamineMessage = data.ExamineMessage; RSIPath = data.RSIPath; RSIState = data.RSIState; MaxDurability = data.Durability; CurrentDurability = MaxDurability; DestroyThreshold = data.DestroyThreshold; Resistance = data.Resistance; Size = data.Size; Compatibility = data.Compatibility; } } }