|
4 | 4 | "time" |
5 | 5 |
|
6 | 6 | "github.com/wowsims/mop/sim/core" |
| 7 | + "github.com/wowsims/mop/sim/core/proto" |
7 | 8 | "github.com/wowsims/mop/sim/core/stats" |
8 | 9 | ) |
9 | 10 |
|
@@ -48,15 +49,18 @@ func (shaman *Shaman) NewFireElemental(isGuardian bool) *FireElemental { |
48 | 49 | }) |
49 | 50 | fireElemental.AutoAttacks.MHConfig().ProcMask |= core.ProcMaskSpellDamage |
50 | 51 |
|
51 | | - fireElemental.OnPetEnable = fireElemental.enable |
| 52 | + fireElemental.OnPetEnable = fireElemental.enable(isGuardian) |
52 | 53 | fireElemental.OnPetDisable = fireElemental.disable |
53 | 54 |
|
54 | 55 | shaman.AddPet(fireElemental) |
55 | 56 |
|
56 | 57 | return fireElemental |
57 | 58 | } |
58 | 59 |
|
59 | | -func (fireElemental *FireElemental) enable(sim *core.Simulation) { |
| 60 | +func (fireElemental *FireElemental) enable(isGuardian bool) func(*core.Simulation) { |
| 61 | + return func(sim *core.Simulation) { |
| 62 | + fireElemental.EnableDynamicStats(fireElemental.shamanOwner.fireElementalStatInheritance(isGuardian)) |
| 63 | + } |
60 | 64 | } |
61 | 65 |
|
62 | 66 | func (fireElemental *FireElemental) disable(sim *core.Simulation) { |
@@ -124,20 +128,20 @@ func (shaman *Shaman) fireElementalBaseStats(isGuardian bool) stats.Stats { |
124 | 128 |
|
125 | 129 | func (shaman *Shaman) fireElementalStatInheritance(isGuardian bool) core.PetStatInheritance { |
126 | 130 | return func(ownerStats stats.Stats) stats.Stats { |
127 | | - ownerSpellHitPercent := ownerStats[stats.SpellHitPercent] |
128 | | - ownerPhysicalHitPercent := ownerStats[stats.PhysicalHitPercent] |
| 131 | + ownerHitRating := ownerStats[stats.HitRating] |
129 | 132 | ownerExpertiseRating := ownerStats[stats.ExpertiseRating] |
130 | 133 | ownerSpellCritPercent := ownerStats[stats.SpellCritPercent] |
131 | 134 | ownerPhysicalCritPercent := ownerStats[stats.PhysicalCritPercent] |
132 | 135 | ownerHasteRating := ownerStats[stats.HasteRating] |
133 | 136 |
|
| 137 | + power := core.TernaryFloat64(shaman.Spec == proto.Spec_SpecEnhancementShaman, ownerStats[stats.AttackPower]*0.65, ownerStats[stats.SpellPower]) |
| 138 | + |
134 | 139 | return stats.Stats{ |
135 | 140 | stats.Stamina: ownerStats[stats.Stamina] * core.TernaryFloat64(isGuardian, 0.75, 0.75*1.2), |
136 | | - stats.SpellPower: shaman.GetSpellPowerValue(shaman.FireElementalTotem) * core.TernaryFloat64(isGuardian, FireElementalSpellPowerScaling, FireElementalSpellPowerScaling*1.8), |
| 141 | + stats.SpellPower: power * core.TernaryFloat64(isGuardian, FireElementalSpellPowerScaling, FireElementalSpellPowerScaling*1.8), |
137 | 142 |
|
138 | | - stats.PhysicalHitPercent: max(ownerSpellHitPercent/2, ownerPhysicalHitPercent), |
139 | | - stats.SpellHitPercent: max(ownerSpellHitPercent, ownerExpertiseRating/core.ExpertisePerQuarterPercentReduction/4+ownerPhysicalHitPercent), |
140 | | - stats.ExpertiseRating: max(ownerSpellHitPercent*core.ExpertisePerQuarterPercentReduction*2, ownerExpertiseRating), |
| 143 | + stats.HitRating: ownerHitRating, |
| 144 | + stats.ExpertiseRating: ownerExpertiseRating, |
141 | 145 | stats.SpellCritPercent: ownerSpellCritPercent, |
142 | 146 | stats.PhysicalCritPercent: ownerPhysicalCritPercent, |
143 | 147 | stats.HasteRating: ownerHasteRating, |
|
0 commit comments