mage

package
v1.0.8 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2023 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpellFlagMage   = core.SpellFlagAgentReserved1
	BarrageSpells   = core.SpellFlagAgentReserved2
	HotStreakSpells = core.SpellFlagAgentReserved3
)
View Source
const ArcaneBlastBaseCastTime = time.Millisecond * 2500
View Source
const EvocationId = 12051
View Source
const IgniteMunchWindow = time.Millisecond * 10

If two spells proc Ignite at almost exactly the same time, the latter overwrites the former.

View Source
const IgniteTicks = 2
View Source
const SerpentCoilBraidID = 30720
View Source
const T84PcProcChance = 0.2

Variables

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

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

		},
	},
})

T4

View Source
var ItemSetBloodmagesRegalia = core.NewItemSet(core.ItemSet{
	Name: "Bloodmage's Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

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

		},
		4: func(agent core.Agent) {
			mage := agent.(MageAgent).GetMage()
			mage.bonusCritDamage += .05
		},
	},
})

T7 Naxx

View Source
var ItemSetGladiatorsRegalia = core.NewItemSet(core.ItemSet{
	Name: "Gladiator's Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			agent.GetCharacter().AddStat(stats.Resilience, 100)
			agent.GetCharacter().AddStat(stats.SpellPower, 29)
		},
		4: func(agent core.Agent) {
			agent.GetCharacter().AddStat(stats.SpellPower, 88)
		},
	},
})
View Source
var ItemSetKhadgarsRegalia = core.NewItemSet(core.ItemSet{
	Name:            "Khadgar's Regalia",
	AlternativeName: "Sunstrider's Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})

T9

View Source
var ItemSetKirinTorGarb = core.NewItemSet(core.ItemSet{
	Name:            "Kirin Tor Garb",
	AlternativeName: "Kirin'dor Garb",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			mage := agent.(MageAgent).GetMage()
			procAura := mage.NewTemporaryStatsAura("Kirin Tor 2pc", core.ActionID{SpellID: 64868}, stats.Stats{stats.SpellPower: 350}, 15*time.Second)

			icd := core.Cooldown{
				Timer:    agent.GetCharacter().NewTimer(),
				Duration: time.Second * 45,
			}
			procAura.Icd = &icd

			core.MakeProcTriggerAura(&mage.Unit, core.ProcTrigger{
				Name:       "Mage2pT8",
				Callback:   core.CallbackOnCastComplete,
				ProcChance: 0.25,
				Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) {
					if !icd.IsReady(sim) {
						return
					}

					if spell == mage.ArcaneBlast || spell == mage.Fireball || spell == mage.Frostbolt {
						icd.Use(sim)
						procAura.Activate(sim)
					}
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})

T8 Ulduar

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

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

		},
	},
})

T6 Sunwell

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

		},
		4: func(agent core.Agent) {
			mage := agent.(MageAgent).GetMage()

			procAura := mage.NewTemporaryStatsAura("Tirisfal 4pc Proc", core.ActionID{SpellID: 37443}, stats.Stats{stats.SpellPower: 70}, time.Second*6)
			mage.RegisterAura(core.Aura{
				Label:    "Tirisfal 4pc",
				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.ProcMaskMeleeOrRanged) {
						return
					}
					if result.Outcome.Matches(core.OutcomeCrit) {
						procAura.Activate(sim)
					}
				},
			})
		},
	},
})

T5

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

Functions

func RegisterMage

func RegisterMage()

Types

type Mage

type Mage struct {
	core.Character

	Talents  *proto.MageTalents
	Options  *proto.Mage_Options
	Rotation *proto.Mage_Rotation

	ReactionTime     time.Duration
	PyroblastDelayMs time.Duration

	ArcaneBarrage   *core.Spell
	ArcaneBlast     *core.Spell
	ArcaneExplosion *core.Spell
	ArcaneMissiles  *core.Spell
	Blizzard        *core.Spell
	DeepFreeze      *core.Spell
	Ignite          *core.Spell
	LivingBomb      *core.Spell
	Fireball        *core.Spell
	FireBlast       *core.Spell
	Flamestrike     *core.Spell
	Frostbolt       *core.Spell
	// FrostfireBolt   *core.Spell
	IceLance  *core.Spell
	Pyroblast *core.Spell
	Scorch    *core.Spell

	IcyVeins             *core.Spell
	SummonWaterElemental *core.Spell

	ArcaneBlastAura    *core.Aura
	ArcanePotencyAura  *core.Aura
	ArcanePowerAura    *core.Aura
	MissileBarrageAura *core.Aura
	ClearcastingAura   *core.Aura
	ScorchAuras        core.AuraArray

	HotStreakAura      *core.Aura
	CombustionAura     *core.Aura
	FingersOfFrostAura *core.Aura
	BrainFreezeAura    *core.Aura

	CritDebuffCategories core.ExclusiveCategoryArray
	// contains filtered or unexported fields
}

func NewMage

func NewMage(character core.Character, options *proto.Player) *Mage

func (*Mage) AddPartyBuffs

func (mage *Mage) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Mage) AddRaidBuffs

func (mage *Mage) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Mage) ApplyTalents

func (mage *Mage) ApplyTalents()

func (*Mage) BloodmagesRegalia2pcAura added in v1.0.1

func (mage *Mage) BloodmagesRegalia2pcAura() *core.Aura

func (*Mage) GetCharacter

func (mage *Mage) GetCharacter() *core.Character

func (*Mage) GetMage

func (mage *Mage) GetMage() *Mage

func (*Mage) HasMajorGlyph

func (mage *Mage) HasMajorGlyph(glyph proto.MageMajorGlyph) bool

func (*Mage) HasMinorGlyph

func (mage *Mage) HasMinorGlyph(glyph proto.MageMinorGlyph) bool

func (*Mage) Initialize

func (mage *Mage) Initialize()

func (*Mage) NewWaterElemental

func (mage *Mage) NewWaterElemental(disobeyChance float64) *WaterElemental

func (*Mage) OnGCDReady

func (mage *Mage) OnGCDReady(sim *core.Simulation)

func (*Mage) Reset

func (mage *Mage) Reset(sim *core.Simulation)

type MageAgent

type MageAgent interface {
	GetMage() *Mage
}

Agent is a generic way to access underlying mage on any of the agents.

type WaterElemental

type WaterElemental struct {
	core.Pet

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

func (*WaterElemental) GetPet

func (we *WaterElemental) GetPet() *core.Pet

func (*WaterElemental) Initialize

func (we *WaterElemental) Initialize()

func (*WaterElemental) OnGCDReady

func (we *WaterElemental) OnGCDReady(sim *core.Simulation)

func (*WaterElemental) Reset

func (we *WaterElemental) Reset(_ *core.Simulation)

Jump to

Keyboard shortcuts

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