paladin

package
v0.0.113 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpellFlagSecondaryJudgement = core.SpellFlagAgentReserved1
	SpellFlagPrimaryJudgement   = core.SpellFlagAgentReserved2
)
View Source
const (
	SpellMaskTemplarsVerdict int64 = 1 << iota
	SpellMaskCrusaderStrike
	SpellMaskDivineStorm
	SpellMaskExorcism
	SpellMaskGlyphOfExorcism
	SpellMaskHammerOfWrath
	SpellMaskJudgementBase
	SpellMaskJudgementOfTruth
	SpellMaskJudgementOfInsight
	SpellMaskJudgementOfRighteousness
	SpellMaskJudgementOfJustice
	SpellMaskHolyWrath
	SpellMaskConsecration
	SpellMaskHammerOfTheRighteousMelee
	SpellMaskHammerOfTheRighteousAoe
	SpellMaskAvengersShield
	SpellMaskDivinePlea
	SpellMaskDivineProtection
	SpellMaskAvengingWrath
	SpellMaskCensure
	SpellMaskInquisition
	SpellMaskHandOfLight
	SpellMaskZealotry
	SpellMaskGuardianOfAncientKings
	SpellMaskAncientFury
	SpellMaskSealsOfCommand
	SpellMaskShieldOfTheRighteous
	SpellMaskHolyShield
	SpellMaskArdentDefender

	SpellMaskHolyShock
	SpellMaskWordOfGlory

	SpellMaskSealOfTruth
	SpellMaskSealOfInsight
	SpellMaskSealOfRighteousness
	SpellMaskSealOfJustice
)
View Source
const SpellMaskCanConsumeDivinePurpose = SpellMaskInquisition |
	SpellMaskTemplarsVerdict
View Source
const SpellMaskCanTriggerAncientPower = SpellMaskCanTriggerSealOfTruth |
	SpellMaskHolyWrath
View Source
const SpellMaskCanTriggerSealOfInsight = SpellMaskCanTriggerSealOfJustice

Variables

View Source
var ItemSetArmorOfRadiantGlory = core.NewItemSet(core.ItemSet{
	Name: "Armor of Radiant Glory",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			actionID := core.ActionID{SpellID: 105801}
			duration := time.Second * 6

			shieldStrength := 0.0
			shield := paladin.NewDamageAbsorptionAura("Delayed Judgement", actionID, duration, func(unit *core.Unit) float64 {
				return shieldStrength
			})

			core.MakeProcTriggerAura(&paladin.Unit, core.ProcTrigger{
				Name:           "Delayed Judgement Proc",
				Callback:       core.CallbackOnSpellHitDealt,
				ClassSpellMask: SpellMaskJudgement,
				Outcome:        core.OutcomeLanded,

				ProcChance: 1,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					shieldStrength = result.Damage * 0.25
					if shieldStrength > 1 {
						shield.Activate(sim)
					}
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Tier 13 prot

View Source
var ItemSetBattlearmorOfImmolation = core.NewItemSet(core.ItemSet{
	Name: "Battlearmor of Immolation",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			procDamage := 0.0

			righteousFlames := paladin.RegisterSpell(core.SpellConfig{
				ActionID:    core.ActionID{SpellID: 53600}.WithTag(3),
				SpellSchool: core.SpellSchoolFire,
				ProcMask:    core.ProcMaskEmpty,
				Flags: core.SpellFlagIgnoreModifiers |
					core.SpellFlagBinary |
					core.SpellFlagNoOnCastComplete |
					core.SpellFlagNoOnDamageDealt,

				DamageMultiplier: 1,
				ThreatMultiplier: 1,

				ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
					spell.CalcAndDealDamage(sim, target, procDamage, spell.OutcomeAlwaysHit)
				},
			})

			core.MakeProcTriggerAura(&paladin.Unit, core.ProcTrigger{
				Name:           "Righteous Flames",
				Callback:       core.CallbackOnSpellHitDealt,
				ClassSpellMask: SpellMaskShieldOfTheRighteous,
				Outcome:        core.OutcomeLanded,
				ProcChance:     1,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					procDamage = result.Damage * 0.2
					righteousFlames.Cast(sim, result.Target)
				},
			})
		},
		4: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			flamingAegis := paladin.GetOrRegisterAura(core.Aura{
				Label:    "Flaming Aegis",
				ActionID: core.ActionID{SpellID: 99090},
				Duration: time.Second * 10,

				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					paladin.PseudoStats.BaseParryChance += 0.12
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					paladin.PseudoStats.BaseParryChance -= 0.12
				},
			})

			core.MakeProcTriggerAura(&paladin.Unit, core.ProcTrigger{
				Name:           "T12 4pc trigger",
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskDivineProtection,
				ProcChance:     1,

				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					core.StartDelayedAction(sim, core.DelayedActionOptions{
						DoAt:     sim.CurrentTime + paladin.DivineProtectionAura.Duration,
						Priority: core.ActionPriorityLow,

						OnAction: func(_ *core.Simulation) {
							flamingAegis.Activate(sim)
						},
					})
				},
			})
		},
	},
})

