shaman

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Jun 27, 2025 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DDBC_4pcT12 int = iota
	DDBC_FrostbrandWeapon
	DDBC_UnleashedFury
	DDBC_2PT16

	DDBC_Total
)

Damage Done By Caster setup

View Source
const (
	SpellFlagShamanSpell = core.SpellFlagAgentReserved1
	SpellFlagShock       = core.SpellFlagAgentReserved2
	SpellFlagIsEcho      = core.SpellFlagAgentReserved3
	SpellFlagFocusable   = core.SpellFlagAgentReserved4
)
View Source
const (
	AirTotem int = iota
	EarthTotem
	FireTotem
	WaterTotem
)

Indexes into NextTotemDrops for self buffs

View Source
const (
	SpellMaskNone               int64 = 0
	SpellMaskFireElementalTotem int64 = 1 << iota
	SpellMaskEarthElementalTotem
	SpellMaskFireElementalMelee
	SpellMaskFlameShockDirect
	SpellMaskFlameShockDot
	SpellMaskLavaBurst
	SpellMaskLavaBurstOverload
	SpellMaskLavaLash
	SpellMaskLightningBolt
	SpellMaskLightningBoltOverload
	SpellMaskChainLightning
	SpellMaskChainLightningOverload
	SpellMaskLavaBeam
	SpellMaskLavaBeamOverload
	SpellMaskEarthShock
	SpellMaskLightningShield
	SpellMaskThunderstorm
	SpellMaskFireNova
	SpellMaskMagmaTotem
	SpellMaskSearingTotem
	SpellMaskPrimalStrike
	SpellMaskStormstrikeCast
	SpellMaskStormstrikeDamage
	SpellMaskEarthShield
	SpellMaskFulmination
	SpellMaskFrostShock
	SpellMaskUnleashElements
	SpellMaskUnleashFrost
	SpellMaskUnleashFlame
	SpellMaskEarthquake
	SpellMaskFlametongueWeapon
	SpellMaskWindfuryWeapon
	SpellMaskFrostbrandWeapon
	SpellMaskFeralSpirit
	SpellMaskElementalMastery
	SpellMaskAscendance
	SpellMaskSpiritwalkersGrace
	SpellMaskShamanisticRage
	SpellMaskElementalBlast
	SpellMaskElementalBlastOverload
	SpellMaskStormlashTotem
	SpellMaskBloodlust

	SpellMaskStormstrike  = SpellMaskStormstrikeCast | SpellMaskStormstrikeDamage
	SpellMaskFlameShock   = SpellMaskFlameShockDirect | SpellMaskFlameShockDot
	SpellMaskFire         = SpellMaskFlameShock | SpellMaskLavaBurst | SpellMaskLavaBurstOverload | SpellMaskLavaLash | SpellMaskFireNova | SpellMaskUnleashFlame | SpellMaskLavaBeam | SpellMaskLavaBeamOverload | SpellMaskElementalBlast | SpellMaskElementalBlastOverload
	SpellMaskNature       = SpellMaskLightningBolt | SpellMaskLightningBoltOverload | SpellMaskChainLightning | SpellMaskChainLightningOverload | SpellMaskEarthShock | SpellMaskThunderstorm | SpellMaskFulmination | SpellMaskElementalBlast | SpellMaskElementalBlastOverload
	SpellMaskFrost        = SpellMaskUnleashFrost | SpellMaskFrostShock | SpellMaskElementalBlast | SpellMaskElementalBlastOverload
	SpellMaskOverload     = SpellMaskLavaBurstOverload | SpellMaskLightningBoltOverload | SpellMaskChainLightningOverload | SpellMaskElementalBlastOverload | SpellMaskLavaBeamOverload
	SpellMaskShock        = SpellMaskFlameShock | SpellMaskEarthShock | SpellMaskFrostShock
	SpellMaskTotem        = SpellMaskMagmaTotem | SpellMaskSearingTotem | SpellMaskFireElementalTotem | SpellMaskEarthElementalTotem | SpellMaskStormlashTotem
	SpellMaskInstantSpell = SpellMaskAscendance | SpellMaskFeralSpirit | SpellMaskUnleashElements | SpellMaskBloodlust
)
View Source
const (
	// This could be value or bitflag if we ended up needing multiple flags at the same time.
	//1 to 5 are used by MaelstromWeapon Stacks
	CastTagLightningOverload int32 = 6
)
View Source
const TotemRefreshTime5M = time.Second * 295

