コード例 #1
0
        void updateAllRow()
        {
            List <CombatInfo> combatInfos = combatTracker.GetCombatInfos(CoreManager.Current.CharacterFilter.Name);

            int  killingBlows   = 0;
            int  damageReceived = 0;
            long damageGiven    = 0;

            foreach (CombatInfo combatInfo in combatInfos)
            {
                if (combatInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                {
                    killingBlows += combatInfo.KillingBlows;
                    damageGiven  += combatInfo.Damage;
                }
                else if (combatInfo.TargetName == CoreManager.Current.CharacterFilter.Name)
                {
                    damageReceived += combatInfo.Damage;
                }
            }

            if (killingBlows != 0)
            {
                ((HudStaticText)monsterList[1][2]).Text = Util.NumberFormatter(killingBlows, ("#,##0"), 99999);
            }
            if (damageReceived != 0)
            {
                ((HudStaticText)monsterList[1][3]).Text = Util.NumberFormatter(damageReceived, ("#,##0"), 9999999);
            }
            if (damageGiven != 0)
            {
                ((HudStaticText)monsterList[1][4]).Text = Util.NumberFormatter(damageGiven, ("#,##0"), 99999999);
            }
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name">name should be a target name, not the current players name.</param>
        void loadInfoForName(string name)
        {
            for (int i = 1; i <= 2; i++)
            {
                List <CombatInfo>   combatInfos;
                List <AetheriaInfo> aetheriaInfos;
                List <CloakInfo>    cloakInfos;

                if (i == 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(name);
                    aetheriaInfos = combatTracker.GetAetheriaInfos(name);
                    cloakInfos    = combatTracker.GetCloakInfos(name);
                }

                int  killingBlows   = 0;
                int  damageReceived = 0;
                long damageGiven    = 0;

                foreach (CombatInfo combatInfo in combatInfos)
                {
                    if (combatInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                    {
                        killingBlows += combatInfo.KillingBlows;
                    }
                    if (combatInfo.TargetName == CoreManager.Current.CharacterFilter.Name)
                    {
                        damageReceived += combatInfo.Damage;
                    }
                    if (combatInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                    {
                        damageGiven += combatInfo.Damage;
                    }
                }

                int targetRow = 0;

                if (i == 1)
                {
                    targetRow = 1;
                }
                else
                {
                    for (int row = 2; row < monsterList.RowCount; row++)
                    {
                        if (((HudStaticText)monsterList[row][1]).Text == name)
                        {
                            targetRow = row;
                            break;
                        }
                    }
                }

                if (targetRow != 0)
                {
                    if (killingBlows != 0)
                    {
                        ((HudStaticText)monsterList[targetRow][2]).Text = Util.NumberFormatter(killingBlows, ("#,##0"), 99999);
                    }
                    if (damageReceived != 0)
                    {
                        ((HudStaticText)monsterList[targetRow][3]).Text = Util.NumberFormatter(damageReceived, ("#,##0"), 9999999);
                    }
                    if (damageGiven != 0)
                    {
                        ((HudStaticText)monsterList[targetRow][4]).Text = Util.NumberFormatter(damageGiven, ("#,##0"), 99999999);
                    }

                    if (targetRow == selectedRow)
                    {
                        // 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;
                                    }

                                    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;
                        foreach (CombatInfo combatInfo in combatInfos)
                        {
                            if (combatInfo.SourceName == CoreManager.Current.CharacterFilter.Name)
                            {
                                totalAttacks  += combatInfo.TotalAttacks;
                                failedAttacks += combatInfo.FailedAttacks;
                            }
                        }
                        combatTrackerGUIInfo.SetAttacks(totalAttacks, ((totalAttacks - failedAttacks) / (float)totalAttacks) * 100);

                        // Evades
                        int totalMeleeDefends = 0;
                        int totalEvades       = 0;
                        foreach (CombatInfo combatInfo in combatInfos)
                        {
                            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;
                                    }
                                }
                            }
                        }
                        combatTrackerGUIInfo.SetEvades(totalMeleeDefends, (totalEvades / (float)totalMeleeDefends) * 100);

                        // Resists
                        int totalMagicDefends = 0;
                        int totalResists      = 0;
                        foreach (CombatInfo combatInfo in combatInfos)
                        {
                            if (combatInfo.TargetName == CoreManager.Current.CharacterFilter.Name)
                            {
                                foreach (KeyValuePair <AttackType, CombatInfo.DamageByAttackType> damageByAttackType in combatInfo.DamageByAttackTypes)
                                {
                                    if (damageByAttackType.Key == AttackType.Magic)
                                    {
                                        totalMagicDefends += damageByAttackType.Value.TotalAttacks;
                                        totalResists      += damageByAttackType.Value.FailedAttacks;
                                    }
                                }
                            }
                        }
                        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;
                        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;
                                }
                            }
                        }

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