using System; using Cthangover.Core.Utils; namespace Cthangover.Core.Relationship { /// /// Runtime model for a recruited party member. Stores the recruit's /// unique ID, the character template it was created from, and a /// modifiable bag that behaviours /// read and mutate during tick/configure events. /// /// Marked [Serializable] so the recruiting roster survives /// save/load — PropertyData serialises its nested values /// automatically. The PROP_HEALTH constant is the conventional /// key for health tracking; behaviours that need custom state /// (e.g. morale, loyalty timers) add their own keys to the /// Properties bag at configure time. /// [Serializable] public class Recruit { /// Conventional key for the recruit's health value in the Properties bag. public const string PROP_HEALTH = "Health"; /// Unique instance ID (auto-generated via RecruitingData.GenID). public string ID { get; set; } /// Character template ID this recruit was spawned from. public string CharacterID { get; set; } /// Mutable property bag — behaviours read/write custom state here. public PropertyData Properties { get; set; } = new(); } }