Ejemplo n.º 1
0
        private void UpdateItemsSummary(D3Calculator d3Calculator)
        {
            var attr = d3Calculator.HeroStatsItem.AttributesRaw;

            PopulateCalculatedData(guiItemsDexterity, attr.dexterityItem);
            PopulateCalculatedData(guiItemsIntelligence, attr.intelligenceItem);
            PopulateCalculatedData(guiItemsStrength, attr.strengthItem);
            PopulateCalculatedData(guiItemsVitality, attr.vitalityItem);

            PopulateCalculatedDataPercent(guiItemsCriticChance, attr.critPercentBonusCapped);
            PopulateCalculatedDataPercent(guiItemsSpeedAttack, attr.attacksPerSecondPercent);
            PopulateCalculatedDataPercent(guiItemsCriticDamage, attr.critDamagePercent);
            PopulateCalculatedDataPercent(guiItemsLifePercent, attr.hitpointsMaxPercentBonusItem);
            PopulateCalculatedData(guiItemsLifeOnHit, attr.hitpointsOnHit);
            PopulateCalculatedData(guiItemsLifePerSecond, attr.hitpointsRegenPerSecond);
            PopulateCalculatedDataPercent(guiItemsLifeSteal, attr.stealHealthPercent);

            PopulateCalculatedData(guiItemsResistance_All, attr.resistance_All);
            PopulateCalculatedData(guiItemsResistance_Arcane, attr.resistance_Arcane);
            PopulateCalculatedData(guiItemsResistance_Cold, attr.resistance_Cold);
            PopulateCalculatedData(guiItemsResistance_Fire, attr.resistance_Fire);
            PopulateCalculatedData(guiItemsResistance_Lightning, attr.resistance_Lightning);
            PopulateCalculatedData(guiItemsResistance_Physical, attr.resistance_Physical);
            PopulateCalculatedData(guiItemsResistance_Poison, attr.resistance_Poison);
        }
Ejemplo n.º 2
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes {
                attacksPerSecondPercent = multiplier * calculator.GetActualAttackSpeed()
            };

            return(attr);
        }
Ejemplo n.º 3
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes { armorBonusItem = 0.25 * calculator.GetHeroArmor() };

            attr += new ThornsMultiplier(multiplier).GetBonus(calculator);

            return attr;
        }
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes {
                armorBonusItem = multiplier * calculator.GetHeroArmor()
            };

            return(attr);
        }
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes { hitpointsRegenPerSecond = new ItemValueRange(620) };

            attr += (new ResistancesMultiplier(multiplier)).GetBonus(calculator);

            return attr;
        }
Ejemplo n.º 6
0
        private void GuiDoCalculationsForFollower()
        {
            // Retrieve follower from the GUI
            var follower = GetEditedFollower();

            // Retrieve worn items from the GUI
            var items = new List <Item>
            {
                guiItemChoiceSpecial.Tag as Item,
                guiItemChoiceLeftFinger.Tag as Item,
                guiItemChoiceNeck.Tag as Item,
                guiItemChoiceRightFinger.Tag as Item,
                guiSetBonusEditor.GetEditedItem()
            };

            items = items.Where(i => i != null)
                    .Select(i => i.DeepClone())
                    .ToList();

            var mainHand = (guiItemChoiceMainHand.Tag as Item).DeepClone();

            var offHand = (guiItemChoiceOffHand.Tag as Item).DeepClone();

            var heroClass = (HeroClass)Enum.Parse(typeof(HeroClass), (String)(guiHeroClass.SelectedItem));

            var d3Calculator = new D3Calculator(follower, heroClass, mainHand, offHand, items.ToArray());

            // Retrieve used skills from the GUI
            var passiveSkills = new List <ID3SkillModifier>();

            // Some buffs are applied after passives skills: followers skills and active skills
            var activeSkills = new List <ID3SkillModifier>();

            // Followers
            if (guiSkillAnatomy.Checked)
            {
                activeSkills.Add(new Anatomy());
            }
            if (guiSkillFocusedMind.Checked)
            {
                activeSkills.Add(new FocusedMind());
            }
            if (guiSkillPoweredArmor.Checked)
            {
                activeSkills.Add(new PoweredArmor());
            }

            calculatedDps = d3Calculator.GetHeroDps(passiveSkills, activeSkills);

            guiCalculatedDPS.Text = calculatedDps.Min.ToString();

            UpdateItemsSummary(d3Calculator);

            UpdateCalculationResults(d3Calculator);

            DoActionOnCalculatedControls(UpdateResultControlColor);
        }
Ejemplo n.º 7
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes
            {
                armorBonusItem          = 0.20 * calculator.GetHeroArmor(),
                hitpointsRegenPerSecond = new ItemValueRange(620)
            };

            return(attr);
        }
Ejemplo n.º 8
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes {
                hitpointsRegenPerSecond = new ItemValueRange(620)
            };

            attr += (new ResistancesMultiplier(multiplier)).GetBonus(calculator);

            return(attr);
        }
Ejemplo n.º 9
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new DamageMultiplier(multiplier).GetBonus(calculator);

            attr.armorBonusItem = malusMultiplier * calculator.GetHeroArmor();

            attr += new ResistancesMultiplier(malusMultiplier).GetBonus(calculator);

            return(attr);
        }
