priest

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2023 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ItemSetAbsolutionRegalia = 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 ItemSetAvatarRegalia = core.NewItemSet(core.ItemSet{
	Name: "Avatar Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			priest := agent.(PriestAgent).GetPriest()
			manaMetrics := priest.NewManaMetrics(core.ActionID{SpellID: 37600})

			priest.RegisterAura(core.Aura{
				Label:    "Avatar Regalia 2pc",
				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 sim.RandomFloat("avatar 2p") > 0.06 {
						return
					}

					priest.AddMana(sim, 150, manaMetrics)
				},
			})
		},
		4: func(agent core.Agent) {
			priest := agent.(PriestAgent).GetPriest()

			procAura := priest.NewTemporaryStatsAura("Avatar Regalia 4pc Proc", core.ActionID{SpellID: 37604}, stats.Stats{stats.SpellPower: 100}, time.Second*15)
			procAura.OnSpellHitDealt = func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
				aura.Deactivate(sim)
			}

			priest.RegisterAura(core.Aura{
				Label:    "Avatar Regalia 4pc",
				Duration: core.NeverExpires,
				OnReset: func(aura *core.Aura, sim *core.Simulation) {
					aura.Activate(sim)
				},
				OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if spell != priest.ShadowWordPain {
						return
					}

					if sim.RandomFloat("avatar 4p") > 0.4 {
						return
					}

					procAura.Activate(sim)
				},
			})
		},
	},
})
View Source
var ItemSetIncarnateRegalia = core.NewItemSet(core.ItemSet{
	Name: "Incarnate Raiment",
	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 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

	PWSShields    []*core.Shield
	WeakenedSouls core.AuraArray

	ProcPrayerOfMending core.ApplySpellResults

	DpInitMultiplier float64
}

func New

func New(char core.Character, selfBuffs SelfBuffs, talents string) *Priest

func (*Priest) AddPartyBuffs

func (priest *Priest) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Priest) AddRaidBuffs

func (priest *Priest) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Priest) AddShadowWeavingStack

func (priest *Priest) AddShadowWeavingStack(sim *core.Simulation)

func (*Priest) ApplyRapture

func (priest *Priest) ApplyRapture(ppm float64)

This one is called from healing priest sim initialization because it needs an input.

func (*Priest) ApplyTalents

func (priest *Priest) ApplyTalents()

func (*Priest) AverageMindFlayLatencyDelay

func (priest *Priest) AverageMindFlayLatencyDelay(numTicks int, gcd time.Duration) time.Duration

func (*Priest) GetCharacter

func (priest *Priest) GetCharacter() *core.Character

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 *Priest) MindFlayTickDuration() time.Duration

func (*Priest) NewShadowfiend

func (priest *Priest) NewShadowfiend() *Shadowfiend

func (*Priest) RegisterHealingSpells

func (priest *Priest) RegisterHealingSpells()

func (*Priest) RegisterHolyFireSpell

func (priest *Priest) RegisterHolyFireSpell(memeDream bool)

func (*Priest) RegisterPenanceSpell

func (priest *Priest) RegisterPenanceSpell()

func (*Priest) RegisterSmiteSpell

func (priest *Priest) RegisterSmiteSpell(memeDream bool)

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)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL