diff --git a/sim/hunter/aimed_shot.go b/sim/hunter/aimed_shot.go index e128e24f10..dd8d5aeebf 100644 --- a/sim/hunter/aimed_shot.go +++ b/sim/hunter/aimed_shot.go @@ -53,8 +53,6 @@ func (hunter *Hunter) getAimedShotConfig(rank int, timer *core.Timer) core.Spell }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, BonusCoefficient: 1, diff --git a/sim/hunter/arcane_shot.go b/sim/hunter/arcane_shot.go index c72d3cef1f..4753cc9834 100644 --- a/sim/hunter/arcane_shot.go +++ b/sim/hunter/arcane_shot.go @@ -43,8 +43,6 @@ func (hunter *Hunter) getArcaneShotConfig(rank int, timer *core.Timer) core.Spel }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, BonusCoefficient: spellCoeff, diff --git a/sim/hunter/chimera_shot.go b/sim/hunter/chimera_shot.go index 121dea160e..98a8acbd74 100644 --- a/sim/hunter/chimera_shot.go +++ b/sim/hunter/chimera_shot.go @@ -41,8 +41,6 @@ func (hunter *Hunter) registerChimeraShotSpell() { }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1.35, ThreatMultiplier: 1, diff --git a/sim/hunter/dps_hunter/TestMM.results b/sim/hunter/dps_hunter/TestMM.results index 516f3a76e2..7bd16ddd08 100644 --- a/sim/hunter/dps_hunter/TestMM.results +++ b/sim/hunter/dps_hunter/TestMM.results @@ -198,7 +198,7 @@ stat_weights_results: { key: "TestMM-Phase2-Lvl40-StatWeights-Default" value: { weights: 0 - weights: 1.02802 + weights: 1.03284 weights: 0 weights: 0 weights: 0 @@ -215,8 +215,8 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 6.41436 - weights: 7.41487 + weights: 6.39407 + weights: 7.39954 weights: 0 weights: 0 weights: 0 @@ -407,106 +407,106 @@ dps_results: { dps_results: { key: "TestMM-Phase2-Lvl40-AllItems-SignetofBeasts-209823" value: { - dps: 666.81495 - tps: 522.30736 + dps: 666.60704 + tps: 522.09223 } } dps_results: { key: "TestMM-Phase2-Lvl40-Average-Default" value: { - dps: 671.17309 - tps: 524.49444 + dps: 670.86557 + tps: 524.18547 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-P2-Consumes-LongMultiTarget" value: { - dps: 1365.79714 - tps: 1528.33893 + dps: 1365.6887 + tps: 1528.23048 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-P2-Consumes-LongSingleTarget" value: { - dps: 670.60794 - tps: 530.41344 + dps: 670.15779 + tps: 529.95606 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-P2-Consumes-ShortSingleTarget" value: { - dps: 668.92476 - tps: 521.30376 + dps: 668.74402 + tps: 521.08687 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-P2-Consumes-LongMultiTarget" value: { - dps: 778.73499 - tps: 1013.81194 + dps: 778.69795 + tps: 1013.7749 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-P2-Consumes-LongSingleTarget" value: { - dps: 363.67357 - tps: 305.94296 + dps: 363.42197 + tps: 305.69136 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Dwarf-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-P2-Consumes-ShortSingleTarget" value: { - dps: 384.83662 - tps: 314.78999 + dps: 384.71905 + tps: 314.67241 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-P2-Consumes-LongMultiTarget" value: { - dps: 1360.19107 - tps: 1524.56402 + dps: 1359.91267 + tps: 1524.28562 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-P2-Consumes-LongSingleTarget" value: { - dps: 676.61145 - tps: 530.34874 + dps: 676.30409 + tps: 530.03415 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-FullBuffs-P2-Consumes-ShortSingleTarget" value: { - dps: 678.40241 - tps: 523.99473 + dps: 678.04093 + tps: 523.59711 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-P2-Consumes-LongMultiTarget" value: { - dps: 779.68861 - tps: 1004.4076 + dps: 779.52872 + tps: 1004.2477 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-P2-Consumes-LongSingleTarget" value: { - dps: 368.59748 - tps: 306.36057 + dps: 368.38114 + tps: 306.14424 } } dps_results: { key: "TestMM-Phase2-Lvl40-Settings-Orc-p2_ranged_mm-Basic-p2_ranged_mm-NoBuffs-P2-Consumes-ShortSingleTarget" value: { - dps: 388.27847 - tps: 313.93332 + dps: 388.1609 + tps: 313.81575 } } dps_results: { key: "TestMM-Phase2-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 668.59727 - tps: 529.32523 + dps: 667.98344 + tps: 528.70418 } } dps_results: { diff --git a/sim/hunter/explosive_shot.go b/sim/hunter/explosive_shot.go index b6cbbb7b35..142f3eae4b 100644 --- a/sim/hunter/explosive_shot.go +++ b/sim/hunter/explosive_shot.go @@ -46,8 +46,6 @@ func (hunter *Hunter) registerExplosiveShotSpell() { }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, diff --git a/sim/hunter/flanking_strike.go b/sim/hunter/flanking_strike.go index b74e6f42af..cab96a3434 100644 --- a/sim/hunter/flanking_strike.go +++ b/sim/hunter/flanking_strike.go @@ -34,7 +34,6 @@ func (hunter *Hunter) registerFlankingStrikeSpell() { ProcMask: core.ProcMaskMeleeMHSpecial, Flags: core.SpellFlagMeleeMetrics, - CritDamageBonus: hunter.mortalShots(), DamageMultiplier: 1, BonusCoefficient: 1, @@ -80,7 +79,6 @@ func (hunter *Hunter) registerFlankingStrikeSpell() { }, }, - CritDamageBonus: hunter.mortalShots(), DamageMultiplier: 1, BonusCoefficient: 1, diff --git a/sim/hunter/hunter.go b/sim/hunter/hunter.go index fa511a984e..1bf9944a43 100644 --- a/sim/hunter/hunter.go +++ b/sim/hunter/hunter.go @@ -332,7 +332,6 @@ func NewHunter(character *core.Character, options *proto.Player) *Hunter { return time.Duration(float64(spell.DefaultCast.CastTime) / hunter.RangedSwingSpeed() * math.Max(spell.CastTimeMultiplier, 0)) }, } - hunter.AutoAttacks.RangedConfig().CritDamageBonus = hunter.mortalShots() hunter.AutoAttacks.RangedConfig().BonusCoefficient = 1 hunter.AutoAttacks.RangedConfig().ApplyEffects = func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { baseDamage := hunter.RangedWeaponDamage(sim, spell.RangedAttackPower(target, false)) + diff --git a/sim/hunter/kill_shot.go b/sim/hunter/kill_shot.go index ed94edc681..b42f50eadc 100644 --- a/sim/hunter/kill_shot.go +++ b/sim/hunter/kill_shot.go @@ -42,8 +42,6 @@ func (hunter *Hunter) newKillShotConfig() core.SpellConfig { }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, BonusCoefficient: 1, diff --git a/sim/hunter/mongoose_bite.go b/sim/hunter/mongoose_bite.go index b532e03757..1edb6dae19 100644 --- a/sim/hunter/mongoose_bite.go +++ b/sim/hunter/mongoose_bite.go @@ -46,7 +46,6 @@ func (hunter *Hunter) getMongooseBiteConfig(rank int) core.SpellConfig { return hunter.DefensiveState.IsActive() }, - CritDamageBonus: hunter.mortalShots(), DamageMultiplier: 1, ThreatMultiplier: 1, diff --git a/sim/hunter/multi_shot.go b/sim/hunter/multi_shot.go index e19236982e..35ace2fbc4 100644 --- a/sim/hunter/multi_shot.go +++ b/sim/hunter/multi_shot.go @@ -56,8 +56,6 @@ func (hunter *Hunter) getMultiShotConfig(rank int, timer *core.Timer) core.Spell }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, BonusCoefficient: 1, diff --git a/sim/hunter/raptor_strike.go b/sim/hunter/raptor_strike.go index 673e5011c6..acf22fa6d9 100644 --- a/sim/hunter/raptor_strike.go +++ b/sim/hunter/raptor_strike.go @@ -125,7 +125,6 @@ func (hunter *Hunter) newRaptorStrikeHitSpell(rank int, isMH bool) *core.Spell { ProcMask: procMask, Flags: core.SpellFlagMeleeMetrics | core.SpellFlagNoOnCastComplete, - CritDamageBonus: hunter.mortalShots(), DamageMultiplier: damageMultiplier, BonusCoefficient: 1, diff --git a/sim/hunter/serpent_sting.go b/sim/hunter/serpent_sting.go index e0e74e8a11..faa453fda5 100644 --- a/sim/hunter/serpent_sting.go +++ b/sim/hunter/serpent_sting.go @@ -89,10 +89,6 @@ func (hunter *Hunter) chimeraShotSerpentStingSpell(rank int) *core.Spell { Flags: core.SpellFlagMeleeMetrics | core.SpellFlagPassiveSpell, MissileSpeed: 24, - BonusCritRating: 1, - - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, BonusCoefficient: 0.40, diff --git a/sim/hunter/steady_shot.go b/sim/hunter/steady_shot.go index 0a93dce5ec..7d432d7e91 100644 --- a/sim/hunter/steady_shot.go +++ b/sim/hunter/steady_shot.go @@ -42,8 +42,6 @@ func (hunter *Hunter) registerSteadyShotSpell() { }, }, - CritDamageBonus: hunter.mortalShots(), - DamageMultiplier: 1, ThreatMultiplier: 1, diff --git a/sim/hunter/talents.go b/sim/hunter/talents.go index 7c88a7cafc..339c142dda 100644 --- a/sim/hunter/talents.go +++ b/sim/hunter/talents.go @@ -21,6 +21,7 @@ func (hunter *Hunter) ApplyTalents() { // MM Talents hunter.applyEfficiency() hunter.applyLethalShots() + hunter.applyMortalShots() hunter.applyImprovedArcaneShot() hunter.applyImprovedSerpentSting() hunter.applyBarrage() @@ -222,8 +223,14 @@ func (hunter *Hunter) applyMortalShots() { return } - // TODO: Figure out what the pattern is and move to here - // Could it be ProcMask Ranged + BonusCoefficient 1? + hunter.AutoAttacks.RangedConfig().CritDamageBonus = 0.06 * float64(hunter.Talents.MortalShots) + + hunter.AddStaticMod(core.SpellModConfig{ + Kind: core.SpellMod_CritDamageBonus_Flat, + // Applies to all shots, strikes, and volley + ClassMask: ClassSpellMask_HunterShots | ClassSpellMask_HunterStrikes | ClassSpellMask_HunterChimeraSerpent | ClassSpellMask_HunterMongooseBite | ClassSpellMask_HunterWingClip | ClassSpellMask_HunterVolley, + FloatValue: 0.06 * float64(hunter.Talents.MortalShots), + }) } func (hunter *Hunter) applyBarrage() { @@ -251,10 +258,6 @@ func (hunter *Hunter) applyRangedWeaponSpecialization() { }) } -func (hunter *Hunter) mortalShots() float64 { - return 0.06 * float64(hunter.Talents.MortalShots) -} - /////////////////////////////////////////////////////////////////////////// // Survival Talents /////////////////////////////////////////////////////////////////////////// diff --git a/sim/hunter/volley.go b/sim/hunter/volley.go index 1a71e52801..5ed1713ce0 100644 --- a/sim/hunter/volley.go +++ b/sim/hunter/volley.go @@ -81,7 +81,6 @@ func (hunter *Hunter) getVolleyConfig(rank int) core.SpellConfig { }, }, - CritDamageBonus: 1 + hunter.mortalShots(), DamageMultiplier: 1, ThreatMultiplier: 1, diff --git a/sim/hunter/wing_clip.go b/sim/hunter/wing_clip.go index ad1d6623bf..4856c4a178 100644 --- a/sim/hunter/wing_clip.go +++ b/sim/hunter/wing_clip.go @@ -33,7 +33,6 @@ func (hunter *Hunter) getWingClipConfig(rank int) core.SpellConfig { IgnoreHaste: true, }, - CritDamageBonus: hunter.mortalShots(), DamageMultiplier: 1, ThreatMultiplier: 1, diff --git a/sim/hunter/wyvern_strike.go b/sim/hunter/wyvern_strike.go index 0c24d5403a..dbd0678ff2 100644 --- a/sim/hunter/wyvern_strike.go +++ b/sim/hunter/wyvern_strike.go @@ -42,7 +42,6 @@ func (hunter *Hunter) getWyvernStrikeConfig(rank int) core.SpellConfig { }, }, - CritDamageBonus: hunter.mortalShots(), DamageMultiplier: 1, BonusCoefficient: 1, ThreatMultiplier: 1,