shaman

package
v0.0.182 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DDBC_4pcT12 int = iota
	DDBC_FrostbrandWeapon

	DDBC_Total
)

Damage Done By Caster setup

View Source
const (
	SpellFlagShock     = core.SpellFlagAgentReserved1
	SpellFlagElectric  = core.SpellFlagAgentReserved2
	SpellFlagTotem     = 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
	SpellMaskFlameShockDirect
	SpellMaskFlameShockDot
	SpellMaskLavaBurst
	SpellMaskLavaBurstOverload
	SpellMaskLavaLash
	SpellMaskLightningBolt
	SpellMaskLightningBoltOverload
	SpellMaskChainLightning
	SpellMaskChainLightningOverload
	SpellMaskEarthShock
	SpellMaskLightningShield
	SpellMaskThunderstorm
	SpellMaskFireNova
	SpellMaskMagmaTotem
	SpellMaskSearingTotem
	SpellMaskPrimalStrike
	SpellMaskStormstrikeCast
	SpellMaskStormstrikeDamage
	SpellMaskEarthShield
	SpellMaskFulmination
	SpellMaskFrostShock
	SpellMaskUnleashFrost
	SpellMaskUnleashFlame
	SpellMaskEarthquake
	SpellMaskFlametongueWeapon
	SpellMaskFeralSpirit
	SpellMaskElementalMastery
	SpellMaskSpiritwalkersGrace

	SpellMaskStormstrike = SpellMaskStormstrikeCast | SpellMaskStormstrikeDamage
	SpellMaskFlameShock  = SpellMaskFlameShockDirect | SpellMaskFlameShockDot
	SpellMaskFire        = SpellMaskFlameShock | SpellMaskLavaBurst | SpellMaskLavaBurstOverload | SpellMaskLavaLash | SpellMaskFireNova | SpellMaskUnleashFlame
	SpellMaskNature      = SpellMaskLightningBolt | SpellMaskLightningBoltOverload | SpellMaskChainLightning | SpellMaskChainLightningOverload | SpellMaskEarthShock | SpellMaskThunderstorm | SpellMaskFulmination
	SpellMaskFrost       = SpellMaskUnleashFrost | SpellMaskFrostShock
	SpellMaskOverload    = SpellMaskLavaBurstOverload | SpellMaskLightningBoltOverload | SpellMaskChainLightningOverload
)
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 PetExpertiseScale = 3.25
View Source
const TotemRefreshTime5M = time.Second * 295

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

Variables

View Source
var EarthElementalSpellPowerScaling = 0.749
View Source
var FireElementalIntellectScaling = 0.3198
View Source
var FireElementalSpellPowerScaling = 0.5883
View Source
var ItemSetRagingElementsBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Battlegear of the Raging Elements",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Flat,
				FloatValue: .10,
				ClassMask:  SpellMaskLavaLash | SpellMaskStormstrike,
			})
		},
		4: func(_ core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_BonusCrit_Percent,
				FloatValue: 10,
				ClassMask:  SpellMaskLightningBolt,
			})
		},
	},
})

T11 enh (2) Set: Increases damage done by your Lava Lash and Stormstrike abilities by 10%. (4) Set: Increases the critical strike chance of your Lightning Bolt spell by 10%.

View Source
var ItemSetRagingElementsRegalia = core.NewItemSet(core.ItemSet{
	Name: "Regalia of the Raging Elements",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_BonusCrit_Percent,
				FloatValue: 10,
				ClassMask:  SpellMaskFlameShock,
			})
		},
		4: func(_ core.Agent, setBonusAura *core.Aura) {
			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_CastTime_Pct,
				FloatValue: -0.1,
				ClassMask:  SpellMaskLightningBolt,
			})
		},
	},
})

T11 elem (2) Set: Increases the critical strike chance of your Flame Shock spell by 10%. (4) Set: Reduces the cast time of your Lightning Bolt spell by 10%.