Start looking to refresh 5 minute totems at 4:55.

Variables

View Source
var EarthElementalSpellPowerScaling = 1.3 // Estimated from beta testing
View Source
var FireElementalSpellPowerScaling = 0.36
View Source
var ItemSetBattlegearOfTheFirebird = core.NewItemSet(core.ItemSet{
	Name:                    "Battlegear of the Firebird",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  SpellMaskLavaLash,
				FloatValue: 0.15,
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			shaman.T14Enh4pc = setBonusAura

		},
	},
})

T14 enh (2) Set: Increases the damage done by your Lava Lash ability by 15%. (4) Set: Increases the critical strike chance bonus from your Stormstrike ability by an additional 15%.

View Source
var ItemSetBattlegearOfTheWitchDoctor = core.NewItemSet(core.ItemSet{
	Name:                    "Battlegear of the Witch Doctor",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Battlegear of the Witch Doctor 2P",
				Callback:       core.CallbackOnSpellHitDealt,
				Outcome:        core.OutcomeLanded,
				ClassSpellMask: SpellMaskStormstrikeCast,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					shaman.MaelstromWeaponAura.Activate(sim)
					shaman.MaelstromWeaponAura.SetStacks(sim, shaman.MaelstromWeaponAura.GetStacks()+2)
				},
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Battlegear of the Witch Doctor 4P",
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskWindfuryWeapon,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					shaman.FeralSpirit.CD.Reduce(time.Second * 8)
					shaman.UpdateMajorCooldowns()
				},
			})
		},
	},
})

T15 enh (2) Set: Your Stormstrike also grants you 2 additional charges of Maelstrom Weapon. (4) Set: The cooldown of your Feral Spirits is reduced by 8 sec each time Windfury Weapon is triggered.

View Source
var ItemSetCelesialHarmonyBattlegear = core.NewItemSet(core.ItemSet{
	Name:                    "Celestial Harmony Battlegear",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			var imbueSpells []*core.Spell
			shaman.OnSpellRegistered(func(spell *core.Spell) {
				if spell.Matches(SpellMaskWindfuryWeapon | SpellMaskFrostbrandWeapon | SpellMaskFlametongueWeapon) {
					imbueSpells = append(imbueSpells, spell)
				}
			})
			procAura := core.MakeProcTriggerAura(&shaman.Unit, core.ProcTrigger{
				Name:       "Celestial Harmony Battlegear 2P Proc",
				Callback:   core.CallbackOnSpellHitDealt,
				Outcome:    core.OutcomeLanded,
				ProcMask:   core.ProcMaskMeleeOrMeleeProc,
				ICD:        time.Millisecond * 100,
				ProcChance: 0.1,
				Duration:   time.Second * 10,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if len(imbueSpells) == 0 {
						return
					}
					rand := int(math.Floor(sim.RollWithLabel(0, float64(len(imbueSpells)), "Enh 4PT16 Proc")))
					imbueSpells[rand].Cast(sim, result.Target)
				},
			})
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Celestial Harmony Battlegear 2P",
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskUnleashElements,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					procAura.Activate(sim)
				},
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Celestial Harmony Battlegear 4P",
				Callback:       core.CallbackOnPeriodicDamageDealt,
				ClassSpellMask: SpellMaskFlameShockDot,
				ProcChance:     0.05,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					sfAura := shaman.GetAura("Searing Flames")
					if sfAura != nil {
						sfAura.Activate(sim)
						sfAura.SetStacks(sim, sfAura.GetStacks()+5)
						shaman.LavaLash.CD.Reset()
					}
				},
			})
		},
	},
})

