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); } }
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); }
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); }
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(); } }