protected JsonActor(AbstractSingleActor actor, ParsedLog log, Dictionary <string, JsonLog.SkillDesc> skillDesc, Dictionary <string, JsonLog.BuffDesc> buffDesc) { List <PhaseData> phases = log.FightData.GetPhases(log); // Name = actor.Character; Toughness = actor.Toughness; Healing = actor.Healing; Concentration = actor.Concentration; Condition = actor.Condition; HitboxHeight = actor.HitboxHeight; HitboxWidth = actor.HitboxWidth; InstanceID = actor.InstID; // DpsAll = actor.GetDPSAll(log).Select(x => new JsonDPS(x)).ToArray(); StatsAll = actor.GetGameplayStats(log).Select(x => new JsonGameplayStatsAll(x)).ToArray(); Defenses = actor.GetDefenses(log).Select(x => new JsonDefensesAll(x)).ToArray(); // Dictionary <long, Minions> minionsList = actor.GetMinions(log); if (minionsList.Values.Any()) { Minions = minionsList.Values.Select(x => new JsonMinions(x, log, skillDesc, buffDesc)).ToList(); } // var skillByID = actor.GetCastLogs(log, 0, log.FightData.FightEnd).GroupBy(x => x.SkillId).ToDictionary(x => x.Key, x => x.ToList()); if (skillByID.Any()) { Rotation = JsonRotation.BuildJsonRotationList(skillByID, skillDesc); } // if (log.ParserSettings.RawTimelineArrays) { Damage1S = new List <int> [phases.Count]; for (int i = 0; i < phases.Count; i++) { Damage1S[i] = actor.Get1SDamageList(log, i, phases[i], null); } } // TotalDamageDist = BuildDamageDistData(actor, null, phases, log, skillDesc, buffDesc); TotalDamageTaken = BuildDamageTakenDistData(actor, null, phases, log, skillDesc, buffDesc); // if (log.ParserSettings.RawTimelineArrays) { BoonsStates = JsonBuffsUptime.GetBuffStates(actor.GetBuffGraphs(log)[ProfHelper.NumberOfBoonsID]); ConditionsStates = JsonBuffsUptime.GetBuffStates(actor.GetBuffGraphs(log)[ProfHelper.NumberOfConditionsID]); } // Health List <HealthUpdateEvent> hpUpdates = log.CombatData.GetHealthUpdateEvents(actor.AgentItem); if (log.ParserSettings.RawTimelineArrays) { HealthPercents = hpUpdates.Select(x => new double[2] { x.Time, x.HPPercent }).ToList(); } }