warlock

package
v0.0.111 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 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

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

Variables

View Source
var ItemSetBalespidersBurningVestments = core.NewItemSet(core.ItemSet{
	Name: "Balespider's Burning Vestments",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()

			core.MakePermanent(warlock.RegisterAura(core.Aura{
				Label:    "Item - Warlock T12 2P Bonus",
				ActionID: core.ActionID{SpellID: 99220},
				Icd: &core.Cooldown{
					Timer:    warlock.NewTimer(),
					Duration: 45 * time.Second,
				},
				OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, _ *core.Spell, _ *core.SpellResult) {
					if aura.Icd.IsReady(sim) && sim.Proc(0.05, "Warlock 2pT12") {
						warlock.FieryImp.EnableWithTimeout(sim, warlock.FieryImp, 15*time.Second)
						aura.Icd.Use(sim)
					}
				},
			}))
		},
		4: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()

			dmgMod := warlock.AddDynamicMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				School:     core.SpellSchoolShadow | core.SpellSchoolFire,
				FloatValue: 0.20,
			})

			aura := warlock.RegisterAura(core.Aura{
				Label:    "Apocalypse",
				ActionID: core.ActionID{SpellID: 99232},
				Duration: 8 * time.Second,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					dmgMod.Activate()
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					dmgMod.Deactivate()
				},
			})

			core.MakePermanent(warlock.RegisterAura(core.Aura{
				Label:           "Item - Warlock T12 4P Bonus",
				ActionID:        core.ActionID{SpellID: 99229},
				ActionIDForProc: aura.ActionID,
				OnCastComplete: func(_ *core.Aura, sim *core.Simulation, spell *core.Spell) {
					if spell.Matches(WarlockSpellShadowBolt|WarlockSpellIncinerate|WarlockSpellSoulFire|WarlockSpellDrainSoul) &&
						sim.Proc(0.05, "Warlock 4pT12") {
						aura.Activate(sim)
					}
				},
			}))
		},
	},
})
View Source
var ItemSetGladiatorsFelshroud = core.NewItemSet(core.ItemSet{
	ID:   910,
	Name: "Gladiator's Felshroud",

	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			agent.(WarlockAgent).GetWarlock().AddStats(stats.Stats{
				stats.Intellect: 70,
			})
		},
		4: func(agent core.Agent) {
			lock := agent.(WarlockAgent).GetWarlock()
			lock.AddStats(stats.Stats{
				stats.Intellect: 90,
			})

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

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 FieryImpPet added in v0.0.79

type FieryImpPet struct {
	core.Pet

	FlameBlast *core.Spell
}

T12

func (*FieryImpPet) ExecuteCustomRotation added in v0.0.79

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

func (*FieryImpPet) GetPet added in v0.0.79

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

func (*FieryImpPet) Initialize added in v0.0.79

func (imp *FieryImpPet) Initialize()

func (*FieryImpPet) Reset added in v0.0.79

func (imp *FieryImpPet) 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
	Metamorphosis        *core.Spell
	Seed                 *core.Spell
	ShadowEmbraceAuras   core.AuraArray
	Shadowburn           *core.Spell
	UnstableAffliction   *core.Spell

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

	Doomguard *DoomguardPet
	Infernal  *InfernalPet
	EbonImp   *EbonImpPet
	FieryImp  *FieryImpPet

	SoulShards   int32
	SoulBurnAura *core.Aura
}

func NewWarlock

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

func (*Warlock) ActivatePetSummonStun added in v0.0.61

func (warlock *Warlock) ActivatePetSummonStun(sim *core.Simulation, stunActionID core.ActionID)

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

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

func (*Warlock) GetSummonStunAura added in v0.0.32

func (warlock *Warlock) GetSummonStunAura() core.Aura

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) NewFieryImp added in v0.0.79

func (warlock *Warlock) NewFieryImp() *FieryImpPet

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