paladin

package
v0.0.185 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Shared abilities
	SpellMaskAvengingWrath int64 = 1 << iota
	SpellMaskCensure
	SpellMaskCrusaderStrike
	SpellMaskDevotionAura
	SpellMaskDivineProtection
	SpellMaskDivineShield
	SpellMaskFlashOfLight
	SpellMaskGuardianOfAncientKings
	SpellMaskHammerOfWrath
	SpellMaskHammerOfTheRighteousMelee
	SpellMaskHammerOfTheRighteousAoe
	SpellMaskHandOfProtection
	SpellMaskJudgment
	SpellMaskLayOnHands
	SpellMaskSealOfInsight
	SpellMaskSealOfRighteousness
	SpellMaskSealOfTruth
	SpellMaskShieldOfTheRighteous
	SpellMaskTemplarsVerdict
	SpellMaskWordOfGlory

	// Retribution abilities
	SpellMaskDivineStorm
	SpellMaskExorcism
	SpellMaskInquisition
	SpellMaskSealOfJustice

	// Protection abilities
	SpellMaskArdentDefender
	SpellMaskAvengersShield
	SpellMaskConsecration
	SpellMaskHolyWrath

	// Holy abilities
	SpellMaskBeaconOfLight
	SpellMaskDaybreak
	SpellMaskDenounce
	SpellMaskDivineFavor
	SpellMaskDivineLight
	SpellMaskDivinePlea
	SpellMaskHolyLight
	SpellMaskHolyRadiance
	SpellMaskHolyShockDamage
	SpellMaskHolyShockHeal
	SpellMaskLightOfDawn

	// Glyphs
	SpellMaskHarshWords
)
View Source
const SpellMaskCanTriggerAncientPower = SpellMaskCanTriggerSealOfTruth
View Source
const SpellMaskCanTriggerSealOfInsight = SpellMaskCanTriggerSealOfJustice
View Source
const SpellMaskSanctityOfBattleHoly = SpellMaskSanctityOfBattleBase |
	SpellMaskHolyShock
View Source
const SpellMaskSanctityOfBattleHolyGcd = SpellMaskSanctityOfBattleBaseGcd
View Source
const SpellMaskSanctityOfBattleProtGcd = SpellMaskSanctityOfBattleBaseGcd
View Source
const SpellMaskSanctityOfBattleRet = SpellMaskSanctityOfBattleBase |

	SpellMaskExorcism

Variables

View Source
var ItemSetBattlegearOfTheLightningEmperor = core.NewItemSet(core.ItemSet{
	Name:                    "Battlegear of the Lightning Emperor",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecRetributionPaladin {
				return
			}

			exorcismAuras := paladin.NewEnemyAuraArray(func(unit *core.Unit) *core.Aura {
				return unit.RegisterAura(core.Aura{
					Label:    "Exorcism" + unit.Label,
					ActionID: core.ActionID{SpellID: 138162},
					Duration: time.Second * 6,
				}).AttachMultiplicativePseudoStatBuff(
					&unit.PseudoStats.SchoolDamageTakenMultiplier[stats.SchoolIndexHoly], 1.06,
				)
			})

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Callback:       core.CallbackOnSpellHitDealt,
				ClassSpellMask: SpellMaskExorcism,
				Outcome:        core.OutcomeLanded,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					exorcismAuras.Get(result.Target).Activate(sim)
				},
			}).ExposeToAPL(138159)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecRetributionPaladin {
				return
			}

			templarsVerdictAura := paladin.RegisterAura(core.Aura{
				Label:    "Templar's Verdict" + paladin.Label,
				ActionID: core.ActionID{SpellID: 138169},
				Duration: core.NeverExpires,
			})
			paladin.T15Ret4pc = templarsVerdictAura
			paladin.T15Ret4pcTemplarsVerdict = paladin.registerHolyDamageTemplarsVerdict()

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Callback:       core.CallbackOnSpellHitDealt,
				ClassSpellMask: SpellMaskCrusaderStrike,
				Outcome:        core.OutcomeLanded,
				ProcChance:     0.4,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					templarsVerdictAura.Activate(sim)
				},
			}).ExposeToAPL(138164)
		},
	},
})

