示例#1
0
        public override void DoAction()
        {
            //  Don't call base.DoAction, since that resets the swing timer
            Player.casting = null;

            LogAction();

            //  Find out whether it hits/crits
            ResultType res = Player.WhiteAttackEnemy(Player.Sim.Boss, true);

            int damage = 0;

            //  Can't glance, so treat glance as a hit
            if (res == ResultType.Glance)
            {
                res = ResultType.Hit;
            }

            if (res == ResultType.Hit || res == ResultType.Crit)
            {
                //  Calculate weapon dmg
                double weapMin = Player.MH.DamageMin + Player.MH.Speed * (Player.AP + Player.nextAABonus) / 14;
                double weapMax = Player.MH.DamageMax + Player.MH.Speed * (Player.AP + Player.nextAABonus) / 14;

                //  70% weapon damage
                int minDmg = (int)(0.7 * weapMin);
                int maxDmg = (int)(0.7 * weapMax);

                //  Include SotC bonus
                int holyBoost = 0;
                if (Player.Sim.Boss.Effects.ContainsKey(JudgementOfTheCrusaderDebuff.NAME))
                {
                    holyBoost = ((JudgementOfTheCrusaderDebuff)Player.Sim.Boss.Effects[JudgementOfTheCrusaderDebuff.NAME]).HolyDmgIncrease;
                }

                //  Include spell resistance
                double spellResist = 1.0;

                /*  I don't think this factors in, for some reason, or there is a different dmg *boost* missing to offset this
                 * spellResist = 1 - Simulation.AverageResistChance(315);
                 */

                damage = (int)Math.Round((Randomer.Next(minDmg, maxDmg + 1) + ((holyBoost + Player.SP) * RATIO))
                                         * Player.Sim.DamageMod(res, School.Physical) //  Crit modifier using Melee multiplier
                                         * (Player.Sim.Boss.Effects.ContainsKey(SpellVulnerability.NAME) ? ((SpellVulnerability)Player.Sim.Boss.Effects[SpellVulnerability.NAME]).Modifier : 1)
                                         * spellResist
                                         * Player.DamageMod
                                         );

                //  Turn on Vengeance
                if (Player.GetTalentPoints("Veng") > 0)
                {
                    Vengeance.CheckProc(Player, res);
                }
            }

            RegisterDamage(new ActionResult(res, damage));
        }
示例#2
0
        public override void DoAction()
        {
            //  Don't call base.DoAction, since that resets the swing timer
            Player.casting = null;

            LogAction();

            //
            //  SoR always hits when melee hits
            //
            int damage = 0;


            //  Include SotC bonus
            int holyBoost = 0;

            if (Player.Sim.Boss.Effects.ContainsKey(JudgementOfTheCrusaderDebuff.NAME))
            {
                holyBoost = ((JudgementOfTheCrusaderDebuff)Player.Sim.Boss.Effects[JudgementOfTheCrusaderDebuff.NAME]).HolyDmgIncrease;
            }

            //  Set coefficient differently for 1H versus 2H
            double coefficient = 0.12;  //  2H coeff.
            int    dmgAmt      = (int)(33 + 2.3 * Player.MH.Speed * 10 - 34.5);

            if (!Player.MH.TwoHanded)
            {
                coefficient = 0.1;
                dmgAmt      = (int)(22 + 2.0 * Player.MH.Speed * 10 - 30);
            }

            //  Include spell resistance
            double spellResist = 1.0;

            /*  I don't think this factors in, for some reason, or there is a different dmg *boost* missing to offset this
             * spellResist = 1 - Simulation.AverageResistChance(315);
             */

            //  Include talented SoR
            double impSoRMultiplier = 1.0 + 0.03 * Player.GetTalentPoints("ImpSoR");

            damage = (int)Math.Round((dmgAmt + ((holyBoost + Player.SP) * coefficient))
                                     * Player.Sim.DamageMod(ResultType.Hit, School.Light)
                                     * (Player.Sim.Boss.Effects.ContainsKey(SpellVulnerability.NAME) ? ((SpellVulnerability)Player.Sim.Boss.Effects[SpellVulnerability.NAME]).Modifier : 1)
                                     * spellResist
                                     * Player.DamageMod
                                     * impSoRMultiplier
                                     );

            //  Turn on Vengeance
            if (Player.GetTalentPoints("Veng") > 0)
            {
                Vengeance.CheckProc(Player, ResultType.Hit);
            }

            RegisterDamage(new ActionResult(ResultType.Hit, damage));
        }