Ejemplo n.º 10
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes {
                armorBonusItem = 0.25 * calculator.GetHeroArmor()
            };

            attr += new ThornsMultiplier(multiplier).GetBonus(calculator);

            return(attr);
        }
Ejemplo n.º 11
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes
            {
                armorBonusItem = 0.20 * calculator.GetHeroArmor(),
                hitpointsRegenPerSecond = new ItemValueRange(620)
            };

            return attr;
        }
Ejemplo n.º 12
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new DamageMultiplier(0.10).GetBonus(calculator);

            attr.armorBonusItem = 0.20 * calculator.GetHeroArmor();

            attr += new ResistancesMultiplier(0.20).GetBonus(calculator);

            return attr;
        }
Ejemplo n.º 13
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes
            {
                hitpointsMaxPercentBonusItem = new ItemValueRange(0.10),
                armorBonusItem = multiplier * calculator.GetHeroArmor()
            };

            attr += (new ResistancesMultiplier(multiplier)).GetBonus(calculator);

            return attr;
        }
Ejemplo n.º 14
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var stuff = calculator.HeroStatsItem.AttributesRaw;
            var attr = new ItemAttributes();

            if (stuff.critPercentBonusCapped != null)
                attr.critPercentBonusCapped = ItemValueRange.One - stuff.critPercentBonusCapped;
            else
                attr.critPercentBonusCapped = ItemValueRange.One;

            return attr;
        }
Ejemplo n.º 15
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes
            {
                hitpointsMaxPercentBonusItem = new ItemValueRange(0.10),
                armorBonusItem = multiplier * calculator.GetHeroArmor()
            };

            attr += (new ResistancesMultiplier(multiplier)).GetBonus(calculator);

            return(attr);
        }
Ejemplo n.º 16
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     switch (calculator.HeroStatsItem.MainHand.Type.Id)
     {
         case "Bow":
             return getBonus_Bow(calculator);
         case "Crossbow":
             return getBonus_Crossbow();
         case "HandCrossbow":
             return getBonus_HandCrossbow();
         default:
             return new ItemAttributes();
     }
 }
Ejemplo n.º 17
0
        private void GuiDoCalculationsForFollower()
        {
            // Retrieve follower from the GUI
            var follower = GetEditedFollower();

            // Retrieve worn items from the GUI
            var items = new List <Item>
            {
                guiSpecialEditor.GetEditedItem(),
                guiLeftFingerEditor.GetEditedItem(),
                guiNeckEditor.GetEditedItem(),
                guiRightFingerEditor.GetEditedItem(),
                guiSetBonusEditor.GetEditedItem()
            };

            var mainHand = guiMainHandEditor.GetEditedItem();

            var offHand = guiOffHandEditor.GetEditedItem();

            var heroClass = (HeroClass)Enum.Parse(typeof(HeroClass), (String)(guiHeroClass.SelectedItem));

            var d3Calculator = new D3Calculator(follower, heroClass, mainHand, offHand, items.ToArray());

            // Retrieve used skills from the GUI
            var passiveSkills = new List <ID3SkillModifier>();

            // Some buffs are applied after passives skills: followers skills and active skills
            var activeSkills = new List <ID3SkillModifier>();

            // Followers
            if (guiSkillAnatomy.Checked)
            {
                activeSkills.Add(new Anatomy());
            }
            if (guiSkillFocusedMind.Checked)
            {
                activeSkills.Add(new FocusedMind());
            }
            if (guiSkillPoweredArmor.Checked)
            {
                activeSkills.Add(new PoweredArmor());
            }

            guiCalculatedDPS.Text = d3Calculator.GetHeroDps(passiveSkills, activeSkills).Min.ToString();

            UpdateItemsSummary(d3Calculator);

            UpdateCalculationResults(d3Calculator);
        }
Ejemplo n.º 18
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            Item stuff = calculator.HeroStatsItem;
            var attr = new ItemAttributes
            {
                resistance_All = multiplier*stuff.AttributesRaw.resistance_All,
                resistance_Arcane = multiplier*stuff.AttributesRaw.resistance_Arcane,
                resistance_Cold = multiplier*stuff.AttributesRaw.resistance_Cold,
                resistance_Fire = multiplier*stuff.AttributesRaw.resistance_Fire,
                resistance_Lightning = multiplier*stuff.AttributesRaw.resistance_Lightning,
                resistance_Physical = multiplier*stuff.AttributesRaw.resistance_Physical,
                resistance_Poison = multiplier*stuff.AttributesRaw.resistance_Poison
            };

            return attr;
        }
Ejemplo n.º 19
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            Item stuff = calculator.HeroStatsItem;
            var attr = new ItemAttributes();

            foreach (var resist in damageResists)
            {
                foreach (var damage in damagePrefixes)
                {
                    var value = stuff.GetAttributeByName(damage + resist);
                    attr.SetAttributeByName(damage + resist, multiplier * value);
                }
            }

            return attr;
        }
Ejemplo n.º 20
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var stuff = calculator.HeroStatsItem.AttributesRaw;
            var attr  = new ItemAttributes
            {
                resistance_All = 0.40 *
                                 (stuff.resistance_Arcane
                                  + stuff.resistance_Cold
                                  + stuff.resistance_Fire
                                  + stuff.resistance_Lightning
                                  + stuff.resistance_Physical
                                  + stuff.resistance_Poison)
            };

            return(attr);
        }
