Documentation
¶
Index ¶
- Constants
- Variables
- type MindBender
- func (mindbender *MindBender) ExecuteCustomRotation(sim *core.Simulation)
- func (mindbender *MindBender) GetPet() *core.Pet
- func (mindbender *MindBender) Initialize()
- func (mindbender *MindBender) OnEncounterStart(sim *core.Simulation)
- func (mindbender *MindBender) OnPetDisable(sim *core.Simulation)
- func (mindbender *MindBender) Reset(sim *core.Simulation)
- type Priest
- func (priest *Priest) AddDarkEvangelismStack(sim *core.Simulation)
- func (priest *Priest) AddHolyEvanglismStack(sim *core.Simulation)
- func (priest *Priest) AddPartyBuffs(_ *proto.PartyBuffs)
- func (priest *Priest) ApplyGlyphs()
- func (priest *Priest) ApplyTalents()
- 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) NewMindBender() *MindBender
- func (priest *Priest) NewShadowfiend() *Shadowfiend
- func (priest *Priest) OnEncounterStart(sim *core.Simulation)
- func (priest *Priest) Reset(_ *core.Simulation)
- type PriestAgent
- type SelfBuffs
- type Shadowfiend
- func (shadowfiend *Shadowfiend) ExecuteCustomRotation(sim *core.Simulation)
- func (shadowfiend *Shadowfiend) GetPet() *core.Pet
- func (shadowfiend *Shadowfiend) Initialize()
- func (shadowfiend *Shadowfiend) OnEncounterStart(_ *core.Simulation)
- func (shadowfiend *Shadowfiend) OnPetDisable(sim *core.Simulation)
- func (shadowfiend *Shadowfiend) Reset(sim *core.Simulation)
- type TargetDoTInfo
Constants ¶
View Source
const ( PriestSpellFlagNone int64 = 0 PriestSpellArchangel int64 = 1 << iota PriestSpellDarkArchangel PriestSpellBindingHeal PriestSpellCascade PriestSpellCircleOfHealing PriestSpellDevouringPlague PriestSpellDevouringPlagueDoT PriestSpellDevouringPlagueHeal PriestSpellDesperatePrayer PriestSpellDispersion PriestSpellDivineAegis PriestSpellDivineHymn PriestSpellDivineStar PriestSpellEmpoweredRenew PriestSpellFade PriestSpellFlashHeal PriestSpellGreaterHeal PriestSpellGuardianSpirit PriestSpellHalo PriestSpellHolyFire PriestSpellHolyNova PriestSpellHolyWordChastise PriestSpellHolyWordSanctuary PriestSpellHolyWordSerenity PriestSpellHymnOfHope PriestSpellImprovedDevouringPlague PriestSpellInnerFire PriestSpellInnerFocus PriestSpellInnerWill PriestSpellManaBurn PriestSpellMindBender PriestSpellMindBlast PriestSpellMindFlay PriestSpellMindSear PriestSpellMindSpike PriestSpellMindTrauma PriestSpellPainSuppresion PriestSpellPenance PriestSpellPowerInfusion PriestSpellPowerWordBarrier PriestSpellPowerWordShield PriestSpellPrayerOfHealing PriestSpellPrayerOfMending PriestSpellPsychicScream PriestSpellRenew PriestSpellShadowOrbPassive PriestSpellShadowyRecall PriestSpellShadowWordDeath PriestSpellShadowWordPain PriestSpellShadowFiend PriestSpellShadowyApparation PriestSpellSmite PriestSpellVampiricEmbrace PriestSpellVampiricTouch PriestSpellLast PriestSpellsAll = PriestSpellLast<<1 - 1 PriestSpellDoT = PriestSpellDevouringPlague | PriestSpellHolyFire | PriestSpellMindFlay | PriestSpellShadowWordPain | PriestSpellVampiricTouch | PriestSpellImprovedDevouringPlague PriestSpellInstant = PriestSpellCircleOfHealing | PriestSpellDesperatePrayer | PriestSpellDevouringPlague | PriestSpellImprovedDevouringPlague | PriestSpellFade | PriestSpellGuardianSpirit | PriestSpellHolyNova | PriestSpellHolyWordChastise | PriestSpellHolyWordSanctuary | PriestSpellHolyWordSerenity | PriestSpellInnerFire | PriestSpellPainSuppresion | PriestSpellPowerInfusion | PriestSpellPowerWordBarrier | PriestSpellPowerWordShield | PriestSpellRenew | PriestSpellShadowWordDeath | PriestSpellShadowWordPain | PriestSpellVampiricEmbrace PriestShadowSpells = PriestSpellImprovedDevouringPlague | PriestSpellDevouringPlague | PriestSpellShadowWordDeath | PriestSpellShadowWordPain | PriestSpellMindFlay | PriestSpellMindBlast | PriestSpellMindSear | PriestSpellMindSpike | PriestSpellVampiricTouch )
View Source
const PowerInfusionCD = time.Minute * 2
View Source
const PowerInfusionDuration = time.Second * 20
View Source
const SearCoeff = 0.3
View Source
const SearScale = 0.3
View Source
const SearVariance = 0.08
View Source
const SwpScaleCoeff = 0.629660992297
View Source
const SwpSpellCoeff = 0.310169488695
View Source
const VtScaleCoeff = 0.071
View Source
const VtSpellCoeff = 0.415
Variables ¶
View Source
var ItemSetRegaliaOfTheExorcist = core.NewItemSet(core.ItemSet{ Name: "Regalia of the Exorcist", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(agent core.Agent, setBonusAura *core.Aura) { priest := agent.(PriestAgent).GetPriest() setBonusAura.MaxStacks = math.MaxInt32 setBonusAura.AttachProcTrigger(core.ProcTrigger{ Name: "Regalia of the Exorcist - 2P", SpellFlags: core.SpellFlagPassiveSpell, ProcChance: 0.65, ClassSpellMask: PriestSpellShadowyApparation, Callback: core.CallbackOnSpellHitDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { setBonusAura.AddStack(sim) if priest.ShadowWordPain != nil && priest.ShadowWordPain.Dot(result.Target).IsActive() { dot := priest.ShadowWordPain.Dot(result.Target) if priest.T15_2PC_ExtensionTracker[result.Target.Index].Swp <= sim.CurrentTime { dot.DurationExtendSnapshot(sim, dot.CalcTickPeriod()) } else { dot.AddTick() } } if priest.VampiricTouch != nil && priest.VampiricTouch.Dot(result.Target).IsActive() { dot := priest.VampiricTouch.Dot(result.Target) if priest.T15_2PC_ExtensionTracker[result.Target.Index].VT <= sim.CurrentTime { dot.DurationExtendSnapshot(sim, dot.CalcTickPeriod()) } else { dot.AddTick() } } }, }).ExposeToAPL(138156) }, 4: func(agent core.Agent, setBonusAura *core.Aura) { priest := agent.(PriestAgent).GetPriest() setBonusAura.AttachProcTrigger(core.ProcTrigger{ Name: "Regalia of the Exorcist - 4P", ProcMask: core.ProcMaskSpellDamage, ProcChance: 0.1, ClassSpellMask: PriestSpellVampiricTouch, Outcome: core.OutcomeLanded, Callback: core.CallbackOnPeriodicDamageDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { priest.ShadowyApparition.Cast(sim, result.Target) }, }).ExposeToAPL(138158) }, }, })
View Source
var ItemSetRegaliaOfTheGuardianSperpent = core.NewItemSet(core.ItemSet{ Name: "Regalia of the Guardian Serpent", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(agent core.Agent, setBonusAura *core.Aura) { setBonusAura.AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_BonusCrit_Percent, ClassMask: PriestSpellShadowWordPain, FloatValue: 10, }).ExposeToAPL(123114) }, 4: func(agent core.Agent, setBonusAura *core.Aura) { setBonusAura.AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_DotNumberOfTicks_Flat, ClassMask: PriestSpellShadowWordPain | PriestSpellVampiricTouch, IntValue: 1, }).ExposeToAPL(123115) }, }, })
T14 - Shadow
View Source
var ItemSetRegaliaOfTheTernionGlory = core.NewItemSet(core.ItemSet{ Name: "Regalia of Ternion Glory", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(agent core.Agent, setBonusAura *core.Aura) { setBonusAura.AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_CritMultiplier_Flat, FloatValue: 0.4, ClassMask: PriestSpellShadowyRecall, }).ExposeToAPL(145174) }, 4: func(agent core.Agent, setBonusAura *core.Aura) { priest := agent.(PriestAgent).GetPriest() mod := priest.Unit.AddDynamicMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, FloatValue: 0.2, ClassMask: PriestSpellShadowWordDeath | PriestSpellMindSpike | PriestSpellMindBlast, }) var orbsSpend float64 = 0 priest.Unit.GetSecondaryResourceBar().RegisterOnSpend(func(_ *core.Simulation, amount float64, _ core.ActionID) { orbsSpend = amount }) aura := priest.Unit.RegisterAura(core.Aura{ Label: "Regalia of the Ternion Glory - 4P (Proc)", ActionID: core.ActionID{SpellID: 145180}, Duration: time.Second * 12, OnGain: func(aura *core.Aura, sim *core.Simulation) { mod.UpdateFloatValue(0.2 * float64(orbsSpend)) mod.Activate() }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { mod.Deactivate() }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if !spell.Matches(PriestSpellMindBlast | PriestSpellMindSpike | PriestSpellShadowWordDeath) { return } aura.Deactivate(sim) }, }) setBonusAura.AttachProcTrigger(core.ProcTrigger{ Name: "Regalia of the Ternion Glory - 4P", Outcome: core.OutcomeLanded, Callback: core.CallbackOnSpellHitDealt, ClassSpellMask: PriestSpellDevouringPlague, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { aura.Activate(sim) }, }).ExposeToAPL(145179) }, }, })
Functions ¶
This section is empty.
Types ¶
type MindBender ¶
type MindBender struct {
core.Pet
Priest *Priest
Shadowcrawl *core.Spell
ShadowcrawlAura *core.Aura
}
func (*MindBender) ExecuteCustomRotation ¶
func (mindbender *MindBender) ExecuteCustomRotation(sim *core.Simulation)
func (*MindBender) GetPet ¶
func (mindbender *MindBender) GetPet() *core.Pet
func (*MindBender) Initialize ¶
func (mindbender *MindBender) Initialize()
func (*MindBender) OnEncounterStart ¶ added in v0.0.13
func (mindbender *MindBender) OnEncounterStart(sim *core.Simulation)
func (*MindBender) OnPetDisable ¶
func (mindbender *MindBender) OnPetDisable(sim *core.Simulation)
func (*MindBender) Reset ¶
func (mindbender *MindBender) Reset(sim *core.Simulation)
type Priest ¶
type Priest struct {
core.Character
SelfBuffs
Talents *proto.PriestTalents
SurgeOfLight bool
Latency float64
ShadowfiendAura *core.Aura
ShadowfiendPet *Shadowfiend
MindbenderPet *MindBender
MindbenderAura *core.Aura
ShadowOrbsAura *core.Aura
EmpoweredShadowAura *core.Aura
// cached cast stuff
// TODO: aoe multi-target situations will need multiple spells ticking for each target.
HolyEvangelismProcAura *core.Aura
DarkEvangelismProcAura *core.Aura
SurgeOfLightProcAura *core.Aura
// might want to move these spell / talents into spec specific initialization
BindingHeal *core.Spell
CircleOfHealing *core.Spell
FlashHeal *core.Spell
GreaterHeal *core.Spell
Penance *core.Spell
PenanceHeal *core.Spell
PowerWordShield *core.Spell
PrayerOfHealing *core.Spell
PrayerOfMending *core.Spell
Renew *core.Spell
EmpoweredRenew *core.Spell
InnerFocus *core.Spell
HolyFire *core.Spell
Smite *core.Spell
ShadowWordPain *core.Spell
Shadowfiend *core.Spell
VampiricTouch *core.Spell
MindBender *core.Spell
ShadowyApparition *core.Spell
WeakenedSouls core.AuraArray
ProcPrayerOfMending core.ApplySpellResults
T15_2PC_ExtensionTracker []TargetDoTInfo
}
func (*Priest) AddDarkEvangelismStack ¶
func (priest *Priest) AddDarkEvangelismStack(sim *core.Simulation)
func (*Priest) AddHolyEvanglismStack ¶
func (priest *Priest) AddHolyEvanglismStack(sim *core.Simulation)
func (*Priest) AddPartyBuffs ¶
func (priest *Priest) AddPartyBuffs(_ *proto.PartyBuffs)
func (*Priest) ApplyGlyphs ¶
func (priest *Priest) ApplyGlyphs()
func (*Priest) ApplyTalents ¶
func (priest *Priest) ApplyTalents()
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) NewMindBender ¶
func (priest *Priest) NewMindBender() *MindBender
func (*Priest) NewShadowfiend ¶
func (priest *Priest) NewShadowfiend() *Shadowfiend
func (*Priest) OnEncounterStart ¶ added in v0.0.13
func (priest *Priest) OnEncounterStart(sim *core.Simulation)
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
Shadowcrawl *core.Spell
ShadowcrawlAura *core.Aura
}
DISCLAIMER: Shadowfiend need some extensive research on Level 85 Proper Spell Scaling? Wiki says 37.5%, patch notes state 30% WoW Sims implemented priest crit scaling but we do not Right now Stats are inherited statically on spawn, but testing indicates shadow fiend scales per hit based on owner spell power
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) OnEncounterStart ¶ added in v0.0.13
func (shadowfiend *Shadowfiend) OnEncounterStart(_ *core.Simulation)
func (*Shadowfiend) OnPetDisable ¶
func (shadowfiend *Shadowfiend) OnPetDisable(sim *core.Simulation)
func (*Shadowfiend) Reset ¶
func (shadowfiend *Shadowfiend) Reset(sim *core.Simulation)
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Implements the shadow priest's mastery Every tick of a priest's DoT can be replicated The chance is based on the mastery a priest has
|
Implements the shadow priest's mastery Every tick of a priest's DoT can be replicated The chance is based on the mastery a priest has |
Click to show internal directories.
Click to hide internal directories.