T16 enh 2 pieces: For 10 sec after using Unleash Elements, your attacks have a chance to unleash a random weapon imbue. 4 pieces: When Flame Shock deals periodic damage, you have a 5% chance to gain 5 stacks of Searing Flames and reset the cooldown of Lava Lash.

View Source
var ItemSetCelestialHarmonyRegalia = core.NewItemSet(core.ItemSet{
	Name:                    "Celestial Harmony Regalia",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			debuffAuras := shaman.NewEnemyAuraArray(func(target *core.Unit) *core.Aura {
				return target.GetOrRegisterAura(core.Aura{
					Label:     "Elemental Discharge - " + shaman.Label,
					ActionID:  core.ActionID{SpellID: 144999},
					Duration:  time.Second * 2,
					MaxStacks: 6,
					OnStacksChange: func(aura *core.Aura, sim *core.Simulation, oldStacks, newStacks int32) {
						aura.Duration = time.Second * 2 * time.Duration(newStacks)
						aura.Refresh(sim)
						core.EnableDamageDoneByCaster(DDBC_2PT16, DDBC_Total, shaman.AttackTables[aura.Unit.UnitIndex], func(sim *core.Simulation, spell *core.Spell, attackTable *core.AttackTable) float64 {
							if spell.SpellSchool.Matches(core.SpellSchoolNature | core.SpellSchoolFire) {

								return 1.0 + float64(newStacks)*0.04
							}
							return 1.0
						})
					},
					OnExpire: func(aura *core.Aura, sim *core.Simulation) {
						aura.Duration = time.Second * 2
						core.DisableDamageDoneByCaster(DDBC_2PT16, shaman.AttackTables[aura.Unit.UnitIndex])
					},
				})
			})
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Celestial Harmony Regalia 2P",
				Callback:       core.CallbackOnSpellHitDealt,
				Outcome:        core.OutcomeLanded,
				ClassSpellMask: SpellMaskFulmination,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					debuff := debuffAuras.Get(result.Target)
					debuff.Activate(sim)
					debuff.SetStacks(sim, shaman.LightningShieldAura.GetStacks()-1)
				},
			})

		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Celestial Harmony Regalia 4P",
				Callback:       core.CallbackOnSpellHitDealt,
				Outcome:        core.OutcomeLanded,
				ClassSpellMask: SpellMaskLightningBolt | SpellMaskChainLightning,
				ICD:            time.Second * 60,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {

				},
			})
		},
	},
})

T16 elem (2) Set: Fulmination increases all Fire and Nature damage dealt to that target from the Shaman by 4% for 2 sec per Lightning Shield charge consumed. (4) Set: Your Lightning Bolt and Chain Lightning spells have a chance to summon a Lightning Elemental to fight by your side for 10 sec.

View Source
var ItemSetGladiatorsEarthshaker = core.NewItemSet(core.ItemSet{
	Name:                    "Gladiator's Earthshaker",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			shaman.S12Enh2pc = setBonusAura
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {},
	},
})

S12 enh (2) Set: Increases the chance to trigger your Maelstrom Weapon talent by 20%. (4) Set: While your weapon is imbued with Flametongue Weapon, your attacks also slow the target's movement speed by 50% for 3 sec.

View Source
var ItemSetRegaliaOfTheFirebird = core.NewItemSet(core.ItemSet{
	Name:                    "Regalia of the Firebird",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				FloatValue: 0.05,
				ClassMask:  SpellMaskLightningBolt | SpellMaskLightningBoltOverload,
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			shaman.T14Ele4pc = setBonusAura

		},
	},
})

T14 elem (2) Set: Increases the damage done by your Lightning Bolt spell by 5%. (4) Set: Your Rolling Thunder ability now grants 2 Lightning Shield charges each time it triggers.