Tier 12 prot

View Source
var ItemSetBattleplateOfImmolation = core.NewItemSet(core.ItemSet{
	Name: "Battleplate of Immolation",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()
			cata.RegisterIgniteEffect(&paladin.Unit, cata.IgniteConfig{
				ActionID:           core.ActionID{SpellID: 35395}.WithTag(3),
				DisableCastMetrics: true,
				DotAuraLabel:       "Flames of the Faithful",
				IncludeAuraDelay:   true,

				ProcTrigger: core.ProcTrigger{
					Name:           "Flames of the Faithful",
					Callback:       core.CallbackOnSpellHitDealt,
					ClassSpellMask: SpellMaskCrusaderStrike,
					Outcome:        core.OutcomeLanded,
				},

				DamageCalculator: func(result *core.SpellResult) float64 {
					return result.Damage * 0.15
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Tier 12 ret

View Source
var ItemSetBattleplateOfRadiantGlory = core.NewItemSet(core.ItemSet{
	Name: "Battleplate of Radiant Glory",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			hpMetrics := paladin.NewHolyPowerMetrics(core.ActionID{SpellID: 105767})

			core.MakeProcTriggerAura(&paladin.Unit, core.ProcTrigger{
				Name:           "T13 2pc trigger",
				ActionID:       core.ActionID{SpellID: 105765},
				Callback:       core.CallbackOnSpellHitDealt,
				ClassSpellMask: SpellMaskJudgement,
				ProcChance:     1,

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

					waitTime := time.Millisecond * time.Duration(sim.RollWithLabel(150, 750, "T13 2pc"))
					core.StartDelayedAction(sim, core.DelayedActionOptions{
						DoAt:     sim.CurrentTime + waitTime,
						Priority: core.ActionPriorityRegen,

						OnAction: func(_ *core.Simulation) {
							paladin.GainHolyPower(sim, 1, hpMetrics)
						},
					})
				},
			})
		},
		4: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			damageMod := paladin.AddDynamicMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskModifiedByZealOfTheCrusader,
				FloatValue: 0.18,
			})

			zealOfTheCrusader := paladin.RegisterAura(core.Aura{
				Label:    "Zeal of the Crusader",
				ActionID: core.ActionID{SpellID: 105819},
				Duration: time.Second * 20,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					damageMod.Activate()
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					damageMod.Deactivate()
				},
			})

			core.MakeProcTriggerAura(&paladin.Unit, core.ProcTrigger{
				Name:           "T13 4pc trigger",
				ActionID:       core.ActionID{SpellID: 105820},
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskZealotry,
				ProcChance:     1,

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

Tier 13 ret

View Source
var ItemSetGladiatorsVindication = core.NewItemSet(core.ItemSet{
	ID:   917,
	Name: "Gladiator's Vindication",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			paladin.AddStat(stats.Strength, 70)
		},
		4: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			paladin.AddStat(stats.Strength, 90)
			paladin.AddStaticMod(core.SpellModConfig{
				Kind:      core.SpellMod_Cooldown_Flat,
				ClassMask: SpellMaskJudgementBase,
				TimeValue: -1 * time.Second,
			})
		},
	},
})

PvP set

View Source
var ItemSetReinforcedSapphiriumBattlearmor = core.NewItemSet(core.ItemSet{
	Name: "Reinforced Sapphirium Battlearmor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			paladin.AddStaticMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Flat,
				ClassMask:  SpellMaskCrusaderStrike,
				FloatValue: 0.1,
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Tier 11 prot

View Source
var ItemSetReinforcedSapphiriumBattleplate = core.NewItemSet(core.ItemSet{
	Name: "Reinforced Sapphirium Battleplate",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()

			paladin.AddStaticMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Flat,
				ClassMask:  SpellMaskTemplarsVerdict,
				FloatValue: 0.1,
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Tier 11 ret

View Source
var TalentTreeSizes = [3]int{20, 20, 20}

Functions

This section is empty.

Types

type APLValueCurrentHolyPower added in v0.0.2

type APLValueCurrentHolyPower struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueCurrentHolyPower) GetInt added in v0.0.2

func (value *APLValueCurrentHolyPower) GetInt(sim *core.Simulation) int32

func (*APLValueCurrentHolyPower) String added in v0.0.2

func (value *APLValueCurrentHolyPower) String() string

func (*APLValueCurrentHolyPower) Type added in v0.0.2

type AncientGuardianPet added in v0.0.18

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

func (*AncientGuardianPet) ExecuteCustomRotation added in v0.0.18

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

func (*AncientGuardianPet) GetPet added in v0.0.18

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

func (*AncientGuardianPet) Initialize added in v0.0.18

func (guardian *AncientGuardianPet) Initialize()

func (*AncientGuardianPet) Reset added in v0.0.18

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

type HolyPowerBar added in v0.0.2

type HolyPowerBar struct {
	// contains filtered or unexported fields
}

func (*HolyPowerBar) GainHolyPower added in v0.0.2

func (pb *HolyPowerBar) GainHolyPower(sim *core.Simulation, amountToAdd int32, metrics *core.ResourceMetrics)

func (*HolyPowerBar) Reset added in v0.0.2

func (pb *HolyPowerBar) Reset()

func (*HolyPowerBar) SpendHolyPower added in v0.0.2

func (pb *HolyPowerBar) SpendHolyPower(sim *core.Simulation, metrics *core.ResourceMetrics)

type Paladin

type Paladin struct {
	core.Character
	HolyPowerBar

	PaladinAura proto.PaladinAura
	Seal        proto.PaladinSeal

	Talents *proto.PaladinTalents

	CurrentSeal      *core.Aura
	CurrentJudgement *core.Spell
	SnapshotGuardian bool

	// Pets
	AncientGuardian *AncientGuardianPet

	DivinePlea               *core.Spell
	DivineStorm              *core.Spell
	HolyWrath                *core.Spell
	Consecration             *core.Spell
	CrusaderStrike           *core.Spell
	Exorcism                 *core.Spell
	HolyShield               *core.Spell
	HammerOfTheRighteous     *core.Spell
	HandOfReckoning          *core.Spell
	ShieldOfRighteousness    *core.Spell
	AvengersShield           *core.Spell
	HammerOfWrath            *core.Spell
	AvengingWrath            *core.Spell
	DivineProtection         *core.Spell
	TemplarsVerdict          *core.Spell
	Zealotry                 *core.Spell
	Inquisition              *core.Spell
	HandOfLight              *core.Spell
	JudgementOfTruth         *core.Spell
	JudgementOfInsight       *core.Spell
	JudgementOfRighteousness *core.Spell
	JudgementOfJustice       *core.Spell
	ShieldOfTheRighteous     *core.Spell

	HolyShieldAura          *core.Aura
	RighteousFuryAura       *core.Aura
	DivinePleaAura          *core.Aura
	SealOfTruthAura         *core.Aura
	SealOfInsightAura       *core.Aura
	SealOfRighteousnessAura *core.Aura
	SealOfJusticeAura       *core.Aura
	AvengingWrathAura       *core.Aura
	DivineProtectionAura    *core.Aura
	ZealotryAura            *core.Aura
	InquisitionAura         *core.Aura
	DivinePurposeAura       *core.Aura
	JudgementsOfThePureAura *core.Aura
	GrandCrusaderAura       *core.Aura
	SacredDutyAura          *core.Aura
	// contains filtered or unexported fields
}

func NewPaladin

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

func (*Paladin) ActivateRighteousFury added in v0.0.31

func (paladin *Paladin) ActivateRighteousFury()

func (*Paladin) AddPartyBuffs

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

func (*Paladin) AddRaidBuffs

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

func (*Paladin) ApplyTalents

func (paladin *Paladin) ApplyTalents()

func (*Paladin) BuilderCooldown added in v0.0.49

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

Shared cooldown for builders

func (*Paladin) CurrentHolyPower added in v0.0.2

func (paladin *Paladin) CurrentHolyPower() int32

CurrentHolyPower returns the actual amount of holy power the paladin has, not counting the Divine Purpose proc.

func (*Paladin) GetCharacter

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

func (*Paladin) GetHolyPowerValue added in v0.0.9

func (paladin *Paladin) GetHolyPowerValue() int32

GetHolyPowerValue returns the amount of holy power used for calculating the damage done by Templar's Verdict and duration of Inquisition.

func (*Paladin) GetPaladin

func (paladin *Paladin) GetPaladin() *Paladin

func (*Paladin) HasHolyPowerBar added in v0.0.2

func (paladin *Paladin) HasHolyPowerBar() bool

func (*Paladin) HasMajorGlyph

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

func (*Paladin) HasMinorGlyph

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

func (*Paladin) HasPrimeGlyph added in v0.0.2

func (paladin *Paladin) HasPrimeGlyph(glyph proto.PaladinPrimeGlyph) bool

func (*Paladin) Initialize

func (paladin *Paladin) Initialize()

func (*Paladin) NewAPLValue added in v0.0.2

func (paladin *Paladin) NewAPLValue(rot *core.APLRotation, config *proto.APLValue) core.APLValue

func (*Paladin) NewAncientGuardian added in v0.0.18

func (paladin *Paladin) NewAncientGuardian() *AncientGuardianPet

func (*Paladin) NewHolyPowerMetrics added in v0.0.2

func (unit *Paladin) NewHolyPowerMetrics(actionID core.ActionID) *core.ResourceMetrics

func (*Paladin) Reset

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

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