balance

package
v0.0.227 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EnergyGainPerTick           = 25.0
	EnergyGainPerTickDuringSotF = 100.0
)
View Source
const (
	AstralStormBonusCoeff = 0.236
	AstralStormCoeff      = 0.199
)
View Source
const (
	WrathBaseEnergyGain     float64 = 15
	StarsurgeBaseEnergyGain float64 = 20
	StarfireBaseEnergyGain  float64 = 20
)
View Source
const (
	T15BoltBonusCoeff = 0.10000000149
	T15BoltCoeff      = 0.5
	T15BoltVariance   = 0.25
)
View Source
const (
	StarfallBonusCoeff = 0.364
	StarfallCoeff      = 0.58
	StarfallVariance   = 0.15
)
View Source
const (
	StarfireBonusCoeff = 2.166
	StarfireCoeff      = 4.456
	StarfireVariance   = 0.25
)
View Source
const (
	StarsurgeBonusCoeff = 2.388
	StarsurgeCoeff      = 4.54
	StarsurgeVariance   = 0.319
)
View Source
const (
	SunfireBonusCoeff = 0.24

	SunfireDotCoeff = 0.24

	SunfireImpactCoeff    = 0.571
	SunfireImpactVariance = 0.2
)
View Source
const (
	TreantWrathBonusCoeff = 0.375
	TreantWrathCoeff      = 1.875
	TreantWrathVariance   = 0.12
)
View Source
const (
	WildMushroomsBonusCoeff = 0.349
	WildMushroomsCoeff      = 0.295
	WildMushroomsVariance   = 0.19
)

Variables

View Source
var ItemSetRegaliaOfTheEternalBloosom = core.NewItemSet(core.ItemSet{
	Name:                    "Regalia of the Eternal Blossom",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, setBonusAura *core.Aura) {

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_DamageDone_Pct,
				ClassMask:  druid.DruidSpellStarfallTick,
				FloatValue: 0.2,
			})
		},
		4: func(_ core.Agent, setBonusAura *core.Aura) {

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:      core.SpellMod_DotNumberOfTicks_Flat,
				ClassMask: druid.DruidSpellMoonfireDoT | druid.DruidSpellSunfireDoT,
				IntValue:  1,
			})
		},
	},
})

T14 Balance

View Source
var ItemSetRegaliaOfTheHauntedForest = core.NewItemSet(core.ItemSet{
	Name:                    "Regalia of the Haunted Forest",
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(_ core.Agent, setBonusAura *core.Aura) {

			setBonusAura.AttachSpellMod(core.SpellModConfig{
				Kind:       core.SpellMod_BonusCrit_Percent,
				ClassMask:  druid.DruidSpellStarsurge,
				FloatValue: 10,
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {

			druid := agent.(*BalanceDruid)
			aura := druid.NewTemporaryStatsAura(
				"Druid T15 Balance 4P Bonus",
				core.ActionID{SpellID: 138350},
				stats.Stats{stats.CritRating: 1000, stats.MasteryRating: 1000},
				time.Second*15,
			)

			druid.Env.RegisterPreFinalizeEffect(func() {
				druid.NaturesGrace.ApplyOnGain(func(_ *core.Aura, sim *core.Simulation) {
					if setBonusAura.IsActive() {
						aura.Activate(sim)
					}
				})
			})

			setBonusAura.ExposeToAPL(138350)
		},
	},
})

T15 Balance

View Source
var ItemSetRegaliaOfTheShatteredVale = core.NewItemSet(core.ItemSet{
	Name:                    "Regalia of the Shattered Vale",
	ID:                      1197,
	DisabledInChallengeMode: true,
	Bonuses: map[int32]core.ApplySetBonus{
		2: func(agent core.Agent, setBonusAura *core.Aura) {

			moonkin := agent.(*BalanceDruid)
			solarBolt := moonkin.registerT15BoltSpell(144772, core.SpellSchoolNature, SolarEclipse)
			lunarBolt := moonkin.registerT15BoltSpell(144770, core.SpellSchoolArcane, LunarEclipse)

			bothDuringCA := druid.DruidSpellMoonfire | druid.DruidSpellSunfire | druid.DruidSpellStarsurge

			procTriggerSpellMask := druid.DruidSpellMoonfire |
				druid.DruidSpellSunfire |
				druid.DruidSpellStarfall |
				druid.DruidSpellStarfire |
				druid.DruidSpellWrath |
				druid.DruidSpellStarsurge

			setBonusAura.AttachProcTrigger(core.ProcTrigger{
				Callback:           core.CallbackOnCastComplete,
				ClassSpellMask:     procTriggerSpellMask,
				TriggerImmediately: true,

				Handler: func(sim *core.Simulation, spell *core.Spell, _ *core.SpellResult) {
					alignmentActive := moonkin.CelestialAlignment.RelatedSelfBuff.IsActive()

					if spell.SpellSchool.Matches(core.SpellSchoolNature) || (alignmentActive && spell.Matches(bothDuringCA)) {
						solarBolt.Cast(sim, spell.Unit.CurrentTarget)
					}

					if spell.SpellSchool.Matches(core.SpellSchoolArcane) || (alignmentActive && spell.Matches(bothDuringCA)) {
						lunarBolt.Cast(sim, spell.Unit.CurrentTarget)
					}
				},
			})
		},
		4: func(agent core.Agent, setBonusAura *core.Aura) {

			moonkin := agent.(*BalanceDruid)
			moonkin.ShootingStarsProcChance += 0.08
		},
	},
})

T16 Balance

Functions

func RegisterBalanceDruid

func RegisterBalanceDruid()

Types

type APLValueCurrentEclipsePhase added in v0.0.4

type APLValueCurrentEclipsePhase struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueCurrentEclipsePhase) GetBool added in v0.0.4

func (value *APLValueCurrentEclipsePhase) GetBool(sim *core.Simulation) bool

func (*APLValueCurrentEclipsePhase) String added in v0.0.4

func (value *APLValueCurrentEclipsePhase) String() string

func (*APLValueCurrentEclipsePhase) Type added in v0.0.4

type APLValueCurrentLunarEnergy added in v0.0.4

type APLValueCurrentLunarEnergy struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueCurrentLunarEnergy) GetInt added in v0.0.4

