druid

package
v1.9.3 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Humanoid = 1 << iota
	Bear
	Cat
	Moonkin
)
View Source
const AnimalSpiritRegenSuppression = 0.911337

Converts from 0.009327 to 0.0085

View Source
const IdolAvenger int32 = 31025
View Source
const IvoryMoongoddess int32 = 27518

Idol IDs

Variables

View Source
var ItemSetMalorneHarness = core.NewItemSet(core.ItemSet{
	Name: "Malorne Harness",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			druid := agent.(DruidAgent).GetDruid()

			procChance := 0.04
			rageMetrics := druid.NewRageMetrics(core.ActionID{SpellID: 37306})
			energyMetrics := druid.NewEnergyMetrics(core.ActionID{SpellID: 37311})

			druid.RegisterAura(core.Aura{
				Label:    "Malorne 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, spellEffect *core.SpellEffect) {
					if spellEffect.Landed() && spellEffect.ProcMask.Matches(core.ProcMaskMelee) {
						if sim.RandomFloat("Malorne 2pc") < procChance {
							if druid.InForm(Bear) {
								druid.AddRage(sim, 10, rageMetrics)
							} else if druid.InForm(Cat) {
								druid.AddEnergy(sim, 20, energyMetrics)
							}
						}
					}
				},
			})
		},
		4: func(agent core.Agent) {
			druid := agent.(DruidAgent).GetDruid()
			if druid.InForm(Bear) {
				druid.AddStat(stats.Armor, 1400)
			} else if druid.InForm(Cat) {
				druid.AddStat(stats.Strength, 30)
			}
		},
	},
})
View Source
var ItemSetMalorneRegalia = core.NewItemSet(core.ItemSet{
	Name: "Malorne Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
			druid := agent.(DruidAgent).GetDruid()
			manaMetrics := druid.NewManaMetrics(core.ActionID{SpellID: 37295})

			druid.RegisterAura(core.Aura{
				Label:    "Malorne Regalia 2pc",
				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, spellEffect *core.SpellEffect) {
					if spellEffect.ProcMask.Matches(core.ProcMaskMeleeOrRanged) {
						return
					}
					if !spellEffect.Landed() {
						return
					}
					if sim.RandomFloat("malorne 2p") > 0.05 {
						return
					}
					spell.Unit.AddMana(sim, 120, manaMetrics, false)
				},
			})
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetNordrassilHarness = core.NewItemSet(core.ItemSet{
	Name: "Nordrassil Harness",
	Bonuses: map[int32]core.ApplyEffect{
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetNordrassilRegalia = core.NewItemSet(core.ItemSet{
	Name: "Nordrassil Regalia",
	Bonuses: map[int32]core.ApplyEffect{
		4: func(agent core.Agent) {

		},
	},
})
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) {

		},
	},
})

Functions

This section is empty.

Types

type Druid

type Druid struct {
	core.Character
	SelfBuffs
	Talents proto.DruidTalents

	StartingForm DruidForm

	RebirthUsed       bool
	MaulRageThreshold float64

	DemoralizingRoar *core.Spell
	FaerieFire       *core.Spell
	FerociousBite    *core.Spell
	Hurricane        *core.Spell
	InsectSwarm      *core.Spell
	Lacerate         *core.Spell
	Mangle           *core.Spell
	Maul             *core.Spell
	Moonfire         *core.Spell
	Rebirth          *core.Spell
	Rake             *core.Spell
	Rip              *core.Spell
	Shred            *core.Spell
	Starfire6        *core.Spell
	Starfire8        *core.Spell
	Swipe            *core.Spell
	Wrath            *core.Spell

	CatForm  *core.Spell
	BearForm *core.Spell

	InsectSwarmDot *core.Dot
	LacerateDot    *core.Dot
	MoonfireDot    *core.Dot
	RakeDot        *core.Dot
	RipDot         *core.Dot

	ClearcastingAura     *core.Aura
	DemoralizingRoarAura *core.Aura
	FaerieFireAura       *core.Aura
	MangleAura           *core.Aura
	MaulQueueAura        *core.Aura
	NaturesGraceProcAura *core.Aura
	NaturesSwiftnessAura *core.Aura
	CatFormAura          *core.Aura
	BearFormAura         *core.Aura
	// contains filtered or unexported fields
}

