deathknight

package
v0.1.80 Latest Latest
Warning

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

Go to latest
Published: May 7, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PetSpellHitScale   = 17.0 / 8.0 * core.SpellHitRatingPerHitChance / core.MeleeHitRatingPerHitChance    // 1.7
	PetExpertiseScale  = 3.25 * core.ExpertisePerQuarterPercentReduction / core.MeleeHitRatingPerHitChance // 0.8125
	PetSpellHasteScale = 1.3
)
View Source
const (
	ScourgelordBonusSpellOB = iota + 1
	ScourgelordBonusSpellSS
	ScourgelordBonusSpellHS
)
View Source
const (
	BloodyStrikesBS = iota + 1
	BloodyStrikesHS
	BloodyStrikesBB
)

Variables

View Source
var BloodBoilActionID = core.ActionID{SpellID: 49941}
View Source
var BloodStrikeActionID = core.ActionID{SpellID: 49930}
View Source
var DeathCoilActionID = core.ActionID{SpellID: 49895}
View Source
var DeathStrikeActionID = core.ActionID{SpellID: 49924}

TODO: Cleanup death strike the same way we did for plague strike

View Source
var FrostStrikeMHActionID = frostStrikeActionID.WithTag(1)
View Source
var FrostStrikeOHActionID = frostStrikeActionID.WithTag(2)
View Source
var HeartStrikeActionID = core.ActionID{SpellID: 55262}
View Source
var HowlingBlastActionID = core.ActionID{SpellID: 51411}
View Source
var IcyTouchActionID = core.ActionID{SpellID: 59131}
View Source
var ItemSetDarkrunedBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Darkruned Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

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

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

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

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

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

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

		},
	},
})
View Source
var ItemSetScourgelordsBattlegear = core.NewItemSet(core.ItemSet{
	Name: "Scourgelord's Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

			dk := agent.(DeathKnightAgent).GetDeathKnight()
			dk.registerScourgelordsBattlegearProc()
		},
	},
})
View Source
var ItemSetScourgelordsPlate = core.NewItemSet(core.ItemSet{
	Name: "Scourgelord's Plate",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

			dk := agent.(DeathKnightAgent).GetDeathKnight()
			dk.registerScourgelordsPlateProc()
		},
	},
})
View Source
var ItemSetThassariansBattlegear = core.NewItemSet(core.ItemSet{
	Name:            "Thassarian's Battlegear",
	AlternativeName: "Koltira's Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

			dk := agent.(DeathKnightAgent).GetDeathKnight()
			dk.registerThassariansBattlegearProc()
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetThassariansPlate = core.NewItemSet(core.ItemSet{
	Name:            "Thassarian's Plate",
	AlternativeName: "Koltira's Plate",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})
View Source
var ObliterateActionID = core.ActionID{SpellID: 51425}

TODO: Cleanup obliterate the same way we did for plague strike

View Source
var PestilenceActionID = core.ActionID{SpellID: 50842}
View Source
var PlagueStrikeActionID = core.ActionID{SpellID: 49921}
View Source
var RuneStrikeActionID = core.ActionID{SpellID: 56815}
View Source
var ScourgeStrikeActionID = core.ActionID{SpellID: 55271}
View Source
var TalentTreeSizes = [3]int{28, 29, 31}

Functions

func CreateGladiatorsSigil

func CreateGladiatorsSigil(id int32, name string, ap float64, seconds time.Duration)

func CreateVirulenceProcAura added in v0.1.43

func CreateVirulenceProcAura(character *core.Character) *core.Aura

Types

type BloodwormPet

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

func (*BloodwormPet) ExecuteCustomRotation added in v0.1.63

func (bloodworm *BloodwormPet) ExecuteCustomRotation(_ *core.Simulation)

func (*BloodwormPet) GetPet

func (bloodworm *BloodwormPet) GetPet() *core.Pet

func (*BloodwormPet) Initialize

func (bloodworm *BloodwormPet) Initialize()

func (*BloodwormPet) Reset

func (bloodworm *BloodwormPet) Reset(_ *core.Simulation)

type BloodyStrikesBonusSpell added in v0.1.29

type BloodyStrikesBonusSpell int8

type DeathKnightAgent

type DeathKnightAgent interface {
	GetDeathKnight() *Deathknight
}

type Deathknight

type Deathknight struct {
	core.Character
	Talents *proto.DeathknightTalents

	Inputs DeathknightInputs

	Ghoul     *GhoulPet
	RaiseDead *core.Spell

	Gargoyle                 *GargoylePet
	SummonGargoyle           *core.Spell
	SummonGargoyleAura       *core.Aura
	GargoyleSummonDelay      time.Duration
	OnGargoyleStartFirstCast func()

	RuneWeapon        *RuneWeaponPet
	DancingRuneWeapon *core.Spell

	ArmyOfTheDead *core.Spell
	ArmyGhoul     []*GhoulPet

	Bloodworm []*BloodwormPet

	Presence Presence

	IcyTouch   *core.Spell
	BloodBoil  *core.Spell
	Pestilence *core.Spell

	PlagueStrike      *core.Spell
	PlagueStrikeMhHit *core.Spell
	PlagueStrikeOhHit *core.Spell

	DeathStrike      *core.Spell
	DeathStrikeMhHit *core.Spell
	DeathStrikeOhHit *core.Spell
	DeathStrikeHeals []float64

	Obliterate      *core.Spell
	ObliterateMhHit *core.Spell
	ObliterateOhHit *core.Spell

	BloodStrike      *core.Spell
	BloodStrikeMhHit *core.Spell
	BloodStrikeOhHit *core.Spell

	FrostStrike      *core.Spell
	FrostStrikeMhHit *core.Spell
	FrostStrikeOhHit *core.Spell

	HeartStrike       *core.Spell
	HeartStrikeOffHit *core.Spell

	RuneStrikeQueued bool
	RuneStrikeQueue  *core.Spell
	RuneStrike       *core.Spell
	RuneStrikeOh     *core.Spell
	RuneStrikeAura   *core.Aura

	GhoulFrenzy *core.Spell
	// Dummy aura for timeline metrics
	GhoulFrenzyAura *core.Aura

	LastScourgeStrikeDamage float64
	ScourgeStrike           *core.Spell

	DeathCoil *core.Spell

	DeathAndDecay *core.Spell

	HowlingBlast *core.Spell

	HasDraeneiHitAura bool
	HornOfWinter      *core.Spell

	// "CDs"
	RuneTap     *core.Spell
	MarkOfBlood *core.Spell

	BloodTap     *core.Spell
	BloodTapAura *core.Aura

	AntiMagicShell     *core.Spell
	AntiMagicShellAura *core.Aura

	EmpowerRuneWeapon *core.Spell

	UnbreakableArmor     *core.Spell
	UnbreakableArmorAura *core.Aura

	VampiricBlood     *core.Spell
	VampiricBloodAura *core.Aura

	BoneShield     *core.Spell
	BoneShieldAura *core.Aura

	UnholyFrenzy     *core.Spell
	UnholyFrenzyAura *core.Aura

	IceboundFortitude     *core.Spell
	IceboundFortitudeAura *core.Aura

	DeathPact *core.Spell

	// Used only to proc stuff as its free GCD
	MindFreezeSpell *core.Spell

	// Diseases
	FrostFeverSpell     *core.Spell
	BloodPlagueSpell    *core.Spell
	FrostFeverExtended  []int
	BloodPlagueExtended []int

	UnholyBlightSpell *core.Spell

	// Talent Auras
	KillingMachineAura  *core.Aura
	IcyTalonsAura       *core.Aura
	DesolationAura      *core.Aura
	BloodCakedBladeAura *core.Aura
	ButcheryAura        *core.Aura
	ButcheryPA          *core.PendingAction
	FreezingFogAura     *core.Aura
	BladeBarrierAura    *core.Aura
	ScentOfBloodAura    *core.Aura
	WillOfTheNecropolis *core.Aura

	// Talent Spells
	LastDiseaseDamage float64
	LastTickTime      time.Duration
	WanderingPlague   *core.Spell
	NecrosisCoeff     float64
	Necrosis          *core.Spell
	Deathchill        *core.Spell
	DeathchillAura    *core.Aura

	// Presences
	BloodPresence      *core.Spell
	BloodPresenceAura  *core.Aura
	FrostPresence      *core.Spell
	FrostPresenceAura  *core.Aura
	UnholyPresence     *core.Spell
	UnholyPresenceAura *core.Aura

	// Debuffs
	FrostFeverDebuffAura       core.AuraArray
	EbonPlagueOrCryptFeverAura core.AuraArray

	RoRTSBonus func(*core.Unit) float64 // is either RoR or TS bonus function based on talents

	MakeTSRoRAssumptions bool
	// contains filtered or unexported fields
}

func NewDeathknight

func NewDeathknight(character *core.Character, inputs DeathknightInputs, talents string) *Deathknight

func (*Deathknight) AddPartyBuffs

func (dk *Deathknight) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Deathknight) AddRaidBuffs

func (dk *Deathknight) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Deathknight) AllDiseasesAreActive

