paladin

package
v1.9.3 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpellFlagSeal      = core.SpellFlagAgentReserved1
	SpellFlagJudgement = core.SpellFlagAgentReserved2
)
View Source
const JudgementCDTime = time.Second * 10
View Source
const JudgementDuration = time.Second * 20
View Source
const JudgementManaCost = 147.0
View Source
const SealDuration = time.Second * 30
View Source
const TwistWindow = time.Millisecond * 400

Variables

View Source
var ItemSetCrystalforgeArmor = core.NewItemSet(core.ItemSet{
	Name: "Crystalforge Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

		},
		4: func(agent core.Agent) {

			paladin := agent.(PaladinAgent).GetPaladin()

			procAura := paladin.RegisterAura(core.Aura{
				Label:    "Crystalforge 2pc Proc",
				ActionID: core.ActionID{SpellID: 37191},
				Duration: time.Second * 6,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					paladin.AddStatDynamic(sim, stats.BlockValue, 100)
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					paladin.AddStatDynamic(sim, stats.BlockValue, -100)
				},
				OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, spellEffect *core.SpellEffect) {
					if spellEffect.Outcome.Matches(core.OutcomeBlock) {
						aura.Deactivate(sim)
					}
				},
			})

			paladin.RegisterAura(core.Aura{
				Label:    "Crystalforge 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 spell == paladin.HolyShield {
						procAura.Activate(sim)
					}
				},
			})
		},
	},
})
View Source
var ItemSetCrystalforgeBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Crystalforge Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetJusticarArmor = core.NewItemSet(core.ItemSet{
	Name: "Justicar Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetJusticarBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Justicar Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetLightbringerArmor = core.NewItemSet(core.ItemSet{
	Name: "Lightbringer Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetLightbringerBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Lightbringer Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()
			manaMetrics := paladin.NewManaMetrics(core.ActionID{SpellID: 38428})

			paladin.RegisterAura(core.Aura{
				Label:    "Lightbringer Battlegear 2pc",
				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, spellEffect *core.SpellEffect) {
					if !spellEffect.ProcMask.Matches(core.ProcMaskMelee) {
						return
					}
					if sim.RandomFloat("lightbringer 2pc") > 0.2 {
						return
					}
					paladin.AddMana(sim, 50, manaMetrics, true)
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Functions

This section is empty.

Types

type Paladin

type Paladin struct {
	core.Character

	PaladinAura proto.PaladinAura

	Talents proto.PaladinTalents

	CurrentSeal      *core.Aura
	CurrentJudgement *core.Aura

	Consecration             *core.Spell
	CrusaderStrike           *core.Spell
	Exorcism                 *core.Spell
	HolyShield               *core.Spell
	JudgementOfBlood         *core.Spell
	JudgementOfTheCrusader   *core.Spell
	JudgementOfWisdom        *core.Spell
	JudgementOfLight         *core.Spell
	JudgementOfRighteousness *core.Spell
	SealOfBlood              *core.Spell
	SealOfCommand            *core.Spell
	SealOfTheCrusader        *core.Spell
	SealOfWisdom             *core.Spell
	SealOfLight              *core.Spell
	SealOfRighteousness      *core.Spell

	ConsecrationDot *core.Dot

	HolyShieldAura             *core.Aura
	JudgementOfTheCrusaderAura *core.Aura
	JudgementOfWisdomAura      *core.Aura
	JudgementOfLightAura       *core.Aura
	SealOfBloodAura            *core.Aura
	SealOfCommandAura          *core.Aura
	SealOfTheCrusaderAura      *core.Aura
	SealOfWisdomAura           *core.Aura
	SealOfLightAura            *core.Aura
	SealOfRighteousnessAura    *core.Aura

	SpiritualAttunementMetrics *core.ResourceMetrics
}

func NewPaladin

func NewPaladin(character core.Character, talents proto.PaladinTalents) *Paladin

maybe need to add stat dependencies

func (*Paladin) ActivateRighteousFury

func (paladin *Paladin) ActivateRighteousFury()

func (*Paladin) AddPartyBuffs

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

func (*Paladin) AddRaidBuffs

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

func (*Paladin) ApplyTalents

func (paladin *Paladin) ApplyTalents()

func (*Paladin) CanExorcism

func (paladin *Paladin) CanExorcism(target *core.Unit) bool

func (*Paladin) CanJudgementOfBlood

func (paladin *Paladin) CanJudgementOfBlood(sim *core.Simulation) bool

func (*Paladin) CanJudgementOfLight

func (paladin *Paladin) CanJudgementOfLight(sim *core.Simulation) bool

func (*Paladin) CanJudgementOfTheCrusader

func (paladin *Paladin) CanJudgementOfTheCrusader(sim *core.Simulation) bool

func (*Paladin) CanJudgementOfWisdom

func (paladin *Paladin) CanJudgementOfWisdom(sim *core.Simulation) bool

func (*Paladin) GetCharacter

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

func (*Paladin) GetPaladin

func (paladin *Paladin) GetPaladin() *Paladin

func (*Paladin) Initialize

func (paladin *Paladin) Initialize()

func (*Paladin) MeleeCritMultiplier

func (paladin *Paladin) MeleeCritMultiplier() float64

func (*Paladin) OnAutoAttack

func (paladin *Paladin) OnAutoAttack(sim *core.Simulation, spell *core.Spell)

func (*Paladin) RegisterAvengingWrathCD

func (paladin *Paladin) RegisterAvengingWrathCD()

func (*Paladin) RegisterConsecrationSpell

func (paladin *Paladin) RegisterConsecrationSpell(rank int32)

Maybe could switch "rank" parameter type to some proto thing. Would require updates to proto files. Prot guys do whatever you want here I guess

func (*Paladin) Reset

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

func (*Paladin) SetupSealOfCommand

func (paladin *Paladin) SetupSealOfCommand()

func (*Paladin) SpellCritMultiplier

func (paladin *Paladin) SpellCritMultiplier() float64

func (*Paladin) UpdateSeal

func (paladin *Paladin) UpdateSeal(sim *core.Simulation, newSeal *core.Aura)

func (*Paladin) WeaponSpecializationMultiplier

func (paladin *Paladin) WeaponSpecializationMultiplier() 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