private void updateCombatTrackerGUIInfo()
        {
            List <CombatInfo>   combatInfos;
            List <AetheriaInfo> aetheriaInfos;
            List <CloakInfo>    cloakInfos;

            if (selectedRow == 1)
            {
                combatInfos   = combatTracker.GetCombatInfos(CoreManager.Current.CharacterFilter.Name);
                aetheriaInfos = combatTracker.GetAetheriaInfos(CoreManager.Current.CharacterFilter.Name);
                cloakInfos    = combatTracker.GetCloakInfos(CoreManager.Current.CharacterFilter.Name);
            }
            else
            {
                combatInfos   = combatTracker.GetCombatInfos(((HudStaticText)monsterList[selectedRow][1]).Text);
                aetheriaInfos = combatTracker.GetAetheriaInfos(((HudStaticText)monsterList[selectedRow][1]).Text);
                cloakInfos    = combatTracker.GetCloakInfos(((HudStaticText)monsterList[selectedRow][1]).Text);
            }

            if (combatInfos == null || aetheriaInfos == null || cloakInfos == null)
            {
                combatTrackerGUIInfo.Clear();
                return;
            }

            // Add up our damage received totals for each type vs element
            // This is ugly but I just wanted to get it done quickly
            int typelessMeleeMissile = 0;
            int typelessMagic        = 0;
            int slashMeleeMissile    = 0;
            int slashMagic           = 0;
            int pierceMeleeMissile   = 0;
            int pierceMagic          = 0;
            int bludgeMeleeMissile   = 0;
            int bludgeMagic          = 0;
            int fireMeleeMissile     = 0;
            int fireMagic            = 0;
            int coldMeleeMissile     = 0;
            int coldMagic            = 0;
            int acidMeleeMissile     = 0;
            int acidMagic            = 0;
            int electricMeleeMissile = 0;
            int electricMagic        = 0;

            int totalMeleeMissile = 0;
            int totalMagic        = 0;

            foreach (CombatInfo combatInfo in combatInfos)
            {
                // We only add up damage received here, which means the player was the target
                if (combatInfo.TargetName != CoreManager.Current.CharacterFilter.Name)
                {
                    continue;
                }

                foreach (KeyValuePair <AttackType, CombatInfo.DamageByAttackType> damageByAttackType in combatInfo.DamageByAttackTypes)
                {
                    foreach (KeyValuePair <DamageElement, CombatInfo.DamageByAttackType.DamageByElement> damageByElement in damageByAttackType.Value.DamageByElements)
                    {
                        if (damageByAttackType.Key == AttackType.MeleeMissle)
                        {
                            if (damageByElement.Key == DamageElement.Typeless)
                            {
                                typelessMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Slash)
                            {
                                slashMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Pierce)
                            {
                                pierceMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Bludge)
                            {
                                bludgeMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Fire)
                            {
                                fireMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Cold)
                            {
                                coldMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Acid)
                            {
                                acidMeleeMissile += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Electric)
                            {
                                electricMeleeMissile += damageByElement.Value.Damage;
                            }

                            totalMeleeMissile += damageByElement.Value.Damage;
                        }
                        else if (damageByAttackType.Key == AttackType.Magic)
                        {
                            if (damageByElement.Key == DamageElement.Typeless)
                            {
                                typelessMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Slash)
                            {
                                slashMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Pierce)
                            {
                                pierceMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Bludge)
                            {
                                bludgeMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Fire)
                            {
                                fireMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Cold)
                            {
                                coldMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Acid)
                            {
                                acidMagic += damageByElement.Value.Damage;
                            }
                            if (damageByElement.Key == DamageElement.Electric)
                            {
                                electricMagic += damageByElement.Value.Damage;
                            }

                            totalMagic += damageByElement.Value.Damage;
                        }
                    }
                }
            }

            combatTrackerGUIInfo.TypelessMeleeMissile = typelessMeleeMissile;
            combatTrackerGUIInfo.TypelessMeleeMissile = typelessMagic;
            combatTrackerGUIInfo.SlashMeleeMissile    = slashMeleeMissile;
            combatTrackerGUIInfo.SlashMagic           = slashMagic;
            combatTrackerGUIInfo.PierceMeleeMissile   = pierceMeleeMissile;
            combatTrackerGUIInfo.PierceMagic          = pierceMagic;
            combatTrackerGUIInfo.BludgeMeleeMissile   = bludgeMeleeMissile;
            combatTrackerGUIInfo.BludgeMagic          = bludgeMagic;
            combatTrackerGUIInfo.FireMeleeMissile     = fireMeleeMissile;
            combatTrackerGUIInfo.FireMagic            = fireMagic;
            combatTrackerGUIInfo.ColdMeleeMissile     = coldMeleeMissile;
            combatTrackerGUIInfo.ColdMagic            = coldMagic;
            combatTrackerGUIInfo.AcidMeleeMissile     = acidMeleeMissile;
            combatTrackerGUIInfo.AcidMagic            = acidMagic;
            combatTrackerGUIInfo.ElectricMeleeMissile = electricMeleeMissile;
            combatTrackerGUIInfo.ElectricMagic        = electricMagic;

            combatTrackerGUIInfo.TotalMeleeMissile = totalMeleeMissile;
            combatTrackerGUIInfo.TotalMagic        = totalMagic;


            // Attacks
            int totalAttacks  = 0;
            int failedAttacks = 0;
            // Evades
            int totalMeleeDefends = 0;
            int totalEvades       = 0;
            // Resists
            int totalMagicDefends = 0;
            int totalResists      = 0;

            foreach (CombatInfo combatInfo in combatInfos)
            {
                if (combatInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                {
                    totalAttacks  += combatInfo.TotalAttacks;
                    failedAttacks += combatInfo.FailedAttacks;
                }
                else if (combatInfo.TargetName == CoreManager.Current.CharacterFilter.Name)
                {
                    foreach (KeyValuePair <AttackType, CombatInfo.DamageByAttackType> damageByAttackType in combatInfo.DamageByAttackTypes)
                    {
                        if (damageByAttackType.Key == AttackType.MeleeMissle)
                        {
                            totalMeleeDefends += damageByAttackType.Value.TotalAttacks;
                            totalEvades       += damageByAttackType.Value.FailedAttacks;
                        }
                        else if (damageByAttackType.Key == AttackType.Magic)
                        {
                            totalMagicDefends += damageByAttackType.Value.TotalAttacks;
                            totalResists      += damageByAttackType.Value.FailedAttacks;
                        }
                    }
                }
            }

            combatTrackerGUIInfo.SetAttacks(totalAttacks, ((totalAttacks - failedAttacks) / (float)totalAttacks) * 100);
            combatTrackerGUIInfo.SetEvades(totalMeleeDefends, (totalEvades / (float)totalMeleeDefends) * 100);
            combatTrackerGUIInfo.SetResists(totalMagicDefends, (totalResists / (float)totalMagicDefends) * 100);

            // Aetheria Surges
            int aetheriaSurges = 0;

            foreach (AetheriaInfo aetheriaInfo in aetheriaInfos)
            {
                if (aetheriaInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                {
                    aetheriaSurges += aetheriaInfo.TotalSurges;
                }
            }
            // Aetheria proc % is calc'd against total offensive attacks (hit or miss).
            combatTrackerGUIInfo.SetAetheriaSurges(aetheriaSurges, (aetheriaSurges / (float)totalAttacks) * 100);

            // Cloak Surges
            int cloakSurges = 0;

            foreach (CloakInfo cloakInfo in cloakInfos)
            {
                if (cloakInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                {
                    cloakSurges += cloakInfo.TotalSurges;
                }
            }
            // Cloaks proc % is calc'd against all received attacks (only hits).
            combatTrackerGUIInfo.SetCloakSurges(cloakSurges, cloakSurges / (float)((totalMeleeDefends - totalEvades) + (totalMagicDefends - totalResists)) * 100);


            // Normal Avg/Max
            // Crits/%
            // Crit Avg/Max
            long totalNormalDamage = 0;
            int  maxNormalDamage   = 0;
            int  crits             = 0;
            long totalCritDamage   = 0;
            int  maxCritDamage     = 0;

            int  killingBlows = 0;
            long damageGiven  = 0;

            foreach (CombatInfo combatInfo in combatInfos)
            {
                if (combatInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                {
                    totalNormalDamage += combatInfo.TotalNormalDamage;
                    if (maxNormalDamage < combatInfo.MaxNormalDamage)
                    {
                        maxNormalDamage = combatInfo.MaxNormalDamage;
                    }

                    crits += combatInfo.Crits;

                    totalCritDamage += combatInfo.TotalCritDamage;
                    if (maxCritDamage < combatInfo.MaxCritDamage)
                    {
                        maxCritDamage = combatInfo.MaxCritDamage;
                    }

                    killingBlows += combatInfo.KillingBlows;
                    damageGiven  += combatInfo.Damage;
                }
            }

            if (totalAttacks - failedAttacks - crits - killingBlows != 0)
            {
                combatTrackerGUIInfo.SetAvgMax((int)(totalNormalDamage / (totalAttacks - failedAttacks - crits - killingBlows)), maxNormalDamage);
            }
            if (totalAttacks - failedAttacks - killingBlows != 0)
            {
                combatTrackerGUIInfo.SetCrits(crits, (crits / (float)(totalAttacks - failedAttacks - killingBlows)) * 100);
            }
            if (crits != 0)
            {
                combatTrackerGUIInfo.SetCritsAvgMax((int)(totalCritDamage / crits), maxCritDamage);
            }


            // Damage Total
            combatTrackerGUIInfo.TotalDamage = damageGiven;
        }