mage

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2022 License: MIT Imports: 8 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

Variables

View Source
var ArcaneTalents = &proto.MageTalents{

	ArcaneFocus:         3,
	ArcaneSubtlety:      2,
	ArcaneConcentration: 5,
	SpellImpact:         3,
	FocusMagic:          true,
	MagicAttunement:     1,
	StudentOfTheMind:    3,
	ArcaneMeditation:    3,
	TormentTheWeak:      3,
	PresenceOfMind:      true,
	ArcaneMind:          5,
	ArcaneInstability:   3,
	ArcanePotency:       2,
	ArcaneEmpowerment:   3,
	ArcanePower:         true,
	ArcaneFlows:         2,
	MindMastery:         5,
	MissileBarrage:      5,
	NetherwindPresence:  3,
	SpellPower:          2,
	ArcaneBarrage:       true,

	Incineration: 3,

	ImprovedFrostbolt: 2,
	IceFloes:          3,
	IceShards:         2,
	Precision:         3,
	IcyVeins:          true,
}
View Source
var FireTalents = &proto.MageTalents{

	ArcaneSubtlety:      2,
	ArcaneFocus:         3,
	ArcaneConcentration: 5,
	SpellImpact:         3,
	StudentOfTheMind:    1,
	FocusMagic:          true,
	TormentTheWeak:      3,

	ImprovedFireball: 5,
	Ignite:           5,
	WorldInFlames:    3,
	Pyroblast:        true,
	BurningSoul:      1,
	ImprovedScorch:   3,
	MasterOfElements: 2,
	PlayingWithFire:  3,
	CriticalMass:     3,
	BlastWave:        true,
	FirePower:        5,
	Pyromaniac:       3,
	Combustion:       true,
	MoltenFury:       2,
	EmpoweredFire:    3,
	DragonsBreath:    true,
	Firestarter:      2,
	HotStreak:        3,
	Burnout:          5,
	LivingBomb:       true,
}
View Source
var FrostTalents = &proto.MageTalents{
	ArcaneSubtlety:      2,
	ArcaneFocus:         3,
	ArcaneConcentration: 5,
	SpellImpact:         3,
	StudentOfTheMind:    1,
	FocusMagic:          true,
	TormentTheWeak:      3,

	ImprovedFrostbolt:    5,
	IceFloes:             3,
	IceShards:            3,
	Precision:            3,
	PiercingIce:          3,
	IcyVeins:             true,
	ArcticReach:          2,
	FrostChanneling:      3,
	Shatter:              3,
	ColdSnap:             true,
	WintersChill:         3,
	IceBarrier:           true,
	ArcticWinds:          5,
	EmpoweredFrostbolt:   2,
	FingersOfFrost:       2,
	BrainFreeze:          3,
	SummonWaterElemental: true,
	EnduringWinter:       3,
	ChilledToTheBone:     5,
	DeepFreeze:           true,
}
View Source
var FullArcaneConsumes = FullFireConsumes
View Source
var FullFrostConsumes = FullFireConsumes
View Source
var IgniteActionID = core.ActionID{SpellID: 12848}
View Source
var ItemSetBloodmagesRegalia = core.NewItemSet(core.ItemSet{
	Name: "Bloodmage's Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			agent.GetCharacter()
			bloodmageHasteAura = agent.GetCharacter().RegisterAura(core.Aura{
				Label:    "Spec Based Haste T10 2PC",
				ActionID: core.ActionID{SpellID: 70752},
				Duration: time.Second * 5,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					aura.Unit.MultiplyCastSpeed(1.12)
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					aura.Unit.MultiplyCastSpeed(1 / 1.12)
				},
			})
		},
		4: func(agent core.Agent) {
			bloodmageDamageAura = agent.GetCharacter().RegisterAura(core.Aura{
				Label:    "Mirror Image Bonus Damage T10 4PC",
				ActionID: core.ActionID{SpellID: 70748},
				Duration: time.Second * 30,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					agent.GetCharacter().PseudoStats.DamageDealtMultiplier *= 1.18
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					agent.GetCharacter().PseudoStats.DamageDealtMultiplier /= 1.18
				},
			})
		},
	},
})
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 ItemSetKhadgarsRegalia = core.NewItemSet(core.ItemSet{
	Name: "Khadgar'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",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

			applyProcAura := func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) bool {
				if !spell.Flags.Matches(BarrageSpells) {
					return false
				}

				return sim.RandomFloat("Mage2pT8") < .25

			}

			agent.GetCharacter().StatProcWithICD("Kirin Tor 2pc", core.ActionID{SpellID: 64867}, stats.Stats{stats.SpellPower: 350}, 15*time.Second, 45*time.Second, applyProcAura)

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

		},
	},
})

T8 Ulduar

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

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

		},
	},
})

T9 horde

