fighter/GladiatorIdentity.cs
using Sandbox;

public sealed class GladiatorIdentity : Component
{
	[Property] public string FighterName { get; set; } = "Gladiateur Inconnu";
	[Property] public int LegionColorIndex { get; set; } = 0;
	public int RoundsSurvived { get; set; } = 0;
	public int KillsThisCampaign { get; set; } = 0;

	public RivalData ToData( Fighter fighter, FighterAura aura )
	{
		return new RivalData
		{
			Name = FighterName,
			MaxHealth = fighter?.MaxHealth ?? 100f,
			CurrentHealth = fighter?.CurrentHealth ?? 100f,
			BaseBalanceRegenRate = fighter?.BaseBalanceRegenRate ?? 35f,
			Aura = aura?.CurrentAura ?? 20f,
			LegionColorIndex = LegionColorIndex,
			RoundsSurvived = RoundsSurvived,
			KillsCount = KillsThisCampaign,
			IsDead = fighter?.IsDead ?? false
		};
	}

	public void RestoreFromData( RivalData data, Fighter fighter, FighterAura aura )
	{
		FighterName = data.Name;
		LegionColorIndex = data.LegionColorIndex;
		RoundsSurvived = data.RoundsSurvived;
		KillsThisCampaign = data.KillsCount;

		if ( fighter != null )
		{
			fighter.MaxHealth = data.MaxHealth;
			fighter.CurrentHealth = data.CurrentHealth;
			fighter.BaseBalanceRegenRate = data.BaseBalanceRegenRate;
		}

		if ( aura != null )
		{
			aura.ApplyAuraDelta( data.Aura - aura.CurrentAura );
		}
	}
}