Exemple #1
0
        public override void Configure(IController hud)
        {
            var Hud = hud;

            Hud.RunOnPlugin <AttributeLabelListPlugin>(plugin =>
            {
                plugin.LabelList.WidthFunc = () => Hud.Window.Size.Height * 0.0630f;

                var dpsDecorator      = plugin.LabelList.LabelDecorators[2];
                dpsDecorator.TextFunc = () =>
                {
                    var dps = Hud.Game.Me.Offense.SheetDps * (Hud.Game.Me.Powers.BuffIsActive(246562, 1) ? 2 : 1);
                    return(BasePlugin.ValueToString(dps, ValueFormat.ShortNumber));
                };

                var apsDecorator      = plugin.LabelList.LabelDecorators[3];
                apsDecorator.TextFunc = () =>
                {
                    var aps = Hud.Game.Me.Offense.AttackSpeed * (Hud.Game.Me.Powers.BuffIsActive(246562, 1) ? 2 : 1);
                    return(aps.ToString("F2", System.Globalization.CultureInfo.InvariantCulture) + "/s");
                };

                plugin.LabelList.LabelDecorators[9].TextFunc = () => Hud.Game.Me.Stats.MoveSpeed.ToString("#");
                plugin.LabelList.LabelDecorators[9].HintFunc = () => string.Empty;

                /*var index = 9; //0..9
                 * if (index < plugin.LabelList.LabelDecorators.Count && index >= 0)
                 * {
                 *  plugin.LabelList.LabelDecorators[index].AlertTextFunc = () => Hud.Game.Me.Stats.PickupRange.ToString("#");
                 *  plugin.LabelList.LabelDecorators[index].HintFunc = () => "pickup radius";
                 * }/**/

                var expandedHintFont            = Hud.Render.CreateFont("tahoma", 7, 255, 200, 200, 200, false, false, true);
                var expandedHintWidthMultiplier = 3;

                var adLabel = plugin.LabelList.LabelDecorators[6];
                adLabel.ExpandedHintFont            = expandedHintFont;
                adLabel.ExpandedHintWidthMultiplier = expandedHintWidthMultiplier;
                adLabel.ExpandUpLabels = new List <TopLabelDecorator>
                {
                    CreateTopLabel(Hud, ItemLocation.RightHand, () => "Off hand"),
                    CreateTopLabel(Hud, ItemLocation.LeftHand, () => "Main hand"),
                    CreateTopLabel(Hud, ItemLocation.Shoulders, () => "Shoulders"),
                    CreateTopLabel(Hud, ItemLocation.Hands, () => "Hands"),
                    CreateTopLabel(Hud, ItemLocation.LeftRing, () => "Left ring"),
                    CreateTopLabel(Hud, ItemLocation.RightRing, () => "Right ring"),
                    CreateTopLabel(Hud, ItemLocation.Neck, () => "Neck"),
                };
            });
        }
