warlock

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WarlockSpellFlagNone    int64 = 0
	WarlockSpellConflagrate int64 = 1 << iota
	WarlockSpellShadowBolt
	WarlockSpellChaosBolt
	WarlockSpellImmolate
	WarlockSpellImmolateDot
	WarlockSpellIncinerate
	WarlockSpellSoulFire
	WarlockSpellShadowBurn
	WarlockSpellLifeTap
	WarlockSpellCorruption
	WarlockSpellHaunt
	WarlockSpellUnstableAffliction
	WarlockSpellCurseOfElements
	WarlockSpellCurseOfWeakness
	WarlockSpellCurseOfTongues
	WarlockSpellBaneOfAgony
	WarlockSpellBaneOfDoom
	WarlockSpellDrainSoul
	WarlockSpellDrainLife
	WarlockSpellMetamorphosis
	WarlockSpellSeedOfCorruption
	WarlockSpellSeedOfCorruptionExposion
	WarlockSpellHandOfGuldan
	WarlockSpellImmolationAura
	WarlockSpellSearingPain
	WarlockSpellSummonDoomguard
	WarlockSpellDoomguardDoomBolt
	WarlockSpellSummonFelguard
	WarlockSpellFelGuardLegionStrike
	WarlockSpellFelGuardFelstorm
	WarlockSpellSummonImp
	WarlockSpellImpFireBolt
	WarlockSpellSummonFelhunter
	WarlockSpellFelHunterShadowBite
	WarlockSpellSummonSuccubus
	WarlockSpellSuccubusLashOfPain
	WarlockSpellDemonSoul
	WarlockSpellShadowflame
	WarlockSpellShadowflameDot
	WarlockSpellSoulBurn
	WarlockSpellFelFlame
	WarlockSpellBurningEmbers

	WarlockShadowDamage = WarlockSpellCorruption | WarlockSpellUnstableAffliction | WarlockSpellHaunt |
		WarlockSpellDrainSoul | WarlockSpellDrainLife | WarlockSpellBaneOfDoom | WarlockSpellBaneOfAgony |
		WarlockSpellShadowBolt | WarlockSpellSeedOfCorruptionExposion | WarlockSpellHandOfGuldan |
		WarlockSpellShadowflame | WarlockSpellFelFlame | WarlockSpellChaosBolt | WarlockSpellShadowBurn

	WarlockPeriodicShadowDamage = WarlockSpellCorruption | WarlockSpellUnstableAffliction | WarlockSpellDrainSoul |
		WarlockSpellDrainLife | WarlockSpellBaneOfDoom | WarlockSpellBaneOfAgony

	WarlockFireDamage = WarlockSpellConflagrate | WarlockSpellImmolate | WarlockSpellIncinerate | WarlockSpellSoulFire |
		WarlockSpellImmolationAura | WarlockSpellHandOfGuldan | WarlockSpellSearingPain | WarlockSpellImmolateDot |
		WarlockSpellShadowflameDot | WarlockSpellFelFlame | WarlockSpellChaosBolt | WarlockSpellShadowBurn

	WarlockDoT = WarlockSpellCorruption | WarlockSpellUnstableAffliction | WarlockSpellDrainSoul |
		WarlockSpellDrainLife | WarlockSpellBaneOfDoom | WarlockSpellBaneOfAgony | WarlockSpellImmolateDot |
		WarlockSpellShadowflameDot | WarlockSpellBurningEmbers

	WarlockBasicPetSpells = WarlockSpellFelGuardLegionStrike | WarlockSpellSuccubusLashOfPain |
		WarlockSpellSuccubusLashOfPain | WarlockSpellFelHunterShadowBite | WarlockSpellImpFireBolt

	WarlockSummonSpells = WarlockSpellSummonImp | WarlockSpellSummonSuccubus | WarlockSpellSummonFelhunter |
		WarlockSpellSummonFelguard
)
View Source
const (
	PetExpertiseScale = 1.53 * core.ExpertisePerQuarterPercentReduction
)

Variables

View Source
var ItemSetMaleficRaiment = core.NewItemSet(core.ItemSet{
	Name: "Shadowflame Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			agent.(WarlockAgent).GetWarlock().AddStaticMod(core.SpellModConfig{
				Kind:       core.SpellMod_CastTime_Pct,
				ClassMask:  WarlockSpellChaosBolt | WarlockSpellHandOfGuldan | WarlockSpellHaunt,
				FloatValue: -0.1,
			})
		},
		4: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()

			dmgMod := warlock.AddDynamicMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Flat,
				ClassMask:  WarlockSpellFelFlame,
				FloatValue: 3.0,
			})

			aura := warlock.RegisterAura(core.Aura{
				Label:     "Fel Spark",
				ActionID:  core.ActionID{SpellID: 89937},
				Duration:  15 * time.Second,
				MaxStacks: 2,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					dmgMod.Activate()
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					dmgMod.Deactivate()
				},
				OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if spell.Matches(WarlockSpellFelFlame) && result.Landed() {
						aura.RemoveStack(sim)
					}
				},
			})

			core.MakePermanent(warlock.RegisterAura(core.Aura{
				Label:           "Item - Warlock T11 4P Bonus",
				ActionID:        core.ActionID{SpellID: 89935},
				ActionIDForProc: aura.ActionID,
				OnPeriodicDamageDealt: func(_ *core.Aura, sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) {
					if spell.Matches(WarlockSpellImmolateDot|WarlockSpellUnstableAffliction) &&
						sim.Proc(0.02, "Warlock 4pT11") {
						aura.Activate(sim)
						aura.SetStacks(sim, 2)
					}
				},
			}))
		},
	},
})

T11 TODO: untested, since it's currently not working ingame

Functions

This section is empty.

