예제 #1
0
 // Constructors
 public Mob(AgentItem agent) : base(agent)
 {
 }
 protected Dictionary <long, List <long> > GetCondiCleanse(ParsedLog log, int phaseIndex, AgentItem src)
 {
     if (BoonPoints.Count == 0)
     {
         SetBoonStatus(log);
     }
     if (_condiCleanse[phaseIndex].TryGetValue(src, out Dictionary <long, List <long> > dict))
     {
         return(dict);
     }
     return(new Dictionary <long, List <long> >());
 }
예제 #3
0
 public BoonRemovalLog(long time, AgentItem src, long value, ParseEnum.BuffRemove removeType) : base(time, src, value)
 {
     _removeType = removeType;
 }
            private uint GetHealing(BoonStackItem stack)
            {
                AgentItem agent = _log.AgentData.GetAgentByInstID(stack.SeedSrc, _log.FightData.ToLogSpace(stack.SeedTime));

                return(agent.Healing);
            }
예제 #5
0
 public DummyActor(AgentItem agent)
 {
     string[] name = agent.Name.Split('\0');
     Character = name[0];
     AgentItem = agent;
 }
예제 #6
0
 protected AbstractActor(AgentItem agent) : base(agent)
 {
 }
예제 #7
0
 // Constructors
 public Boss(AgentItem agent) : base(agent)
 {
 }
 protected AbstractMasterPlayer(AgentItem agent) : base(agent)
 {
 }
예제 #9
0
 public Minion(ushort master, AgentItem agent) : base(agent)
 {
 }
예제 #10
0
 public void AddCustomAgent(AgentItem agent)
 {
     _allAgentsList.Add(agent);
     Refresh();
 }
예제 #11
0
 public void OverrideID(ushort ID, ushort instid, AgentItem agentItem)
 {
     _allAgentsList.RemoveAll(x => x.ID == ID && x.InstID == instid);
     _allAgentsList.Add(agentItem);
     Refresh();
 }
예제 #12
0
 // Constructors
 public Player(AgentItem agent, bool noSquad) : base(agent)
 {
     string[] name = agent.Name.Split('\0');
     Account = name[1];
     Group   = noSquad ? 1 : int.Parse(name[2], NumberStyles.Integer, CultureInfo.InvariantCulture);
 }