Tier 15 Ret

View Source
var ItemSetBattlegearOfWingedTriumph = core.NewItemSet(core.ItemSet{
	Name:                    "Battlegear of Winged Triumph",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecRetributionPaladin {
				return
			}

			warriorOfTheLightAura := paladin.RegisterAura(core.Aura{
				Label:    "Warrior of the Light" + paladin.Label,
				ActionID: core.ActionID{SpellID: 144587},
				Duration: time.Second * 6,
			}).AttachMultiplicativePseudoStatBuff(&paladin.PseudoStats.DamageDealtMultiplier, 1.05)

			setBonusAura.ApplyOnInit(func(aura *core.Aura, sim *core.Simulation) {
				paladin.TheArtOfWarAura.ApplyOnGain(func(aura *core.Aura, sim *core.Simulation) {
					warriorOfTheLightAura.Activate(sim)
				})
			}).ExposeToAPL(144586)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecRetributionPaladin {
				return
			}

			paladin.DivineCrusaderAura = paladin.divinePurposeFactory("Divine Crusader", 144595, time.Second*12, func(aura *core.Aura, spell *core.Spell) bool {
				return spell.Matches(SpellMaskDivineStorm)
			}).AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskDivineStorm,
				FloatValue: 0.5,
			})

			setBonusAura.ExposeToAPL(144593)
		},
	},
})

Tier 16 Ret

View Source
var ItemSetPlateOfTheLightningEmperor = core.NewItemSet(core.ItemSet{
	Name:                    "Plate of the Lightning Emperor",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()

			shieldOfGloryAura := paladin.RegisterAura(core.Aura{
				Label:    "Shield of Glory" + paladin.Label,
				ActionID: core.ActionID{SpellID: 138242},
				Duration: time.Second * 5,
			}).AttachAdditivePseudoStatBuff(&paladin.PseudoStats.BaseBlockChance, 0.4)

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskWordOfGlory,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					shieldOfGloryAura.Duration = core.DurationFromSeconds(float64(paladin.DynamicHolyPowerSpent * 5.0))
					shieldOfGloryAura.Activate(sim)
				},
			}).ExposeToAPL(138238)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			hpGainMetrics := core.ActionID{SpellID: 138248}

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Callback:           core.CallbackOnSpellHitTaken,
				Outcome:            core.OutcomeLanded,
				RequireDamageDealt: true,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if paladin.DivineProtectionAura.IsActive() {
						hpGain := float64(math.Floor(result.PostOutcomeDamage / paladin.MaxHealth() * 5))
						if hpGain > 0 {
							paladin.HolyPower.Gain(sim, hpGain, hpGainMetrics)
						}
					}
				},
			}).ExposeToAPL(138244)
		},
	},
})

Tier 15 Prot