Ejemplo n.º 21
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            Item stuff = calculator.HeroStatsItem;
            var  attr  = new ItemAttributes
            {
                resistance_All       = multiplier * stuff.AttributesRaw.resistance_All,
                resistance_Arcane    = multiplier * stuff.AttributesRaw.resistance_Arcane,
                resistance_Cold      = multiplier * stuff.AttributesRaw.resistance_Cold,
                resistance_Fire      = multiplier * stuff.AttributesRaw.resistance_Fire,
                resistance_Lightning = multiplier * stuff.AttributesRaw.resistance_Lightning,
                resistance_Physical  = multiplier * stuff.AttributesRaw.resistance_Physical,
                resistance_Poison    = multiplier * stuff.AttributesRaw.resistance_Poison
            };

            return(attr);
        }
Ejemplo n.º 22
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var stuff = calculator.HeroStatsItem.AttributesRaw;
            var attr = new ItemAttributes
            {
                resistance_All = 0.40 *
                                 (stuff.resistance_Arcane
                                  + stuff.resistance_Cold
                                  + stuff.resistance_Fire
                                  + stuff.resistance_Lightning
                                  + stuff.resistance_Physical
                                  + stuff.resistance_Poison)
            };

            return attr;
        }
Ejemplo n.º 23
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            Item stuff = calculator.HeroStatsItem;
            var  attr  = new ItemAttributes();

            foreach (var resist in damageResists)
            {
                foreach (var thorns in thornsPrefixes)
                {
                    var value = stuff.GetAttributeByName(thorns + resist);
                    attr.SetAttributeByName(thorns + resist, multiplier * value);
                }
            }

            return(attr);
        }
Ejemplo n.º 24
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var stuff = calculator.HeroStatsItem.AttributesRaw;
            var attr  = new ItemAttributes();

            if (stuff.critPercentBonusCapped != null)
            {
                attr.critPercentBonusCapped = ItemValueRange.One - stuff.critPercentBonusCapped;
            }
            else
            {
                attr.critPercentBonusCapped = ItemValueRange.One;
            }

            return(attr);
        }
Ejemplo n.º 25
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            switch (calculator.HeroStatsItem.MainHand.Type.id)
            {
            case "Bow":
                return(getBonus_Bow(calculator));

            case "Crossbow":
                return(getBonus_Crossbow());

            case "HandCrossbow":
                return(getBonus_HandCrossbow());

            default:
                return(new ItemAttributes());
            }
        }
Ejemplo n.º 26
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var stuff = calculator.HeroStatsItem.AttributesRaw;
            var attr = new ItemAttributes();

            double maxResist = 0;

            var resistanceArcane = calculator.GetHeroResistance("Arcane").Min;
            if (resistanceArcane > maxResist) maxResist = resistanceArcane;

            var resistanceCold = calculator.GetHeroResistance("Cold").Min;
            if (resistanceCold > maxResist) maxResist = resistanceCold;

            var resistanceFire = calculator.GetHeroResistance("Fire").Min;
            if (resistanceFire > maxResist) maxResist = resistanceFire;

            var resistanceLightning = calculator.GetHeroResistance("Lightning").Min;
            if (resistanceLightning > maxResist) maxResist = resistanceLightning;

            var resistancePhysical = calculator.GetHeroResistance("Physical").Min;
            if (resistancePhysical > maxResist) maxResist = resistancePhysical;

            var resistancePoison = calculator.GetHeroResistance("Poison").Min;
            if (resistancePoison > maxResist) maxResist = resistancePoison;

            if (stuff.resistance_Arcane != null)
                attr.resistance_Arcane = ItemValueRange.Zero - stuff.resistance_Arcane;
            if (stuff.resistance_Cold != null)
                attr.resistance_Cold = ItemValueRange.Zero - stuff.resistance_Cold;
            if (stuff.resistance_Fire != null)
                attr.resistance_Fire = ItemValueRange.Zero - stuff.resistance_Fire;
            if (stuff.resistance_Lightning != null)
                attr.resistance_Lightning = ItemValueRange.Zero - stuff.resistance_Lightning;
            if (stuff.resistance_Physical != null)
                attr.resistance_Physical = ItemValueRange.Zero - stuff.resistance_Physical;
            if (stuff.resistance_Poison != null)
                attr.resistance_Poison = ItemValueRange.Zero - stuff.resistance_Poison;
            if (stuff.resistance_All != null)
                attr.resistance_All = new ItemValueRange(maxResist - calculator.getHeroResistance_All());

            return attr;
        }
Ejemplo n.º 27
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     switch (calculator.HeroStatsItem.MainHand.Type.id)
     {
         case "Sword":
         case "Sword2H":
         case "Dagger":
             return getBonus_SwordDagger(calculator);
         case "Axe":
         case "Axe2H":
         case "Mace":
         case "Mace2H":
             return getBonus_MaceAxe();
         case "Polearm":
         case "Spear":
             return getBonus_PolearmSpear();
         default:
             return new ItemAttributes();
     }
 }
