Documentation
¶
Index ¶
- Constants
- Variables
- type Druid
- func (druid *Druid) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (druid *Druid) ApplyRunes()
- func (druid *Druid) ApplyTalents()
- func (druid *Druid) BearArmorMultiplier() float64
- func (druid *Druid) CanShred() bool
- 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) GetCatWeapon(level int32) 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) HasRune(rune proto.DruidRune) bool
- func (druid *Druid) ImprovedMoonfireCritBonus() float64
- func (druid *Druid) ImprovedMoonfireDamageMultiplier() float64
- func (druid *Druid) InForm(form DruidForm) bool
- func (druid *Druid) Initialize()
- func (druid *Druid) IsMangle(spell *core.Spell) bool
- func (druid *Druid) MoonfuryDamageMultiplier() float64
- func (druid *Druid) MoonglowManaCostMultiplier() float64
- func (druid *Druid) NaturesGraceCastTime() func(spell *core.Spell) time.Duration
- func (druid *Druid) RegisterBalanceSpells()
- func (druid *Druid) RegisterFeralCatSpells()
- func (druid *Druid) RegisterFeralTankSpells()
- func (druid *Druid) RegisterSpell(formMask DruidForm, config core.SpellConfig) *DruidSpell
- func (druid *Druid) Reset(_ *core.Simulation)
- func (druid *Druid) ShouldFaerieFire(sim *core.Simulation, target *core.Unit) bool
- func (druid *Druid) ThickHideMultiplier() float64
- type DruidAgent
- type DruidForm
- type DruidSpell
- type FerociousBiteRankInfo
- type RakeRankInfo
- type RipRankInfo
- type SelfBuffs
Constants ¶
const ( SpellCode_DruidNone int32 = iota SpellCode_DruidFerociousBite SpellCode_DruidInsectSwarm SpellCode_DruidMangleCat SpellCode_DruidMangleBear SpellCode_DruidMoonfire SpellCode_DruidRake SpellCode_DruidRip SpellCode_DruidShred SpellCode_DruidStarfire SpellCode_DruidStarsurge SpellCode_DruidWrath SpellCode_DruidStarfall SpellCode_DruidStarfallTick SpellCode_DruidStarfallSplash SpellCode_DruidSunfire )
const ( WolfsheadHelm = 8345 IdolOfFerocity = 22397 IdolOfTheMoon = 23197 IdolOfBrutality = 23198 IdolMindExpandingMushroom = 209576 Catnip = 213407 IdolOfWrath = 216490 BloodBarkCrusher = 216499 RitualistsHammer = 221446 IdolOfTheDream = 220606 IdolOfExsanguinationCat = 228181 IdolOfTheSwarm = 228180 IdolOfExsanguinationBear = 228182 )
Totem Item IDs
const ( Gore_BearResetProcChance = .15 Gore_CatResetProcChance = .15 )
const ( ElunesFires_BonusMoonfireTicks = int32(2) ElunesFires_BonusSunfireTicks = int32(1) ElunesFires_BonusRipTicks = int32(1) )
const InsectSwarmRanks = 5
const MoonfireRanks = 10
const RakeBaseDmgMultiplier = 2.25
See https://www.wowhead.com/classic/spell=436895/s03-tuning-and-overrides-passive-druid Mod Eff# should be base value only. Modifies Effect #1's Value +126%: Modifies Effect #2's Value +126%:
const RakeDamageCoef = 0.09
See https://www.wowhead.com/classic/news/development-notes-for-phase-4-ptr-season-of-discovery-new-runes-class-changes-342896 - Rake and Rip damage contributions from attack power increased by roughly 50%. PTR testing comes out to .0993377 AP scaling damageCoef := .04
const RipBaseDamageMultiplier = 1.5
const RipDamageCoefPerAPPerCP = 0.015
See https://www.wowhead.com/classic/news/development-notes-for-phase-4-ptr-season-of-discovery-new-runes-class-changes-342896 - Rake and Rip damage contributions from attack power increased by roughly 50%. PTR testing comes out to .0165563 AP scaling per CP damageCoefPerCP := 0.01
const RipTicks int32 = 8
See https://www.wowhead.com/classic/spell=436895/s03-tuning-and-overrides-passive-druid Modifies Buff Duration +4001: Modifies Periodic Damage/Healing Done +51%: const RipTicks int32 = 6
const ShredFlatDmgMultiplier = .75 // decreases flat damage modifier multiplicatively by -25% to counteract 3.0/2.25 overall scaling buff
const ShredWeaponMultiplierBuff = 0.75 // increases multiplier additively by 75% from 2.25 to 3.0
See https://www.wowhead.com/classic/spell=436895/s03-tuning-and-overrides-passive-druid Modifies Effect #1's Value -24%: Modifies Effect #2's Value +76:
const (
SpellFlagOmen = core.SpellFlagAgentReserved1
)
const StarfireRanks = 7
const SunfireTicks = int32(4)
const SwipeRanks = 5
const SwipeThreatMultiplier = 2.0
See https://www.wowhead.com/classic/spell=436895/s03-tuning-and-overrides-passive-druid Modifies Threat +101%:
const WrathRanks = 8
Variables ¶
var InsectSwarmBaseDamage = [InsectSwarmRanks + 1]float64{0, 66, 138, 174, 264, 324}
var InsectSwarmLevel = [InsectSwarmRanks + 1]int{0, 20, 30, 40, 50, 60}
var InsectSwarmManaCost = [InsectSwarmRanks + 1]float64{0, 45, 85, 100, 140, 160}
var InsectSwarmSpellId = [InsectSwarmRanks + 1]int32{0, 5570, 24974, 24975, 24976, 24977}
var ItemSetBloodGuardsCracklingLeather = core.NewItemSet(core.ItemSet{ Name: "Blood Guard's Crackling Leather", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 15) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 18) }, }, })
var ItemSetBloodGuardsRestoredLeather = core.NewItemSet(core.ItemSet{ Name: "Blood Guard's Restored Leather", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 15) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 33) }, }, })
var ItemSetCenarionBounty = core.NewItemSet(core.ItemSet{ Name: "Cenarion Bounty", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { }, }, })
var ItemSetCenarionCunning = core.NewItemSet(core.ItemSet{ Name: "Cenarion Cunning", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() if !druid.HasRune(proto.DruidRune_RuneLegsSavageRoar) { return } core.MakePermanent(druid.RegisterAura(core.Aura{ Label: "S03 - Item - T1 - Druid - Feral 6P Bonus", ActionID: core.ActionID{SpellID: 455873}, })) druid.OnComboPointsSpent(func(sim *core.Simulation, spell *core.Spell, comboPoints int32) { if spell == druid.SavageRoar.Spell || !druid.SavageRoarAura.IsActive() { return } if sim.Proc(.2*float64(comboPoints), "S03 - Item - T1 - Druid - Feral 6P Bonus") { druid.SavageRoarAura.Refresh(sim) } }) }, }, })
var ItemSetCenarionEclipse = core.NewItemSet(core.ItemSet{ Name: "Cenarion Eclipse", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { c := agent.GetCharacter() c.AddStats(stats.Stats{ stats.MeleeHit: 3, stats.SpellHit: 3, }) }, 6: func(agent core.Agent) { }, }, })
var ItemSetCenarionRage = core.NewItemSet(core.ItemSet{ Name: "Cenarion Rage", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { }, }, })
var ItemSetChampionsRefuge = core.NewItemSet(core.ItemSet{ Name: "Champion's Refuge", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 44) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
var ItemSetChampionsSanctuary = core.NewItemSet(core.ItemSet{ Name: "Champion's Sanctuary", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.AttackPower, 40) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
var ItemSetChampionsWildhide = core.NewItemSet(core.ItemSet{ Name: "Champion's Wildhide", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 23) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
var ItemSetCoagulateBloodguardsLeathers = core.NewItemSet(core.ItemSet{ Name: "Coagulate Bloodguard's Leathers", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Strength, 10) }, 3: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() procAura := druid.GetOrRegisterAura(core.Aura{ Label: "Power Shredder Proc", ActionID: core.ActionID{SpellID: 449925}, Duration: time.Second * 10, OnGain: func(aura *core.Aura, sim *core.Simulation) { druid.CatForm.CostMultiplier -= 0.3 }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { druid.CatForm.CostMultiplier += 0.3 }, OnCastComplete: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell) { if spell == druid.CatForm.Spell { aura.Deactivate(sim) } }, }) core.MakeProcTriggerAura(&druid.Unit, core.ProcTrigger{ Name: "Power Shredder", Callback: core.CallbackOnCastComplete, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if spell.SpellCode == SpellCode_DruidShred { procAura.Activate(sim) } }, }) }, }, })
var ItemSetEmeraldDreamkeeperGarb = core.NewItemSet(core.ItemSet{ Name: "Emerald Dreamkeeper Garb", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 10) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 22) }, }, })
var ItemSetEmeraldWatcherVestments = core.NewItemSet(core.ItemSet{ Name: "Emerald Watcher Vestments", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 10) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 12) }, }, })
var ItemSetExiledProphetsRaiment = core.NewItemSet(core.ItemSet{ Name: "Exiled Prophet's Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.MP5, 4) }, 3: func(agent core.Agent) { druid := agent.(DruidAgent).GetDruid() if druid.HasRune(proto.DruidRune_RuneFeetDreamstate) { core.MakeProcTriggerAura(&druid.Unit, core.ProcTrigger{ Name: "Exiled Dreamer", Callback: core.CallbackOnHealDealt, ProcMask: core.ProcMaskSpellHealing, Outcome: core.OutcomeCrit, ProcChance: 0.5, Handler: func(sim *core.Simulation, _ *core.Spell, _ *core.SpellResult) { druid.DreamstateManaRegenAura.Activate(sim) }, }) } }, }, })
var ItemSetFeralheartRaiment = core.NewItemSet(core.ItemSet{ Name: "Feralheart Raiment", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStats(stats.Stats{ stats.AttackPower: 40, stats.RangedAttackPower: 40, stats.SpellDamage: 23, stats.HealingPower: 44, }) }, 4: func(agent core.Agent) { c := agent.GetCharacter() actionID := core.ActionID{SpellID: 450608} manaMetrics := c.NewManaMetrics(actionID) energyMetrics := c.NewEnergyMetrics(actionID) rageMetrics := c.NewRageMetrics(actionID) core.MakeProcTriggerAura(&c.Unit, core.ProcTrigger{ Name: "S03 - Druid Energize Trigger - Wildheart Raiment (Mana)", Callback: core.CallbackOnCastComplete, ProcMask: core.ProcMaskSpellDamage | core.ProcMaskSpellHealing, ProcChance: 0.02, Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) { c.AddMana(sim, 300, manaMetrics) }, }) core.MakeProcTriggerAura(&c.Unit, core.ProcTrigger{ Name: "S03 - Druid Energize Trigger - Wildheart Raiment (Energy)", Callback: core.CallbackOnSpellHitDealt, Outcome: core.OutcomeLanded, ProcMask: core.ProcMaskMeleeWhiteHit, ProcChance: 0.06, Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) { if c.HasEnergyBar() { c.AddEnergy(sim, 40, energyMetrics) } }, }) core.MakeProcTriggerAura(&c.Unit, core.ProcTrigger{ Name: "S03 - Druid Energize Trigger - Wildheart Raiment (Rage)", Callback: core.CallbackOnSpellHitTaken, ProcMask: core.ProcMaskMelee, ProcChance: 0.03, Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) { if c.HasRageBar() { c.AddRage(sim, 10, rageMetrics) } }, }) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStats(stats.Stats{ stats.ArcaneResistance: 8, stats.FireResistance: 8, stats.FrostResistance: 8, stats.NatureResistance: 8, stats.ShadowResistance: 8, }) }, 8: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Armor, 200) }, }, })
var ItemSetKnightLieutenantsCracklingLeather = core.NewItemSet(core.ItemSet{ Name: "Knight-Lieutenant's Crackling Leather", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 15) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 18) }, }, })
var ItemSetKnightLieutenantsRestoredLeather = core.NewItemSet(core.ItemSet{ Name: "Knight-Lieutenant's Restored Leather", Bonuses: map[int32]core.ApplyEffect{ 3: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 15) }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 33) }, }, })
var ItemSetLieutenantCommandersRefuge = core.NewItemSet(core.ItemSet{ Name: "Lieutenant Commander's Refuge", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.HealingPower, 44) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
var ItemSetLieutenantCommandersSanctuary = core.NewItemSet(core.ItemSet{ Name: "Lieutenant Commander's Sanctuary", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.AttackPower, 40) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
var ItemSetLieutenantCommandersWildhide = core.NewItemSet(core.ItemSet{ Name: "Lieutenant Commander's Wildhide", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.SpellPower, 23) }, 4: func(agent core.Agent) { }, 6: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.Stamina, 20) }, }, })
var ItemSetLostWorshippersArmor = core.NewItemSet(core.ItemSet{ Name: "Lost Worshipper's Armor", Bonuses: map[int32]core.ApplyEffect{ 2: func(agent core.Agent) { c := agent.GetCharacter() c.AddStat(stats.MeleeHit, 1) c.AddStat(stats.SpellHit, 1) }, 3: func(agent core.Agent) { c := agent.GetCharacter() c.OnSpellRegistered(func(spell *core.Spell) { if spell.SpellCode == SpellCode_DruidWrath || spell.SpellCode == SpellCode_DruidStarfire { spell.BonusCritRating += 3 * core.CritRatingPerCritChance } }) }, }, })
var MoonfireBaseDamage = [MoonfireRanks + 1][]float64{{0}, {9, 12}, {17, 21}, {30, 37}, {44, 53}, {70, 82}, {91, 108}, {117, 137}, {143, 168}, {172, 200}, {195, 228}}
var MoonfireBaseDotDamage = [MoonfireRanks + 1]float64{0, 12, 32, 52, 80, 124, 164, 212, 264, 320, 384}
var MoonfireDotTicks = [MoonfireRanks + 1]int32{0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4}
var MoonfireLevel = [MoonfireRanks + 1]int{0, 4, 10, 16, 22, 28, 34, 40, 46, 52, 58}
var MoonfireManaCost = [MoonfireRanks + 1]float64{0, 25, 50, 75, 105, 150, 190, 235, 280, 325, 375}
var MoonfireSpellId = [MoonfireRanks + 1]int32{0, 8921, 8924, 8925, 8926, 8927, 8928, 8929, 9833, 9834, 9835}
var MoonfiresSellDotCoeff = [MoonfireRanks + 1]float64{0, .052, .081, .111, .13, .13, .13, .13, .13, .13, .13}
var MoonfiresSpellCoeff = [MoonfireRanks + 1]float64{0, .06, .094, .128, .15, .15, .15, .15, .15, .15, .15}
var StarfireBaseDamage = [StarfireRanks + 1][]float64{{0}, {95, 115}, {146, 177}, {212, 253}, {293, 348}, {378, 445}, {451, 531}, {496, 584}}
var StarfireLevel = [StarfireRanks + 1]int{0, 20, 26, 34, 42, 50, 58, 60}
var StarfireManaCost = [StarfireRanks + 1]float64{0, 95, 135, 180, 230, 275, 315, 340}
var StarfireSpellId = [StarfireRanks + 1]int32{0, 2912, 8949, 8950, 8951, 9875, 9876, 25298}
var SwipeBaseDamage = [SwipeRanks + 1]float64{0, 18, 25, 36, 60, 83}
var SwipeLevel = [SwipeRanks + 1]int{0, 16, 24, 34, 44, 54}
var SwipeSpellId = [SwipeRanks + 1]int32{0, 779, 780, 769, 9754, 9908}
var TalentTreeSizes = [3]int{16, 16, 15}
var WrathBaseDamage = [WrathRanks + 1][]float64{{0}, {13, 16}, {28, 33}, {48, 57}, {69, 79}, {108, 123}, {148, 167}, {198, 221}, {248, 277}}
var WrathCastTime = [WrathRanks + 1]int{0, 1500, 1700, 2000, 2000, 2000, 2000, 2000, 2000}
var WrathLevel = [WrathRanks + 1]int{0, 1, 6, 14, 22, 30, 38, 46, 54}
var WrathManaCost = [WrathRanks + 1]float64{0, 20, 35, 55, 70, 100, 125, 155, 180}
var WrathSpellCoeff = [WrathRanks + 1]float64{0, 0.123, 0.231, 0.443, 0.571, 0.571, 0.571, 0.571, 0.571}
var WrathSpellId = [WrathRanks + 1]int32{0, 5176, 5177, 5178, 5179, 5180, 6780, 8905, 9912}
Functions ¶
This section is empty.
Types ¶
type Druid ¶
type Druid struct { core.Character SelfBuffs Talents *proto.DruidTalents StartingForm DruidForm RebirthTiming float64 BleedsActive int AssumeBleedActive bool ReplaceBearMHFunc core.ReplaceMHSwing Barkskin *DruidSpell DemoralizingRoar *DruidSpell Enrage *DruidSpell FaerieFire *DruidSpell FerociousBite *DruidSpell ForceOfNature *DruidSpell FrenziedRegeneration *DruidSpell GiftOfTheWild *DruidSpell Hurricane []*DruidSpell Innervate *DruidSpell InsectSwarm []*DruidSpell Lacerate *DruidSpell Languish *DruidSpell MangleBear *DruidSpell MangleCat *DruidSpell Berserk *DruidSpell Maul *DruidSpell MaulQueueSpell *DruidSpell Moonfire []*DruidSpell Rebirth *DruidSpell Rake *DruidSpell Rip *DruidSpell SavageRoar *DruidSpell Shred *DruidSpell Starfire []*DruidSpell Starfall *DruidSpell Starsurge *DruidSpell Sunfire *DruidSpell SunfireCat *DruidSpell SurvivalInstincts *DruidSpell SwipeBear *DruidSpell SwipeCat *DruidSpell TigersFury *DruidSpell Typhoon *DruidSpell Wrath []*DruidSpell BearForm *DruidSpell CatForm *DruidSpell MoonkinForm *DruidSpell BarkskinAura *core.Aura BearFormAura *core.Aura BerserkAura *core.Aura CatFormAura *core.Aura ClearcastingAura *core.Aura DemoralizingRoarAuras core.AuraArray DreamstateManaRegenAura *core.Aura EnrageAura *core.Aura EclipseAura *core.Aura FaerieFireAuras core.AuraArray FrenziedRegenerationAura *core.Aura FurorAura *core.Aura FuryOfStormrageAura *core.Aura InsectSwarmAuras core.AuraArray MaulQueueAura *core.Aura MoonkinFormAura *core.Aura NaturesGraceProcAura *core.Aura PredatoryInstinctsAura *core.Aura SurvivalInstinctsAura *core.Aura TigersFuryAura *core.Aura SavageRoarAura *core.Aura SolarEclipseProcAura *core.Aura LunarEclipseProcAura *core.Aura WildStrikesBuffAura *core.Aura BleedCategories core.ExclusiveCategoryArray PrimalPrecisionRecoveryMetrics *core.ResourceMetrics SavageRoarDurationTable [6]time.Duration // Sunfire/Moonfire modifiers applied when in Moonkin form MoonfireDotMultiplier float64 SunfireDotMultiplier float64 // contains filtered or unexported fields }
func (*Druid) AddRaidBuffs ¶
func (*Druid) ApplyRunes ¶
func (druid *Druid) ApplyRunes()
func (*Druid) ApplyTalents ¶
func (druid *Druid) ApplyTalents()
func (*Druid) BearArmorMultiplier ¶
func (*Druid) CurrentFerociousBiteCost ¶
func (*Druid) CurrentMangleCatCost ¶
func (*Druid) CurrentRakeCost ¶
func (*Druid) CurrentRipCost ¶
func (*Druid) CurrentSavageRoarCost ¶
func (*Druid) CurrentShredCost ¶
func (*Druid) CurrentSwipeCatCost ¶ added in v0.0.14
func (*Druid) GetCatWeapon ¶
TODO: don't hardcode numbers
func (*Druid) GetCharacter ¶
func (*Druid) GetDynamicPredStrikeStats ¶
func (*Druid) GetFormShiftStats ¶
TODO: Class bonus stats for both cat and bear.
func (*Druid) ImprovedMoonfireCritBonus ¶
func (*Druid) ImprovedMoonfireDamageMultiplier ¶
func (*Druid) Initialize ¶
func (druid *Druid) Initialize()
func (*Druid) MoonfuryDamageMultiplier ¶
func (*Druid) MoonglowManaCostMultiplier ¶ added in v0.0.14
func (*Druid) NaturesGraceCastTime ¶
func (*Druid) RegisterBalanceSpells ¶
func (druid *Druid) RegisterBalanceSpells()
func (*Druid) RegisterFeralCatSpells ¶
func (druid *Druid) RegisterFeralCatSpells()
TODO: Classic feral
func (*Druid) RegisterFeralTankSpells ¶
func (druid *Druid) RegisterFeralTankSpells()
TODO: Classic feral tank
func (*Druid) RegisterSpell ¶
func (druid *Druid) RegisterSpell(formMask DruidForm, config core.SpellConfig) *DruidSpell
func (*Druid) Reset ¶
func (druid *Druid) Reset(_ *core.Simulation)
func (*Druid) ShouldFaerieFire ¶
func (*Druid) ThickHideMultiplier ¶
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 ¶
func (*DruidSpell) CanCast ¶
func (ds *DruidSpell) CanCast(sim *core.Simulation, target *core.Unit) bool
func (*DruidSpell) IsReady ¶
func (ds *DruidSpell) IsReady(sim *core.Simulation) bool
type FerociousBiteRankInfo ¶
type FerociousBiteRankInfo struct {
// contains filtered or unexported fields
}
type RakeRankInfo ¶
type RakeRankInfo struct {
// contains filtered or unexported fields
}
type RipRankInfo ¶
type RipRankInfo struct {
// contains filtered or unexported fields
}
type SelfBuffs ¶
type SelfBuffs struct {
InnervateTarget *proto.UnitReference
}
Source Files
¶
- barkskin.go
- berserk.go
- druid.go
- faerie_fire.go
- ferocious_bite.go
- forms.go
- hurricane.go
- innervate.go
- insect_swarm.go
- item_sets_pve.go
- item_sets_pvp.go
- items.go
- mangle.go
- moonfire.go
- rake.go
- rip.go
- runes.go
- savage_roar.go
- shred.go
- starfall.go
- starfire.go
- starsurge.go
- sunfire.go
- swipe.go
- talents.go
- tigers_fury.go
- wrath.go