func (dk *Deathknight) AllDiseasesAreActive(target *core.Unit) bool

func (*Deathknight) ApplyBloodTalents

func (dk *Deathknight) ApplyBloodTalents()

func (*Deathknight) ApplyFrostTalents

func (dk *Deathknight) ApplyFrostTalents()

func (*Deathknight) ApplyTalents

func (dk *Deathknight) ApplyTalents()

func (*Deathknight) ApplyUnholyTalents

func (dk *Deathknight) ApplyUnholyTalents()

func (*Deathknight) ChangePresence

func (dk *Deathknight) ChangePresence(sim *core.Simulation, newPresence Presence)

func (*Deathknight) DiseasesAreActive

func (dk *Deathknight) DiseasesAreActive(target *core.Unit) bool

func (*Deathknight) DrwDiseasesAreActive added in v0.1.17

func (dk *Deathknight) DrwDiseasesAreActive(target *core.Unit) bool

func (*Deathknight) DrwWeaponDamage added in v0.1.29

func (dk *Deathknight) DrwWeaponDamage(sim *core.Simulation, spell *core.Spell) float64

func (*Deathknight) GetCharacter

func (dk *Deathknight) GetCharacter() *core.Character

func (*Deathknight) GetDeathKnight

func (dk *Deathknight) GetDeathKnight() *Deathknight

