warlock

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

This section is empty.

Variables

View Source
var DefaultDestroWarlock = &proto.Player_Warlock{
	Warlock: &proto.Warlock{
		Talents:  defaultDestroTalents,
		Options:  defaultDestroOptions,
		Rotation: defaultDestroRotation,
	},
}
View Source
var FullDebuffs = &proto.Debuffs{
	JudgementOfWisdom:           true,
	Misery:                      true,
	BloodFrenzy:                 true,
	ExposeArmor:                 proto.TristateEffect_TristateEffectImproved,
	FaerieFire:                  proto.TristateEffect_TristateEffectImproved,
	CurseOfRecklessness:         true,
	HuntersMark:                 proto.TristateEffect_TristateEffectImproved,
	ExposeWeaknessUptime:        1,
	ExposeWeaknessHunterAgility: 800,
}
View Source
var FullIndividualBuffs = &proto.IndividualBuffs{
	BlessingOfKings:     true,
	BlessingOfSalvation: true,
}
View Source
var FullPartyBuffs = &proto.PartyBuffs{
	Bloodlust:       1,
	Drums:           proto.Drums_DrumsOfBattle,
	ManaSpringTotem: proto.TristateEffect_TristateEffectRegular,
	WrathOfAirTotem: proto.TristateEffect_TristateEffectRegular,
	TotemOfWrath:    1,
}
View Source
var FullRaidBuffs = &proto.RaidBuffs{
	ArcaneBrilliance: true,
	GiftOfTheWild:    proto.TristateEffect_TristateEffectImproved,
	DivineSpirit:     proto.TristateEffect_TristateEffectImproved,
}
View Source
var ItemSetCorruptorRaiment = core.NewItemSet(core.ItemSet{
	Name: "Corruptor Raiment",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})
View Source
var ItemSetMaleficRaiment = core.NewItemSet(core.ItemSet{
	Name: "Malefic Raiment",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})
View Source
var ItemSetOblivionRaiment = core.NewItemSet(core.ItemSet{
	Name: "Oblivion Raiment",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})