예제 #13
0
        // Private Methods

        private void SetDeathRecaps(ParsedLog log)
        {
            List <DeathRecap> res       = _deathRecaps;
            List <CombatItem> deads     = log.CombatData.GetStatesData(InstID, ParseEnum.StateChange.ChangeDead, log.FightData.FightStart, log.FightData.FightEnd);
            List <CombatItem> downs     = log.CombatData.GetStatesData(InstID, ParseEnum.StateChange.ChangeDown, log.FightData.FightStart, log.FightData.FightEnd);
            long             lastTime   = log.FightData.FightStart;
            List <DamageLog> damageLogs = GetDamageTakenLogs(null, log, 0, log.FightData.FightDuration);

            foreach (CombatItem dead in deads)
            {
                DeathRecap recap = new DeathRecap()
                {
                    DeathTime = (int)(log.FightData.ToFightSpace(dead.Time))
                };
                CombatItem downed = downs.LastOrDefault(x => x.Time <= dead.Time && x.Time >= lastTime);
                if (downed != null)
                {
                    List <DamageLog> damageToDown = damageLogs.Where(x => x.Time < log.FightData.ToFightSpace(downed.Time) && x.Damage > 0 && x.Time > log.FightData.ToFightSpace(lastTime)).ToList();
                    recap.ToDown = damageToDown.Count > 0 ? new List <DeathRecap.DeathRecapDamageItem>() : null;
                    int damage = 0;
                    for (int i = damageToDown.Count - 1; i >= 0; i--)
                    {
                        DamageLog dl = damageToDown[i];
                        AgentItem ag = log.AgentData.GetAgentByInstID(dl.SrcInstId, log.FightData.ToLogSpace(dl.Time));
                        DeathRecap.DeathRecapDamageItem item = new DeathRecap.DeathRecapDamageItem()
                        {
                            Time           = (int)dl.Time,
                            IndirectDamage = dl.IsIndirectDamage,
                            ID             = dl.SkillId,
                            Damage         = dl.Damage,
                            Src            = ag != null?ag.Name.Replace("\u0000", "").Split(':')[0] : ""
                        };
                        damage += dl.Damage;
                        recap.ToDown.Add(item);
                        if (damage > 20000)
                        {
                            break;
                        }
                    }
                    List <DamageLog> damageToKill = damageLogs.Where(x => x.Time > log.FightData.ToFightSpace(downed.Time) && x.Time < log.FightData.ToFightSpace(dead.Time) && x.Damage > 0 && x.Time > log.FightData.ToFightSpace(lastTime)).ToList();
                    recap.ToKill = damageToKill.Count > 0 ? new List <DeathRecap.DeathRecapDamageItem>() : null;
                    for (int i = damageToKill.Count - 1; i >= 0; i--)
                    {
                        DamageLog dl = damageToKill[i];
                        AgentItem ag = log.AgentData.GetAgentByInstID(dl.SrcInstId, log.FightData.ToLogSpace(dl.Time));
                        DeathRecap.DeathRecapDamageItem item = new DeathRecap.DeathRecapDamageItem()
                        {
                            Time           = (int)dl.Time,
                            IndirectDamage = dl.IsIndirectDamage,
                            ID             = dl.SkillId,
                            Damage         = dl.Damage,
                            Src            = ag != null?ag.Name.Replace("\u0000", "").Split(':')[0] : ""
                        };
                        recap.ToKill.Add(item);
                    }
                }
                else
                {
                    recap.ToDown = null;
                    List <DamageLog> damageToKill = damageLogs.Where(x => x.Time < log.FightData.ToFightSpace(dead.Time) && x.Damage > 0 && x.Time > log.FightData.ToFightSpace(lastTime)).ToList();
                    recap.ToKill = damageToKill.Count > 0 ? new List <DeathRecap.DeathRecapDamageItem>() : null;
                    int damage = 0;
                    for (int i = damageToKill.Count - 1; i >= 0; i--)
                    {
                        DamageLog dl = damageToKill[i];
                        AgentItem ag = log.AgentData.GetAgentByInstID(dl.SrcInstId, log.FightData.ToLogSpace(dl.Time));
                        DeathRecap.DeathRecapDamageItem item = new DeathRecap.DeathRecapDamageItem()
                        {
                            Time           = (int)dl.Time,
                            IndirectDamage = dl.IsIndirectDamage,
                            ID             = dl.SkillId,
                            Damage         = dl.Damage,
                            Src            = ag != null?ag.Name.Replace("\u0000", "").Split(':')[0] : ""
                        };
                        damage += dl.Damage;
                        recap.ToKill.Add(item);
                        if (damage > 20000)
                        {
                            break;
                        }
                    }
                }
                lastTime = dead.Time;
                res.Add(recap);
            }
            if (_deathRecaps.Count == 0)
            {
                _deathRecaps = null;
            }
        }
예제 #14
0
 public void OverrideID(ushort ID, AgentItem agentItem)
 {
     _allAgentsList.RemoveAll(x => x.ID == ID);
     _allAgentsList.Add(agentItem);
     Refresh();
 }
예제 #15
0
 public Minion(AgentItem agent) : base(agent)
 {
 }
예제 #16
0
 public BoonSimulationItemCleanse(AgentItem provokedBy, long duration, long time)
 {
     _provokedBy = provokedBy;
     _duration   = duration;
     _time       = time;
 }
예제 #17
0
 public BoonApplicationLog(long time, AgentItem src, long value) : base(time, src, value)
 {
 }
 public BoonSimulationItemOverstack(AgentItem src, long overstack, long time) : base(src, overstack, time)
 {
 }
 protected AbstractPlayer(AgentItem agent)
 {
     String[] name = agent.Name.Split('\0');
     Character = name[0];
     AgentItem = agent;
 }
예제 #20
0
 // Constructors
 public Target(AgentItem agent) : base(agent)
 {
 }