View Source
var ItemSetPlateOfWingedTriumph = core.NewItemSet(core.ItemSet{
	Name:                    "Plate of Winged Triumph",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()

			totalDamageTaken := 0.0

			blessingOfTheGuardians := paladin.RegisterSpell(core.SpellConfig{
				ActionID:    core.ActionID{SpellID: 144581},
				SpellSchool: core.SpellSchoolHoly,
				ProcMask:    core.ProcMaskSpellHealing,
				Flags:       core.SpellFlagPassiveSpell | core.SpellFlagHelpful,

				Hot: core.DotConfig{
					Aura: core.Aura{
						Label: "Blessing of the Guardians" + paladin.Label,
					},
					TickLength:          time.Second,
					NumberOfTicks:       10,
					AffectedByCastSpeed: false,
					OnSnapshot: func(sim *core.Simulation, target *core.Unit, dot *core.Dot, isRollover bool) {
						dot.Snapshot(target, totalDamageTaken/10.0)
					},
					OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) {
						dot.CalcAndDealPeriodicSnapshotHealing(sim, target, dot.OutcomeSnapshotCrit)
					},
				},

				DamageMultiplier: 0.75 * core.TernaryFloat64(paladin.Talents.UnbreakableSpirit, 0.5, 1.0),
				CritMultiplier:   paladin.DefaultCritMultiplier(),
				ThreatMultiplier: 1,

				ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
					spell.Hot(target).Apply(sim)
				},
			})

			paladin.OnSpellRegistered(func(spell *core.Spell) {
				if !spell.Matches(SpellMaskDivineProtection) {
					return
				}

				paladin.DivineProtectionAura.ApplyOnGain(func(aura *core.Aura, sim *core.Simulation) {
					totalDamageTaken = 0.0
				}).ApplyOnExpire(func(aura *core.Aura, sim *core.Simulation) {
					if totalDamageTaken > 0 {
						blessingOfTheGuardians.Cast(sim, &paladin.Unit)
					}
				}).AttachProcTrigger(core.ProcTrigger{
					Callback:           core.CallbackOnSpellHitTaken,
					Outcome:            core.OutcomeLanded,
					RequireDamageDealt: true,

					Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
						totalDamageTaken += result.PostOutcomeDamage
					},
				})
			})

			setBonusAura.ExposeToAPL(144580)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecProtectionPaladin {
				return
			}

			paladin.BastionOfPowerAura = paladin.RegisterAura(core.Aura{
				Label:    "Bastion of Power" + paladin.Label,
				ActionID: core.ActionID{SpellID: 144569},
				Duration: time.Second * 20,
			}).AttachProcTrigger(core.ProcTrigger{
				Name:           "Bastion of Power Consume Trigger" + paladin.Label,
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskWordOfGlory,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					paladin.BastionOfPowerAura.Deactivate(sim)
				},
			})

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskShieldOfTheRighteous,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if paladin.BastionOfGloryAura.GetStacks() >= 3 {
						paladin.BastionOfPowerAura.Activate(sim)
					}
				},
			}).ExposeToAPL(144566)
		},
	},
})

Tier 16 Prot

View Source
var ItemSetVestmentsOfTheLightningEmperor = core.NewItemSet(core.ItemSet{
	Name:                    "Vestments of the Lightning Emperor",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecHolyPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskDaybreak,
				FloatValue: 0.5,
			}).ExposeToAPL(138291)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecHolyPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskBeaconOfLight,
				FloatValue: 0.2,
			}).ExposeToAPL(138292)
		},
	},
})

Tier 15 Holy

View Source
var ItemSetVestmentsOfWingedTriumph = core.NewItemSet(core.ItemSet{
	Name:                    "Vestments of Winged Triumph",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecHolyPaladin {
				return
			}

			setBonusAura.ApplyOnInit(func(aura *core.Aura, sim *core.Simulation) {
				paladin.InfusionOfLightAura.AttachDependentAura(paladin.RegisterAura(core.Aura{
					Label:    "Unyielding Faith" + paladin.Label,
					ActionID: core.ActionID{SpellID: 144624},
					Duration: time.Second * 15,
				}).AttachSpellMod(core.SpellModConfig{
					Kind:       core.SpellMod_DamageDone_Pct,
					ClassMask:  SpellMaskDivineLight | SpellMaskHolyLight | SpellMaskHolyRadiance,
					FloatValue: 0.25,
				}))
			}).ExposeToAPL(144625)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecHolyPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:      core.SpellMod_Cooldown_Flat,
				ClassMask: SpellMaskDivineFavor,
				TimeValue: time.Second * -60,
			})

			setBonusAura.ApplyOnInit(func(aura *core.Aura, sim *core.Simulation) {
				paladin.DivineFavorAura.AttachDependentAura(paladin.RegisterAura(core.Aura{
					Label:    "Favor of the Kings" + paladin.Label,
					ActionID: core.ActionID{SpellID: 144622},
					Duration: time.Second * 20,
				}).AttachStatBuff(stats.MasteryRating, 4500))
			}).ExposeToAPL(144613)
		},
	},
})

