druid

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpellFlagNaturesGrace = core.SpellFlagAgentReserved1
	SpellFlagOmenTrigger  = core.SpellFlagAgentReserved2
)
View Source
const (
	WrathBaseEnergyGain     float64 = 13 + 1.0/3
	StarsurgeBaseEnergyGain float64 = 15
	StarfireBaseEnergyGain  float64 = 20
	MoonfireBaseEnergyGain  float64 = 0
	SunfireBaseEnergyGain   float64 = 0

	MoonfireLunarShowerEnergyGain float64 = MoonfireBaseEnergyGain + 8
	SunfireLunarShowerEnergyGain  float64 = SunfireBaseEnergyGain + 8

	Wrath4PT12EnergyGain    float64 = WrathBaseEnergyGain + 3
	Starfire4PT12EnergyGain float64 = StarfireBaseEnergyGain + 5
)
View Source
const (
	DruidSpellFlagNone int64 = 0
	DruidSpellBarkskin int64 = 1 << iota
	DruidSpellCyclone
	DruidSpellEntanglingRoots
	DruidSpellFearieFire
	DruidSpellHibernate
	DruidSpellHurricane
	DruidSpellInnervate
	DruidSpellInsectSwarm
	DruidSpellMangleBear
	DruidSpellMangleCat
	DruidSpellMaul
	DruidSpellMoonfire
	DruidSpellMoonfireDoT
	DruidSpellNaturesGrasp
	DruidSpellRavage
	DruidSpellShred
	DruidSpellStarfall
	DruidSpellStarfire
	DruidSpellStarsurge
	DruidSpellSunfire
	DruidSpellSunfireDoT
	DruidSpellThorns
	DruidSpellTyphoon
	DruidSpellWildMushroom
	DruidSpellWildMushroomDetonate
	DruidSpellWrath

	DruidSpellHealingTouch
	DruidSpellRegrowth
	DruidSpellLifebloom
	DruidSpellRejuvenation
	DruidSpellNourish
	DruidSpellTranquility
	DruidSpellMarkOfTheWild
	DruidSpellSwiftmend
	DruidSpellWildGrowth

	DruidSpellLast
	DruidSpellsAll      = DruidSpellLast<<1 - 1
	DruidSpellDoT       = DruidSpellInsectSwarm | DruidSpellMoonfireDoT | DruidSpellSunfireDoT
	DruidSpellHoT       = DruidSpellRejuvenation | DruidSpellLifebloom | DruidSpellRegrowth | DruidSpellWildGrowth
	DruidSpellInstant   = DruidSpellBarkskin | DruidSpellInsectSwarm | DruidSpellMoonfire | DruidSpellStarfall | DruidSpellSunfire | DruidSpellFearieFire | DruidSpellBarkskin
	DruidSpellMangle    = DruidSpellMangleBear | DruidSpellMangleCat
	DruidArcaneSpells   = DruidSpellMoonfire | DruidSpellMoonfireDoT | DruidSpellStarfire | DruidSpellStarsurge | DruidSpellStarfall
	DruidNatureSpells   = DruidSpellWrath | DruidSpellInsectSwarm | DruidSpellStarsurge | DruidSpellSunfire | DruidSpellSunfireDoT | DruidSpellTyphoon | DruidSpellHurricane
	DruidHealingSpells  = DruidSpellHealingTouch | DruidSpellRegrowth | DruidSpellRejuvenation | DruidSpellLifebloom | DruidSpellNourish | DruidSpellSwiftmend
	DruidDamagingSpells = DruidArcaneSpells | DruidNatureSpells
)
View Source
const AnimalSpiritRegenSuppression = 0.911337

Converts from 0.009327 to 0.0085

View Source
const BaseBearArmorMulti = 2.2

Thick Hide contribution handled separately in talents code for cleanliness and UI stats display.

View Source
const RendAndTearBonusCritPercent = 35.0
View Source
const RendAndTearDamageMultiplier = 1.2
View Source
const RipBaseNumTicks int32 = 8
View Source
const RipMaxNumTicks int32 = RipBaseNumTicks + 3

Variables

This section is empty.

Functions

This section is empty.

Types

type BurningTreant

type BurningTreant struct {
	core.Pet

	Fireseed *core.Spell
	// contains filtered or unexported fields
}

func (*BurningTreant) ExecuteCustomRotation

func (treant *BurningTreant) ExecuteCustomRotation(sim *core.Simulation)

func (*BurningTreant) GetPet

func (treant *BurningTreant) GetPet() *core.Pet

func (*BurningTreant) Initialize

func (treant *BurningTreant) Initialize()

func (*BurningTreant) Reset

func (treant *BurningTreant) Reset(_ *core.Simulation)

type DefaultTreantImpl

type DefaultTreantImpl struct {
	core.Pet
}

Embed this in spec-specific treant structs.

func (*DefaultTreantImpl) Enable

