Documentation
¶
Index ¶
- Constants
- Variables
- type Mage
- func (mage *Mage) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
- func (mage *Mage) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (mage *Mage) ApplyTalents()
- func (mage *Mage) GainIcicle(sim *core.Simulation, target *core.Unit, baseDamage float64)
- func (mage *Mage) GetCharacter() *core.Character
- func (mage *Mage) GetFrostMasteryBonus() float64
- func (mage *Mage) GetMage() *Mage
- func (mage *Mage) HandleHeatingUp(sim *core.Simulation, spell *core.Spell, result *core.SpellResult)
- func (mage *Mage) HasMajorGlyph(glyph proto.MageMajorGlyph) bool
- func (mage *Mage) HasMinorGlyph(glyph proto.MageMinorGlyph) bool
- func (mage *Mage) HeatingUpSpellHandler(sim *core.Simulation, spell *core.Spell, result *core.SpellResult, ...)
- func (mage *Mage) Initialize()
- func (mage *Mage) NewMirrorImage() *MirrorImage
- func (mage *Mage) OnEncounterStart(sim *core.Simulation)
- func (mage *Mage) ProcFingersOfFrost(sim *core.Simulation, spell *core.Spell)
- func (mage *Mage) Reset(sim *core.Simulation)
- func (mage *Mage) SpendIcicle(sim *core.Simulation, target *core.Unit, damage float64)
- type MageAgent
- type MirrorImage
Constants ¶
View Source
const ( FireSpellMaxTimeUntilResult = 750 * time.Millisecond HeatingUpDeactivateBuffer = 250 * time.Millisecond MageSpellFlagNone int64 = 0 MageSpellAlterTime int64 = 1 << iota MageSpellArcaneBarrage MageSpellArcaneBlast MageSpellArcaneExplosion MageSpellArcanePower MageSpellArcaneMissilesCast MageSpellArcaneMissilesTick MageSpellBlizzard MageSpellConeOfCold MageSpellDeepFreeze MageSpellDragonsBreath MageSpellEvocation MageSpellFireBlast MageSpellFireball MageSpellFlamestrike MageSpellFlamestrikeDot MageSpellFrostArmor MageSpellFrostbolt MageSpellFrostBomb MageSpellFrostBombExplosion MageSpellFrostfireBolt MageSpellFrostNova MageSpellFrozenOrb MageSpellFrozenOrbTick MageSpellIcicle MageSpellIceFloes MageSpellIceLance MageSpellIcyVeins MageSpellIgnite MageSpellInfernoBlast MageSpellLivingBombApply MageSpellLivingBombExplosion MageSpellLivingBombDot MageSpellMageArmor MageSpellManaGems MageSpellMirrorImage MageSpellMoltenArmor MageSpellNetherTempest MageSpellNetherTempestDot MageSpellPresenceOfMind MageSpellPyroblast MageSpellPyroblastDot MagespellRuneOfPower MageSpellScorch MageSpellCombustion MageSpellCombustionDot MageMirrorImageSpellArcaneBlast MageWaterElementalSpellWaterBolt MageSpellLast MageSpellsAll = MageSpellLast<<1 - 1 MageSpellLivingBomb = MageSpellLivingBombDot | MageSpellLivingBombExplosion MageSpellFire = MageSpellDragonsBreath | MageSpellFireball | MageSpellCombustion | MageSpellFireBlast | MageSpellFlamestrike | MageSpellFrostfireBolt | MageSpellIgnite | MageSpellLivingBomb | MageSpellPyroblast | MageSpellScorch MageSpellBrainFreeze = MageSpellFireball | MageSpellFrostfireBolt MageSpellsAllDamaging = MageSpellArcaneBarrage | MageSpellArcaneBlast | MageSpellArcaneExplosion | MageSpellArcaneMissilesTick | MageSpellBlizzard | MageSpellDeepFreeze | MageSpellDragonsBreath | MageSpellFireBlast | MageSpellFireball | MageSpellFlamestrike | MageSpellFrostbolt | MageSpellFrostfireBolt | MageSpellFrozenOrbTick | MageSpellIceLance | MageSpellLivingBombExplosion | MageSpellLivingBombDot | MageSpellPyroblast | MageSpellPyroblastDot | MageSpellScorch | MageSpellInfernoBlast MageSpellInstantCast = MageSpellArcaneBarrage | MageSpellArcaneMissilesCast | MageSpellArcaneMissilesTick | MageSpellFireBlast | MageSpellArcaneExplosion | MageSpellInfernoBlast | MageSpellPyroblastDot | MageSpellCombustion | MageSpellConeOfCold | MageSpellDeepFreeze | MageSpellDragonsBreath | MageSpellIceLance | MageSpellManaGems | MageSpellMirrorImage | MageSpellPresenceOfMind | MageSpellLivingBombDot | MageSpellFrostBomb | MageSpellNetherTempest | MageSpellNetherTempestDot MageSpellExtraResult = MageSpellLivingBombExplosion | MageSpellArcaneMissilesTick | MageSpellBlizzard FireSpellIgnitable = MageSpellFireball | MageSpellFrostfireBolt | MageSpellInfernoBlast | MageSpellScorch | MageSpellPyroblast )
Variables ¶
View Source
var ItemSetChronomancerRegalia = core.NewItemSet(core.ItemSet{ Name: "Chronomancer Regalia", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(agent core.Agent, setBonusAura *core.Aura) { mage := agent.(MageAgent).GetMage() arcaneBlastMod := mage.AddDynamicMod(core.SpellModConfig{ Kind: core.SpellMod_PowerCost_Pct, ClassMask: MageSpellArcaneBlast, FloatValue: 0, }) arcaneAura := mage.GetOrRegisterAura(core.Aura{ Label: "Profound Magic", ActionID: core.ActionID{SpellID: 145252}, Duration: time.Second * 10, MaxStacks: 4, OnStacksChange: func(aura *core.Aura, sim *core.Simulation, oldStacks int32, newStacks int32) { arcaneBlastMod.UpdateFloatValue(0.25 * float64(newStacks)) }, }) setBonusAura.MakeDependentProcTriggerAura(&mage.Unit, core.ProcTrigger{ Name: "Profound Magic - Consume", ClassSpellMask: MageSpellArcaneBlast, Callback: core.CallbackOnSpellHitDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { arcaneAura.Deactivate(sim) }, }) setBonusAura.MakeDependentProcTriggerAura(&mage.Unit, core.ProcTrigger{ Name: "Item - Mage T16 2P Bonus", ClassSpellMask: MageSpellArcaneMissilesCast, Callback: core.CallbackOnSpellHitDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { arcaneAura.Activate(sim) arcaneAura.AddStack(sim) }, }) fireAura := core.MakeStackingAura(&mage.Character, core.StackingStatAura{ Aura: core.Aura{ Label: "Potent Flames", ActionID: core.ActionID{SpellID: 145254}, Duration: time.Second * 5, MaxStacks: 5, }, BonusPerStack: stats.Stats{stats.HasteRating: 750}, }) mage.OnSpellRegistered(func(spell *core.Spell) { if !spell.Matches(MageSpellPyroblast) { return } mage.InstantPyroblastAura.ApplyOnExpire(func(_ *core.Aura, sim *core.Simulation) { if setBonusAura.IsActive() { fireAura.Activate(sim) fireAura.AddStack(sim) } }) }) frostClassMask := MageSpellIceLance | MageSpellFrostbolt | MageSpellFrostfireBolt | MageSpellConeOfCold frostAura := mage.GetOrRegisterAura(core.Aura{ Label: "Frozen Thoughts", ActionID: core.ActionID{SpellID: 146557}, Duration: time.Second * 15, }).AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, ClassMask: frostClassMask, FloatValue: 0.25, }) setBonusAura.MakeDependentProcTriggerAura(&mage.Unit, core.ProcTrigger{ Name: "Frozen Thoughts - Consume", ClassSpellMask: frostClassMask, Callback: core.CallbackOnSpellHitDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { frostAura.Deactivate(sim) }, }) mage.OnSpellRegistered(func(spell *core.Spell) { if !spell.Matches(MageSpellFrostbolt) { return } if mage.BrainFreezeAura == nil { return } mage.BrainFreezeAura.ApplyOnExpire(func(_ *core.Aura, sim *core.Simulation) { if setBonusAura.IsActive() { frostAura.Activate(sim) } }) }) setBonusAura.ExposeToAPL(145251) }, 4: func(agent core.Agent, setBonusAura *core.Aura) { mage := agent.(MageAgent).GetMage() mage.T16_4pc = setBonusAura frigidBlast := mage.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: 145264}, SpellSchool: core.SpellSchoolFrost, ProcMask: core.ProcMaskSpellProc, Flags: core.SpellFlagPassiveSpell, DamageMultiplier: 1, CritMultiplier: mage.DefaultCritMultiplier(), ThreatMultiplier: 1, BonusCoefficient: 1.5, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { baseDamage := mage.CalcAndRollDamageRange(sim, 1.5, 0.15000000596) spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMagicCrit) }, }) mage.OnSpellRegistered(func(spell *core.Spell) { if !spell.Matches(MageSpellFrostbolt) { return } if mage.BrainFreezeAura == nil { return } mage.BrainFreezeAura.ApplyOnExpire(func(_ *core.Aura, sim *core.Simulation) { if setBonusAura.IsActive() { frigidBlast.Cast(sim, mage.CurrentTarget) } }) }) fireAura := mage.GetOrRegisterAura(core.Aura{ Label: "Fiery Adept", ActionID: core.ActionID{SpellID: 145261}, Duration: time.Second * 15, }).AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_BonusCrit_Percent, ClassMask: MageSpellPyroblast | MageSpellPyroblastDot, FloatValue: 100, }) setBonusAura.MakeDependentProcTriggerAura(&mage.Unit, core.ProcTrigger{ Name: "Fiery Adept - Consume", ClassSpellMask: MageSpellPyroblast, RequireDamageDealt: true, Callback: core.CallbackOnSpellHitDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { fireAura.Deactivate(sim) }, }) setBonusAura.MakeDependentProcTriggerAura(&mage.Unit, core.ProcTrigger{ Name: "Item - Mage T16 4P Bonus", ClassSpellMask: MageSpellInfernoBlast, Callback: core.CallbackOnSpellHitDealt, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { fireAura.Activate(sim) }, }) setBonusAura.ExposeToAPL(145257) }, }, })
T16
View Source
var ItemSetGladiatorsRegalia = core.NewItemSet(core.ItemSet{ Name: "Gladiator's Regalia", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(agent core.Agent, setBonusAura *core.Aura) {}, 4: func(agent core.Agent, setBonusAura *core.Aura) { setBonusAura.AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_Cooldown_Flat, ClassMask: MageSpellAlterTime, TimeValue: -90 * time.Second, }) setBonusAura.ExposeToAPL(131619) }, }, })
PVP S12 / S13 / S14
View Source
var ItemSetRegaliaOfTheBurningScroll = core.NewItemSet(core.ItemSet{ Name: "Regalia of the Burning Scroll", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(_ core.Agent, setBonusAura *core.Aura) { setBonusAura.AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, ClassMask: MageSpellIceLance, FloatValue: 0.12, }).AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, ClassMask: MageSpellArcaneMissilesTick, FloatValue: 0.07, }).AttachSpellMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, ClassMask: MageSpellPyroblast | MageSpellPyroblastDot, FloatValue: 0.08, }) setBonusAura.ExposeToAPL(123097) }, 4: func(agent core.Agent, setBonusAura *core.Aura) { mage := agent.(MageAgent).GetMage() setBonusAura.AttachSpellMod(core.SpellModConfig{ FloatValue: 0.5, Kind: core.SpellMod_Cooldown_Multiplier, ClassMask: MageSpellIcyVeins, }).AttachSpellMod(core.SpellModConfig{ FloatValue: 1 - 0.2, Kind: core.SpellMod_Cooldown_Multiplier, ClassMask: MageSpellCombustion, }) mage.OnSpellRegistered(func(spell *core.Spell) { if !spell.Matches(MageSpellArcanePower) { return } setBonusAura.ApplyOnGain(func(_ *core.Aura, _ *core.Simulation) { mage.ArcanePowerDamageMod.UpdateFloatValue(mage.ArcanePowerDamageMod.GetFloatValue() + 0.1) }).ApplyOnExpire(func(_ *core.Aura, _ *core.Simulation) { mage.ArcanePowerDamageMod.UpdateFloatValue(mage.ArcanePowerDamageMod.GetFloatValue() - 0.1) }) }) setBonusAura.ExposeToAPL(123101) }, }, })
T14
View Source
var ItemSetRegaliaOfTheChromaticHydra = core.NewItemSet(core.ItemSet{ Name: "Regalia of the Chromatic Hydra", DisabledInChallengeMode: true, Bonuses: map[int32]core.ApplySetBonus{ 2: func(agent core.Agent, setBonusAura *core.Aura) { mage := agent.(MageAgent).GetMage() statValue := 1800.0 aura := mage.NewTemporaryStatsAura( "Time Lord", core.ActionID{SpellID: 138317}, stats.Stats{stats.HasteRating: statValue, stats.CritRating: statValue, stats.MasteryRating: statValue}, time.Second*30, ) mage.OnSpellRegistered(func(spell *core.Spell) { if !spell.Matches(MageSpellAlterTime) { return } spell.RelatedSelfBuff.ApplyOnExpire(func(_ *core.Aura, sim *core.Simulation) { if setBonusAura.IsActive() { aura.Activate(sim) } }) }) setBonusAura.ExposeToAPL(138316) }, 4: func(agent core.Agent, setBonusAura *core.Aura) { mage := agent.(MageAgent).GetMage() mage.T15_4pc = setBonusAura setBonusAura.ApplyOnGain(func(_ *core.Aura, _ *core.Simulation) { mage.T15_4PC_ArcaneChargeEffect += 0.05 }).ApplyOnExpire(func(_ *core.Aura, _ *core.Simulation) { mage.T15_4PC_ArcaneChargeEffect -= 0.05 }) setBonusAura.ExposeToAPL(138376) }, }, })
T15
Functions ¶
This section is empty.
Types ¶
type Mage ¶
type Mage struct {
core.Character
ClassSpellScaling float64
Talents *proto.MageTalents
Options *proto.MageOptions
ArcaneOptions *proto.ArcaneMage_Options
FireOptions *proto.FireMage_Options
FrostOptions *proto.FrostMage_Options
AlterTime *core.Spell
Combustion *core.Spell
Ignite *core.Spell
LivingBomb *core.Spell
NetherTempest *core.Spell
FireBlast *core.Spell
FlameOrbExplode *core.Spell
Flamestrike *core.Spell
FlamestrikeBW *core.Spell
FrostfireOrb *core.Spell
Pyroblast *core.Spell
SummonWaterElemental *core.Spell
SummonMirrorImages *core.Spell
IcyVeins *core.Spell
Icicle *core.Spell
AlterTimeAura *core.Aura
InvocationAura *core.Aura
RuneOfPowerAura *core.Aura
PresenceOfMindAura *core.Aura
FingersOfFrostAura *core.Aura
BrainFreezeAura *core.Aura
IcyVeinsAura *core.Aura
IceFloesAura *core.Aura
IciclesAura *core.Aura
ArcaneChargesAura *core.Aura
HeatingUp *core.Aura
InstantPyroblastAura *core.Aura
ArcanePowerDamageMod *core.SpellMod
T15_4PC_ArcaneChargeEffect float64
Icicles []float64
// Item sets
T15_4pc *core.Aura
T16_4pc *core.Aura
// 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) GainIcicle ¶
func (*Mage) GetCharacter ¶
func (*Mage) GetFrostMasteryBonus ¶
func (*Mage) HandleHeatingUp ¶ added in v0.0.4
func (mage *Mage) HandleHeatingUp(sim *core.Simulation, spell *core.Spell, result *core.SpellResult)
func (*Mage) HasMajorGlyph ¶
func (mage *Mage) HasMajorGlyph(glyph proto.MageMajorGlyph) bool
func (*Mage) HasMinorGlyph ¶
func (mage *Mage) HasMinorGlyph(glyph proto.MageMinorGlyph) bool
func (*Mage) HeatingUpSpellHandler ¶ added in v0.0.4
func (mage *Mage) HeatingUpSpellHandler(sim *core.Simulation, spell *core.Spell, result *core.SpellResult, callback func())
func (*Mage) Initialize ¶
func (mage *Mage) Initialize()
func (*Mage) NewMirrorImage ¶
func (mage *Mage) NewMirrorImage() *MirrorImage
func (*Mage) OnEncounterStart ¶ added in v0.0.13
func (mage *Mage) OnEncounterStart(sim *core.Simulation)
func (*Mage) ProcFingersOfFrost ¶
func (mage *Mage) ProcFingersOfFrost(sim *core.Simulation, spell *core.Spell)
func (*Mage) Reset ¶
func (mage *Mage) Reset(sim *core.Simulation)
func (*Mage) SpendIcicle ¶
type MageAgent ¶
type MageAgent interface {
GetMage() *Mage
}
Agent is a generic way to access underlying mage on any of the agents.
type MirrorImage ¶
type MirrorImage struct {
core.Pet
Frostbolt *core.Spell
Fireblast *core.Spell
Fireball *core.Spell
ArcaneBlast *core.Spell
// contains filtered or unexported fields
}
func (*MirrorImage) ExecuteCustomRotation ¶
func (mi *MirrorImage) ExecuteCustomRotation(sim *core.Simulation)
func (*MirrorImage) GetPet ¶
func (mi *MirrorImage) GetPet() *core.Pet
func (*MirrorImage) Initialize ¶
func (mi *MirrorImage) Initialize()
func (*MirrorImage) OnEncounterStart ¶ added in v0.0.13
func (mi *MirrorImage) OnEncounterStart(_ *core.Simulation)
func (*MirrorImage) Reset ¶
func (mi *MirrorImage) Reset(_ *core.Simulation)
Source Files
¶
- alter_time.go
- arcane_explosion.go
- armors.go
- blizzard.go
- cone_of_cold.go
- deep_freeze.go
- evocation.go
- fire_blast.go
- flamestrike.go
- frost_bomb.go
- frost_nova.go
- frostfire_bolt.go
- glyphs.go
- heating_up.go
- hotfixes.go
- ice_lance.go
- icicles.go
- icy_veins.go
- items.go
- living_bomb.go
- mage.go
- mana_gems.go
- mirror_image.go
- nether_tempest.go
- talents.go
Click to show internal directories.
Click to hide internal directories.