Documentation ¶
Index ¶
- Constants
- Variables
- func RegisterMage()
- type Mage
- func (mage *Mage) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
- func (mage *Mage) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (mage *Mage) ApplyTalents()
- func (mage *Mage) BloodmagesRegalia2pcAura() *core.Aura
- func (mage *Mage) GetCharacter() *core.Character
- func (mage *Mage) GetMage() *Mage
- func (mage *Mage) HasMajorGlyph(glyph proto.MageMajorGlyph) bool
- func (mage *Mage) HasMinorGlyph(glyph proto.MageMinorGlyph) bool
- func (mage *Mage) Initialize()
- func (mage *Mage) NewWaterElemental(disobeyChance float64) *WaterElemental
- func (mage *Mage) OnGCDReady(sim *core.Simulation)
- func (mage *Mage) Reset(sim *core.Simulation)
- type MageAgent
- type WaterElemental
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 (*Mage) AddPartyBuffs ¶
func (mage *Mage) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
func (*Mage) AddRaidBuffs ¶
func (*Mage) ApplyTalents ¶
func (mage *Mage) ApplyTalents()
func (*Mage) BloodmagesRegalia2pcAura ¶ added in v1.0.1
func (*Mage) GetCharacter ¶
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)
Source Files ¶
- arcane_barrage.go
- arcane_blast.go
- arcane_explosion.go
- arcane_missiles.go
- blizzard.go
- deep_freeze.go
- evocation.go
- fire_blast.go
- fireball.go
- flamestrike.go
- focus_magic.go
- frostbolt.go
- frostfire_bolt.go
- ice_lance.go
- ignite.go
- items.go
- living_bomb.go
- mage.go
- mana_gems.go
- mirror_image.go
- pyroblast.go
- rotations.go
- scorch.go
- talents.go
- water_elemental.go
Click to show internal directories.
Click to hide internal directories.