Documentation
¶
Index ¶
- Constants
- Variables
- type APLValueWarlockCurrentPetMana
- type APLValueWarlockCurrentPetManaPercent
- type APLValueWarlockPetIsActive
- type APLValueWarlockShouldRecastDrainSoul
- type APLValueWarlockShouldRefreshCorruption
- type OnPetDisable
- type PetConfig
- type Warlock
- func (warlock *Warlock) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (warlock *Warlock) ApplyTalents()
- func (warlock *Warlock) GetCharacter() *core.Character
- func (warlock *Warlock) GetWarlock() *Warlock
- func (warlock *Warlock) Initialize()
- func (warlock *Warlock) NewAPLValue(rot *core.APLRotation, config *proto.APLValue) core.APLValue
- func (warlock *Warlock) OnGCDReady(_ *core.Simulation)
- func (warlock *Warlock) Reset(sim *core.Simulation)
- type WarlockAgent
- type WarlockPet
- func (wp *WarlockPet) ApplyOnPetDisable(newOnPetDisable OnPetDisable)
- func (wp *WarlockPet) Disable(sim *core.Simulation, isSacrifice bool)
- func (wp *WarlockPet) ExecuteCustomRotation(sim *core.Simulation)
- func (wp *WarlockPet) GetPet() *core.Pet
- func (wp *WarlockPet) Initialize()
- func (wp *WarlockPet) Reset(_ *core.Simulation)
Constants ¶
View Source
const ( TheBlackBook = 19337 HazzarahsCharmOfDestruction = 19957 )
View Source
const ( WarlockFlagAffliction = core.SpellFlagAgentReserved1 WarlockFlagDemonology = core.SpellFlagAgentReserved2 WarlockFlagDestruction = core.SpellFlagAgentReserved3 SpellFlagWarlock = WarlockFlagAffliction | WarlockFlagDemonology | WarlockFlagDestruction )
View Source
const ( SpellCode_WarlockNone int32 = iota SpellCode_WarlockConflagrate SpellCode_WarlockCorruption SpellCode_WarlockCurseOfAgony SpellCode_WarlockCurseOfDoom SpellCode_WarlockDeathCoil SpellCode_WarlockDemonicSacrifice SpellCode_WarlockDrainLife SpellCode_WarlockDrainSoul SpellCode_WarlockImmolate SpellCode_WarlockLifeTap SpellCode_WarlockSearingPain SpellCode_WarlockShadowBolt SpellCode_WarlockShadowburn SpellCode_WarlockSoulFire )
View Source
const ConflagrateRanks = 4
View Source
const CorruptionRanks = 7
View Source
const CurseOfAgonyRanks = 6
View Source
const DeathCoilRanks = 3
View Source
const DrainLifeRanks = 6
View Source
const DrainSoulRanks = 4
View Source
const ImmolateCastTime = time.Millisecond * 2000
View Source
const ImmolateRanks = 8
View Source
const LifeTapRanks = 6
View Source
const RainOfFireRanks = 4
View Source
const SearingPainRanks = 6
View Source
const ShadowBoltRanks = 10
View Source
const ShadowburnRanks = 6
View Source
const SiphonLifeRanks = 4
View Source
const SoulFireCastTime = time.Millisecond * 6000
View Source
const SoulFireRanks = 2
Variables ¶
View Source
var ItemSetChampionsThreads = core.NewItemSet(core.ItemSet{
Name: "Champion's Dreadgear",
Bonuses: bluePvPBonuses,
})
View Source
var ItemSetDeathmistRaiment = core.NewItemSet(core.ItemSet{ Name: "Deathmist Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddResistances(8) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 23) }, 8: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Armor, 200) }, }, })
View Source
var ItemSetDemoniacsThreads = core.NewItemSet(core.ItemSet{ Name: "Demoniac's Threads", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.AddStat(stats.SpellPower, 12) }, 3: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Improved Corruption (Demoniac's Threads)", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.Corruption { spell.DamageMultiplierAdditive += 0.02 } }, }) }, 5: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Improved Death Coil (Demoniac's Threads)", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.DeathCoil { spell.CD.Duration = time.Duration(float64(spell.CD.Duration) * 0.85) } }, }) }, }, })
View Source
var ItemSetDoomcallersAttire = core.NewItemSet(core.ItemSet{ Name: "Doomcaller's Attire", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Doomcaller Immolate Bonus", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.Immolate { spell.BaseDamageMultiplierAdditive += 0.05 } }, }) }, 5: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Doomcaller Reduced Shadow Bolt Cost", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.ShadowBolt { spell.Cost.Multiplier -= 15 } }, }) }, }, })
View Source
var ItemSetFelheartRaiment = core.NewItemSet(core.ItemSet{ Name: "Felheart Raiment", Bonuses: map[int32]core.ApplyEffect{ 8: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Shadow Cost Reduction (Felheart Raiment)", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.Spellbook { if spell.SpellSchool.Matches(core.SpellSchoolShadow) && spell.Cost != nil { spell.Cost.Multiplier -= 15 } } }, }) }, }, })
View Source
var ItemSetFieldMarshalsThreads = core.NewItemSet(core.ItemSet{
Name: "Field Marshal's Threads",
Bonuses: epicPvpBonuses,
})
View Source
var ItemSetLieutenantCommandersThreads = core.NewItemSet(core.ItemSet{
Name: "Lieutenant Commander's Dreadgear",
Bonuses: bluePvPBonuses,
})
View Source
var ItemSetNemesisRaiment = core.NewItemSet(core.ItemSet{ Name: "Nemesis Raiment", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { agent.GetCharacter().AddStat(stats.SpellPower, 23) }, 8: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Decreased Destruction Threat (Nemesis Raiment)", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.Spellbook { if spell.Flags.Matches(WarlockFlagDestruction) { spell.ThreatMultiplier *= 0.80 } } }, }) }, }, })
View Source
var ItemSetPlagueheartRaiment = core.NewItemSet(core.ItemSet{ Name: "Plagueheart Raiment", Bonuses: map[int32]core.ApplyEffect{ 4: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Corruption (Plagueheart Raiment)", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.Corruption { spell.DamageMultiplierAdditive += 0.12 } }, }) }, 6: func(agent core.Agent) { warlock := agent.(WarlockAgent).GetWarlock() warlock.RegisterAura(core.Aura{ Label: "Plagueheart", OnInit: func(aura *core.Aura, sim *core.Simulation) { for _, spell := range warlock.Corruption { spell.ThreatMultiplier *= 0.75 } for _, spell := range warlock.Immolate { spell.ThreatMultiplier *= 0.75 } for _, spell := range warlock.CurseOfAgony { spell.ThreatMultiplier *= 0.75 } }, }) }, }, })
View Source
var ItemSetWarlordsThreads = core.NewItemSet(core.ItemSet{
Name: "Warlord's Threads",
Bonuses: epicPvpBonuses,
})
View Source
var LifeTapBaseDamage = [LifeTapRanks + 1]float64{0, 30, 75, 140, 220, 310, 424}
View Source
var LifeTapSpellId = [LifeTapRanks + 1]int32{0, 1454, 1455, 1456, 11687, 11688, 11689}
View Source
var TalentTreeSizes = [3]int{17, 17, 16}
Functions ¶
This section is empty.
Types ¶
type APLValueWarlockCurrentPetMana ¶
type APLValueWarlockCurrentPetMana struct {
core.DefaultAPLValueImpl
// contains filtered or unexported fields
}
func (*APLValueWarlockCurrentPetMana) GetFloat ¶
func (value *APLValueWarlockCurrentPetMana) GetFloat(sim *core.Simulation) float64
func (*APLValueWarlockCurrentPetMana) String ¶
func (value *APLValueWarlockCurrentPetMana) String() string
func (*APLValueWarlockCurrentPetMana) Type ¶
func (value *APLValueWarlockCurrentPetMana) Type() proto.APLValueType
type APLValueWarlockCurrentPetManaPercent ¶
type APLValueWarlockCurrentPetManaPercent struct {
core.DefaultAPLValueImpl
// contains filtered or unexported fields
}
func (*APLValueWarlockCurrentPetManaPercent) GetFloat ¶
func (value *APLValueWarlockCurrentPetManaPercent) GetFloat(sim *core.Simulation) float64
func (*APLValueWarlockCurrentPetManaPercent) String ¶
func (value *APLValueWarlockCurrentPetManaPercent) String() string
func (*APLValueWarlockCurrentPetManaPercent) Type ¶
func (value *APLValueWarlockCurrentPetManaPercent) Type() proto.APLValueType
type APLValueWarlockPetIsActive ¶
type APLValueWarlockPetIsActive struct {
core.DefaultAPLValueImpl
// contains filtered or unexported fields
}
func (*APLValueWarlockPetIsActive) GetBool ¶
func (value *APLValueWarlockPetIsActive) GetBool(sim *core.Simulation) bool
func (*APLValueWarlockPetIsActive) String ¶
func (value *APLValueWarlockPetIsActive) String() string
func (*APLValueWarlockPetIsActive) Type ¶
func (value *APLValueWarlockPetIsActive) Type() proto.APLValueType
type APLValueWarlockShouldRecastDrainSoul ¶
type APLValueWarlockShouldRecastDrainSoul struct {
core.DefaultAPLValueImpl
// contains filtered or unexported fields
}
func (*APLValueWarlockShouldRecastDrainSoul) GetBool ¶
func (value *APLValueWarlockShouldRecastDrainSoul) GetBool(sim *core.Simulation) bool
func (*APLValueWarlockShouldRecastDrainSoul) String ¶
func (value *APLValueWarlockShouldRecastDrainSoul) String() string
func (*APLValueWarlockShouldRecastDrainSoul) Type ¶
func (value *APLValueWarlockShouldRecastDrainSoul) Type() proto.APLValueType
type APLValueWarlockShouldRefreshCorruption ¶
type APLValueWarlockShouldRefreshCorruption struct {
core.DefaultAPLValueImpl
// contains filtered or unexported fields
}
func (*APLValueWarlockShouldRefreshCorruption) GetBool ¶
func (value *APLValueWarlockShouldRefreshCorruption) GetBool(sim *core.Simulation) bool
func (*APLValueWarlockShouldRefreshCorruption) String ¶
func (value *APLValueWarlockShouldRefreshCorruption) String() string
func (*APLValueWarlockShouldRefreshCorruption) Type ¶
func (value *APLValueWarlockShouldRefreshCorruption) Type() proto.APLValueType
type OnPetDisable ¶
type OnPetDisable func(sim *core.Simulation, isSacrifice bool)
type Warlock ¶
type Warlock struct {
core.Character
Talents *proto.WarlockTalents
Options *proto.WarlockOptions
BasePets []*WarlockPet
ActivePet *WarlockPet
Felhunter *WarlockPet
Imp *WarlockPet
Succubus *WarlockPet
Voidwalker *WarlockPet
Conflagrate []*core.Spell
Corruption []*core.Spell
DarkPact *core.Spell
DrainSoul []*core.Spell
Immolate []*core.Spell
LifeTap []*core.Spell
SearingPain []*core.Spell
ShadowBolt []*core.Spell
Shadowburn []*core.Spell
SoulFire []*core.Spell
DrainLife []*core.Spell
RainOfFire []*core.Spell
SiphonLife []*core.Spell
DeathCoil []*core.Spell
ActiveCurseAura core.AuraArray
CurseOfElements *core.Spell
CurseOfElementsAuras core.AuraArray
CurseOfShadow *core.Spell
CurseOfShadowAuras core.AuraArray
CurseOfRecklessness *core.Spell
CurseOfRecklessnessAuras core.AuraArray
CurseOfWeakness *core.Spell
CurseOfWeaknessAuras core.AuraArray
CurseOfTongues *core.Spell
CurseOfTonguesAuras core.AuraArray
CurseOfAgony []*core.Spell
CurseOfDoom *core.Spell
AmplifyCurse *core.Spell
// Track all DoT spells for effecrs that add multipliers based on active effects
DoTSpells []*core.Spell
DebuffSpells []*core.Spell
SummonDemonSpells []*core.Spell
AmplifyCurseAura *core.Aura
ImprovedShadowBoltAuras core.AuraArray
SoulLinkAura *core.Aura
MasterDemonologistAura *core.Aura
}
func NewWarlock ¶
func (*Warlock) AddRaidBuffs ¶
func (*Warlock) ApplyTalents ¶
func (warlock *Warlock) ApplyTalents()
func (*Warlock) GetCharacter ¶
func (*Warlock) GetWarlock ¶
func (*Warlock) Initialize ¶
func (warlock *Warlock) Initialize()
func (*Warlock) NewAPLValue ¶
func (*Warlock) OnGCDReady ¶
func (warlock *Warlock) OnGCDReady(_ *core.Simulation)
func (*Warlock) Reset ¶
func (warlock *Warlock) Reset(sim *core.Simulation)
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
OnPetDisable OnPetDisable
SoulLinkAura *core.Aura
LifeTapManaMetrics *core.ResourceMetrics
// contains filtered or unexported fields
}
func (*WarlockPet) ApplyOnPetDisable ¶
func (wp *WarlockPet) ApplyOnPetDisable(newOnPetDisable OnPetDisable)
func (*WarlockPet) Disable ¶
func (wp *WarlockPet) Disable(sim *core.Simulation, isSacrifice bool)
func (*WarlockPet) ExecuteCustomRotation ¶
func (wp *WarlockPet) ExecuteCustomRotation(sim *core.Simulation)
func (*WarlockPet) GetPet ¶
func (wp *WarlockPet) GetPet() *core.Pet
func (*WarlockPet) Initialize ¶
func (wp *WarlockPet) Initialize()
func (*WarlockPet) Reset ¶
func (wp *WarlockPet) Reset(_ *core.Simulation)
Source Files
¶
- apl_values.go
- armors.go
- conflagrate.go
- corruption.go
- curses.go
- dark_pact.go
- death_coil.go
- drain_life.go
- drain_soul.go
- fel_domination.go
- felhunter.go
- immolate.go
- imp.go
- item_sets_pve.go
- item_sets_pvp.go
- items.go
- lifetap.go
- pet.go
- rain_of_fire.go
- searing_pain.go
- shadowbolt.go
- shadowburn.go
- siphon_life.go
- soul_fire.go
- succubus.go
- summon_demon.go
- talents.go
- voidwalker.go
- warlock.go
Click to show internal directories.
Click to hide internal directories.