mage

package
v1.9.3 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const ArcaneBlastBaseCastTime = time.Millisecond * 2500
View Source
const ArcaneBlastBaseManaCost = 195.0
View Source
const SerpentCoilBraidID = 30720
View Source
const (
	SpellFlagMage = core.SpellFlagAgentReserved1
)

Variables

View Source
var ArcaneTalents = &proto.MageTalents{
	ArcaneFocus:         5,
	ArcaneConcentration: 5,
	ArcaneImpact:        3,
	ArcaneMeditation:    3,
	PresenceOfMind:      true,
	ArcaneMind:          5,
	ArcaneInstability:   3,
	ArcanePotency:       3,
	ArcanePower:         true,
	SpellPower:          2,
	MindMastery:         5,

	ImprovedFrostbolt:  5,
	ElementalPrecision: 3,
	IceShards:          5,
	IcyVeins:           true,
	PiercingIce:        5,
	FrostChanneling:    3,
	ColdSnap:           true,
}
View Source
var FireTalents = &proto.MageTalents{
	ArcaneSubtlety: 2,

	ImprovedFireball:  5,
	Ignite:            5,
	Incineration:      2,
	Pyroblast:         true,
	ImprovedScorch:    3,
	MasterOfElements:  3,
	PlayingWithFire:   3,
	CriticalMass:      3,
	BlastWave:         true,
	FirePower:         5,
	Pyromaniac:        3,
	Combustion:        true,
	MoltenFury:        2,
	EmpoweredFireball: 5,

	ImprovedFrostbolt:  4,
	ElementalPrecision: 3,
	IceShards:          5,
	IcyVeins:           true,
}
View Source
var FrostTalents = &proto.MageTalents{
	ArcaneFocus:         5,
	ArcaneConcentration: 5,
	ArcaneImpact:        3,
	ArcaneMeditation:    3,

	ImprovedFrostbolt:    5,
	ElementalPrecision:   3,
	IceShards:            5,
	IcyVeins:             true,
	PiercingIce:          5,
	FrostChanneling:      3,
	ColdSnap:             true,
	ImprovedConeOfCold:   2,
	IceFloes:             2,
	WintersChill:         4,
	ArcticWinds:          5,
	EmpoweredFrostbolt:   5,
	SummonWaterElemental: true,
}
View Source
var FullArcaneIndividualBuffs = &proto.IndividualBuffs{
	BlessingOfKings:  true,
	BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved,
	Innervates:       1,
}
View Source
var FullArcanePartyBuffs = &proto.PartyBuffs{
	Drums:           proto.Drums_DrumsOfBattle,
	Bloodlust:       1,
	MoonkinAura:     proto.TristateEffect_TristateEffectRegular,
	ManaSpringTotem: proto.TristateEffect_TristateEffectImproved,
	ManaTideTotems:  1,
	WrathOfAirTotem: proto.TristateEffect_TristateEffectRegular,
}
View Source
var FullDebuffs = &proto.Debuffs{
	CurseOfElements:           proto.TristateEffect_TristateEffectImproved,
	ImprovedSealOfTheCrusader: true,
	JudgementOfWisdom:         true,
	Misery:                    true,
}
View Source
var FullFirePartyBuffs = &proto.PartyBuffs{
	Drums:           proto.Drums_DrumsOfBattle,
	Bloodlust:       1,
	MoonkinAura:     proto.TristateEffect_TristateEffectRegular,
	ManaSpringTotem: proto.TristateEffect_TristateEffectRegular,
	TotemOfWrath:    1,
	WrathOfAirTotem: proto.TristateEffect_TristateEffectRegular,
}
View Source
var FullFrostPartyBuffs = FullFirePartyBuffs
View Source
var FullIndividualBuffs = &proto.IndividualBuffs{
	BlessingOfKings:  true,
	BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved,
}
View Source
var FullRaidBuffs = &proto.RaidBuffs{
	GiftOfTheWild: proto.TristateEffect_TristateEffectImproved,
}
View Source
var IgniteActionID = core.ActionID{SpellID: 12848}
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) {

		},
	},
})
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) {

		},
	},
})
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, spellEffect *core.SpellEffect) {
					if spellEffect.ProcMask.Matches(core.ProcMaskMeleeOrRanged) {
						return
					}
					if spellEffect.Outcome.Matches(core.OutcomeCrit) {
						procAura.Activate(sim)
					}
				},
			})
		},
	},
})
View Source
var P1ArcaneGear = P1FireGear
View Source
var P1FireGear = items.EquipmentSpecFromJsonString(`{"items": [
	{
		"id": 29076,
		"enchant": 29191,
		"gems": [
			34220,
			24056
		]
	},
	{
		"id": 28134
	},
	{
		"id": 29079,
		"enchant": 28886,
		"gems": [
			31867,
			24030
		]
	},
	{
		"id": 28766,
		"enchant": 33150
	},
	{
		"id": 21848,
		"enchant": 24003,
		"gems": [
			31867,
			31867
		]
	},
	{
		"id": 28411,
		"enchant": 22534,
		"gems": [
			31867
		]
	},
	{
		"id": 21847,
		"enchant": 28272,
		"gems": [
			31867,
			24056
		]
	},
	{
		"id": 21846,
		"gems": [
			31867,
			31867
		]
	},
	{
		"id": 24262,
		"enchant": 24274,
		"gems": [
			31867,
			31867,
			31867
		]
	},
	{
		"id": 28517,
		"enchant": 35297,
		"gems": [
			31867,
			31867
		]
	},
	{
		"id": 28793,
		"enchant": 22536
	},
	{
		"id": 29172,
		"enchant": 22536
	},
	{
		"id": 29370
	},
	{
		"id": 27683
	},
	{
		"id": 28802,
		"enchant": 22560
	},
	{
		"id": 29270
	},
	{
		"id": 28673
	}
]}`)
View Source
var P1FrostGear = P1FireGear
View Source
var PlayerOptionsArcane = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: ArcaneTalents,
		Options: arcaneMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type: proto.Mage_Rotation_Arcane,
			Arcane: &proto.Mage_Rotation_ArcaneRotation{
				Filler:                     proto.Mage_Rotation_ArcaneRotation_ArcaneMissilesFrostbolt,
				ArcaneBlastsBetweenFillers: 3,
				StartRegenRotationPercent:  0.2,
				StopRegenRotationPercent:   0.3,
			},
		},
	},
}
View Source
var PlayerOptionsArcaneAOE = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: ArcaneTalents,
		Options: arcaneMageOptions,
		Rotation: &proto.Mage_Rotation{
			MultiTargetRotation: true,
			Aoe: &proto.Mage_Rotation_AoeRotation{
				Rotation: proto.Mage_Rotation_AoeRotation_ArcaneExplosion,
			},
		},
	},
}
View Source
var PlayerOptionsFire = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FireTalents,
		Options: fireMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type: proto.Mage_Rotation_Fire,
			Fire: &proto.Mage_Rotation_FireRotation{
				PrimarySpell:           proto.Mage_Rotation_FireRotation_Fireball,
				MaintainImprovedScorch: true,
				WeaveFireBlast:         true,
			},
		},
	},
}
View Source
var PlayerOptionsFireAOE = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FireTalents,
		Options: fireMageOptions,
		Rotation: &proto.Mage_Rotation{
			MultiTargetRotation: true,
			Aoe: &proto.Mage_Rotation_AoeRotation{
				Rotation: proto.Mage_Rotation_AoeRotation_Flamestrike,
			},
		},
	},
}
View Source
var PlayerOptionsFrost = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FrostTalents,
		Options: frostMageOptions,
		Rotation: &proto.Mage_Rotation{
			Type:  proto.Mage_Rotation_Frost,
			Frost: &proto.Mage_Rotation_FrostRotation{},
		},
	},
}
View Source
var PlayerOptionsFrostAOE = &proto.Player_Mage{
	Mage: &proto.Mage{
		Talents: FrostTalents,
		Options: frostMageOptions,
		Rotation: &proto.Mage_Rotation{
			MultiTargetRotation: true,
			Aoe: &proto.Mage_Rotation_AoeRotation{
				Rotation: proto.Mage_Rotation_AoeRotation_Blizzard,
			},
		},
	},
}