Ejemplo n.º 28
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            switch (calculator.HeroStatsItem.MainHand.Type.Id)
            {
            case "Sword":
            case "Sword2H":
            case "Dagger":
                return(getBonus_SwordDagger(calculator));

            case "Axe":
            case "Axe2H":
            case "Mace":
            case "Mace2H":
                return(getBonus_MaceAxe());

            case "Polearm":
            case "Spear":
                return(getBonus_PolearmSpear());

            default:
                return(new ItemAttributes());
            }
        }
Ejemplo n.º 29
0
        private void UpdateCalculationResults(D3Calculator d3Calculator)
        {
            var attr = d3Calculator.HeroStatsItem.AttributesRaw;

            guiCalculatedAttackPerSecond.Text = d3Calculator.GetActualAttackSpeed().Min.ToString();
            PopulateCalculatedData(guiCalcultatedDamageMin, d3Calculator.HeroStatsItem.GetWeaponDamageMin() * d3Calculator.GetDamageMultiplierNormal());
            PopulateCalculatedData(guiCalcultatedDamageMax, d3Calculator.HeroStatsItem.GetWeaponDamageMax() * d3Calculator.GetDamageMultiplierNormal());
            PopulateCalculatedData(guiCalcultatedDamageCriticMin, d3Calculator.HeroStatsItem.GetWeaponDamageMin() * d3Calculator.GetDamageMultiplierCritic());
            PopulateCalculatedData(guiCalcultatedDamageCriticMax, d3Calculator.HeroStatsItem.GetWeaponDamageMax() * d3Calculator.GetDamageMultiplierCritic());
            PopulateCalculatedData(guiCalculatedHitpoints, d3Calculator.GetHeroHitpoints());
            guiCalculatedDodge.Text = d3Calculator.GetHeroDodge().ToString();

            PopulateCalculatedData(guiCalculatedArmor, d3Calculator.GetHeroArmor());
            PopulateCalculatedData(guiCalculatedResistance_Arcane, d3Calculator.GetHeroResistance("Arcane"));
            PopulateCalculatedData(guiCalculatedResistance_Cold, d3Calculator.GetHeroResistance("Cold"));
            PopulateCalculatedData(guiCalculatedResistance_Fire, d3Calculator.GetHeroResistance("Fire"));
            PopulateCalculatedData(guiCalculatedResistance_Lightning, d3Calculator.GetHeroResistance("Lightning"));
            PopulateCalculatedData(guiCalculatedResistance_Physical, d3Calculator.GetHeroResistance("Physical"));
            PopulateCalculatedData(guiCalculatedResistance_Poison, d3Calculator.GetHeroResistance("Poison"));
            PopulateCalculatedData(guiCalculatedResistance_All, d3Calculator.getHeroResistance_All());

            guiCalculatedDamageReduction_Armor.Text     = (100 * d3Calculator.GetHeroDamageReduction_Armor(heroLevel)).ToString();
            guiCalculatedDamageReduction_Arcane.Text    = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Arcane")).ToString();
            guiCalculatedDamageReduction_Cold.Text      = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Cold")).ToString();
            guiCalculatedDamageReduction_Fire.Text      = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Fire")).ToString();
            guiCalculatedDamageReduction_Lightning.Text = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Lightning")).ToString();
            guiCalculatedDamageReduction_Physical.Text  = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Physical")).ToString();
            guiCalculatedDamageReduction_Poison.Text    = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Poison")).ToString();

            PopulateCalculatedData(guiCalculatedBlockChance, attr.blockChanceItem);
            PopulateCalculatedData(guiCalculatedBlockMin, attr.blockAmountItemMin);
            PopulateCalculatedData(guiCalculatedBlockMax, attr.blockAmountItemMin + attr.blockAmountItemDelta);

            guiCalculatedEffectiveHitpoints.Text = Math.Round(d3Calculator.GetHeroEffectiveHitpoints(heroLevel)).ToString();
            guiCalculatedDPSEHPRatio.Text        = Math.Round(d3Calculator.GetHeroDps().Min *d3Calculator.GetHeroEffectiveHitpoints(heroLevel) / 1000000).ToString();
        }
Ejemplo n.º 30
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new ItemAttributes {
         critPercentBonusCapped = new ItemValueRange(0.05)
     });
 }
Ejemplo n.º 31
0
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var stuff = calculator.HeroStatsItem.AttributesRaw;
            var attr  = new ItemAttributes();

            double maxResist = 0;

            var resistanceArcane = calculator.GetHeroResistance("Arcane").Min;

            if (resistanceArcane > maxResist)
            {
                maxResist = resistanceArcane;
            }

            var resistanceCold = calculator.GetHeroResistance("Cold").Min;

            if (resistanceCold > maxResist)
            {
                maxResist = resistanceCold;
            }

            var resistanceFire = calculator.GetHeroResistance("Fire").Min;

            if (resistanceFire > maxResist)
            {
                maxResist = resistanceFire;
            }

            var resistanceLightning = calculator.GetHeroResistance("Lightning").Min;

            if (resistanceLightning > maxResist)
            {
                maxResist = resistanceLightning;
            }

            var resistancePhysical = calculator.GetHeroResistance("Physical").Min;

            if (resistancePhysical > maxResist)
            {
                maxResist = resistancePhysical;
            }

            var resistancePoison = calculator.GetHeroResistance("Poison").Min;

            if (resistancePoison > maxResist)
            {
                maxResist = resistancePoison;
            }

            if (stuff.resistance_Arcane != null)
            {
                attr.resistance_Arcane = ItemValueRange.Zero - stuff.resistance_Arcane;
            }
            if (stuff.resistance_Cold != null)
            {
                attr.resistance_Cold = ItemValueRange.Zero - stuff.resistance_Cold;
            }
            if (stuff.resistance_Fire != null)
            {
                attr.resistance_Fire = ItemValueRange.Zero - stuff.resistance_Fire;
            }
            if (stuff.resistance_Lightning != null)
            {
                attr.resistance_Lightning = ItemValueRange.Zero - stuff.resistance_Lightning;
            }
            if (stuff.resistance_Physical != null)
            {
                attr.resistance_Physical = ItemValueRange.Zero - stuff.resistance_Physical;
            }
            if (stuff.resistance_Poison != null)
            {
                attr.resistance_Poison = ItemValueRange.Zero - stuff.resistance_Poison;
            }
            if (stuff.resistance_All != null)
            {
                attr.resistance_All = new ItemValueRange(maxResist - calculator.getHeroResistance_All());
            }

            return(attr);
        }