View Source
var ItemSetRegaliaOfTheWitchDoctor = core.NewItemSet(core.ItemSet{
	Name:                    "Regalia of the Witch Doctor",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			lightningStrike := shaman.RegisterSpell(core.SpellConfig{
				ActionID:       core.ActionID{SpellID: 138146},
				SpellSchool:    core.SpellSchoolNature,
				ProcMask:       core.ProcMaskSpellProc,
				CritMultiplier: shaman.DefaultCritMultiplier(),
				MissileSpeed:   20,
				ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) {
					baseDamage := sim.RollWithLabel(32375, 37625, "Lighting Strike 2pT14")
					nTargets := shaman.Env.GetNumTargets()
					results := make([]*core.SpellResult, nTargets)
					for i, aoeTarget := range sim.Encounter.TargetUnits {
						results[i] = spell.CalcDamage(sim, aoeTarget, baseDamage/float64(nTargets), spell.OutcomeMagicHitAndCrit)
					}
					spell.WaitTravelTime(sim, func(sim *core.Simulation) {
						for i, _ := range sim.Encounter.TargetUnits {
							spell.DealDamage(sim, results[i])
						}
					})
				},
			})

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Regalia of the Witch Doctor 2P",
				Callback:       core.CallbackOnSpellHitDealt,
				Outcome:        core.OutcomeLanded,
				ProcChance:     0.1,
				ClassSpellMask: SpellMaskLightningBolt | SpellMaskChainLightningOverload | SpellMaskLavaBeam | SpellMaskLavaBeamOverload | SpellMaskChainLightning | SpellMaskChainLightningOverload,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					lightningStrike.Cast(sim, result.Target)
				},
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()
			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Regalia of the Witch Doctor 4P",
				Callback:       core.CallbackOnCastComplete,
				ClassSpellMask: SpellMaskLavaBurst,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					shaman.Ascendance.CD.Reduce(time.Millisecond * 1500)
					shaman.UpdateMajorCooldowns()
				},
			})
		},
	},
})

T15 elem (2) Set: Your Lightning Bolt, Chain Lighting, and Lava Beam hits have a 10% chance to cause a Lightning Strike at the target's location, dealing 32375 to 37625 Nature damage divided among all non-crowd controlled targets within 10 yards. (4) Set: The cooldown of your Ascendance is reduced by 1 sec each time you cast Lava Burst.

Functions

This section is empty.

Types

type APLValueShamanFireElementalDuration

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

func (*APLValueShamanFireElementalDuration) GetDuration

func (*APLValueShamanFireElementalDuration) String

func (*APLValueShamanFireElementalDuration) Type

type APLValueTotemRemainingTime

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

func (*APLValueTotemRemainingTime) GetDuration

func (value *APLValueTotemRemainingTime) GetDuration(sim *core.Simulation) time.Duration

func (*APLValueTotemRemainingTime) String

func (value *APLValueTotemRemainingTime) String() string

func (*APLValueTotemRemainingTime) Type

type EarthElemental

type EarthElemental struct {
	core.Pet

	Pulverize *core.Spell
	// contains filtered or unexported fields
}

func (*EarthElemental) ExecuteCustomRotation

func (earthElemental *EarthElemental) ExecuteCustomRotation(sim *core.Simulation)

func (*EarthElemental) GetPet

func (earthElemental *EarthElemental) GetPet() *core.Pet

func (*EarthElemental) Initialize

func (earthElemental *EarthElemental) Initialize()

func (*EarthElemental) Reset

func (earthElemental *EarthElemental) Reset(_ *core.Simulation)

func (*EarthElemental) TryCast

func (earthElemental *EarthElemental) TryCast(sim *core.Simulation, target *core.Unit, spell *core.Spell) bool

type FireElemental

type FireElemental struct {
	core.Pet

	FireBlast *core.Spell
	FireNova  *core.Spell
	Immolate  *core.Spell
	Empower   *core.Spell
	// contains filtered or unexported fields
}

func (*FireElemental) ExecuteCustomRotation

func (fireElemental *FireElemental) ExecuteCustomRotation(sim *core.Simulation)

func (*FireElemental) GetPet

func (fireElemental *FireElemental) GetPet() *core.Pet

func (*FireElemental) Initialize

func (fireElemental *FireElemental) Initialize()

func (*FireElemental) Reset

func (fireElemental *FireElemental) Reset(_ *core.Simulation)

