Example #1
0
        void oFormActMain_AfterCombatAction(bool isImport, CombatActionEventArgs actionInfo)
        {
            if (incDamageTypes.Contains(actionInfo.swingType) == false)
            {
                return;
            }
            if (actionInfo.damage <= 0)
            {
                return;
            }
            // Get the incoming damage combatant from the current encounter
            EncounterData activeEncounter = ActGlobals.oFormActMain.ActiveZone.Items[ActGlobals.oFormActMain.ActiveZone.Items.Count - 1];
            CombatantData combatant       = activeEncounter.GetCombatant(actionInfo.victim);

            SortedList <DateTime, long> damagePerSecond;

            if (combatant.Tags.ContainsKey(tagName))                    // See if the combatant already has a DamageTakenPerSecond container
            {
                damagePerSecond = (SortedList <DateTime, long>)combatant.Tags[tagName];
            }
            else
            {
                damagePerSecond = new SortedList <DateTime, long>();
                combatant.Tags.Add(tagName, damagePerSecond);
            }

            if (damagePerSecond.ContainsKey(actionInfo.time))                   // See if the container has an entry for the current second
            {
                damagePerSecond[actionInfo.time] += actionInfo.damage;          // Add damage to the current second
            }
            else
            {
                damagePerSecond.Add(actionInfo.time, actionInfo.damage);                        // Add this damage as the current second
            }
        }
        public FightData CreateCurrentRunFightData(EncounterData currentFightData, int phase)
        {
            TimeSpan fightDuration = currentFightData.Duration;
            int      totalDamageDoneToBossInCurrentPhase = 0;

            foreach (String bossName in _bossListOfEachPhase[phase])
            {
                int damageDoneToBoss = (int)currentFightData.GetCombatant(bossName).DamageTaken;

                totalDamageDoneToBossInCurrentPhase += damageDoneToBoss;
                _damageDoneToEachBoss[bossName]      = damageDoneToBoss;
            }

            if (currentPhase != phase)
            {
                currentPhase++;
            }

            return(new FightData(fightDuration, GetTotalDamageDoneToBoss(currentPhase)));
        }
        public string GetBoss(EncounterData enc)
        {
            var strongest = enc.GetStrongestEnemy("YOU");
            var combatant = enc.GetCombatant(strongest);

            strongest = string.IsNullOrEmpty(GetTranslatedStrongest(strongest))
                ? strongest
                : GetTranslatedStrongest(strongest);
            if (enc.ZoneName.ToLower() == "the Weapon's Refrain (Ultimate)".ToLower())
            {
                return("The Ultima Weapon");
            }
            if (enc.ZoneName.ToLower() == "the Unending Coil of Bahamut (Ultimate)".ToLower())
            {
                return("Bahamut Prime");
            }

            if (enc.ZoneName.Contains("Alphascape (V4.0)"))
            {
                strongest = "Omega-M and Omega-F";
            }

            if (enc.ZoneName.Contains("Savage"))
            {
                strongest = strongest + " (Savage)";
            }

            if (enc.ZoneName.Contains("Alphascape") && enc.ZoneName.Contains("4.0") && enc.ZoneName.Contains("Savage"))
            {
                if (combatant.AllOut.ContainsKey("Target Analysis") || combatant.AllOut.ContainsKey("標的識別") ||
                    combatant.AllOut.ContainsKey("Unknown_336C"))
                {
                    return("The Final Omega (Savage)");
                }
                return("Omega-M and Omega-F (Savage)");
            }

            return(strongest);
        }
Example #4
0
        void OnBeforeLogLineRead(bool isImport, LogLineEventArgs logInfo)
        {
            var log = logInfo.logLine;

            //Fetch Data
            if (inCombat)
            {
                var actData = ActiveEnconter.GetCombatant("YOU");

                if (actData == null)
                {
                    return;
                }

                //Encounter Data

                if (double.TryParse(actData.GetColumnByName("EncDPS").Replace(@",", @"").Replace(@"%", @""),
                                    out var encDps))
                {
                    if (encDps >= 0)
                    {
                        dataStruct.PlayerCurrentDPS = encDps;
                    }
                }

                if (double.TryParse(actData.GetColumnByName("EncHPS").Replace(@",", @"").Replace(@"%", @""),
                                    out var encHps))
                {
                    if (encDps >= 0)
                    {
                        dataStruct.PlayerCurrentHPS = encHps;
                    }
                }

                if (actData.GetColumnByName("Job") == "Whm" || actData.GetColumnByName("Job") == "Sch" ||
                    actData.GetColumnByName("Job") == "Ast")
                {
                    if (double.TryParse(actData.GetColumnByName("CritHeal%").Replace(@",", @"").Replace(@"%", @""),
                                        out var encCrit))
                    {
                        if (encDps >= 0)
                        {
                            dataStruct.PlayerCurrentCrit = encCrit;
                        }
                    }
                }
                else
                {
                    if (double.TryParse(actData.GetColumnByName("CritDam%").Replace(@",", @"").Replace(@"%", @""),
                                        out var encCrit))
                    {
                        if (encDps >= 0)
                        {
                            dataStruct.PlayerCurrentCrit = encCrit;
                        }
                    }
                }

                if (double.TryParse(actData.GetColumnByName("DirectHitPct").Replace(@",", @"").Replace(@"%", @""),
                                    out var encDH))
                {
                    if (encDps >= 0)
                    {
                        dataStruct.PlayerCurrentDH = encDH;
                    }
                }

                if (double.TryParse(actData.GetColumnByName("CritDirectHitPct").Replace(@",", @"").Replace(@"%", @""),
                                    out var encCritDH))
                {
                    if (encDps >= 0)
                    {
                        dataStruct.PlayerCurrentCritDH = encCritDH;
                    }
                }

                if (double.TryParse(actData.GetColumnByName("OverHealPct").Replace(@",", @"").Replace(@"%", @""),
                                    out var encOverheal))
                {
                    if (encDps >= 0)
                    {
                        dataStruct.PlayerCurrentOverheal = encOverheal;
                    }
                }

                if (int.TryParse(actData.GetColumnByName("Damage%").Replace(@",", @"").Replace(@"%", @""),
                                 out var entDmg))
                {
                    if (encDps >= 0)
                    {
                        dataStruct.PlayerCurrentDamage = entDmg;
                    }
                }


                //Encounter Information
                var encTime = ActiveEnconter.Duration.TotalSeconds;
                dataStruct.CurrentEncounterTime = encTime;
                dataStruct.CurrentEncounterName = ActiveEnconter.ZoneName;

                //Enemies
                dataStruct.Enemies.Clear();

                foreach (var combatant in ActiveEnconter.Items)
                {
                    if (combatant.Value.GetColumnByName("Job") != "")
                    {
                        continue;
                    }
                    dataStruct.Enemies.Add(combatant.Value.Name);
                }
            }

            //Custom Triggers
            if (log.Length > 23)
            {
                var loglineA = log.Substring(23);
                dataStruct.CustomTriggerActive = customTriggers.Any(str => loglineA.Contains(str));
            }

            //Write Data
            WriteJSON(dataStruct);
        }