Ejemplo n.º 32
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { hitpointsRegenPerSecond = new ItemValueRange(620) };
 }
Ejemplo n.º 33
0
 static ItemAttributes getBonus_SwordDagger(D3Calculator calculator)
 {
     return new DamageMultiplier(0.15).GetBonus(calculator);
 }
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes { attacksPerSecondPercent = multiplier * calculator.GetActualAttackSpeed() };

            return attr;
        }
Ejemplo n.º 35
0
        private void GuiDoCalculationsForHero()
        {
            // Retrieve hero from the GUI
            var hero = GetEditedHero();

            heroLevel = hero.Level;

            // Retrieve worn items from the GUI
            var items = new List <Item>
            {
                guiItemChoiceBracers.Tag as Item,
                guiItemChoiceFeet.Tag as Item,
                guiItemChoiceHands.Tag as Item,
                guiItemChoiceHead.Tag as Item,
                guiItemChoiceLeftFinger.Tag as Item,
                guiItemChoiceLegs.Tag as Item,
                guiItemChoiceNeck.Tag as Item,
                guiItemChoiceRightFinger.Tag as Item,
                guiItemChoiceShoulders.Tag as Item,
                guiItemChoiceTorso.Tag as Item,
                guiItemChoiceWaist.Tag as Item,
                guiSetBonusEditor.GetEditedItem()
            };

            items = items.Where(i => i != null)
                    .Select(i => i.DeepClone())
                    .ToList();

            var mainHand = (guiItemChoiceMainHand.Tag as Item).DeepClone();

            var offHand = (guiItemChoiceOffHand.Tag as Item).DeepClone();

            var d3Calculator = new D3Calculator(hero, mainHand, offHand, items.ToArray());

            // Retrieve used skills from the GUI
            var passiveSkills = passiveCheckBoxes
                                .Where(p => p.Checked)
                                .Select(checkBox => PassiveSkillModifierFactory.GetFromSlug(checkBox.Tag as string))
                                .ToList();

            // Some buffs are applied after passives skills: followers skills and active skills
            var activeSkills = new List <ID3SkillModifier>();

            // Barbarian active skills
            AddActiveSkillIfChecked(activeSkills, guiSkillWarCry_Invigorate, typeof(WarCry_Invigorate));

            // Demon Hunter active skills
            AddActiveSkillIfChecked(activeSkills, guiSkillCompanion_BoarCompanion, typeof(Companion_BoarCompanion));

            // Monk active skills
            AddActiveSkillIfChecked(activeSkills, guiSkillMantraOfHealing_TimeOfNeed, typeof(MantraOfHealing_TimeOfNeed));
            AddActiveSkillIfChecked(activeSkills, guiSkillMantraOfEvasion_HardTarget, typeof(MantraOfEvasion_HardTarget));
            AddActiveSkillIfChecked(activeSkills, guiSkillMantraOfRetribution_Transgression, typeof(MantraOfRetribution_Transgression));
            AddActiveSkillIfChecked(activeSkills, guiSkillMysticAlly_EarthAlly, typeof(MysticAlly_EarthAlly));
            AddActiveSkillIfChecked(activeSkills, guiSkillMysticAlly_FireAlly, typeof(MysticAlly_FireAlly));

            // Witch Doctor active skills

            // Wizard skills

            // Followers
            AddActiveSkillIfChecked(activeSkills, guiSkillAnatomy, typeof(Anatomy));
            AddActiveSkillIfChecked(activeSkills, guiSkillFocusedMind, typeof(FocusedMind));
            AddActiveSkillIfChecked(activeSkills, guiSkillPoweredArmor, typeof(PoweredArmor));

            calculatedDps = d3Calculator.GetHeroDps(passiveSkills, activeSkills);

            UpdateItemsSummary(d3Calculator);

            UpdateCalculationResults(d3Calculator);

            DoActionOnCalculatedControls(UpdateResultControlColor);
        }
Ejemplo n.º 36
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new ItemAttributes {
         hitpointsMaxPercentBonusItem = new ItemValueRange(0.10)
     });
 }
Ejemplo n.º 37
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new ItemAttributes {
         attacksPerSecondItem = new ItemValueRange(0.03)
     });
 }
Ejemplo n.º 38
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes();
 }
