Skip to content

Commit

Permalink
fix shadowfiend scaling (wowsims#3904)
Browse files Browse the repository at this point in the history
  • Loading branch information
lime-green authored Oct 18, 2023
1 parent a39a8b2 commit 41e1712
Show file tree
Hide file tree
Showing 9 changed files with 668 additions and 772 deletions.
573 changes: 229 additions & 344 deletions sim/priest/healing/TestHoly.results

Large diffs are not rendered by default.

330 changes: 165 additions & 165 deletions sim/priest/shadow/TestShadow.results

Large diffs are not rendered by default.

15 changes: 7 additions & 8 deletions sim/priest/shadowfiend.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,11 @@ func (priest *Priest) registerShadowfiendSpell() {
},
})

priest.AddMajorCooldown(core.MajorCooldown{
Spell: priest.Shadowfiend,
Priority: 1,
Type: core.CooldownTypeMana,
ShouldActivate: func(sim *core.Simulation, character *core.Character) bool {
return character.CurrentManaPercent() <= 0.5
},
})
if !priest.IsUsingAPL {
priest.AddMajorCooldown(core.MajorCooldown{
Spell: priest.Shadowfiend,
Priority: 1,
Type: core.CooldownTypeMana,
})
}
}
37 changes: 22 additions & 15 deletions sim/priest/shadowfiend_pet.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@ type Shadowfiend struct {
}

var baseStats = stats.Stats{
stats.Strength: 314,
stats.Agility: 90,
stats.Stamina: 348,
stats.Intellect: 201,
stats.Strength: 314,
stats.Agility: 90,
stats.Stamina: 348,
stats.Intellect: 201,
stats.AttackPower: -20,
// with 3% crit debuff, shadowfiend crits around 9-12% (TODO: verify and narrow down)
stats.MeleeCrit: 8 * core.CritRatingPerCritChance,
}

func (priest *Priest) NewShadowfiend() *Shadowfiend {
Expand Down Expand Up @@ -65,8 +68,8 @@ func (priest *Priest) NewShadowfiend() *Shadowfiend {

shadowfiend.EnableAutoAttacks(shadowfiend, core.AutoAttackOptions{
MainHand: core.Weapon{
BaseDamageMin: 176,
BaseDamageMax: 210,
BaseDamageMin: 110,
BaseDamageMax: 145,
SwingSpeed: 1.5,
NormalizedSwingSpeed: 1.5,
CritMultiplier: 2,
Expand All @@ -75,7 +78,7 @@ func (priest *Priest) NewShadowfiend() *Shadowfiend {
AutoSwingMelee: true,
})

shadowfiend.AddStatDependency(stats.Strength, stats.AttackPower, 1.0)
shadowfiend.AddStatDependency(stats.Strength, stats.AttackPower, 2.0)

core.ApplyPetConsumeEffects(&shadowfiend.Character, priest.Consumes)

Expand All @@ -86,16 +89,20 @@ func (priest *Priest) NewShadowfiend() *Shadowfiend {

func (priest *Priest) shadowfiendStatInheritance() core.PetStatInheritance {
return func(ownerStats stats.Stats) stats.Stats {
hitPercentage := ownerStats[stats.SpellHit] / core.SpellHitRatingPerHitChance
inheritableSP := ownerStats[stats.SpellPower] - 0.04*float64(priest.Talents.TwistedFaith)*ownerStats[stats.Spirit]
// Shadow fiend gets a "Spell Bonus" that adds bonus damage to each attack
// for simplicity, we will just convert this added damage as if it were AP
// Spell Bonus SP coefficient: 30%
// Spell Bonus Damage coefficient: 106%
// Damage to DPS coefficient: 1/1.5 (1.5 speed weapon)
// DPS to AP coefficient: 14
spellBonusAPEquivalent := inheritableSP * 0.3 * 1.06 * 14 / 1.5

return stats.Stats{ //still need to nail down shadow fiend crit scaling, but removing owner crit scaling after further investigation
stats.AttackPower: ownerStats[stats.SpellPower] * 5.377,
stats.MeleeHit: hitPercentage * core.MeleeHitRatingPerHitChance,
stats.SpellHit: ownerStats[stats.SpellHit],
//stats.MeleeCrit: ownerStats[stats.SpellCrit],
//stats.SpellCrit: ownerStats[stats.SpellCrit],
//stats.MeleeHaste: ownerStats[stats.SpellHaste],
//stats.SpellHaste: ownerStats[stats.SpellHaste],
stats.AttackPower: inheritableSP*0.57 + spellBonusAPEquivalent,
// never misses
stats.MeleeHit: 8 * core.MeleeHitRatingPerHitChance,
stats.Expertise: 14 * core.ExpertisePerQuarterPercentReduction * 4,
}
}
}
Expand Down
Loading

0 comments on commit 41e1712

Please sign in to comment.