func (treant *DefaultTreantImpl) Enable(sim *core.Simulation)

func (*DefaultTreantImpl) ExecuteCustomRotation

func (treant *DefaultTreantImpl) ExecuteCustomRotation(_ *core.Simulation)

func (*DefaultTreantImpl) GetPet

func (treant *DefaultTreantImpl) GetPet() *core.Pet

func (*DefaultTreantImpl) Initialize

func (treant *DefaultTreantImpl) Initialize()

Overwrite these for spec variants that register spells.

func (*DefaultTreantImpl) Reset

func (treant *DefaultTreantImpl) Reset(sim *core.Simulation)

type Druid

type Druid struct {
	core.Character
	SelfBuffs

	Talents *proto.DruidTalents

	ClassSpellScaling float64

	StartingForm DruidForm

	Treants TreantAgents

	EclipseEnergyMap EclipseEnergyMap

	RebirthUsed       bool
	RebirthTiming     float64
	BleedsActive      int
	AssumeBleedActive bool
	CannotShredTarget bool

	MHAutoSpell *core.Spell

	Barkskin              *DruidSpell
	Berserk               *DruidSpell
	CatCharge             *DruidSpell
	FaerieFire            *DruidSpell
	FerociousBite         *DruidSpell
	ForceOfNature         *DruidSpell
	FrenziedRegeneration  *DruidSpell
	Hurricane             *DruidSpell
	HurricaneTickSpell    *DruidSpell
	InsectSwarm           *DruidSpell
	Lacerate              *DruidSpell
	MangleBear            *DruidSpell
	MangleCat             *DruidSpell
	Maul                  *DruidSpell
	MightOfUrsoc          *DruidSpell
	Moonfire              *DruidSpell
	Prowl                 *DruidSpell
	Rebirth               *DruidSpell
	Rake                  *DruidSpell
	Ravage                *DruidSpell
	Rip                   *DruidSpell
	SavageRoar            *DruidSpell
	Shred                 *DruidSpell
	Starfire              *DruidSpell
	Starfall              *DruidSpell
	Starsurge             *DruidSpell
	Sunfire               *DruidSpell
	SurvivalInstincts     *DruidSpell
	SwipeBear             *DruidSpell
	SwipeCat              *DruidSpell
	TigersFury            *DruidSpell
	ThrashBear            *DruidSpell
	ThrashCat             *DruidSpell
	Typhoon               *DruidSpell
	Wrath                 *DruidSpell
	WildMushrooms         *DruidSpell
	WildMushroomsDetonate *DruidSpell

	CatForm  *DruidSpell
	BearForm *DruidSpell

	BarkskinAura             *core.Aura
	BearFormAura             *core.Aura
	BerserkBearAura          *core.Aura
	BerserkCatAura           *core.Aura
	CatFormAura              *core.Aura
	ClearcastingAura         *core.Aura
	WeakenedBlowsAuras       core.AuraArray
	FaerieFireAuras          core.AuraArray
	FrenziedRegenerationAura *core.Aura
	LunarEclipseProcAura     *core.Aura
	MightOfUrsocAura         *core.Aura
	NaturesGraceProcAura     *core.Aura
	OwlkinFrenzyAura         *core.Aura
	ProwlAura                *core.Aura
	SolarEclipseProcAura     *core.Aura
	SurvivalInstinctsAura    *core.Aura

	SavageRoarDurationTable [6]time.Duration

	ProcOoc func(sim *core.Simulation)

	ExtendingMoonfireStacks int

	// Guardian leather specialization is form-specific
	GuardianLeatherSpecTracker *core.Aura
	GuardianLeatherSpecDep     *stats.StatDependency

	// Item sets
	T13Feral4pBonus *core.Aura
	// contains filtered or unexported fields
}

func New

func New(char *core.Character, form DruidForm, selfBuffs SelfBuffs, talents string) *Druid

func (*Druid) ApplyBloodletting

func (druid *Druid) ApplyBloodletting(target *core.Unit)

func (*Druid) ApplyLeaderOfThePack

func (druid *Druid) ApplyLeaderOfThePack()

func (*Druid) ApplyNurturingInstinct

func (druid *Druid) ApplyNurturingInstinct()

func (*Druid) ApplyPrimalFury

func (druid *Druid) ApplyPrimalFury()

func (*Druid) ApplyTalents

func (druid *Druid) ApplyTalents()

func (*Druid) BalanceCritMultiplier

func (druid *Druid) BalanceCritMultiplier() float64

func (*Druid) CanApplyFaerieFireDebuff

func (druid *Druid) CanApplyFaerieFireDebuff(target *core.Unit) bool

func (*Druid) ClearForm

func (druid *Druid) ClearForm(sim *core.Simulation)

func (*Druid) CurrentFerociousBiteCost

func (druid *Druid) CurrentFerociousBiteCost() float64

