示例#1
0
        private static Log CreateLog(int start, int end, List <Player> PlayerList, EncounterData encounter, string append)
        {
            try
            {
                Log Log = new Log();
                Log.successLevel = SuccessLevelEnum.GetByCode(encounter.GetEncounterSuccessLevel()).Name;
                Log.startTime    = encounter.StartTime.TimeOfDay.ToString() + " " + append;
                Log.duration     = encounter.Duration.ToString();
                Log.maxHit       = ValidateAndFill("MaxHitParty", encounter.GetMaxHit(false));
                Log.totalHealing = ValidateAndFill("TotalHealing", encounter.Healed.ToString());
                Log.targetName   = encounter.GetStrongestEnemy(null);
                Log.mapName      = ValidateAndFill("MapName", encounter.ZoneName);
                Log.sortBy       = PluginSettings.GetSetting <string>("SortBy");
                PlayerList.Where(Player => Player.number >= start && Player.number <= end).ToList().ForEach(Player =>
                {
                    Log.players.Add(Player);
                });

                if (Log.players.Count > 0)
                {
                    return(Log);
                }

                else
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                return(null);
            }
        }
示例#2
0
        private string GetPerf(EncType enc, CombatantData combatant, double encdpshps)
        {
            string job = combatant.GetColumnByName("Job");

            if (job == string.Empty)
            {
                return(string.Empty);
            }

            string perfdpshps = enc == EncType.DPS ? "dps" : "hps";

            EncounterData encounter = combatant.Parent;
            string        zonename  = encounter.ZoneName;
            string        bossname  = encounter.GetStrongestEnemy("YOU");

            PerfKey key  = CreateKey(zonename, bossname);
            dynamic perf = null;

            if (cache.TryGetValue(key, out perf))
            {
                double[] perfarry = (double[])perf[perfdpshps][job];

                if (encdpshps < perfarry[6])
                {
                    return("10-");
                }
                if (encdpshps < perfarry[5])
                {
                    return("10+");
                }
                if (encdpshps < perfarry[4])
                {
                    return("25+");
                }
                if (encdpshps < perfarry[3])
                {
                    return("50+");
                }
                if (encdpshps < perfarry[2])
                {
                    return("75+");
                }
                if (encdpshps < perfarry[1])
                {
                    return("95+");
                }
                if (encdpshps < perfarry[0])
                {
                    return("99+");
                }
                return("100");
            }
            return(string.Empty);
        }
示例#3
0
        public static Log ACTEncounterToModel(EncounterData encounter)
        {
            Log Log = new Log();

            Log.successLevel = SuccessLevelEnum.GetByCode(encounter.GetEncounterSuccessLevel()).Name;
            Log.startTime    = encounter.StartTime.TimeOfDay.ToString();
            Log.duration     = encounter.Duration.ToString();
            Log.maxHit       = ValidateAndFill("MaxHitParty", encounter.GetMaxHit(false));
            Log.totalHealing = ValidateAndFill("TotalHealing", encounter.Healed.ToString());
            Log.targetName   = encounter.GetStrongestEnemy(null);
            Log.mapName      = ValidateAndFill("MapName", encounter.ZoneName);
            Log.sortBy       = PluginSettings.GetSetting <string>("SortBy");
            encounter.GetAllies().ForEach(combatant =>
            {
                Player Player = new Player();

                if (IsLimitBreak(combatant.Name))
                {
                    Player.playerName = combatant.Name;
                    Player.maxHit     = combatant.GetMaxHit(true);

                    Log.players.Add(Player);
                }
                else if (!IsLimitBreak(combatant.Name) && GetCustomColumnData(combatant, "Job") != "")
                {
                    Player.playerJob        = GetCustomColumnData(combatant, "Job").ToUpper();
                    Player.playerName       = FormatName(combatant.Name);
                    Player.damagePercentage = ValidateAndFill("DamagePerc", combatant.DamagePercent);
                    Player.dps                = Math.Round(combatant.EncDPS).ToString();
                    Player.maxHit             = FormatSkill(ValidateAndFill("MaxHitIndividual", combatant.GetMaxHit(true)));
                    Player.healingPercentage  = ValidateAndFill("HealingPerc", combatant.HealedPercent);
                    Player.hps                = ValidateAndFill("HPS", Math.Round(combatant.EncHPS).ToString());
                    Player.maxHeal            = FormatSkill(ValidateAndFill("MaxHeal", combatant.GetMaxHeal(true, false)));
                    Player.overhealPercentage = ValidateAndFill("OverHealPerc", GetCustomColumnData(combatant, "OverHealPct"));
                    Player.deaths             = ValidateAndFill("Deaths", combatant.Deaths.ToString());
                    Player.crit               = ValidateAndFill("Crit", Math.Round(combatant.CritDamPerc).ToString());
                    Player.dh                 = ValidateAndFill("DirectHit", GetCustomColumnData(combatant, "DirectHitPct"));
                    Player.dhCrit             = ValidateAndFill("DirectHitCrit", GetCustomColumnData(combatant, "CritDirectHitPct"));
                    Player.critHealPercentage = ValidateAndFill("CritHealPerc", Math.Round(combatant.CritHealPerc).ToString());

                    Log.players.Add(Player);
                }
            });

            if (Log.players.Count == 0 || Log.duration == "00:00:00")
            {
                return(null);
            }

            return(Log);
        }
        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);
        }
示例#5
0
        private void populateOverlay()
        {
            if (currentZoneData == null || currentEncounterData == null)
            {
                return;
            }

            List <CombatantData> combatants = currentEncounterData.GetAllies();

            if (combatants.Count == 0)
            {
                return;
            }

            overlayHeader.SetValue(
                currentEncounterData.Duration,
                currentEncounterData.GetStrongestEnemy(currentEncounterData.CharName),
                combatants.Sum(x => x.EncDPS),
                combatants.Sum(x => x.EncHPS));

            populateTable(DpsDataGridView, dpsBackingSource, getViewItems(combatants), ActPlugin.Setting.OverlaySetting.DpsTable);
            DpsDataGridView.Sort();

            populateTable(HpsDataGridView, hpsBackingSource, getViewItems(combatants), ActPlugin.Setting.OverlaySetting.HpsTable);
            HpsDataGridView.Sort();

            if (autoSize.EnableAutoSize)
            {
                autoResizeOverlay();
            }
            else
            {
                DpsDataGridView.AutoResizeColumns();
                HpsDataGridView.AutoResizeColumns();
            }
        }