Exemple #1
0
        protected float CalcMeleeDamage(bool canGlance, float bonusDamage)
        {
            int level      = Mommy.Options.TargetLevel;
            int levelDelta = level - 80;

            float characterSheetDamage
                = BaseMeleeDamage
                  + DamagePerAttackPower * CalcAttackPower()
                  + bonusDamage;
            float combatTableModifier
                = CalcMeleeHitChance()
                  + CalcMeleeCrit()
                  - StatConversion.WHITE_DODGE_CHANCE_CAP[levelDelta];

            if (canGlance)
            {
                combatTableModifier
                    -= .3f * StatConversion.WHITE_GLANCE_CHANCE_CAP[levelDelta];
            }
            float armorModifier
                = 1
                  - StatConversion.GetArmorDamageReduction(
                      level,
                      StatConversion.NPC_ARMOR[levelDelta],
                      Stats.ArmorPenetration, // arpen debuffs
                      0f,                     // arpen buffs
                      0f);                    // arpen rating

            return(characterSheetDamage
                   * combatTableModifier
                   * armorModifier
                   * MeleeModifiers.GetFinalDirectMultiplier());
        }
Exemple #2
0
 protected virtual void FinalizeModifiers()
 {
     TotalModifiers.AddMultiplicativeMultiplier(Stats.BonusDamageMultiplier);
     MeleeModifiers.AddMultiplicativeMultiplier(Stats.BonusPhysicalDamageMultiplier);
     if (Mommy.Character.Race == CharacterRace.Orc)
     {
         TotalModifiers.AddMultiplicativeMultiplier(.05f);
     }
 }
Exemple #3
0
        public void CalcStats1()
        {
            WarlockTalents talents = Mommy.Talents;

            //Stats.Strength = 453f;
            //Stats.Agility = 883f;
            Stats.SpellPower   = CalcSpellPower();
            Stats.AttackPower  = CalcAttackPower();
            Stats.PhysicalCrit = .0328f;
            Stats.Accumulate(Mommy.PetBuffs);

            FinalizeModifiers();
            SpecialModifiers.Accumulate(TotalModifiers);
            MeleeModifiers.Accumulate(TotalModifiers);

            Stats.SpellHaste    = GetHasteWithProcs(s => s.SpellHaste);
            Stats.PhysicalHaste = GetHasteWithProcs(s => s.PhysicalHaste);
        }
Exemple #4
0
        public void CalcStats1()
        {
            // Stam & Int have to happen in this stage, so that Demonic
            // Knowledge is in effect when calculating the benefit of a
            // Demonic Pact proc.

            // Crit has to happen in this stage, so that Empowered Imp gives
            // the warlocks the right amount of crit.

            WarlockTalents talents  = Mommy.Talents;
            float          vitality = talents.FelVitality * .05f;
            float          tacticsCrit
                = .02f * talents.DemonicTactics
                  + .1f
                  * talents.ImprovedDemonicTactics
                  * (Mommy.CalcSpellCrit()
                     - Mommy.Stats.SpellCritOnTarget);

            Stats = new Stats()
            {
                Stamina = BaseStamina + StaminaCoef * Mommy.CalcStamina(),
                Intellect
                         = BaseIntellect + IntellectCoef * Mommy.CalcIntellect(),
                Strength = 297f,
                Agility  = 90f,
                BonusStaminaMultiplier   = vitality,
                BonusIntellectMultiplier = vitality,
                SpellCrit
                             = BaseSpellCrit + tacticsCrit + Mommy.Stats.Warlock2T9,
                SpellPower   = BaseSpellPower,
                AttackPower  = BaseAttackPower,
                PhysicalCrit = .0329f + tacticsCrit + Mommy.Stats.Warlock2T9,
            };
            Stats.Accumulate(Mommy.PetBuffs);

            Mommy.Add4pT10(TotalModifiers);
            FinalizeModifiers();
            SpecialModifiers.Accumulate(TotalModifiers);
            MeleeModifiers.Accumulate(TotalModifiers);

            Stats.SpellHaste    = GetHasteWithProcs(s => s.SpellHaste);
            Stats.PhysicalHaste = GetHasteWithProcs(s => s.PhysicalHaste);
        }
Exemple #5
0
        protected float CalcMeleeDamage(bool canGlance, float bonusDamage)
        {
            int level      = Mommy.CalcOpts.TargetLevel;
            int levelDelta = level - Mommy.CalcOpts.PlayerLevel;

            if (levelDelta > 3)
            {
                levelDelta = 3;
            }

            float characterSheetDamage = BaseMeleeDamage + DamagePerAttackPower * CalcAttackPower() + bonusDamage;
            float combatTableModifier  = CalcMeleeHitChance() + CalcMeleeCrit() - StatConversion.WHITE_DODGE_CHANCE_CAP[levelDelta];

            if (canGlance)
            {
                combatTableModifier -= .3f * StatConversion.WHITE_GLANCE_CHANCE_CAP[levelDelta];
            }
            float armorModifier = 1f - StatConversion.GetArmorDamageReduction(level, StatConversion.NPC_ARMOR[levelDelta], Stats.TargetArmorReduction, 0f);

            return(characterSheetDamage * combatTableModifier * armorModifier * MeleeModifiers.GetFinalDirectMultiplier());
        }