Documentation ¶
Index ¶
- Variables
- func MindTraumaAura(target *core.Unit) *core.Aura
- type Priest
- func (priest *Priest) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
- func (priest *Priest) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (priest *Priest) AddShadowWeavingStack(sim *core.Simulation)
- func (priest *Priest) ApplyRapture(ppm float64)
- func (priest *Priest) ApplyTalents()
- func (priest *Priest) AverageMindFlayLatencyDelay(numTicks int, gcd time.Duration) time.Duration
- func (priest *Priest) GetCharacter() *core.Character
- func (priest *Priest) HasMajorGlyph(glyph proto.PriestMajorGlyph) bool
- func (priest *Priest) HasMinorGlyph(glyph proto.PriestMinorGlyph) bool
- func (priest *Priest) Initialize()
- func (priest *Priest) MindFlayTickDuration() time.Duration
- func (priest *Priest) NewShadowfiend() *Shadowfiend
- func (priest *Priest) RegisterHealingSpells()
- func (priest *Priest) RegisterHolyFireSpell(memeDream bool)
- func (priest *Priest) RegisterHymnOfHopeCD()
- func (priest *Priest) RegisterPenanceSpell()
- func (priest *Priest) RegisterSmiteSpell(memeDream bool)
- func (priest *Priest) Reset(_ *core.Simulation)
- type PriestAgent
- type SelfBuffs
- type Shadowfiend
- func (shadowfiend *Shadowfiend) GetPet() *core.Pet
- func (shadowfiend *Shadowfiend) Initialize()
- func (shadowfiend *Shadowfiend) OnAutoAttack(sim *core.Simulation, spell *core.Spell)
- func (shadowfiend *Shadowfiend) OnGCDReady(sim *core.Simulation)
- func (shadowfiend *Shadowfiend) OnPetDisable(sim *core.Simulation)
- func (shadowfiend *Shadowfiend) Reset(sim *core.Simulation)
Constants ¶
This section is empty.
Variables ¶
View Source
var ItemSetAbsolution = core.NewItemSet(core.ItemSet{ Name: "Absolution Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetConquerorSanct = core.NewItemSet(core.ItemSet{ Name: "Sanctification Garb", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { priest := agent.(PriestAgent).GetPriest() procAura := priest.NewTemporaryStatsAura("Devious Mind", core.ActionID{SpellID: 64907}, stats.Stats{stats.SpellHaste: 240}, time.Second*4) priest.RegisterAura(core.Aura{ Label: "Devious Mind Proc", 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 == priest.MindBlast { procAura.Activate(sim) } }, }) }, }, })
View Source
var ItemSetCrimsonAcolyte = core.NewItemSet(core.ItemSet{ Name: "Crimson Acolyte's Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetCrimsonAcolytesRaiment = core.NewItemSet(core.ItemSet{ Name: "Crimson Acolyte's Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { priest := agent.(PriestAgent).GetPriest() var curAmount float64 procSpell := priest.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: 70770}, SpellSchool: core.SpellSchoolHoly, ProcMask: core.ProcMaskEmpty, Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagIgnoreModifiers | core.SpellFlagHelpful, DamageMultiplier: 1, ThreatMultiplier: 1 - []float64{0, .07, .14, .20}[priest.Talents.SilentResolve], Hot: core.DotConfig{ Aura: core.Aura{ Label: "CrimsonAcolyteRaiment2pc", }, NumberOfTicks: 3, TickLength: time.Second * 3, OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, _ bool) { dot.SnapshotBaseDamage = curAmount * 0.33 dot.SnapshotAttackerMultiplier = dot.Spell.CasterHealingMultiplier() }, OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { dot.CalcAndDealPeriodicSnapshotHealing(sim, target, dot.OutcomeTick) }, }, }) priest.RegisterAura(core.Aura{ Label: "Crimson Acolytes Raiment 2pc", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnHealDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if spell != priest.FlashHeal || sim.RandomFloat("Crimson Acolytes Raiment 2pc") >= 0.33 { return } curAmount = result.Damage hot := procSpell.Hot(result.Target) hot.Apply(sim) }, }) }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetGladiatorsInvestiture = core.NewItemSet(core.ItemSet{ Name: "Gladiator's Investiture", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { agent.GetCharacter().AddStat(stats.Resilience, 100) agent.GetCharacter().AddStat(stats.SpellPower, 29) }, 4: func(agent core.Agent) { agent.GetCharacter().AddStat(stats.SpellPower, 88) }, }, })
View Source
var ItemSetGladiatorsRaiment = core.NewItemSet(core.ItemSet{ Name: "Gladiator's Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { agent.GetCharacter().AddStat(stats.Resilience, 100) agent.GetCharacter().AddStat(stats.SpellPower, 29) }, 4: func(agent core.Agent) { agent.GetCharacter().AddStat(stats.SpellPower, 88) }, }, })
View Source
var ItemSetRegaliaOfFaith = core.NewItemSet(core.ItemSet{ Name: "Regalia of Faith", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetSanctificationRegalia = core.NewItemSet(core.ItemSet{ Name: "Sanctification Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { priest := agent.(PriestAgent).GetPriest() procAura := priest.NewTemporaryStatsAura("Sanctification Reglia 4pc", core.ActionID{SpellID: 64912}, stats.Stats{stats.SpellPower: 250}, time.Second*5) priest.RegisterAura(core.Aura{ Label: "Sancitifcation Reglia 4pc", 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 == priest.PowerWordShield { procAura.Activate(sim) } }, }) }, }, })
View Source
var ItemSetValorous = core.NewItemSet(core.ItemSet{ Name: "Garb of Faith", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetVestmentsOfAbsolution = core.NewItemSet(core.ItemSet{ Name: "Vestments of Absolution", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetZabras = core.NewItemSet(core.ItemSet{ Name: "Zabra's Regalia", AlternativeName: "Velen's Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetZabrasRaiment = core.NewItemSet(core.ItemSet{ Name: "Zabra's Raiment", AlternativeName: "Velen's Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var TalentTreeSizes = [3]int{28, 27, 27}
Functions ¶
Types ¶
type Priest ¶
type Priest struct { core.Character SelfBuffs Talents *proto.PriestTalents SurgeOfLight bool Latency float64 ShadowfiendAura *core.Aura ShadowfiendPet *Shadowfiend // cached cast stuff // TODO: aoe multi-target situations will need multiple spells ticking for each target. InnerFocusAura *core.Aura MiseryAura *core.Aura ShadowWeavingAura *core.Aura ShadowyInsightAura *core.Aura ImprovedSpiritTap *core.Aura DispersionAura *core.Aura SurgeOfLightProcAura *core.Aura BindingHeal *core.Spell CircleOfHealing *core.Spell DevouringPlague *core.Spell FlashHeal *core.Spell GreaterHeal *core.Spell HolyFire *core.Spell InnerFocus *core.Spell ShadowWordPain *core.Spell MindBlast *core.Spell MindFlay []*core.Spell MindSear []*core.Spell Penance *core.Spell PenanceHeal *core.Spell PowerWordShield *core.Spell PrayerOfHealing *core.Spell PrayerOfMending *core.Spell Renew *core.Spell EmpoweredRenew *core.Spell ShadowWordDeath *core.Spell Shadowfiend *core.Spell Smite *core.Spell VampiricTouch *core.Spell Dispersion *core.Spell PWSShields []*core.Shield WeakenedSouls core.AuraArray ProcPrayerOfMending core.ApplySpellResults DpInitMultiplier float64 // set bonus cache // The mana cost of your Mind Blast is reduced by 10%. T7TwoSetBonus bool // Your Shadow Word: Death has an additional 10% chance to critically strike. T7FourSetBonus bool // Increases the damage done by your Devouring Plague by 15%. T8TwoSetBonus bool // Your Mind Blast also grants you 240 haste for 4 sec. T8FourSetBonus bool // Increases the duration of your Vampiric Touch spell by 6 sec. T9TwoSetBonus bool // Increases the critical strike chance of your Mind Flay spell by 5%. T9FourSetBonus bool // The critical strike chance of your Shadow Word: Pain, Devouring Plague, and Vampiric Touch spells is increased by 5% T10TwoSetBonus bool // Reduces the channel duration by 0.51 sec and period by 0.17 sec on your Mind Flay spell T10FourSetBonus bool }
func (*Priest) AddPartyBuffs ¶
func (priest *Priest) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
func (*Priest) AddRaidBuffs ¶
func (*Priest) AddShadowWeavingStack ¶
func (priest *Priest) AddShadowWeavingStack(sim *core.Simulation)
func (*Priest) ApplyRapture ¶ added in v0.1.7
This one is called from healing priest sim initialization because it needs an input.
func (*Priest) ApplyTalents ¶
func (priest *Priest) ApplyTalents()
func (*Priest) AverageMindFlayLatencyDelay ¶ added in v0.1.10
func (*Priest) GetCharacter ¶
func (*Priest) HasMajorGlyph ¶
func (priest *Priest) HasMajorGlyph(glyph proto.PriestMajorGlyph) bool
func (*Priest) HasMinorGlyph ¶
func (priest *Priest) HasMinorGlyph(glyph proto.PriestMinorGlyph) bool
func (*Priest) Initialize ¶
func (priest *Priest) Initialize()
func (*Priest) MindFlayTickDuration ¶
func (*Priest) NewShadowfiend ¶
func (priest *Priest) NewShadowfiend() *Shadowfiend
func (*Priest) RegisterHealingSpells ¶
func (priest *Priest) RegisterHealingSpells()
func (*Priest) RegisterHolyFireSpell ¶
func (*Priest) RegisterHymnOfHopeCD ¶
func (priest *Priest) RegisterHymnOfHopeCD()
TODO: This currently only affects the caster, not other raid members.
func (*Priest) RegisterPenanceSpell ¶
func (priest *Priest) RegisterPenanceSpell()
func (*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 SelfBuffs ¶
type SelfBuffs struct { UseShadowfiend bool UseInnerFire bool PowerInfusionTarget *proto.UnitReference }
type Shadowfiend ¶
type Shadowfiend struct { core.Pet Priest *Priest ManaMetric *core.ResourceMetrics Shadowcrawl *core.Spell ShadowcrawlAura *core.Aura }
func (*Shadowfiend) GetPet ¶
func (shadowfiend *Shadowfiend) GetPet() *core.Pet
func (*Shadowfiend) Initialize ¶
func (shadowfiend *Shadowfiend) Initialize()
func (*Shadowfiend) OnAutoAttack ¶
func (shadowfiend *Shadowfiend) OnAutoAttack(sim *core.Simulation, spell *core.Spell)
func (*Shadowfiend) OnGCDReady ¶
func (shadowfiend *Shadowfiend) OnGCDReady(sim *core.Simulation)
func (*Shadowfiend) OnPetDisable ¶ added in v0.1.27
func (shadowfiend *Shadowfiend) OnPetDisable(sim *core.Simulation)
func (*Shadowfiend) Reset ¶
func (shadowfiend *Shadowfiend) Reset(sim *core.Simulation)
Source Files ¶
- binding_heal.go
- circle_of_healing.go
- devouring_plague.go
- dispersion.go
- flash_heal.go
- greater_heal.go
- holy_fire.go
- hymn_of_hope.go
- items.go
- mind_blast.go
- mind_flay.go
- mind_sear.go
- penance.go
- power_infusion.go
- power_word_shield.go
- prayer_of_healing.go
- prayer_of_mending.go
- priest.go
- renew.go
- set_bonuses.go
- shadow_word_death.go
- shadow_word_pain.go
- shadowfiend.go
- shadowfiend_pet.go
- smite.go
- talents.go
- vampiric_touch.go
Click to show internal directories.
Click to hide internal directories.