View Source
var P1ArcaneGear = items.EquipmentSpecFromJsonString(`{"items": [
	{
		"id": 40416,
		"enchant": 3820,
		"gems": [
			41285,
			39998
		]
	},
	{
		"id": 44661,
		"gems": [
			40026
		]
	},
	{
		"id": 40419,
		"enchant": 3810,
		"gems": [
			40051
		]
	},
	{
		"id": 44005,
		"enchant": 3722,
		"gems": [
			40026
		]
	},
	{
		"id": 44002,
		"enchant": 3832,
		"gems": [
			39998,
			39998
		]
	},
	{
		"id": 44008,
		"enchant": 2332,
		"gems": [
			39998,
			0
		]
	},
	{
		"id": 40415,
		"enchant": 3604,
		"gems": [
			39998,
			0
		]
	},
	{
		"id": 40561,
		"gems": [
			39998
		]
	},
	{
		"id": 40417,
		"enchant": 3719,
		"gems": [
			39998,
			40051
		]
	},
	{
		"id": 40558,
		"enchant": 3606
	},
	{
		"id": 40719
	},
	{
		"id": 40399
	},
	{
		"id": 39229
	},
	{
		"id": 40255
	},
	{
		"id": 40396,
		"enchant": 3834
	},
	{
		"id": 40273
	},
	{
		"id": 39426
	}
]}`)
View Source
var P1FireGear = P1ArcaneGear
View Source
var P1FrostGear = P1ArcaneGear
View Source
var PlayerOptionsArcane = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: ArcaneTalents,
		Options: arcaneMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type:                   proto.Mage_Rotation_Arcane,
			MinBlastBeforeMissiles: 4,
		},
	},
}
View Source
var PlayerOptionsArcaneAOE = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: ArcaneTalents,
		Options: arcaneMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type: proto.Mage_Rotation_Aoe,
			Aoe:  proto.Mage_Rotation_ArcaneExplosion,
		},
	},
}
View Source
var PlayerOptionsFire = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FireTalents,
		Options: fireMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type:                   proto.Mage_Rotation_Fire,
			PrimaryFireSpell:       proto.Mage_Rotation_Fireball,
			MaintainImprovedScorch: false,
		},
	},
}
View Source
var PlayerOptionsFireAOE = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FireTalents,
		Options: fireMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type: proto.Mage_Rotation_Aoe,
			Aoe:  proto.Mage_Rotation_Flamestrike,
		},
	},
}
View Source
var PlayerOptionsFrost = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FrostTalents,
		Options: frostMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type: proto.Mage_Rotation_Frost,
		},
	},
}
View Source
var PlayerOptionsFrostAOE = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FrostTalents,
		Options: frostMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type: proto.Mage_Rotation_Aoe,
			Aoe:  proto.Mage_Rotation_Blizzard,
		},
	},
}

Functions

func RegisterMage

func RegisterMage()

Types

type Mage

type Mage struct {
	core.Character
	Talents *proto.MageTalents

	Options  *proto.Mage_Options
	Rotation *proto.Mage_Rotation

	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
	Pyroblast       *core.Spell
	Scorch          *core.Spell
	WintersChill    *core.Spell
	MirrorImage     *core.Spell

	IcyVeins             *core.Spell
	SummonWaterElemental *core.Spell

	ArcaneMissilesDot   *core.Dot
	IgniteDots          []*core.Dot
	LivingBombDots      []*core.Dot
	LivingBombNotActive *llq.Queue
	FireballDot         *core.Dot
	FlamestrikeDot      *core.Dot
	FrostfireDot        *core.Dot
	PyroblastDot        *core.Dot

	ArcaneBlastAura    *core.Aura
	MissileBarrageAura *core.Aura
	ClearcastingAura   *core.Aura
	ScorchAura         *core.Aura
	HotStreakAura      *core.Aura
	CombustionAura     *core.Aura
	FingersOfFrostAura *core.Aura
	BrainFreezeAura    *core.Aura

	// Used to prevent utiliizing Brain Freeze immediately after proccing it.
	BrainFreezeActivatedAt time.Duration

	IgniteTickDamage []float64

	MageTier MageTierSets
	// 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) 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) NewMirrorImage

func (mage *Mage) NewMirrorImage() *MirrorImage

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 MageTierSets

type MageTierSets struct {
	// contains filtered or unexported fields
}

type MirrorImage

type MirrorImage struct {
	core.Pet

	Frostbolt *core.Spell
	Fireblast *core.Spell
	// contains filtered or unexported fields
}

func (*MirrorImage) GetPet

func (mi *MirrorImage) GetPet() *core.Pet

func (*MirrorImage) Initialize

func (mi *MirrorImage) Initialize()

func (*MirrorImage) OnGCDReady

func (mi *MirrorImage) OnGCDReady(sim *core.Simulation)

func (*MirrorImage) Reset

func (mi *MirrorImage) Reset(sim *core.Simulation)

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(sim *core.Simulation)

Jump to

Keyboard shortcuts

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