Tier 16 Holy

View Source
var ItemSetWhiteTigerBattlegear = core.NewItemSet(core.ItemSet{
	Name:                    "White Tiger Battlegear",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			if agent.GetCharacter().Spec != proto.Spec_SpecRetributionPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskTemplarsVerdict,
				FloatValue: 0.15,
			}).ExposeToAPL(123108)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskJudgment | SpellMaskSeals,
				FloatValue: 0.10,
			}).ExposeToAPL(70762)
		},
	},
})

Tier 14 Ret

View Source
var ItemSetWhiteTigerPlate = core.NewItemSet(core.ItemSet{
	Name:                    "White Tiger Plate",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecProtectionPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:      core.SpellMod_Cooldown_Flat,
				ClassMask: SpellMaskArdentDefender,
				TimeValue: time.Second * -60,
			}).ExposeToAPL(123104)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskWordOfGlory,
				FloatValue: 0.1,
			}).AttachAdditivePseudoStatBuff(&paladin.ShieldOfTheRighteousMultiplicativeMultiplier, 0.1)

			setBonusAura.ExposeToAPL(123107)
		},
	},
})

Tier 14 Prot

View Source
var ItemSetWhiteTigerVestments = core.NewItemSet(core.ItemSet{
	Name:                    "White Tiger Vestments",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{

		2: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecHolyPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_PowerCost_Pct,
				ClassMask:  SpellMaskHolyRadiance,
				FloatValue: -0.1,
			}).ExposeToAPL(123102)
		},

		4: func(agent core.Agent, setBonusAura *core.Aura) {
			paladin := agent.(PaladinAgent).GetPaladin()
			if paladin.Spec != proto.Spec_SpecHolyPaladin {
				return
			}

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:      core.SpellMod_Cooldown_Flat,
				ClassMask: SpellMaskHolyShock,
				TimeValue: time.Second * -1,
			}).ExposeToAPL(123103)
		},
	},
})

Tier 14 Holy

Functions

This section is empty.

Types

type AncientGuardianPet

type AncientGuardianPet struct {
	core.Pet
	// contains filtered or unexported fields
}

func (*AncientGuardianPet) ExecuteCustomRotation

func (ancientGuardian *AncientGuardianPet) ExecuteCustomRotation(sim *core.Simulation)

func (*AncientGuardianPet) GetPet

func (ancientGuardian *AncientGuardianPet) GetPet() *core.Pet

func (*AncientGuardianPet) Initialize

func (guardian *AncientGuardianPet) Initialize()

func (*AncientGuardianPet) OnEncounterStart added in v0.0.13

func (ancientGuardian *AncientGuardianPet) OnEncounterStart(_ *core.Simulation)

func (*AncientGuardianPet) Reset

func (ancientGuardian *AncientGuardianPet) Reset(_ *core.Simulation)

type AuraDeactivationCheck

type AuraDeactivationCheck func(aura *core.Aura, spell *core.Spell) bool

type HolyPowerBar

type HolyPowerBar struct {
	*core.DefaultSecondaryResourceBarImpl
	// contains filtered or unexported fields
}

func (HolyPowerBar) CanSpend

func (h HolyPowerBar) CanSpend(amount float64) bool

func (HolyPowerBar) Spend

func (h HolyPowerBar) Spend(sim *core.Simulation, amount float64, action core.ActionID)

Spend implements core.SecondaryResourceBar.

func (HolyPowerBar) SpendUpTo

func (h HolyPowerBar) SpendUpTo(sim *core.Simulation, limit float64, action core.ActionID) float64

SpendUpTo implements core.SecondaryResourceBar.

func (HolyPowerBar) Value

func (h HolyPowerBar) Value() float64

Value implements core.SecondaryResourceBar.

type Paladin

