// Damage logs public override IReadOnlyList <AbstractHealthDamageEvent> GetDamageEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (DamageEvents == null) { DamageEvents = new List <AbstractHealthDamageEvent>(); DamageEvents.AddRange(log.CombatData.GetDamageData(AgentItem).Where(x => !x.ToFriendly)); IReadOnlyDictionary <long, Minions> minionsList = GetMinions(log); foreach (Minions mins in minionsList.Values) { DamageEvents.AddRange(mins.GetDamageEvents(null, log, 0, log.FightData.FightEnd)); } DamageEvents = DamageEvents.OrderBy(x => x.Time).ToList(); DamageEventByDst = DamageEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (DamageEventByDst.TryGetValue(target.AgentItem, out List <AbstractHealthDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractHealthDamageEvent>()); } } return(DamageEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }
public void DamageListener(DamageEvents result, GameObject target) { if (result == DamageEvents.KILL) { GetTarget(GameManager.Instance.GetPlayers()); } }
public override IReadOnlyList <AbstractHealthDamageEvent> GetDamageEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (DamageEvents == null) { DamageEvents = new List <AbstractHealthDamageEvent>(); foreach (NPC minion in _minionList) { DamageEvents.AddRange(minion.GetDamageEvents(null, log, 0, log.FightData.FightEnd)); } DamageEvents = DamageEvents.OrderBy(x => x.Time).ToList(); DamageEventByDst = DamageEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (DamageEventByDst.TryGetValue(target.AgentItem, out List <AbstractHealthDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractHealthDamageEvent>()); } } return(DamageEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }
public void DamageListener(DamageEvents result, GameObject target) { if (target == gameObject) { return; } player.ShootResult(result); }
private void SetDamageEvents(List <Event> events, List <NPC> npcs) { foreach (Event e in events) { if (e.SrcInstid == Instid || e.SrcMasterInstid == Instid) { if (e.IFF == IFF.Foe && e.DstInstid != 0 && npcs.Where(i => i.Instid == e.DstInstid).Any(j => j.Name != null)) { if (e.StateChange == StateChange.None) { if (e.IsBuff && e.BuffDmg != 0) { DamageEvents.Add(new CombatEvent() { Time = e.Time, Damage = e.BuffDmg, SkillId = e.SkillId, IsBuff = e.IsBuff, Result = e.Result, IsNinety = e.IsNinety, IsMoving = e.IsMoving, IsFlanking = e.IsFlanking, Target = e.DstInstid }); } else if (!e.IsBuff && e.Value != 0) { DamageEvents.Add(new CombatEvent() { Time = e.Time, Damage = e.Value, SkillId = e.SkillId, IsBuff = e.IsBuff, Result = e.Result, IsNinety = e.IsNinety, IsMoving = e.IsMoving, IsFlanking = e.IsFlanking, Target = e.DstInstid }); } } } } } }
private void SetDamageEvents(List <Event> events, NPC target) { foreach (Event e in events) { if (e.SrcInstid == Instid || e.SrcMasterInstid == Instid) { if (e.DstInstid == target.Instid && e.IFF == IFF.Foe) { if (e.StateChange == StateChange.None) { if (e.IsBuff && e.BuffDmg != 0) { DamageEvents.Add(new CombatEvent() { Time = e.Time, Damage = e.BuffDmg, SkillId = e.SkillId, IsBuff = e.IsBuff, Result = e.Result, IsNinety = e.IsNinety, IsMoving = e.IsMoving, IsFlanking = e.IsFlanking }); } else if (!e.IsBuff && e.Value != 0) { DamageEvents.Add(new CombatEvent() { Time = e.Time, Damage = e.Value, SkillId = e.SkillId, IsBuff = e.IsBuff, Result = e.Result, IsNinety = e.IsNinety, IsMoving = e.IsMoving, IsFlanking = e.IsFlanking }); } } } } } }
public void ShootResult(DamageEvents result) { //Debug.Log("Reg: " + result); switch (result) { case DamageEvents.HIT: statistics.Hit(); return; case DamageEvents.KILL: statistics.Kill(); Write(Command.KILL); return; case DamageEvents.MISS: statistics.Miss(); return; } }
public void Hit(Collider _col) { prevDmgObj = _col.gameObject; DamageEvents.Invoke(); }
private void Awake() { current = this; }