Documentation ¶
Index ¶
- Variables
- 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) CanCastPWS(sim *core.Simulation, target *core.Unit) bool
- 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) MindFlayActionID(numTicks int32) core.ActionID
- func (priest *Priest) MindFlayTickDuration() time.Duration
- func (priest *Priest) MindSearActionID(numTicks int32) core.ActionID
- 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) 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{ItemID: 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() spell := 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], }) var curAmount float64 hots := core.NewAllyHotArray( &priest.Unit, core.Dot{ Spell: spell, 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) }, }, core.Aura{ Label: "CrimsonAcolyteRaiment2pc" + strconv.Itoa(int(priest.Index)), ActionID: spell.ActionID, }) 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 := hots[result.Target.UnitIndex] 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", 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 ¶
This section is empty.
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 Starshards *core.Spell VampiricTouch *core.Spell Dispersion *core.Spell ShadowWordPainDot *core.Dot DevouringPlagueDot *core.Dot HolyFireDot *core.Dot MindFlayDot []*core.Dot MindSearDot []*core.Dot StarshardsDot *core.Dot VampiricTouchDot *core.Dot RenewHots []*core.Dot PWSShields []*core.Shield WeakenedSouls []*core.Aura 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) CanCastPWS ¶
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) MindFlayActionID ¶
TODO Mind Flay (48156) now "periodically triggers" Mind Flay (58381), probably to allow haste to work.
The first never deals damage, so the latter should probably be used as ActionID here.
func (*Priest) MindFlayTickDuration ¶
func (*Priest) MindSearActionID ¶
TODO see Mind Flay: Mind Sear (53023) now "periodically triggers" Mind Sear (53022).
Since Mind Flay no longer is a binary spell, Mind Sear likely isn't, either.
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.RaidTarget }
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) 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
- starshards.go
- talents.go
- vampiric_touch.go
Click to show internal directories.
Click to hide internal directories.