public FinalDefenses(ParsedLog log, PhaseData phase, AbstractSingleActor actor, AbstractSingleActor from) { long start = phase.Start; long end = phase.End; List <AbstractDamageEvent> damageLogs = actor.GetDamageTakenLogs(from, log, start, end); DamageTaken = damageLogs.Sum(x => (long)x.Damage); BlockedCount = damageLogs.Count(x => x.IsBlocked); InvulnedCount = 0; DamageInvulned = 0; EvadedCount = damageLogs.Count(x => x.IsEvaded); DodgeCount = actor.GetCastLogs(log, start, end).Count(x => x.SkillId == SkillItem.DodgeId || x.SkillId == SkillItem.MirageCloakDodgeId); DamageBarrier = damageLogs.Sum(x => x.ShieldDamage); InterruptedCount = damageLogs.Count(x => x.HasInterrupted); foreach (AbstractDamageEvent dl in damageLogs.Where(x => x.IsAbsorbed)) { InvulnedCount++; DamageInvulned += dl.Damage; } }