func (value *APLValueCurrentLunarEnergy) GetInt(sim *core.Simulation) int32

func (*APLValueCurrentLunarEnergy) String added in v0.0.4

func (value *APLValueCurrentLunarEnergy) String() string

func (*APLValueCurrentLunarEnergy) Type added in v0.0.4

type APLValueCurrentSolarEnergy added in v0.0.4

type APLValueCurrentSolarEnergy struct {
	core.DefaultAPLValueImpl
	// contains filtered or unexported fields
}

func (*APLValueCurrentSolarEnergy) GetInt added in v0.0.4

func (value *APLValueCurrentSolarEnergy) GetInt(sim *core.Simulation) int32

func (*APLValueCurrentSolarEnergy) String added in v0.0.4

func (value *APLValueCurrentSolarEnergy) String() string

func (*APLValueCurrentSolarEnergy) Type added in v0.0.4

type BalanceDruid

type BalanceDruid struct {
	*druid.Druid

	Options *proto.BalanceDruid_Options

	EclipseEnergyMap EclipseEnergyMap

	LunarEclipseSpellMod       *core.SpellMod
	SolarEclipseSpellMod       *core.SpellMod
	CelestialAlignmentSpellMod *core.SpellMod
	IncarnationSpellMod        *core.SpellMod

	ManaMetric *core.ResourceMetrics

	AstralCommunion      *druid.DruidSpell
	AstralStorm          *druid.DruidSpell
	AstralStormTickSpell *druid.DruidSpell
	CelestialAlignment   *druid.DruidSpell
	ChosenOfElune        *druid.DruidSpell
	Starfall             *druid.DruidSpell
	Starfire             *druid.DruidSpell
	Sunfire              *druid.DruidSpell
	Starsurge            *druid.DruidSpell

	AstralInsight   *core.Aura // Soul of the Forest
	DreamOfCenarius *core.Aura
	NaturesGrace    *core.Aura
	OwlkinFrenzy    *core.Aura

	ShootingStarsProcChance float64
	// contains filtered or unexported fields
}

func NewBalanceDruid

func NewBalanceDruid(character *core.Character, options *proto.Player) *BalanceDruid

func (*BalanceDruid) AddEclipseCallback added in v0.0.4

func (eb *BalanceDruid) AddEclipseCallback(callback EclipseCallback)

func (*BalanceDruid) AddEclipseEnergy added in v0.0.4

func (eb *BalanceDruid) AddEclipseEnergy(amount float64, kind EclipseEnergy, sim *core.Simulation, metrics *core.ResourceMetrics, spell *core.Spell)

func (*BalanceDruid) ApplyBalanceTalents added in v0.0.4

func (moonkin *BalanceDruid) ApplyBalanceTalents()

func (*BalanceDruid) ApplyTalents

func (moonkin *BalanceDruid) ApplyTalents()

func (*BalanceDruid) CanGainEnergy added in v0.0.4

func (eb *BalanceDruid) CanGainEnergy(kind EclipseEnergy) bool

func (*BalanceDruid) CurrentLunarEnergy added in v0.0.4