View Source
var ItemSetSpiritwalkersBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Spiritwalker's Battlegear",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			if shaman.Talents.MaelstromWeapon == 0 {
				return
			}

			shaman.OnSpellRegistered(func(spell *core.Spell) {
				if !spell.Matches(SpellMaskFeralSpirit) {
					return
				}

				dmgMod := shaman.AddDynamicMod(core.SpellModConfig{
					Kind:       core.SpellMod_DamageDone_Pct,
					FloatValue: 0.2,
					ClassMask:  SpellMaskLightningBolt | SpellMaskChainLightning,
				})

				temporalMaelstrom := shaman.RegisterAura(core.Aura{
					Label:    "Temporal Maelstrom" + shaman.Label,
					ActionID: core.ActionID{SpellID: 105869},
					Duration: time.Second * 30,
					OnGain: func(aura *core.Aura, sim *core.Simulation) {
						dmgMod.Activate()
						shaman.PseudoStats.HealingDealtMultiplier *= 1.2
					},
					OnExpire: func(aura *core.Aura, sim *core.Simulation) {
						dmgMod.Deactivate()
						shaman.PseudoStats.HealingDealtMultiplier /= 1.2
					},
				})

				shaman.MaelstromWeaponAura.ApplyOnGain(func(aura *core.Aura, sim *core.Simulation) {
					if setBonusAura.IsActive() {
						temporalMaelstrom.Activate(sim)
					}
				})

				shaman.MaelstromWeaponAura.ApplyOnExpire(func(aura *core.Aura, sim *core.Simulation) {
					temporalMaelstrom.Deactivate(sim)
				})
			})

		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			if !shaman.Talents.FeralSpirit || shaman.Talents.MaelstromWeapon == 0 {
				return
			}

			wolfProcTriggerConfig := core.ProcTrigger{
				Name:       "Spiritwalker's Battlegear 4pc" + shaman.Label,
				ActionID:   core.ActionID{SpellID: 105872},
				Callback:   core.CallbackOnSpellHitDealt,
				Outcome:    core.OutcomeLanded,
				ProcMask:   core.ProcMaskMelee,
				Harmful:    true,
				ProcChance: 0.45,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					shaman.MaelstromWeaponAura.Activate(sim)
					shaman.MaelstromWeaponAura.AddStack(sim)
				},
			}

			spiritWolves := []*SpiritWolf{shaman.SpiritWolves.SpiritWolf1, shaman.SpiritWolves.SpiritWolf2}
			for _, wolf := range spiritWolves {
				aura := setBonusAura.MakeDependentProcTriggerAura(&wolf.Unit, wolfProcTriggerConfig)

				wolf.Pet.OnPetEnable = func(sim *core.Simulation) {
					if setBonusAura.IsActive() {
						aura.Activate(sim)
					}
				}

				wolf.Pet.OnPetDisable = func(sim *core.Simulation) {
					aura.Deactivate(sim)
				}
			}
		},
	},
})

T13 enh 2 pieces: While you have any stacks of Maelstrom Weapon, your Lightning Bolt, Chain Lightning, and healing spells deal 20% more healing or damage. 4 pieces: Your Feral Spirits have a 45% chance to grant you a charge of Maelstrom Weapon each time they deal damage.

View Source
var ItemSetSpiritwalkersRegalia = core.NewItemSet(core.ItemSet{
	Name: "Spiritwalker's Regalia",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			aura := shaman.NewTemporaryStatsAura("Fury of the Ancestors",
				core.ActionID{SpellID: 105779},
				stats.Stats{stats.MasteryRating: 2000},
				15*time.Second,
			)

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Item - Shaman T13 Elemental 2P Bonus (Elemental Mastery)",
				ActionID:       core.ActionID{SpellID: 105780},
				ClassSpellMask: SpellMaskElementalMastery,
				Callback:       core.CallbackOnCastComplete,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					aura.Activate(sim)
				},
			})

		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			character := agent.(ShamanAgent).GetCharacter()

			procAura := core.MakeStackingAura(character, core.StackingStatAura{
				Aura: core.Aura{
					Label:     "Time Rupture",
					ActionID:  core.ActionID{SpellID: 105821},
					Duration:  4 * time.Second,
					MaxStacks: 3,
				},
				BonusPerStack: stats.Stats{stats.HasteRating: 250},
			})

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Spiritwalker's Regalia 4P",
				ClassSpellMask: SpellMaskOverload,
				Callback:       core.CallbackOnCastComplete,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					procAura.Activate(sim)
					procAura.AddStack(sim)
				},
			})
		},
	},
})

