Documentation ¶
Index ¶
- Constants
- Variables
- func RegisterRogue()
- type DoAction
- type GetAction
- type PoisonProcSource
- type PriorityAction
- type Rogue
- func (rogue *Rogue) AddPartyBuffs(_ *proto.PartyBuffs)
- func (rogue *Rogue) AddRaidBuffs(_ *proto.RaidBuffs)
- func (rogue *Rogue) ApplyCutToTheChase(sim *core.Simulation)
- func (rogue *Rogue) ApplyEnergyTickMultiplier(multiplier float64)
- func (rogue *Rogue) ApplyFinisher(sim *core.Simulation, spell *core.Spell)
- func (rogue *Rogue) ApplyTalents()
- func (rogue *Rogue) CanMutilate() bool
- func (rogue *Rogue) DirtyDeedsMultiplier() float64
- func (rogue *Rogue) EnvenomDuration(comboPoints int32) time.Duration
- func (rogue *Rogue) GetCharacter() *core.Character
- func (rogue *Rogue) GetDeadlyPoisonProcChance() float64
- func (rogue *Rogue) GetRogue() *Rogue
- func (rogue *Rogue) HasMajorGlyph(glyph proto.RogueMajorGlyph) bool
- func (rogue *Rogue) HasMinorGlyph(glyph proto.RogueMinorGlyph) bool
- func (rogue *Rogue) Initialize()
- func (rogue *Rogue) MeleeCritMultiplier(applyLethality bool) float64
- func (rogue *Rogue) OnCanAct(sim *core.Simulation)
- func (rogue *Rogue) OnCanActSubtlety(sim *core.Simulation)
- func (rogue *Rogue) OnEnergyGain(sim *core.Simulation)
- func (rogue *Rogue) OnGCDReady(sim *core.Simulation)
- func (rogue *Rogue) Reset(sim *core.Simulation)
- func (rogue *Rogue) RuptureDuration(comboPoints int32) time.Duration
- func (rogue *Rogue) SpellCritMultiplier() float64
- func (rogue *Rogue) UpdateInstantPoisonPPM(bonusChance float64)
- type RogueAgent
Constants ¶
View Source
const ( SpellFlagBuilder = core.SpellFlagAgentReserved2 SpellFlagFinisher = core.SpellFlagAgentReserved3 SpellFlagColdBlooded = core.SpellFlagAgentReserved4 AssassinTree = 0 CombatTree = 1 SubtletyTree = 2 )
View Source
const ( ShouldNotCast shouldCastRotationItemResult = iota ShouldBuild ShouldCast ShouldWait )
View Source
const FanOfKnivesSpellID int32 = 51723
View Source
const RogueBleedTag = "RogueBleed"
View Source
const RuptureEnergyCost = 25.0
View Source
const RuptureSpellID = 48672
Variables ¶
View Source
var AdrenalineRushActionID = core.ActionID{SpellID: 13750}
View Source
var BladeFlurryActionID = core.ActionID{SpellID: 13877}
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 TalentTreeSizes = [3]int{27, 28, 28}
View Source
var WoundPoisonActionID = core.ActionID{SpellID: 57975}
Functions ¶
func RegisterRogue ¶
func RegisterRogue()
Types ¶
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 Ambush *core.Spell Hemorrhage *core.Spell GhostlyStrike *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 Shadowstep *core.Spell Preparation *core.Spell Premeditation *core.Spell ShadowDance *core.Spell ColdBlood *core.Spell MasterOfSubtlety *core.Spell Overkill *core.Spell Envenom *core.Spell Eviscerate *core.Spell ExposeArmor *core.Spell Rupture *core.Spell SliceAndDice *core.Spell AdrenalineRushAura *core.Aura BladeFlurryAura *core.Aura EnvenomAura *core.Aura ExposeArmorAuras core.AuraArray HungerForBloodAura *core.Aura KillingSpreeAura *core.Aura OverkillAura *core.Aura SliceAndDiceAura *core.Aura TricksOfTheTradeAura *core.Aura MasterOfSubtletyAura *core.Aura ShadowstepAura *core.Aura ShadowDanceAura *core.Aura DirtyDeedsAura *core.Aura HonorAmongThieves *core.Aura QuickRecoveryMetrics *core.ResourceMetrics // contains filtered or unexported fields }
func (*Rogue) AddPartyBuffs ¶
func (rogue *Rogue) AddPartyBuffs(_ *proto.PartyBuffs)
func (*Rogue) AddRaidBuffs ¶
func (*Rogue) ApplyCutToTheChase ¶
func (rogue *Rogue) ApplyCutToTheChase(sim *core.Simulation)
func (*Rogue) ApplyEnergyTickMultiplier ¶
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) DirtyDeedsMultiplier ¶ added in v0.1.12
func (*Rogue) EnvenomDuration ¶ added in v0.1.20
func (*Rogue) GetCharacter ¶
func (*Rogue) GetDeadlyPoisonProcChance ¶
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) OnCanAct ¶ added in v0.1.1
func (rogue *Rogue) OnCanAct(sim *core.Simulation)
func (*Rogue) OnCanActSubtlety ¶ added in v0.1.12
func (rogue *Rogue) OnCanActSubtlety(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) SpellCritMultiplier ¶
func (*Rogue) UpdateInstantPoisonPPM ¶
type RogueAgent ¶
type RogueAgent interface {
GetRogue() *Rogue
}
Agent is a generic way to access underlying rogue on any of the agents.
Source Files ¶
- ambush.go
- assassination_rotation.go
- backstab.go
- envenom.go
- eviscerate.go
- expose_armor.go
- fan_of_knives.go
- feint.go
- garrote.go
- ghostly_strike.go
- hack_and_slash.go
- hemorrhage.go
- items.go
- killing_spree.go
- master_of_subtlety.go
- mutilate.go
- overkill.go
- poisons.go
- premeditation.go
- preparation.go
- rogue.go
- rotation.go
- rupture.go
- shadow_dance.go
- shadowstep.go
- shiv.go
- sinister_strike.go
- slice_and_dice.go
- subtlety_rotation.go
- talents.go
- thistle_tea.go
- tricks_of_the_trade.go
Click to show internal directories.
Click to hide internal directories.