namespace Theriapolis.Core.Rules.Combat;

/// <summary>
/// One human-readable line in the encounter log. Combat-resolver actions
/// (attacks, saves, conditions, deaths) each emit one of these so test
/// scenarios can assert on the log content as a whole.
/// </summary>
public sealed record CombatLogEntry
{
    public enum Kind : byte
    {
        Note          = 0,  // generic flavour line ("Round 1 begins.")
        Attack        = 1,
        Save          = 2,
        Damage        = 3,  // direct damage that wasn't an attack roll
        ConditionApplied = 4,
        ConditionEnded   = 5,
        Death         = 6,
        Initiative    = 7,
        TurnStart     = 8,
        Move          = 9,
        EncounterEnd  = 10,
    }

    public required int    Round    { get; init; }
    public required int    Turn     { get; init; }
    public required Kind   Type     { get; init; }
    public required string Message  { get; init; }
}
