Documentation ¶
Index ¶
- Constants
- Variables
- func RegisterRogue()
- 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) BreakStealth(sim *core.Simulation)
- 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) HasDagger(hand core.Hand) bool
- func (rogue *Rogue) HasMajorGlyph(glyph proto.RogueMajorGlyph) bool
- func (rogue *Rogue) HasMinorGlyph(glyph proto.RogueMinorGlyph) bool
- func (rogue *Rogue) Initialize()
- func (rogue *Rogue) IsStealthed() bool
- func (rogue *Rogue) MeleeCritMultiplier(applyLethality bool) float64
- func (rogue *Rogue) OnEnergyGain(sim *core.Simulation)
- func (rogue *Rogue) OnGCDReady(sim *core.Simulation)
- func (rogue *Rogue) Reset(sim *core.Simulation)
- func (rogue *Rogue) RuptureDamage(comboPoints int32) float64
- func (rogue *Rogue) RuptureDuration(comboPoints int32) time.Duration
- func (rogue *Rogue) RuptureTicks(comboPoints int32) int32
- 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 )
View Source
const ( ShouldNotCast shouldCastRotationItemResult = iota ShouldBuild ShouldCast ShouldWait )
View Source
const RogueBleedTag = "RogueBleed"
View Source
const RuptureEnergyCost = 25.0
View Source
const RuptureSpellID = 26867
Variables ¶
View Source
var AdrenalineRushActionID = core.ActionID{SpellID: 13750}
View Source
var Arena = 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 BladeFlurryActionID = core.ActionID{SpellID: 13877}
View Source
var BladeFlurryHitID = core.ActionID{SpellID: 22482}
View Source
var ItemSetAssassination = core.NewItemSet(core.ItemSet{ Name: "Assassination Armor", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var MutilateSpellID int32 = 34413
View Source
var OverkillActionID = core.ActionID{SpellID: 58426}
View Source
var TalentTreeSizes = [3]int{27, 28, 28}
View Source
var Tier10 = core.NewItemSet(core.ItemSet{ Name: "Shadowblade's Battlegear", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var Tier4 = core.NewItemSet(core.ItemSet{ Name: "Netherblade", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var Tier5 = core.NewItemSet(core.ItemSet{ Name: "Deathmantle", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { rogue := agent.(RogueAgent).GetRogue() rogue.DeathmantleProcAura = rogue.RegisterAura(core.Aura{ Label: "Deathmantle 4pc Proc", ActionID: core.ActionID{SpellID: 37171}, Duration: time.Second * 15, }) ppmm := rogue.AutoAttacks.NewPPMManager(1.0, core.ProcMaskMelee) rogue.RegisterAura(core.Aura{ Label: "Deathmantle 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.ProcMask.Matches(core.ProcMaskMelee) { return } if !ppmm.Proc(sim, spell.ProcMask, "Deathmantle 4pc") { return } rogue.DeathmantleProcAura.Activate(sim) }, }) }, }, })
View Source
var Tier6 = 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 Tier7 = 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 Tier8 = 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 Tier9 = core.NewItemSet(core.ItemSet{ Name: "VanCleef's Battlegear", AlternativeName: "Garona'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, } procAura.Icd = &icd 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 WoundPoisonActionID = core.ActionID{SpellID: 27188}
Functions ¶
func RegisterRogue ¶
func RegisterRogue()
Types ¶
type PoisonProcSource ¶
type PoisonProcSource int
const ( NormalProc PoisonProcSource = iota DeadlyProc ShivProc )
type PriorityAction ¶
type PriorityAction int32
const ( Skip PriorityAction = iota Build Cast Wait Once )
type Rogue ¶
type Rogue struct { core.Character Talents *proto.RogueTalents Options *proto.Rogue_Options Rotation *proto.Rogue_Rotation 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 MutilateMH *core.Spell MutilateOH *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 Vanish *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 MasterOfSubtletyAura *core.Aura ShadowstepAura *core.Aura ShadowDanceAura *core.Aura DirtyDeedsAura *core.Aura HonorAmongThieves *core.Aura StealthAura *core.Aura DeathmantleProcAura *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)
Apply the effects of the Cut to the Chase talent TODO: Put a fresh instance of SnD rather than use the original as per client
func (*Rogue) ApplyEnergyTickMultiplier ¶
func (*Rogue) ApplyFinisher ¶
func (rogue *Rogue) ApplyFinisher(sim *core.Simulation, spell *core.Spell)
Apply the effect of successfully casting a finisher to combo points
func (*Rogue) ApplyTalents ¶
func (rogue *Rogue) ApplyTalents()
func (*Rogue) BreakStealth ¶ added in v1.0.1
func (rogue *Rogue) BreakStealth(sim *core.Simulation)
Deactivate Stealth if it is active. This must be added to all abilities that cause Stealth to fade.
func (*Rogue) CanMutilate ¶
Can the rogue fulfil the weapon equipped requirement for Mutilate?
func (*Rogue) DirtyDeedsMultiplier ¶
func (*Rogue) EnvenomDuration ¶ added in v1.0.1
func (*Rogue) GetCharacter ¶
func (*Rogue) GetDeadlyPoisonProcChance ¶
func (*Rogue) HasDagger ¶ added in v1.0.1
Does the rogue have a dagger equipped in the specified hand (main or offhand)?
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) IsStealthed ¶ added in v1.0.1
Check if the rogue is considered in "stealth" for the purpose of casting abilities
func (*Rogue) MeleeCritMultiplier ¶
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) RuptureDamage ¶ added in v1.0.1
func (*Rogue) RuptureDuration ¶
func (*Rogue) RuptureTicks ¶ added in v1.0.1
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
- 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
- rotation_assassination.go
- rotation_combat.go
- rotation_generic.go
- rotation_multi.go
- rotation_subtlety.go
- rupture.go
- shadow_dance.go
- shadowstep.go
- shiv.go
- sinister_strike.go
- slice_and_dice.go
- stealth.go
- talents.go
- thistle_tea.go
- tricks_of_the_trade.go
- vanish.go
Click to show internal directories.
Click to hide internal directories.