Documentation ¶
Index ¶
- Constants
- Variables
- type EyeOfTheVoid
- func (eyeOfTheVoid *EyeOfTheVoid) ExecuteCustomRotation(sim *core.Simulation)
- func (eyeOfTheVoid *EyeOfTheVoid) GetPet() *core.Pet
- func (eyeOfTheVoid *EyeOfTheVoid) Initialize()
- func (eyeOfTheVoid *EyeOfTheVoid) OnPetDisable(sim *core.Simulation)
- func (eyeOfTheVoid *EyeOfTheVoid) Reset(sim *core.Simulation)
- type Homunculus
- type Priest
- func (priest *Priest) AddPartyBuffs(_ *proto.PartyBuffs)
- func (priest *Priest) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (priest *Priest) AddShadowWeavingStack(sim *core.Simulation, target *core.Unit)
- func (priest *Priest) ApplyRunes()
- func (priest *Priest) ApplyTalents()
- func (priest *Priest) GetCharacter() *core.Character
- func (priest *Priest) HasRune(rune proto.PriestRune) bool
- func (priest *Priest) Initialize()
- func (priest *Priest) NewEyeOfTheVoid() *EyeOfTheVoid
- func (priest *Priest) NewHomunculus(idx int32, npcID int32) *Homunculus
- func (priest *Priest) NewShadowfiend() *Shadowfiend
- func (priest *Priest) RegisterHealingSpells()
- func (priest *Priest) RegisterPenanceSpell()
- func (priest *Priest) RegisterSmiteSpell()
- func (priest *Priest) Reset(_ *core.Simulation)
- type PriestAgent
- type Shadowfiend
Constants ¶
View Source
const ( SpellCode_PriestNone int32 = iota SpellCode_PriestFlashHeal SpellCode_PriestGreaterHeal SpellCode_PriestHeal SpellCode_PriestHolyFire SpellCode_PriestMindBlast SpellCode_PriestMindFlay SpellCode_PriestMindSpike SpellCode_PriestSmite SpellCode_PriestVampiricTouch )
View Source
const DevouringPlagueRanks = 6
View Source
const HolyFireRanks = 8
View Source
const MindBlastRanks = 9
View Source
const MindFlayRanks = 6
View Source
const MindFlayTicks = 3
View Source
const MindSearTicks = 5
View Source
const ShadowWordPainRanks = 8
View Source
const SmiteRanks = 8
View Source
const (
SpellFlagPriest = core.SpellFlagAgentReserved1
)
Variables ¶
View Source
var DevouringPlagueBaseDamage = [DevouringPlagueRanks + 1]float64{0, 152, 272, 400, 544, 712, 904}
View Source
var DevouringPlagueLevel = [DevouringPlagueRanks + 1]int{0, 20, 28, 36, 44, 52, 60}
View Source
var DevouringPlagueManaCost = [DevouringPlagueRanks + 1]float64{0, 215, 350, 495, 645, 810, 985}
View Source
var DevouringPlagueSpellId = [DevouringPlagueRanks + 1]int32{0, 2944, 19276, 19277, 19278, 19279, 19280}
View Source
var HolyFireBaseDamage = [HolyFireRanks + 1][]float64{{0}, {84, 104}, {97, 122}, {144, 178}, {173, 218}, {219, 273}, {259, 328}, {323, 406}, {355, 449}}
View Source
var HolyFireDotDamage = [HolyFireRanks + 1]float64{0, 30, 40, 55, 65, 85, 100, 125, 145}
View Source
var HolyFireLevel = [HolyFireRanks + 1]int{0, 20, 24, 30, 36, 42, 48, 54, 60}
View Source
var HolyFireManaCost = [HolyFireRanks + 1]float64{0, 85, 95, 125, 145, 170, 200, 230, 255}
View Source
var HolyFireSpellCoef = [HolyFireRanks + 1]float64{0, 0.123, 0.271, 0.554, 0.714, 0.714, 0.714, 0.714, 0.714}
View Source
var HolyFireSpellId = [HolyFireRanks + 1]int32{0, 14914, 15262, 15263, 15264, 15265, 15266, 15267, 15261}
View Source
var ItemSetBenevolentProphetsVestments = core.NewItemSet(core.ItemSet{ Name: "Benevolent Prophet's Vestments", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.MP5, 4) }, 3: func(agent core.Agent) { c := agent.GetCharacter() procAura := c.NewTemporaryStatsAura("Faith and Magic Proc", core.ActionID{SpellID: 449923}, stats.Stats{stats.SpellPower: 60}, time.Second*15) handler := func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) { if spell.SpellSchool.Matches(core.SpellSchoolHoly) { procAura.Activate(sim) } } core.MakeProcTriggerAura(&c.Unit, core.ProcTrigger{ Name: "Faith and Magic", Callback: core.CallbackOnCastComplete, ProcMask: core.ProcMaskSpellDamage, ProcChance: 1, Handler: handler, }) }, }, })
View Source
var ItemSetChampionsInvestiture = core.NewItemSet(core.ItemSet{ Name: "Champion's Investiture", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 44) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
View Source
var ItemSetChampionsRaiment = core.NewItemSet(core.ItemSet{ Name: "Champion's Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 23) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
View Source
var ItemSetDawnProphecy = core.NewItemSet(core.ItemSet{ Name: "Dawn Prophecy", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { c := agent.GetCharacter() c.AddStats(stats.Stats{ stats.MeleeCrit: 2 * core.CritRatingPerCritChance, stats.SpellCrit: 2 * core.CritRatingPerCritChance, }) }, 6: func(agent core.Agent) { }, }, })
View Source
var ItemSetLieutenantCommandersInvestiture = core.NewItemSet(core.ItemSet{ Name: "Lieutenant Commander's Investiture", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 44) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
View Source
var ItemSetLieutenantCommandersRaiment = core.NewItemSet(core.ItemSet{ Name: "Lieutenant Commander's Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 23) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
View Source
var ItemSetTwilightProphecy = core.NewItemSet(core.ItemSet{ Name: "Twilight Prophecy", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { c := agent.GetCharacter() c.AddStats(stats.Stats{ stats.MeleeCrit: 2 * core.CritRatingPerCritChance, stats.SpellCrit: 2 * core.CritRatingPerCritChance, }) }, 6: func(agent core.Agent) { priest := agent.(PriestAgent).GetPriest() damageMultiplier := 1.50 durationDivisor := time.Duration(2) buffAura := priest.GetOrRegisterAura(core.Aura{ Label: "Melting Faces", ActionID: core.ActionID{SpellID: 456549}, Duration: core.NeverExpires, OnGain: func(aura *core.Aura, sim *core.Simulation) { for _, spells := range priest.MindFlay { for _, spell := range spells { if spell != nil { spell.DamageMultiplier *= damageMultiplier for _, dot := range spell.Dots() { if dot != nil { dot.TickLength /= durationDivisor } } } } } }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { for _, spells := range priest.MindFlay { for _, spell := range spells { if spell != nil { spell.DamageMultiplier /= damageMultiplier for _, dot := range spell.Dots() { if dot != nil { dot.TickLength *= durationDivisor } } } } } }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if spell.SpellCode == SpellCode_PriestMindFlay { aura.Deactivate(sim) } }, }) priest.GetOrRegisterAura(core.Aura{ Label: "S03 - Item - T1 - Priest - Shadow 6P Bonus", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if spell.SpellCode == SpellCode_PriestMindBlast && result.DidCrit() { buffAura.Activate(sim) } }, }) }, }, })
View Source
var ItemSetVestmentsOfTheVirtuous = core.NewItemSet(core.ItemSet{ Name: "Vestments of the Virtuous", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 23) }, 4: func(agent core.Agent) { c := agent.GetCharacter() actionID := core.ActionID{SpellID: 450576} manaMetrics := c.NewManaMetrics(actionID) core.MakeProcTriggerAura(&c.Unit, core.ProcTrigger{ Name: "S03 - Mana Proc on Cast - Vestments of the Devout", Callback: core.CallbackOnCastComplete, ProcMask: core.ProcMaskSpellDamage | core.ProcMaskSpellHealing, ProcChance: 0.06, Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) { if c.HasManaBar() { c.AddMana(sim, 300, manaMetrics) } }, }) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddResistances(8) }, 8: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Armor, 200) }, }, })
View Source
var MindBlastBaseDamage = [MindBlastRanks + 1][]float64{{0}, {42, 46}, {76, 83}, {115, 124}, {174, 184}, {225, 239}, {279, 297}, {354, 375}, {437, 461}, {508, 537}}
View Source
var MindBlastLevel = [MindBlastRanks + 1]int{0, 10, 16, 22, 28, 34, 40, 46, 52, 58}
View Source
var MindBlastManaCost = [MindBlastRanks + 1]float64{0, 50, 80, 110, 150, 185, 225, 265, 310, 350}
View Source
var MindBlastSpellCoef = [MindBlastRanks + 1]float64{0, .268, .364, .429, .429, .429, .429, .429, .429, .429}
View Source
var MindBlastSpellId = [MindBlastRanks + 1]int32{0, 8092, 8102, 8103, 8104, 8105, 8106, 10945, 10946, 10947}
View Source
var MindFlayBaseDamage = [MindFlayRanks + 1]float64{0, 75, 126, 186, 261, 330, 426}
View Source
var MindFlayLevel = [MindFlayRanks + 1]int{0, 20, 28, 36, 44, 52, 60}
View Source
var MindFlayManaCost = [MindFlayRanks + 1]float64{0, 45, 70, 100, 135, 165, 205}
View Source
var MindFlaySpellId = [MindFlayRanks + 1]int32{0, 15407, 17311, 17312, 17313, 17314, 18807}
View Source
var MindFlayTickSpellId = [MindFlayRanks + 1]int32{0, 16568, 7378, 17316, 17317, 17318, 18808}
View Source
var ShadowWordPainBaseDamage = [ShadowWordPainRanks + 1]float64{0, 30, 66, 132, 234, 366, 510, 672, 852}
View Source
var ShadowWordPainLevel = [ShadowWordPainRanks + 1]int{0, 4, 10, 18, 26, 34, 42, 50, 58}
View Source
var ShadowWordPainManaCost = [ShadowWordPainRanks + 1]float64{0, 25, 50, 95, 155, 230, 305, 385, 470}
View Source
var ShadowWordPainSpellCoef = [ShadowWordPainRanks + 1]float64{0, 0.067, 0.104, 0.154, 0.167, 0.167, 0.167, 0.167, 0.167} // per tick
View Source
var ShadowWordPainSpellId = [ShadowWordPainRanks + 1]int32{0, 589, 594, 970, 992, 2767, 10892, 10893, 10894}
View Source
var SmiteBaseDamage = [SmiteRanks + 1][]float64{{0}, {15, 20}, {28, 34}, {58, 67}, {94, 109}, {158, 178}, {216, 244}, {296, 333}, {384, 429}}
View Source
var SmiteCastTime = [SmiteRanks + 1]int{0, 1500, 2000, 2500, 2500, 2500, 2500, 2500, 2500}
View Source
var SmiteLevel = [SmiteRanks + 1]int{0, 1, 6, 14, 22, 30, 38, 46, 54}
View Source
var SmiteManaCost = [SmiteRanks + 1]float64{0, 20, 30, 60, 95, 140, 185, 230, 280}
View Source
var SmiteSpellCoef = [SmiteRanks + 1]float64{0, 0.123, 0.271, 0.554, 0.714, 0.714, 0.714, 0.714, 0.714}
View Source
var SmiteSpellId = [SmiteRanks + 1]int32{0, 585, 591, 598, 984, 1004, 6060, 10933, 10934}
View Source
var TalentTreeSizes = [3]int{15, 16, 16}
Functions ¶
This section is empty.
Types ¶
type EyeOfTheVoid ¶ added in v0.0.7
type EyeOfTheVoid struct { core.Pet Priest *Priest ShadowBolt *core.Spell // contains filtered or unexported fields }
func (*EyeOfTheVoid) ExecuteCustomRotation ¶ added in v0.0.7
func (eyeOfTheVoid *EyeOfTheVoid) ExecuteCustomRotation(sim *core.Simulation)
func (*EyeOfTheVoid) GetPet ¶ added in v0.0.7
func (eyeOfTheVoid *EyeOfTheVoid) GetPet() *core.Pet
func (*EyeOfTheVoid) Initialize ¶ added in v0.0.7
func (eyeOfTheVoid *EyeOfTheVoid) Initialize()
func (*EyeOfTheVoid) OnPetDisable ¶ added in v0.0.7
func (eyeOfTheVoid *EyeOfTheVoid) OnPetDisable(sim *core.Simulation)
func (*EyeOfTheVoid) Reset ¶ added in v0.0.7
func (eyeOfTheVoid *EyeOfTheVoid) Reset(sim *core.Simulation)
type Homunculus ¶
type Homunculus struct { core.Pet Priest *Priest PrimarySpell *core.Spell // contains filtered or unexported fields }
func (*Homunculus) ExecuteCustomRotation ¶
func (homunculus *Homunculus) ExecuteCustomRotation(sim *core.Simulation)
func (*Homunculus) GetPet ¶
func (homunculus *Homunculus) GetPet() *core.Pet
func (*Homunculus) Initialize ¶
func (homunculus *Homunculus) Initialize()
func (*Homunculus) OnPetDisable ¶
func (homunculus *Homunculus) OnPetDisable(sim *core.Simulation)
func (*Homunculus) Reset ¶
func (homunculus *Homunculus) Reset(sim *core.Simulation)
type Priest ¶
type Priest struct { core.Character Talents *proto.PriestTalents Latency float64 MindFlayModifier float64 // For Twisted Faith MindBlastModifier float64 // For Twisted Faith MindBlastCritChanceModifier float64 CircleOfHealing *core.Spell DevouringPlague []*core.Spell Dispersion *core.Spell EmpoweredRenew *core.Spell EyeOfTheVoid *core.Spell FlashHeal []*core.Spell GreaterHeal []*core.Spell HolyFire []*core.Spell Homunculi *core.Spell InnerFocus *core.Spell MindBlast []*core.Spell MindFlay [][]*core.Spell // 1 entry for each tick for each rank MindSear []*core.Spell // 1 entry for each tick MindSpike *core.Spell Penance *core.Spell PenanceHeal *core.Spell PowerWordShield []*core.Spell PrayerOfHealing []*core.Spell PrayerOfMending *core.Spell Renew []*core.Spell Shadowfiend *core.Spell Shadowform *core.Spell ShadowWeavingProc *core.Spell ShadowWordDeath *core.Spell ShadowWordPain []*core.Spell Smite []*core.Spell VampiricEmbrace *core.Spell VampiricTouch *core.Spell VoidPlague *core.Spell DispersionAura *core.Aura EyeOfTheVoidAura *core.Aura HomunculiAura *core.Aura InnerFocusAura *core.Aura ShadowfiendAura *core.Aura ShadowformAura *core.Aura SurgeOfLightAura *core.Aura MindSpikeAuras core.AuraArray ShadowWeavingAuras core.AuraArray VampiricEmbraceAuras core.AuraArray WeakenedSouls core.AuraArray EyeOfTheVoidPet *EyeOfTheVoid HomunculiPets []*Homunculus ShadowfiendPet *Shadowfiend ProcPrayerOfMending core.ApplySpellResults }
func (*Priest) AddPartyBuffs ¶
func (priest *Priest) AddPartyBuffs(_ *proto.PartyBuffs)
func (*Priest) AddRaidBuffs ¶
func (*Priest) AddShadowWeavingStack ¶
func (priest *Priest) AddShadowWeavingStack(sim *core.Simulation, target *core.Unit)
func (*Priest) ApplyRunes ¶
func (priest *Priest) ApplyRunes()
func (*Priest) ApplyTalents ¶
func (priest *Priest) ApplyTalents()
func (*Priest) GetCharacter ¶
func (*Priest) Initialize ¶
func (priest *Priest) Initialize()
func (*Priest) NewEyeOfTheVoid ¶ added in v0.0.7
func (priest *Priest) NewEyeOfTheVoid() *EyeOfTheVoid
func (*Priest) NewHomunculus ¶
func (priest *Priest) NewHomunculus(idx int32, npcID int32) *Homunculus
func (*Priest) NewShadowfiend ¶
func (priest *Priest) NewShadowfiend() *Shadowfiend
func (*Priest) RegisterHealingSpells ¶
func (priest *Priest) RegisterHealingSpells()
func (*Priest) RegisterPenanceSpell ¶
func (priest *Priest) RegisterPenanceSpell()
func (*Priest) RegisterSmiteSpell ¶
func (priest *Priest) RegisterSmiteSpell()
func (*Priest) Reset ¶
func (priest *Priest) Reset(_ *core.Simulation)
type PriestAgent ¶
type PriestAgent interface {
GetPriest() *Priest
}
Agent is a generic way to access underlying priest on any of the agents.
type Shadowfiend ¶
type Shadowfiend struct { core.Pet Priest *Priest Shadowcrawl *core.Spell ShadowcrawlAura *core.Aura }
func (*Shadowfiend) ExecuteCustomRotation ¶
func (shadowfiend *Shadowfiend) ExecuteCustomRotation(sim *core.Simulation)
func (*Shadowfiend) GetPet ¶
func (shadowfiend *Shadowfiend) GetPet() *core.Pet
func (*Shadowfiend) Initialize ¶
func (shadowfiend *Shadowfiend) Initialize()
func (*Shadowfiend) OnPetDisable ¶
func (shadowfiend *Shadowfiend) OnPetDisable(sim *core.Simulation)
func (*Shadowfiend) Reset ¶
func (shadowfiend *Shadowfiend) Reset(sim *core.Simulation)
Source Files ¶
- circle_of_healing.go
- devouring_plague.go
- dispersion.go
- eye_of_the_void.go
- eye_of_the_void_pet.go
- flash_heal.go
- greater_heal.go
- holy_fire.go
- homunculi.go
- homunculus_pet.go
- item_sets_pve.go
- item_sets_pvp.go
- items.go
- mind_blast.go
- mind_flay.go
- mind_sear.go
- mind_spike.go
- penance.go
- power_infusion.go
- power_word_shield.go
- prayer_of_healing.go
- prayer_of_mending.go
- priest.go
- renew.go
- runes.go
- shadow_word_death.go
- shadow_word_pain.go
- shadowfiend.go
- shadowfiend_pet.go
- smite.go
- talents.go
- vampiric_embrace.go
- vampiric_touch.go
- void_plague.go
- void_zone.go
Click to show internal directories.
Click to hide internal directories.