Ejemplo n.º 39
0
        private static void WriteCalculation(BattleTag battleTag)
        {
            Console.WriteLine("= = = = Calculator of {0} = = = =", battleTag);

            Console.WriteLine("Downloading {0}", "career");
            var career = Career.CreateFromBattleTag(battleTag);

            if (career == null || career.Heroes.Length == 0)
            {
                return;
            }

            Console.WriteLine("Downloading Hero {0}/{1}", battleTag, career.Heroes[0].name);
            var hero = Hero.CreateFromHeroId(battleTag, career.Heroes[0].id);

            if (hero == null || hero.items == null)
            {
                return;
            }

            Console.WriteLine("Downloading {0}", "bracers");
            var bracers = hero.items.bracers.GetFullItem();

            Console.WriteLine("Downloading {0}", "feet");
            var feet = hero.items.feet.GetFullItem();

            Console.WriteLine("Downloading {0}", "hands");
            var hands = hero.items.hands.GetFullItem();

            Console.WriteLine("Downloading {0}", "head");
            var head = hero.items.head.GetFullItem();

            Console.WriteLine("Downloading {0}", "leftFinger");
            var leftFinger = hero.items.leftFinger.GetFullItem();

            Console.WriteLine("Downloading {0}", "legs");
            var legs = hero.items.legs.GetFullItem();

            Console.WriteLine("Downloading {0}", "mainHand");
            var mainHand = hero.items.mainHand.GetFullItem();

            Console.WriteLine("Downloading {0}", "neck");
            var neck = hero.items.neck.GetFullItem();

            Console.WriteLine("Downloading {0}", "offHand");
            var offHand = hero.items.offHand.GetFullItem();

            Console.WriteLine("Downloading {0}", "rightFinger");
            var rightFinger = hero.items.rightFinger.GetFullItem();

            Console.WriteLine("Downloading {0}", "shoulders");
            var shoulders = hero.items.shoulders.GetFullItem();

            Console.WriteLine("Downloading {0}", "torso");
            var torso = hero.items.torso.GetFullItem();

            Console.WriteLine("Downloading {0}", "waist");
            var waist = hero.items.waist.GetFullItem();

            var items = new List <Item> {
                bracers, feet, hands, head, leftFinger, legs, neck, rightFinger, shoulders, torso, waist
            }.Where(i => i != null).ToList();

            var allItems = new List <Item>(items)
            {
                mainHand, offHand
            }.Where(i => i != null).ToList();

            Console.WriteLine("Calculating activated set");
            foreach (var set in allItems.GetActivatedSets())
            {
                Console.WriteLine("Activated set: {0}", set.name);
            }
            var setBonus = new Item(allItems.GetActivatedSetBonus());

            items.Add(setBonus);

            var d3Calculator = new D3Calculator(hero, mainHand, offHand, items.ToArray());

            Console.WriteLine("Calculation results");
            var dps = d3Calculator.GetHeroDps(new List <ID3SkillModifier>(), new List <ID3SkillModifier>());

            Console.WriteLine("Dexterity : {0}", d3Calculator.GetHeroDexterity().Min);
            Console.WriteLine("DPS : {0}", dps.Min);
            Console.WriteLine("Attack speed: {0}", d3Calculator.GetActualAttackSpeed().Min);
        }
Ejemplo n.º 40
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new ItemAttributes {
         hitpointsRegenPerSecond = new ItemValueRange(620)
     });
 }
        /// <inheritdoc />
        public ItemAttributes GetBonus(D3Calculator calculator)
        {
            var attr = new ItemAttributes { armorBonusItem = multiplier * calculator.GetHeroArmor() };

            return attr;
        }
Ejemplo n.º 42
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { armorBonusItem = new ItemValueRange(calculator.GetHeroVitality()) };
 }
