// Add calculated values to the values dictionary. // These values are then available for display via the CharacterDisplayCalculationLabels // member defined in CalculationsRetribution.cs // While possible, there's little reason to add values to the dictionary that are not being // used by the CharacterDisplayCalculationLabels. public override Dictionary <string, string> GetCharacterDisplayCalculationValues() { Dictionary <string, string> dictValues = new Dictionary <string, string>(); // Status text dictValues["Status"] = string.Format("{0} dps", DPSPoints.ToString("N0")); // Basic stats dictValues["Health"] = BasicStats.Health.ToString("N0"); dictValues["Mana"] = BasicStats.Mana.ToString("N0"); dictValues["Strength"] = BasicStats.Strength.ToString("N0"); dictValues["Agility"] = string.Format("{0:0}", BasicStats.Agility); dictValues["Attack Power"] = BasicStats.AttackPower.ToString("N0"); dictValues["Crit Chance"] = string.Format("{0:P}*{1:0} crit rating", BasicStats.PhysicalCrit, BasicStats.CritRating); dictValues["Miss Chance"] = string.Format("{0:P}*{1:P} hit ({2:0} rating)\n", ToMiss, BasicStats.PhysicalHit, BasicStats.HitRating); dictValues["Dodge Chance"] = string.Format("{0:P}*{1:P} expertise ({2:0} rating)", ToBeDodged, BasicStats.Expertise * .0025f, BasicStats.ExpertiseRating); dictValues["Melee Haste"] = string.Format("{0:P}*{1:0} haste rating", BasicStats.PhysicalHaste, BasicStats.HasteRating); dictValues["Weapon Damage"] = WeaponDamage.ToString("N2"); dictValues["Attack Speed"] = AttackSpeed.ToString("N2"); // DPS Breakdown dictValues["Total DPS"] = OverallPoints.ToString("N0"); dictValues["White"] = string.Format("{0}*{1}", WhiteDPS.ToString("N0"), WhiteSkill.ToString()); dictValues["Seal"] = string.Format("{0}*{1}", SealDPS.ToString("N0"), SealSkill.ToString()); dictValues["Crusader Strike"] = string.Format("{0}*{1}", CrusaderStrikeDPS.ToString("N0"), CrusaderStrikeSkill.ToString()); dictValues["Judgement"] = string.Format("{0}*{1}", JudgementDPS.ToString("N0"), JudgementSkill.ToString()); dictValues["Consecration"] = string.Format("{0}*{1}", ConsecrationDPS.ToString("N0"), ConsecrationSkill.ToString()); dictValues["Exorcism"] = string.Format("{0}*{1}", ExorcismDPS.ToString("N0"), ExorcismSkill.ToString()); dictValues["Divine Storm"] = string.Format("{0}*{1}", DivineStormDPS.ToString("N0"), DivineStormSkill.ToString()); dictValues["Hammer of Wrath"] = string.Format("{0}*{1}", HammerOfWrathDPS.ToString("N0"), HammerOfWrathSkill.ToString()); dictValues["Hand of Reckoning"] = string.Format("{0}*{1}", HandOfReckoningDPS.ToString("N0"), HandOfReckoningSkill.ToString()); dictValues["Other"] = OtherDPS.ToString("N0"); // Rotation Info: dictValues["Chosen Rotation"] = Rotation == null ? "n/a" : SimulatorParameters.ShortRotationString(Rotation); // TODO: Remove dependancy on SimulatorParameters. dictValues["Average SoV Stack"] = AverageSoVStack.ToString("N2"); dictValues["SoV Overtake"] = string.Format("{0} sec", SoVOvertake.ToString("N2")); dictValues["Crusader Strike CD"] = Solution.GetAbilityEffectiveCooldown(Ability.CrusaderStrike).ToString("N2"); dictValues["Judgement CD"] = Solution.GetAbilityEffectiveCooldown(Ability.Judgement).ToString("N2"); dictValues["Consecration CD"] = Solution.GetAbilityEffectiveCooldown(Ability.Consecration).ToString("N2"); dictValues["Exorcism CD"] = Solution.GetAbilityEffectiveCooldown(Ability.Exorcism).ToString("N2"); dictValues["Divine Storm CD"] = Solution.GetAbilityEffectiveCooldown(Ability.DivineStorm).ToString("N2"); dictValues["Hammer of Wrath CD"] = Solution.GetAbilityEffectiveCooldown(Ability.HammerOfWrath).ToString("N2"); return(dictValues); }
// Add calculated values to the values dictionary. // These values are then available for display via the CharacterDisplayCalculationLabels // member defined in CalculationsRetribution.cs // While possible, there's little reason to add values to the dictionary that are not being // used by the CharacterDisplayCalculationLabels. public override Dictionary <string, string> GetCharacterDisplayCalculationValues() { Dictionary <string, string> dictValues = new Dictionary <string, string>(); // Basic stats dictValues["Health"] = string.Format("{0:N0}*Base Health: {1:N0}", CombatStats.Health, BasicStats.Health); dictValues["Mana"] = string.Format("{0:N0}*Base Mana: {1:N0}", CombatStats.Mana, BasicStats.Mana); dictValues["Strength"] = string.Format("{0:N0}*Base Strength: {1:N0}", CombatStats.Strength, BasicStats.Strength); dictValues["Agility"] = string.Format("{0:N0}*Base Agility: {1:N0}", CombatStats.Agility, BasicStats.Agility); dictValues["Attack Power"] = string.Format("{0:N0}*Base Attack Power: {1:N0}", CombatStats.AttackPower, BasicStats.AttackPower); dictValues["Melee Crit"] = string.Format("{0:P}*{1:0} Crit Rating ({2:P})", CombatStats.PhysicalCrit, BasicStats.CritRating, StatConversion.GetCritFromRating(BasicStats.CritRating, CharacterClass.Paladin)); dictValues["Melee Haste"] = string.Format("{0:P}*{1:0} Haste Rating ({2:P})", CombatStats.PhysicalHaste, BasicStats.HasteRating, StatConversion.GetHasteFromRating(BasicStats.HasteRating, CharacterClass.Paladin)); dictValues["Chance to Dodge"] = string.Format("{0:P}*{1:0} Expertise Rating ({2:F1})", ((BasePhysicalWhiteCombatTable)WhiteSkill.CT).ChanceToDodge, BasicStats.ExpertiseRating, BasicStats.Expertise); dictValues["Mastery"] = string.Format("{0:F2}*{1:0} Mastery Rating ({2:F1})\n{3:P} Hand of Light", (8f + StatConversion.GetMasteryFromRating(CombatStats.MasteryRating, CharacterClass.Paladin)), BasicStats.MasteryRating, StatConversion.GetMasteryFromRating(BasicStats.MasteryRating, CharacterClass.Paladin), (8f + StatConversion.GetMasteryFromRating(BasicStats.MasteryRating, CharacterClass.Paladin)) * PaladinConstants.HOL_COEFF); dictValues["Miss Chance"] = string.Format("{0:P}*{1:0} Hit Rating ({2:P})", WhiteSkill.CT.ChanceToMiss, BasicStats.HitRating, StatConversion.GetHitFromRating(BasicStats.HitRating, CharacterClass.Paladin)); dictValues["Spell Power"] = string.Format("{0:N0}*Base Spell Power: {1:N0}", CombatStats.SpellPower, BasicStats.SpellPower); dictValues["Spell Crit"] = string.Format("{0:P}*{1:0} Crit Rating ({2:P})", CombatStats.SpellCrit, BasicStats.CritRating, StatConversion.GetCritFromRating(BasicStats.CritRating, CharacterClass.Paladin)); dictValues["Spell Haste"] = string.Format("{0:P}*{1:0} Haste Rating ({2:P})", CombatStats.SpellHaste, BasicStats.HasteRating, StatConversion.GetHasteFromRating(BasicStats.HasteRating, CharacterClass.Paladin)); dictValues["Weapon Damage"] = string.Format("{0:F}*Base Weapon Damage: {1:F}", AbilityHelper.WeaponDamage(Character, CombatStats.AttackPower), AbilityHelper.WeaponDamage(Character, BasicStats.AttackPower)); dictValues["Weapon Damage @3.3"] = string.Format("{0:F}*Base Weapon Damage: {1:F}", AbilityHelper.WeaponDamage(Character, CombatStats.AttackPower, true), AbilityHelper.WeaponDamage(Character, BasicStats.AttackPower, true)); dictValues["Attack Speed"] = string.Format("{0:F2}*Base Attack Speed: {1:F2}", AbilityHelper.WeaponSpeed(Character, CombatStats.PhysicalHaste), AbilityHelper.WeaponSpeed(Character, BasicStats.PhysicalHaste)); // DPS Breakdown dictValues["Total DPS"] = OverallPoints.ToString("N0"); dictValues["White"] = string.Format("{0:N0}*" + WhiteSkill, WhiteSkill.GetDPS()); dictValues["Seal"] = string.Format("{0:N0}*" + SealSkill, SealSkill.GetDPS()); dictValues["Seal (Dot)"] = string.Format("{0:N0}*" + SealDotSkill, SealDotSkill.GetDPS()); dictValues["Seal of Command"] = string.Format("{0:N0}*" + CommandSkill, CommandSkill.GetDPS()); dictValues["Crusader Strike"] = string.Format("{0:N0}*" + CrusaderStrikeSkill, CrusaderStrikeSkill.GetDPS()); dictValues["Templars Verdict"] = string.Format("{0:N0}*" + TemplarsVerdictSkill, TemplarsVerdictSkill.GetDPS()); dictValues["Judgement"] = string.Format("{0:N0}*" + JudgementSkill, JudgementSkill.GetDPS()); dictValues["Consecration"] = string.Format("{0:N0}*" + ConsecrationSkill, ConsecrationSkill.GetDPS()); dictValues["Exorcism"] = string.Format("{0:N0}*" + ExorcismSkill, ExorcismSkill.GetDPS()); dictValues["Holy Wrath"] = string.Format("{0:N0}*" + HolyWrathSkill, HolyWrathSkill.GetDPS()); dictValues["Hammer of Wrath"] = string.Format("{0:N0}*" + HammerOfWrathSkill, HammerOfWrathSkill.GetDPS()); dictValues["GoaK"] = string.Format("{0:N0}*" + GoakSkill, GoakSkill.GetDPS()); dictValues["Other"] = OtherDPS.ToString("N0"); // Rotation Info: dictValues["Inqusition Uptime"] = CrusaderStrikeSkill.InqUptime.ToString("P2"); dictValues["Crusader Strike Usage"] = (CrusaderStrikeSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["Templar's Verdict Usage"] = (TemplarsVerdictSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["Exorcism Usage"] = (ExorcismSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["Hammer of Wrath Usage"] = (HammerOfWrathSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["Judgement Usage"] = (JudgementSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["Holy Wrath Usage"] = (HolyWrathSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["Consecration Usage"] = (ConsecrationSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); dictValues["GoaK Usage"] = (GoakSkill.UsagePerSec * Character.BossOptions.BerserkTimer).ToString("F2"); return(dictValues); }