T13 elem (2) Set: Elemental Mastery also grants you 2000 mastery rating 15 sec. (4) Set: Each time Elemental Overload triggers, you gain 250 haste rating for 4 sec, stacking up to 3 times.

View Source
var ItemSetSpiritwalkersVestments = core.NewItemSet(core.ItemSet{
	Name: "Spiritwalker's Vestments",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, _ *core.Aura) {

		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			hasteMulti := 1.30
			aura := shaman.RegisterAura(core.Aura{
				Label:    "Item - Shaman T13 Restoration 4P Bonus (Spiritwalker's Grace)",
				ActionID: core.ActionID{SpellID: 105876},
				Duration: shaman.spiritwalkersGraceBaseDuration(),
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					shaman.MultiplyCastSpeed(hasteMulti)
					shaman.MultiplyAttackSpeed(sim, hasteMulti)
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					shaman.MultiplyCastSpeed(1 / hasteMulti)
					shaman.MultiplyAttackSpeed(sim, 1/hasteMulti)
				},
			})

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Item - Shaman T13 Restoration 4P Bonus (Spiritwalker's Grace) - Proc",
				ActionID:       core.ActionID{SpellID: 105876},
				ClassSpellMask: SpellMaskSpiritwalkersGrace,
				Callback:       core.CallbackOnApplyEffects,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					aura.Activate(sim)
				},
			})

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:      core.SpellMod_BuffDuration_Flat,
				ClassMask: SpellMaskSpiritwalkersGrace,
				TimeValue: 5 * time.Second,
			})
		},
	},
})

T13 Resto (2) Set: After using Mana Tide Totem, the cost of your healing spells are reduced by 25% for 15 sec. (4) Set: Increases the duration of Spiritwalker's Grace by 5 sec, and you gain 30% haste while Spiritwalker's grace is active.

View Source
var ItemSetTidefury = core.NewItemSet(core.ItemSet{
	Name: "Tidefury Raiment",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			shaman.DungeonSet3 = setBonusAura
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			if shaman.SelfBuffs.Shield == proto.ShamanShield_WaterShield {
				setBonusAura.AttachStatBuff(stats.MP5, 3)
			}
		},
	},
})

Dungeon Set 3 Tidefury Raiment (2) Set: Your Chain Lightning Spell now only loses 17% of its damage per jump. (4) Set: Your Water Shield ability grants an additional 56 mana each time it triggers and an additional 3 mana per 5 sec.

View Source
var ItemSetVolcanicBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Volcanic Battlegear",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {

			shaman := agent.(ShamanAgent).GetShaman()
			shaman.T12Enh2pc = setBonusAura
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			stormFireAuras := shaman.NewEnemyAuraArray(func(target *core.Unit) *core.Aura {
				return target.GetOrRegisterAura(core.Aura{
					Label:    "Stormfire-" + shaman.Label,
					ActionID: core.ActionID{SpellID: 99212},
					Duration: time.Second * 15,
					OnGain: func(aura *core.Aura, _ *core.Simulation) {
						core.EnableDamageDoneByCaster(DDBC_4pcT12, DDBC_Total, shaman.AttackTables[aura.Unit.UnitIndex], tier12StormstrikeBonus)
					},
					OnExpire: func(aura *core.Aura, _ *core.Simulation) {
						core.DisableDamageDoneByCaster(DDBC_4pcT12, shaman.AttackTables[aura.Unit.UnitIndex])
					},
				})
			})

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Name:           "Item - Shaman T12 Enhancement 4P Bonus",
				ActionID:       core.ActionID{SpellID: 99213},
				Callback:       core.CallbackOnSpellHitDealt,
				ClassSpellMask: SpellMaskStormstrikeCast,
				Outcome:        core.OutcomeLanded,
				ProcChance:     1,
				Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					stormFire := stormFireAuras.Get(result.Target)
					stormFire.Activate(sim)
				},
			})
		},
	},
})

