rogue

package
v0.1.10 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2023 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpellFlagBuilder  = core.SpellFlagAgentReserved2
	SpellFlagFinisher = core.SpellFlagAgentReserved3
)
View Source
const (
	ShouldNotCast shouldCastRotationItemResult = iota
	ShouldBuild
	ShouldCast
	ShouldWait
)
View Source
const FanOfKnivesSpellID int32 = 51723
View Source
const GarroteSpellID = 48676
View Source
const RogueBleedTag = "RogueBleed"
View Source
const RuptureEnergyCost = 25.0
View Source
const RuptureSpellID = 48672
View Source
const SliceAndDiceEnergyCost = 25.0

Variables

View Source
var AdrenalineRushActionID = core.ActionID{SpellID: 13750}
View Source
var BladeFlurryActionID = core.ActionID{SpellID: 13877}
View Source
var DeadlyPoisonActionID = core.ActionID{SpellID: 57973}
View Source
var ItemSetBonescythe = core.NewItemSet(core.ItemSet{
	Name: "Bonescythe Battlegear",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

		},
	},
})
View Source
var ItemSetGladiatorsVestments = core.NewItemSet(core.ItemSet{
	Name: "Gladiator's Vestments",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			agent.GetCharacter().AddStat(stats.Resilience, 100)
			agent.GetCharacter().AddStat(stats.AttackPower, 50)
		},
		4: func(agent core.Agent) {
			agent.GetCharacter().AddStat(stats.AttackPower, 150)

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

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

			actionID := core.ActionID{SpellID: 70803}
			rogue := agent.(RogueAgent).GetRogue()
			metrics := rogue.NewComboPointMetrics(actionID)
			rogue.RegisterAura(core.Aura{
				Label:    "Shadowblade's 4pc",
				Duration: core.NeverExpires,
				OnReset: func(aura *core.Aura, sim *core.Simulation) {
					aura.Activate(sim)
				},
				OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if !result.Landed() {
						return
					}
					if !spell.Flags.Matches(SpellFlagFinisher) {
						return
					}
					if sim.RandomFloat("Shadowblades") > 0.13 {
						return
					}
					rogue.AddComboPoints(sim, 3, metrics)
				},
			})
		},
	},
})
View Source
var ItemSetSlayers = core.NewItemSet(core.ItemSet{
	Name: "Slayer's Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

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

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

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

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

			rogue := agent.(RogueAgent).GetRogue()
			energyMetrics := rogue.NewEnergyMetrics(core.ActionID{SpellID: 67209})

			procAura := rogue.RegisterAura(core.Aura{
				Label:    "VanCleef's 2pc Proc",
				ActionID: core.ActionID{SpellID: 67209},
				Duration: time.Second * 15,
				OnGain: func(aura *core.Aura, sim *core.Simulation) {
					rogue.PseudoStats.CostReduction += 40
				},
				OnExpire: func(aura *core.Aura, sim *core.Simulation) {
					rogue.PseudoStats.CostReduction -= 40
				},
				OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) {
					if !spell.ProcMask.Matches(core.ProcMaskMeleeSpecial) {
						return
					}

					if actualGain := spell.DefaultCast.Cost - spell.CurCast.Cost; actualGain > 0 {
						energyMetrics.AddEvent(40, actualGain)
						aura.Deactivate(sim)
					}
				},
			})

			icd := core.Cooldown{
				Timer:    rogue.NewTimer(),
				Duration: time.Second * 15,
			}
			procChance := 0.02
			rogue.RegisterAura(core.Aura{
				Label:    "VanCleef's 2pc",
				Duration: core.NeverExpires,
				OnReset: func(aura *core.Aura, sim *core.Simulation) {
					aura.Activate(sim)
				},
				OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
					if !result.Landed() {
						return
					}
					if !spell.ActionID.IsSpellAction(RuptureSpellID) {
						return
					}
					if !icd.IsReady(sim) {
						return
					}
					if sim.RandomFloat("VanCleef's 2pc") > procChance {
						return
					}
					icd.Use(sim)
					procAura.Activate(sim)
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var MHOutcome = core.OutcomeHit
View Source
var MutilateSpellID int32 = 48666
View Source
var OHOutcome = core.OutcomeHit
View Source
var OverkillActionID = core.ActionID{SpellID: 58426}
View Source
var SliceAndDiceActionID = core.ActionID{SpellID: 6774}
View Source
var TalentTreeSizes = [3]int{27, 28, 28}
View Source
var WoundPoisonActionID = core.ActionID{SpellID: 57975}

Functions

func RegisterRogue

func RegisterRogue()

Types

type DoAction added in v0.1.1

type DoAction func(*core.Simulation, *Rogue) bool

type GetAction added in v0.1.1

type GetAction func(*core.Simulation, *Rogue) PriorityAction

type PoisonProcSource

type PoisonProcSource int
const (
	NormalProc PoisonProcSource = iota
	DeadlyProc
	ShivProc
)

type PriorityAction added in v0.1.1

type PriorityAction int32
const (
	Skip PriorityAction = iota
	Build
	Cast
	Wait
)

type Rogue

type Rogue struct {
	core.Character

	Talents  *proto.RogueTalents
	Options  *proto.Rogue_Options
	Rotation *proto.Rogue_Rotation

	BuilderPoints    int32
	Builder          *core.Spell
	Backstab         *core.Spell
	BladeFlurry      *core.Spell
	DeadlyPoison     *core.Spell
	FanOfKnives      *core.Spell
	Feint            *core.Spell
	Garrote          *core.Spell
	Hemorrhage       *core.Spell
	HungerForBlood   *core.Spell
	InstantPoison    [3]*core.Spell
	WoundPoison      [3]*core.Spell
	Mutilate         *core.Spell
	Shiv             *core.Spell
	SinisterStrike   *core.Spell
	TricksOfTheTrade *core.Spell

	Envenom      [6]*core.Spell
	Eviscerate   [6]*core.Spell
	ExposeArmor  [6]*core.Spell
	Rupture      [6]*core.Spell
	SliceAndDice [6]*core.Spell

	AdrenalineRushAura   *core.Aura
	BladeFlurryAura      *core.Aura
	EnvenomAura          *core.Aura
	ExposeArmorAura      *core.Aura
	HungerForBloodAura   *core.Aura
	KillingSpreeAura     *core.Aura
	OverkillAura         *core.Aura
	SliceAndDiceAura     *core.Aura
	TricksOfTheTradeAura *core.Aura

	QuickRecoveryMetrics *core.ResourceMetrics
	// contains filtered or unexported fields
}

func NewRogue

func NewRogue(character core.Character, options *proto.Player) *Rogue

func (*Rogue) AddPartyBuffs

func (rogue *Rogue) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Rogue) AddRaidBuffs

func (rogue *Rogue) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Rogue) ApplyCutToTheChase

func (rogue *Rogue) ApplyCutToTheChase(sim *core.Simulation)

func (*Rogue) ApplyEnergyTickMultiplier

func (rogue *Rogue) ApplyEnergyTickMultiplier(multiplier float64)

func (*Rogue) ApplyFinisher

func (rogue *Rogue) ApplyFinisher(sim *core.Simulation, spell *core.Spell)

func (*Rogue) ApplyTalents

func (rogue *Rogue) ApplyTalents()

func (*Rogue) CanMutilate

func (rogue *Rogue) CanMutilate() bool

func (*Rogue) GetCharacter

func (rogue *Rogue) GetCharacter() *core.Character

func (*Rogue) GetDeadlyPoisonProcChance

func (rogue *Rogue) GetDeadlyPoisonProcChance(mask core.ProcMask) float64

func (*Rogue) GetRogue

func (rogue *Rogue) GetRogue() *Rogue

func (*Rogue) HasMajorGlyph

func (rogue *Rogue) HasMajorGlyph(glyph proto.RogueMajorGlyph) bool

func (*Rogue) HasMinorGlyph

func (rogue *Rogue) HasMinorGlyph(glyph proto.RogueMinorGlyph) bool

func (*Rogue) Initialize

func (rogue *Rogue) Initialize()

func (*Rogue) MeleeCritMultiplier

func (rogue *Rogue) MeleeCritMultiplier(applyLethality bool) float64

func (*Rogue) OnCanAct added in v0.1.1

func (rogue *Rogue) OnCanAct(sim *core.Simulation)

func (*Rogue) OnEnergyGain

func (rogue *Rogue) OnEnergyGain(sim *core.Simulation)

func (*Rogue) OnGCDReady

func (rogue *Rogue) OnGCDReady(sim *core.Simulation)

func (*Rogue) Reset

func (rogue *Rogue) Reset(sim *core.Simulation)

func (*Rogue) RuptureDuration

func (rogue *Rogue) RuptureDuration(comboPoints int32) time.Duration

func (*Rogue) SpellCritMultiplier

func (rogue *Rogue) SpellCritMultiplier() float64

func (*Rogue) UpdateInstantPoisonPPM

func (rogue *Rogue) UpdateInstantPoisonPPM(bonusChance float64)

type RogueAgent

type RogueAgent interface {
	GetRogue() *Rogue
}

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

Jump to

Keyboard shortcuts

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