View Source
var ItemSetVoidheartRaiment = core.NewItemSet(core.ItemSet{
	Name: "Voidheart Raiment",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()

			shadowBonus := warlock.NewTemporaryStatsAura("Shadowflame", core.ActionID{SpellID: 37377}, stats.Stats{stats.ShadowSpellPower: 135}, time.Second*15)
			fireBonus := warlock.NewTemporaryStatsAura("Shadowflame Hellfire", core.ActionID{SpellID: 39437}, stats.Stats{stats.ShadowSpellPower: 135}, time.Second*15)

			warlock.RegisterAura(core.Aura{
				Label:    "Voidheart Raiment 2pc",
				Duration: core.NeverExpires,
				OnReset: func(aura *core.Aura, sim *core.Simulation) {
					aura.Activate(sim)
				},
				OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) {
					if sim.RandomFloat("cycl4p") > 0.05 {
						return
					}
					if spell.SpellSchool.Matches(core.SpellSchoolShadow) {
						shadowBonus.Activate(sim)
					}
					if spell.SpellSchool.Matches(core.SpellSchoolFire) {
						fireBonus.Activate(sim)
					}
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var PetConfigs = map[proto.Warlock_Options_Summon]PetConfig{
	proto.Warlock_Options_Felgaurd: {
		Name:             "Felguard",
		Melee:            true,
		PrimaryAbility:   Cleave,
		SecondaryAbility: Intercept,
		ManaIntRatio:     11.5,
		Stats: stats.Stats{
			stats.AttackPower: 20,
			stats.Stamina:     280,
			stats.Strength:    153,
			stats.Agility:     108,
			stats.Intellect:   133,
			stats.Mana:        893,
			stats.Spirit:      122,
			stats.MP5:         48,
		},
	},
	proto.Warlock_Options_Imp: {
		Name:           "Imp",
		ManaIntRatio:   4.9,
		Melee:          false,
		PrimaryAbility: Firebolt,
		Stats: stats.Stats{
			stats.MP5:       123,
			stats.Stamina:   101,
			stats.Strength:  145,
			stats.Agility:   38,
			stats.Intellect: 327,
			stats.Mana:      756,
			stats.Spirit:    263,
		},
	},
	proto.Warlock_Options_Succubus: {
		Name:           "Succubus",
		ManaIntRatio:   11.5,
		Melee:          true,
		PrimaryAbility: LashOfPain,
		Stats: stats.Stats{
			stats.AttackPower: 20,
			stats.Stamina:     280,
			stats.Strength:    153,
			stats.Agility:     108,
			stats.Intellect:   133,
			stats.Mana:        893,
			stats.Spirit:      122,
			stats.MP5:         48,
		},
	},
}
View Source
var Phase4Gear = items.EquipmentSpecFromJsonString(`{"items": [
	{
		"id": 31051,
		"enchant": 29191,
		"gems": [
		34220,
		32218
		]
	},
	{
		"id": 33281
	},
	{
		"id": 31054,
		"enchant": 28886,
		"gems": [
		32215,
		32218
		]
	},
	{
		"id": 32524,
		"enchant": 33150
	},
	{
		"id": 30107,
		"enchant": 24003,
		"gems": [
		32196,
		32196,
		32196
		]
	},
	{
		"id": 32586,
		"enchant": 22534
	},
	{
		"id": 31050,
		"enchant": 28272,
		"gems": [
		32196
		]
	},
	{
		"id": 30888,
		"gems": [
		32196,
		32196
		]
	},
	{
		"id": 31053,
		"enchant": 24274,
		"gems": [
		32196
		]
	},
	{
		"id": 32239,
		"enchant": 35297,
		"gems": [
		32218,
		32215
		]
	},
	{
		"id": 32527,
		"enchant": 22536
	},
	{
		"id": 33497,
		"enchant": 22536
	},
	{
		"id": 32483
	},
	{
		"id": 33829
	},
	{
		"id": 32374,
		"enchant": 22561
	},
	{},
	{
		"id": 33192,
		"gems": [
		32215
		]
	}
]}`)

Functions

func RegisterWarlock

func RegisterWarlock()

Types

type PetAbilityType

type PetAbilityType byte
const (
	Unknown PetAbilityType = iota
	Cleave
	Intercept
	LashOfPain
	Firebolt
)

type PetConfig

type PetConfig struct {
	Name string
	// DamageMultiplier float64
	Melee        bool
	Stats        stats.Stats
	ManaIntRatio float64

	// Randomly select between abilities instead of using a prio.
	RandomSelection bool

	PrimaryAbility   PetAbilityType
	SecondaryAbility PetAbilityType
}

type Warlock

type Warlock struct {
	core.Character
	Talents  proto.WarlockTalents
	Options  proto.Warlock_Options
	Rotation proto.Warlock_Rotation

	Shadowbolt     *core.Spell
	Incinerate     *core.Spell
	Immolate       *core.Spell
	ImmolateDot    *core.Dot
	UnstableAff    *core.Spell
	UnstableAffDot *core.Dot
	Corruption     *core.Spell
	CorruptionDot  *core.Dot
	SiphonLife     *core.Spell
	SiphonLifeDot  *core.Dot

	LifeTap *core.Spell

	CurseOfElements         *core.Spell
	CurseOfElementsAura     *core.Aura
	CurseOfRecklessness     *core.Spell
	CurseOfRecklessnessAura *core.Aura
	CurseOfTongues          *core.Spell
	CurseOfTonguesAura      *core.Aura
	CurseOfAgony            *core.Spell
	CurseOfAgonyDot         *core.Dot
	CurseOfDoom             *core.Spell
	CurseOfDoomDot          *core.Dot

	AmplifyCurse     *core.Spell
	AmplifyCurseAura *core.Aura

	Seeds    []*core.Spell
	SeedDots []*core.Dot

	NightfallProcAura *core.Aura
	ImpShadowboltAura *core.Aura

	Pet *WarlockPet

	DoingRegen bool
}

func NewWarlock

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

func (*Warlock) AddPartyBuffs

func (warlock *Warlock) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Warlock) AddRaidBuffs

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

func (*Warlock) ApplyTalents

func (warlock *Warlock) ApplyTalents()

func (*Warlock) GetCharacter

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

func (*Warlock) GetWarlock

func (warlock *Warlock) GetWarlock() *Warlock

func (*Warlock) Initialize

func (warlock *Warlock) Initialize()

func (*Warlock) NewWarlockPet

func (warlock *Warlock) NewWarlockPet() *WarlockPet

func (*Warlock) OnGCDReady

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

func (*Warlock) OnManaTick

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

func (*Warlock) Reset

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

func (*Warlock) ShouldCastCurseOfElements

func (warlock *Warlock) ShouldCastCurseOfElements(sim *core.Simulation, target *core.Unit, curse proto.Warlock_Rotation_Curse) bool

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
	// contains filtered or unexported fields
}

func (*WarlockPet) GetPet

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

func (*WarlockPet) Initialize

func (wp *WarlockPet) Initialize()

func (*WarlockPet) NewPetAbility

func (wp *WarlockPet) NewPetAbility(abilityType PetAbilityType, isPrimary bool) *core.Spell

func (*WarlockPet) OnGCDReady

func (wp *WarlockPet) OnGCDReady(sim *core.Simulation)

func (*WarlockPet) Reset

func (wp *WarlockPet) Reset(sim *core.Simulation)

func (*WarlockPet) TryCast

func (wp *WarlockPet) TryCast(sim *core.Simulation, target *core.Unit, spell *core.Spell) bool

Returns whether the ability was successfully cast.

Jump to

Keyboard shortcuts

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