warlock

package
v0.0.0-...-e2dc775 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WarlockFlagAffliction  = core.SpellFlagAgentReserved1
	WarlockFlagDemonology  = core.SpellFlagAgentReserved2
	WarlockFlagDestruction = core.SpellFlagAgentReserved3

	SpellFlagWarlock = WarlockFlagAffliction | WarlockFlagDemonology | WarlockFlagDestruction
)
View Source
const (
	SpellCode_WarlockNone int32 = iota

	SpellCode_WarlockConflagrate
	SpellCode_WarlockCorruption
	SpellCode_WarlockCurseOfAgony
	SpellCode_WarlockCurseOfDoom
	SpellCode_WarlockDeathCoil
	SpellCode_WarlockDemonicSacrifice
	SpellCode_WarlockDrainLife
	SpellCode_WarlockDrainSoul
	SpellCode_WarlockImmolate
	SpellCode_WarlockLifeTap
	SpellCode_WarlockSearingPain
	SpellCode_WarlockShadowBolt
	SpellCode_WarlockShadowburn
	SpellCode_WarlockSoulFire
)
View Source
const ConflagrateRanks = 4
View Source
const CorruptionRanks = 7
View Source
const CurseOfAgonyRanks = 6
View Source
const DeathCoilRanks = 3
View Source
const DrainLifeRanks = 6
View Source
const DrainSoulRanks = 4
View Source
const ImmolateCastTime = time.Millisecond * 2000
View Source
const ImmolateRanks = 8
View Source
const LifeTapRanks = 6
View Source
const RainOfFireRanks = 4
View Source
const SearingPainRanks = 6
View Source
const ShadowBoltRanks = 10
View Source
const ShadowburnRanks = 6
View Source
const SiphonLifeRanks = 4
View Source
const SoulFireCastTime = time.Millisecond * 6000
View Source
const SoulFireRanks = 2

Variables

View Source
var ItemSetChampionsThreads = core.NewItemSet(core.ItemSet{
	Name:    "Champion's Dreadgear",
	Bonuses: bluePvPBonuses,
})
View Source
var ItemSetDeathmistRaiment = core.NewItemSet(core.ItemSet{
	Name: "Deathmist Raiment",
	Bonuses: map[int32]core.ApplyEffect{

		2: func(agent core.Agent) {
			c := agent.GetCharacter()
			c.AddResistances(8)
		},

		6: func(agent core.Agent) {
			c := agent.GetCharacter()
			c.AddStat(stats.SpellPower, 23)
		},

		8: func(agent core.Agent) {
			c := agent.GetCharacter()
			c.AddStat(stats.Armor, 200)
		},
	},
})
View Source
var ItemSetDemoniacsThreads = core.NewItemSet(core.ItemSet{
	Name: "Demoniac's Threads",
	Bonuses: map[int32]core.ApplyEffect{

		2: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			warlock.AddStat(stats.SpellPower, 12)
		},

		3: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			for _, corr := range warlock.Corruption {
				corr.DamageMultiplierAdditive += 0.02
			}
		},

		5: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			for _, spell := range warlock.DeathCoil {
				spell.CD.Duration = time.Duration(float64(spell.CD.Duration) * 0.85)
			}
		},
	},
})
View Source
var ItemSetDoomcallersAttire = core.NewItemSet(core.ItemSet{
	Name: "Doomcaller's Attire",
	Bonuses: map[int32]core.ApplyEffect{

		4: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			for _, corr := range warlock.Immolate {
				corr.BaseDamageMultiplierAdditive += 0.05
			}
		},

		5: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			for _, spell := range warlock.ShadowBolt {
				spell.Cost.Multiplier -= 15
			}
		},
	},
})
View Source
var ItemSetFelheartRaiment = core.NewItemSet(core.ItemSet{
	Name: "Felheart Raiment",
	Bonuses: map[int32]core.ApplyEffect{

		8: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			for _, spell := range warlock.Spellbook {
				if spell.SpellSchool.Matches(core.SpellSchoolShadow) {
					spell.Cost.Multiplier -= 15
				}
			}
		},
	},
})
View Source
var ItemSetFieldMarshalsThreads = core.NewItemSet(core.ItemSet{
	Name:    "Field Marshal's Threads",
	Bonuses: epicPvpBonuses,
})
View Source
var ItemSetLieutenantCommandersThreads = core.NewItemSet(core.ItemSet{
	Name:    "Lieutenant Commander's Dreadgear",
	Bonuses: bluePvPBonuses,
})
View Source
var ItemSetNemesisRaiment = core.NewItemSet(core.ItemSet{
	Name: "Nemesis Raiment",
	Bonuses: map[int32]core.ApplyEffect{

		3: func(agent core.Agent) {
			agent.GetCharacter().AddStat(stats.SpellPower, 23)
		},
	},
})
View Source
var ItemSetPlagueheartRaiment = core.NewItemSet(core.ItemSet{
	Name: "Plagueheart Raiment",
	Bonuses: map[int32]core.ApplyEffect{

		4: func(agent core.Agent) {
			warlock := agent.(WarlockAgent).GetWarlock()
			for _, corr := range warlock.Corruption {
				corr.DamageMultiplierAdditive += 0.12
			}
		},
	},
})
View Source
var ItemSetWarlordsThreads = core.NewItemSet(core.ItemSet{
	Name:    "Warlord's Threads",
	Bonuses: epicPvpBonuses,
})
View Source
var LifeTapBaseDamage = [LifeTapRanks + 1]float64{0, 30, 75, 140, 220, 310, 424}
View Source
var LifeTapSpellId = [LifeTapRanks + 1]int32{0, 1454, 1455, 1456, 11687, 11688, 11689}
View Source
var TalentTreeSizes = [3]int{17, 17, 16}