type Paladin struct {
	core.Character

	Seal      proto.PaladinSeal
	HolyPower HolyPowerBar

	Talents *proto.PaladinTalents

	CurrentSeal *core.Aura

	// Pets
	AncientGuardian *AncientGuardianPet

	AvengersShield *core.Spell
	Exorcism       *core.Spell
	HammerOfWrath  *core.Spell
	Judgment       *core.Spell

	AncientPowerAura        *core.Aura
	AvengingWrathAura       *core.Aura
	BastionOfGloryAura      *core.Aura
	BastionOfPowerAura      *core.Aura
	DivineCrusaderAura      *core.Aura
	DivineFavorAura         *core.Aura
	DivineProtectionAura    *core.Aura
	DivinePurposeAura       *core.Aura
	GoakAura                *core.Aura
	InfusionOfLightAura     *core.Aura
	SealOfInsightAura       *core.Aura
	SealOfJusticeAura       *core.Aura
	SealOfRighteousnessAura *core.Aura
	SealOfTruthAura         *core.Aura
	SelflessHealerAura      *core.Aura
	TheArtOfWarAura         *core.Aura

	// Item sets
	T11Ret4pc                *core.Aura
	T15Ret4pc                *core.Aura
	T15Ret4pcTemplarsVerdict *core.Spell

	HolyAvengerActionIDFilter  []core.ActionID
	JudgmentsOfTheWiseActionID core.ActionID
	DefensiveCooldownAuras     []*core.Aura

	DynamicHolyPowerSpent                        float64
	BastionOfGloryMultiplier                     float64
	ShieldOfTheRighteousAdditiveMultiplier       float64
	ShieldOfTheRighteousMultiplicativeMultiplier float64
	// contains filtered or unexported fields
}

func NewPaladin

func NewPaladin(character *core.Character, talentsStr string, options *proto.PaladinOptions) *Paladin

func (*Paladin) AddDefensiveCooldownAura

func (paladin *Paladin) AddDefensiveCooldownAura(aura *core.Aura)

func (*Paladin) AddPartyBuffs

func (paladin *Paladin) AddPartyBuffs(_ *proto.PartyBuffs)

func (*Paladin) AddRaidBuffs

func (paladin *Paladin) AddRaidBuffs(_ *proto.RaidBuffs)

func (*Paladin) AnyActiveDefensiveCooldown

func (paladin *Paladin) AnyActiveDefensiveCooldown() bool

func (*Paladin) ApplyTalents

func (paladin *Paladin) ApplyTalents()

func (*Paladin) BuilderCooldown

func (paladin *Paladin) BuilderCooldown() *core.Timer

Shared cooldown for CS and HotR

func (*Paladin) CanTriggerHolyAvengerHpGain

func (paladin *Paladin) CanTriggerHolyAvengerHpGain(actionID core.ActionID)

func (*Paladin) GetCharacter

func (paladin *Paladin) GetCharacter() *core.Character

func (*Paladin) GetPaladin

func (paladin *Paladin) GetPaladin() *Paladin

func (*Paladin) HasMajorGlyph

func (paladin *Paladin) HasMajorGlyph(glyph proto.PaladinMajorGlyph) bool

func (*Paladin) HasMinorGlyph

func (paladin *Paladin) HasMinorGlyph(glyph proto.PaladinMinorGlyph) bool

func (*Paladin) Initialize

func (paladin *Paladin) Initialize()

func (*Paladin) NewAncientGuardian

func (paladin *Paladin) NewAncientGuardian() *AncientGuardianPet

func (*Paladin) OnEncounterStart added in v0.0.13

func (paladin *Paladin) OnEncounterStart(sim *core.Simulation)

func (*Paladin) Reset

func (paladin *Paladin) Reset(sim *core.Simulation)

func (*Paladin) SpendableHolyPower

func (paladin *Paladin) SpendableHolyPower() float64

type PaladinAgent

type PaladinAgent interface {
	GetPaladin() *Paladin
}

Implemented by each Paladin spec.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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