Files

30 lines
952 B
C#
Raw Permalink Normal View History

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; }
}