Functions

This section is empty.

Types

type APLValueWarlockCurrentPetMana

type APLValueWarlockCurrentPetMana struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueWarlockCurrentPetMana) GetFloat

func (value *APLValueWarlockCurrentPetMana) GetFloat(sim *core.Simulation) float64

func (*APLValueWarlockCurrentPetMana) String

func (value *APLValueWarlockCurrentPetMana) String() string

func (*APLValueWarlockCurrentPetMana) Type

type APLValueWarlockCurrentPetManaPercent

type APLValueWarlockCurrentPetManaPercent struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueWarlockCurrentPetManaPercent) GetFloat

func (*APLValueWarlockCurrentPetManaPercent) String

func (*APLValueWarlockCurrentPetManaPercent) Type

type APLValueWarlockPetIsActive

type APLValueWarlockPetIsActive struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueWarlockPetIsActive) GetBool

func (value *APLValueWarlockPetIsActive) GetBool(sim *core.Simulation) bool

func (*APLValueWarlockPetIsActive) String

func (value *APLValueWarlockPetIsActive) String() string

func (*APLValueWarlockPetIsActive) Type

type APLValueWarlockShouldRecastDrainSoul

type APLValueWarlockShouldRecastDrainSoul struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueWarlockShouldRecastDrainSoul) GetBool

func (*APLValueWarlockShouldRecastDrainSoul) String

func (*APLValueWarlockShouldRecastDrainSoul) Type

type APLValueWarlockShouldRefreshCorruption

type APLValueWarlockShouldRefreshCorruption struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueWarlockShouldRefreshCorruption) GetBool

func (*APLValueWarlockShouldRefreshCorruption) String

func (*APLValueWarlockShouldRefreshCorruption) Type

type PetConfig

type PetConfig struct {
	Name          string
	PowerModifier float64 // GetUnitPowerModifier("pet")
	Stats         stats.Stats
	AutoAttacks   core.AutoAttackOptions
}

type Warlock

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

	BasePets   []*WarlockPet
	ActivePet  *WarlockPet
	Felhunter  *WarlockPet
	Imp        *WarlockPet
	Succubus   *WarlockPet
	Voidwalker *WarlockPet

	Conflagrate []*core.Spell
	Corruption  []*core.Spell
	DarkPact    *core.Spell
	DrainSoul   []*core.Spell
	Immolate    []*core.Spell
	LifeTap     []*core.Spell
	SearingPain []*core.Spell
	ShadowBolt  []*core.Spell
	Shadowburn  []*core.Spell
	SoulFire    []*core.Spell
	DrainLife   []*core.Spell
	RainOfFire  []*core.Spell
	SiphonLife  []*core.Spell
	DeathCoil   []*core.Spell

	ActiveCurseAura          core.AuraArray
	CurseOfElements          *core.Spell
	CurseOfElementsAuras     core.AuraArray
	CurseOfShadow            *core.Spell
	CurseOfShadowAuras       core.AuraArray
	CurseOfRecklessness      *core.Spell
	CurseOfRecklessnessAuras core.AuraArray
	CurseOfWeakness          *core.Spell
	CurseOfWeaknessAuras     core.AuraArray
	CurseOfTongues           *core.Spell
	CurseOfTonguesAuras      core.AuraArray
	CurseOfAgony             []*core.Spell
	CurseOfDoom              *core.Spell
	AmplifyCurse             *core.Spell

	// Track all DoT spells for effecrs that add multipliers based on active effects
	DoTSpells         []*core.Spell
	DebuffSpells      []*core.Spell
	SummonDemonSpells []*core.Spell

	ImmolationAura          *core.Spell
	ShadowTranceAura        *core.Aura
	AmplifyCurseAura        *core.Aura
	ImprovedShadowBoltAuras core.AuraArray
	SoulLinkAura            *core.Aura
	MasterDemonologistAura  *core.Aura

	// The sum total of demonic pact spell power * seconds.
	DPSPAggregate float64
	// contains filtered or unexported fields
}

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

func (warlock *Warlock) NewAPLValue(rot *core.APLRotation, config *proto.APLValue) core.APLValue

func (*Warlock) OnGCDReady

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

func (*Warlock) Reset

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

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

	SoulLinkAura           *core.Aura
	DemonicEmpowermentAura *core.Aura

	DanceOfTheWickedManaMetrics *core.ResourceMetrics
	LifeTapManaMetrics          *core.ResourceMetrics
	// contains filtered or unexported fields
}

func (*WarlockPet) ExecuteCustomRotation

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

func (*WarlockPet) GetPet

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

func (*WarlockPet) Initialize

func (wp *WarlockPet) Initialize()

func (*WarlockPet) Reset

func (wp *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