func New

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

func (*Druid) AddPartyBuffs

func (druid *Druid) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Druid) AddRaidBuffs

func (druid *Druid) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Druid) ApplyClearcasting

func (druid *Druid) ApplyClearcasting(sim *core.Simulation, spell *core.Spell, cast *core.Cast)

func (*Druid) ApplyTalents

func (druid *Druid) ApplyTalents()

func (*Druid) CanDemoralizingRoar

func (druid *Druid) CanDemoralizingRoar(sim *core.Simulation) bool

func (*Druid) CanLacerate

func (druid *Druid) CanLacerate(sim *core.Simulation) bool

func (*Druid) CanMangleBear

func (druid *Druid) CanMangleBear(sim *core.Simulation) bool

func (*Druid) CanMangleCat

func (druid *Druid) CanMangleCat() bool

func (*Druid) CanRake

func (druid *Druid) CanRake(sim *core.Simulation) bool

func (*Druid) CanShred

func (druid *Druid) CanShred() bool

func (*Druid) CanSwipe

func (druid *Druid) CanSwipe() bool

func (*Druid) ClearcastingActive

func (druid *Druid) ClearcastingActive() bool

func (*Druid) DequeueMaul

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

func (*Druid) GetCharacter

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

func (*Druid) GetForm

func (druid *Druid) GetForm() DruidForm

func (*Druid) InForm

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

func (*Druid) Initialize

func (druid *Druid) Initialize()

func (*Druid) MeleeCritMultiplier

func (druid *Druid) MeleeCritMultiplier() float64

func (*Druid) PowerShiftBear

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

func (*Druid) PowerShiftCat

func (druid *Druid) PowerShiftCat(sim *core.Simulation) bool

func (*Druid) QueueMaul

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

func (*Druid) RegisterBalanceSpells

func (druid *Druid) RegisterBalanceSpells()

func (*Druid) RegisterBearSpells

func (druid *Druid) RegisterBearSpells(maulRageThreshold float64)

func (*Druid) RegisterCatSpells

func (druid *Druid) RegisterCatSpells()

func (*Druid) Reset

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

func (*Druid) ShouldCastHurricane

func (druid *Druid) ShouldCastHurricane(sim *core.Simulation, rotation proto.BalanceDruid_Rotation) bool

func (*Druid) ShouldCastInsectSwarm

func (druid *Druid) ShouldCastInsectSwarm(sim *core.Simulation, target *core.Unit, rotation proto.BalanceDruid_Rotation) bool

func (*Druid) ShouldCastMoonfire

func (druid *Druid) ShouldCastMoonfire(sim *core.Simulation, target *core.Unit, rotation proto.BalanceDruid_Rotation) bool

func (*Druid) ShouldDemoralizingRoar

func (druid *Druid) ShouldDemoralizingRoar(sim *core.Simulation, filler bool, maintainOnly bool) bool

func (*Druid) ShouldFaerieFire

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

func (*Druid) ShouldQueueMaul

func (druid *Druid) ShouldQueueMaul(sim *core.Simulation) bool

func (*Druid) TryMaul

func (druid *Druid) TryMaul(sim *core.Simulation, mhSwingSpell *core.Spell) *core.Spell

Returns true if the regular melee swing should be used, false otherwise.

func (*Druid) TryRebirth

func (druid *Druid) TryRebirth(sim *core.Simulation) 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

func (DruidForm) Matches

func (form DruidForm) Matches(other DruidForm) bool

type SelfBuffs

type SelfBuffs struct {
	Omen bool

	InnervateTarget proto.RaidTarget
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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