Functions

func RegisterMage

func RegisterMage()

Types

type Mage

type Mage struct {
	core.Character
	Talents proto.MageTalents

	Options        proto.Mage_Options
	RotationType   proto.Mage_Rotation_Type
	ArcaneRotation proto.Mage_Rotation_ArcaneRotation
	FireRotation   proto.Mage_Rotation_FireRotation
	FrostRotation  proto.Mage_Rotation_FrostRotation
	AoeRotation    proto.Mage_Rotation_AoeRotation
	UseAoeRotation bool

	ArcaneBlast     []*core.Spell
	ArcaneExplosion *core.Spell
	ArcaneMissiles  *core.Spell
	Blizzard        *core.Spell
	Ignite          *core.Spell
	Fireball        *core.Spell
	FireBlast       *core.Spell
	Flamestrike     *core.Spell
	Frostbolt       *core.Spell
	Pyroblast       *core.Spell
	Scorch          *core.Spell
	WintersChill    *core.Spell

	IcyVeins             *core.Spell
	SummonWaterElemental *core.Spell

	ArcaneMissilesDot *core.Dot
	IgniteDots        []*core.Dot
	FireballDot       *core.Dot
	FlamestrikeDot    *core.Dot
	PyroblastDot      *core.Dot

	ArcaneBlastAura  *core.Aura
	ClearcastingAura *core.Aura
	ScorchAura       *core.Aura

	IgniteTickDamage []float64
	// 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) ArcaneBlastCastTime

func (mage *Mage) ArcaneBlastCastTime(numStacks int32) time.Duration

func (*Mage) ArcaneBlastManaCost

func (mage *Mage) ArcaneBlastManaCost(numStacks int32) float64

func (*Mage) GetCharacter

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

func (*Mage) GetMage

func (mage *Mage) GetMage() *Mage

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

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

func (*Mage) Reset

func (mage *Mage) Reset(_ *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(sim *core.Simulation)

Jump to

Keyboard shortcuts

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