func (*Druid) CurrentMangleCatCost

func (druid *Druid) CurrentMangleCatCost() float64

func (*Druid) CurrentRakeCost

func (druid *Druid) CurrentRakeCost() float64

func (*Druid) CurrentRipCost

func (druid *Druid) CurrentRipCost() float64

func (*Druid) CurrentSwipeCatCost

func (druid *Druid) CurrentSwipeCatCost() float64

func (*Druid) GetBearWeapon

func (druid *Druid) GetBearWeapon() core.Weapon

func (*Druid) GetCatWeapon

func (druid *Druid) GetCatWeapon() core.Weapon

func (*Druid) GetCharacter

func (druid *Druid) GetCharacter() *core.Character

func (*Druid) GetSpellEclipseEnergy

func (druid *Druid) GetSpellEclipseEnergy(spellMask int64, inEclipse bool) float64

func (*Druid) HasMajorGlyph

func (druid *Druid) HasMajorGlyph(glyph proto.DruidMajorGlyph) bool

func (*Druid) HasMinorGlyph

func (druid *Druid) HasMinorGlyph(glyph proto.DruidMinorGlyph) bool

func (*Druid) InForm

func (druid *Druid) InForm(form DruidForm) bool

func (*Druid) Initialize

func (druid *Druid) Initialize()

func (*Druid) IsMangle

func (druid *Druid) IsMangle(spell *core.Spell) bool

func (*Druid) IsSwipeSpell

func (druid *Druid) IsSwipeSpell(spell *core.Spell) bool

func (*Druid) NewBurningTreant

func (druid *Druid) NewBurningTreant() *BurningTreant

func (*Druid) NewDefaultTreant

func (druid *Druid) NewDefaultTreant(config TreantConfig) *DefaultTreantImpl

func (*Druid) RegisterBalanceSpells

func (druid *Druid) RegisterBalanceSpells()

func (*Druid) RegisterBearFormAura

func (druid *Druid) RegisterBearFormAura()

func (*Druid) RegisterCatFormAura

func (druid *Druid) RegisterCatFormAura()

func (*Druid) RegisterFeralCatSpells

func (druid *Druid) RegisterFeralCatSpells()

func (*Druid) RegisterFeralTankSpells

func (druid *Druid) RegisterFeralTankSpells()

func (*Druid) RegisterSpell

func (druid *Druid) RegisterSpell(formMask DruidForm, config core.SpellConfig) *DruidSpell

func (*Druid) Reset

func (druid *Druid) Reset(_ *core.Simulation)

func (*Druid) SetSpellEclipseEnergy

func (druid *Druid) SetSpellEclipseEnergy(spellMask int64, inEclipseEnergy float64, noEclipseEnergy float64)

func (*Druid) ShouldFaerieFire

func (druid *Druid) ShouldFaerieFire(sim *core.Simulation, target *core.Unit) bool

func (*Druid) TryApplyFaerieFireEffect

func (druid *Druid) TryApplyFaerieFireEffect(sim *core.Simulation, target *core.Unit)

func (*Druid) UpdateBleedPower

func (druid *Druid) UpdateBleedPower(bleedSpell *DruidSpell, sim *core.Simulation, target *core.Unit, updateCurrent bool, updateNew bool)

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 DruidForm

type DruidForm uint8
const (
	Humanoid DruidForm = 1 << iota
	Bear
	Cat
	Moonkin
	Tree
	Any = Humanoid | Bear | Cat | Moonkin | Tree
)

func (DruidForm) Matches

func (form DruidForm) Matches(other DruidForm) bool

type DruidSpell

type DruidSpell struct {
	*core.Spell
	FormMask DruidForm

	// Optional fields used in snapshotting calculations
	CurrentSnapshotPower float64
	NewSnapshotPower     float64
	ShortName            string
}

func (*DruidSpell) CanCast

func (ds *DruidSpell) CanCast(sim *core.Simulation, target *core.Unit) bool

func (*DruidSpell) IsEqual

func (ds *DruidSpell) IsEqual(s *core.Spell) bool

func (*DruidSpell) IsReady

func (ds *DruidSpell) IsReady(sim *core.Simulation) bool

type EclipseEnergyMap

type EclipseEnergyMap = map[int64]EclipseEnergyValues

type EclipseEnergyValues

type EclipseEnergyValues struct {
	InEclipse float64
	NoEclipse float64
}

type SelfBuffs

type SelfBuffs struct {
	InnervateTarget *proto.UnitReference
}

type TreantAgent

type TreantAgent interface {
	core.PetAgent

	Enable(sim *core.Simulation)
}

Extension of PetAgent interface, for treants.

type TreantAgents

type TreantAgents [3]TreantAgent

type TreantConfig

type TreantConfig struct {
	StatInheritance         core.PetStatInheritance
	EnableAutos             bool
	WeaponDamageCoefficient float64
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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