func (*FireElemental) TryCast

func (fireElemental *FireElemental) TryCast(sim *core.Simulation, target *core.Unit, spell *core.Spell) bool

type SelfBuffs

type SelfBuffs struct {
	Shield  proto.ShamanShield
	ImbueMH proto.ShamanImbue
	ImbueOH proto.ShamanImbue
}

Which buffs this shaman is using.

type ShamSpellConfig

type ShamSpellConfig struct {
	ActionID            core.ActionID
	BaseCostPercent     float64
	BaseCastTime        time.Duration
	IsElementalOverload bool
	BonusCoefficient    float64
	BounceReduction     float64
	Coeff               float64
	Variance            float64
	SpellSchool         core.SpellSchool
	Overloads           *[2][]*core.Spell
}

type Shaman

type Shaman struct {
	core.Character

	ClassSpellScaling float64

	ThunderstormInRange bool // flag if thunderstorm will be in range.

	Talents   *proto.ShamanTalents
	SelfBuffs SelfBuffs

	Totems *proto.ShamanTotems

	FeleAutocast *proto.FeleAutocastSettings

	// The expiration time of each totem (earth, air, fire, water).
	TotemExpirations [4]time.Duration

	LightningBolt         *core.Spell
	LightningBoltOverload [2]*core.Spell

	ChainLightning          *core.Spell
	ChainLightningOverloads [2][]*core.Spell

	LavaBeam          *core.Spell
	LavaBeamOverloads [2][]*core.Spell

	LavaBurst         *core.Spell
	LavaBurstOverload [2]*core.Spell
	FireNova          *core.Spell
	FireNovas         []*core.Spell
	LavaLash          *core.Spell
	Stormstrike       *core.Spell
	PrimalStrike      *core.Spell
	Stormblast        *core.Spell

	LightningShield       *core.Spell
	LightningShieldDamage *core.Spell
	LightningShieldAura   *core.Aura
	Fulmination           *core.Spell

	ElementalBlast         *core.Spell
	ElementalBlastOverload [2]*core.Spell

	Earthquake   *core.Spell
	Thunderstorm *core.Spell

	EarthShock *core.Spell
	FlameShock *core.Spell
	FrostShock *core.Spell

	FeralSpirit *core.Spell

	FireElemental      *FireElemental
	FireElementalTotem *core.Spell

	EarthElemental      *EarthElemental
	EarthElementalTotem *core.Spell

	ElementalSharedCDTimer *core.Timer

	Ascendance     *core.Spell
	AscendanceAura *core.Aura

	MagmaTotem         *core.Spell
	HealingStreamTotem *core.Spell
	SearingTotem       *core.Spell
	TremorTotem        *core.Spell

	UnleashElements *core.Spell
	UnleashLife     *core.Spell
	UnleashFlame    *core.Spell
	UnleashFrost    *core.Spell
	UnleashWind     *core.Spell

	MaelstromWeaponAura           *core.Aura
	AncestralSwiftnessInstantAura *core.Aura
	SearingFlames                 *core.Spell

	SearingFlamesMultiplier float64

	AncestralAwakening *core.Spell
	HealingSurge       *core.Spell

	GreaterHealingWave *core.Spell
	HealingWave        *core.Spell
	ChainHeal          *core.Spell
	Riptide            *core.Spell
	EarthShield        *core.Spell

	VolcanicRegalia4PT12Aura *core.Aura

	// Item sets
	T14Ele4pc *core.Aura
	T14Enh4pc *core.Aura
	T15Enh2pc *core.Aura
	S12Enh2pc *core.Aura
	// contains filtered or unexported fields
}

Shaman represents a shaman character.

func NewShaman

func NewShaman(character *core.Character, talents string, selfBuffs SelfBuffs, thunderstormRange bool, feleAutocastOptions *proto.FeleAutocastSettings) *Shaman

func (*Shaman) AddRaidBuffs

func (shaman *Shaman) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Shaman) ApplyAncestralSwiftness

func (shaman *Shaman) ApplyAncestralSwiftness()

