#nullable enable using Content.Shared.GameObjects.Components.Body.Part; namespace Content.Shared.GameObjects.Components.Body.Mechanism { public interface IMechanism : IHasBody { IBodyPart? Part { get; set; } /// /// Professional description of the . /// string Description { get; set; } /// /// The message to display upon examining a mob with this /// added. /// If the string is empty (""), no message will be displayed. /// string ExamineMessage { get; set; } /// /// Max HP of this . /// int MaxDurability { get; set; } /// /// Current HP of this . /// int CurrentDurability { get; set; } /// /// At what HP this is completely destroyed. /// int DestroyThreshold { get; set; } /// /// Armor of this against attacks. /// int Resistance { get; set; } /// /// Determines a handful of things - mostly whether this /// can fit into a . /// // TODO BODY OnSizeChanged int Size { get; set; } /// /// What kind of this /// can be easily installed into. /// BodyPartCompatibility Compatibility { get; set; } /// /// Called when the part housing this mechanism is added to a body. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY PART CODE! /// /// The previous body, if any. /// The new body. void OnBodyAdd(IBody? old, IBody current); /// /// Called when the part housing this mechanism is removed from /// a body. /// DO NOT CALL THIS DIRECTLY FROM OUTSIDE BODY PART CODE! /// /// The old body. void OnBodyRemove(IBody old); } }