func (*Deathknight) GetRuneTapHealing added in v0.1.14

func (dk *Deathknight) GetRuneTapHealing() float64

func (*Deathknight) HasMajorGlyph

func (dk *Deathknight) HasMajorGlyph(glyph proto.DeathknightMajorGlyph) bool

func (*Deathknight) HasMinorGlyph

func (dk *Deathknight) HasMinorGlyph(glyph proto.DeathknightMinorGlyph) bool

func (*Deathknight) Initialize

func (dk *Deathknight) Initialize()

func (*Deathknight) IsFuStrike

func (dk *Deathknight) IsFuStrike(spell *core.Spell) bool

func (*Deathknight) ModifyDamageModifier added in v0.1.1

func (dk *Deathknight) ModifyDamageModifier(value float64)

func (*Deathknight) NewArmyGhoulPet

func (dk *Deathknight) NewArmyGhoulPet(_ int) *GhoulPet

func (*Deathknight) NewBloodwormPet

func (dk *Deathknight) NewBloodwormPet(_ int) *BloodwormPet

func (*Deathknight) NewGargoyle

func (dk *Deathknight) NewGargoyle() *GargoylePet

func (*Deathknight) NewGhoulPet

func (dk *Deathknight) NewGhoulPet(permanent bool) *GhoulPet