Types

type DoomguardPet

type DoomguardPet struct {
	core.Pet

	DoomBolt *core.Spell
}

func (*DoomguardPet) ExecuteCustomRotation

func (pet *DoomguardPet) ExecuteCustomRotation(sim *core.Simulation)

func (*DoomguardPet) GetPet

func (doomguard *DoomguardPet) GetPet() *core.Pet

func (*DoomguardPet) Initialize

func (pet *DoomguardPet) Initialize()

func (*DoomguardPet) Reset

func (pet *DoomguardPet) Reset(_ *core.Simulation)

type EbonImpPet

type EbonImpPet struct {
	core.Pet
}

func (*EbonImpPet) ExecuteCustomRotation

func (imp *EbonImpPet) ExecuteCustomRotation(sim *core.Simulation)

func (*EbonImpPet) GetPet

func (imp *EbonImpPet) GetPet() *core.Pet

func (*EbonImpPet) Initialize

func (imp *EbonImpPet) Initialize()

func (*EbonImpPet) Reset

func (imp *EbonImpPet) Reset(_ *core.Simulation)

type InfernalPet

type InfernalPet struct {
	core.Pet
	// contains filtered or unexported fields
}

func (*InfernalPet) ExecuteCustomRotation

func (infernal *InfernalPet) ExecuteCustomRotation(sim *core.Simulation)

func (*InfernalPet) GetPet

func (infernal *InfernalPet) GetPet() *core.Pet

func (*InfernalPet) Initialize

func (infernal *InfernalPet) Initialize()

func (*InfernalPet) Reset

func (infernal *InfernalPet) Reset(_ *core.Simulation)

type Warlock

type Warlock struct {
	core.Character
	Talents *proto.WarlockTalents
	Options *proto.WarlockOptions

	BaneOfAgony          *core.Spell
	BaneOfDoom           *core.Spell
	BurningEmbers        *core.Spell
	Corruption           *core.Spell
	CurseOfElementsAuras core.AuraArray
	CurseOfTonguesAuras  core.AuraArray
	CurseOfWeaknessAuras core.AuraArray
	HauntDebuffAuras     core.AuraArray
	Immolate             *core.Spell
	ImmolateDot          *core.Spell
	Metamorphosis        *core.Spell
	Seed                 *core.Spell
	ShadowEmbraceAuras   core.AuraArray
	Shadowburn           *core.Spell
	UnstableAffliction   *core.Spell

	Felhunter *WarlockPet
	Felguard  *WarlockPet
	Imp       *WarlockPet
	Succubus  *WarlockPet

	Doomguard *DoomguardPet
	Infernal  *InfernalPet
	EbonImp   *EbonImpPet

	SoulShards   int32
	SoulBurnAura *core.Aura
}

func NewWarlock

func NewWarlock(character *core.Character, options *proto.Player, warlockOptions *proto.WarlockOptions) *Warlock

func (*Warlock) AddRaidBuffs

func (warlock *Warlock) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Warlock) ApplyAfflictionTalents

func (warlock *Warlock) ApplyAfflictionTalents()

func (*Warlock) ApplyDemonologyTalents

func (warlock *Warlock) ApplyDemonologyTalents()

func (*Warlock) ApplyDestructionTalents

func (warlock *Warlock) ApplyDestructionTalents()

func (*Warlock) ApplyGlyphs

func (warlock *Warlock) ApplyGlyphs()

func (*Warlock) ApplyTalents

func (warlock *Warlock) ApplyTalents()

func (*Warlock) ChangeActivePet

func (warlock *Warlock) ChangeActivePet(sim *core.Simulation, newPet *WarlockPet)

func (*Warlock) DefaultSpellCritMultiplier

func (warlock *Warlock) DefaultSpellCritMultiplier() float64

func (*Warlock) GetCharacter

func (warlock *Warlock) GetCharacter() *core.Character

func (*Warlock) GetWarlock

func (warlock *Warlock) GetWarlock() *Warlock

func (*Warlock) HasMajorGlyph

func (warlock *Warlock) HasMajorGlyph(glyph proto.WarlockMajorGlyph) bool

func (*Warlock) HasMinorGlyph

func (warlock *Warlock) HasMinorGlyph(glyph proto.WarlockMinorGlyph) bool

func (*Warlock) HasPrimeGlyph

func (warlock *Warlock) HasPrimeGlyph(glyph proto.WarlockPrimeGlyph) bool

func (*Warlock) Initialize

func (warlock *Warlock) Initialize()

func (*Warlock) NewDoomguardPet

func (warlock *Warlock) NewDoomguardPet() *DoomguardPet

func (*Warlock) NewEbonImp

func (warlock *Warlock) NewEbonImp() *EbonImpPet

func (*Warlock) NewInfernalPet

func (warlock *Warlock) NewInfernalPet() *InfernalPet

func (*Warlock) Reset

func (warlock *Warlock) Reset(sim *core.Simulation)

func (*Warlock) ShadowEmbraceDebuffAura

func (warlock *Warlock) ShadowEmbraceDebuffAura(target *core.Unit) *core.Aura

type WarlockAgent

type WarlockAgent interface {
	GetWarlock() *Warlock
}

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

type WarlockPet

type WarlockPet struct {
	core.Pet

	AutoCastAbilities []*core.Spell
}

func (*WarlockPet) ExecuteCustomRotation

func (pet *WarlockPet) ExecuteCustomRotation(sim *core.Simulation)

func (*WarlockPet) GetPet

func (pet *WarlockPet) GetPet() *core.Pet

func (*WarlockPet) Initialize

func (pet *WarlockPet) Initialize()

func (*WarlockPet) Reset

func (pet *WarlockPet) Reset(_ *core.Simulation)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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