T12 enh (2) Set: Your Lava Lash gains an additional 5% damage increase per application of Searing Flames on the target. (4) Set: Your Stormstrike ability also causes the target to take 6% increased damage from your Fire Nova, Flame Shock, Flametongue Weapon, Lava Burst, Lava Lash, and Unleash Flame abilities.

View Source
var ItemSetVolcanicRegalia = core.NewItemSet(core.ItemSet{
	Name: "Volcanic Regalia",
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			var procConfig core.ProcTrigger
			if shaman.useDragonSoul_2PT12 {
				procConfig = core.ProcTrigger{
					Name:           "Volcanic Regalia 2P",
					ClassSpellMask: SpellMaskLightningBolt,
					ProcChance:     0.3,
					Callback:       core.CallbackOnSpellHitDealt,
					ExtraCondition: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) bool {
						return shaman.FireElementalTotem != nil
					},
					Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
						shaman.FireElementalTotem.CD.Reduce(4 * time.Second)
					},
				}
			} else {
				procConfig = core.ProcTrigger{
					Name:       "Volcanic Regalia 2P",
					ProcMask:   core.ProcMaskSpellDamage,
					Outcome:    core.OutcomeLanded,
					ProcChance: 0.08,
					Callback:   core.CallbackOnSpellHitDealt,
					ICD:        time.Second * 105,
					ExtraCondition: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) bool {
						return !spell.Matches(SpellMaskOverload)
					},
					Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
						shaman.FireElementalTotem.CD.Reset()
					},
				}
			}

			setBonusAura.AttachProcTrigger(procConfig)

		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {
			shaman := agent.(ShamanAgent).GetShaman()

			instantLavaSurgeMod := shaman.AddDynamicMod(core.SpellModConfig{
				Kind:       core.SpellMod_CastTime_Pct,
				FloatValue: -1,
				ClassMask:  SpellMaskLavaBurst,
			})

			shaman.VolcanicRegalia4PT12Aura = shaman.RegisterAura(core.Aura{
				Label:    "Volcano",
				ActionID: core.ActionID{SpellID: 99207},
				Duration: 10 * time.Second,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					instantLavaSurgeMod.Activate()
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					instantLavaSurgeMod.Deactivate()
				},
			})

			shaman.T12Ele4pc = setBonusAura
		},
	},
})

T12 elem (2) Set: Your Lightning Bolt has a 30% chance to reduce the remaining cooldown on your Fire Elemental Totem by 4 sec. (4) Set: Your Lava Surge talent also makes Lava Burst instant when it triggers.

View Source
var StormstrikeActionID = core.ActionID{SpellID: 17364}
View Source
var TalentTreeSizes = [3]int{19, 19, 20}

Functions

This section is empty.

Types

type APLValueShamanCanSnapshotStrongerFireElemental added in v0.0.126

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

func (*APLValueShamanCanSnapshotStrongerFireElemental) GetBool added in v0.0.126

func (*APLValueShamanCanSnapshotStrongerFireElemental) String added in v0.0.126

func (*APLValueShamanCanSnapshotStrongerFireElemental) Type added in v0.0.126

type APLValueShamanFireElementalDuration added in v0.0.129

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

func (*APLValueShamanFireElementalDuration) GetDuration added in v0.0.129

func (*APLValueShamanFireElementalDuration) String added in v0.0.129

func (*APLValueShamanFireElementalDuration) Type added in v0.0.129

type APLValueTotemRemainingTime added in v0.0.126

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

func (*APLValueTotemRemainingTime) GetDuration added in v0.0.126

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

func (*APLValueTotemRemainingTime) String added in v0.0.126

func (value *APLValueTotemRemainingTime) String() string

func (*APLValueTotemRemainingTime) Type added in v0.0.126

type EarthElemental