func (*Deathknight) NewRuneWeapon

func (dk *Deathknight) NewRuneWeapon() *RuneWeaponPet

func (*Deathknight) PresenceMatches

func (dk *Deathknight) PresenceMatches(other Presence) bool

func (*Deathknight) Reset

func (dk *Deathknight) Reset(sim *core.Simulation)

func (*Deathknight) ResetBonusCoeffs

func (dk *Deathknight) ResetBonusCoeffs()

func (*Deathknight) SetupGhoul

func (dk *Deathknight) SetupGhoul(ghoulPet *GhoulPet)

func (*Deathknight) ToughnessArmorMultiplier added in v0.1.35

func (dk *Deathknight) ToughnessArmorMultiplier() float64

type DeathknightCoeffs

type DeathknightCoeffs struct {
	// contains filtered or unexported fields
}

type DeathknightInputs

type DeathknightInputs struct {
	// Option Vars
	IsDps bool

	UnholyFrenzyTarget *proto.UnitReference

	StartingRunicPower float64
	PetUptime          float64
	DrwPestiApply      bool

	// Rotation Vars
	UseAMS            bool
	AvgAMSSuccessRate float64
	AvgAMSHit         float64
}

type GargoylePet

type GargoylePet struct {
	core.Pet

	GargoyleStrike *core.Spell
	// contains filtered or unexported fields
}

func (*GargoylePet) ExecuteCustomRotation added in v0.1.63

func (garg *GargoylePet) ExecuteCustomRotation(_ *core.Simulation)

func (*GargoylePet) GetPet

func (garg *GargoylePet) GetPet() *core.Pet

func (*GargoylePet) Initialize

func (garg *GargoylePet) Initialize()

func (*GargoylePet) Reset

func (garg *GargoylePet) Reset(_ *core.Simulation)

type GhoulPet

type GhoulPet struct {
	core.Pet

	GhoulFrenzyAura *core.Aura
	Claw            *core.Spell
	// contains filtered or unexported fields
}

func (*GhoulPet) ExecuteCustomRotation added in v0.1.63

func (ghoulPet *GhoulPet) ExecuteCustomRotation(sim *core.Simulation)

func (*GhoulPet) GetPet

func (ghoulPet *GhoulPet) GetPet() *core.Pet

func (*GhoulPet) Initialize

func (ghoulPet *GhoulPet) Initialize()

func (*GhoulPet) Reset

func (ghoulPet *GhoulPet) Reset(_ *core.Simulation)

type Presence

type Presence uint8
const (
	BloodPresence Presence = 1 << iota
	FrostPresence
	UnholyPresence
	UnsetPresence
)

type RuneWeaponPet

type RuneWeaponPet struct {
	core.Pet

	IcyTouch     *core.Spell
	PlagueStrike *core.Spell

	DeathStrike *core.Spell
	DeathCoil   *core.Spell

	BloodStrike       *core.Spell
	HeartStrike       *core.Spell
	HeartStrikeOffHit *core.Spell

	RuneStrike *core.Spell

	Pestilence *core.Spell
	BloodBoil  *core.Spell

	// Diseases
	FrostFeverSpell  *core.Spell
	BloodPlagueSpell *core.Spell
	// contains filtered or unexported fields
}

func (*RuneWeaponPet) ExecuteCustomRotation added in v0.1.63

func (runeWeapon *RuneWeaponPet) ExecuteCustomRotation(_ *core.Simulation)

func (*RuneWeaponPet) GetPet

func (runeWeapon *RuneWeaponPet) GetPet() *core.Pet

func (*RuneWeaponPet) Initialize

func (runeWeapon *RuneWeaponPet) Initialize()

func (*RuneWeaponPet) Reset

func (runeWeapon *RuneWeaponPet) Reset(_ *core.Simulation)

type ScourgelordBonusSpell added in v0.1.23

type ScourgelordBonusSpell int8

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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