Documentation
¶
Overview ¶
importing dependencies
Index ¶
- Constants
- Variables
- func RegisterWarlock()
- type CastReadyness
- type InfernalPet
- type PetAbilityType
- type ProcTracker
- type SpellRotation
- type Warlock
- func (warlock *Warlock) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (warlock *Warlock) ApplyTalents()
- func (warlock *Warlock) DSCooldownSync(actionID core.ActionID, isPotion bool)
- func (warlock *Warlock) DSProcCheck(sim *core.Simulation, castTime time.Duration) bool
- func (warlock *Warlock) GetCharacter() *core.Character
- func (warlock *Warlock) GetWarlock() *Warlock
- func (warlock *Warlock) GrandFirestoneBonus() float64
- func (warlock *Warlock) GrandSpellstoneBonus() float64
- func (warlock *Warlock) HasMajorGlyph(glyph proto.WarlockMajorGlyph) bool
- func (warlock *Warlock) HasMinorGlyph(glyph proto.WarlockMinorGlyph) bool
- func (warlock *Warlock) Initialize()
- func (warlock *Warlock) LifeTapOrDarkPact(sim *core.Simulation)
- func (warlock *Warlock) NewInfernal() *InfernalPet
- func (warlock *Warlock) NewWarlockPet() *WarlockPet
- func (warlock *Warlock) OnGCDReady(sim *core.Simulation)
- func (warlock *Warlock) Prepull(sim *core.Simulation)
- func (warlock *Warlock) Reset(sim *core.Simulation)
- func (warlock *Warlock) ShadowEmbraceDebuffAura(target *core.Unit) *core.Aura
- func (warlock *Warlock) ShouldCastCurseOfElements(sim *core.Simulation, target *core.Unit, curse proto.Warlock_Rotation_Curse) bool
- type WarlockAgent
- type WarlockPet
- func (wp *WarlockPet) GetPet() *core.Pet
- func (wp *WarlockPet) Initialize()
- func (wp *WarlockPet) NewPetAbility(abilityType PetAbilityType, isPrimary bool) *core.Spell
- func (wp *WarlockPet) OnGCDReady(sim *core.Simulation)
- func (wp *WarlockPet) Reset(sim *core.Simulation)
- func (wp *WarlockPet) TryCast(sim *core.Simulation, target *core.Unit, spell *core.Spell) bool
Constants ¶
View Source
const PetExpertiseScale = 1.53
Variables ¶
View Source
var ItemSetDarkCovensRegalia = core.NewItemSet(core.ItemSet{ Name: "Dark Coven's Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() pet := warlock.Pets[0].GetCharacter() DeviousMindsAura := warlock.RegisterAura(core.Aura{ Label: "Devious Minds", ActionID: core.ActionID{SpellID: 70840}, Duration: time.Second * 10, OnGain: func(aura *core.Aura, sim *core.Simulation) { aura.Unit.PseudoStats.DamageDealtMultiplier *= 1.1 }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { aura.Unit.PseudoStats.DamageDealtMultiplier /= 1.1 }, }) petDeviousMindsAura := pet.RegisterAura(core.Aura{ Label: "Devious Minds", ActionID: core.ActionID{SpellID: 70840}, Duration: time.Second * 10, OnGain: func(aura *core.Aura, sim *core.Simulation) { aura.Unit.PseudoStats.DamageDealtMultiplier *= 1.1 }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { aura.Unit.PseudoStats.DamageDealtMultiplier /= 1.1 }, }) warlock.RegisterAura(core.Aura{ Label: "4pT10 Hidden Aura", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if spell == warlock.UnstableAffliction || spell == warlock.ImmolateDot.Spell { if sim.RandomFloat("4pT10") < 0.15 { DeviousMindsAura.Activate(sim) DeviousMindsAura.Refresh(sim) petDeviousMindsAura.Activate(sim) petDeviousMindsAura.Refresh(sim) } } }, }) }, }, })
T10
View Source
var ItemSetDeathbringerGarb = core.NewItemSet(core.ItemSet{ Name: "Deathbringer Garb", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
T8
View Source
var ItemSetGladiatorsFelshroud = core.NewItemSet(core.ItemSet{ Name: "Gladiator's Felshroud", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.AddStat(stats.SpellPower, 29) }, 4: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.AddStat(stats.SpellPower, 88) }, }, })
View Source
var ItemSetGuldansRegalia = core.NewItemSet(core.ItemSet{ Name: "Gul'dan's Regalia", AlternativeName: "Kel'Thuzad's Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() pet := warlock.Pets[0].GetCharacter() pet.AddStats(stats.Stats{ stats.MeleeCrit: 10 * core.CritRatingPerCritChance, stats.SpellCrit: 10 * core.CritRatingPerCritChance, }) }, 4: func(agent core.Agent) { }, }, })
T9
View Source
var ItemSetMaleficRaiment = core.NewItemSet(core.ItemSet{ Name: "Malefic Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
T6
View Source
var ItemSetPlagueheartGarb = core.NewItemSet(core.ItemSet{ Name: "Plagueheart Garb", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() const bonusCrit = 10 * core.CritRatingPerCritChance warlock.DemonicSoulAura = warlock.RegisterAura(core.Aura{ Label: "Demonic Soul", ActionID: core.ActionID{SpellID: 61595}, Duration: time.Second * 10, OnGain: func(aura *core.Aura, sim *core.Simulation) { warlock.ShadowBolt.BonusCritRating += bonusCrit warlock.Incinerate.BonusCritRating += bonusCrit }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { warlock.ShadowBolt.BonusCritRating -= bonusCrit warlock.Incinerate.BonusCritRating -= bonusCrit }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if spell == warlock.ShadowBolt || spell == warlock.Incinerate { warlock.DemonicSoulAura.Deactivate(sim) } }, }) warlock.RegisterAura(core.Aura{ Label: "2pT7 Hidden Aura", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if spell == warlock.Corruption || spell == warlock.Immolate { if sim.RandomFloat("2pT7") < 0.15 { warlock.DemonicSoulAura.Activate(sim) } } }, }) }, 4: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.SpiritsoftheDamnedAura = warlock.RegisterAura(core.Aura{ Label: "Spirits of the Damned", ActionID: core.ActionID{SpellID: 61082}, Duration: time.Second * 10, OnGain: func(aura *core.Aura, sim *core.Simulation) { aura.Unit.AddStatDynamic(sim, stats.Spirit, 300) }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { aura.Unit.AddStatDynamic(sim, stats.Spirit, -300) }, }) warlock.RegisterAura(core.Aura{ Label: "4pT7 Hidden Aura", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if spell == warlock.LifeTap { warlock.SpiritsoftheDamnedAura.Activate(sim) } }, }) }, }, })
T7
View Source
var TalentTreeSizes = [3]int{28, 27, 26}
Functions ¶
func RegisterWarlock ¶
func RegisterWarlock()
Types ¶
type CastReadyness ¶
type CastReadyness func(*core.Simulation) time.Duration
type InfernalPet ¶ added in v0.1.8
func (*InfernalPet) GetPet ¶ added in v0.1.8
func (infernal *InfernalPet) GetPet() *core.Pet
func (*InfernalPet) Initialize ¶ added in v0.1.8
func (infernal *InfernalPet) Initialize()
func (*InfernalPet) OnGCDReady ¶ added in v0.1.8
func (infernal *InfernalPet) OnGCDReady(sim *core.Simulation)
func (*InfernalPet) Reset ¶ added in v0.1.8
func (infernal *InfernalPet) Reset(sim *core.Simulation)
type PetAbilityType ¶
type PetAbilityType byte
const ( Unknown PetAbilityType = iota Cleave Intercept LashOfPain ShadowBite Firebolt )
type ProcTracker ¶ added in v0.1.5
type ProcTracker struct {
// contains filtered or unexported fields
}
type SpellRotation ¶
type SpellRotation struct { Spell *core.Spell CastIn CastReadyness Priority int }
type Warlock ¶
type Warlock struct { core.Character Talents *proto.WarlockTalents Options *proto.Warlock_Options Rotation *proto.Warlock_Rotation Pet *WarlockPet ShadowBolt *core.Spell Incinerate *core.Spell Immolate *core.Spell ImmolateDot *core.Dot UnstableAffliction *core.Spell Corruption *core.Spell Haunt *core.Spell LifeTap *core.Spell DarkPact *core.Spell ChaosBolt *core.Spell SoulFire *core.Spell Conflagrate *core.Spell ConflagrateDot *core.Dot DrainSoul *core.Spell Shadowburn *core.Spell CurseOfElements *core.Spell CurseOfElementsAura *core.Aura CurseOfWeakness *core.Spell CurseOfWeaknessAura *core.Aura CurseOfTongues *core.Spell CurseOfTonguesAura *core.Aura CurseOfAgony *core.Spell CurseOfDoom *core.Spell Seed *core.Spell SeedDamageTracker []float64 NightfallProcAura *core.Aura EradicationAura *core.Aura DemonicEmpowerment *core.Spell DemonicEmpowermentAura *core.Aura DemonicPactAura *core.Aura DemonicSoulAura *core.Aura Metamorphosis *core.Spell MetamorphosisAura *core.Aura ImmolationAura *core.Spell HauntDebuffAura *core.Aura MoltenCoreAura *core.Aura DecimationAura *core.Aura PyroclasmAura *core.Aura BackdraftAura *core.Aura EmpoweredImpAura *core.Aura GlyphOfLifeTapAura *core.Aura SpiritsoftheDamnedAura *core.Aura Infernal *InfernalPet Inferno *core.Spell // Rotation related memory CorruptionRolloverPower float64 DrainSoulRolloverPower float64 // The sum total of demonic pact spell power * seconds. DPSPAggregate float64 PreviousTime time.Duration SpellsRotation []SpellRotation CritDebuffCategory *core.ExclusiveCategory // contains filtered or unexported fields }
func (*Warlock) AddRaidBuffs ¶
func (*Warlock) ApplyTalents ¶
func (warlock *Warlock) ApplyTalents()
func (*Warlock) DSCooldownSync ¶ added in v0.1.5
func (*Warlock) DSProcCheck ¶ added in v0.1.5
func (*Warlock) GetCharacter ¶
func (*Warlock) GetWarlock ¶
func (*Warlock) GrandFirestoneBonus ¶ added in v0.1.7
func (*Warlock) GrandSpellstoneBonus ¶ added in v0.1.7
func (*Warlock) HasMajorGlyph ¶
func (warlock *Warlock) HasMajorGlyph(glyph proto.WarlockMajorGlyph) bool
func (*Warlock) HasMinorGlyph ¶
func (warlock *Warlock) HasMinorGlyph(glyph proto.WarlockMinorGlyph) bool
func (*Warlock) Initialize ¶
func (warlock *Warlock) Initialize()
func (*Warlock) LifeTapOrDarkPact ¶
func (warlock *Warlock) LifeTapOrDarkPact(sim *core.Simulation)
Regen Spells: Casts the regen spell that will give you the most mana, includes a error whenever we cast pact on full mana.
func (*Warlock) NewInfernal ¶ added in v0.1.8
func (warlock *Warlock) NewInfernal() *InfernalPet
func (*Warlock) NewWarlockPet ¶
func (warlock *Warlock) NewWarlockPet() *WarlockPet
func (*Warlock) OnGCDReady ¶
func (warlock *Warlock) OnGCDReady(sim *core.Simulation)
This function is an intermediary, it is used when sim has a GCD ready, not much to see here.
func (*Warlock) Prepull ¶ added in v0.1.8
func (warlock *Warlock) Prepull(sim *core.Simulation)
func (*Warlock) Reset ¶
func (warlock *Warlock) Reset(sim *core.Simulation)
func (*Warlock) ShadowEmbraceDebuffAura ¶
func (*Warlock) ShouldCastCurseOfElements ¶
func (warlock *Warlock) ShouldCastCurseOfElements(sim *core.Simulation, target *core.Unit, curse proto.Warlock_Rotation_Curse) bool
type WarlockAgent ¶
type WarlockAgent interface {
GetWarlock() *Warlock
}
Agent is a generic way to access underlying warlock on any of the agents.
type WarlockPet ¶
type WarlockPet struct { core.Pet DemonicEmpowermentAura *core.Aura // contains filtered or unexported fields }
func (*WarlockPet) GetPet ¶
func (wp *WarlockPet) GetPet() *core.Pet
func (*WarlockPet) Initialize ¶
func (wp *WarlockPet) Initialize()
func (*WarlockPet) NewPetAbility ¶
func (wp *WarlockPet) NewPetAbility(abilityType PetAbilityType, isPrimary bool) *core.Spell
func (*WarlockPet) OnGCDReady ¶
func (wp *WarlockPet) OnGCDReady(sim *core.Simulation)
func (*WarlockPet) Reset ¶
func (wp *WarlockPet) Reset(sim *core.Simulation)
func (*WarlockPet) TryCast ¶
func (wp *WarlockPet) TryCast(sim *core.Simulation, target *core.Unit, spell *core.Spell) bool
TODO: this seems pointless Returns whether the ability was successfully cast.
Source Files
¶
- DSprocsHelper.go
- chaos_bolt.go
- conflagrate.go
- corruption.go
- curses.go
- darkpact.go
- demonic_empowerment.go
- drain_soul.go
- haunt.go
- immolate.go
- incinerate.go
- inferno.go
- items.go
- lifetap.go
- metamorphosis.go
- pet.go
- pet_abilities.go
- rotations.go
- seed.go
- shadowbolt.go
- shadowburn.go
- soul_fire.go
- talents.go
- unstable_affliction.go
- warlock.go
Click to show internal directories.
Click to hide internal directories.