Documentation ¶
Index ¶
- Constants
- Variables
- type Druid
- func (druid *Druid) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (druid *Druid) ApplyTalents()
- func (druid *Druid) BalanceCritMultiplier() float64
- func (druid *Druid) BearArmorMultiplier() float64
- func (druid *Druid) CanShred() bool
- func (druid *Druid) ClearForm(sim *core.Simulation)
- func (druid *Druid) CurrentFerociousBiteCost() float64
- func (druid *Druid) CurrentMangleCatCost() float64
- func (druid *Druid) CurrentRakeCost() float64
- func (druid *Druid) CurrentRipCost() float64
- func (druid *Druid) CurrentSavageRoarCost() float64
- func (druid *Druid) CurrentShredCost() float64
- func (druid *Druid) CurrentSwipeCatCost() float64
- func (druid *Druid) GetBearWeapon() core.Weapon
- func (druid *Druid) GetCatWeapon() core.Weapon
- func (druid *Druid) GetCharacter() *core.Character
- func (druid *Druid) GetDynamicPredStrikeStats() stats.Stats
- func (druid *Druid) GetForm() DruidForm
- func (druid *Druid) GetFormShiftStats() stats.Stats
- func (druid *Druid) HasMajorGlyph(glyph proto.DruidMajorGlyph) bool
- func (druid *Druid) HasMinorGlyph(glyph proto.DruidMinorGlyph) bool
- func (druid *Druid) InForm(form DruidForm) bool
- func (druid *Druid) Initialize()
- func (druid *Druid) IsMangle(spell *core.Spell) bool
- func (druid *Druid) IsSwipeSpell(spell *core.Spell) bool
- func (druid *Druid) MaulReplaceMH(sim *core.Simulation, mhSwingSpell *core.Spell) *core.Spell
- func (druid *Druid) MaxRipTicks() int32
- func (druid *Druid) MeleeCritMultiplier(castedForm DruidForm) float64
- func (druid *Druid) NewTreant() *TreantPet
- func (druid *Druid) QueueMaul(sim *core.Simulation)
- func (druid *Druid) RegisterBalanceSpells()
- func (druid *Druid) RegisterFeralCatSpells()
- func (druid *Druid) RegisterFeralTankSpells(maulRageThreshold float64)
- func (druid *Druid) RegisterSpell(formMask DruidForm, config core.SpellConfig) *DruidSpell
- func (druid *Druid) Reset(_ *core.Simulation)
- func (druid *Druid) ShouldDemoralizingRoar(sim *core.Simulation, filler bool, maintainOnly bool) bool
- func (druid *Druid) ShouldFaerieFire(sim *core.Simulation, target *core.Unit) bool
- func (druid *Druid) ShouldQueueMaul(_ *core.Simulation) bool
- func (druid *Druid) ThickHideMultiplier() float64
- func (druid *Druid) TryMaul(sim *core.Simulation, mhSwingSpell *core.Spell) *core.Spell
- type DruidAgent
- type DruidForm
- type DruidSpell
- type SelfBuffs
- type TreantPet
Constants ¶
View Source
const ( SpellFlagNaturesGrace = core.SpellFlagAgentReserved1 SpellFlagOmenTrigger = core.SpellFlagAgentReserved2 )
View Source
const AnimalSpiritRegenSuppression = 0.911337
Converts from 0.009327 to 0.0085
View Source
const CryingWind int32 = 45270
View Source
const IdolAvenger int32 = 31025
View Source
const IdolSteadfastRenewal int32 = 40712
Variables ¶
View Source
var ItemSetDreamwalkerBattlegear = core.NewItemSet(core.ItemSet{ Name: "Dreamwalker Battlegear", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetDreamwalkerGarb = core.NewItemSet(core.ItemSet{ Name: "Dreamwalker Garb", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
T7 Balance
View Source
var ItemSetGladiatorsSanctuary = core.NewItemSet(core.ItemSet{ Name: "Gladiator's Sanctuary", 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 ItemSetGladiatorsWildhide = core.NewItemSet(core.ItemSet{ Name: "Gladiator's Wildhide", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() druid.AddStat(stats.SpellPower, 29) druid.AddStat(stats.Resilience, 100) }, 4: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() druid.AddStat(stats.SpellPower, 88) percentReduction := float64(time.Millisecond*1500) / float64(druid.starfireCastTime()) swiftStarfireAura := druid.RegisterAura(core.Aura{ Label: "Swift Starfire", ActionID: core.ActionID{SpellID: 46832}, Duration: time.Second * 15, OnGain: func(aura *core.Aura, sim *core.Simulation) { druid.Starfire.CastTimeMultiplier -= percentReduction }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { druid.Starfire.CastTimeMultiplier += percentReduction }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if druid.Starfire.IsEqual(spell) { aura.Deactivate(sim) } }, }) druid.RegisterAura(core.Aura{ Label: "Swift Starfire trigger", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if druid.Wrath.IsEqual(spell) && sim.RandomFloat("Swift Starfire proc") > 0.85 { swiftStarfireAura.Activate(sim) } }, }) }, }, })
View Source
var ItemSetLasherweaveBattlegear = core.NewItemSet(core.ItemSet{ Name: "Lasherweave Battlegear", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetLasherweaveRegalia = core.NewItemSet(core.ItemSet{ Name: "Lasherweave Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() druid.Languish = druid.RegisterSpell(Any, core.SpellConfig{ ActionID: core.ActionID{SpellID: 71023}, SpellSchool: core.SpellSchoolNature, ProcMask: core.ProcMaskProc | core.ProcMaskNotInSpellbook, Flags: core.SpellFlagIgnoreModifiers, DamageMultiplier: 1, ThreatMultiplier: 1, Dot: core.DotConfig{ Aura: core.Aura{ Label: "Languish", }, NumberOfTicks: 2, TickLength: time.Second * 2, OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { dot.CalcAndDealPeriodicSnapshotDamage(sim, target, dot.OutcomeTick) }, }, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { spell.SpellMetrics[target.UnitIndex].Hits++ spell.Dot(target).ApplyOrReset(sim) }, }) druid.RegisterAura(core.Aura{ Label: "Languish proc", 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 !druid.Starfire.IsEqual(spell) && !druid.Wrath.IsEqual(spell) { return } if result.DidCrit() { dot := druid.Languish.Dot(result.Target) newDamage := result.Damage * 0.07 outstandingDamage := core.TernaryFloat64(dot.IsActive(), dot.SnapshotBaseDamage*float64(dot.NumberOfTicks-dot.TickCount), 0) dot.SnapshotAttackerMultiplier = 1 dot.SnapshotBaseDamage = (outstandingDamage + newDamage) / 2.0 druid.Languish.Cast(sim, result.Target) } }, }) }, }, })
T10 Balance
View Source
var ItemSetMalfurionsBattlegear = core.NewItemSet(core.ItemSet{ Name: "Malfurion's Battlegear", AlternativeName: "Runetotem's Battlegear", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetMalfurionsRegalia = core.NewItemSet(core.ItemSet{ Name: "Malfurion's Regalia", AlternativeName: "Runetotem's Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
T9 Balance
View Source
var ItemSetNightsongBattlegear = core.NewItemSet(core.ItemSet{ Name: "Nightsong Battlegear", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() procChance := 0.02 cca := druid.GetAura("Clearcasting") icd := core.Cooldown{ Timer: druid.NewTimer(), Duration: time.Second * 15, } druid.RegisterAura(core.Aura{ Label: "Nightsong 2pc", Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) cca = druid.GetAura("Clearcasting") cca.Icd = &icd if cca == nil { panic("no valid clearcasting aura") } }, OnPeriodicDamageDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if !druid.Rake.IsEqual(spell) && !druid.Rip.IsEqual(spell) && !druid.Lacerate.IsEqual(spell) { return } if !icd.IsReady(sim) { return } if sim.RandomFloat("Nightsong 2pc") < procChance { icd.Use(sim) cca.Activate(sim) } }, }) }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetNightsongGarb = core.NewItemSet(core.ItemSet{ Name: "Nightsong Garb", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
T8 Balance
View Source
var ItemSetThunderheartHarness = core.NewItemSet(core.ItemSet{ Name: "Thunderheart Harness", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var ItemSetThunderheartRegalia = core.NewItemSet(core.ItemSet{ Name: "Thunderheart Regalia", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, }, })
View Source
var TalentTreeSizes = [3]int{28, 30, 27}
Functions ¶
This section is empty.
Types ¶
type Druid ¶
type Druid struct { core.Character SelfBuffs Talents *proto.DruidTalents StartingForm DruidForm RebirthUsed bool MaulRageThreshold float64 RebirthTiming float64 BleedsActive int AssumeBleedActive bool PrePopBerserk bool ReplaceBearMHFunc core.ReplaceMHSwing Barkskin *DruidSpell Berserk *DruidSpell DemoralizingRoar *DruidSpell Enrage *DruidSpell FaerieFire *DruidSpell FerociousBite *DruidSpell ForceOfNature *DruidSpell FrenziedRegeneration *DruidSpell Hurricane *DruidSpell HurricaneTickSpell *DruidSpell InsectSwarm *DruidSpell GiftOfTheWild *DruidSpell Lacerate *DruidSpell Languish *DruidSpell MangleBear *DruidSpell MangleCat *DruidSpell Maul *DruidSpell MaulQueueSpell *DruidSpell Moonfire *DruidSpell Rebirth *DruidSpell Rake *DruidSpell Rip *DruidSpell SavageRoar *DruidSpell Shred *DruidSpell Starfire *DruidSpell Starfall *DruidSpell StarfallSplash *DruidSpell SurvivalInstincts *DruidSpell SwipeBear *DruidSpell SwipeCat *DruidSpell TigersFury *DruidSpell Typhoon *DruidSpell Wrath *DruidSpell CatForm *DruidSpell BearForm *DruidSpell BarkskinAura *core.Aura BearFormAura *core.Aura BerserkAura *core.Aura CatFormAura *core.Aura ClearcastingAura *core.Aura DemoralizingRoarAuras core.AuraArray EnrageAura *core.Aura FaerieFireAuras core.AuraArray FrenziedRegenerationAura *core.Aura MaulQueueAura *core.Aura MoonkinT84PCAura *core.Aura NaturesGraceProcAura *core.Aura PredatoryInstinctsAura *core.Aura SavageDefenseAura *core.Aura SurvivalInstinctsAura *core.Aura TigersFuryAura *core.Aura SavageRoarAura *core.Aura SolarEclipseProcAura *core.Aura LunarEclipseProcAura *core.Aura OwlkinFrenzyAura *core.Aura BleedCategories core.ExclusiveCategoryArray PrimalPrecisionRecoveryMetrics *core.ResourceMetrics SavageRoarDurationTable [6]time.Duration ProcOoc func(sim *core.Simulation) ExtendingMoonfireStacks int LunarICD core.Cooldown SolarICD core.Cooldown Treant1 *TreantPet Treant2 *TreantPet Treant3 *TreantPet // contains filtered or unexported fields }
func (*Druid) AddRaidBuffs ¶
func (*Druid) ApplyTalents ¶
func (druid *Druid) ApplyTalents()
func (*Druid) BalanceCritMultiplier ¶ added in v0.1.7
func (*Druid) BearArmorMultiplier ¶ added in v0.1.35
func (*Druid) ClearForm ¶
func (druid *Druid) ClearForm(sim *core.Simulation)
func (*Druid) CurrentFerociousBiteCost ¶
func (*Druid) CurrentMangleCatCost ¶
func (*Druid) CurrentRakeCost ¶
func (*Druid) CurrentRipCost ¶
func (*Druid) CurrentSavageRoarCost ¶
func (*Druid) CurrentShredCost ¶
func (*Druid) CurrentSwipeCatCost ¶
func (*Druid) GetBearWeapon ¶ added in v0.1.8
func (*Druid) GetCatWeapon ¶ added in v0.1.8
func (*Druid) GetCharacter ¶
func (*Druid) GetDynamicPredStrikeStats ¶ added in v0.1.32
func (*Druid) GetFormShiftStats ¶ added in v0.1.7
Bonus stats for both cat and bear.
func (*Druid) HasMajorGlyph ¶
func (druid *Druid) HasMajorGlyph(glyph proto.DruidMajorGlyph) bool
func (*Druid) HasMinorGlyph ¶
func (druid *Druid) HasMinorGlyph(glyph proto.DruidMinorGlyph) bool
func (*Druid) Initialize ¶
func (druid *Druid) Initialize()
func (*Druid) MaulReplaceMH ¶ added in v0.1.8
Returns true if the regular melee swing should be used, false otherwise.
func (*Druid) MaxRipTicks ¶
func (*Druid) MeleeCritMultiplier ¶
func (*Druid) QueueMaul ¶
func (druid *Druid) QueueMaul(sim *core.Simulation)
func (*Druid) RegisterBalanceSpells ¶
func (druid *Druid) RegisterBalanceSpells()
func (*Druid) RegisterFeralCatSpells ¶ added in v0.1.8
func (druid *Druid) RegisterFeralCatSpells()
func (*Druid) RegisterFeralTankSpells ¶ added in v0.1.8
func (*Druid) RegisterSpell ¶ added in v0.1.44
func (druid *Druid) RegisterSpell(formMask DruidForm, config core.SpellConfig) *DruidSpell
func (*Druid) Reset ¶
func (druid *Druid) Reset(_ *core.Simulation)
func (*Druid) ShouldDemoralizingRoar ¶
func (*Druid) ShouldFaerieFire ¶
func (*Druid) ShouldQueueMaul ¶
func (druid *Druid) ShouldQueueMaul(_ *core.Simulation) bool
func (*Druid) ThickHideMultiplier ¶ added in v0.1.8
type DruidAgent ¶
type DruidAgent interface {
GetDruid() *Druid
}
Agent is a generic way to access underlying druid on any of the agents (for example balance druid.)
type DruidSpell ¶ added in v0.1.44
func (*DruidSpell) CanCast ¶ added in v0.1.44
func (ds *DruidSpell) CanCast(sim *core.Simulation, target *core.Unit) bool
func (*DruidSpell) IsReady ¶ added in v0.1.44
func (ds *DruidSpell) IsReady(sim *core.Simulation) bool
type SelfBuffs ¶
type SelfBuffs struct {
InnervateTarget *proto.UnitReference
}
type TreantPet ¶
func (*TreantPet) ExecuteCustomRotation ¶ added in v0.1.63
func (treant *TreantPet) ExecuteCustomRotation(_ *core.Simulation)
func (*TreantPet) Initialize ¶
func (treant *TreantPet) Initialize()
func (*TreantPet) Reset ¶
func (treant *TreantPet) Reset(_ *core.Simulation)
Source Files ¶
- barkskin.go
- berserk.go
- demoralizing_roar.go
- druid.go
- enrage.go
- faerie_fire.go
- fake_gotw.go
- ferocious_bite.go
- force_of_nature.go
- forms.go
- frenzied_regeneration.go
- hurricane.go
- innervate.go
- insect_swarm.go
- items.go
- lacerate.go
- mangle.go
- maul.go
- moonfire.go
- rake.go
- rebirth.go
- rip.go
- savage_defense.go
- savage_roar.go
- shred.go
- starfall.go
- starfire.go
- survival_instincts.go
- swipe.go
- talents.go
- tigers_fury.go
- typhoon.go
- wrath.go
Click to show internal directories.
Click to hide internal directories.