Exemple #2
0
        public ExpressionsPlugin()
        {
            Enabled = true;
            list    = new Dictionary <string, Func <string> >();

            list["*bloodshards-total"]     = (() => BasePlugin.ValueToString(Me.Materials.BloodShard, ValueFormat.LongNumber));
            list["*monsters-in-20"]        = (() => BasePlugin.ValueToString(Hud.GetPlugin <UtilityCollection>().monsterDensityAroundPlayer(20), ValueFormat.NormalNumber));
            list["*cursor-monsters-in-20"] = (() => BasePlugin.ValueToString(Hud.GetPlugin <UtilityCollection>().monsterDensityAroundCursor(20), ValueFormat.NormalNumber));
            list["*shield"]            = (() => Def.CurShield > 0 ? BasePlugin.ValueToString(Def.CurShield, ValueFormat.LongNumber) : null);
            list["*shield-nok"]        = (() => Def.CurShield > 0 ? BasePlugin.ValueToString(Def.CurShield, ValueFormat.NormalNumberNoDecimal) : null);
            list["*gold-in-stash"]     = (() => BasePlugin.ValueToString(Me.Materials.Gold, ValueFormat.LongNumber));
            list["*gold-in-stash-nok"] = (() => BasePlugin.ValueToString(Me.Materials.Gold, ValueFormat.NormalNumberNoDecimal));
            list["*hp-cur"]            = (() => BasePlugin.ValueToString(Def.HealthCur, ValueFormat.LongNumber));
            list["*hp-cur-nok"]        = (() => BasePlugin.ValueToString(Def.HealthCur, ValueFormat.NormalNumberNoDecimal));
            list["*hp-cur-pct"]        = (() => Def.HealthPct.ToString("F0", CultureInfo.InvariantCulture) + "%");
            list["*hp-max"]            = (() => Def.HealthMax.ToString("F0", CultureInfo.InvariantCulture));
            list["*ehp-max"]           = (() => BasePlugin.ValueToString(Def.EhpMax, ValueFormat.LongNumber));
            list["*ehp-max-nok"]       = (() => BasePlugin.ValueToString(Def.EhpMax, ValueFormat.NormalNumberNoDecimal));
            list["*ehp-cur"]           = (() => BasePlugin.ValueToString(Def.EhpCur, ValueFormat.NormalNumberNoDecimal));
            list["*ehp-cur-nok"]       = (() => BasePlugin.ValueToString(Def.EhpCur, ValueFormat.NormalNumberNoDecimal));
            list["*resource-cur-pri"]  = (() => Stats.ResourceCurPri.ToString("F0", CultureInfo.InvariantCulture));
            list["*resource-cur-sec"]  = (() => Stats.ResourceCurSec.ToString("F0", CultureInfo.InvariantCulture));
            list["*resource-max-pri"]  = (() => Stats.ResourceMaxPri.ToString("F0", CultureInfo.InvariantCulture));
            list["*resource-max-sec"]  = (() => Stats.ResourceMaxSec.ToString("F0", CultureInfo.InvariantCulture));
            list["*resource-pct-pri"]  = (() => Stats.ResourcePctPri.ToString("F0", CultureInfo.InvariantCulture) + "%");
            list["*resource-pct-sec"]  = (() => Stats.ResourcePctSec.ToString("F0", CultureInfo.InvariantCulture) + "%");
            list["*resource-reg-pri"]  = (() => Stats.ResourceRegPri.ToString("F0", CultureInfo.InvariantCulture));
            list["*resource-reg-sec"]  = (() => Stats.ResourceRegSec.ToString("F0", CultureInfo.InvariantCulture));
            list["*critchance"]        = (() => Dmg.CriticalHitChance.ToString("F1", CultureInfo.InvariantCulture) + "%");
            list["*attackspeed"]       = (() => Dmg.AttackSpeed.ToString("F2", CultureInfo.InvariantCulture) + "/s");
            list["*dps-sheet"]         = (() => BasePlugin.ValueToString(Dmg.SheetDps, ValueFormat.LongNumber));


            list["*dps-cur"]   = (() => BasePlugin.ValueToString(Me.Damage.CurrentDps, ValueFormat.LongNumber));
            list["*dps-run"]   = (() => BasePlugin.ValueToString(Me.Damage.RunDps, ValueFormat.LongNumber));
            list["*magicfind"] = (() => Stats.MagicFind.ToString("F0", CultureInfo.InvariantCulture) + "%");
            list["*goldfind"]  = (() => Stats.GoldFind.ToString("F0", CultureInfo.InvariantCulture) + "%");
            list["*expbonus"]  = (() => (Stats.ExperiencePercentBonus).ToString("F0", CultureInfo.InvariantCulture) + "%");
            list["*exponkill"] = (() => BasePlugin.ValueToString(Stats.ExperienceOnKillBonus, ValueFormat.LongNumber));
            list["*ingame-latency-average"]  = (() => BasePlugin.ValueToString(Hud.Game.AverageLatency, ValueFormat.NormalNumberNoDecimal));
            list["*ingame-latency-current"]  = (() => BasePlugin.ValueToString(Hud.Game.CurrentLatency, ValueFormat.NormalNumberNoDecimal));
            list["*ingame-latency-combined"] = (() => BasePlugin.ValueToString(Hud.Game.AverageLatency, ValueFormat.NormalNumberNoDecimal) + " / " + BasePlugin.ValueToString(Hud.Game.CurrentLatency, ValueFormat.NormalNumberNoDecimal));
            list["*ingame-ip"]             = (() => Hud.Game.ServerIpAddress);
            list["*current-time"]          = (() => new TimeSpan(Hud.Game.CurrentRealTimeMilliseconds * 10000).ToString(@"hh\:mm\:ss"));
            list["*game-duration"]         = (() => new TimeSpan(Convert.ToInt64(Def.CurrentEffectiveHealingPercent / 60.0f * 10000000)).ToString(@"hh\:mm\:ss"));
            list["*net-healing"]           = (() => BasePlugin.ValueToString(Def.CurrentEffectiveHealingPercent, ValueFormat.LongNumber) + "%");
            list["*net-healing-nok"]       = (() => BasePlugin.ValueToString(Def.CurrentEffectiveHealingPercent, ValueFormat.NormalNumber) + "%");
            list["*hps-cur"]               = (() => Def.CurrentHealingPerSecond > 0 ? BasePlugin.ValueToString(Def.CurrentHealingPerSecond, ValueFormat.LongNumber) : "");
            list["*hps-cur-nok"]           = (() => Def.CurrentHealingPerSecond > 0 ? BasePlugin.ValueToString(Def.CurrentHealingPerSecond, ValueFormat.NormalNumberNoDecimal) : "");
            list["*hps-cur-plus"]          = (() => Def.CurrentHealingPerSecond > 0 ? "+" + BasePlugin.ValueToString(Def.CurrentHealingPerSecond, ValueFormat.LongNumber) : "");
            list["*hps-cur-plus-nok"]      = (() => Def.CurrentHealingPerSecond > 0 ? "+" + BasePlugin.ValueToString(Def.CurrentHealingPerSecond, ValueFormat.NormalNumberNoDecimal) : "");
            list["*dtps-cur"]              = (() => Def.CurrentDamageTakenPerSecond > 0 ? BasePlugin.ValueToString(Def.CurrentDamageTakenPerSecond, ValueFormat.LongNumber) : "");
            list["*dtps-cur-nok"]          = (() => Def.CurrentDamageTakenPerSecond > 0 ? BasePlugin.ValueToString(Def.CurrentDamageTakenPerSecond, ValueFormat.NormalNumberNoDecimal) : "");
            list["*dtps-cur-minus"]        = (() => Def.CurrentDamageTakenPerSecond > 0 ? "-" + BasePlugin.ValueToString(Def.CurrentDamageTakenPerSecond, ValueFormat.LongNumber) : "");
            list["*dtps-cur-minus-nok"]    = (() => Def.CurrentDamageTakenPerSecond > 0 ? "-" + BasePlugin.ValueToString(Def.CurrentDamageTakenPerSecond, ValueFormat.NormalNumberNoDecimal) : "");
            list["*dmg-dealt-bonus-ph"]    = (() => Dmg.BonusToPhysical == 0 ? "" : (Dmg.BonusToPhysical * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-f"]     = (() => Dmg.BonusToFire == 0 ? "" : (Dmg.BonusToFire * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-l"]     = (() => Dmg.BonusToLightning == 0 ? "" : (Dmg.BonusToLightning * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-c"]     = (() => Dmg.BonusToCold == 0 ? "" : (Dmg.BonusToCold * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-p"]     = (() => Dmg.BonusToPoison == 0 ? "" : (Dmg.BonusToPoison * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-a"]     = (() => Dmg.BonusToArcane == 0 ? "" : (Dmg.BonusToArcane * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-h"]     = (() => Dmg.BonusToHoly == 0 ? "" : (Dmg.BonusToHoly * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*dmg-dealt-bonus-elite"] = (() => Dmg.BonusToElites == 0 ? "" : (Dmg.BonusToElites * 100).ToString("F0", CultureInfo.InvariantCulture));
            list["*inventory-free-space"]  = (() => BasePlugin.ValueToString(Me.InventorySpaceTotal - Hud.Game.InventorySpaceUsed, ValueFormat.NormalNumber));
            list["*cdr"]                             = (() => BasePlugin.ValueToString(Stats.CooldownReduction * 100, ValueFormat.NormalNumberNoDecimal) + "%");
            list["*pickup"]                          = (() => Stats.PickupRange.ToString("F0", CultureInfo.InvariantCulture));
            list["*exp-level-cur"]                   = (() => (Me.CurrentLevelNormal < Me.CurrentLevelNormalCap) ? Me.CurrentLevelNormal.ToString("0") : "p" + Me.CurrentLevelParagonDouble.ToString("0.##", CultureInfo.InvariantCulture));
            list["*exp-to-next-level"]               = (() => BasePlugin.ValueToString(Me.ParagonExpToNextLevel, ValueFormat.LongNumber));
            list["*exp-to-next-level-nok"]           = (() => BasePlugin.ValueToString(Me.ParagonExpToNextLevel, ValueFormat.NormalNumberNoDecimal));
            list["*exp-in-this-level"]               = (() => BasePlugin.ValueToString(Me.ParagonExpInThisLevel, ValueFormat.LongNumber));
            list["*exp-in-this-level-nok"]           = (() => BasePlugin.ValueToString(Me.ParagonExpInThisLevel, ValueFormat.NormalNumberNoDecimal));
            list["*exp-remaining-to-next-level"]     = (() => BasePlugin.ValueToString(Me.ParagonExpToNextLevel - Me.ParagonExpInThisLevel, ValueFormat.LongNumber));
            list["*exp-remaining-to-next-level-nok"] = (() => BasePlugin.ValueToString(Me.ParagonExpToNextLevel - Me.ParagonExpInThisLevel, ValueFormat.NormalNumberNoDecimal));
            list["*exp-bonus-pool-percent"]          = (() => BasePlugin.ValueToString(Me.BonusPoolPercent * 100, ValueFormat.NormalNumber) + "%");
            list["*exp-bonus-pool-remaining"]        = (() => BasePlugin.ValueToString(Me.BonusPoolRemaining, ValueFormat.LongNumber));
            list["*exp-bonus-pool-remaining-nok"]    = (() => BasePlugin.ValueToString(Me.BonusPoolRemaining, ValueFormat.NormalNumberNoDecimal));
            list["*rift-info-pct"]                   = (() => Hud.Game.RiftPercentage.ToString("F1", CultureInfo.InvariantCulture) + "%");
            list["*rift-info-pct-remaining"]         = (() => (100.0 - Hud.Game.RiftPercentage).ToString("F1", CultureInfo.InvariantCulture) + "%");
            list["*perf-rendertime"]                 = (() => Hud.Stat.RenderPerfCounter.LastValue.ToString("F0") + " (" + Hud.Stat.RenderPerfCounter.LastCount.ToString("F0") + " FPS)");


            //expressions.Add("*perf-memory-usage-gc", (GC.GetTotalMemory(false) / 1024.0 / 1024.0).ToString("F0") + " MB");
            //expressions.Add("*dmg-weapon", BasePlugin.ValueToString(Me.DWHandLeft ? Me.WeaponDMGmh : Me.WeaponDMGoh, ValueFormat.LongNumber));
            //expressions.Add("*exp-all", BasePlugin.ValueToString(Me.ParagonTotalExp, ValueFormat.LongNumber));
            //expressions.Add("*elemental-dps", BasePlugin.ValueToString(Me.SheetDPS * (1 + Me.HighestElementalDamageBonus), ValueFormat.LongNumber));
            //expressions.Add("*elite-dps", BasePlugin.ValueToString(Me.SheetDPS * (1 + Me.HighestElementalDamageBonus) * (1 + Me.BonusToElites), ValueFormat.LongNumber));
            //expressions.Add("*movespeed", Me.MoveSpeed.ToString("F0", CultureInfo.InvariantCulture));
            //expressions.Add("*movespeed-bonus", Me.MoveSpeedBonus.ToString("F0", CultureInfo.InvariantCulture));
            //list["*life-per-second"] = (() => BasePlugin.ValueToString(Hud.Collections.CurHealingPerSecond, ValueFormat.LongNumber));
            //list["*life-per-second-nok"] = (() => BasePlugin.ValueToString(Hud.Collections.CurHealingPerSecond, ValueFormat.NormalNumber));
            //expressions.Add("*attackspeed-pets", Me.AttackSpeedPets.ToString("F2", CultureInfo.InvariantCulture) + "/s");
            //expressions.Add("*healing-sheet", BasePlugin.ValueToString(Me.SheetHealing, ValueFormat.LongNumber));
            //expressions.Add("*healing-sheet-nok", BasePlugin.ValueToString(Me.SheetHealing, ValueFormat.NormalNumberNoDecimal));
            //expressions.Add("*healing-sheet-plus", "+" + BasePlugin.ValueToString(Me.SheetHealing, ValueFormat.LongNumber));
            //expressions.Add("*healing-sheet-plus-nok", "+" + BasePlugin.ValueToString(Me.SheetHealing, ValueFormat.NormalNumberNoDecimal));

            /*
             * expressions.Add("*exp-level-time-to-next1", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 1, true));
             * expressions.Add("*exp-level-time-to-next2", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 2, true));
             * expressions.Add("*exp-level-time-to-next3", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 3, true));
             * expressions.Add("*exp-level-time-to-next10", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 10, true));
             * expressions.Add("*exp-level-time-to-next20", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 20, true));
             * expressions.Add("*exp-level-time-to-next50", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 50, true));
             * expressions.Add("*exp-level-time-to-next100", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 100, true));
             * expressions.Add("*exp-level-time-to-next1-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 1, false));
             * expressions.Add("*exp-level-time-to-next2-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 2, false));
             * expressions.Add("*exp-level-time-to-next3-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 3, false));
             * expressions.Add("*exp-level-time-to-next10-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 10, false));
             * expressions.Add("*exp-level-time-to-next20-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 20, false));
             * expressions.Add("*exp-level-time-to-next50-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 50, false));
             * expressions.Add("*exp-level-time-to-next100-value", Engine.TimeToParagonLevel(Me.CurrentLevelParagon + 100, false));
             * expressions.Add("*exp-level-exp-to-next1", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 1));
             * expressions.Add("*exp-level-exp-to-next2", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 2));
             * expressions.Add("*exp-level-exp-to-next3", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 3));
             * expressions.Add("*exp-level-exp-to-next10", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 10));
             * expressions.Add("*exp-level-exp-to-next20", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 20));
             * expressions.Add("*exp-level-exp-to-next50", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 50));
             * expressions.Add("*exp-level-exp-to-next100", Engine.ExpToParagonLevel(Me.CurrentLevelParagon + 100));
             * expressions.Add("*life-on-hit", BasePlugin.ValueToString(Me.LifeOnHit, ValueFormat.LongNumber));
             * expressions.Add("*life-on-hit-nok", BasePlugin.ValueToString(Me.LifeOnHit, ValueFormat.NormalNumber));
             * expressions.Add("*life-on-kill", BasePlugin.ValueToString(Me.LifeOnKill, ValueFormat.LongNumber));
             * expressions.Add("*life-on-kill-nok", BasePlugin.ValueToString(Me.LifeOnKill, ValueFormat.NormalNumber));
             * expressions.Add("*hp-globe-bonus", BasePlugin.ValueToString(Me.GlobeBonus, ValueFormat.LongNumber));
             * expressions.Add("*hp-globe-bonus-nok", BasePlugin.ValueToString(Me.GlobeBonus, ValueFormat.NormalNumber));
             * expressions.Add("*dps-cur-party": { long t = 0); for (int i = 0) ; i < Collect.Players.Length); i++) t += (Collect.Players[i].ActorKnown() ? Collect.Players[i].CurDPS : 0)); S = BasePlugin.ValueToString(t, ValueFormat.LongNumber)); }
             * expressions.Add("*dps-run-party": { long t = 0); for (int i = 0) ; i < Collect.Players.Length); i++) t += Collect.Players[i].RunDPS()); S = BasePlugin.ValueToString(t, ValueFormat.LongNumber)); }
             * expressions.Add("*monster-damage", BasePlugin.ValueToString(Collect.Actors.MonsterHitpointDecreaseCounter.LastValue, ValueFormat.LongNumber));
             * expressions.Add("*dmg-total", BasePlugin.ValueToString(Me.TotalDMG, ValueFormat.LongNumber));
             * expressions.Add("*dmg-total-party": { double t = 0); for (int i = 0) ; i < Collect.Players.Length); i++) t += Collect.Players[i].TotalDMG); S = BasePlugin.ValueToString(t, ValueFormat.LongNumber)); }
             * expressions.Add("*resist-lowest", Me.ResLowest.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*resist-physical", Me.ResPhysical.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*resist-cold", Me.ResCold.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*resist-fire", Me.ResFire.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*resist-lightning", Me.ResLightning.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*resist-poison", Me.ResPoison.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*resist-arcane", Me.ResArcane.ToString("F0", CultureInfo.InvariantCulture));
             * expressions.Add("*armor", Me.Armor.ToString("#,0", CultureInfo.InvariantCulture));
             * expressions.Add("*damred", (Me.drCombined * 100).ToString("F0", CultureInfo.InvariantCulture) + "%");
             * expressions.Add("*damred-elite", Math.Round(Me.DRElite * 100, 0).ToString("F0", CultureInfo.InvariantCulture) + "%");
             * expressions.Add("*damred-melee", Math.Round(Me.DRMelee * 100, 0).ToString("F0", CultureInfo.InvariantCulture) + "%");
             * expressions.Add("*damred-ranged", Math.Round(Me.DRRanged * 100, 0).ToString("F0", CultureInfo.InvariantCulture) + "%");
             */
        }
Exemple #3
0
        public override void Load(IController hud)
        {
            base.Load(hud);

            var expandedHintFont            = Hud.Render.CreateFont("tahoma", 7, 255, 200, 200, 200, true, false, true);
            var expandedHintWidthMultiplier = 3;

            LabelList = new HorizontalTopLabelList(hud);

            LabelList.LeftFunc = () =>
            {
                var ui = Hud.Render.GetUiElement("Root.NormalLayer.game_dialog_backgroundScreenPC.game_window_hud_overlay");
                return(ui.Rectangle.Left + ui.Rectangle.Width * 0.267f);
            };
            LabelList.TopFunc = () =>
            {
                var ui = Hud.Render.GetUiElement("Root.NormalLayer.game_dialog_backgroundScreenPC.game_window_hud_overlay");
                return(ui.Rectangle.Top + ui.Rectangle.Height * 0.318f);
            };
            LabelList.WidthFunc = () =>
            {
                var ui = Hud.Render.GetUiElement("Root.NormalLayer.game_dialog_backgroundScreenPC.game_window_hud_overlay");
                return(Hud.Window.Size.Height * 0.0621f);
            };
            LabelList.HeightFunc = () =>
            {
                var ui = Hud.Render.GetUiElement("Root.NormalLayer.game_dialog_backgroundScreenPC.game_window_hud_overlay");
                return(Hud.Window.Size.Height * 0.025f);
            };

            /// added  // value_format can be 'dyn', 'F0', 'F1'


            /* add Flying Dragon buff in exp bar
             *
             * Hud.RunOnPlugin<AttributeLabelListPlugin>(plugin =>
             * {
             *      var dpsDecorator = plugin.LabelList.LabelDecorators[2];
             *      dpsDecorator.TextFunc = () =>
             *      {
             * var dps = Hud.Game.Me.Offense.SheetDps * (Hud.Game.Me.Powers.BuffIsActive(246562, 1) ? 2 : 1);
             * return ValueToString(dps, ValueFormat.ShortNumber);
             * };
             * var apsDecorator = plugin.LabelList.LabelDecorators[3];
             * apsDecorator.TextFunc = () =>
             * {
             * var aps = Hud.Game.Me.Offense.AttackSpeed * (Hud.Game.Me.Powers.BuffIsActive(246562, 1) ? 2 : 1);
             * return aps.ToString("F2", System.Globalization.CultureInfo.InvariantCulture) + "/s";
             * };
             * });
             */

            // movement 1
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                BackgroundTextureOpacity2   = 0.70f,
                TextFunc                    = () => (Hud.Game.Me.Stats.MoveSpeed).ToString("F1", CultureInfo.InvariantCulture) + "%",
                HintFunc                    = () => "Move Speed Total",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    /* new TopLabelDecorator(Hud)
                     * {
                     *  TextFont = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                     *  ExpandedHintFont = expandedHintFont,
                     *  ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                     *                          BackgroundTexture1 = Hud.Texture.ButtonTextureGray,
                     *                          BackgroundTexture2 = Hud.Texture.BackgroundTextureBlue,
                     *  BackgroundTextureOpacity2 = 1.0f,
                     *                          TextFunc = () => (Hud.Game.Me.Stats.MoveSpeed - Hud.Game.Me.Stats.MoveSpeedBonus - 100).ToString("F1", CultureInfo.InvariantCulture) + "%",
                     *                          HintFunc = () => "Move Speed Base",
                     * }, */
                    /* new TopLabelDecorator(Hud)
                     * {
                     *  TextFont = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                     *  ExpandedHintFont = expandedHintFont,
                     *  ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                     *                          BackgroundTexture1 = Hud.Texture.ButtonTextureGray,
                     *                          BackgroundTexture2 = Hud.Texture.BackgroundTextureBlue,
                     *  BackgroundTextureOpacity2 = 1.0f,
                     *                          TextFunc = () => (Hud.Game.Me.Stats.MoveSpeedBonus + 100).ToString("F1", CultureInfo.InvariantCulture) + "%",
                     *                          HintFunc = () => "Move Speed Bonus",
                     * }, */
                }
            });

            // defense 2
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                BackgroundTextureOpacity2   = 0.70f,
                TextFunc                    = () => ValueToString(Hud.Game.Me.Defense.EhpCur, ValueFormat.ShortNumber),
                HintFunc                    = () => "EHP Current",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 1.0f,
                        TextFunc                    = () => ValueToString(Hud.Game.Me.Defense.EhpMax, ValueFormat.ShortNumber),
                        HintFunc                    = () => "EHP Max",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 1.0f,
                        TextFunc                    = () => Hud.Game.Me.Defense.ResAverage.ToString("#,0", CultureInfo.InvariantCulture),
                        HintFunc                    = () => "Average Resist",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 1.0f,
                        TextFunc                    = () => Hud.Game.Me.Defense.Armor.ToString("#,0", CultureInfo.InvariantCulture),
                        HintFunc                    = () => "Armor",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 1.0f,
                        TextFunc                    = () => (Hud.Game.Me.Defense.drCombined * 100).ToString("F1", CultureInfo.InvariantCulture),
                        HintFunc                    = () => "Damage Reduction",
                    },
                }
            });

            // ias 3
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureYellow,
                BackgroundTextureOpacity2   = 0.3f,
                // TextFunc = () => Hud.Game.Me.Offense.AttackSpeed.ToString("F2", CultureInfo.InvariantCulture) + "/s",
                //jack's edit to include Flying Dragon staff buff
                TextFunc = () =>
                {
                    var aps = Hud.Game.Me.Offense.AttackSpeed * (Hud.Game.Me.Powers.BuffIsActive(246562, 1) ? 2 : 1);
                    return(aps.ToString("F2", System.Globalization.CultureInfo.InvariantCulture) + "/s");
                },
                HintFunc       = () => "Attack Speed Per Sec",
                ExpandUpLabels = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureOrange,
                        BackgroundTextureOpacity2   = 0.75f,
                        // TextFunc = () => ValueToString(Hud.Game.Me.Offense.SheetDps, ValueFormat.ShortNumber),
                        //jack's edit to include Flying Dragon staff buff
                        TextFunc = () =>
                        {
                            var dps = Hud.Game.Me.Offense.SheetDps * (Hud.Game.Me.Powers.BuffIsActive(246562, 1) ? 2 : 1);
                            return(BasePlugin.ValueToString(dps, ValueFormat.ShortNumber));
                        },
                        HintFunc = () => "Sheet DPS",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureOrange,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => ValueToString(Hud.Game.Me.Offense.MainHandIsActive ? Hud.Game.Me.Offense.WeaponDamageMainHand : Hud.Game.Me.Offense.WeaponDamageSecondHand, ValueFormat.ShortNumber),
                        HintFunc                    = () => "Weapon Damage",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureYellow,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => Hud.Game.Me.Offense.AttackSpeedPets.ToString("F2", CultureInfo.InvariantCulture) + "/s",
                        HintFunc                    = () => "Pet Attack Speed Per Sec",
                    }
                }
            });

            // chc 4
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                BackgroundTextureOpacity2   = 0.3f,
                TextFunc                    = () => Hud.Game.Me.Offense.CriticalHitChance.ToString("F1", CultureInfo.InvariantCulture) + "%",
                HintFunc                    = () => "Crit Hit Chance",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => Hud.Game.Me.Offense.CritDamage.ToString("F0", CultureInfo.InvariantCulture) + "%",
                        HintFunc                    = () => "Crit Hit Damage",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 200, 200, 255, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => Hud.Game.Me.Offense.AreaDamageBonus.ToString("F0", CultureInfo.InvariantCulture) + "%",
                        HintFunc                    = () => "Area Damage Bonus",
                    }
                }
            });

            //////////////////////

            // dps 5
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureBlue,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                BackgroundTextureOpacity2   = 0.75f,
                TextFunc                    = () => ValueToString(Hud.Game.Me.Damage.CurrentDps, ValueFormat.LongNumber),
                HintFunc                    = () => "Current DPS",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureBlue,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => ValueToString(Hud.Game.Me.Damage.MaximumDps, ValueFormat.LongNumber),
                        HintFunc                    = () => "Maximum DPS",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureBlue,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => ValueToString(Hud.Game.Me.Damage.TotalDamage, ValueFormat.ShortNumber),
                        HintFunc                    = () => "Total Damage",
                    },
                }
            });

            // dps 6
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                  = Hud.Render.CreateFont("tahoma", 7, 230, 255, 255, 255, true, false, true),
                BackgroundTexture1        = Hud.Texture.ButtonTextureGray,
                BackgroundTexture2        = Hud.Texture.BackgroundTextureBlue,
                BackgroundTextureOpacity2 = 0.7f,
                TextFunc                  = () => ValueToString(Hud.Game.Me.Damage.RunDps, ValueFormat.LongNumber),
                HintFunc                  = () => "Average DPS",
            });

            //////////////////////

            // cdr 7
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 200, 200, 255, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureBlue,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                BackgroundTextureOpacity2   = 0.75f,
                TextFunc                    = () => (Hud.Game.Me.Stats.CooldownReduction * 100).ToString("F1", CultureInfo.InvariantCulture) + "%",
                HintFunc                    = () => "Cooldown Reduction",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureBlue,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureBlue,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => (Hud.Game.Me.Stats.ResourceCostReduction * 100).ToString("F1", CultureInfo.InvariantCulture) + "%",
                        HintFunc                    = () => "Resource Cost Reduction",
                    },
                }
            });

            // rcr 8
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                  = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                BackgroundTexture1        = Hud.Texture.ButtonTextureBlue,
                BackgroundTexture2        = Hud.Texture.BackgroundTextureBlue,
                BackgroundTextureOpacity2 = 0.75f,
                TextFunc                  = () => (Hud.Game.Me.Stats.ResourceCostReduction * 100).ToString("F1", CultureInfo.InvariantCulture) + "%",
                HintFunc                  = () => "Resource Cost Reduction",
            });

            // misc 9
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                BackgroundTextureOpacity2   = 0.75f,
                TextFunc                    = () => Hud.Game.Me.Stats.PickupRange.ToString("F0", CultureInfo.InvariantCulture),
                HintFunc                    = () => "Pickup Range",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, false, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => (Hud.Game.Me.Stats.GoldFind).ToString("#,0", CultureInfo.InvariantCulture) + "%",
                        HintFunc                    = () => "Gold Find",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureGray,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => (Hud.Game.Me.Stats.MagicFind).ToString("F0", CultureInfo.InvariantCulture) + "%",
                        HintFunc                    = () => "Magic Find",
                    },
                }
            });

            // exp 10
            LabelList.LabelDecorators.Add(new TopLabelDecorator(Hud)
            {
                TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, false, false, true),
                ExpandedHintFont            = expandedHintFont,
                ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                BackgroundTextureOpacity2   = 0.75f,
                TextFunc                    = () => ValueToString(Hud.Game.ExperiencePerHourToday, ValueFormat.ShortNumber) + "/h",
                HintFunc                    = () => "Exp Per Hour Today",
                ExpandUpLabels              = new List <TopLabelDecorator>()
                {
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => (Hud.Game.Me.Stats.ExperiencePercentBonus * 100).ToString("F0", CultureInfo.InvariantCulture) + "%",
                        HintFunc                    = () => "Bonus Exp",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => Hud.Game.Me.Stats.ExpOnKill.ToString("F0", CultureInfo.InvariantCulture),
                        HintFunc                    = () => "Exp On Kill",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => Hud.Game.Me.Stats.ExperienceOnKillBonus.ToString("F0", CultureInfo.InvariantCulture),
                        HintFunc                    = () => "Exp On Kill (Bonus)",
                    },
                    new TopLabelDecorator(Hud)
                    {
                        TextFont                    = Hud.Render.CreateFont("tahoma", 7, 230, 255, 200, 200, true, false, true),
                        ExpandedHintFont            = expandedHintFont,
                        ExpandedHintWidthMultiplier = expandedHintWidthMultiplier,
                        BackgroundTexture1          = Hud.Texture.ButtonTextureOrange,
                        BackgroundTexture2          = Hud.Texture.BackgroundTextureGreen,
                        BackgroundTextureOpacity2   = 0.75f,
                        TextFunc                    = () => Hud.Game.Me.Stats.ExpOnKillNoPenalty.ToString("F0", CultureInfo.InvariantCulture),
                        HintFunc                    = () => "Exp On Kill (No Penalty)",
                    },
                }
            });
        }