paladin

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpellFlagSecondaryJudgement = core.SpellFlagAgentReserved1
	SpellFlagPrimaryJudgement   = core.SpellFlagAgentReserved2
)
View Source
const SealDuration = time.Minute * 30

Variables

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

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

		},
	},
})

Tier 8 ret

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

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

		},
	},
})

Tier 8 prot

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 4pc 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.SpellResult) {
					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)
					}
				},
			})
		},
	},
})

T5 Prot

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) {

		},
	},
})

T5 Ret

View Source
var ItemSetGladiatorsVindication = core.NewItemSet(core.ItemSet{
	Name: "Gladiator's Vindication",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()
			paladin.AddStat(stats.AttackPower, 50)
			paladin.AddStat(stats.Resilience, 100)
		},
		4: func(agent core.Agent) {
			paladin := agent.(PaladinAgent).GetPaladin()
			paladin.AddStat(stats.AttackPower, 150)

		},
	},
})

PvP ret

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) {

		},
	},
})

T4 Prot

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) {

		},
	},
})

T4 Ret

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) {

		},
	},
})

T6 Prot

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, result *core.SpellResult) {
					if !spell.ProcMask.Matches(core.ProcMaskMelee) {
						return
					}
					if sim.RandomFloat("lightbringer 2pc") > 0.2 {
						return
					}
					paladin.AddMana(sim, 50, manaMetrics)
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Tier 6 ret

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

			procSpell := paladin.RegisterSpell(core.SpellConfig{
				ActionID: core.ActionID{SpellID: 70765},
				ApplyEffects: func(_ *core.Simulation, _ *core.Unit, _ *core.Spell) {
					paladin.DivineStorm.CD.Reset()
				},
			})

			paladin.RegisterAura(core.Aura{
				Label:    "Lightsworn 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, result *core.SpellResult) {
					if !spell.ProcMask.Matches(core.ProcMaskMeleeWhiteHit) {
						return
					}
					if sim.RandomFloat("lightsworn 2pc") > 0.4 {
						return
					}
					procSpell.Cast(sim, &paladin.Unit)
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

Tier 10 ret

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

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

		},
	},
})

Tier 10 prot

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

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

		},
	},
})

Tier 7 ret

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

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

		},
	},
})

Tier 7 prot

View Source
var ItemSetTuralyonsBattlegear = core.NewItemSet(core.ItemSet{
	Name:            "Turalyon's Battlegear",
	AlternativeName: "Liadrin's Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})

Tier 9 ret (Alliance/Horde)

View Source
var ItemSetTuralyonsPlate = core.NewItemSet(core.ItemSet{
	Name:            "Turalyon's Plate",
	AlternativeName: "Liadrin's Plate",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})

Tier 9 prot (Alliance/Horde)

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

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

	//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
	JudgementOfWisdom     *core.Spell
	JudgementOfLight      *core.Spell
	HammerOfWrath         *core.Spell
	SealOfVengeance       *core.Spell
	SealOfRighteousness   *core.Spell
	SealOfCommand         *core.Spell
	AvengingWrath         *core.Spell
	DivineProtection      *core.Spell
	SovDotSpell           *core.Spell

	HolyShieldAura    *core.Aura
	RighteousFuryAura *core.Aura
	//DivinePleaAura          *core.Aura
	JudgementOfWisdomAura   *core.Aura
	JudgementOfLightAura    *core.Aura
	SealOfVengeanceAura     *core.Aura
	SealOfCommandAura       *core.Aura
	SealOfRighteousnessAura *core.Aura
	AvengingWrathAura       *core.Aura
	DivineProtectionAura    *core.Aura
	ForbearanceAura         *core.Aura
	VengeanceAura           *core.Aura

	ArtOfWarInstantCast *core.Aura

	SpiritualAttunementMetrics *core.ResourceMetrics

	HasTuralyonsOrLiadrinsBattlegear2Pc bool

	DemonAndUndeadTargetCount int32

	AvoidClippingConsecration           bool
	HoldLastAvengingWrathUntilExecution bool
	CancelChaosBane                     bool
	// contains filtered or unexported fields
}

func NewPaladin

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

maybe need to add stat dependencies

func (*Paladin) ActivateRighteousFury

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) GetCharacter

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

func (*Paladin) GetMutualLockoutDPAW

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

Shared 30sec cooldown for Divine Protection and Avenging Wrath

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) MeleeCritMultiplier

func (paladin *Paladin) MeleeCritMultiplier() float64

Prior to WOTLK, behavior was to double dip.

func (*Paladin) RegisterAvengingWrathCD

func (paladin *Paladin) RegisterAvengingWrathCD()

func (*Paladin) Reset

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

func (*Paladin) SpellCritMultiplier

func (paladin *Paladin) SpellCritMultiplier() float64

func (*Paladin) ToughnessArmorMultiplier added in v1.0.1

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