Ejemplo n.º 43
0
        private void UpdateCalculationResults(D3Calculator d3Calculator)
        {
            var attr = d3Calculator.HeroStatsItem.AttributesRaw;

            guiCalculatedDPS.Text = calculatedDps.Min.ToString("N");

            guiCalculatedAttackPerSecond.Text = d3Calculator.GetActualAttackSpeed().Min.ToString("N2");
            PopulateCalculatedData(guiCalcultatedDamageMin, d3Calculator.HeroStatsItem.GetWeaponDamageMin() * d3Calculator.GetDamageMultiplierNormal());
            PopulateCalculatedData(guiCalcultatedDamageMax, d3Calculator.HeroStatsItem.GetWeaponDamageMax() * d3Calculator.GetDamageMultiplierNormal());
            PopulateCalculatedData(guiCalcultatedDamageCriticMin, d3Calculator.HeroStatsItem.GetWeaponDamageMin() * d3Calculator.GetDamageMultiplierCritic());
            PopulateCalculatedData(guiCalcultatedDamageCriticMax, d3Calculator.HeroStatsItem.GetWeaponDamageMax() * d3Calculator.GetDamageMultiplierCritic());

            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Arcane, attr.damageDealtPercentBonusArcane);
            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Cold, attr.damageDealtPercentBonusCold);
            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Fire, attr.damageDealtPercentBonusFire);
            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Holy, attr.damageDealtPercentBonusHoly);
            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Lightning, attr.damageDealtPercentBonusLightning);
            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Physical, attr.damageDealtPercentBonusPhysical);
            PopulateCalculatedDataPercent(guiCalculatedSkillBonusPercent_Poison, attr.damageDealtPercentBonusPoison);

            PopulateCalculatedData(guiCalculatedSkillDamage_Arcane, calculatedDps * (1 + attr.damageDealtPercentBonusArcane));
            PopulateCalculatedData(guiCalculatedSkillDamage_Cold, calculatedDps * (1 + attr.damageDealtPercentBonusCold));
            PopulateCalculatedData(guiCalculatedSkillDamage_Fire, calculatedDps * (1 + attr.damageDealtPercentBonusFire));
            PopulateCalculatedData(guiCalculatedSkillDamage_Holy, calculatedDps * (1 + attr.damageDealtPercentBonusHoly));
            PopulateCalculatedData(guiCalculatedSkillDamage_Lightning, calculatedDps * (1 + attr.damageDealtPercentBonusLightning));
            PopulateCalculatedData(guiCalculatedSkillDamage_Physical, calculatedDps * (1 + attr.damageDealtPercentBonusPhysical));
            PopulateCalculatedData(guiCalculatedSkillDamage_Poison, calculatedDps * (1 + attr.damageDealtPercentBonusPoison));

            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Arcane, calculatedDps * (1 + attr.damageDealtPercentBonusArcane) * (1 + attr.damagePercentBonusVsElites));
            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Cold, calculatedDps * (1 + attr.damageDealtPercentBonusCold) * (1 + attr.damagePercentBonusVsElites));
            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Fire, calculatedDps * (1 + attr.damageDealtPercentBonusFire) * (1 + attr.damagePercentBonusVsElites));
            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Holy, calculatedDps * (1 + attr.damageDealtPercentBonusHoly) * (1 + attr.damagePercentBonusVsElites));
            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Lightning, calculatedDps * (1 + attr.damageDealtPercentBonusLightning) * (1 + attr.damagePercentBonusVsElites));
            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Physical, calculatedDps * (1 + attr.damageDealtPercentBonusPhysical) * (1 + attr.damagePercentBonusVsElites));
            PopulateCalculatedData(guiCalculatedSkillDamageVsElites_Poison, calculatedDps * (1 + attr.damageDealtPercentBonusPoison) * (1 + attr.damagePercentBonusVsElites));

            PopulateCalculatedDataPercent(guiSkillCooldownReductionAll, attr.powerCooldownReductionPercentAll);

            PopulateCalculatedDataPercent(guiCalculatedReductionFromElitesPercent, attr.damagePercentReductionFromElites);
            PopulateCalculatedDataPercent(guiCalculatedReductionFromMeleePercent, attr.damagePercentReductionFromMelee);
            PopulateCalculatedDataPercent(guiCalculatedReductionFromRangedPercent, attr.damagePercentReductionFromRanged);

            PopulateCalculatedData(guiCalculatedHitpoints, d3Calculator.GetHeroHitpoints());
            guiCalculatedDodge.Text = d3Calculator.GetHeroDodge().ToString();

            PopulateCalculatedData(guiCalculatedArmor, d3Calculator.GetHeroArmor());
            PopulateCalculatedData(guiCalculatedResistance_Arcane, d3Calculator.GetHeroResistance("Arcane"));
            PopulateCalculatedData(guiCalculatedResistance_Cold, d3Calculator.GetHeroResistance("Cold"));
            PopulateCalculatedData(guiCalculatedResistance_Fire, d3Calculator.GetHeroResistance("Fire"));
            PopulateCalculatedData(guiCalculatedResistance_Lightning, d3Calculator.GetHeroResistance("Lightning"));
            PopulateCalculatedData(guiCalculatedResistance_Physical, d3Calculator.GetHeroResistance("Physical"));
            PopulateCalculatedData(guiCalculatedResistance_Poison, d3Calculator.GetHeroResistance("Poison"));
            PopulateCalculatedData(guiCalculatedResistance_All, d3Calculator.GetHeroResistance_All());

            guiCalculatedDamageReduction_Armor.Text     = (100 * d3Calculator.GetHeroDamageReduction_Armor(heroLevel)).ToString("N2");
            guiCalculatedDamageReduction_Arcane.Text    = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Arcane")).ToString("N2");
            guiCalculatedDamageReduction_Cold.Text      = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Cold")).ToString("N2");
            guiCalculatedDamageReduction_Fire.Text      = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Fire")).ToString("N2");
            guiCalculatedDamageReduction_Lightning.Text = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Lightning")).ToString("N2");
            guiCalculatedDamageReduction_Physical.Text  = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Physical")).ToString("N2");
            guiCalculatedDamageReduction_Poison.Text    = (100 * d3Calculator.GetHeroDamageReduction(heroLevel, "Poison")).ToString("N2");

            PopulateCalculatedData(guiCalculatedBlockChance, attr.blockChanceItem);
            PopulateCalculatedData(guiCalculatedBlockMin, attr.blockAmountItemMin);
            PopulateCalculatedData(guiCalculatedBlockMax, attr.blockAmountItemMin + attr.blockAmountItemDelta);

            guiCalculatedEffectiveHitpoints.Text = Math.Round(d3Calculator.GetHeroEffectiveHitpoints(heroLevel)).ToString("N0");
            guiCalculatedDPSEHPRatio.Text        = Math.Round(d3Calculator.GetHeroDps().Min *d3Calculator.GetHeroEffectiveHitpoints(heroLevel) / 1000000).ToString("N0");
        }
