Пример #1
0
 // 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());
 }
Пример #2
0
 public void DamageListener(DamageEvents result, GameObject target)
 {
     if (result == DamageEvents.KILL)
     {
         GetTarget(GameManager.Instance.GetPlayers());
     }
 }
Пример #3
0
 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);
    }
Пример #5
0
 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
                         });
                     }
                 }
             }
         }
     }
 }
Пример #6
0
 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
                         });
                     }
                 }
             }
         }
     }
 }
Пример #7
0
    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;
        }
    }
Пример #8
0
 public void Hit(Collider _col)
 {
     prevDmgObj = _col.gameObject;
     DamageEvents.Invoke();
 }
Пример #9
0
 private void Awake()
 {
     current = this;
 }