func (*Shaman) ApplyEarthlivingImbueToItem

func (shaman *Shaman) ApplyEarthlivingImbueToItem(item *core.Item)

func (*Shaman) ApplyEchoOfTheElements

func (shaman *Shaman) ApplyEchoOfTheElements()

func (*Shaman) ApplyElementalBlast

func (shaman *Shaman) ApplyElementalBlast()

func (*Shaman) ApplyElementalMastery

func (shaman *Shaman) ApplyElementalMastery()

func (*Shaman) ApplyElementalTalents

func (shaman *Shaman) ApplyElementalTalents()

func (*Shaman) ApplyEnhancementTalents

func (shaman *Shaman) ApplyEnhancementTalents()

func (*Shaman) ApplyFlametongueImbue

func (shaman *Shaman) ApplyFlametongueImbue(procMask core.ProcMask)

func (*Shaman) ApplyFlametongueImbueSwap

func (shaman *Shaman) ApplyFlametongueImbueSwap(procMask core.ProcMask)

func (*Shaman) ApplyFlametongueImbueToItem

func (shaman *Shaman) ApplyFlametongueImbueToItem(item *core.Item)

func (*Shaman) ApplyGlyphs

func (shaman *Shaman) ApplyGlyphs()

func (*Shaman) ApplyPrimalElementalist

func (shaman *Shaman) ApplyPrimalElementalist()

func (*Shaman) ApplyTalents

func (shaman *Shaman) ApplyTalents()

func (*Shaman) ApplyUnleashedFury

func (shaman *Shaman) ApplyUnleashedFury()

func (*Shaman) BloodlustActionID

func (shaman *Shaman) BloodlustActionID() core.ActionID

func (*Shaman) FrostbrandDebuffAura

func (shaman *Shaman) FrostbrandDebuffAura(target *core.Unit) *core.Aura

func (*Shaman) GetCharacter

func (shaman *Shaman) GetCharacter() *core.Character

func (*Shaman) GetOverloadChance

func (shaman *Shaman) GetOverloadChance() float64

func (*Shaman) HasMajorGlyph

func (shaman *Shaman) HasMajorGlyph(glyph proto.ShamanMajorGlyph) bool

func (*Shaman) HasMinorGlyph

func (shaman *Shaman) HasMinorGlyph(glyph proto.ShamanMinorGlyph) bool

func (*Shaman) Initialize

func (shaman *Shaman) Initialize()

func (*Shaman) NewAPLValue

func (shaman *Shaman) NewAPLValue(rot *core.APLRotation, config *proto.APLValue) core.APLValue

func (*Shaman) NewChainSpellConfig

func (shaman *Shaman) NewChainSpellConfig(config ShamSpellConfig) core.SpellConfig

func (*Shaman) NewEarthElemental

func (shaman *Shaman) NewEarthElemental(isGuardian bool) *EarthElemental

func (*Shaman) NewFireElemental

func (shaman *Shaman) NewFireElemental(isGuardian bool) *FireElemental

func (*Shaman) RegisterEarthlivingImbue

func (shaman *Shaman) RegisterEarthlivingImbue(procMask core.ProcMask)

func (*Shaman) RegisterFlametongueImbue

func (shaman *Shaman) RegisterFlametongueImbue(procMask core.ProcMask)

func (*Shaman) RegisterFrostbrandImbue

func (shaman *Shaman) RegisterFrostbrandImbue(procMask core.ProcMask)

func (*Shaman) RegisterHealingSpells

func (shaman *Shaman) RegisterHealingSpells()

func (*Shaman) RegisterWindfuryImbue

func (shaman *Shaman) RegisterWindfuryImbue(procMask core.ProcMask)

func (*Shaman) Reset

func (shaman *Shaman) Reset(sim *core.Simulation)

func (*Shaman) StormlashActionID

func (shaman *Shaman) StormlashActionID() core.ActionID

type ShamanAgent

type ShamanAgent interface {
	core.Agent

	// The Shaman controlled by this Agent.
	GetShaman() *Shaman
}

Implemented by each Shaman spec.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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