-
Notifications
You must be signed in to change notification settings - Fork 133
/
bloodworm_pet.go
86 lines (66 loc) · 2.27 KB
/
bloodworm_pet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package deathknight
import (
"github.com/wowsims/wotlk/sim/core"
"github.com/wowsims/wotlk/sim/core/stats"
)
type BloodwormPet struct {
core.Pet
dkOwner *Deathknight
}
func (dk *Deathknight) NewBloodwormPet(_ int) *BloodwormPet {
bloodworm := &BloodwormPet{
Pet: core.NewPet("Bloodworm", &dk.Character, bloodwormPetBaseStats, dk.bloodwormStatInheritance(), false, true),
dkOwner: dk,
}
bloodworm.EnableAutoAttacks(bloodworm, core.AutoAttackOptions{
MainHand: core.Weapon{
BaseDamageMin: 37,
BaseDamageMax: 42,
SwingSpeed: 2,
CritMultiplier: 2,
},
AutoSwingMelee: true,
})
// Hit and Crit only
// bloodworm.AutoAttacks.MHConfig.ApplyEffects = func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
// baseDamage := spell.Unit.MHWeaponDamage(sim, spell.MeleeAttackPower()) +
// spell.BonusWeaponDamage()
// spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeWhite)
// }
bloodworm.AddStatDependency(stats.Strength, stats.AttackPower, 1.0+1)
bloodworm.AddStatDependency(stats.Agility, stats.MeleeCrit, 1.0+(core.CritRatingPerCritChance/83.3))
bloodworm.OnPetEnable = bloodworm.enable
bloodworm.OnPetDisable = bloodworm.disable
dk.AddPet(bloodworm)
return bloodworm
}
func (bloodworm *BloodwormPet) GetPet() *core.Pet {
return &bloodworm.Pet
}
func (bloodworm *BloodwormPet) Initialize() {
}
func (bloodworm *BloodwormPet) Reset(_ *core.Simulation) {
}
func (bloodworm *BloodwormPet) ExecuteCustomRotation(_ *core.Simulation) {
}
func (bloodworm *BloodwormPet) enable(sim *core.Simulation) {
// Snapshot extra % speed modifiers from dk owner
bloodworm.PseudoStats.MeleeSpeedMultiplier = 1
bloodworm.MultiplyMeleeSpeed(sim, bloodworm.dkOwner.PseudoStats.MeleeSpeedMultiplier)
}
func (bloodworm *BloodwormPet) disable(sim *core.Simulation) {
// Clear snapshot speed
bloodworm.PseudoStats.MeleeSpeedMultiplier = 1
bloodworm.MultiplyMeleeSpeed(sim, 1)
}
var bloodwormPetBaseStats = stats.Stats{
stats.MeleeCrit: 8 * core.CritRatingPerCritChance,
}
func (dk *Deathknight) bloodwormStatInheritance() core.PetStatInheritance {
return func(ownerStats stats.Stats) stats.Stats {
return stats.Stats{
stats.AttackPower: ownerStats[stats.AttackPower] * 0.112,
stats.MeleeHaste: ownerStats[stats.MeleeHaste],
}
}
}