示例#3
0
        public override void DoAction()
        {
            //  Don't call base.DoAction, since that resets the swing timer
            Player.casting = null;

            LogAction();

            ResultType res = Player.SpellAttackEnemy(Player.Sim.Boss);

            int damage = 0;

            //  Can't glance
            if (res == ResultType.Hit || res == ResultType.Crit)
            {
                //  Include SotC bonus
                int holyBoost = 0;
                if (Player.Sim.Boss.Effects.ContainsKey(JudgementOfTheCrusaderDebuff.NAME))
                {
                    holyBoost = ((JudgementOfTheCrusaderDebuff)Player.Sim.Boss.Effects[JudgementOfTheCrusaderDebuff.NAME]).HolyDmgIncrease;
                }

                //  Include spell resistance
                double spellResist = 1.0;

                /*  I don't think this factors in, for some reason, or there is a different dmg *boost* missing to offset this
                 * spellResist = 1 - Simulation.AverageResistChance(315);
                 */

                //  Include talented SoR
                double impSoRMultiplier = 1.0 + 0.03 * Player.GetTalentPoints("ImpSoR");

                damage = (int)Math.Round((Randomer.Next(minDmg, maxDmg + 1) + ((holyBoost + Player.SP) * RATIO))
                                         * Player.Sim.DamageMod(ResultType.Hit, School.Light)
                                         * (Player.Sim.Boss.Effects.ContainsKey(SpellVulnerability.NAME) ? ((SpellVulnerability)Player.Sim.Boss.Effects[SpellVulnerability.NAME]).Modifier : 1)
                                         * spellResist
                                         * Player.DamageMod
                                         * impSoRMultiplier
                                         );

                //  Turn on Vengeance
                if (Player.GetTalentPoints("Veng") > 0)
                {
                    Vengeance.CheckProc(Player, res);
                }
            }

            RegisterDamage(new ActionResult(res, damage));
        }
        public override void DoAction()
        {
            //  Don't call base.DoAction, since that resets the swing timer
            Player.casting = null;

            LogAction();

            ResultType res = Player.MeleeSpellAttackEnemy(Player.Sim.Boss);

            int damage = 0;

            //  Can't glance
            if (res == ResultType.Hit || res == ResultType.Crit)
            {
                int minDmg = minDmg_Normal;
                int maxDmg = maxDmg_Normal;

                //  Double dmg if target is stunned
                if (Player.Sim.Boss.Effects.ContainsKey(HammerOfJusticeDebuff.NAME))
                {
                    minDmg = minDmg_Stunned;
                    maxDmg = maxDmg_Stunned;
                }

                //  Include SotC bonus
                int holyBoost = 0;
                if (Player.Sim.Boss.Effects.ContainsKey(JudgementOfTheCrusaderDebuff.NAME))
                {
                    holyBoost = ((JudgementOfTheCrusaderDebuff)Player.Sim.Boss.Effects[JudgementOfTheCrusaderDebuff.NAME]).HolyDmgIncrease;
                }

                damage = (int)Math.Round((Randomer.Next(minDmg, maxDmg + 1) + ((holyBoost + Player.SP) * RATIO))
                                         * Player.Sim.DamageMod(res, School.Physical) //  Crit modifier using Melee multiplier
                                         * (Player.Sim.Boss.Effects.ContainsKey(SpellVulnerability.NAME) ? ((SpellVulnerability)Player.Sim.Boss.Effects[SpellVulnerability.NAME]).Modifier : 1)
                                         * (1 - Simulation.AverageResistChance(315))
                                         * Player.DamageMod
                                         );

                //  Turn on Vengeance
                if (Player.GetTalentPoints("Veng") > 0)
                {
                    Vengeance.CheckProc(Player, res);
                }
            }

            RegisterDamage(new ActionResult(res, damage));
        }