func (eb *BalanceDruid) CurrentLunarEnergy() int32

func (*BalanceDruid) CurrentSolarEnergy added in v0.0.4

func (eb *BalanceDruid) CurrentSolarEnergy() int32

func (*BalanceDruid) EnableEclipseBar added in v0.0.4

func (moonkin *BalanceDruid) EnableEclipseBar()

func (*BalanceDruid) GetDruid

func (moonkin *BalanceDruid) GetDruid() *druid.Druid

func (*BalanceDruid) GetSpellEclipseEnergy added in v0.0.4

func (moonkin *BalanceDruid) GetSpellEclipseEnergy(spellMask int64, inEclipse bool) float64

func (*BalanceDruid) HasEclipseBar added in v0.0.4

func (moonkin *BalanceDruid) HasEclipseBar() bool

func (*BalanceDruid) Initialize

func (moonkin *BalanceDruid) Initialize()

func (*BalanceDruid) IsInEclipse added in v0.0.4

func (moonkin *BalanceDruid) IsInEclipse() bool

func (*BalanceDruid) NewAPLValue added in v0.0.4

func (druid *BalanceDruid) NewAPLValue(rot *core.APLRotation, config *proto.APLValue) core.APLValue

func (*BalanceDruid) NewLunarEnergyMetrics added in v0.0.4

func (unit *BalanceDruid) NewLunarEnergyMetrics(actionID core.ActionID) *core.ResourceMetrics

func (*BalanceDruid) NewSolarEnergyMetrics added in v0.0.4

func (unit *BalanceDruid) NewSolarEnergyMetrics(actionID core.ActionID) *core.ResourceMetrics

func (*BalanceDruid) RegisterBalancePassives added in v0.0.4

func (moonkin *BalanceDruid) RegisterBalancePassives()

func (*BalanceDruid) RegisterBalanceSpells added in v0.0.4

func (moonkin *BalanceDruid) RegisterBalanceSpells()

func (*BalanceDruid) RegisterEclipseAuras added in v0.0.4

func (moonkin *BalanceDruid) RegisterEclipseAuras()

func (*BalanceDruid) RegisterEclipseEnergyGainAura added in v0.0.4

func (moonkin *BalanceDruid) RegisterEclipseEnergyGainAura()

func (*BalanceDruid) RegisterEclipseSpellMods added in v0.0.139

func (moonkin *BalanceDruid) RegisterEclipseSpellMods()

func (*BalanceDruid) Reset

func (moonkin *BalanceDruid) Reset(sim *core.Simulation)

func (*BalanceDruid) RestoreEclipseBar added in v0.0.4

func (moonkin *BalanceDruid) RestoreEclipseBar()

func (*BalanceDruid) SetEclipse added in v0.0.4

func (eb *BalanceDruid) SetEclipse(eclipse Eclipse, sim *core.Simulation, spell *core.Spell)

func (*BalanceDruid) SetSpellEclipseEnergy added in v0.0.4

func (moonkin *BalanceDruid) SetSpellEclipseEnergy(spellMask int64, inEclipseEnergy float64, noEclipseEnergy float64)

func (*BalanceDruid) StoreGainMaskAndSuspend added in v0.0.4

func (eb *BalanceDruid) StoreGainMaskAndSuspend()

func (*BalanceDruid) SuspendEclipseBar added in v0.0.4

func (moonkin *BalanceDruid) SuspendEclipseBar(sim *core.Simulation)

type BalanceTreant added in v0.0.4

type BalanceTreant struct {
	*druid.DefaultTreantImpl

	Wrath *core.Spell
}

func (*BalanceTreant) ExecuteCustomRotation added in v0.0.4

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

func (*BalanceTreant) Initialize added in v0.0.4

func (treant *BalanceTreant) Initialize()

type Eclipse added in v0.0.4

type Eclipse byte
const (
	NoEclipse    Eclipse = 0
	SolarEclipse Eclipse = 1
	LunarEclipse Eclipse = 2
)

type EclipseCallback added in v0.0.4

type EclipseCallback func(eclipse Eclipse, gained bool, sim *core.Simulation)

type EclipseEnergy added in v0.0.4

type EclipseEnergy byte
const (
	NoEnergy            EclipseEnergy = 0
	SolarEnergy         EclipseEnergy = 1
	LunarEnergy         EclipseEnergy = 2
	SolarAndLunarEnergy               = SolarEnergy | LunarEnergy
)

type EclipseEnergyMap added in v0.0.4

type EclipseEnergyMap = map[int64]EclipseEnergyValues

type EclipseEnergyValues added in v0.0.4

type EclipseEnergyValues struct {
	InEclipse float64
	NoEclipse float64
}

Jump to

Keyboard shortcuts

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