type EarthElemental struct {
	core.Pet
	// 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)

type FireElemental

type FireElemental struct {
	core.Pet

	FireBlast *core.Spell
	FireNova  *core.Spell

	FireShieldAura *core.Aura
	// 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 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
	TotemElements   *proto.TotemSet
	TotemsAncestors *proto.TotemSet
	TotemsSpirits   *proto.TotemSet

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

	LightningBolt         *core.Spell
	LightningBoltOverload *core.Spell

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

	LavaBurst         *core.Spell
	LavaBurstOverload *core.Spell
	FireNova          *core.Spell
	LavaLash          *core.Spell
	Stormstrike       *core.Spell
	PrimalStrike      *core.Spell

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

	Earthquake   *core.Spell
	Thunderstorm *core.Spell

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

	FeralSpirit  *core.Spell
	SpiritWolves *SpiritWolves

	FireElemental      *FireElemental
	FireElementalTotem *core.Spell

	EarthElemental      *EarthElemental
	EarthElementalTotem *core.Spell

	MagmaTotem           *core.Spell
	ManaSpringTotem      *core.Spell
	HealingStreamTotem   *core.Spell
	SearingTotem         *core.Spell
	StrengthOfEarthTotem *core.Spell
	TremorTotem          *core.Spell
	StoneskinTotem       *core.Spell
	WindfuryTotem        *core.Spell
	WrathOfAirTotem      *core.Spell
	FlametongueTotem     *core.Spell

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

	MaelstromWeaponAura *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
	DungeonSet3 *core.Aura
	T12Enh2pc   *core.Aura
	T12Ele4pc   *core.Aura
	// contains filtered or unexported fields
}

Shaman represents a shaman character.

func NewShaman

func NewShaman(character *core.Character, talents string, totems *proto.ShamanTotems, selfBuffs SelfBuffs, thunderstormRange bool, useDragonSoul_2PT12 bool) *Shaman

func (*Shaman) AddRaidBuffs

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

func (*Shaman) ApplyEarthlivingImbueToItem

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

func (*Shaman) ApplyFlametongueImbue

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

func (*Shaman) ApplyFlametongueImbueSwap added in v0.0.21

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

func (shaman *Shaman) ApplyTalents()

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

func (shaman *Shaman) GetMentalQuicknessBonus() float64

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

func (shaman *Shaman) HasPrimeGlyph(glyph proto.ShamanPrimeGlyph) bool

func (*Shaman) Initialize

func (shaman *Shaman) Initialize()

func (*Shaman) NewAPLValue added in v0.0.126

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

func (*Shaman) NewEarthElemental

func (shaman *Shaman) NewEarthElemental() *EarthElemental

func (*Shaman) NewFireElemental

func (shaman *Shaman) NewFireElemental() *FireElemental

func (*Shaman) NewSpiritWolf

func (shaman *Shaman) NewSpiritWolf(index int) *SpiritWolf

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

func (shaman *Shaman) RegisterOnItemSwapWithImbue(effectID int32, procMask *core.ProcMask, aura *core.Aura)

func (*Shaman) RegisterWindfuryImbue

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

func (*Shaman) Reset

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

func (*Shaman) StormstrikeDebuffAura

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

TODO: Confirm how this affects lightning shield

type ShamanAgent

type ShamanAgent interface {
	core.Agent

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

Implemented by each Shaman spec.

type SpiritWolf

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

func (*SpiritWolf) ExecuteCustomRotation

func (spiritWolf *SpiritWolf) ExecuteCustomRotation(_ *core.Simulation)

func (*SpiritWolf) GetPet

func (spiritWolf *SpiritWolf) GetPet() *core.Pet

func (*SpiritWolf) Initialize

func (spiritWolf *SpiritWolf) Initialize()

func (*SpiritWolf) Reset

func (spiritWolf *SpiritWolf) Reset(sim *core.Simulation)

type SpiritWolves

type SpiritWolves struct {
	SpiritWolf1 *SpiritWolf
	SpiritWolf2 *SpiritWolf
}

func (*SpiritWolves) CancelGCDTimer

func (SpiritWolves *SpiritWolves) CancelGCDTimer(sim *core.Simulation)

func (*SpiritWolves) EnableWithTimeout

func (SpiritWolves *SpiritWolves) EnableWithTimeout(sim *core.Simulation)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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