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)); }
public override int GetTickDamage() { // Include SotC bonus int holyBoost = 0; if (Player.Sim.Boss.Effects.ContainsKey(JudgementOfTheCrusaderDebuff.NAME)) { holyBoost = ((JudgementOfTheCrusaderDebuff)Player.Sim.Boss.Effects[JudgementOfTheCrusaderDebuff.NAME]).HolyDmgIncrease; } int dmg = (int)Math.Round((DMG + (holyBoost + Player.SP) * RATIO) / NB_TICKS * Player.DamageMod * (1 - Simulation.AverageResistChance(315)) * (Player.Sim.Boss.Effects.ContainsKey(SpellVulnerability.NAME) ? ((SpellVulnerability)Player.Sim.Boss.Effects[SpellVulnerability.NAME]).Modifier : 1) ); return(dmg); }