Ejemplo n.º 44
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { armorBonusItem = new ItemValueRange(calculator.GetHeroDexterity()) * (new ItemValueRange(0.5)) };
 }
Ejemplo n.º 45
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new DamageMultiplier(0.10).GetBonus(calculator);
 }
Ejemplo n.º 46
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new ItemAttributes {
         armorBonusItem = new ItemValueRange(calculator.GetHeroVitality())
     });
 }
Ejemplo n.º 47
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new ItemAttributes {
         armorBonusItem = 0.03 * calculator.GetHeroArmor()
     });
 }
Ejemplo n.º 48
0
        private static async Task WriteCalculation(BattleTag battleTag)
        {
            Console.WriteLine("= = = = Calculator of {0} = = = =", battleTag);

            Console.WriteLine("Downloading {0}", "career");
            var career = await D3Api.GetCareerFromBattleTagAsync(battleTag);

            if (career == null || career.Heroes.Length == 0)
            {
                return;
            }

            Console.WriteLine("Downloading Hero {0}/{1}", battleTag, career.Heroes[0].Name);
            var hero = await D3Api.GetHeroFromHeroIdAsync(battleTag, career.Heroes[0].Id);

            if (hero?.Items == null)
            {
                return;
            }

            var bracersTask     = GetFullItem(hero.Items.Bracers, "bracers");
            var feetTask        = GetFullItem(hero.Items.Feet, "feet");
            var handsTask       = GetFullItem(hero.Items.Hands, "hands");
            var headTask        = GetFullItem(hero.Items.Hands, "head");
            var leftFingerTask  = GetFullItem(hero.Items.LeftFinger, "leftFinger");
            var legsTask        = GetFullItem(hero.Items.Legs, "legs");
            var mainHandTask    = GetFullItem(hero.Items.MainHand, "mainHand");
            var neckTask        = GetFullItem(hero.Items.Neck, "neck");
            var offHandTask     = GetFullItem(hero.Items.OffHand, "offHand");
            var rightFingerTask = GetFullItem(hero.Items.RightFinger, "rightFinger");
            var shouldersTask   = GetFullItem(hero.Items.Shoulders, "shoulders");
            var torsoTask       = GetFullItem(hero.Items.Torso, "torso");
            var waistTask       = GetFullItem(hero.Items.Waist, "waist");

            Task.WaitAll(bracersTask, feetTask, handsTask, headTask, leftFingerTask, legsTask, mainHandTask, neckTask, offHandTask, rightFingerTask, shouldersTask, torsoTask, waistTask);

            var bracers     = bracersTask.Result;
            var feet        = feetTask.Result;
            var hands       = handsTask.Result;
            var head        = headTask.Result;
            var leftFinger  = leftFingerTask.Result;
            var legs        = legsTask.Result;
            var mainHand    = mainHandTask.Result;
            var neck        = neckTask.Result;
            var offHand     = offHandTask.Result;
            var rightFinger = rightFingerTask.Result;
            var shoulders   = shouldersTask.Result;
            var torso       = torsoTask.Result;
            var waist       = waistTask.Result;

            var items = new List <Item> {
                bracers, feet, hands, head, leftFinger, legs, neck, rightFinger, shoulders, torso, waist
            }.Where(i => i != null).ToList();

            var allItems = new List <Item>(items)
            {
                mainHand, offHand
            }.Where(i => i != null).ToList();

            Console.WriteLine("Calculating activated set");
            foreach (var set in allItems.GetActivatedSets())
            {
                Console.WriteLine("Activated set: {0}", set.name);
            }
            var setBonus = new Item(allItems.GetActivatedSetBonus());

            items.Add(setBonus);

            var d3Calculator = new D3Calculator(hero, mainHand, offHand, items.ToArray());

            Console.WriteLine("Calculation results");
            var dps = d3Calculator.GetHeroDps(new List <ID3SkillModifier>(), new List <ID3SkillModifier>());

            Console.WriteLine("Dexterity : {0}", d3Calculator.GetHeroDexterity().Min);
            Console.WriteLine("DPS : {0}", dps.Min);
            Console.WriteLine("Attack speed: {0}", d3Calculator.GetActualAttackSpeed().Min);
        }
Ejemplo n.º 49
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { critPercentBonusCapped = new ItemValueRange(0.018) };
 }
Ejemplo n.º 50
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return(new DamageMultiplier(0.05).GetBonus(calculator));
 }
Ejemplo n.º 51
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { armorBonusItem = 0.05 * calculator.GetHeroArmor() };
 }
Ejemplo n.º 52
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { attacksPerSecondItem = new ItemValueRange(0.03) };
 }
Ejemplo n.º 53
0
 static ItemAttributes getBonus_Bow(D3Calculator calculator)
 {
     return(new DamageMultiplier(0.15).GetBonus(calculator));
 }
Ejemplo n.º 54
0
 /// <inheritdoc />
 public ItemAttributes GetBonus(D3Calculator calculator)
 {
     return new ItemAttributes { hitpointsMaxPercentBonusItem = new ItemValueRange(0.10) };
 }