internal SkillDesc(SkillItem item, ulong gw2Build, SkillData skillData) { Name = item.Name; AutoAttack = item.AA; Icon = item.Icon; CanCrit = SkillItem.CanCrit(item.ID, gw2Build); IsSwap = item.IsSwap; IsNotAccurate = skillData.IsNotAccurate(item.ID); }
internal static SkillDesc BuildSkillDesc(SkillItem item, ulong gw2Build, SkillData skillData) { var skillDesc = new SkillDesc(); skillDesc.Name = item.Name; skillDesc.AutoAttack = item.AA; skillDesc.Icon = item.Icon; skillDesc.CanCrit = SkillItem.CanCrit(item.ID, gw2Build); skillDesc.IsSwap = item.IsSwap; skillDesc.IsNotAccurate = skillData.IsNotAccurate(item.ID); return(skillDesc); }
internal static SkillDesc BuildSkillDesc(SkillItem item, ParsedEvtcLog log) { var skillDesc = new SkillDesc { Name = item.Name, AutoAttack = item.AA, Icon = item.Icon, CanCrit = SkillItem.CanCrit(item.ID, log.LogData.GW2Build), IsSwap = item.IsSwap, IsNotAccurate = log.SkillData.IsNotAccurate(item.ID), ConversionBasedHealing = log.CombatData.HasEXTHealing && log.CombatData.EXTHealingCombatData.GetHealingType(item, log) == HealingStatsExtensionHandler.EXTHealingType.ConversionBased, HybridHealing = log.CombatData.HasEXTHealing && log.CombatData.EXTHealingCombatData.GetHealingType(item, log) == HealingStatsExtensionHandler.EXTHealingType.Hybrid }; return(skillDesc); }
internal FinalGameplayStats(ParsedEvtcLog log, long start, long end, AbstractSingleActor actor, AbstractSingleActor target) { IReadOnlyList <AbstractHealthDamageEvent> dls = actor.GetDamageEvents(target, log, start, end); foreach (AbstractHealthDamageEvent dl in dls) { if (dl.From == actor.AgentItem) { if (!(dl is NonDirectHealthDamageEvent)) { if (dl.HasHit) { if (SkillItem.CanCrit(dl.SkillId, log.LogData.GW2Build)) { if (dl.HasCrit) { CriticalCount++; CriticalDmg += dl.HealthDamage; } CritableDirectDamageCount++; } if (dl.IsFlanking) { FlankingCount++; } if (dl.HasGlanced) { GlanceCount++; } ConnectedDirectDamageCount++; } if (dl.IsBlind) { Missed++; } if (dl.IsEvaded) { Evaded++; } if (dl.IsBlocked) { Blocked++; } if (!dl.DoubleProcHit) { DirectDamageCount++; } } if (dl.IsAbsorbed) { Invulned++; } if (!dl.DoubleProcHit) { TotalDamageCount++; } if (dl.HasHit) { ConnectedDamageCount++; if (dl.AgainstMoving) { AgainstMovingCount++; } } } if (!(dl is NonDirectHealthDamageEvent)) { if (dl.HasInterrupted) { Interrupts++; } } if (dl.HasKilled) { Killed++; } if (dl.HasDowned) { Downed++; } } }
internal FinalGameplayStats(ParsedEvtcLog log, PhaseData phase, AbstractSingleActor actor, AbstractSingleActor target) { List <AbstractDamageEvent> dls = actor.GetJustActorDamageLogs(target, log, phase.Start, phase.End); foreach (AbstractDamageEvent dl in dls) { if (!(dl is NonDirectDamageEvent)) { if (dl.HasHit) { if (SkillItem.CanCrit(dl.SkillId, log.LogData.GW2Build)) { if (dl.HasCrit) { CriticalCount++; CriticalDmg += dl.Damage; } CritableDirectDamageCount++; } if (dl.IsFlanking) { FlankingCount++; } if (dl.HasGlanced) { GlanceCount++; } ConnectedDirectDamageCount++; } if (dl.HasInterrupted) { Interrupts++; } if (dl.IsBlind) { Missed++; } if (dl.IsEvaded) { Evaded++; } if (dl.IsBlocked) { Blocked++; } if (!dl.DoubleProcHit) { DirectDamageCount++; } } if (dl.IsAbsorbed) { Invulned++; } if (!dl.DoubleProcHit) { TotalDamageCount++; } } }