#nullable enable using System.Collections.Generic; using Content.Server.Body.Mechanisms.Behaviors; using Content.Server.GameObjects.Components.Body; using Content.Shared.GameObjects.Components.Body; namespace Content.Server.Body.Mechanisms { public interface IMechanism { string Id { get; } string Name { get; set; } /// /// Professional description of the . /// 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. /// string ExamineMessage { get; set; } // TODO: Make RSI properties sane /// /// Path to the RSI that represents this . /// string RSIPath { get; set; } /// /// RSI state that represents this . /// string RSIState { 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: OnSizeChanged int Size { get; set; } /// /// What kind of this can be /// easily installed into. /// BodyPartCompatibility Compatibility { get; set; } IReadOnlyList Behaviors { get; } IBodyManagerComponent? Body { get; } IBodyPart? Part { get; set; } void EnsureInitialize(); void InstalledIntoBody(); void RemovedFromBody(IBodyManagerComponent old); /// /// This method is called by before /// is called. /// void PreMetabolism(float frameTime); /// /// This method is called by after /// is called. /// void PostMetabolism(float frameTime); void AddBehavior(MechanismBehavior behavior); /// /// Removes a behavior from this mechanism. /// /// The behavior to remove. /// True if it was removed, false otherwise. bool RemoveBehavior(MechanismBehavior behavior); } }