Documentation ¶
Overview ¶
Proto-based function interface for the simulator
Functions for creating common types of auras.
Index ¶
- Constants
- Variables
- func APLRotationFromJsonString(jsonString string) *proto.APLRotation
- func AddBaseStatsCombo(r proto.Race, c proto.Class)
- func AddPresetEncounter(name string, targetPaths []string)
- func AddPresetTarget(newPreset *PresetTarget)
- func AddWeaponEffect(id int32, weaponEffect ApplyWeaponEffect)
- func ApplyFixedUptimeAura(aura *Aura, uptime float64, tickLength time.Duration, startTime time.Duration)
- func ApplyInspiration(unit *Unit, uptime float64)
- func ApplyProcTriggerCallback(unit *Unit, aura *Aura, config ProcTrigger)
- func ApplyVarianceMinMax(avgEffect float64, variance float64) (float64, float64)
- func ApplyVengeanceEffect(character *Character, tracker *VengeanceTracker, spellID int32)
- func BothTimersReady(t1 *Timer, t2 *Timer, sim *Simulation) bool
- func BothTimersReadyAt(t1 *Timer, t2 *Timer) time.Duration
- func BulkSim(ctx context.Context, request *proto.BulkSimRequest, ...) *proto.BulkSimResult
- func CalcScalingSpellAverageEffect(class proto.Class, spellEffectCoefficient float64) float64
- func CalcScalingSpellEffectVarianceMinMax(class proto.Class, spellEffectCoefficient float64, spellEffectVariance float64) (float64, float64)
- func CharacterStatsTest(label string, t *testing.T, raid *proto.Raid, expectedStats stats.Stats)
- func Clamp(val float64, min float64, max float64) float64
- func ColorIntersects(g proto.GemColor, o proto.GemColor) bool
- func CompareConcurrentSimResultsTest(t *testing.T, testName string, singleThreadRes *proto.RaidSimResult, ...)
- func ComputeStats(csr *proto.ComputeStatsRequest) *proto.ComputeStatsResult
- func DebugCompareLogs(rsr *proto.RaidSimRequest, showCount int) (bool, string)
- func DisableDamageDoneByCaster(index int, attackTable *AttackTable)
- func DurationFromSeconds(numSeconds float64) time.Duration
- func EnableDamageDoneByCaster(index int, maxIndex int, attackTable *AttackTable, ...)
- func EquipmentSpecFromJsonString(jsonString string) *proto.EquipmentSpec
- func FillTalentsProto(data protoreflect.Message, talentsStr string, treeSizes [3]int)
- func FilterMap[K comparable, V any](src map[K]V, f func(K, V) bool) map[K]V
- func FilterSlice[T any](src []T, f func(T) bool) []T
- func Flatten[T any](src [][]T) []T
- func FocusMagicAura(caster *Unit, target *Unit) (*Aura, *Aura)
- func GetClassSpellScalingCoefficient(class proto.Class) float64
- func GetPrimaryTalentTreeIndex(talentStr string) uint8
- func GetTristateValueFloat(effect proto.TristateEffect, regularValue float64, impValue float64) float64
- func GetTristateValueInt32(effect proto.TristateEffect, regularValue int32, impValue int32) int32
- func HasEnchantEffect(id int32) bool
- func HasItemEffect(id int32) bool
- func HasItemEffectForTest(id int32) bool
- func HasWeaponEffect(id int32) bool
- func InnervateManaThreshold(character *Character) float64
- func ItemEquipmentStats(item Item) stats.Stats
- func ItemTypeToSlot(it proto.ItemType) proto.ItemSlot
- func MakeSingleTargetEncounter(variation float64) *proto.Encounter
- func MakeTristateValue(hasRegular bool, hasImproved bool) proto.TristateEffect
- func MapMap[KI comparable, VI any, KO comparable, VO any](src map[KI]VI, f func(KI, VI) (KO, VO)) map[KO]VO
- func MapSlice[I any, O any](src []I, f func(I) O) []O
- func MasteryRatingToMasteryPoints(masteryRating float64) float64
- func MaxTimeToReady(t1 *Timer, t2 *Timer, sim *Simulation) time.Duration
- func NewDefaultTarget() *proto.Target
- func NewEnchantEffect(id int32, enchantEffect ApplyEffect)
- func NewItemEffect(id int32, itemEffect ApplyEffect)
- func NewSimpleStatDefensiveTrinketEffect(itemID int32, bonus stats.Stats, duration time.Duration, ...)
- func NewSimpleStatItemActiveEffect(itemID int32, bonus stats.Stats, duration time.Duration, ...)
- func NewSimpleStatItemEffect(itemID int32, bonus stats.Stats, duration time.Duration, ...)
- func NewSimpleStatOffensiveTrinketEffect(itemID int32, bonus stats.Stats, duration time.Duration, ...)
- func NewSimpleStatOffensiveTrinketEffectWithOtherEffects(itemID int32, bonus stats.Stats, duration time.Duration, ...)
- func PlayerProtoToSpec(player *proto.Player) proto.Spec
- func RaidBenchmark(b *testing.B, rsr *proto.RaidSimRequest)
- func RaidPlayersWithClass(raid *proto.Raid, class proto.Class) []*proto.Player
- func RaidSimTest(label string, t *testing.T, rsr *proto.RaidSimRequest, expectedDps float64)
- func ReforgeStatToProto(stat ReforgeStat) *proto.ReforgeStat
- func RegisterAgentFactory(emptyOptions interface{}, spec proto.Spec, factory AgentFactory, ...)
- func RegisterTemporaryStatsOnUseCD(character *Character, auraLabel string, tempStats stats.Stats, ...)
- func RunBulkSim(request *proto.BulkSimRequest) *proto.BulkSimResult
- func RunBulkSimAsync(ctx context.Context, request *proto.BulkSimRequest, ...)
- func RunConcurrentRaidSimAsync(request *proto.RaidSimRequest, progress chan *proto.ProgressMetrics)
- func RunConcurrentRaidSimSync(request *proto.RaidSimRequest) *proto.RaidSimResult
- func RunRaidSim(request *proto.RaidSimRequest) *proto.RaidSimResult
- func RunRaidSimAsync(request *proto.RaidSimRequest, progress chan *proto.ProgressMetrics)
- func RunSim(rsr *proto.RaidSimRequest, progress chan *proto.ProgressMetrics, ...) *proto.RaidSimResult
- func RunTestSuite(t *testing.T, suiteName string, generator TestGenerator)
- func ScheduledMajorArmorAura(aura *Aura, options PeriodicActionOptions, raid *proto.Raid)
- func SinglePlayerRaidProto(player *proto.Player, partyBuffs *proto.PartyBuffs, raidBuffs *proto.RaidBuffs, ...) *proto.Raid
- func StatWeights(request *proto.StatWeightsRequest) *proto.StatWeightsResult
- func StatWeightsAsync(request *proto.StatWeightsRequest, progress chan *proto.ProgressMetrics)
- func StatWeightsTest(label string, t *testing.T, _swr *proto.StatWeightsRequest, ...)
- func Ternary[T any](condition bool, val1 T, val2 T) T
- func TernaryDuration(condition bool, val1 time.Duration, val2 time.Duration) time.Duration
- func TernaryFloat64(condition bool, val1 float64, val2 float64) float64
- func TernaryInt(condition bool, val1 int, val2 int) int
- func TernaryInt32(condition bool, val1 int32, val2 int32) int32
- func TernaryInt64(condition bool, val1 int64, val2 int64) int64
- func UnitLevelFloat64(unitLevel int32, maxLevelPlus0Val float64, maxLevelPlus1Val float64, ...) float64
- func UpdateVengeance(sim *Simulation, character *Character, tracker *VengeanceTracker, aura *Aura)
- func WithSpec(player *proto.Player, spec interface{}) *proto.Player
- func WithinToleranceFloat64(expectedValue float64, actualValue float64, tolerance float64) bool
- type AIFactory
- type APLAction
- func (action *APLAction) Execute(sim *Simulation)
- func (action *APLAction) Finalize(rot *APLRotation)
- func (action *APLAction) GetAllAPLValues() []APLValue
- func (action *APLAction) GetAllActions() []*APLAction
- func (action *APLAction) GetAllSpells() []*Spell
- func (action *APLAction) IsReady(sim *Simulation) bool
- func (action *APLAction) String() string
- type APLActionActivateAura
- func (action *APLActionActivateAura) Execute(sim *Simulation)
- func (impl APLActionActivateAura) Finalize(*APLRotation)
- func (impl APLActionActivateAura) GetAPLValues() []APLValue
- func (impl APLActionActivateAura) GetInnerActions() []*APLAction
- func (impl APLActionActivateAura) GetNextAction(*Simulation) *APLAction
- func (action *APLActionActivateAura) IsReady(sim *Simulation) bool
- func (impl APLActionActivateAura) Reset(*Simulation)
- func (action *APLActionActivateAura) String() string
- type APLActionAutocastOtherCooldowns
- func (action *APLActionAutocastOtherCooldowns) Execute(sim *Simulation)
- func (impl APLActionAutocastOtherCooldowns) Finalize(*APLRotation)
- func (impl APLActionAutocastOtherCooldowns) GetAPLValues() []APLValue
- func (impl APLActionAutocastOtherCooldowns) GetInnerActions() []*APLAction
- func (impl APLActionAutocastOtherCooldowns) GetNextAction(*Simulation) *APLAction
- func (action *APLActionAutocastOtherCooldowns) IsReady(sim *Simulation) bool
- func (action *APLActionAutocastOtherCooldowns) Reset(*Simulation)
- func (action *APLActionAutocastOtherCooldowns) String() string
- type APLActionCancelAura
- func (action *APLActionCancelAura) Execute(sim *Simulation)
- func (impl APLActionCancelAura) Finalize(*APLRotation)
- func (impl APLActionCancelAura) GetAPLValues() []APLValue
- func (impl APLActionCancelAura) GetInnerActions() []*APLAction
- func (impl APLActionCancelAura) GetNextAction(*Simulation) *APLAction
- func (action *APLActionCancelAura) IsReady(sim *Simulation) bool
- func (impl APLActionCancelAura) Reset(*Simulation)
- func (action *APLActionCancelAura) String() string
- type APLActionCastFriendlySpell
- func (action *APLActionCastFriendlySpell) Execute(sim *Simulation)
- func (impl APLActionCastFriendlySpell) Finalize(*APLRotation)
- func (impl APLActionCastFriendlySpell) GetAPLValues() []APLValue
- func (impl APLActionCastFriendlySpell) GetInnerActions() []*APLAction
- func (impl APLActionCastFriendlySpell) GetNextAction(*Simulation) *APLAction
- func (action *APLActionCastFriendlySpell) IsReady(sim *Simulation) bool
- func (impl APLActionCastFriendlySpell) Reset(*Simulation)
- func (action *APLActionCastFriendlySpell) String() string
- type APLActionCastSpell
- func (action *APLActionCastSpell) Execute(sim *Simulation)
- func (impl APLActionCastSpell) Finalize(*APLRotation)
- func (impl APLActionCastSpell) GetAPLValues() []APLValue
- func (impl APLActionCastSpell) GetInnerActions() []*APLAction
- func (impl APLActionCastSpell) GetNextAction(*Simulation) *APLAction
- func (action *APLActionCastSpell) IsReady(sim *Simulation) bool
- func (impl APLActionCastSpell) Reset(*Simulation)
- func (action *APLActionCastSpell) String() string
- type APLActionChangeTarget
- func (action *APLActionChangeTarget) Execute(sim *Simulation)
- func (impl APLActionChangeTarget) Finalize(*APLRotation)
- func (impl APLActionChangeTarget) GetAPLValues() []APLValue
- func (impl APLActionChangeTarget) GetInnerActions() []*APLAction
- func (impl APLActionChangeTarget) GetNextAction(*Simulation) *APLAction
- func (action *APLActionChangeTarget) IsReady(sim *Simulation) bool
- func (impl APLActionChangeTarget) Reset(*Simulation)
- func (action *APLActionChangeTarget) String() string
- type APLActionChannelSpell
- func (action *APLActionChannelSpell) Execute(sim *Simulation)
- func (impl APLActionChannelSpell) Finalize(*APLRotation)
- func (action *APLActionChannelSpell) GetAPLValues() []APLValue
- func (impl APLActionChannelSpell) GetInnerActions() []*APLAction
- func (impl APLActionChannelSpell) GetNextAction(*Simulation) *APLAction
- func (action *APLActionChannelSpell) IsReady(sim *Simulation) bool
- func (impl APLActionChannelSpell) Reset(*Simulation)
- func (action *APLActionChannelSpell) String() string
- type APLActionCustomRotation
- func (action *APLActionCustomRotation) Execute(sim *Simulation)
- func (impl APLActionCustomRotation) Finalize(*APLRotation)
- func (impl APLActionCustomRotation) GetAPLValues() []APLValue
- func (impl APLActionCustomRotation) GetInnerActions() []*APLAction
- func (impl APLActionCustomRotation) GetNextAction(*Simulation) *APLAction
- func (action *APLActionCustomRotation) IsReady(sim *Simulation) bool
- func (action *APLActionCustomRotation) Reset(sim *Simulation)
- func (action *APLActionCustomRotation) String() string
- type APLActionImpl
- type APLActionItemSwap
- func (action *APLActionItemSwap) Execute(sim *Simulation)
- func (impl APLActionItemSwap) Finalize(*APLRotation)
- func (impl APLActionItemSwap) GetAPLValues() []APLValue
- func (impl APLActionItemSwap) GetInnerActions() []*APLAction
- func (impl APLActionItemSwap) GetNextAction(*Simulation) *APLAction
- func (action *APLActionItemSwap) IsReady(sim *Simulation) bool
- func (impl APLActionItemSwap) Reset(*Simulation)
- func (action *APLActionItemSwap) String() string
- type APLActionMove
- func (action *APLActionMove) Execute(sim *Simulation)
- func (impl APLActionMove) Finalize(*APLRotation)
- func (impl APLActionMove) GetAPLValues() []APLValue
- func (impl APLActionMove) GetInnerActions() []*APLAction
- func (impl APLActionMove) GetNextAction(*Simulation) *APLAction
- func (action *APLActionMove) IsReady(sim *Simulation) bool
- func (impl APLActionMove) Reset(*Simulation)
- func (action *APLActionMove) String() string
- type APLActionMoveDuration
- func (action *APLActionMoveDuration) Execute(sim *Simulation)
- func (impl APLActionMoveDuration) Finalize(*APLRotation)
- func (impl APLActionMoveDuration) GetAPLValues() []APLValue
- func (impl APLActionMoveDuration) GetInnerActions() []*APLAction
- func (impl APLActionMoveDuration) GetNextAction(*Simulation) *APLAction
- func (action *APLActionMoveDuration) IsReady(sim *Simulation) bool
- func (impl APLActionMoveDuration) Reset(*Simulation)
- func (action *APLActionMoveDuration) String() string
- type APLActionMultidot
- func (action *APLActionMultidot) Execute(sim *Simulation)
- func (impl APLActionMultidot) Finalize(*APLRotation)
- func (action *APLActionMultidot) GetAPLValues() []APLValue
- func (impl APLActionMultidot) GetInnerActions() []*APLAction
- func (impl APLActionMultidot) GetNextAction(*Simulation) *APLAction
- func (action *APLActionMultidot) IsReady(sim *Simulation) bool
- func (action *APLActionMultidot) Reset(*Simulation)
- func (action *APLActionMultidot) String() string
- type APLActionMultishield
- func (action *APLActionMultishield) Execute(sim *Simulation)
- func (impl APLActionMultishield) Finalize(*APLRotation)
- func (action *APLActionMultishield) GetAPLValues() []APLValue
- func (impl APLActionMultishield) GetInnerActions() []*APLAction
- func (impl APLActionMultishield) GetNextAction(*Simulation) *APLAction
- func (action *APLActionMultishield) IsReady(sim *Simulation) bool
- func (action *APLActionMultishield) Reset(*Simulation)
- func (action *APLActionMultishield) String() string
- type APLActionResetSequence
- func (action *APLActionResetSequence) Execute(sim *Simulation)
- func (action *APLActionResetSequence) Finalize(rot *APLRotation)
- func (impl APLActionResetSequence) GetAPLValues() []APLValue
- func (impl APLActionResetSequence) GetInnerActions() []*APLAction
- func (impl APLActionResetSequence) GetNextAction(*Simulation) *APLAction
- func (action *APLActionResetSequence) IsReady(sim *Simulation) bool
- func (impl APLActionResetSequence) Reset(*Simulation)
- func (action *APLActionResetSequence) String() string
- type APLActionSchedule
- func (action *APLActionSchedule) Execute(sim *Simulation)
- func (impl APLActionSchedule) Finalize(*APLRotation)
- func (impl APLActionSchedule) GetAPLValues() []APLValue
- func (action *APLActionSchedule) GetInnerActions() []*APLAction
- func (impl APLActionSchedule) GetNextAction(*Simulation) *APLAction
- func (action *APLActionSchedule) IsReady(sim *Simulation) bool
- func (action *APLActionSchedule) Reset(*Simulation)
- func (action *APLActionSchedule) String() string
- type APLActionSequence
- func (action *APLActionSequence) Execute(sim *Simulation)
- func (action *APLActionSequence) Finalize(rot *APLRotation)
- func (impl APLActionSequence) GetAPLValues() []APLValue
- func (action *APLActionSequence) GetInnerActions() []*APLAction
- func (impl APLActionSequence) GetNextAction(*Simulation) *APLAction
- func (action *APLActionSequence) IsReady(sim *Simulation) bool
- func (action *APLActionSequence) Reset(*Simulation)
- func (action *APLActionSequence) String() string
- type APLActionStrictSequence
- func (action *APLActionStrictSequence) Execute(sim *Simulation)
- func (action *APLActionStrictSequence) Finalize(rot *APLRotation)
- func (impl APLActionStrictSequence) GetAPLValues() []APLValue
- func (action *APLActionStrictSequence) GetInnerActions() []*APLAction
- func (action *APLActionStrictSequence) GetNextAction(sim *Simulation) *APLAction
- func (action *APLActionStrictSequence) IsReady(sim *Simulation) bool
- func (action *APLActionStrictSequence) Reset(*Simulation)
- func (action *APLActionStrictSequence) String() string
- type APLActionTriggerICD
- func (action *APLActionTriggerICD) Execute(sim *Simulation)
- func (impl APLActionTriggerICD) Finalize(*APLRotation)
- func (impl APLActionTriggerICD) GetAPLValues() []APLValue
- func (impl APLActionTriggerICD) GetInnerActions() []*APLAction
- func (impl APLActionTriggerICD) GetNextAction(*Simulation) *APLAction
- func (action *APLActionTriggerICD) IsReady(sim *Simulation) bool
- func (impl APLActionTriggerICD) Reset(*Simulation)
- func (action *APLActionTriggerICD) String() string
- type APLActionWait
- func (action *APLActionWait) Execute(sim *Simulation)
- func (impl APLActionWait) Finalize(*APLRotation)
- func (action *APLActionWait) GetAPLValues() []APLValue
- func (impl APLActionWait) GetInnerActions() []*APLAction
- func (action *APLActionWait) GetNextAction(sim *Simulation) *APLAction
- func (action *APLActionWait) IsReady(sim *Simulation) bool
- func (impl APLActionWait) Reset(*Simulation)
- func (action *APLActionWait) String() string
- type APLActionWaitUntil
- func (action *APLActionWaitUntil) Execute(sim *Simulation)
- func (impl APLActionWaitUntil) Finalize(*APLRotation)
- func (action *APLActionWaitUntil) GetAPLValues() []APLValue
- func (impl APLActionWaitUntil) GetInnerActions() []*APLAction
- func (action *APLActionWaitUntil) GetNextAction(sim *Simulation) *APLAction
- func (action *APLActionWaitUntil) IsReady(sim *Simulation) bool
- func (impl APLActionWaitUntil) Reset(*Simulation)
- func (action *APLActionWaitUntil) String() string
- type APLRotation
- func (apl *APLRotation) DoNextAction(sim *Simulation)
- func (rot *APLRotation) GetAPLAura(sourceUnit UnitReference, auraId *proto.ActionID) AuraReference
- func (rot *APLRotation) GetAPLDot(targetUnit UnitReference, spellId *proto.ActionID) *Dot
- func (rot *APLRotation) GetAPLICDAura(sourceUnit UnitReference, auraId *proto.ActionID) AuraReference
- func (rot *APLRotation) GetAPLMultidotSpell(spellId *proto.ActionID) *Spell
- func (rot *APLRotation) GetAPLMultishieldSpell(spellId *proto.ActionID) *Spell
- func (rot *APLRotation) GetAPLSpell(spellId *proto.ActionID) *Spell
- func (rot *APLRotation) GetSourceUnit(ref *proto.UnitReference) UnitReference
- func (rot *APLRotation) GetTargetAPLSpell(spellId *proto.ActionID, targetUnit UnitReference) *Spell
- func (rot *APLRotation) GetTargetUnit(ref *proto.UnitReference) UnitReference
- func (rot *APLRotation) ValidationWarning(message string, vals ...interface{})
- type APLValue
- type APLValueAnd
- type APLValueAuraICDIsReadyWithReactionTime
- type APLValueAuraInternalCooldown
- type APLValueAuraIsActive
- type APLValueAuraIsActiveWithReactionTime
- type APLValueAuraIsKnown
- type APLValueAuraNumStacks
- type APLValueAuraRemainingTime
- type APLValueAuraShouldRefresh
- type APLValueAutoTimeToNext
- type APLValueBossSpellIsCasting
- type APLValueBossSpellTimeToReady
- type APLValueChannelClipDelay
- type APLValueCoerced
- func (value *APLValueCoerced) GetBool(sim *Simulation) bool
- func (value APLValueCoerced) GetDuration(sim *Simulation) time.Duration
- func (value APLValueCoerced) GetFloat(sim *Simulation) float64
- func (value *APLValueCoerced) GetInnerValues() []APLValue
- func (value APLValueCoerced) GetInt(sim *Simulation) int32
- func (value APLValueCoerced) GetString(sim *Simulation) string
- func (value *APLValueCoerced) String() string
- func (value *APLValueCoerced) Type() proto.APLValueType
- type APLValueCompare
- type APLValueConst
- func (value *APLValueConst) GetBool(_ *Simulation) bool
- func (value *APLValueConst) GetDuration(_ *Simulation) time.Duration
- func (value *APLValueConst) GetFloat(_ *Simulation) float64
- func (value *APLValueConst) GetInt(_ *Simulation) int32
- func (value *APLValueConst) GetString(_ *Simulation) string
- func (value *APLValueConst) String() string
- func (value *APLValueConst) Type() proto.APLValueType
- type APLValueCurrentComboPoints
- type APLValueCurrentEnergy
- type APLValueCurrentFocus
- type APLValueCurrentHealth
- type APLValueCurrentHealthPercent
- type APLValueCurrentMana
- type APLValueCurrentManaPercent
- type APLValueCurrentNonDeathRuneCount
- type APLValueCurrentRage
- type APLValueCurrentRuneActive
- type APLValueCurrentRuneCount
- type APLValueCurrentRuneDeath
- type APLValueCurrentRunicPower
- type APLValueCurrentTime
- type APLValueCurrentTimePercent
- type APLValueDotIsActive
- type APLValueDotRemainingTime
- type APLValueDotTickFrequency
- type APLValueFrontOfTarget
- type APLValueGCDIsReady
- type APLValueGCDTimeToReady
- type APLValueInputDelay
- type APLValueIsExecutePhase
- type APLValueMath
- func (value *APLValueMath) GetDuration(sim *Simulation) time.Duration
- func (value *APLValueMath) GetFloat(sim *Simulation) float64
- func (value *APLValueMath) GetInnerValues() []APLValue
- func (value *APLValueMath) GetInt(sim *Simulation) int32
- func (value *APLValueMath) String() string
- func (value *APLValueMath) Type() proto.APLValueType
- type APLValueMax
- func (value *APLValueMax) GetDuration(sim *Simulation) time.Duration
- func (value *APLValueMax) GetFloat(sim *Simulation) float64
- func (value *APLValueMax) GetInnerValues() []APLValue
- func (value *APLValueMax) GetInt(sim *Simulation) int32
- func (value *APLValueMax) String() string
- func (value *APLValueMax) Type() proto.APLValueType
- type APLValueMin
- func (value *APLValueMin) GetDuration(sim *Simulation) time.Duration
- func (value *APLValueMin) GetFloat(sim *Simulation) float64
- func (value *APLValueMin) GetInnerValues() []APLValue
- func (value *APLValueMin) GetInt(sim *Simulation) int32
- func (value *APLValueMin) String() string
- func (value *APLValueMin) Type() proto.APLValueType
- type APLValueNextRuneCooldown
- type APLValueNot
- type APLValueNumberTargets
- type APLValueOr
- type APLValueRemainingTime
- type APLValueRemainingTimePercent
- type APLValueRuneCooldown
- type APLValueRuneSlotCooldown
- type APLValueSequenceIsComplete
- type APLValueSequenceIsReady
- type APLValueSequenceTimeToReady
- type APLValueSpellCPM
- type APLValueSpellCanCast
- type APLValueSpellCastTime
- type APLValueSpellChanneledTicks
- type APLValueSpellCurrentCost
- type APLValueSpellIsChanneling
- type APLValueSpellIsKnown
- type APLValueSpellIsReady
- type APLValueSpellTimeToReady
- type APLValueSpellTravelTime
- type APLValueUnitIsMoving
- type ActionID
- func (actionID ActionID) IsEmptyAction() bool
- func (actionID ActionID) IsItemAction(itemID int32) bool
- func (actionID ActionID) IsOtherAction(otherID proto.OtherAction) bool
- func (actionID ActionID) IsSpellAction(spellID int32) bool
- func (actionID ActionID) SameAction(other ActionID) bool
- func (actionID ActionID) SameActionIgnoreTag(other ActionID) bool
- func (actionID ActionID) String() string
- func (actionID ActionID) ToProto() *proto.ActionID
- func (actionID ActionID) WithTag(tag int32) ActionID
- type ActionMetrics
- type ActionPriority
- type ActiveSetBonus
- type Agent
- type AgentFactory
- type ApplyEffect
- type ApplySpellResults
- type ApplyWeaponEffect
- type AttackTable
- type Aura
- func AbominationsMightAura(unit *Unit) *Aura
- func AcidSpitAura(target *Unit) *Aura
- func ArcaneBrilliance(unit *Unit) *Aura
- func ArcaneTactics(unit *Unit) *Aura
- func AspectOfTheWildAura(unit *Unit) *Aura
- func BattleShoutAura(unit *Unit, asExternal bool, withGlyph bool) *Aura
- func BlessingOfKingsAura(unit *Unit) *Aura
- func BlessingOfMightAura(unit *Unit) *Aura
- func BloodFrenzyAura(target *Unit, points int32) *Aura
- func BloodPactAura(unit *Unit) *Aura
- func BloodlustAura(character *Character, actionTag int32) *Aura
- func CommandingShoutAura(unit *Unit, asExternal bool, withGlyph bool) *Aura
- func Communion(unit *Unit) *Aura
- func CorrosiveSpitAura(target *Unit) *Aura
- func CriticalMassAura(target *Unit) *Aura
- func CrystalYieldAura(target *Unit) *Aura
- func CurseOfElementsAura(target *Unit) *Aura
- func CurseOfWeaknessAura(target *Unit) *Aura
- func DarkIntentAura(unit *Unit, isWarlock bool) *Aura
- func DemonicPact(unit *Unit) *Aura
- func DemoralizingRoarAura(target *Unit) *Aura
- func DemoralizingScreechAura(target *Unit) *Aura
- func DemoralizingShoutAura(target *Unit, glyph bool) *Aura
- func DevotionAura(unit *Unit) *Aura
- func DivineGuardianAura(character *Character, actionTag int32) *Aura
- func DrumsOfTheBurningWildAura(unit *Unit) *Aura
- func DustCloud(target *Unit) *Aura
- func EarthAndMoonAura(target *Unit) *Aura
- func EbonPlaguebringerAura(caster *Character, target *Unit, epidemicPoints int32, ...) *Aura
- func ElementalOath(unit *Unit) *Aura
- func ElementalResistanceTotemAura(unit *Unit) *Aura
- func ExposeArmorAura(target *Unit, hasGlyph bool) *Aura
- func FaerieFireAura(target *Unit) *Aura
- func FelIntelligence(unit *Unit) *Aura
- func FerociousInspiration(unit *Unit) *Aura
- func FireBreathDebuff(target *Unit) *Aura
- func FlametongueTotem(unit *Unit) *Aura
- func FrostFeverAura(target *Unit, britleBones int32) *Aura
- func FuriousHowl(unit *Unit) *Aura
- func GuardianSpiritAura(character *Character, actionTag int32) *Aura
- func HandOfSacrificeAura(character *Character, actionTag int32) *Aura
- func HemorrhageAura(target *Unit) *Aura
- func HonorAmongThieves(unit *Unit) *Aura
- func HornOfWinterAura(unit *Unit, asExternal bool, withGlyph bool) *Aura
- func HuntersMarkAura(target *Unit) *Aura
- func HuntingParty(unit *Unit) *Aura
- func IcyTalons(unit *Unit) *Aura
- func InfectedWoundsAura(target *Unit, points int32) *Aura
- func InnervateAura(character *Character, actionTag int32, reg float64) *Aura
- func InsectSwarmAura(target *Unit) *Aura
- func InspirationAura(unit *Unit, points int32) *Aura
- func JudgementsOfTheJustAura(target *Unit, points int32) *Aura
- func LeaderOfThePack(unit *Unit) *Aura
- func LightningBreath(target *Unit) *Aura
- func MakePermanent(aura *Aura) *Aura
- func MakeProcTriggerAura(unit *Unit, config ProcTrigger) *Aura
- func MakeStackingAura(character *Character, config StackingStatAura) *Aura
- func ManaSpringTotem(unit *Unit) *Aura
- func ManaTideTotemAura(character *Character, actionTag int32) *Aura
- func MangleAura(target *Unit) *Aura
- func MarkOfBloodAura(target *Unit) *Aura
- func MarkOfTheWildAura(unit *Unit) *Aura
- func MasterPoisonerDebuff(target *Unit) *Aura
- func MoonkinAura(unit *Unit) *Aura
- func PainSuppressionAura(character *Character, actionTag int32) *Aura
- func PowerInfusionAura(character *Unit, actionTag int32) *Aura
- func PowerWordFortitudeAura(unit *Unit) *Aura
- func Rampage(unit *Unit) *Aura
- func ResistanceAura(unit *Unit) *Aura
- func RetributionAura(unit *Unit) *Aura
- func RoarOfCourageAura(unit *Unit) *Aura
- func SavageCombatAura(target *Unit, points int32) *Aura
- func ScarletFeverAura(target *Unit, points int32, epidemic int32) *Aura
- func ShadowAndFlameAura(target *Unit) *Aura
- func ShadowFormAura(unit *Unit) *Aura
- func ShadowProtectionAura(unit *Unit) *Aura
- func ShatteringThrowAura(target *Unit) *Aura
- func StampedeAura(target *Unit) *Aura
- func StoneskinTotem(unit *Unit) *Aura
- func StrengthOfEarthTotemAura(unit *Unit) *Aura
- func SunderArmorAura(target *Unit) *Aura
- func TerrifyingRoar(unit *Unit) *Aura
- func ThunderClapAura(target *Unit) *Aura
- func TotemicWrath(unit *Unit) *Aura
- func TraumaAura(target *Unit, points int32) *Aura
- func TricksOfTheTradeAura(character *Unit, actionTag int32, glyphed bool) *Aura
- func TrueShotAura(unit *Unit) *Aura
- func UnholyFrenzyAura(character *Unit, actionTag int32) *Aura
- func UnleashedRageAura(unit *Unit) *Aura
- func VindicationAura(target *Unit) *Aura
- func WindfuryTotem(unit *Unit) *Aura
- func WrathOfAirAura(unit *Unit) *Aura
- func (aura *Aura) Activate(sim *Simulation)
- func (aura *Aura) AddStack(sim *Simulation)
- func (aura *Aura) ApplyOnExpire(newOnExpire OnExpire)
- func (aura *Aura) ApplyOnGain(newOnGain OnGain)
- func (aura *Aura) Deactivate(sim *Simulation)
- func (aura *Aura) ExpiresAt() time.Duration
- func (aura *Aura) GetStacks() int32
- func (aura *Aura) IsActive() bool
- func (aura *Aura) NewExclusiveEffect(categoryName string, singleAura bool, config ExclusiveEffect) *ExclusiveEffect
- func (aura *Aura) Refresh(sim *Simulation)
- func (aura *Aura) RemainingDuration(sim *Simulation) time.Duration
- func (aura *Aura) RemoveStack(sim *Simulation)
- func (aura *Aura) SetStacks(sim *Simulation, newStacks int32)
- func (aura *Aura) ShouldRefreshExclusiveEffects(sim *Simulation, refreshWindow time.Duration) bool
- func (aura *Aura) StartedAt() time.Duration
- func (aura *Aura) TimeActive(sim *Simulation) time.Duration
- func (aura *Aura) UpdateExpires(newExpires time.Duration)
- type AuraArray
- type AuraCallback
- type AuraFactory
- type AuraMetrics
- type AuraReference
- type AutoAttackOptions
- type AutoAttacks
- func (aa *AutoAttacks) CancelAutoSwing(sim *Simulation)
- func (aa *AutoAttacks) CancelMeleeSwing(sim *Simulation)
- func (aa *AutoAttacks) CancelRangedSwing(sim *Simulation)
- func (aa *AutoAttacks) DelayMeleeBy(sim *Simulation, delay time.Duration)
- func (aa *AutoAttacks) DelayRangedUntil(sim *Simulation, readyAt time.Duration)
- func (aa *AutoAttacks) EnableAutoSwing(sim *Simulation)
- func (aa *AutoAttacks) EnableMeleeSwing(sim *Simulation)
- func (aa *AutoAttacks) EnableRangedSwing(sim *Simulation)
- func (aa *AutoAttacks) MH() *Weapon
- func (aa *AutoAttacks) MHAuto() *Spell
- func (aa *AutoAttacks) MHConfig() *SpellConfig
- func (aa *AutoAttacks) MainhandSwingSpeed() time.Duration
- func (aa *AutoAttacks) MaybeReplaceMHSwing(sim *Simulation, mhSwingSpell *Spell) *Spell
- func (aa *AutoAttacks) NewPPMManager(ppm float64, procMask ProcMask) PPMManager
- func (aa *AutoAttacks) NextAttackAt() time.Duration
- func (aa *AutoAttacks) OH() *Weapon
- func (aa *AutoAttacks) OHAuto() *Spell
- func (aa *AutoAttacks) OHConfig() *SpellConfig
- func (aa *AutoAttacks) OffhandSwingAt() time.Duration
- func (aa *AutoAttacks) OffhandSwingSpeed() time.Duration
- func (aa *AutoAttacks) PPMProc(sim *Simulation, ppm float64, procMask ProcMask, label string, spell *Spell) bool
- func (aa *AutoAttacks) PauseMeleeBy(sim *Simulation, pauseTime time.Duration)
- func (aa *AutoAttacks) Ranged() *Weapon
- func (aa *AutoAttacks) RangedAuto() *Spell
- func (aa *AutoAttacks) RangedConfig() *SpellConfig
- func (aa *AutoAttacks) SetMH(weapon Weapon)
- func (aa *AutoAttacks) SetOH(weapon Weapon)
- func (aa *AutoAttacks) SetOffhandSwingAt(offhandSwingAt time.Duration)
- func (aa *AutoAttacks) SetRanged(weapon Weapon)
- func (aa *AutoAttacks) SetReplaceMHSwing(replaceSwing ReplaceMHSwing)
- func (aa *AutoAttacks) StopMeleeUntil(sim *Simulation, readyAt time.Duration, desyncOH bool)
- func (aa *AutoAttacks) StopRangedUntil(sim *Simulation, readyAt time.Duration)
- func (aa *AutoAttacks) UpdateSwingTimers(sim *Simulation)
- type BaseStatsKey
- type BuffConfig
- type BuffsCombo
- type CanCastCondition
- type Cast
- type CastConfig
- type CastFunc
- type CastSuccessFunc
- type Character
- func (eb *Character) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
- func (eb *Character) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Character) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mcdm *Character) AddMajorCooldown(mcd MajorCooldown)
- func (character *Character) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
- func (character *Character) AddPet(pet PetAgent)
- func (rb *Character) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (character *Character) AddRaidBuffs(_ *proto.RaidBuffs)
- func (rp *Character) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Character) Advance(sim *Simulation, newTime time.Duration)
- func (rp *Character) AllRunesSpent() bool
- func (rp *Character) AnyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Character) AnySpentRuneReadyAt() time.Duration
- func (character *Character) ApplyArmorSpecializationEffect(primaryStat stats.Stat, armorType proto.ArmorType)
- func (character *Character) ApplyDynamicEquipScaling(sim *Simulation, stat stats.Stat, multiplier float64)
- func (character *Character) ApplyEquipScaling(stat stats.Stat, multiplier float64)
- func (rp *Character) BloodDeathRuneBothReadyAt() time.Duration
- func (rp *Character) BloodRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Character) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
- func (char *Character) CalcAndRollDamageRange(sim *Simulation, coefficient float64, variance float64) float64
- func (char *Character) CalcScalingSpellDmg(spellEffectCoefficient float64) float64
- func (character *Character) CalculateMasteryPoints() float64
- func (rp *Character) CancelBloodTap(sim *Simulation)
- func (eb *Character) ComboPoints() int32
- func (rp *Character) ConvertFromDeath(sim *Simulation, slot int8)
- func (rp *Character) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
- func (rp *Character) CurrentBloodOrDeathRunes() int8
- func (rp *Character) CurrentBloodRunes() int8
- func (rp *Character) CurrentDeathRunes() int8
- func (eb *Character) CurrentEnergy() float64
- func (fb *Character) CurrentFocus() float64
- func (rp *Character) CurrentFrostOrDeathRunes() int8
- func (rp *Character) CurrentFrostRunes() int8
- func (hb *Character) CurrentHealth() float64
- func (hb *Character) CurrentHealthPercent() float64
- func (rb *Character) CurrentRage() float64
- func (rp *Character) CurrentRunicPower() float64
- func (rp *Character) CurrentUnholyOrDeathRunes() int8
- func (rp *Character) CurrentUnholyRunes() int8
- func (rp *Character) DeathRuneRegenAt(slot int32) time.Duration
- func (rp *Character) DeathRuneRevertAt() time.Duration
- func (rp *Character) DeathRunesInFU() int8
- func (rp *Character) DebugString() string
- func (character *Character) DefaultHealingCritMultiplier() float64
- func (character *Character) DefaultMeleeCritMultiplier() float64
- func (character *Character) DefaultSpellCritMultiplier() float64
- func (character *Character) EnableManaBar()
- func (character *Character) EnableManaBarWithModifier(modifier float64)
- func (mb *Character) EndOOMEvent(sim *Simulation)
- func (eb *Character) EnergyRegenPerSecond() float64
- func (character *Character) EquipStats() stats.Stats
- func (character *Character) FillPlayerStats(playerStats *proto.PlayerStats)
- func (character *Character) Finalize()
- func (fb *Character) FocusRegenPerSecond() float64
- func (fb *Character) FocusRegenPerTick() float64
- func (rp *Character) FrostRuneReadyAt(sim *Simulation) time.Duration
- func (hb *Character) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (at *Character) GetActiveAuraWithTag(tag string) *Aura
- func (character *Character) GetActiveSetBonusNames() []string
- func (character *Character) GetActiveSetBonuses() []ActiveSetBonus
- func (at *Character) GetAura(label string) *Aura
- func (at *Character) GetAuraByID(actionID ActionID) *Aura
- func (at *Character) GetAuras() []*Aura
- func (at *Character) GetAurasWithTag(tag string) []*Aura
- func (character *Character) GetBaseStats() stats.Stats
- func (character *Character) GetConjuredCD() *Timer
- func (character *Character) GetDefensiveTrinketCD() *Timer
- func (at *Character) GetIcdAuraByID(actionID ActionID) *Aura
- func (mcdm *Character) GetInitialMajorCooldown(actionID ActionID) MajorCooldown
- func (character *Character) GetMHWeapon() *Item
- func (mcdm *Character) GetMajorCooldown(actionID ActionID) *MajorCooldown
- func (mcdm *Character) GetMajorCooldownIDs() []*proto.ActionID
- func (mcdm *Character) GetMajorCooldownIgnoreTag(actionID ActionID) *MajorCooldown
- func (mcdm *Character) GetMajorCooldowns() []*MajorCooldown
- func (character *Character) GetMetricsProto() *proto.UnitMetrics
- func (character *Character) GetOHWeapon() *Item
- func (character *Character) GetOffensiveTrinketCD() *Timer
- func (character *Character) GetPresimOptions(playerConfig *proto.Player) *PresimOptions
- func (character *Character) GetProcMaskForEnchant(effectID int32) ProcMask
- func (character *Character) GetProcMaskForItem(itemID int32) ProcMask
- func (character *Character) GetProcMaskForTypes(weaponTypes ...proto.WeaponType) ProcMask
- func (character *Character) GetProcMaskForTypesAndHand(twohand bool, weaponTypes ...proto.WeaponType) ProcMask
- func (character *Character) GetPseudoStatsProto() []float64
- func (character *Character) GetRangedWeapon() *Item
- func (at *Character) HasActiveAura(label string) bool
- func (at *Character) HasActiveAuraWithTag(tag string) bool
- func (at *Character) HasActiveAuraWithTagExcludingAura(tag string, excludeAura *Aura) bool
- func (character *Character) HasAlchStone() bool
- func (at *Character) HasAura(label string) bool
- func (at *Character) HasAuraWithTag(tag string) bool
- func (character *Character) HasGlyph(glyphID int32) bool
- func (character *Character) HasMHWeapon() bool
- func (character *Character) HasMetaGemEquipped(gemID int32) bool
- func (character *Character) HasOHWeapon() bool
- func (character *Character) HasProfession(prof proto.Profession) bool
- func (character *Character) HasRangedWeapon() bool
- func (character *Character) HasRingEquipped(itemID int32) bool
- func (character *Character) HasSetBonus(set *ItemSet, numItems int32) bool
- func (character *Character) HasTrinketEquipped(itemID int32) bool
- func (character *Character) HealingCritMultiplier(primaryModifiers float64, secondaryModifiers float64) float64
- func (rp *Character) IsBloodTappedRune(slot int8) bool
- func (mb *Character) IsOOM() bool
- func (rp *Character) LeftBloodRuneReady() bool
- func (hb *Character) MaxHealth() float64
- func (eb *Character) MaximumEnergy() float64
- func (character *Character) MeetsArmorSpecializationRequirement(armorType proto.ArmorType) bool
- func (character *Character) MeleeCritMultiplier(primaryModifiers float64, secondaryModifiers float64) float64
- func (eb *Character) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
- func (fb *Character) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Character) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Character) MultiplyRunicRegen(multiply float64)
- func (character *Character) NewTemporaryStatsAura(auraLabel string, actionID ActionID, tempStats stats.Stats, ...) *Aura
- func (character *Character) NewTemporaryStatsAuraWrapped(auraLabel string, actionID ActionID, buffs stats.Stats, duration time.Duration, ...) *Aura
- func (rp *Character) NextBloodRuneReadyAt(sim *Simulation) time.Duration
- func (eb *Character) NextEnergyTickAt() time.Duration
- func (fb *Character) NextFocusTickAt() time.Duration
- func (rp *Character) NextFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Character) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Character) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Character) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
- func (rp *Character) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (at *Character) NumActiveAurasWithTag(tag string) int32
- func (at *Character) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
- func (at *Character) OnCastComplete(sim *Simulation, spell *Spell)
- func (at *Character) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Character) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (rp *Character) OptimalRuneCost(cost RuneCost) RuneCost
- func (rp *Character) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
- func (rp *Character) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
- func (character *Character) RegisterOnItemSwap(callback OnSwapItem)
- func (at *Character) RegisterResetEffect(resetEffect ResetEffect)
- func (character *Character) RemoveDynamicEquipScaling(sim *Simulation, stat stats.Stat, multiplier float64)
- func (character *Character) RemoveEquipScaling(stat stats.Stat, multiplier float64)
- func (hb *Character) RemoveHealth(sim *Simulation, amount float64)
- func (eb *Character) ResetEnergyTick(sim *Simulation)
- func (fb *Character) ResetFocusTick(sim *Simulation)
- func (rp *Character) RuneIsActive(slot int8) bool
- func (rp *Character) RuneIsDeath(slot int8) bool
- func (rp *Character) RuneReadyAt(sim *Simulation, slot int8) time.Duration
- func (rp *Character) SetPermanentDeathRunes(permanentDeaths []int8)
- func (rp *Character) SetRuneCd(runeCd time.Duration)
- func (character *Character) SpellCritMultiplier(primaryModifiers float64, secondaryModifiers float64) float64
- func (eb *Character) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
- func (eb *Character) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Character) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rb *Character) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Character) SpendRuneReadyAt(slot int8, spendAt time.Duration) time.Duration
- func (rp *Character) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mb *Character) StartOOMEvent(sim *Simulation, requiredMana float64)
- func (rp *Character) UnholyRuneReadyAt(sim *Simulation) time.Duration
- func (mcdm *Character) UpdateMajorCooldowns()
- func (eb *Character) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
- func (hb *Character) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
- func (character *Character) WeaponFromMainHand(critMultiplier float64) Weapon
- func (character *Character) WeaponFromOffHand(critMultiplier float64) Weapon
- func (character *Character) WeaponFromRanged(critMultiplier float64) Weapon
- type CharacterBuildPhase
- type CharacterIterationMetrics
- type CharacterSuiteConfig
- type CombinedTestGenerator
- type Cooldown
- type CooldownActivation
- type CooldownActivationCondition
- type CooldownType
- type DefaultAPLValueImpl
- func (impl DefaultAPLValueImpl) Finalize(*APLRotation)
- func (impl DefaultAPLValueImpl) GetBool(sim *Simulation) bool
- func (impl DefaultAPLValueImpl) GetDuration(sim *Simulation) time.Duration
- func (impl DefaultAPLValueImpl) GetFloat(sim *Simulation) float64
- func (impl DefaultAPLValueImpl) GetInnerValues() []APLValue
- func (impl DefaultAPLValueImpl) GetInt(sim *Simulation) int32
- func (impl DefaultAPLValueImpl) GetString(sim *Simulation) string
- type DelayedActionOptions
- type DistributionMetrics
- type Dot
- func (dot *Dot) Apply(sim *Simulation)
- func (dot *Dot) BaseDuration() time.Duration
- func (dot *Dot) CalcAndDealPeriodicSnapshotDamage(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
- func (dot *Dot) CalcAndDealPeriodicSnapshotHealing(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
- func (dot *Dot) CalcSnapshotDamage(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
- func (dot *Dot) CalcSnapshotHealing(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
- func (dot *Dot) CopyDotAndApply(sim *Simulation, originaldot *Dot)
- func (dot *Dot) DurationExtendSnapshot(sim *Simulation, extendBy time.Duration)
- func (dot *Dot) HastedTickCount() int32
- func (dot *Dot) NextTickAt() time.Duration
- func (dot *Dot) OutcomeExpectedMagicSnapshotCrit(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (dot *Dot) OutcomeMagicHitAndSnapshotCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (dot *Dot) OutcomeRangedHitAndCritSnapshot(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (dot *Dot) OutcomeSnapshotCrit(sim *Simulation, result *SpellResult, _ *AttackTable)
- func (dot *Dot) OutcomeTick(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (dot *Dot) OutcomeTickCounted(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (dot *Dot) OutcomeTickPhysicalCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (dot *Dot) OutstandingDmg() float64
- func (dot *Dot) RemainingTicks() int32
- func (dot *Dot) Snapshot(target *Unit, baseDamage float64)
- func (dot *Dot) SnapshotHeal(target *Unit, baseHealing float64)
- func (dot *Dot) SnapshotPhysical(target *Unit, baseDamage float64)
- func (dot *Dot) TakeSnapshot(sim *Simulation, doRollover bool)
- func (dot *Dot) TickCount() int32
- func (dot *Dot) TickOnce(sim *Simulation)
- func (dot *Dot) TickPeriod() time.Duration
- func (dot *Dot) TimeUntilNextTick(sim *Simulation) time.Duration
- type DotArray
- type DotConfig
- type DynamicDamageDoneByCaster
- type DynamicDamageTakenModifier
- type Enchant
- type Encounter
- type EncounterCombo
- type EnergyCost
- type EnergyCostOptions
- type Environment
- func (env *Environment) ActiveTargetUnits() []*Target
- func (env *Environment) GetAgentFromUnit(unit *Unit) Agent
- func (env *Environment) GetMaxDuration() time.Duration
- func (env *Environment) GetNumTargets() int32
- func (env *Environment) GetTarget(index int32) *Target
- func (env *Environment) GetTargetUnit(index int32) *Unit
- func (env *Environment) GetUnit(ref *proto.UnitReference, contextUnit *Unit) *Unit
- func (env *Environment) IsFinalized() bool
- func (env *Environment) NextTarget(target *Unit) *Target
- func (env *Environment) NextTargetUnit(target *Unit) *Unit
- func (env *Environment) PrepullStartTime() time.Duration
- func (env *Environment) RegisterPostFinalizeEffect(postFinalizeEffect PostFinalizeEffect)
- func (env *Environment) RegisterPreFinalizeEffect(preFinalizeEffect PostFinalizeEffect)
- type EnvironmentState
- type Equipment
- func (equipment *Equipment) Chest() *Item
- func (equipment *Equipment) EquipItem(item Item)
- func (equipment *Equipment) Feet() *Item
- func (equipment *Equipment) Finger1() *Item
- func (equipment *Equipment) Finger2() *Item
- func (equipment *Equipment) Hands() *Item
- func (equipment *Equipment) Head() *Item
- func (equipment *Equipment) Legs() *Item
- func (equipment *Equipment) MainHand() *Item
- func (equipment *Equipment) Neck() *Item
- func (equipment *Equipment) OffHand() *Item
- func (equipment *Equipment) Ranged() *Item
- func (equipment *Equipment) Shoulder() *Item
- func (equipment *Equipment) Stats() stats.Stats
- func (equipment *Equipment) ToEquipmentSpecProto() *proto.EquipmentSpec
- func (equipment *Equipment) Trinket1() *Item
- func (equipment *Equipment) Trinket2() *Item
- func (equipment *Equipment) Waist() *Item
- func (equipment *Equipment) Wrist() *Item
- type EquipmentSpec
- type ExclusiveCategory
- func (ec *ExclusiveCategory) AnyActive() bool
- func (ec *ExclusiveCategory) GetActiveAura() *Aura
- func (ec *ExclusiveCategory) GetActiveEffect() *ExclusiveEffect
- func (ec *ExclusiveCategory) GetHighestPrioActiveEffect() *ExclusiveEffect
- func (ec *ExclusiveCategory) SetActive(sim *Simulation, newActiveEffect *ExclusiveEffect)
- type ExclusiveCategoryArray
- type ExclusiveEffect
- func AtkSpeedReductionEffect(aura *Aura, speedMultiplier float64) *ExclusiveEffect
- func PhysDamageReductionEffect(aura *Aura, dmgReduction float64) *ExclusiveEffect
- func PhysDamageTakenEffect(aura *Aura, multiplier float64) *ExclusiveEffect
- func RegisterPercentDamageModifierEffect(aura *Aura, percentDamageModifier float64) *ExclusiveEffect
- type ExclusiveEffectManager
- type ExpectedDamageCalculator
- type FocusCost
- type FocusCostOptions
- type GearSetCombo
- type Gem
- type GetSpellpowerValue
- type GoRand
- type Hand
- type Hardcast
- type HitOutcome
- type IndividualTestSuite
- func (testSuite *IndividualTestSuite) Done(t *testing.T)
- func (testSuite *IndividualTestSuite) TestCasts(testName string, rsr *proto.RaidSimRequest)
- func (testSuite *IndividualTestSuite) TestCharacterStats(testName string, csr *proto.ComputeStatsRequest)
- func (testSuite *IndividualTestSuite) TestDPS(testName string, rsr *proto.RaidSimRequest) *proto.RaidSimResult
- func (testSuite *IndividualTestSuite) TestStatWeights(testName string, swr *proto.StatWeightsRequest)
- type Item
- type ItemComboChecker
- type ItemFilter
- type ItemSet
- type ItemSpec
- type ItemStringSpec
- type ItemSwap
- func (swap *ItemSwap) CalcStatChanges(slots []proto.ItemSlot) stats.Stats
- func (swap *ItemSwap) GetItem(slot proto.ItemSlot) *Item
- func (swap *ItemSwap) IsEnabled() bool
- func (swap *ItemSwap) IsSwapped() bool
- func (swap *ItemSwap) RegisterOnSwapItemForEffectWithPPMManager(effectID int32, ppm float64, ppmm *PPMManager, aura *Aura)
- func (swap *ItemSwap) RegisterOnSwapItemForEnchantEffect(effectID int32, aura *Aura)
- func (swap *ItemSwap) RegisterOnSwapItemForItemEffect(itemID int32, aura *Aura)
- func (swap *ItemSwap) RegisterOnSwapItemUpdateProcMaskWithPPMManager(procMask ProcMask, ppm float64, ppmm *PPMManager)
- func (swap *ItemSwap) SwapItems(sim *Simulation, slots []proto.ItemSlot)
- type ItemsTestGenerator
- type MajorCooldown
- func (mcd *MajorCooldown) Disable()
- func (mcd *MajorCooldown) Enable()
- func (mcd *MajorCooldown) GetTimings() []time.Duration
- func (mcd *MajorCooldown) IsEnabled() bool
- func (mcd *MajorCooldown) IsReady(sim *Simulation) bool
- func (mcd *MajorCooldown) ReadyAt() time.Duration
- func (mcd *MajorCooldown) TimeToNextCast(sim *Simulation) time.Duration
- func (mcd *MajorCooldown) TimeToReady(sim *Simulation) time.Duration
- func (mcd *MajorCooldown) TryActivate(sim *Simulation, character *Character) bool
- type ManaCost
- type ManaCostOptions
- type MeleeDamageCalculator
- type MovementAction
- type MovementCallback
- type MovementUpdateType
- type OnApplyEffects
- type OnCastComplete
- type OnCastSpeedChanged
- type OnDoneIteration
- type OnExpire
- type OnFocusGain
- type OnGain
- type OnInit
- type OnMasteryStatChanged
- type OnPeriodicDamage
- type OnPetDisable
- type OnPetEnable
- type OnRageGainCB
- type OnReset
- type OnRuneChange
- type OnRunicPowerGain
- type OnSnapshot
- type OnSpellHit
- type OnStacksChange
- type OnSwapItem
- type OnTick
- type OutcomeApplier
- type PPMManager
- type Party
- func (party *Party) AddStat(stat stats.Stat, amount float64)
- func (party *Party) AddStats(newStats stats.Stats)
- func (party *Party) GetMetrics() *proto.PartyMetrics
- func (party *Party) GetPartyBuffs(basePartyBuffs *proto.PartyBuffs) *proto.PartyBuffs
- func (party *Party) IsFull() bool
- func (party *Party) Size() int
- type PendingAction
- func NewDelayedAction(sim *Simulation, options DelayedActionOptions) *PendingAction
- func NewPeriodicAction(sim *Simulation, options PeriodicActionOptions) *PendingAction
- func StartDelayedAction(sim *Simulation, options DelayedActionOptions) *PendingAction
- func StartPeriodicAction(sim *Simulation, options PeriodicActionOptions) *PendingAction
- type PeriodicActionOptions
- type Pet
- func (eb *Pet) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
- func (eb *Pet) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Pet) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mcdm *Pet) AddMajorCooldown(mcd MajorCooldown)
- func (pet *Pet) AddPartyBuffs(_ *proto.PartyBuffs)
- func (rb *Pet) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (pet *Pet) AddRaidBuffs(_ *proto.RaidBuffs)
- func (rp *Pet) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Pet) Advance(sim *Simulation, newTime time.Duration)
- func (rp *Pet) AllRunesSpent() bool
- func (rp *Pet) AnyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Pet) AnySpentRuneReadyAt() time.Duration
- func (pet *Pet) ApplyTalents()
- func (rp *Pet) BloodDeathRuneBothReadyAt() time.Duration
- func (rp *Pet) BloodRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Pet) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
- func (rp *Pet) CancelBloodTap(sim *Simulation)
- func (eb *Pet) ComboPoints() int32
- func (rp *Pet) ConvertFromDeath(sim *Simulation, slot int8)
- func (rp *Pet) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
- func (rp *Pet) CurrentBloodOrDeathRunes() int8
- func (rp *Pet) CurrentBloodRunes() int8
- func (rp *Pet) CurrentDeathRunes() int8
- func (eb *Pet) CurrentEnergy() float64
- func (fb *Pet) CurrentFocus() float64
- func (rp *Pet) CurrentFrostOrDeathRunes() int8
- func (rp *Pet) CurrentFrostRunes() int8
- func (hb *Pet) CurrentHealth() float64
- func (hb *Pet) CurrentHealthPercent() float64
- func (rb *Pet) CurrentRage() float64
- func (rp *Pet) CurrentRunicPower() float64
- func (rp *Pet) CurrentUnholyOrDeathRunes() int8
- func (rp *Pet) CurrentUnholyRunes() int8
- func (rp *Pet) DeathRuneRegenAt(slot int32) time.Duration
- func (rp *Pet) DeathRuneRevertAt() time.Duration
- func (rp *Pet) DeathRunesInFU() int8
- func (rp *Pet) DebugString() string
- func (pet *Pet) DelayInitialInheritance(time time.Duration)
- func (pet *Pet) Disable(sim *Simulation)
- func (pet *Pet) Enable(sim *Simulation, petAgent PetAgent)
- func (pet *Pet) EnableDynamicMeleeSpeed(inheritance PetMeleeSpeedInheritance)
- func (pet *Pet) EnableDynamicStats(inheritance PetStatInheritance)
- func (pet *Pet) EnableWithTimeout(sim *Simulation, petAgent PetAgent, petDuration time.Duration)
- func (mb *Pet) EndOOMEvent(sim *Simulation)
- func (eb *Pet) EnergyRegenPerSecond() float64
- func (fb *Pet) FocusRegenPerSecond() float64
- func (fb *Pet) FocusRegenPerTick() float64
- func (rp *Pet) FrostRuneReadyAt(sim *Simulation) time.Duration
- func (hb *Pet) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (at *Pet) GetActiveAuraWithTag(tag string) *Aura
- func (at *Pet) GetAura(label string) *Aura
- func (at *Pet) GetAuraByID(actionID ActionID) *Aura
- func (at *Pet) GetAuras() []*Aura
- func (at *Pet) GetAurasWithTag(tag string) []*Aura
- func (pet *Pet) GetCharacter() *Character
- func (at *Pet) GetIcdAuraByID(actionID ActionID) *Aura
- func (mcdm *Pet) GetInitialMajorCooldown(actionID ActionID) MajorCooldown
- func (mcdm *Pet) GetMajorCooldown(actionID ActionID) *MajorCooldown
- func (mcdm *Pet) GetMajorCooldownIDs() []*proto.ActionID
- func (mcdm *Pet) GetMajorCooldownIgnoreTag(actionID ActionID) *MajorCooldown
- func (mcdm *Pet) GetMajorCooldowns() []*MajorCooldown
- func (at *Pet) HasActiveAura(label string) bool
- func (at *Pet) HasActiveAuraWithTag(tag string) bool
- func (at *Pet) HasActiveAuraWithTagExcludingAura(tag string, excludeAura *Aura) bool
- func (at *Pet) HasAura(label string) bool
- func (at *Pet) HasAuraWithTag(tag string) bool
- func (rp *Pet) IsBloodTappedRune(slot int8) bool
- func (pet *Pet) IsGuardian() bool
- func (mb *Pet) IsOOM() bool
- func (rp *Pet) LeftBloodRuneReady() bool
- func (hb *Pet) MaxHealth() float64
- func (eb *Pet) MaximumEnergy() float64
- func (eb *Pet) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
- func (fb *Pet) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Pet) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Pet) MultiplyRunicRegen(multiply float64)
- func (rp *Pet) NextBloodRuneReadyAt(sim *Simulation) time.Duration
- func (eb *Pet) NextEnergyTickAt() time.Duration
- func (fb *Pet) NextFocusTickAt() time.Duration
- func (rp *Pet) NextFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Pet) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Pet) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Pet) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
- func (rp *Pet) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (at *Pet) NumActiveAurasWithTag(tag string) int32
- func (at *Pet) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
- func (at *Pet) OnCastComplete(sim *Simulation, spell *Spell)
- func (pet *Pet) OnGCDReady(_ *Simulation)
- func (at *Pet) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Pet) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (rp *Pet) OptimalRuneCost(cost RuneCost) RuneCost
- func (rp *Pet) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
- func (rp *Pet) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
- func (at *Pet) RegisterResetEffect(resetEffect ResetEffect)
- func (hb *Pet) RemoveHealth(sim *Simulation, amount float64)
- func (eb *Pet) ResetEnergyTick(sim *Simulation)
- func (fb *Pet) ResetFocusTick(sim *Simulation)
- func (rp *Pet) RuneIsActive(slot int8) bool
- func (rp *Pet) RuneIsDeath(slot int8) bool
- func (rp *Pet) RuneReadyAt(sim *Simulation, slot int8) time.Duration
- func (rp *Pet) SetPermanentDeathRunes(permanentDeaths []int8)
- func (rp *Pet) SetRuneCd(runeCd time.Duration)
- func (eb *Pet) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
- func (eb *Pet) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Pet) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rb *Pet) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Pet) SpendRuneReadyAt(slot int8, spendAt time.Duration) time.Duration
- func (rp *Pet) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mb *Pet) StartOOMEvent(sim *Simulation, requiredMana float64)
- func (rp *Pet) UnholyRuneReadyAt(sim *Simulation) time.Duration
- func (mcdm *Pet) UpdateMajorCooldowns()
- func (eb *Pet) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
- func (hb *Pet) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
- type PetAgent
- type PetMeleeSpeedInheritance
- type PetStatInheritance
- type PostFinalizeEffect
- type PowerBarType
- type PrepullAction
- type PresetTarget
- type PresimOptions
- type Presimmer
- type ProcExtraCondition
- type ProcHandler
- type ProcMask
- type ProcTrigger
- type QueuedSpell
- type RageBarOptions
- type RageCost
- type RageCostOptions
- type Raid
- func (raid *Raid) AddStats(s stats.Stats)
- func (raid *Raid) GetActiveAllyUnits() []*Unit
- func (raid *Raid) GetActiveUnits() []*Unit
- func (raid *Raid) GetFirstEmptyRaidIndex() (*Party, int)
- func (raid *Raid) GetFirstNPlayersOrPets(n int32) []*Unit
- func (raid *Raid) GetFirstTargetDummy() *TargetDummy
- func (raid *Raid) GetMetrics() *proto.RaidMetrics
- func (raid *Raid) GetPlayerFromUnit(unit *Unit) Agent
- func (raid *Raid) GetPlayerFromUnitIndex(unitIndex int32) Agent
- func (raid *Raid) GetPlayersOfClass(class proto.Class) []Agent
- func (raid *Raid) GetRaidBuffs(baseRaidBuffs *proto.RaidBuffs) *proto.RaidBuffs
- func (raid *Raid) NewReplenishmentSource(actionID ActionID) ReplenishmentSource
- func (raid *Raid) ProcReplenishment(sim *Simulation, src ReplenishmentSource)
- func (raid *Raid) Size() int
- type Rand
- type RandomSuffix
- type ReforgeStat
- type ReplaceMHSwing
- type ReplenishmentSource
- type ResetEffect
- type ResetTestResult
- type ResourceKey
- type ResourceMetrics
- func (resourceMetrics *ResourceMetrics) ActualGainForCurrentIteration() float64
- func (resourceMetrics *ResourceMetrics) AddEvent(gain float64, actualGain float64)
- func (resourceMetrics *ResourceMetrics) EventsForCurrentIteration() int32
- func (resourceMetrics *ResourceMetrics) ToProto() *proto.ResourceMetrics
- type RotationCastsTestGenerator
- type RotationCombo
- type RuneChangeType
- type RuneCost
- type RuneCostImpl
- func (rc *RuneCostImpl) CostFailureReason(_ *Simulation, _ *Spell) string
- func (rc *RuneCostImpl) GetConfig() RuneCostOptions
- func (rc *RuneCostImpl) IssueRefund(_ *Simulation, _ *Spell)
- func (rc *RuneCostImpl) MeetsRequirement(_ *Simulation, spell *Spell) bool
- func (rc *RuneCostImpl) SpendCost(sim *Simulation, spell *Spell)
- type RuneCostOptions
- type RuneMeta
- type SettingsCombos
- type Shield
- type ShieldArray
- type ShieldConfig
- type Simulation
- func (sim *Simulation) AddPendingAction(pa *PendingAction)
- func (sim *Simulation) AddTask(task Task)
- func (sim *Simulation) Cleanup()
- func (sim *Simulation) GetRemainingDuration() time.Duration
- func (sim *Simulation) GetRemainingDurationPercent() float64
- func (sim *Simulation) IsExecutePhase20() bool
- func (sim *Simulation) IsExecutePhase25() bool
- func (sim *Simulation) IsExecutePhase35() bool
- func (sim *Simulation) IsExecutePhase90() bool
- func (sim *Simulation) PrePull()
- func (sim *Simulation) Proc(p float64, label string) bool
- func (sim *Simulation) RandomExpFloat(label string) float64
- func (sim *Simulation) RandomFloat(label string) float64
- func (sim *Simulation) RegisterExecutePhaseCallback(callback func(sim *Simulation, isExecute int32))
- func (sim *Simulation) RemoveTask(task Task)
- func (sim *Simulation) RescheduleTask(taskTime time.Duration)
- func (sim *Simulation) Reseed(seed int64)
- func (sim *Simulation) Reset()
- func (sim *Simulation) Roll(min float64, max float64) float64
- func (sim *Simulation) RollWithLabel(min float64, max float64, label string) float64
- func (sim *Simulation) Step() bool
- type SingleCharacterStatsTestGenerator
- type SingleDpsTestGenerator
- type SingleStatWeightsTestGenerator
- type SpecOptionsCombo
- type SpecSetter
- type Spell
- func (spell *Spell) AOEDot() *Dot
- func (spell *Spell) AOEHot() *Dot
- func (spell *Spell) ApplyAOEThreat(threatAmount float64)
- func (spell *Spell) ApplyAOEThreatIgnoreMultipliers(threatAmount float64)
- func (spell *Spell) ApplyCostModifiers(cost float64) float64
- func (spell *Spell) ApplyPostOutcomeDamageModifiers(sim *Simulation, result *SpellResult)
- func (spell *Spell) AttackerDamageMultiplier(attackTable *AttackTable, isDot bool) float64
- func (spell *Spell) BloodRuneMetrics() *ResourceMetrics
- func (spell *Spell) BonusDamage() float64
- func (spell *Spell) CalcAndDealDamage(sim *Simulation, target *Unit, baseDamage float64, ...) *SpellResult
- func (spell *Spell) CalcAndDealHealing(sim *Simulation, target *Unit, baseHealing float64, ...) *SpellResult
- func (spell *Spell) CalcAndDealOutcome(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
- func (spell *Spell) CalcAndDealPeriodicDamage(sim *Simulation, target *Unit, baseDamage float64, ...) *SpellResult
- func (spell *Spell) CalcAndDealPeriodicHealing(sim *Simulation, target *Unit, baseHealing float64, ...) *SpellResult
- func (spell *Spell) CalcDamage(sim *Simulation, target *Unit, baseDamage float64, ...) *SpellResult
- func (spell *Spell) CalcHealing(sim *Simulation, target *Unit, baseHealing float64, ...) *SpellResult
- func (spell *Spell) CalcOutcome(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
- func (spell *Spell) CalcPeriodicDamage(sim *Simulation, target *Unit, baseDamage float64, ...) *SpellResult
- func (spell *Spell) CanCast(sim *Simulation, target *Unit) bool
- func (spell *Spell) CanCastOrQueue(sim *Simulation, target *Unit) bool
- func (spell *Spell) CanQueue(sim *Simulation, target *Unit) bool
- func (spell *Spell) Cast(sim *Simulation, target *Unit) bool
- func (spell *Spell) CastOrQueue(sim *Simulation, target *Unit)
- func (spell *Spell) CastTime() time.Duration
- func (spell *Spell) CasterHealingMultiplier() float64
- func (spell *Spell) ComboPointMetrics() *ResourceMetrics
- func (spell *Spell) CurCPM(sim *Simulation) float64
- func (spell *Spell) CurDamagePerCast() float64
- func (spell *Spell) CurDot() *Dot
- func (spell *Spell) CurHot() *Dot
- func (spell *Spell) DealDamage(sim *Simulation, result *SpellResult)
- func (spell *Spell) DealHealing(sim *Simulation, result *SpellResult)
- func (spell *Spell) DealOutcome(sim *Simulation, result *SpellResult)
- func (spell *Spell) DealPeriodicDamage(sim *Simulation, result *SpellResult)
- func (spell *Spell) DealPeriodicHealing(sim *Simulation, result *SpellResult)
- func (spell *Spell) DeathRuneMetrics() *ResourceMetrics
- func (spell *Spell) DisposeResult(result *SpellResult)
- func (spell *Spell) Dot(target *Unit) *Dot
- func (spell *Spell) EffectiveCastTime() time.Duration
- func (spell *Spell) EnergyMetrics() *ResourceMetrics
- func (spell *Spell) ExpectedInitialDamage(sim *Simulation, target *Unit) float64
- func (spell *Spell) ExpectedTickDamage(sim *Simulation, target *Unit) float64
- func (spell *Spell) ExpectedTickDamageFromCurrentSnapshot(sim *Simulation, target *Unit) float64
- func (spell *Spell) ExpertisePercentage() float64
- func (spell *Spell) FrostRuneMetrics() *ResourceMetrics
- func (spell *Spell) GetPhysicalMissChance(attackTable *AttackTable) float64
- func (spell *Spell) HealingCritChance() float64
- func (spell *Spell) HealingCritCheck(sim *Simulation) bool
- func (spell *Spell) HealingPower(target *Unit) float64
- func (spell *Spell) HealthMetrics(target *Unit) *ResourceMetrics
- func (spell *Spell) Hot(target *Unit) *Dot
- func (spell *Spell) IsMH() bool
- func (spell *Spell) IsMelee() bool
- func (spell *Spell) IsOH() bool
- func (spell *Spell) IsReady(sim *Simulation) bool
- func (spell *Spell) IssueRefund(sim *Simulation)
- func (spell *Spell) MagicCritCheck(sim *Simulation, target *Unit) bool
- func (spell *Spell) MagicHitCheck(sim *Simulation, attackTable *AttackTable) bool
- func (spell *Spell) Matches(mask int64) bool
- func (spell *Spell) MeleeAttackPower() float64
- func (spell *Spell) NewResult(target *Unit) *SpellResult
- func (spell *Spell) OutcomeAlwaysHit(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeAlwaysMiss(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeEnemyMeleeWhite(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeExpectedMagicAlwaysHit(_ *Simulation, _ *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeExpectedMagicCrit(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeExpectedMagicHit(_ *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeExpectedMagicHitAndCrit(_ *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeExpectedMeleeWeaponSpecialHitAndCrit(_ *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeExpectedMeleeWhite(_ *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeExpectedTick(_ *Simulation, _ *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeHealing(_ *Simulation, result *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeHealingCrit(sim *Simulation, result *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeMagicCrit(sim *Simulation, result *SpellResult, _ *AttackTable)
- func (spell *Spell) OutcomeMagicHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMagicHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeSpecialBlockAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeSpecialCritOnly(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeSpecialHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeSpecialHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeSpecialNoBlockDodgeParry(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeSpecialNoBlockDodgeParryNoCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeWeaponSpecialHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeWeaponSpecialNoCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeMeleeWhite(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeRangedCritOnly(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeRangedHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeRangedHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeRangedHitAndCritNoBlock(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) OutcomeTickMagicHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
- func (spell *Spell) PhysicalCritChance(attackTable *AttackTable) float64
- func (spell *Spell) PhysicalCritCheck(sim *Simulation, attackTable *AttackTable) bool
- func (spell *Spell) PhysicalHitChance(attackTable *AttackTable) float64
- func (spell *Spell) RangedAttackPower(target *Unit) float64
- func (spell *Spell) ReadyAt() time.Duration
- func (spell *Spell) ResistanceMultiplier(sim *Simulation, isPeriodic bool, attackTable *AttackTable) (float64, HitOutcome)
- func (spell *Spell) RuneCostImpl() *RuneCostImpl
- func (spell *Spell) RunicPowerMetrics() *ResourceMetrics
- func (spell *Spell) SelfHot() *Dot
- func (spell *Spell) SelfShield() *Shield
- func (spell *Spell) SetMetricsSplit(splitIdx int32)
- func (spell *Spell) Shield(target *Unit) *Shield
- func (spell *Spell) ShouldRefreshExclusiveEffects(sim *Simulation, target *Unit, refreshWindow time.Duration) bool
- func (spell *Spell) SkipCastAndApplyEffects(sim *Simulation, target *Unit)
- func (spell *Spell) SpellChanceToMiss(attackTable *AttackTable) float64
- func (spell *Spell) SpellCritChance(target *Unit) float64
- func (spell *Spell) SpellHitChance(target *Unit) float64
- func (spell *Spell) SpellPower() float64
- func (spell *Spell) SpendRefundableCost(sim *Simulation, result *SpellResult)
- func (spell *Spell) SpendRefundableCostAndConvertBloodOrFrostRune(sim *Simulation, result *SpellResult, convertChance float64)
- func (spell *Spell) SpendRefundableCostAndConvertBloodRune(sim *Simulation, result *SpellResult, convertChance float64)
- func (spell *Spell) SpendRefundableCostAndConvertFrostOrUnholyRune(sim *Simulation, result *SpellResult, convertChance float64)
- func (spell *Spell) TargetDamageMultiplier(sim *Simulation, attackTable *AttackTable, isPeriodic bool) float64
- func (spell *Spell) ThreatFromDamage(outcome HitOutcome, damage float64) float64
- func (spell *Spell) TimeToReady(sim *Simulation) time.Duration
- func (spell *Spell) TravelTime() time.Duration
- func (spell *Spell) UnholyRuneMetrics() *ResourceMetrics
- func (spell *Spell) WaitTravelTime(sim *Simulation, callback func(*Simulation))
- type SpellConfig
- type SpellCost
- type SpellFlag
- type SpellMetrics
- type SpellMod
- func (mod *SpellMod) Activate()
- func (mod *SpellMod) Deactivate()
- func (mod *SpellMod) GetFloatValue() float64
- func (mod *SpellMod) GetIntValue() int64
- func (mod *SpellMod) GetTimeValue() time.Duration
- func (mod *SpellMod) UpdateFloatValue(value float64)
- func (mod *SpellMod) UpdateIntValue(value int64)
- func (mod *SpellMod) UpdateTimeValue(value time.Duration)
- type SpellModApply
- type SpellModConfig
- type SpellModFunctions
- type SpellModRemove
- type SpellModType
- type SpellRegisteredHandler
- type SpellResult
- type SpellSchool
- type SplitMix64
- type StackingStatAura
- type StatConfig
- type StatWeightValues
- type StatWeightsResult
- type SubGenerator
- type SubstitutionComboChecker
- type TalentsCombo
- type Target
- func (eb *Target) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
- func (eb *Target) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Target) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (target *Target) AddPartyBuffs(_ *proto.PartyBuffs)
- func (rb *Target) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (target *Target) AddRaidBuffs(_ *proto.RaidBuffs)
- func (rp *Target) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Target) Advance(sim *Simulation, newTime time.Duration)
- func (rp *Target) AllRunesSpent() bool
- func (rp *Target) AnyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Target) AnySpentRuneReadyAt() time.Duration
- func (target *Target) ApplyTalents()
- func (rp *Target) BloodDeathRuneBothReadyAt() time.Duration
- func (rp *Target) BloodRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Target) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
- func (rp *Target) CancelBloodTap(sim *Simulation)
- func (eb *Target) ComboPoints() int32
- func (rp *Target) ConvertFromDeath(sim *Simulation, slot int8)
- func (rp *Target) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
- func (rp *Target) CurrentBloodOrDeathRunes() int8
- func (rp *Target) CurrentBloodRunes() int8
- func (rp *Target) CurrentDeathRunes() int8
- func (eb *Target) CurrentEnergy() float64
- func (fb *Target) CurrentFocus() float64
- func (rp *Target) CurrentFrostOrDeathRunes() int8
- func (rp *Target) CurrentFrostRunes() int8
- func (hb *Target) CurrentHealth() float64
- func (hb *Target) CurrentHealthPercent() float64
- func (rb *Target) CurrentRage() float64
- func (rp *Target) CurrentRunicPower() float64
- func (rp *Target) CurrentUnholyOrDeathRunes() int8
- func (rp *Target) CurrentUnholyRunes() int8
- func (rp *Target) DeathRuneRegenAt(slot int32) time.Duration
- func (rp *Target) DeathRuneRevertAt() time.Duration
- func (rp *Target) DeathRunesInFU() int8
- func (rp *Target) DebugString() string
- func (mb *Target) EndOOMEvent(sim *Simulation)
- func (eb *Target) EnergyRegenPerSecond() float64
- func (target *Target) ExecuteCustomRotation(sim *Simulation)
- func (fb *Target) FocusRegenPerSecond() float64
- func (fb *Target) FocusRegenPerTick() float64
- func (rp *Target) FrostRuneReadyAt(sim *Simulation) time.Duration
- func (hb *Target) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (at *Target) GetActiveAuraWithTag(tag string) *Aura
- func (at *Target) GetAura(label string) *Aura
- func (at *Target) GetAuraByID(actionID ActionID) *Aura
- func (at *Target) GetAuras() []*Aura
- func (at *Target) GetAurasWithTag(tag string) []*Aura
- func (target *Target) GetCharacter() *Character
- func (at *Target) GetIcdAuraByID(actionID ActionID) *Aura
- func (target *Target) GetMetricsProto() *proto.UnitMetrics
- func (at *Target) HasActiveAura(label string) bool
- func (at *Target) HasActiveAuraWithTag(tag string) bool
- func (at *Target) HasActiveAuraWithTagExcludingAura(tag string, excludeAura *Aura) bool
- func (at *Target) HasAura(label string) bool
- func (at *Target) HasAuraWithTag(tag string) bool
- func (target *Target) Initialize()
- func (rp *Target) IsBloodTappedRune(slot int8) bool
- func (mb *Target) IsOOM() bool
- func (rp *Target) LeftBloodRuneReady() bool
- func (hb *Target) MaxHealth() float64
- func (eb *Target) MaximumEnergy() float64
- func (eb *Target) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
- func (fb *Target) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Target) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Target) MultiplyRunicRegen(multiply float64)
- func (rp *Target) NextBloodRuneReadyAt(sim *Simulation) time.Duration
- func (eb *Target) NextEnergyTickAt() time.Duration
- func (fb *Target) NextFocusTickAt() time.Duration
- func (rp *Target) NextFrostRuneReadyAt(sim *Simulation) time.Duration
- func (target *Target) NextTarget() *Target
- func (rp *Target) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Target) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Target) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
- func (rp *Target) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (at *Target) NumActiveAurasWithTag(tag string) int32
- func (at *Target) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
- func (at *Target) OnCastComplete(sim *Simulation, spell *Spell)
- func (at *Target) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Target) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (rp *Target) OptimalRuneCost(cost RuneCost) RuneCost
- func (rp *Target) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
- func (rp *Target) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
- func (at *Target) RegisterResetEffect(resetEffect ResetEffect)
- func (hb *Target) RemoveHealth(sim *Simulation, amount float64)
- func (target *Target) Reset(sim *Simulation)
- func (eb *Target) ResetEnergyTick(sim *Simulation)
- func (fb *Target) ResetFocusTick(sim *Simulation)
- func (rp *Target) RuneIsActive(slot int8) bool
- func (rp *Target) RuneIsDeath(slot int8) bool
- func (rp *Target) RuneReadyAt(sim *Simulation, slot int8) time.Duration
- func (rp *Target) SetPermanentDeathRunes(permanentDeaths []int8)
- func (rp *Target) SetRuneCd(runeCd time.Duration)
- func (eb *Target) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
- func (eb *Target) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Target) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rb *Target) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Target) SpendRuneReadyAt(slot int8, spendAt time.Duration) time.Duration
- func (rp *Target) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mb *Target) StartOOMEvent(sim *Simulation, requiredMana float64)
- func (rp *Target) UnholyRuneReadyAt(sim *Simulation) time.Duration
- func (eb *Target) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
- func (hb *Target) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
- type TargetAI
- type TargetDummy
- func (eb *TargetDummy) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
- func (eb *TargetDummy) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *TargetDummy) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mcdm *TargetDummy) AddMajorCooldown(mcd MajorCooldown)
- func (td *TargetDummy) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
- func (rb *TargetDummy) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (td *TargetDummy) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
- func (rp *TargetDummy) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *TargetDummy) Advance(sim *Simulation, newTime time.Duration)
- func (rp *TargetDummy) AllRunesSpent() bool
- func (rp *TargetDummy) AnyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *TargetDummy) AnySpentRuneReadyAt() time.Duration
- func (td *TargetDummy) ApplyTalents()
- func (rp *TargetDummy) BloodDeathRuneBothReadyAt() time.Duration
- func (rp *TargetDummy) BloodRuneReadyAt(sim *Simulation) time.Duration
- func (rp *TargetDummy) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
- func (rp *TargetDummy) CancelBloodTap(sim *Simulation)
- func (eb *TargetDummy) ComboPoints() int32
- func (rp *TargetDummy) ConvertFromDeath(sim *Simulation, slot int8)
- func (rp *TargetDummy) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
- func (rp *TargetDummy) CurrentBloodOrDeathRunes() int8
- func (rp *TargetDummy) CurrentBloodRunes() int8
- func (rp *TargetDummy) CurrentDeathRunes() int8
- func (eb *TargetDummy) CurrentEnergy() float64
- func (fb *TargetDummy) CurrentFocus() float64
- func (rp *TargetDummy) CurrentFrostOrDeathRunes() int8
- func (rp *TargetDummy) CurrentFrostRunes() int8
- func (hb *TargetDummy) CurrentHealth() float64
- func (hb *TargetDummy) CurrentHealthPercent() float64
- func (rb *TargetDummy) CurrentRage() float64
- func (rp *TargetDummy) CurrentRunicPower() float64
- func (rp *TargetDummy) CurrentUnholyOrDeathRunes() int8
- func (rp *TargetDummy) CurrentUnholyRunes() int8
- func (rp *TargetDummy) DeathRuneRegenAt(slot int32) time.Duration
- func (rp *TargetDummy) DeathRuneRevertAt() time.Duration
- func (rp *TargetDummy) DeathRunesInFU() int8
- func (rp *TargetDummy) DebugString() string
- func (mb *TargetDummy) EndOOMEvent(sim *Simulation)
- func (eb *TargetDummy) EnergyRegenPerSecond() float64
- func (td *TargetDummy) ExecuteCustomRotation(sim *Simulation)
- func (fb *TargetDummy) FocusRegenPerSecond() float64
- func (fb *TargetDummy) FocusRegenPerTick() float64
- func (rp *TargetDummy) FrostRuneReadyAt(sim *Simulation) time.Duration
- func (hb *TargetDummy) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (at *TargetDummy) GetActiveAuraWithTag(tag string) *Aura
- func (at *TargetDummy) GetAura(label string) *Aura
- func (at *TargetDummy) GetAuraByID(actionID ActionID) *Aura
- func (at *TargetDummy) GetAuras() []*Aura
- func (at *TargetDummy) GetAurasWithTag(tag string) []*Aura
- func (td *TargetDummy) GetCharacter() *Character
- func (at *TargetDummy) GetIcdAuraByID(actionID ActionID) *Aura
- func (mcdm *TargetDummy) GetInitialMajorCooldown(actionID ActionID) MajorCooldown
- func (mcdm *TargetDummy) GetMajorCooldown(actionID ActionID) *MajorCooldown
- func (mcdm *TargetDummy) GetMajorCooldownIDs() []*proto.ActionID
- func (mcdm *TargetDummy) GetMajorCooldownIgnoreTag(actionID ActionID) *MajorCooldown
- func (mcdm *TargetDummy) GetMajorCooldowns() []*MajorCooldown
- func (at *TargetDummy) HasActiveAura(label string) bool
- func (at *TargetDummy) HasActiveAuraWithTag(tag string) bool
- func (at *TargetDummy) HasActiveAuraWithTagExcludingAura(tag string, excludeAura *Aura) bool
- func (at *TargetDummy) HasAura(label string) bool
- func (at *TargetDummy) HasAuraWithTag(tag string) bool
- func (td *TargetDummy) Initialize()
- func (rp *TargetDummy) IsBloodTappedRune(slot int8) bool
- func (mb *TargetDummy) IsOOM() bool
- func (rp *TargetDummy) LeftBloodRuneReady() bool
- func (hb *TargetDummy) MaxHealth() float64
- func (eb *TargetDummy) MaximumEnergy() float64
- func (eb *TargetDummy) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
- func (fb *TargetDummy) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *TargetDummy) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *TargetDummy) MultiplyRunicRegen(multiply float64)
- func (rp *TargetDummy) NextBloodRuneReadyAt(sim *Simulation) time.Duration
- func (eb *TargetDummy) NextEnergyTickAt() time.Duration
- func (fb *TargetDummy) NextFocusTickAt() time.Duration
- func (rp *TargetDummy) NextFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *TargetDummy) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *TargetDummy) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *TargetDummy) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
- func (rp *TargetDummy) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (at *TargetDummy) NumActiveAurasWithTag(tag string) int32
- func (at *TargetDummy) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
- func (at *TargetDummy) OnCastComplete(sim *Simulation, spell *Spell)
- func (at *TargetDummy) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *TargetDummy) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (rp *TargetDummy) OptimalRuneCost(cost RuneCost) RuneCost
- func (rp *TargetDummy) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
- func (rp *TargetDummy) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
- func (at *TargetDummy) RegisterResetEffect(resetEffect ResetEffect)
- func (hb *TargetDummy) RemoveHealth(sim *Simulation, amount float64)
- func (td *TargetDummy) Reset(sim *Simulation)
- func (eb *TargetDummy) ResetEnergyTick(sim *Simulation)
- func (fb *TargetDummy) ResetFocusTick(sim *Simulation)
- func (rp *TargetDummy) RuneIsActive(slot int8) bool
- func (rp *TargetDummy) RuneIsDeath(slot int8) bool
- func (rp *TargetDummy) RuneReadyAt(sim *Simulation, slot int8) time.Duration
- func (rp *TargetDummy) SetPermanentDeathRunes(permanentDeaths []int8)
- func (rp *TargetDummy) SetRuneCd(runeCd time.Duration)
- func (eb *TargetDummy) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
- func (eb *TargetDummy) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *TargetDummy) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rb *TargetDummy) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *TargetDummy) SpendRuneReadyAt(slot int8, spendAt time.Duration) time.Duration
- func (rp *TargetDummy) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (mb *TargetDummy) StartOOMEvent(sim *Simulation, requiredMana float64)
- func (rp *TargetDummy) UnholyRuneReadyAt(sim *Simulation) time.Duration
- func (mcdm *TargetDummy) UpdateMajorCooldowns()
- func (eb *TargetDummy) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
- func (hb *TargetDummy) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
- type TargetedActionMetrics
- type Task
- type TestGenerator
- type Threshold
- type Thresholds
- type Timer
- type Unit
- func (unit *Unit) AddBonusRangedCritRating(amount float64)
- func (unit *Unit) AddBonusRangedHitRating(amount float64)
- func (eb *Unit) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
- func (unit *Unit) AddDynamicDamageTakenModifier(ddtm DynamicDamageTakenModifier)
- func (unit *Unit) AddDynamicMod(config SpellModConfig) *SpellMod
- func (eb *Unit) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Unit) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (unit *Unit) AddHighestStat(stat stats.Stats)
- func (unit *Unit) AddHighestStatDynamic(sim *Simulation, stat stats.Stats)
- func (unit *Unit) AddMana(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (unit *Unit) AddOnCastSpeedChanged(ocsc OnCastSpeedChanged)
- func (unit *Unit) AddOnMasteryStatChanged(omsc OnMasteryStatChanged)
- func (rb *Unit) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Unit) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (unit *Unit) AddStat(stat stats.Stat, amount float64)
- func (unit *Unit) AddStatDynamic(sim *Simulation, stat stats.Stat, amount float64)
- func (unit *Unit) AddStaticMod(config SpellModConfig)
- func (unit *Unit) AddStats(stat stats.Stats)
- func (unit *Unit) AddStatsDynamic(sim *Simulation, bonus stats.Stats)
- func (rp *Unit) Advance(sim *Simulation, newTime time.Duration)
- func (rp *Unit) AllRunesSpent() bool
- func (rp *Unit) AnyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Unit) AnySpentRuneReadyAt() time.Duration
- func (unit *Unit) ApplyCastSpeed(dur time.Duration) time.Duration
- func (unit *Unit) ApplyCastSpeedForSpell(dur time.Duration, spell *Spell) time.Duration
- func (unit *Unit) Armor() float64
- func (unit *Unit) BlockDamageReduction() float64
- func (rp *Unit) BloodDeathRuneBothReadyAt() time.Duration
- func (rp *Unit) BloodRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Unit) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
- func (unit *Unit) CanQueueSpell(sim *Simulation) bool
- func (rp *Unit) CancelBloodTap(sim *Simulation)
- func (unit *Unit) CancelGCDTimer(sim *Simulation)
- func (unit *Unit) CancelQueuedSpell(sim *Simulation)
- func (eb *Unit) ComboPoints() int32
- func (rp *Unit) ConvertFromDeath(sim *Simulation, slot int8)
- func (rp *Unit) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
- func (rp *Unit) CurrentBloodOrDeathRunes() int8
- func (rp *Unit) CurrentBloodRunes() int8
- func (rp *Unit) CurrentDeathRunes() int8
- func (eb *Unit) CurrentEnergy() float64
- func (fb *Unit) CurrentFocus() float64
- func (rp *Unit) CurrentFrostOrDeathRunes() int8
- func (rp *Unit) CurrentFrostRunes() int8
- func (hb *Unit) CurrentHealth() float64
- func (hb *Unit) CurrentHealthPercent() float64
- func (unit *Unit) CurrentMana() float64
- func (unit *Unit) CurrentManaPercent() float64
- func (rb *Unit) CurrentRage() float64
- func (rp *Unit) CurrentRunicPower() float64
- func (rp *Unit) CurrentUnholyOrDeathRunes() int8
- func (rp *Unit) CurrentUnholyRunes() int8
- func (rp *Unit) DeathRuneRegenAt(slot int32) time.Duration
- func (rp *Unit) DeathRuneRevertAt() time.Duration
- func (rp *Unit) DeathRunesInFU() int8
- func (rp *Unit) DebugString() string
- func (unit *Unit) DisableDynamicStatDep(sim *Simulation, dep *stats.StatDependency)
- func (unit *Unit) EnableAutoAttacks(agent Agent, options AutoAttackOptions)
- func (unit *Unit) EnableDynamicStatDep(sim *Simulation, dep *stats.StatDependency)
- func (unit *Unit) EnableEnergyBar(maxEnergy float64)
- func (unit *Unit) EnableFocusBar(maxFocus float64, baseFocusPerSecond float64, isPlayer bool, ...)
- func (unit *Unit) EnableHealthBar()
- func (unit *Unit) EnableRageBar(options RageBarOptions)
- func (unit *Unit) EnableRunicPowerBar(startingRunicPower float64, maxRunicPower float64, runeCD time.Duration, ...)
- func (mb *Unit) EndOOMEvent(sim *Simulation)
- func (eb *Unit) EnergyRegenPerSecond() float64
- func (unit *Unit) ExecuteCustomRotation(sim *Simulation)
- func (unit *Unit) ExtendGCDUntil(sim *Simulation, readyTime time.Duration)
- func (unit *Unit) FinalizeMovement(sim *Simulation)
- func (fb *Unit) FocusRegenPerSecond() float64
- func (fb *Unit) FocusRegenPerTick() float64
- func (rp *Unit) FrostRuneReadyAt(sim *Simulation) time.Duration
- func (hb *Unit) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (at *Unit) GetActiveAuraWithTag(tag string) *Aura
- func (at *Unit) GetAura(label string) *Aura
- func (at *Unit) GetAuraByID(actionID ActionID) *Aura
- func (at *Unit) GetAuras() []*Aura
- func (at *Unit) GetAurasWithTag(tag string) []*Aura
- func (unit *Unit) GetCurrentPowerBar() PowerBarType
- func (unit *Unit) GetDiminishedDodgeChance() float64
- func (unit *Unit) GetDiminishedMissChance() float64
- func (unit *Unit) GetDiminishedParryChance() float64
- func (caster *Unit) GetEnemyExclusiveCategories(category string) ExclusiveCategoryArray
- func (at *Unit) GetIcdAuraByID(actionID ActionID) *Aura
- func (unit *Unit) GetInitialStat(stat stats.Stat) float64
- func (unit *Unit) GetMasteryPoints() float64
- func (unit *Unit) GetMetadata() *proto.UnitMetadata
- func (at *Unit) GetMetricsProto() []*proto.AuraMetrics
- func (unit *Unit) GetMovementSpeed() float64
- func (unit *Unit) GetOpponents() []*Unit
- func (unit *Unit) GetOrInitTimer(timer **Timer) *Timer
- func (unit *Unit) GetOrRegisterAura(aura Aura) *Aura
- func (unit *Unit) GetOrRegisterSpell(config SpellConfig) *Spell
- func (unit *Unit) GetSpell(actionID ActionID) *Spell
- func (unit *Unit) GetSpellsMatchingSchool(school SpellSchool) []*Spell
- func (unit *Unit) GetStat(stat stats.Stat) float64
- func (unit *Unit) GetStats() stats.Stats
- func (unit *Unit) GetTotalAvoidanceChance(atkTable *AttackTable) float64
- func (unit *Unit) GetTotalBlockChanceAsDefender(atkTable *AttackTable) float64
- func (unit *Unit) GetTotalChanceToBeMissedAsDefender(atkTable *AttackTable) float64
- func (unit *Unit) GetTotalDodgeChanceAsDefender(atkTable *AttackTable) float64
- func (unit *Unit) GetTotalParryChanceAsDefender(atkTable *AttackTable) float64
- func (unit *Unit) GetUnit(ref *proto.UnitReference) *Unit
- func (at *Unit) HasActiveAura(label string) bool
- func (at *Unit) HasActiveAuraWithTag(tag string) bool
- func (at *Unit) HasActiveAuraWithTagExcludingAura(tag string, excludeAura *Aura) bool
- func (at *Unit) HasAura(label string) bool
- func (at *Unit) HasAuraWithTag(tag string) bool
- func (unit *Unit) HasEnergyBar() bool
- func (unit *Unit) HasFocusBar() bool
- func (unit *Unit) HasHealthBar() bool
- func (unit *Unit) HasManaBar() bool
- func (unit *Unit) HasRageBar() bool
- func (unit *Unit) HasRunicPowerBar() bool
- func (unit *Unit) HasTemporaryBonusForStat(stat stats.Stat) bool
- func (unit *Unit) HasTemporaryMeleeSwingSpeedIncrease() bool
- func (unit *Unit) HasTemporaryRangedSwingSpeedIncrease() bool
- func (unit *Unit) HasTemporarySpellCastSpeedIncrease() bool
- func (unit *Unit) InitialCastSpeed() float64
- func (unit *Unit) IsActive() bool
- func (rp *Unit) IsBloodTappedRune(slot int8) bool
- func (unit *Unit) IsEnabled() bool
- func (mb *Unit) IsOOM() bool
- func (unit *Unit) IsOpponent(other *Unit) bool
- func (rp *Unit) LeftBloodRuneReady() bool
- func (unit *Unit) Log(sim *Simulation, message string, vals ...interface{})
- func (unit *Unit) LogLabel() string
- func (unit *Unit) MHNormalizedWeaponDamage(sim *Simulation, attackPower float64) float64
- func (unit *Unit) MHWeaponDamage(sim *Simulation, attackPower float64) float64
- func (unit *Unit) MP5ManaRegenPerSecond() float64
- func (unit *Unit) ManaRegenPerSecondWhileCombat() float64
- func (unit *Unit) ManaRegenPerSecondWhileNotCombat() float64
- func (unit *Unit) ManaTick(sim *Simulation)
- func (hb *Unit) MaxHealth() float64
- func (unit *Unit) MaxMana() float64
- func (eb *Unit) MaximumEnergy() float64
- func (unit *Unit) MoveDuration(duration time.Duration, sim *Simulation)
- func (unit *Unit) MoveTo(moveRange float64, sim *Simulation)
- func (unit *Unit) MultiplyAttackSpeed(sim *Simulation, amount float64)
- func (unit *Unit) MultiplyCastSpeed(amount float64)
- func (eb *Unit) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
- func (fb *Unit) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
- func (unit *Unit) MultiplyMeleeSpeed(sim *Simulation, amount float64)
- func (unit *Unit) MultiplyMovementSpeed(sim *Simulation, amount float64)
- func (unit *Unit) MultiplyRangedSpeed(sim *Simulation, amount float64)
- func (unit *Unit) MultiplyResourceRegenSpeed(sim *Simulation, amount float64)
- func (rp *Unit) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
- func (rp *Unit) MultiplyRunicRegen(multiply float64)
- func (unit *Unit) NewAPLAction(rot *APLRotation, config *proto.APLAction) APLActionImpl
- func (unit *Unit) NewAPLValue(rot *APLRotation, config *proto.APLValue) APLValue
- func (caster *Unit) NewAllyAuraArray(makeAura func(*Unit) *Aura) AuraArray
- func (unit *Unit) NewBloodRuneMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewComboPointMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewDeathRuneMetrics(actionID ActionID) *ResourceMetrics
- func (caster *Unit) NewEnemyAuraArray(makeAura func(*Unit) *Aura) AuraArray
- func (caster *Unit) NewEnemyExclusiveCategoryArray(makeExclusiveCategory func(*Unit) *ExclusiveCategory) ExclusiveCategoryArray
- func (unit *Unit) NewEnergyMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewFocusMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewFrostRuneMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewHealthMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewManaMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewRageMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewRunicPowerMetrics(actionID ActionID) *ResourceMetrics
- func (unit *Unit) NewTimer() *Timer
- func (unit *Unit) NewUnholyRuneMetrics(actionID ActionID) *ResourceMetrics
- func (rp *Unit) NextBloodRuneReadyAt(sim *Simulation) time.Duration
- func (eb *Unit) NextEnergyTickAt() time.Duration
- func (fb *Unit) NextFocusTickAt() time.Duration
- func (rp *Unit) NextFrostRuneReadyAt(sim *Simulation) time.Duration
- func (unit *Unit) NextGCDAt() time.Duration
- func (unit *Unit) NextRotationActionAt() time.Duration
- func (rp *Unit) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Unit) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
- func (rp *Unit) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
- func (rp *Unit) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
- func (at *Unit) NumActiveAurasWithTag(tag string) int32
- func (unit *Unit) OHNormalizedWeaponDamage(sim *Simulation, attackPower float64) float64
- func (unit *Unit) OHWeaponDamage(sim *Simulation, attackPower float64) float64
- func (at *Unit) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
- func (at *Unit) OnCastComplete(sim *Simulation, spell *Spell)
- func (at *Unit) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Unit) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (unit *Unit) OnMovement(position float64, kind MovementUpdateType)
- func (at *Unit) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Unit) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Unit) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Unit) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Unit) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
- func (at *Unit) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
- func (unit *Unit) OnSpellRegistered(handler SpellRegisteredHandler)
- func (rp *Unit) OptimalRuneCost(cost RuneCost) RuneCost
- func (unit *Unit) QueueSpell(sim *Simulation, spell *Spell, target *Unit, queueAt time.Duration)
- func (unit *Unit) RangedSwingSpeed() float64
- func (unit *Unit) RangedWeaponDamage(sim *Simulation, attackPower float64) float64
- func (unit *Unit) ReactToEvent(sim *Simulation)
- func (rp *Unit) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
- func (rp *Unit) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
- func (unit *Unit) RegisterAura(aura Aura) *Aura
- func (unit *Unit) RegisterMovementCallback(callback MovementCallback)
- func (unit *Unit) RegisterPrepullAction(doAt time.Duration, action func(*Simulation))
- func (at *Unit) RegisterResetEffect(resetEffect ResetEffect)
- func (unit *Unit) RegisterSpell(config SpellConfig) *Spell
- func (hb *Unit) RemoveHealth(sim *Simulation, amount float64)
- func (eb *Unit) ResetEnergyTick(sim *Simulation)
- func (fb *Unit) ResetFocusTick(sim *Simulation)
- func (rp *Unit) RuneIsActive(slot int8) bool
- func (rp *Unit) RuneIsDeath(slot int8) bool
- func (rp *Unit) RuneReadyAt(sim *Simulation, slot int8) time.Duration
- func (unit *Unit) SetCurrentPowerBar(bar PowerBarType)
- func (unit *Unit) SetGCDTimer(sim *Simulation, gcdReadyAt time.Duration)
- func (rp *Unit) SetPermanentDeathRunes(permanentDeaths []int8)
- func (unit *Unit) SetRotationTimer(sim *Simulation, rotationReadyAt time.Duration)
- func (rp *Unit) SetRuneCd(runeCd time.Duration)
- func (unit *Unit) SpellGCD() time.Duration
- func (eb *Unit) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
- func (eb *Unit) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (fb *Unit) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (unit *Unit) SpendMana(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rb *Unit) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (rp *Unit) SpendRuneReadyAt(slot int8, spendAt time.Duration) time.Duration
- func (rp *Unit) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
- func (unit *Unit) SpiritManaRegenPerSecond() float64
- func (mb *Unit) StartOOMEvent(sim *Simulation, requiredMana float64)
- func (unit *Unit) SwingSpeed() float64
- func (unit *Unit) TimeUntilManaRegen(desiredMana float64) time.Duration
- func (rp *Unit) UnholyRuneReadyAt(sim *Simulation) time.Duration
- func (unit *Unit) UpdateManaRegenRates()
- func (eb *Unit) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
- func (hb *Unit) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
- func (unit *Unit) UpdatePosition(sim *Simulation)
- func (unit *Unit) WaitUntil(sim *Simulation, readyTime time.Duration)
- type UnitMetrics
- func (unitMetrics *UnitMetrics) AddFinalPetMetrics(petMetrics *UnitMetrics)
- func (unitMetrics *UnitMetrics) AddOOMTime(sim *Simulation, dur time.Duration)
- func (unitMetrics *UnitMetrics) IsTanking() bool
- func (unitMetrics *UnitMetrics) MarkOOM(sim *Simulation)
- func (unitMetrics *UnitMetrics) NewResourceMetrics(actionID ActionID, resourceType proto.ResourceType) *ResourceMetrics
- func (unitMetrics *UnitMetrics) ToProto() *proto.UnitMetrics
- type UnitReference
- type UnitStats
- type UnitType
- type VengeanceTracker
- type Weapon
- func (weapon *Weapon) AverageDamage() float64
- func (weapon *Weapon) BaseDamage(sim *Simulation) float64
- func (weapon *Weapon) CalculateAverageWeaponDamage(attackPower float64) float64
- func (weapon *Weapon) CalculateNormalizedWeaponDamage(sim *Simulation, attackPower float64) float64
- func (weapon *Weapon) CalculateWeaponDamage(sim *Simulation, attackPower float64) float64
- func (weapon *Weapon) DPS() float64
- func (weapon *Weapon) EnemyWeaponDamage(sim *Simulation, attackPower float64, damageSpread float64) float64
- func (weapon *Weapon) GetSpellSchool() SpellSchool
- type WeaponAttack
Constants ¶
const ( ItemIDAtieshMage = 22589 ItemIDAtieshWarlock = 22630 ItemIDBraidedEterniumChain = 24114 ItemIDChainOfTheTwilightOwl = 24121 ItemIDEyeOfTheNight = 24116 ItemIDJadePendantOfBlasting = 20966 ItemIDTheLightningCapacitor = 28785 )
IDs for items used in core
const ( ProcMaskMeleeMH = ProcMaskMeleeMHAuto | ProcMaskMeleeMHSpecial ProcMaskMeleeOH = ProcMaskMeleeOHAuto | ProcMaskMeleeOHSpecial // Equivalent to in-game mask of 4. ProcMaskMeleeWhiteHit = ProcMaskMeleeMHAuto | ProcMaskMeleeOHAuto // Equivalent to in-game mask of 68. ProcMaskWhiteHit = ProcMaskMeleeMHAuto | ProcMaskMeleeOHAuto | ProcMaskRangedAuto // Equivalent to in-game mask of 16. ProcMaskMeleeSpecial = ProcMaskMeleeMHSpecial | ProcMaskMeleeOHSpecial // Equivalent to in-game mask of 272. ProcMaskMeleeOrRangedSpecial = ProcMaskMeleeSpecial | ProcMaskRangedSpecial // Equivalent to in-game mask of 20. ProcMaskMelee = ProcMaskMeleeWhiteHit | ProcMaskMeleeSpecial // Equivalent to in-game mask of 320. ProcMaskRanged = ProcMaskRangedAuto | ProcMaskRangedSpecial // Equivalent to in-game mask of 340. ProcMaskMeleeOrRanged = ProcMaskMelee | ProcMaskRanged ProcMaskDirect = ProcMaskMelee | ProcMaskRanged | ProcMaskSpellDamage ProcMaskSpecial = ProcMaskMeleeOrRangedSpecial | ProcMaskSpellDamage ProcMaskMeleeOrProc = ProcMaskMelee | ProcMaskProc ProcMaskSpellOrProc = ProcMaskSpellDamage | ProcMaskProc )
const ( OutcomePartial = OutcomePartial1 | OutcomePartial2 | OutcomePartial4 | OutcomePartial8 OutcomeLanded = OutcomeHit | OutcomeCrit | OutcomeCrush | OutcomeGlance | OutcomeBlock )
const ( CooldownPriorityLow = -1000 CooldownPriorityDefault = 0 CooldownPriorityDrums = 2000 CooldownPriorityBloodlust = 1000 )
const ( MovementStart = iota MovementUpdate MovementEnd )
const ( VengeanceAPDecayRate = 0.1 // AP bonus decays by 10% every 2 seconds, or 5% if the character has been hit in that time OutcomeVengeanceTriggers = OutcomeLanded )
const AverageMagicPartialResistMultiplier = 0.94
const BleedEffectCategory = "BleedDamage"
Bleed Damage Multiplier category
const BlockRatingPerBlockChance = 88.359444
const BloodlustAuraTag = "Bloodlust"
const BloodlustCD = time.Minute * 10
const BloodlustDuration = time.Second * 40
const CharacterBuildPhaseAll = CharacterBuildPhaseBase | CharacterBuildPhaseGear | CharacterBuildPhaseTalents | CharacterBuildPhaseBuffs | CharacterBuildPhaseConsumes
const CharacterLevel = 85
const CombatTableCoverageCap = 1.024 // 102.4% chance to avoid an attack
const CritRatingPerCritChance = 179.280040
const DTPSReferenceStat = stats.Armor
const DefaultAttackPowerPerDPS = 14.0
const DefenseRatingPerDefense = 19.208574
const Diminish_Cd_Druid = 116.890707 / 100
const Diminish_Cd_Nondruid = 65.631440 / 100
const Diminish_Cp = 65.631440 / 100
const Diminish_kCd_Druid = (Diminish_k_Druid * Diminish_Cd_Druid)
const Diminish_kCd_Nondruid = (Diminish_k_Nondruid * Diminish_Cd_Nondruid)
const Diminish_kCp = (Diminish_k_Nondruid * Diminish_Cp)
const Diminish_k_Druid = 0.972
Could be in constants.go, but they won't be used anywhere else C values are divided by 100 so that we are working with 1% = 0.01 Reference for Cata values: https://web.archive.org/web/20130127084642/http://elitistjerks.com/f15/t29453-combat_ratings_level_85_cataclysm/
const Diminish_k_Nondruid = 0.956
const DivineGuardianCD = time.Minute * 2
const DivineGuardianDuration = time.Second * 6
const DodgeRatingPerDodgeChance = 176.718900
const EnemyAutoAttackAPCoefficient = 1.0 / (14.0 * 177.0)
Updated based on formulas supplied by InDebt on WoWSims Discord
const ExpertisePerQuarterPercentReduction = 30.027197
const GCDDefault = time.Millisecond * 1500
const GCDMin = time.Second * 1
const GuardianSpiritCD = time.Minute * 3
const GuardianSpiritDuration = time.Second * 10
const HandOfSacrificeCD = time.Minute * 5 // use Divine Shield CD here
const HandOfSacrificeDuration = time.Millisecond * 10500 // subtract Divine Shield GCD
const HasteRatingPerHastePercent = 128.057160
const HuntersMarkAuraTag = "HuntersMark"
const Inactive = -1
const InnervateCD = time.Minute * 3
const InnervateDuration = time.Second * 10
const LongDuration = 300
const ManaTideTotemCD = time.Minute * 5
const ManaTideTotemDuration = time.Second * 12
const MasteryRatingPerMasteryPoint = 179.280040
const MaxMeleeRange = 5.0 // in yards
const MaxRage = 100.0
const MaxSpellQueueWindow = time.Millisecond * 400
const MeleeHitRatingPerHitChance = 120.108800
const NeverExpires = time.Duration(math.MaxInt64)
const PainSuppressionCD = time.Minute * 3
const PainSuppressionDuration = time.Second * 8
const ParryRatingPerParryChance = 176.718900
const PowerInfusionCD = time.Minute * 2
const PowerInfusionDuration = time.Second * 15
const ReplenishmentAuraDuration = time.Second * 15
const ResilienceRatingPerCritReductionChance = 0.000000
const SatedAuraLabel = "Sated"
const ShatteringThrowCD = time.Minute * 5
const ShortDuration = 60
const SpellCritEffectCategory = "spellcritdebuff"
const SpellDamageEffectAuraTag = "SpellDamageAuraTag"
const SpellHitRatingPerHitChance = 102.445740
const ThreatPerManaGained = 0.5
const ThreatPerRageGained = 5
const TricksOfTheTradeCD = time.Second * 3600 // CD is 30s from the time buff ends (so 40s with glyph) but that's in order to be able to set the number of TotT you'll have during the fight
const UnholyFrenzyCD = time.Minute * 3
const UnholyFrenzyDuration = time.Second * 30
Variables ¶
var AddEffectsToTest = true
This value can be set before adding item effects, to control whether they are included in tests.
var AlchStoneItemIDs = []int32{80508, 96252, 96253, 96254, 44322, 44323, 44324}
var AverageDefaultSimTestOptions = &proto.SimOptions{ Iterations: 2000, IsTest: true, Debug: false, RandomSeed: 101, }
var BaseStats = map[BaseStatsKey]stats.Stats{}
var BigDaddyActionID = ActionID{SpellID: 89637}
var BloodlustActionID = ActionID{SpellID: 2825}
var ChanceOfDeathAuraLabel = "Chance of Death"
var ClassBaseScaling = map[proto.Class]float64{ proto.Class_ClassDeathKnight: 1125.227400, proto.Class_ClassDruid: 986.626460, proto.Class_ClassHunter: 1125.227400, proto.Class_ClassMage: 937.330080, proto.Class_ClassPaladin: 1029.493400, proto.Class_ClassPriest: 945.188840, proto.Class_ClassRogue: 1125.227400, proto.Class_ClassShaman: 1004.487900, proto.Class_ClassWarlock: 962.335630, proto.Class_ClassWarrior: 1125.227400, }
var ClassBaseStats = map[proto.Class]stats.Stats{ proto.Class_ClassUnknown: {}, proto.Class_ClassWarrior: { stats.Health: 43285, stats.Agility: 123, stats.Strength: 189, stats.Intellect: 37, stats.Spirit: 63, stats.Stamina: 173, stats.AttackPower: float64(CharacterLevel)*3.0 - 20, }, proto.Class_ClassPaladin: { stats.Health: 43285, stats.Agility: 97, stats.Strength: 164, stats.Intellect: 106, stats.Spirit: 117, stats.Stamina: 156, stats.AttackPower: float64(CharacterLevel)*3.0 - 20, }, proto.Class_ClassHunter: { stats.Health: 39037, stats.Agility: 198, stats.Strength: 80, stats.Intellect: 105, stats.Spirit: 97, stats.Stamina: 138, stats.AttackPower: float64(CharacterLevel)*2.0 - 20, stats.RangedAttackPower: float64(CharacterLevel)*2.0 - 10, }, proto.Class_ClassRogue: { stats.Health: 40529, stats.Agility: 206, stats.Strength: 122, stats.Intellect: 46, stats.Spirit: 71, stats.Stamina: 114, stats.AttackPower: float64(CharacterLevel)*2.0 - 20, }, proto.Class_ClassPriest: { stats.Health: 43285, stats.Agility: 54, stats.Strength: 46, stats.Intellect: 190, stats.Spirit: 198, stats.Stamina: 71, }, proto.Class_ClassDeathKnight: { stats.Health: 43285, stats.Agility: 121, stats.Strength: 191, stats.Intellect: 36, stats.Spirit: 63, stats.Stamina: 174, stats.AttackPower: float64(CharacterLevel)*3.0 - 20, }, proto.Class_ClassShaman: { stats.Health: 37097, stats.Agility: 80, stats.Strength: 131, stats.Intellect: 139, stats.Spirit: 156, stats.Stamina: 158, stats.AttackPower: float64(CharacterLevel)*2.0 - 30, }, proto.Class_ClassMage: { stats.Health: 37113, stats.Agility: 46, stats.Strength: 37, stats.Intellect: 198, stats.Spirit: 190, stats.Stamina: 63, }, proto.Class_ClassWarlock: { stats.Health: 38184, stats.Agility: 71, stats.Strength: 63, stats.Intellect: 173, stats.Spirit: 161, stats.Stamina: 96, stats.AttackPower: -10, }, proto.Class_ClassDruid: { stats.Health: 39533, stats.Agility: 89, stats.Strength: 96, stats.Intellect: 156, stats.Spirit: 173, stats.Stamina: 106, stats.AttackPower: float64(CharacterLevel)*3.0 - 10, }, }
var ConjuredAuraTag = "Conjured"
var CritPerAgiMaxLevel = map[proto.Class]float64{ proto.Class_ClassUnknown: 0.0, proto.Class_ClassWarrior: 0.0041, proto.Class_ClassPaladin: 0.0049, proto.Class_ClassHunter: 0.0031, proto.Class_ClassRogue: 0.0031, proto.Class_ClassPriest: 0.0049, proto.Class_ClassDeathKnight: 0.0041, proto.Class_ClassShaman: 0.0031, proto.Class_ClassMage: 0.0050, proto.Class_ClassWarlock: 0.0051, proto.Class_ClassDruid: 0.0031, }
var CritPerIntMaxLevel = map[proto.Class]float64{ proto.Class_ClassUnknown: 0.0, proto.Class_ClassWarrior: 0.0000, proto.Class_ClassPaladin: 0.0015, proto.Class_ClassHunter: 0.0000, proto.Class_ClassRogue: 0.0000, proto.Class_ClassPriest: 0.0015, proto.Class_ClassDeathKnight: 0.0000, proto.Class_ClassShaman: 0.0015, proto.Class_ClassMage: 0.0015, proto.Class_ClassWarlock: 0.0015, proto.Class_ClassDruid: 0.0015, }
var DefaultSimTestOptions = &proto.SimOptions{ Iterations: 20, IsTest: true, Debug: false, RandomSeed: 101, }
var DefaultTargetProto = &proto.Target{ Level: CharacterLevel + 3, Stats: stats.Stats{ stats.Armor: 11977, stats.AttackPower: 805, }.ToFloatArray(), MobType: proto.MobType_MobTypeGiant, SwingSpeed: 1.5, MinBaseDamage: 65000, ParryHaste: true, DamageSpread: 0, }
var DivineGuardianAuraTag = "DivineGuardian"
var EnchantsByEffectID = map[int32]Enchant{}
var ExtraClassBaseStats = map[proto.Class]stats.Stats{ proto.Class_ClassUnknown: {}, proto.Class_ClassWarrior: { stats.Mana: 0.0000, stats.SpellCrit: 0.0000 * CritRatingPerCritChance, stats.MeleeCrit: 0.0000 * CritRatingPerCritChance, }, proto.Class_ClassPaladin: { stats.Mana: 23422.0000, stats.SpellCrit: 3.3355 * CritRatingPerCritChance, stats.MeleeCrit: 0.6520 * CritRatingPerCritChance, }, proto.Class_ClassHunter: { stats.Mana: 0.0000, stats.SpellCrit: 0.0000 * CritRatingPerCritChance, stats.MeleeCrit: -1.5320 * CritRatingPerCritChance, }, proto.Class_ClassRogue: { stats.Mana: 0.0000, stats.SpellCrit: 0.0000 * CritRatingPerCritChance, stats.MeleeCrit: -0.2950 * CritRatingPerCritChance, }, proto.Class_ClassPriest: { stats.Mana: 20590.0000, stats.SpellCrit: 1.2375 * CritRatingPerCritChance, stats.MeleeCrit: 3.1765 * CritRatingPerCritChance, }, proto.Class_ClassDeathKnight: { stats.Mana: 0.0000, stats.SpellCrit: 0.0000 * CritRatingPerCritChance, stats.MeleeCrit: 0.0000 * CritRatingPerCritChance, }, proto.Class_ClassShaman: { stats.Mana: 23430.0000, stats.SpellCrit: 2.2010 * CritRatingPerCritChance, stats.MeleeCrit: 2.9220 * CritRatingPerCritChance, }, proto.Class_ClassMage: { stats.Mana: 17418.0000, stats.SpellCrit: 0.9075 * CritRatingPerCritChance, stats.MeleeCrit: 3.4540 * CritRatingPerCritChance, }, proto.Class_ClassWarlock: { stats.Mana: 20553.0000, stats.SpellCrit: 1.7000 * CritRatingPerCritChance, stats.MeleeCrit: 2.6220 * CritRatingPerCritChance, }, proto.Class_ClassDruid: { stats.Mana: 18635.0000, stats.SpellCrit: 1.8515 * CritRatingPerCritChance, stats.MeleeCrit: 7.4755 * CritRatingPerCritChance, }, }
var FullDebuffs = &proto.Debuffs{ BloodFrenzy: true, CurseOfElements: true, CurseOfWeakness: true, EarthAndMoon: true, EbonPlaguebringer: true, ExposeArmor: true, FaerieFire: true, Mangle: true, SunderArmor: true, ThunderClap: true, Vindication: true, MasterPoisoner: true, CriticalMass: true, DemoralizingRoar: true, }
var FullIndividualBuffs = &proto.IndividualBuffs{ VampiricTouch: true, }
var FullPartyBuffs = &proto.PartyBuffs{}
var FullRaidBuffs = &proto.RaidBuffs{ BlessingOfKings: true, PowerWordFortitude: true, BlessingOfMight: true, MoonkinForm: true, ElementalOath: true, StrengthOfEarthTotem: true, IcyTalons: true, ArcaneBrilliance: true, DemonicPact: true, Bloodlust: true, Communion: true, ShadowForm: true, }
var GemsByID = map[int32]Gem{}
var GuardianSpiritAuraTag = "GuardianSpirit"
var HandOfSacrificeAuraTag = "HandOfSacrifice"
var HighpoweredBoltGunActionID = ActionID{ItemID: 40771}
var InnervateAuraTag = "Innervate"
var ItemsByID = map[int32]Item{}
var ManaTideTotemActionID = ActionID{SpellID: 16190}
var ManaTideTotemAuraTag = "ManaTideTotem"
var (
OutcomePartialOffset = bits.TrailingZeros(uint(OutcomePartial1))
)
var PainSuppressionAuraTag = "PainSuppression"
var PotionAuraTag = "Potion"
var PowerInfusionActionID = ActionID{SpellID: 10060}
var PowerInfusionAuraTag = "PowerInfusion"
var PresetEncounters []*proto.PresetEncounter
var RaceOffsets = map[proto.Race]stats.Stats{ proto.Race_RaceUnknown: stats.Stats{}, proto.Race_RaceHuman: stats.Stats{}, proto.Race_RaceOrc: { stats.Agility: -3, stats.Strength: 3, stats.Intellect: -3, stats.Spirit: 2, stats.Stamina: 1, }, proto.Race_RaceDwarf: { stats.Agility: -4, stats.Strength: 5, stats.Intellect: -1, stats.Spirit: -1, stats.Stamina: 1, }, proto.Race_RaceNightElf: { stats.Agility: 4, stats.Strength: -4, stats.Intellect: 0, stats.Spirit: 0, stats.Stamina: 0, }, proto.Race_RaceUndead: { stats.Agility: -2, stats.Strength: -1, stats.Intellect: -2, stats.Spirit: 5, stats.Stamina: 0, }, proto.Race_RaceTauren: { stats.Agility: -4, stats.Strength: 5, stats.Intellect: -4, stats.Spirit: 2, stats.Stamina: 1, }, proto.Race_RaceGnome: { stats.Agility: 2, stats.Strength: -5, stats.Intellect: 3, stats.Spirit: 0, stats.Stamina: 0, }, proto.Race_RaceTroll: { stats.Agility: 2, stats.Strength: 1, stats.Intellect: -4, stats.Spirit: 1, stats.Stamina: 0, }, proto.Race_RaceBloodElf: { stats.Agility: 2, stats.Strength: -3, stats.Intellect: 3, stats.Spirit: -2, stats.Stamina: 0, }, proto.Race_RaceDraenei: { stats.Agility: -3, stats.Strength: 1, stats.Intellect: 0, stats.Spirit: 2, stats.Stamina: 0, }, proto.Race_RaceGoblin: { stats.Agility: 2, stats.Strength: -3, stats.Intellect: 3, stats.Spirit: -2, stats.Stamina: 0, }, proto.Race_RaceWorgen: { stats.Agility: 2, stats.Strength: 3, stats.Intellect: -4, stats.Spirit: -1, stats.Stamina: 0, }, }
var RandomSuffixesByID = map[int32]RandomSuffix{}
var ReforgeStatsByID = map[int32]ReforgeStat{}
var ShatteringThrowAuraTag = "ShatteringThrow"
var ShatteringThrowDuration = time.Second * 10
var StatWeightsDefaultSimTestOptions = &proto.SimOptions{ Iterations: 300, IsTest: true, Debug: false, RandomSeed: 101, }
var TricksOfTheTradeAuraTag = "TricksOfTheTrade"
var UnholyFrenzyAuraTag = "UnholyFrenzy"
var WITH_DB = false
Functions ¶
func APLRotationFromJsonString ¶
func APLRotationFromJsonString(jsonString string) *proto.APLRotation
func AddPresetEncounter ¶
func AddPresetTarget ¶
func AddPresetTarget(newPreset *PresetTarget)
func AddWeaponEffect ¶
func AddWeaponEffect(id int32, weaponEffect ApplyWeaponEffect)
func ApplyFixedUptimeAura ¶
func ApplyInspiration ¶
func ApplyProcTriggerCallback ¶
func ApplyProcTriggerCallback(unit *Unit, aura *Aura, config ProcTrigger)
func ApplyVarianceMinMax ¶
func ApplyVengeanceEffect ¶
func ApplyVengeanceEffect(character *Character, tracker *VengeanceTracker, spellID int32)
To use: add a VengeanceTracker member to your spec-specific struct (e.g ProtWarrior, BloodDeathKnight, etc) then call this with your class's specific Vengeance spell ID
func BothTimersReady ¶
func BothTimersReady(t1 *Timer, t2 *Timer, sim *Simulation) bool
func BulkSim ¶
func BulkSim(ctx context.Context, request *proto.BulkSimRequest, progress chan *proto.ProgressMetrics) *proto.BulkSimResult
func CalcScalingSpellAverageEffect ¶
spellEffectCoefficient is the value in the "Coefficient" column of the SpellEffect DB2 table
func CalcScalingSpellEffectVarianceMinMax ¶
func CalcScalingSpellEffectVarianceMinMax(class proto.Class, spellEffectCoefficient float64, spellEffectVariance float64) (float64, float64)
spellEffectCoefficient is the value in the "Coefficient" column of the SpellEffect DB2 table spellEffectVariance is the value in the "Variance" column of the SpellEffect DB2 table
func CharacterStatsTest ¶
func CompareConcurrentSimResultsTest ¶
func CompareConcurrentSimResultsTest(t *testing.T, testName string, singleThreadRes *proto.RaidSimResult, multiThreadRes *proto.RaidSimResult, baseFloatTolerance float64)
func ComputeStats ¶
func ComputeStats(csr *proto.ComputeStatsRequest) *proto.ComputeStatsResult
*
- Returns character stats taking into account gear / buffs / consumes / etc
func DebugCompareLogs ¶
func DebugCompareLogs(rsr *proto.RaidSimRequest, showCount int) (bool, string)
func DisableDamageDoneByCaster ¶
func DisableDamageDoneByCaster(index int, attackTable *AttackTable)
func DurationFromSeconds ¶
func EnableDamageDoneByCaster ¶
func EnableDamageDoneByCaster(index int, maxIndex int, attackTable *AttackTable, handler DynamicDamageDoneByCaster)
func EquipmentSpecFromJsonString ¶
func EquipmentSpecFromJsonString(jsonString string) *proto.EquipmentSpec
func FillTalentsProto ¶
func FillTalentsProto(data protoreflect.Message, talentsStr string, treeSizes [3]int)
Uses proto reflection to set fields in a talents proto (e.g. MageTalents, WarriorTalents) based on a talentsStr. treeSizes should contain the number of talents in each tree, usually around 30. This is needed because talent strings truncate 0's at the end of each tree, so we can't infer the start index of the tree from the string.
func FilterMap ¶
func FilterMap[K comparable, V any](src map[K]V, f func(K, V) bool) map[K]V
Returns a new map containing only the key/value pairs for which f returns true.
func FilterSlice ¶
Returns a new slice containing only the elements for which f returns true.
func GetClassSpellScalingCoefficient ¶
Gets the spell scaling coefficient associated with a given class Retrieved from https://wago.tools/api/casc/1391660?download&branch=wow_classic_beta
func GetPrimaryTalentTreeIndex ¶
Returns the talent tree (0, 1, or 2) of the tree with the most points.
talentStr is expected to be a wowhead-formatted talent string, e.g. "12123131-123123123-123123213"
func GetTristateValueFloat ¶
func GetTristateValueFloat(effect proto.TristateEffect, regularValue float64, impValue float64) float64
func GetTristateValueInt32 ¶
func GetTristateValueInt32(effect proto.TristateEffect, regularValue int32, impValue int32) int32
func HasEnchantEffect ¶
func HasItemEffect ¶
func HasItemEffectForTest ¶
func HasWeaponEffect ¶
func InnervateManaThreshold ¶
func ItemEquipmentStats ¶
func MakeTristateValue ¶
func MakeTristateValue(hasRegular bool, hasImproved bool) proto.TristateEffect
func MapMap ¶
func MapMap[KI comparable, VI any, KO comparable, VO any](src map[KI]VI, f func(KI, VI) (KO, VO)) map[KO]VO
Returns a new map by applying f to each key/value pair in src.
func MaxTimeToReady ¶
func MaxTimeToReady(t1 *Timer, t2 *Timer, sim *Simulation) time.Duration
func NewDefaultTarget ¶
func NewEnchantEffect ¶
func NewEnchantEffect(id int32, enchantEffect ApplyEffect)
func NewItemEffect ¶
func NewItemEffect(id int32, itemEffect ApplyEffect)
Registers an ApplyEffect function which will be called before the Sim starts, for any Agent that is wearing the item.
func NewSimpleStatItemEffect ¶
func NewSimpleStatItemEffect(itemID int32, bonus stats.Stats, duration time.Duration, cooldown time.Duration)
No shared CD
func RaidBenchmark ¶
func RaidBenchmark(b *testing.B, rsr *proto.RaidSimRequest)
func RaidPlayersWithClass ¶
func RaidSimTest ¶
func ReforgeStatToProto ¶
func ReforgeStatToProto(stat ReforgeStat) *proto.ReforgeStat
ReforgeStatToProto converts a Go ReforgeStat to a protobuf ReforgeStat
func RegisterAgentFactory ¶
func RegisterAgentFactory(emptyOptions interface{}, spec proto.Spec, factory AgentFactory, specSetter SpecSetter)
func RegisterTemporaryStatsOnUseCD ¶
func RegisterTemporaryStatsOnUseCD(character *Character, auraLabel string, tempStats stats.Stats, duration time.Duration, config SpellConfig)
Add a major cooldown to the given agent, which provides a temporary boost to a single stat. This is use for effects like Icon of the Silver Crescent and Bloodlust Brooch.
func RunBulkSim ¶
func RunBulkSim(request *proto.BulkSimRequest) *proto.BulkSimResult
func RunBulkSimAsync ¶
func RunBulkSimAsync(ctx context.Context, request *proto.BulkSimRequest, progress chan *proto.ProgressMetrics)
func RunConcurrentRaidSimAsync ¶
func RunConcurrentRaidSimAsync(request *proto.RaidSimRequest, progress chan *proto.ProgressMetrics)
Run sim on multiple threads concurrently by splitting interations over multiple sims, transparently combining results into the progress channel.
func RunConcurrentRaidSimSync ¶
func RunConcurrentRaidSimSync(request *proto.RaidSimRequest) *proto.RaidSimResult
Run a concurrent sim and wait for final result
func RunRaidSim ¶
func RunRaidSim(request *proto.RaidSimRequest) *proto.RaidSimResult
*
- Runs multiple iterations of the sim with a full raid.
func RunRaidSimAsync ¶
func RunRaidSimAsync(request *proto.RaidSimRequest, progress chan *proto.ProgressMetrics)
func RunSim ¶
func RunSim(rsr *proto.RaidSimRequest, progress chan *proto.ProgressMetrics, quitSignal chan bool) *proto.RaidSimResult
func RunTestSuite ¶
func RunTestSuite(t *testing.T, suiteName string, generator TestGenerator)
func ScheduledMajorArmorAura ¶
func ScheduledMajorArmorAura(aura *Aura, options PeriodicActionOptions, raid *proto.Raid)
func SinglePlayerRaidProto ¶
func StatWeights ¶
func StatWeights(request *proto.StatWeightsRequest) *proto.StatWeightsResult
*
- Returns stat weights and EP values, with standard deviations, for all stats.
func StatWeightsAsync ¶
func StatWeightsAsync(request *proto.StatWeightsRequest, progress chan *proto.ProgressMetrics)
func StatWeightsTest ¶
func TernaryDuration ¶
func UnitLevelFloat64 ¶
func UpdateVengeance ¶
func UpdateVengeance(sim *Simulation, character *Character, tracker *VengeanceTracker, aura *Aura)
Types ¶
type APLAction ¶
type APLAction struct {
// contains filtered or unexported fields
}
func (*APLAction) Execute ¶
func (action *APLAction) Execute(sim *Simulation)
func (*APLAction) Finalize ¶
func (action *APLAction) Finalize(rot *APLRotation)
func (*APLAction) GetAllAPLValues ¶
Returns all APLValues used by this action and all of its inner Actions.
func (*APLAction) GetAllActions ¶
Returns this Action, along with all inner Actions.
func (*APLAction) GetAllSpells ¶
func (*APLAction) IsReady ¶
func (action *APLAction) IsReady(sim *Simulation) bool
type APLActionActivateAura ¶
type APLActionActivateAura struct {
// contains filtered or unexported fields
}
func (*APLActionActivateAura) Execute ¶
func (action *APLActionActivateAura) Execute(sim *Simulation)
func (APLActionActivateAura) Finalize ¶
func (impl APLActionActivateAura) Finalize(*APLRotation)
func (APLActionActivateAura) GetAPLValues ¶
func (impl APLActionActivateAura) GetAPLValues() []APLValue
func (APLActionActivateAura) GetInnerActions ¶
func (impl APLActionActivateAura) GetInnerActions() []*APLAction
func (APLActionActivateAura) GetNextAction ¶
func (impl APLActionActivateAura) GetNextAction(*Simulation) *APLAction
func (*APLActionActivateAura) IsReady ¶
func (action *APLActionActivateAura) IsReady(sim *Simulation) bool
func (APLActionActivateAura) Reset ¶
func (impl APLActionActivateAura) Reset(*Simulation)
func (*APLActionActivateAura) String ¶
func (action *APLActionActivateAura) String() string
type APLActionAutocastOtherCooldowns ¶
type APLActionAutocastOtherCooldowns struct {
// contains filtered or unexported fields
}
func (*APLActionAutocastOtherCooldowns) Execute ¶
func (action *APLActionAutocastOtherCooldowns) Execute(sim *Simulation)
func (APLActionAutocastOtherCooldowns) Finalize ¶
func (impl APLActionAutocastOtherCooldowns) Finalize(*APLRotation)
func (APLActionAutocastOtherCooldowns) GetAPLValues ¶
func (impl APLActionAutocastOtherCooldowns) GetAPLValues() []APLValue
func (APLActionAutocastOtherCooldowns) GetInnerActions ¶
func (impl APLActionAutocastOtherCooldowns) GetInnerActions() []*APLAction
func (APLActionAutocastOtherCooldowns) GetNextAction ¶
func (impl APLActionAutocastOtherCooldowns) GetNextAction(*Simulation) *APLAction
func (*APLActionAutocastOtherCooldowns) IsReady ¶
func (action *APLActionAutocastOtherCooldowns) IsReady(sim *Simulation) bool
func (*APLActionAutocastOtherCooldowns) Reset ¶
func (action *APLActionAutocastOtherCooldowns) Reset(*Simulation)
func (*APLActionAutocastOtherCooldowns) String ¶
func (action *APLActionAutocastOtherCooldowns) String() string
type APLActionCancelAura ¶
type APLActionCancelAura struct {
// contains filtered or unexported fields
}
func (*APLActionCancelAura) Execute ¶
func (action *APLActionCancelAura) Execute(sim *Simulation)
func (APLActionCancelAura) Finalize ¶
func (impl APLActionCancelAura) Finalize(*APLRotation)
func (APLActionCancelAura) GetAPLValues ¶
func (impl APLActionCancelAura) GetAPLValues() []APLValue
func (APLActionCancelAura) GetInnerActions ¶
func (impl APLActionCancelAura) GetInnerActions() []*APLAction
func (APLActionCancelAura) GetNextAction ¶
func (impl APLActionCancelAura) GetNextAction(*Simulation) *APLAction
func (*APLActionCancelAura) IsReady ¶
func (action *APLActionCancelAura) IsReady(sim *Simulation) bool
func (APLActionCancelAura) Reset ¶
func (impl APLActionCancelAura) Reset(*Simulation)
func (*APLActionCancelAura) String ¶
func (action *APLActionCancelAura) String() string
type APLActionCastFriendlySpell ¶
type APLActionCastFriendlySpell struct {
// contains filtered or unexported fields
}
func (*APLActionCastFriendlySpell) Execute ¶
func (action *APLActionCastFriendlySpell) Execute(sim *Simulation)
func (APLActionCastFriendlySpell) Finalize ¶
func (impl APLActionCastFriendlySpell) Finalize(*APLRotation)
func (APLActionCastFriendlySpell) GetAPLValues ¶
func (impl APLActionCastFriendlySpell) GetAPLValues() []APLValue
func (APLActionCastFriendlySpell) GetInnerActions ¶
func (impl APLActionCastFriendlySpell) GetInnerActions() []*APLAction
func (APLActionCastFriendlySpell) GetNextAction ¶
func (impl APLActionCastFriendlySpell) GetNextAction(*Simulation) *APLAction
func (*APLActionCastFriendlySpell) IsReady ¶
func (action *APLActionCastFriendlySpell) IsReady(sim *Simulation) bool
func (APLActionCastFriendlySpell) Reset ¶
func (impl APLActionCastFriendlySpell) Reset(*Simulation)
func (*APLActionCastFriendlySpell) String ¶
func (action *APLActionCastFriendlySpell) String() string
type APLActionCastSpell ¶
type APLActionCastSpell struct {
// contains filtered or unexported fields
}
func (*APLActionCastSpell) Execute ¶
func (action *APLActionCastSpell) Execute(sim *Simulation)
func (APLActionCastSpell) Finalize ¶
func (impl APLActionCastSpell) Finalize(*APLRotation)
func (APLActionCastSpell) GetAPLValues ¶
func (impl APLActionCastSpell) GetAPLValues() []APLValue
func (APLActionCastSpell) GetInnerActions ¶
func (impl APLActionCastSpell) GetInnerActions() []*APLAction
func (APLActionCastSpell) GetNextAction ¶
func (impl APLActionCastSpell) GetNextAction(*Simulation) *APLAction
func (*APLActionCastSpell) IsReady ¶
func (action *APLActionCastSpell) IsReady(sim *Simulation) bool
func (APLActionCastSpell) Reset ¶
func (impl APLActionCastSpell) Reset(*Simulation)
func (*APLActionCastSpell) String ¶
func (action *APLActionCastSpell) String() string
type APLActionChangeTarget ¶
type APLActionChangeTarget struct {
// contains filtered or unexported fields
}
func (*APLActionChangeTarget) Execute ¶
func (action *APLActionChangeTarget) Execute(sim *Simulation)
func (APLActionChangeTarget) Finalize ¶
func (impl APLActionChangeTarget) Finalize(*APLRotation)
func (APLActionChangeTarget) GetAPLValues ¶
func (impl APLActionChangeTarget) GetAPLValues() []APLValue
func (APLActionChangeTarget) GetInnerActions ¶
func (impl APLActionChangeTarget) GetInnerActions() []*APLAction
func (APLActionChangeTarget) GetNextAction ¶
func (impl APLActionChangeTarget) GetNextAction(*Simulation) *APLAction
func (*APLActionChangeTarget) IsReady ¶
func (action *APLActionChangeTarget) IsReady(sim *Simulation) bool
func (APLActionChangeTarget) Reset ¶
func (impl APLActionChangeTarget) Reset(*Simulation)
func (*APLActionChangeTarget) String ¶
func (action *APLActionChangeTarget) String() string
type APLActionChannelSpell ¶
type APLActionChannelSpell struct {
// contains filtered or unexported fields
}
func (*APLActionChannelSpell) Execute ¶
func (action *APLActionChannelSpell) Execute(sim *Simulation)
func (APLActionChannelSpell) Finalize ¶
func (impl APLActionChannelSpell) Finalize(*APLRotation)
func (*APLActionChannelSpell) GetAPLValues ¶
func (action *APLActionChannelSpell) GetAPLValues() []APLValue
func (APLActionChannelSpell) GetInnerActions ¶
func (impl APLActionChannelSpell) GetInnerActions() []*APLAction
func (APLActionChannelSpell) GetNextAction ¶
func (impl APLActionChannelSpell) GetNextAction(*Simulation) *APLAction
func (*APLActionChannelSpell) IsReady ¶
func (action *APLActionChannelSpell) IsReady(sim *Simulation) bool
func (APLActionChannelSpell) Reset ¶
func (impl APLActionChannelSpell) Reset(*Simulation)
func (*APLActionChannelSpell) String ¶
func (action *APLActionChannelSpell) String() string
type APLActionCustomRotation ¶
type APLActionCustomRotation struct {
// contains filtered or unexported fields
}
func (*APLActionCustomRotation) Execute ¶
func (action *APLActionCustomRotation) Execute(sim *Simulation)
func (APLActionCustomRotation) Finalize ¶
func (impl APLActionCustomRotation) Finalize(*APLRotation)
func (APLActionCustomRotation) GetAPLValues ¶
func (impl APLActionCustomRotation) GetAPLValues() []APLValue
func (APLActionCustomRotation) GetInnerActions ¶
func (impl APLActionCustomRotation) GetInnerActions() []*APLAction
func (APLActionCustomRotation) GetNextAction ¶
func (impl APLActionCustomRotation) GetNextAction(*Simulation) *APLAction
func (*APLActionCustomRotation) IsReady ¶
func (action *APLActionCustomRotation) IsReady(sim *Simulation) bool
func (*APLActionCustomRotation) Reset ¶
func (action *APLActionCustomRotation) Reset(sim *Simulation)
func (*APLActionCustomRotation) String ¶
func (action *APLActionCustomRotation) String() string
type APLActionImpl ¶
type APLActionImpl interface { // Returns all inner APL Actions. GetInnerActions() []*APLAction // Returns all APLValues used by this Action (but not by inner Actions). GetAPLValues() []APLValue // Performs optional post-processing. Finalize(*APLRotation) // Invoked before each sim iteration. Reset(*Simulation) // Whether this action is available to be used right now. IsReady(*Simulation) bool // Performs the action. Execute(*Simulation) // Called only while this action is controlling the rotation. GetNextAction(sim *Simulation) *APLAction // Pretty-print string for debugging. String() string }
type APLActionItemSwap ¶
type APLActionItemSwap struct {
// contains filtered or unexported fields
}
func (*APLActionItemSwap) Execute ¶
func (action *APLActionItemSwap) Execute(sim *Simulation)
func (APLActionItemSwap) Finalize ¶
func (impl APLActionItemSwap) Finalize(*APLRotation)
func (APLActionItemSwap) GetAPLValues ¶
func (impl APLActionItemSwap) GetAPLValues() []APLValue
func (APLActionItemSwap) GetInnerActions ¶
func (impl APLActionItemSwap) GetInnerActions() []*APLAction
func (APLActionItemSwap) GetNextAction ¶
func (impl APLActionItemSwap) GetNextAction(*Simulation) *APLAction
func (*APLActionItemSwap) IsReady ¶
func (action *APLActionItemSwap) IsReady(sim *Simulation) bool
func (APLActionItemSwap) Reset ¶
func (impl APLActionItemSwap) Reset(*Simulation)
func (*APLActionItemSwap) String ¶
func (action *APLActionItemSwap) String() string
type APLActionMove ¶
type APLActionMove struct {
// contains filtered or unexported fields
}
func (*APLActionMove) Execute ¶
func (action *APLActionMove) Execute(sim *Simulation)
func (APLActionMove) Finalize ¶
func (impl APLActionMove) Finalize(*APLRotation)
func (APLActionMove) GetAPLValues ¶
func (impl APLActionMove) GetAPLValues() []APLValue
func (APLActionMove) GetInnerActions ¶
func (impl APLActionMove) GetInnerActions() []*APLAction
func (APLActionMove) GetNextAction ¶
func (impl APLActionMove) GetNextAction(*Simulation) *APLAction
func (*APLActionMove) IsReady ¶
func (action *APLActionMove) IsReady(sim *Simulation) bool
func (APLActionMove) Reset ¶
func (impl APLActionMove) Reset(*Simulation)
func (*APLActionMove) String ¶
func (action *APLActionMove) String() string
type APLActionMoveDuration ¶
type APLActionMoveDuration struct {
// contains filtered or unexported fields
}
func (*APLActionMoveDuration) Execute ¶
func (action *APLActionMoveDuration) Execute(sim *Simulation)
func (APLActionMoveDuration) Finalize ¶
func (impl APLActionMoveDuration) Finalize(*APLRotation)
func (APLActionMoveDuration) GetAPLValues ¶
func (impl APLActionMoveDuration) GetAPLValues() []APLValue
func (APLActionMoveDuration) GetInnerActions ¶
func (impl APLActionMoveDuration) GetInnerActions() []*APLAction
func (APLActionMoveDuration) GetNextAction ¶
func (impl APLActionMoveDuration) GetNextAction(*Simulation) *APLAction
func (*APLActionMoveDuration) IsReady ¶
func (action *APLActionMoveDuration) IsReady(sim *Simulation) bool
func (APLActionMoveDuration) Reset ¶
func (impl APLActionMoveDuration) Reset(*Simulation)
func (*APLActionMoveDuration) String ¶
func (action *APLActionMoveDuration) String() string
type APLActionMultidot ¶
type APLActionMultidot struct {
// contains filtered or unexported fields
}
func (*APLActionMultidot) Execute ¶
func (action *APLActionMultidot) Execute(sim *Simulation)
func (APLActionMultidot) Finalize ¶
func (impl APLActionMultidot) Finalize(*APLRotation)
func (*APLActionMultidot) GetAPLValues ¶
func (action *APLActionMultidot) GetAPLValues() []APLValue
func (APLActionMultidot) GetInnerActions ¶
func (impl APLActionMultidot) GetInnerActions() []*APLAction
func (APLActionMultidot) GetNextAction ¶
func (impl APLActionMultidot) GetNextAction(*Simulation) *APLAction
func (*APLActionMultidot) IsReady ¶
func (action *APLActionMultidot) IsReady(sim *Simulation) bool
func (*APLActionMultidot) Reset ¶
func (action *APLActionMultidot) Reset(*Simulation)
func (*APLActionMultidot) String ¶
func (action *APLActionMultidot) String() string
type APLActionMultishield ¶
type APLActionMultishield struct {
// contains filtered or unexported fields
}
func (*APLActionMultishield) Execute ¶
func (action *APLActionMultishield) Execute(sim *Simulation)
func (APLActionMultishield) Finalize ¶
func (impl APLActionMultishield) Finalize(*APLRotation)
func (*APLActionMultishield) GetAPLValues ¶
func (action *APLActionMultishield) GetAPLValues() []APLValue
func (APLActionMultishield) GetInnerActions ¶
func (impl APLActionMultishield) GetInnerActions() []*APLAction
func (APLActionMultishield) GetNextAction ¶
func (impl APLActionMultishield) GetNextAction(*Simulation) *APLAction
func (*APLActionMultishield) IsReady ¶
func (action *APLActionMultishield) IsReady(sim *Simulation) bool
func (*APLActionMultishield) Reset ¶
func (action *APLActionMultishield) Reset(*Simulation)
func (*APLActionMultishield) String ¶
func (action *APLActionMultishield) String() string
type APLActionResetSequence ¶
type APLActionResetSequence struct {
// contains filtered or unexported fields
}
func (*APLActionResetSequence) Execute ¶
func (action *APLActionResetSequence) Execute(sim *Simulation)
func (*APLActionResetSequence) Finalize ¶
func (action *APLActionResetSequence) Finalize(rot *APLRotation)
func (APLActionResetSequence) GetAPLValues ¶
func (impl APLActionResetSequence) GetAPLValues() []APLValue
func (APLActionResetSequence) GetInnerActions ¶
func (impl APLActionResetSequence) GetInnerActions() []*APLAction
func (APLActionResetSequence) GetNextAction ¶
func (impl APLActionResetSequence) GetNextAction(*Simulation) *APLAction
func (*APLActionResetSequence) IsReady ¶
func (action *APLActionResetSequence) IsReady(sim *Simulation) bool
func (APLActionResetSequence) Reset ¶
func (impl APLActionResetSequence) Reset(*Simulation)
func (*APLActionResetSequence) String ¶
func (action *APLActionResetSequence) String() string
type APLActionSchedule ¶
type APLActionSchedule struct {
// contains filtered or unexported fields
}
func (*APLActionSchedule) Execute ¶
func (action *APLActionSchedule) Execute(sim *Simulation)
func (APLActionSchedule) Finalize ¶
func (impl APLActionSchedule) Finalize(*APLRotation)
func (APLActionSchedule) GetAPLValues ¶
func (impl APLActionSchedule) GetAPLValues() []APLValue
func (*APLActionSchedule) GetInnerActions ¶
func (action *APLActionSchedule) GetInnerActions() []*APLAction
func (APLActionSchedule) GetNextAction ¶
func (impl APLActionSchedule) GetNextAction(*Simulation) *APLAction
func (*APLActionSchedule) IsReady ¶
func (action *APLActionSchedule) IsReady(sim *Simulation) bool
func (*APLActionSchedule) Reset ¶
func (action *APLActionSchedule) Reset(*Simulation)
func (*APLActionSchedule) String ¶
func (action *APLActionSchedule) String() string
type APLActionSequence ¶
type APLActionSequence struct {
// contains filtered or unexported fields
}
func (*APLActionSequence) Execute ¶
func (action *APLActionSequence) Execute(sim *Simulation)
func (*APLActionSequence) Finalize ¶
func (action *APLActionSequence) Finalize(rot *APLRotation)
func (APLActionSequence) GetAPLValues ¶
func (impl APLActionSequence) GetAPLValues() []APLValue
func (*APLActionSequence) GetInnerActions ¶
func (action *APLActionSequence) GetInnerActions() []*APLAction
func (APLActionSequence) GetNextAction ¶
func (impl APLActionSequence) GetNextAction(*Simulation) *APLAction
func (*APLActionSequence) IsReady ¶
func (action *APLActionSequence) IsReady(sim *Simulation) bool
func (*APLActionSequence) Reset ¶
func (action *APLActionSequence) Reset(*Simulation)
func (*APLActionSequence) String ¶
func (action *APLActionSequence) String() string
type APLActionStrictSequence ¶
type APLActionStrictSequence struct {
// contains filtered or unexported fields
}
func (*APLActionStrictSequence) Execute ¶
func (action *APLActionStrictSequence) Execute(sim *Simulation)
func (*APLActionStrictSequence) Finalize ¶
func (action *APLActionStrictSequence) Finalize(rot *APLRotation)
func (APLActionStrictSequence) GetAPLValues ¶
func (impl APLActionStrictSequence) GetAPLValues() []APLValue
func (*APLActionStrictSequence) GetInnerActions ¶
func (action *APLActionStrictSequence) GetInnerActions() []*APLAction
func (*APLActionStrictSequence) GetNextAction ¶
func (action *APLActionStrictSequence) GetNextAction(sim *Simulation) *APLAction
func (*APLActionStrictSequence) IsReady ¶
func (action *APLActionStrictSequence) IsReady(sim *Simulation) bool
func (*APLActionStrictSequence) Reset ¶
func (action *APLActionStrictSequence) Reset(*Simulation)
func (*APLActionStrictSequence) String ¶
func (action *APLActionStrictSequence) String() string
type APLActionTriggerICD ¶
type APLActionTriggerICD struct {
// contains filtered or unexported fields
}
func (*APLActionTriggerICD) Execute ¶
func (action *APLActionTriggerICD) Execute(sim *Simulation)
func (APLActionTriggerICD) Finalize ¶
func (impl APLActionTriggerICD) Finalize(*APLRotation)
func (APLActionTriggerICD) GetAPLValues ¶
func (impl APLActionTriggerICD) GetAPLValues() []APLValue
func (APLActionTriggerICD) GetInnerActions ¶
func (impl APLActionTriggerICD) GetInnerActions() []*APLAction
func (APLActionTriggerICD) GetNextAction ¶
func (impl APLActionTriggerICD) GetNextAction(*Simulation) *APLAction
func (*APLActionTriggerICD) IsReady ¶
func (action *APLActionTriggerICD) IsReady(sim *Simulation) bool
func (APLActionTriggerICD) Reset ¶
func (impl APLActionTriggerICD) Reset(*Simulation)
func (*APLActionTriggerICD) String ¶
func (action *APLActionTriggerICD) String() string
type APLActionWait ¶
type APLActionWait struct {
// contains filtered or unexported fields
}
func (*APLActionWait) Execute ¶
func (action *APLActionWait) Execute(sim *Simulation)
func (APLActionWait) Finalize ¶
func (impl APLActionWait) Finalize(*APLRotation)
func (*APLActionWait) GetAPLValues ¶
func (action *APLActionWait) GetAPLValues() []APLValue
func (APLActionWait) GetInnerActions ¶
func (impl APLActionWait) GetInnerActions() []*APLAction
func (*APLActionWait) GetNextAction ¶
func (action *APLActionWait) GetNextAction(sim *Simulation) *APLAction
func (*APLActionWait) IsReady ¶
func (action *APLActionWait) IsReady(sim *Simulation) bool
func (APLActionWait) Reset ¶
func (impl APLActionWait) Reset(*Simulation)
func (*APLActionWait) String ¶
func (action *APLActionWait) String() string
type APLActionWaitUntil ¶
type APLActionWaitUntil struct {
// contains filtered or unexported fields
}
func (*APLActionWaitUntil) Execute ¶
func (action *APLActionWaitUntil) Execute(sim *Simulation)
func (APLActionWaitUntil) Finalize ¶
func (impl APLActionWaitUntil) Finalize(*APLRotation)
func (*APLActionWaitUntil) GetAPLValues ¶
func (action *APLActionWaitUntil) GetAPLValues() []APLValue
func (APLActionWaitUntil) GetInnerActions ¶
func (impl APLActionWaitUntil) GetInnerActions() []*APLAction
func (*APLActionWaitUntil) GetNextAction ¶
func (action *APLActionWaitUntil) GetNextAction(sim *Simulation) *APLAction
func (*APLActionWaitUntil) IsReady ¶
func (action *APLActionWaitUntil) IsReady(sim *Simulation) bool
func (APLActionWaitUntil) Reset ¶
func (impl APLActionWaitUntil) Reset(*Simulation)
func (*APLActionWaitUntil) String ¶
func (action *APLActionWaitUntil) String() string
type APLRotation ¶
type APLRotation struct {
// contains filtered or unexported fields
}
func (*APLRotation) DoNextAction ¶
func (apl *APLRotation) DoNextAction(sim *Simulation)
We intentionally try to mimic the behavior of simc APL to avoid confusion and leverage the community's existing familiarity. https://github.com/simulationcraft/simc/wiki/ActionLists
func (*APLRotation) GetAPLAura ¶
func (rot *APLRotation) GetAPLAura(sourceUnit UnitReference, auraId *proto.ActionID) AuraReference
func (*APLRotation) GetAPLDot ¶
func (rot *APLRotation) GetAPLDot(targetUnit UnitReference, spellId *proto.ActionID) *Dot
func (*APLRotation) GetAPLICDAura ¶
func (rot *APLRotation) GetAPLICDAura(sourceUnit UnitReference, auraId *proto.ActionID) AuraReference
func (*APLRotation) GetAPLMultidotSpell ¶
func (rot *APLRotation) GetAPLMultidotSpell(spellId *proto.ActionID) *Spell
func (*APLRotation) GetAPLMultishieldSpell ¶
func (rot *APLRotation) GetAPLMultishieldSpell(spellId *proto.ActionID) *Spell
func (*APLRotation) GetAPLSpell ¶
func (rot *APLRotation) GetAPLSpell(spellId *proto.ActionID) *Spell
func (*APLRotation) GetSourceUnit ¶
func (rot *APLRotation) GetSourceUnit(ref *proto.UnitReference) UnitReference
func (*APLRotation) GetTargetAPLSpell ¶
func (rot *APLRotation) GetTargetAPLSpell(spellId *proto.ActionID, targetUnit UnitReference) *Spell
func (*APLRotation) GetTargetUnit ¶
func (rot *APLRotation) GetTargetUnit(ref *proto.UnitReference) UnitReference
func (*APLRotation) ValidationWarning ¶
func (rot *APLRotation) ValidationWarning(message string, vals ...interface{})
type APLValue ¶
type APLValue interface { // Returns all inner APLValues. GetInnerValues() []APLValue // The type of value that will be returned. Type() proto.APLValueType // Gets the value, assuming it is a particular type. Usually only one of // these should be implemented in each class. GetBool(*Simulation) bool GetInt(*Simulation) int32 GetFloat(*Simulation) float64 GetDuration(*Simulation) time.Duration GetString(*Simulation) string // Performs optional post-processing. Finalize(*APLRotation) // Pretty-print string for debugging. String() string }
type APLValueAnd ¶
type APLValueAnd struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAnd) GetBool ¶
func (value *APLValueAnd) GetBool(sim *Simulation) bool
func (*APLValueAnd) GetInnerValues ¶
func (value *APLValueAnd) GetInnerValues() []APLValue
func (*APLValueAnd) String ¶
func (value *APLValueAnd) String() string
func (*APLValueAnd) Type ¶
func (value *APLValueAnd) Type() proto.APLValueType
type APLValueAuraICDIsReadyWithReactionTime ¶
type APLValueAuraICDIsReadyWithReactionTime struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraICDIsReadyWithReactionTime) GetBool ¶
func (value *APLValueAuraICDIsReadyWithReactionTime) GetBool(sim *Simulation) bool
func (*APLValueAuraICDIsReadyWithReactionTime) String ¶
func (value *APLValueAuraICDIsReadyWithReactionTime) String() string
func (*APLValueAuraICDIsReadyWithReactionTime) Type ¶
func (value *APLValueAuraICDIsReadyWithReactionTime) Type() proto.APLValueType
type APLValueAuraInternalCooldown ¶
type APLValueAuraInternalCooldown struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraInternalCooldown) GetDuration ¶
func (value *APLValueAuraInternalCooldown) GetDuration(sim *Simulation) time.Duration
func (*APLValueAuraInternalCooldown) String ¶
func (value *APLValueAuraInternalCooldown) String() string
func (*APLValueAuraInternalCooldown) Type ¶
func (value *APLValueAuraInternalCooldown) Type() proto.APLValueType
type APLValueAuraIsActive ¶
type APLValueAuraIsActive struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraIsActive) GetBool ¶
func (value *APLValueAuraIsActive) GetBool(sim *Simulation) bool
func (*APLValueAuraIsActive) String ¶
func (value *APLValueAuraIsActive) String() string
func (*APLValueAuraIsActive) Type ¶
func (value *APLValueAuraIsActive) Type() proto.APLValueType
type APLValueAuraIsActiveWithReactionTime ¶
type APLValueAuraIsActiveWithReactionTime struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraIsActiveWithReactionTime) GetBool ¶
func (value *APLValueAuraIsActiveWithReactionTime) GetBool(sim *Simulation) bool
func (*APLValueAuraIsActiveWithReactionTime) String ¶
func (value *APLValueAuraIsActiveWithReactionTime) String() string
func (*APLValueAuraIsActiveWithReactionTime) Type ¶
func (value *APLValueAuraIsActiveWithReactionTime) Type() proto.APLValueType
type APLValueAuraIsKnown ¶
type APLValueAuraIsKnown struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraIsKnown) GetBool ¶
func (value *APLValueAuraIsKnown) GetBool(sim *Simulation) bool
func (*APLValueAuraIsKnown) String ¶
func (value *APLValueAuraIsKnown) String() string
func (*APLValueAuraIsKnown) Type ¶
func (value *APLValueAuraIsKnown) Type() proto.APLValueType
type APLValueAuraNumStacks ¶
type APLValueAuraNumStacks struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraNumStacks) GetInt ¶
func (value *APLValueAuraNumStacks) GetInt(sim *Simulation) int32
func (*APLValueAuraNumStacks) String ¶
func (value *APLValueAuraNumStacks) String() string
func (*APLValueAuraNumStacks) Type ¶
func (value *APLValueAuraNumStacks) Type() proto.APLValueType
type APLValueAuraRemainingTime ¶
type APLValueAuraRemainingTime struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraRemainingTime) GetDuration ¶
func (value *APLValueAuraRemainingTime) GetDuration(sim *Simulation) time.Duration
func (*APLValueAuraRemainingTime) String ¶
func (value *APLValueAuraRemainingTime) String() string
func (*APLValueAuraRemainingTime) Type ¶
func (value *APLValueAuraRemainingTime) Type() proto.APLValueType
type APLValueAuraShouldRefresh ¶
type APLValueAuraShouldRefresh struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAuraShouldRefresh) GetBool ¶
func (value *APLValueAuraShouldRefresh) GetBool(sim *Simulation) bool
func (*APLValueAuraShouldRefresh) GetInnerValues ¶
func (value *APLValueAuraShouldRefresh) GetInnerValues() []APLValue
func (*APLValueAuraShouldRefresh) String ¶
func (value *APLValueAuraShouldRefresh) String() string
func (*APLValueAuraShouldRefresh) Type ¶
func (value *APLValueAuraShouldRefresh) Type() proto.APLValueType
type APLValueAutoTimeToNext ¶
type APLValueAutoTimeToNext struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueAutoTimeToNext) GetDuration ¶
func (value *APLValueAutoTimeToNext) GetDuration(sim *Simulation) time.Duration
func (*APLValueAutoTimeToNext) String ¶
func (value *APLValueAutoTimeToNext) String() string
func (*APLValueAutoTimeToNext) Type ¶
func (value *APLValueAutoTimeToNext) Type() proto.APLValueType
type APLValueBossSpellIsCasting ¶
type APLValueBossSpellIsCasting struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueBossSpellIsCasting) GetBool ¶
func (value *APLValueBossSpellIsCasting) GetBool(sim *Simulation) bool
func (*APLValueBossSpellIsCasting) String ¶
func (value *APLValueBossSpellIsCasting) String() string
func (*APLValueBossSpellIsCasting) Type ¶
func (value *APLValueBossSpellIsCasting) Type() proto.APLValueType
type APLValueBossSpellTimeToReady ¶
type APLValueBossSpellTimeToReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueBossSpellTimeToReady) GetDuration ¶
func (value *APLValueBossSpellTimeToReady) GetDuration(sim *Simulation) time.Duration
func (*APLValueBossSpellTimeToReady) String ¶
func (value *APLValueBossSpellTimeToReady) String() string
func (*APLValueBossSpellTimeToReady) Type ¶
func (value *APLValueBossSpellTimeToReady) Type() proto.APLValueType
type APLValueChannelClipDelay ¶
type APLValueChannelClipDelay struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueChannelClipDelay) GetDuration ¶
func (value *APLValueChannelClipDelay) GetDuration(sim *Simulation) time.Duration
func (*APLValueChannelClipDelay) String ¶
func (value *APLValueChannelClipDelay) String() string
func (*APLValueChannelClipDelay) Type ¶
func (value *APLValueChannelClipDelay) Type() proto.APLValueType
type APLValueCoerced ¶
type APLValueCoerced struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCoerced) GetBool ¶
func (value *APLValueCoerced) GetBool(sim *Simulation) bool
func (APLValueCoerced) GetDuration ¶
func (value APLValueCoerced) GetDuration(sim *Simulation) time.Duration
func (APLValueCoerced) GetFloat ¶
func (value APLValueCoerced) GetFloat(sim *Simulation) float64
func (*APLValueCoerced) GetInnerValues ¶
func (value *APLValueCoerced) GetInnerValues() []APLValue
func (APLValueCoerced) GetInt ¶
func (value APLValueCoerced) GetInt(sim *Simulation) int32
func (APLValueCoerced) GetString ¶
func (value APLValueCoerced) GetString(sim *Simulation) string
func (*APLValueCoerced) String ¶
func (value *APLValueCoerced) String() string
func (*APLValueCoerced) Type ¶
func (value *APLValueCoerced) Type() proto.APLValueType
type APLValueCompare ¶
type APLValueCompare struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCompare) GetBool ¶
func (value *APLValueCompare) GetBool(sim *Simulation) bool
func (*APLValueCompare) GetInnerValues ¶
func (value *APLValueCompare) GetInnerValues() []APLValue
func (*APLValueCompare) String ¶
func (value *APLValueCompare) String() string
func (*APLValueCompare) Type ¶
func (value *APLValueCompare) Type() proto.APLValueType
type APLValueConst ¶
type APLValueConst struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueConst) GetBool ¶
func (value *APLValueConst) GetBool(_ *Simulation) bool
func (*APLValueConst) GetDuration ¶
func (value *APLValueConst) GetDuration(_ *Simulation) time.Duration
func (*APLValueConst) GetFloat ¶
func (value *APLValueConst) GetFloat(_ *Simulation) float64
func (*APLValueConst) GetInt ¶
func (value *APLValueConst) GetInt(_ *Simulation) int32
func (*APLValueConst) GetString ¶
func (value *APLValueConst) GetString(_ *Simulation) string
func (*APLValueConst) String ¶
func (value *APLValueConst) String() string
func (*APLValueConst) Type ¶
func (value *APLValueConst) Type() proto.APLValueType
type APLValueCurrentComboPoints ¶
type APLValueCurrentComboPoints struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentComboPoints) GetInt ¶
func (value *APLValueCurrentComboPoints) GetInt(sim *Simulation) int32
func (*APLValueCurrentComboPoints) String ¶
func (value *APLValueCurrentComboPoints) String() string
func (*APLValueCurrentComboPoints) Type ¶
func (value *APLValueCurrentComboPoints) Type() proto.APLValueType
type APLValueCurrentEnergy ¶
type APLValueCurrentEnergy struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentEnergy) GetFloat ¶
func (value *APLValueCurrentEnergy) GetFloat(sim *Simulation) float64
func (*APLValueCurrentEnergy) String ¶
func (value *APLValueCurrentEnergy) String() string
func (*APLValueCurrentEnergy) Type ¶
func (value *APLValueCurrentEnergy) Type() proto.APLValueType
type APLValueCurrentFocus ¶
type APLValueCurrentFocus struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentFocus) GetFloat ¶
func (value *APLValueCurrentFocus) GetFloat(sim *Simulation) float64
func (*APLValueCurrentFocus) String ¶
func (value *APLValueCurrentFocus) String() string
func (*APLValueCurrentFocus) Type ¶
func (value *APLValueCurrentFocus) Type() proto.APLValueType
type APLValueCurrentHealth ¶
type APLValueCurrentHealth struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentHealth) GetFloat ¶
func (value *APLValueCurrentHealth) GetFloat(sim *Simulation) float64
func (*APLValueCurrentHealth) String ¶
func (value *APLValueCurrentHealth) String() string
func (*APLValueCurrentHealth) Type ¶
func (value *APLValueCurrentHealth) Type() proto.APLValueType
type APLValueCurrentHealthPercent ¶
type APLValueCurrentHealthPercent struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentHealthPercent) GetFloat ¶
func (value *APLValueCurrentHealthPercent) GetFloat(sim *Simulation) float64
func (*APLValueCurrentHealthPercent) String ¶
func (value *APLValueCurrentHealthPercent) String() string
func (*APLValueCurrentHealthPercent) Type ¶
func (value *APLValueCurrentHealthPercent) Type() proto.APLValueType
type APLValueCurrentMana ¶
type APLValueCurrentMana struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentMana) GetFloat ¶
func (value *APLValueCurrentMana) GetFloat(sim *Simulation) float64
func (*APLValueCurrentMana) String ¶
func (value *APLValueCurrentMana) String() string
func (*APLValueCurrentMana) Type ¶
func (value *APLValueCurrentMana) Type() proto.APLValueType
type APLValueCurrentManaPercent ¶
type APLValueCurrentManaPercent struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentManaPercent) GetFloat ¶
func (value *APLValueCurrentManaPercent) GetFloat(sim *Simulation) float64
func (*APLValueCurrentManaPercent) String ¶
func (value *APLValueCurrentManaPercent) String() string
func (*APLValueCurrentManaPercent) Type ¶
func (value *APLValueCurrentManaPercent) Type() proto.APLValueType
type APLValueCurrentNonDeathRuneCount ¶
type APLValueCurrentNonDeathRuneCount struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentNonDeathRuneCount) GetInt ¶
func (value *APLValueCurrentNonDeathRuneCount) GetInt(_ *Simulation) int32
func (*APLValueCurrentNonDeathRuneCount) String ¶
func (value *APLValueCurrentNonDeathRuneCount) String() string
func (*APLValueCurrentNonDeathRuneCount) Type ¶
func (value *APLValueCurrentNonDeathRuneCount) Type() proto.APLValueType
type APLValueCurrentRage ¶
type APLValueCurrentRage struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentRage) GetFloat ¶
func (value *APLValueCurrentRage) GetFloat(sim *Simulation) float64
func (*APLValueCurrentRage) String ¶
func (value *APLValueCurrentRage) String() string
func (*APLValueCurrentRage) Type ¶
func (value *APLValueCurrentRage) Type() proto.APLValueType
type APLValueCurrentRuneActive ¶
type APLValueCurrentRuneActive struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentRuneActive) GetBool ¶
func (value *APLValueCurrentRuneActive) GetBool(_ *Simulation) bool
func (*APLValueCurrentRuneActive) String ¶
func (value *APLValueCurrentRuneActive) String() string
func (*APLValueCurrentRuneActive) Type ¶
func (value *APLValueCurrentRuneActive) Type() proto.APLValueType
type APLValueCurrentRuneCount ¶
type APLValueCurrentRuneCount struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentRuneCount) GetInt ¶
func (value *APLValueCurrentRuneCount) GetInt(_ *Simulation) int32
func (*APLValueCurrentRuneCount) String ¶
func (value *APLValueCurrentRuneCount) String() string
func (*APLValueCurrentRuneCount) Type ¶
func (value *APLValueCurrentRuneCount) Type() proto.APLValueType
type APLValueCurrentRuneDeath ¶
type APLValueCurrentRuneDeath struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentRuneDeath) GetBool ¶
func (value *APLValueCurrentRuneDeath) GetBool(_ *Simulation) bool
func (*APLValueCurrentRuneDeath) String ¶
func (value *APLValueCurrentRuneDeath) String() string
func (*APLValueCurrentRuneDeath) Type ¶
func (value *APLValueCurrentRuneDeath) Type() proto.APLValueType
type APLValueCurrentRunicPower ¶
type APLValueCurrentRunicPower struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueCurrentRunicPower) GetInt ¶
func (value *APLValueCurrentRunicPower) GetInt(sim *Simulation) int32
func (*APLValueCurrentRunicPower) String ¶
func (value *APLValueCurrentRunicPower) String() string
func (*APLValueCurrentRunicPower) Type ¶
func (value *APLValueCurrentRunicPower) Type() proto.APLValueType
type APLValueCurrentTime ¶
type APLValueCurrentTime struct {
DefaultAPLValueImpl
}
func (*APLValueCurrentTime) GetDuration ¶
func (value *APLValueCurrentTime) GetDuration(sim *Simulation) time.Duration
func (*APLValueCurrentTime) String ¶
func (value *APLValueCurrentTime) String() string
func (*APLValueCurrentTime) Type ¶
func (value *APLValueCurrentTime) Type() proto.APLValueType
type APLValueCurrentTimePercent ¶
type APLValueCurrentTimePercent struct {
DefaultAPLValueImpl
}
func (*APLValueCurrentTimePercent) GetFloat ¶
func (value *APLValueCurrentTimePercent) GetFloat(sim *Simulation) float64
func (*APLValueCurrentTimePercent) String ¶
func (value *APLValueCurrentTimePercent) String() string
func (*APLValueCurrentTimePercent) Type ¶
func (value *APLValueCurrentTimePercent) Type() proto.APLValueType
type APLValueDotIsActive ¶
type APLValueDotIsActive struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueDotIsActive) GetBool ¶
func (value *APLValueDotIsActive) GetBool(sim *Simulation) bool
func (*APLValueDotIsActive) String ¶
func (value *APLValueDotIsActive) String() string
func (*APLValueDotIsActive) Type ¶
func (value *APLValueDotIsActive) Type() proto.APLValueType
type APLValueDotRemainingTime ¶
type APLValueDotRemainingTime struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueDotRemainingTime) GetDuration ¶
func (value *APLValueDotRemainingTime) GetDuration(sim *Simulation) time.Duration
func (*APLValueDotRemainingTime) String ¶
func (value *APLValueDotRemainingTime) String() string
func (*APLValueDotRemainingTime) Type ¶
func (value *APLValueDotRemainingTime) Type() proto.APLValueType
type APLValueDotTickFrequency ¶
type APLValueDotTickFrequency struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueDotTickFrequency) GetDuration ¶
func (value *APLValueDotTickFrequency) GetDuration(_ *Simulation) time.Duration
func (*APLValueDotTickFrequency) String ¶
func (value *APLValueDotTickFrequency) String() string
func (*APLValueDotTickFrequency) Type ¶
func (value *APLValueDotTickFrequency) Type() proto.APLValueType
type APLValueFrontOfTarget ¶
type APLValueFrontOfTarget struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueFrontOfTarget) GetBool ¶
func (value *APLValueFrontOfTarget) GetBool(sim *Simulation) bool
func (*APLValueFrontOfTarget) String ¶
func (value *APLValueFrontOfTarget) String() string
func (*APLValueFrontOfTarget) Type ¶
func (value *APLValueFrontOfTarget) Type() proto.APLValueType
type APLValueGCDIsReady ¶
type APLValueGCDIsReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueGCDIsReady) GetBool ¶
func (value *APLValueGCDIsReady) GetBool(sim *Simulation) bool
func (*APLValueGCDIsReady) String ¶
func (value *APLValueGCDIsReady) String() string
func (*APLValueGCDIsReady) Type ¶
func (value *APLValueGCDIsReady) Type() proto.APLValueType
type APLValueGCDTimeToReady ¶
type APLValueGCDTimeToReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueGCDTimeToReady) GetDuration ¶
func (value *APLValueGCDTimeToReady) GetDuration(sim *Simulation) time.Duration
func (*APLValueGCDTimeToReady) String ¶
func (value *APLValueGCDTimeToReady) String() string
func (*APLValueGCDTimeToReady) Type ¶
func (value *APLValueGCDTimeToReady) Type() proto.APLValueType
type APLValueInputDelay ¶
type APLValueInputDelay struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueInputDelay) GetDuration ¶
func (value *APLValueInputDelay) GetDuration(sim *Simulation) time.Duration
func (*APLValueInputDelay) String ¶
func (value *APLValueInputDelay) String() string
func (*APLValueInputDelay) Type ¶
func (value *APLValueInputDelay) Type() proto.APLValueType
type APLValueIsExecutePhase ¶
type APLValueIsExecutePhase struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueIsExecutePhase) GetBool ¶
func (value *APLValueIsExecutePhase) GetBool(sim *Simulation) bool
func (*APLValueIsExecutePhase) String ¶
func (value *APLValueIsExecutePhase) String() string
func (*APLValueIsExecutePhase) Type ¶
func (value *APLValueIsExecutePhase) Type() proto.APLValueType
type APLValueMath ¶
type APLValueMath struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueMath) GetDuration ¶
func (value *APLValueMath) GetDuration(sim *Simulation) time.Duration
func (*APLValueMath) GetFloat ¶
func (value *APLValueMath) GetFloat(sim *Simulation) float64
func (*APLValueMath) GetInnerValues ¶
func (value *APLValueMath) GetInnerValues() []APLValue
func (*APLValueMath) GetInt ¶
func (value *APLValueMath) GetInt(sim *Simulation) int32
func (*APLValueMath) String ¶
func (value *APLValueMath) String() string
func (*APLValueMath) Type ¶
func (value *APLValueMath) Type() proto.APLValueType
type APLValueMax ¶
type APLValueMax struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueMax) GetDuration ¶
func (value *APLValueMax) GetDuration(sim *Simulation) time.Duration
func (*APLValueMax) GetFloat ¶
func (value *APLValueMax) GetFloat(sim *Simulation) float64
func (*APLValueMax) GetInnerValues ¶
func (value *APLValueMax) GetInnerValues() []APLValue
func (*APLValueMax) GetInt ¶
func (value *APLValueMax) GetInt(sim *Simulation) int32
func (*APLValueMax) String ¶
func (value *APLValueMax) String() string
func (*APLValueMax) Type ¶
func (value *APLValueMax) Type() proto.APLValueType
type APLValueMin ¶
type APLValueMin struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueMin) GetDuration ¶
func (value *APLValueMin) GetDuration(sim *Simulation) time.Duration
func (*APLValueMin) GetFloat ¶
func (value *APLValueMin) GetFloat(sim *Simulation) float64
func (*APLValueMin) GetInnerValues ¶
func (value *APLValueMin) GetInnerValues() []APLValue
func (*APLValueMin) GetInt ¶
func (value *APLValueMin) GetInt(sim *Simulation) int32
func (*APLValueMin) String ¶
func (value *APLValueMin) String() string
func (*APLValueMin) Type ¶
func (value *APLValueMin) Type() proto.APLValueType
type APLValueNextRuneCooldown ¶
type APLValueNextRuneCooldown struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueNextRuneCooldown) GetDuration ¶
func (value *APLValueNextRuneCooldown) GetDuration(sim *Simulation) time.Duration
func (*APLValueNextRuneCooldown) String ¶
func (value *APLValueNextRuneCooldown) String() string
func (*APLValueNextRuneCooldown) Type ¶
func (value *APLValueNextRuneCooldown) Type() proto.APLValueType
type APLValueNot ¶
type APLValueNot struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueNot) GetBool ¶
func (value *APLValueNot) GetBool(sim *Simulation) bool
func (*APLValueNot) GetInnerValues ¶
func (value *APLValueNot) GetInnerValues() []APLValue
func (*APLValueNot) String ¶
func (value *APLValueNot) String() string
func (*APLValueNot) Type ¶
func (value *APLValueNot) Type() proto.APLValueType
type APLValueNumberTargets ¶
type APLValueNumberTargets struct {
DefaultAPLValueImpl
}
func (*APLValueNumberTargets) GetInt ¶
func (value *APLValueNumberTargets) GetInt(sim *Simulation) int32
func (*APLValueNumberTargets) String ¶
func (value *APLValueNumberTargets) String() string
func (*APLValueNumberTargets) Type ¶
func (value *APLValueNumberTargets) Type() proto.APLValueType
type APLValueOr ¶
type APLValueOr struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueOr) GetBool ¶
func (value *APLValueOr) GetBool(sim *Simulation) bool
func (*APLValueOr) GetInnerValues ¶
func (value *APLValueOr) GetInnerValues() []APLValue
func (*APLValueOr) String ¶
func (value *APLValueOr) String() string
func (*APLValueOr) Type ¶
func (value *APLValueOr) Type() proto.APLValueType
type APLValueRemainingTime ¶
type APLValueRemainingTime struct {
DefaultAPLValueImpl
}
func (*APLValueRemainingTime) GetDuration ¶
func (value *APLValueRemainingTime) GetDuration(sim *Simulation) time.Duration
func (*APLValueRemainingTime) String ¶
func (value *APLValueRemainingTime) String() string
func (*APLValueRemainingTime) Type ¶
func (value *APLValueRemainingTime) Type() proto.APLValueType
type APLValueRemainingTimePercent ¶
type APLValueRemainingTimePercent struct {
DefaultAPLValueImpl
}
func (*APLValueRemainingTimePercent) GetFloat ¶
func (value *APLValueRemainingTimePercent) GetFloat(sim *Simulation) float64
func (*APLValueRemainingTimePercent) String ¶
func (value *APLValueRemainingTimePercent) String() string
func (*APLValueRemainingTimePercent) Type ¶
func (value *APLValueRemainingTimePercent) Type() proto.APLValueType
type APLValueRuneCooldown ¶
type APLValueRuneCooldown struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueRuneCooldown) GetDuration ¶
func (value *APLValueRuneCooldown) GetDuration(sim *Simulation) time.Duration
func (*APLValueRuneCooldown) String ¶
func (value *APLValueRuneCooldown) String() string
func (*APLValueRuneCooldown) Type ¶
func (value *APLValueRuneCooldown) Type() proto.APLValueType
type APLValueRuneSlotCooldown ¶
type APLValueRuneSlotCooldown struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueRuneSlotCooldown) GetDuration ¶
func (value *APLValueRuneSlotCooldown) GetDuration(sim *Simulation) time.Duration
func (*APLValueRuneSlotCooldown) String ¶
func (value *APLValueRuneSlotCooldown) String() string
func (*APLValueRuneSlotCooldown) Type ¶
func (value *APLValueRuneSlotCooldown) Type() proto.APLValueType
type APLValueSequenceIsComplete ¶
type APLValueSequenceIsComplete struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSequenceIsComplete) Finalize ¶
func (value *APLValueSequenceIsComplete) Finalize(rot *APLRotation)
func (*APLValueSequenceIsComplete) GetBool ¶
func (value *APLValueSequenceIsComplete) GetBool(sim *Simulation) bool
func (*APLValueSequenceIsComplete) String ¶
func (value *APLValueSequenceIsComplete) String() string
func (*APLValueSequenceIsComplete) Type ¶
func (value *APLValueSequenceIsComplete) Type() proto.APLValueType
type APLValueSequenceIsReady ¶
type APLValueSequenceIsReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSequenceIsReady) Finalize ¶
func (value *APLValueSequenceIsReady) Finalize(rot *APLRotation)
func (*APLValueSequenceIsReady) GetBool ¶
func (value *APLValueSequenceIsReady) GetBool(sim *Simulation) bool
func (*APLValueSequenceIsReady) String ¶
func (value *APLValueSequenceIsReady) String() string
func (*APLValueSequenceIsReady) Type ¶
func (value *APLValueSequenceIsReady) Type() proto.APLValueType
type APLValueSequenceTimeToReady ¶
type APLValueSequenceTimeToReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSequenceTimeToReady) Finalize ¶
func (value *APLValueSequenceTimeToReady) Finalize(rot *APLRotation)
func (*APLValueSequenceTimeToReady) GetDuration ¶
func (value *APLValueSequenceTimeToReady) GetDuration(sim *Simulation) time.Duration
func (*APLValueSequenceTimeToReady) String ¶
func (value *APLValueSequenceTimeToReady) String() string
func (*APLValueSequenceTimeToReady) Type ¶
func (value *APLValueSequenceTimeToReady) Type() proto.APLValueType
type APLValueSpellCPM ¶
type APLValueSpellCPM struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellCPM) GetFloat ¶
func (value *APLValueSpellCPM) GetFloat(sim *Simulation) float64
func (*APLValueSpellCPM) String ¶
func (value *APLValueSpellCPM) String() string
func (*APLValueSpellCPM) Type ¶
func (value *APLValueSpellCPM) Type() proto.APLValueType
type APLValueSpellCanCast ¶
type APLValueSpellCanCast struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellCanCast) GetBool ¶
func (value *APLValueSpellCanCast) GetBool(sim *Simulation) bool
func (*APLValueSpellCanCast) String ¶
func (value *APLValueSpellCanCast) String() string
func (*APLValueSpellCanCast) Type ¶
func (value *APLValueSpellCanCast) Type() proto.APLValueType
type APLValueSpellCastTime ¶
type APLValueSpellCastTime struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellCastTime) GetDuration ¶
func (value *APLValueSpellCastTime) GetDuration(_ *Simulation) time.Duration
func (*APLValueSpellCastTime) String ¶
func (value *APLValueSpellCastTime) String() string
func (*APLValueSpellCastTime) Type ¶
func (value *APLValueSpellCastTime) Type() proto.APLValueType
type APLValueSpellChanneledTicks ¶
type APLValueSpellChanneledTicks struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellChanneledTicks) GetInt ¶
func (value *APLValueSpellChanneledTicks) GetInt(_ *Simulation) int32
func (*APLValueSpellChanneledTicks) String ¶
func (value *APLValueSpellChanneledTicks) String() string
func (*APLValueSpellChanneledTicks) Type ¶
func (value *APLValueSpellChanneledTicks) Type() proto.APLValueType
type APLValueSpellCurrentCost ¶
type APLValueSpellCurrentCost struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellCurrentCost) GetFloat ¶
func (value *APLValueSpellCurrentCost) GetFloat(_ *Simulation) float64
func (*APLValueSpellCurrentCost) String ¶
func (value *APLValueSpellCurrentCost) String() string
func (*APLValueSpellCurrentCost) Type ¶
func (value *APLValueSpellCurrentCost) Type() proto.APLValueType
type APLValueSpellIsChanneling ¶
type APLValueSpellIsChanneling struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellIsChanneling) GetBool ¶
func (value *APLValueSpellIsChanneling) GetBool(_ *Simulation) bool
func (*APLValueSpellIsChanneling) String ¶
func (value *APLValueSpellIsChanneling) String() string
func (*APLValueSpellIsChanneling) Type ¶
func (value *APLValueSpellIsChanneling) Type() proto.APLValueType
type APLValueSpellIsKnown ¶
type APLValueSpellIsKnown struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellIsKnown) GetBool ¶
func (value *APLValueSpellIsKnown) GetBool(sim *Simulation) bool
func (*APLValueSpellIsKnown) String ¶
func (value *APLValueSpellIsKnown) String() string
func (*APLValueSpellIsKnown) Type ¶
func (value *APLValueSpellIsKnown) Type() proto.APLValueType
type APLValueSpellIsReady ¶
type APLValueSpellIsReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellIsReady) GetBool ¶
func (value *APLValueSpellIsReady) GetBool(sim *Simulation) bool
func (*APLValueSpellIsReady) String ¶
func (value *APLValueSpellIsReady) String() string
func (*APLValueSpellIsReady) Type ¶
func (value *APLValueSpellIsReady) Type() proto.APLValueType
type APLValueSpellTimeToReady ¶
type APLValueSpellTimeToReady struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellTimeToReady) GetDuration ¶
func (value *APLValueSpellTimeToReady) GetDuration(sim *Simulation) time.Duration
func (*APLValueSpellTimeToReady) String ¶
func (value *APLValueSpellTimeToReady) String() string
func (*APLValueSpellTimeToReady) Type ¶
func (value *APLValueSpellTimeToReady) Type() proto.APLValueType
type APLValueSpellTravelTime ¶
type APLValueSpellTravelTime struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueSpellTravelTime) GetDuration ¶
func (value *APLValueSpellTravelTime) GetDuration(_ *Simulation) time.Duration
func (*APLValueSpellTravelTime) String ¶
func (value *APLValueSpellTravelTime) String() string
func (*APLValueSpellTravelTime) Type ¶
func (value *APLValueSpellTravelTime) Type() proto.APLValueType
type APLValueUnitIsMoving ¶
type APLValueUnitIsMoving struct { DefaultAPLValueImpl // contains filtered or unexported fields }
func (*APLValueUnitIsMoving) GetBool ¶
func (value *APLValueUnitIsMoving) GetBool(sim *Simulation) bool
func (*APLValueUnitIsMoving) String ¶
func (value *APLValueUnitIsMoving) String() string
func (*APLValueUnitIsMoving) Type ¶
func (value *APLValueUnitIsMoving) Type() proto.APLValueType
type ActionID ¶
type ActionID struct { // Only one of these should be set. SpellID int32 ItemID int32 OtherID proto.OtherAction Tag int32 }
func ProtoToActionID ¶
func (ActionID) IsEmptyAction ¶
func (ActionID) IsItemAction ¶
func (ActionID) IsOtherAction ¶
func (actionID ActionID) IsOtherAction(otherID proto.OtherAction) bool
func (ActionID) IsSpellAction ¶
func (ActionID) SameAction ¶
func (ActionID) SameActionIgnoreTag ¶
type ActionMetrics ¶
type ActionMetrics struct { IsMelee bool // True if melee action, false if spell action. // Metrics for this action, for each possible target. Targets []TargetedActionMetrics }
func (*ActionMetrics) ToProto ¶
func (actionMetrics *ActionMetrics) ToProto(actionID ActionID) *proto.ActionMetrics
type ActionPriority ¶
type ActionPriority int32
const ( ActionPriorityLow ActionPriority = -1 ActionPriorityGCD ActionPriority = 0 // Higher than GCD because regen can cause GCD actions (if we were waiting // for mana). ActionPriorityRegen ActionPriority = 1 // Autos can cause regen (JoW, rage, energy procs, etc) so they should be // higher prio so that we never go backwards in the priority order. ActionPriorityAuto ActionPriority = 2 // DOTs need to be higher than anything else so that dots can properly expire before we take other actions. ActionPriorityDOT ActionPriority = 3 ActionPriorityPrePull ActionPriority = 10 )
type ActiveSetBonus ¶
type ActiveSetBonus struct { // Name of the set. Name string // Number of pieces required for this bonus. NumPieces int32 // Function for applying the effects of this set bonus. BonusEffect ApplyEffect }
type Agent ¶
type Agent interface { // The Character controlled by this Agent. GetCharacter() *Character // Called once after all Players/Pets/Targets have finished the construction phase. // Use this to register spells and any initialization steps that require // other raid members or auras. Initialize() // Updates the input Buffs to include raid-wide buffs provided by this Agent. AddRaidBuffs(raidBuffs *proto.RaidBuffs) // Updates the input Buffs to include party-wide buffs provided by this Agent. AddPartyBuffs(partyBuffs *proto.PartyBuffs) // All talent stats / auras should be added within this callback. This makes sure // talents are applied at the right time so we can calculate groups of stats. ApplyTalents() // Returns this Agent to its initial state. Called before each Sim iteration // and once after the final iteration. Reset(sim *Simulation) // Custom factories for APL values and actions, for cases where the value/action // involves class or spec-specific behavior. // // Should return nil when the config doesn't match any custom behaviors. NewAPLValue(rot *APLRotation, config *proto.APLValue) APLValue NewAPLAction(rot *APLRotation, config *proto.APLAction) APLActionImpl // Implements custom rotation behavior. Usually for pets and targets but can be used // for players too. ExecuteCustomRotation(sim *Simulation) }
Agent can be thought of as the 'Player', i.e. the thing controlling the Character. This is the interface implemented by each class/spec.
type ApplyEffect ¶
type ApplyEffect func(Agent)
Function for applying permanent effects to an Agent.
Passing Character instead of Agent would work for almost all cases, but there are occasionally class-specific item effects.
func MakeTemporaryStatsOnUseCDRegistration ¶
func MakeTemporaryStatsOnUseCDRegistration(auraLabel string, tempStats stats.Stats, duration time.Duration, config SpellConfig, cdFunc func(*Character) Cooldown, sharedCDFunc func(*Character) Cooldown) ApplyEffect
Helper function to make an ApplyEffect for a temporary stats on-use cooldown.
type ApplySpellResults ¶
type ApplySpellResults func(sim *Simulation, target *Unit, spell *Spell)
type ApplyWeaponEffect ¶
Function for applying permanent effects to an agent's weapon
type AttackTable ¶
type AttackTable struct { Attacker *Unit Defender *Unit BaseMissChance float64 BaseSpellMissChance float64 BaseBlockChance float64 BaseDodgeChance float64 BaseParryChance float64 BaseGlanceChance float64 GlanceMultiplier float64 MeleeCritSuppression float64 SpellCritSuppression float64 DamageDealtMultiplier float64 // attacker buff, applied in applyAttackerModifiers() DamageTakenMultiplier float64 // defender debuff, applied in applyTargetModifiers() HauntSEDamageTakenMultiplier float64 HealingDealtMultiplier float64 IgnoreArmor bool // Ignore defender's armor for specifically this attacker's attacks ArmorIgnoreFactor float64 // Percentage of armor to ignore for this attacker's attacks BonusCritRating float64 // crit rating modifier // This is for "Apply Aura: Mod Damage Done By Caster" effects. // If set, the damage taken multiplier is multiplied by the callbacks result. DamageDoneByCasterMultiplier DynamicDamageDoneByCaster // When you need more then 1 active, default to using the above one // Used with EnableDamageDoneByCaster/DisableDamageDoneByCaster DamageDoneByCasterExtraMultiplier []DynamicDamageDoneByCaster }
Holds cached values for outcome/damage calculations, for a specific attacker+defender pair. These are updated dynamically when attacker or defender stats change.
func NewAttackTable ¶
func NewAttackTable(attacker *Unit, defender *Unit) *AttackTable
func (*AttackTable) GetArmorDamageModifier ¶
func (at *AttackTable) GetArmorDamageModifier(spell *Spell) float64
https://web.archive.org/web/20130208043756/http://elitistjerks.com/f15/t29453-combat_ratings_level_85_cataclysm/ https://web.archive.org/web/20110309163709/http://elitistjerks.com/f78/t105429-cataclysm_mechanics_testing/
type Aura ¶
type Aura struct { // String label for this Aura. Guaranteed to be unique among the Auras for a single Unit. Label string // For easily grouping auras. Tag string ActionID ActionID // If set, metrics will be tracked for this aura. ActionIDForProc ActionID // If set, indicates that this aura is a trigger aura for the specified proc. Icd *Cooldown // The internal cooldown if any Ppmm *PPMManager // PPM manager for proc trigger auras if any Duration time.Duration // Duration of aura, upon being applied. // The unit this aura is attached to. Unit *Unit MaxStacks int32 ExclusiveEffects []*ExclusiveEffect // Lifecycle callbacks. OnInit OnInit OnReset OnReset OnDoneIteration OnDoneIteration OnGain OnGain OnExpire OnExpire OnStacksChange OnStacksChange // Invoked when the number of stacks of this aura changes. OnApplyEffects OnApplyEffects // Invoked when a spell cast is completing, before apply effects are called OnCastComplete OnCastComplete // Invoked when a spell cast completes casting, after apply effects. OnSpellHitDealt OnSpellHit // Invoked when a spell hits and this unit is the caster. OnSpellHitTaken OnSpellHit // Invoked when a spell hits and this unit is the target. OnPeriodicDamageDealt OnPeriodicDamage // Invoked when a dot tick occurs and this unit is the caster. OnPeriodicDamageTaken OnPeriodicDamage // Invoked when a dot tick occurs and this unit is the target. OnHealDealt OnSpellHit // Invoked when a heal hits and this unit is the caster. OnHealTaken OnSpellHit // Invoked when a heal hits and this unit is the target. OnPeriodicHealDealt OnPeriodicDamage // Invoked when a hot tick occurs and this unit is the caster. OnPeriodicHealTaken OnPeriodicDamage // Invoked when a hot tick occurs and this unit is the target. // If non-default, stat bonuses fron the OnGain callback of this aura will be // included in Character Stats in the UI. BuildPhase CharacterBuildPhase // contains filtered or unexported fields }
Aura lifecycle:
myAura := unit.RegisterAura(myAuraConfig) myAura.Activate(sim) myAura.SetStacks(sim, 3) myAura.Refresh(sim) myAura.Deactivate(sim)
func AbominationsMightAura ¶
func AcidSpitAura ¶
func ArcaneBrilliance ¶
func ArcaneTactics ¶
func AspectOfTheWildAura ¶
func BattleShoutAura ¶
func BlessingOfKingsAura ¶
func BlessingOfMightAura ¶
func BloodFrenzyAura ¶
func BloodPactAura ¶
func BloodlustAura ¶
func CommandingShoutAura ¶
func CorrosiveSpitAura ¶
func CriticalMassAura ¶
func CrystalYieldAura ¶
func CurseOfElementsAura ¶
func CurseOfWeaknessAura ¶
func DarkIntentAura ¶
func DemonicPact ¶
func DemoralizingRoarAura ¶
func DemoralizingScreechAura ¶
func DemoralizingShoutAura ¶
func DevotionAura ¶
func DivineGuardianAura ¶
func EarthAndMoonAura ¶
func EbonPlaguebringerAura ¶
func ElementalOath ¶
func ExposeArmorAura ¶
func FaerieFireAura ¶
func FelIntelligence ¶
func FerociousInspiration ¶
func FireBreathDebuff ¶
func FlametongueTotem ¶
/////////////////////////////////////////////////////////////////////////
Spell Power
/////////////////////////////////////////////////////////////////////////
func FrostFeverAura ¶
func FuriousHowl ¶
func GuardianSpiritAura ¶
func HandOfSacrificeAura ¶
func HemorrhageAura ¶
func HonorAmongThieves ¶
func HornOfWinterAura ¶
func HuntersMarkAura ¶
func HuntingParty ¶
func InfectedWoundsAura ¶
func InsectSwarmAura ¶
func InspirationAura ¶
func JudgementsOfTheJustAura ¶
Note: Paladin code might apply this as part of their judgement auras instead of using another separate aura.
func LeaderOfThePack ¶
func LightningBreath ¶
func MakeProcTriggerAura ¶
func MakeProcTriggerAura(unit *Unit, config ProcTrigger) *Aura
func MakeStackingAura ¶
func MakeStackingAura(character *Character, config StackingStatAura) *Aura
func ManaSpringTotem ¶
func ManaTideTotemAura ¶
TODO: Should this be a raid aura on every character available?
func MangleAura ¶
func MarkOfBloodAura ¶
func MarkOfTheWildAura ¶
func MasterPoisonerDebuff ¶
func MoonkinAura ¶
func PainSuppressionAura ¶
func PowerInfusionAura ¶
func ResistanceAura ¶
func RetributionAura ¶
func RoarOfCourageAura ¶
func SavageCombatAura ¶
func ShadowAndFlameAura ¶
func ShadowFormAura ¶
func ShadowProtectionAura ¶
func ShatteringThrowAura ¶
func StampedeAura ¶
func StoneskinTotem ¶
func SunderArmorAura ¶
func TerrifyingRoar ¶
func ThunderClapAura ¶
func TotemicWrath ¶
func TraumaAura ¶
func TricksOfTheTradeAura ¶
func TrueShotAura ¶
func UnholyFrenzyAura ¶
func UnleashedRageAura ¶
func VindicationAura ¶
func WindfuryTotem ¶
func WrathOfAirAura ¶
func (*Aura) Activate ¶
func (aura *Aura) Activate(sim *Simulation)
Adds a new aura to the simulation. If an aura with the same ID already exists it will be replaced with the new one.
func (*Aura) AddStack ¶
func (aura *Aura) AddStack(sim *Simulation)
func (*Aura) ApplyOnExpire ¶
Adds a handler to be called OnExpire, in addition to any current handlers.
func (*Aura) ApplyOnGain ¶
Adds a handler to be called OnGain, in addition to any current handlers.
func (*Aura) NewExclusiveEffect ¶
func (aura *Aura) NewExclusiveEffect(categoryName string, singleAura bool, config ExclusiveEffect) *ExclusiveEffect
func (*Aura) Refresh ¶
func (aura *Aura) Refresh(sim *Simulation)
func (*Aura) RemainingDuration ¶
func (aura *Aura) RemainingDuration(sim *Simulation) time.Duration
func (*Aura) RemoveStack ¶
func (aura *Aura) RemoveStack(sim *Simulation)
func (*Aura) SetStacks ¶
func (aura *Aura) SetStacks(sim *Simulation, newStacks int32)
func (*Aura) ShouldRefreshExclusiveEffects ¶
func (aura *Aura) ShouldRefreshExclusiveEffects(sim *Simulation, refreshWindow time.Duration) bool
Returns if an aura should be refreshed, i.e. the aura is inactive/about to expire AND there are no other active effects of equal or greater strength.
func (*Aura) TimeActive ¶
func (aura *Aura) TimeActive(sim *Simulation) time.Duration
The amount of time this aura has been active.
func (*Aura) UpdateExpires ¶
type AuraCallback ¶
type AuraCallback uint16
const ( CallbackEmpty AuraCallback = 0 CallbackOnSpellHitDealt AuraCallback = 1 << iota CallbackOnSpellHitTaken CallbackOnPeriodicDamageDealt CallbackOnHealDealt CallbackOnPeriodicHealDealt CallbackOnCastComplete CallbackOnApplyEffects )
func (AuraCallback) Matches ¶
func (c AuraCallback) Matches(other AuraCallback) bool
type AuraFactory ¶
type AuraFactory func(*Simulation) *Aura
type AuraMetrics ¶
type AuraMetrics struct { ID ActionID // Metrics for the current iteration. Uptime time.Duration Procs int32 // contains filtered or unexported fields }
func (*AuraMetrics) ToProto ¶
func (auraMetrics *AuraMetrics) ToProto() *proto.AuraMetrics
type AuraReference ¶
type AuraReference struct {
// contains filtered or unexported fields
}
func NewAuraReference ¶
func NewAuraReference(sourceUnit UnitReference, auraId *proto.ActionID) AuraReference
func NewIcdAuraReference ¶
func NewIcdAuraReference(sourceUnit UnitReference, auraId *proto.ActionID) AuraReference
func (*AuraReference) Get ¶
func (ar *AuraReference) Get() *Aura
func (*AuraReference) String ¶
func (ar *AuraReference) String() string
type AutoAttackOptions ¶
type AutoAttackOptions struct { MainHand Weapon OffHand Weapon Ranged Weapon AutoSwingMelee bool // If true, core engine will handle calling SwingMelee() for you. AutoSwingRanged bool // If true, core engine will handle calling SwingRanged() for you. ReplaceMHSwing ReplaceMHSwing }
Options for initializing auto attacks.
type AutoAttacks ¶
type AutoAttacks struct { AutoSwingMelee bool AutoSwingRanged bool IsDualWielding bool // contains filtered or unexported fields }
func (*AutoAttacks) CancelAutoSwing ¶
func (aa *AutoAttacks) CancelAutoSwing(sim *Simulation)
Stops the auto swing action for the rest of the iteration. Used for pets after being disabled.
func (*AutoAttacks) CancelMeleeSwing ¶
func (aa *AutoAttacks) CancelMeleeSwing(sim *Simulation)
func (*AutoAttacks) CancelRangedSwing ¶
func (aa *AutoAttacks) CancelRangedSwing(sim *Simulation)
func (*AutoAttacks) DelayMeleeBy ¶
func (aa *AutoAttacks) DelayMeleeBy(sim *Simulation, delay time.Duration)
Delays all swing timers for the specified amount.
func (*AutoAttacks) DelayRangedUntil ¶
func (aa *AutoAttacks) DelayRangedUntil(sim *Simulation, readyAt time.Duration)
func (*AutoAttacks) EnableAutoSwing ¶
func (aa *AutoAttacks) EnableAutoSwing(sim *Simulation)
Re-enables the auto swing action for the iteration
func (*AutoAttacks) EnableMeleeSwing ¶
func (aa *AutoAttacks) EnableMeleeSwing(sim *Simulation)
func (*AutoAttacks) EnableRangedSwing ¶
func (aa *AutoAttacks) EnableRangedSwing(sim *Simulation)
func (*AutoAttacks) MH ¶
func (aa *AutoAttacks) MH() *Weapon
func (*AutoAttacks) MHAuto ¶
func (aa *AutoAttacks) MHAuto() *Spell
func (*AutoAttacks) MHConfig ¶
func (aa *AutoAttacks) MHConfig() *SpellConfig
func (*AutoAttacks) MainhandSwingSpeed ¶
func (aa *AutoAttacks) MainhandSwingSpeed() time.Duration
The amount of time between two MH swings.
func (*AutoAttacks) MaybeReplaceMHSwing ¶
func (aa *AutoAttacks) MaybeReplaceMHSwing(sim *Simulation, mhSwingSpell *Spell) *Spell
Optionally replaces the given swing spell with an Agent-specified MH Swing replacer. This is for effects like Heroic Strike or Raptor Strike.
func (*AutoAttacks) NewPPMManager ¶
func (aa *AutoAttacks) NewPPMManager(ppm float64, procMask ProcMask) PPMManager
func (*AutoAttacks) NextAttackAt ¶
func (aa *AutoAttacks) NextAttackAt() time.Duration
Returns the time at which the next attack will occur.
func (*AutoAttacks) OH ¶
func (aa *AutoAttacks) OH() *Weapon
func (*AutoAttacks) OHAuto ¶
func (aa *AutoAttacks) OHAuto() *Spell
func (*AutoAttacks) OHConfig ¶
func (aa *AutoAttacks) OHConfig() *SpellConfig
func (*AutoAttacks) OffhandSwingAt ¶
func (aa *AutoAttacks) OffhandSwingAt() time.Duration
func (*AutoAttacks) OffhandSwingSpeed ¶
func (aa *AutoAttacks) OffhandSwingSpeed() time.Duration
The amount of time between two OH swings.
func (*AutoAttacks) PPMProc ¶
func (aa *AutoAttacks) PPMProc(sim *Simulation, ppm float64, procMask ProcMask, label string, spell *Spell) bool
Returns whether a PPM-based effect procced. Using NewPPMManager() is preferred; this function should only be used when the attacker is not known at initialization time.
func (*AutoAttacks) PauseMeleeBy ¶
func (aa *AutoAttacks) PauseMeleeBy(sim *Simulation, pauseTime time.Duration)
PauseMeleeBy will prevent any swing from completing for the specified time. This replicates a /stopattack and /startattack with a brief "pause" in the middle. It's possible that no swing time is lost if the pauseTime is less than the remaining swing time. Used by Rogue Gouge
func (*AutoAttacks) Ranged ¶
func (aa *AutoAttacks) Ranged() *Weapon
func (*AutoAttacks) RangedAuto ¶
func (aa *AutoAttacks) RangedAuto() *Spell
func (*AutoAttacks) RangedConfig ¶
func (aa *AutoAttacks) RangedConfig() *SpellConfig
func (*AutoAttacks) SetMH ¶
func (aa *AutoAttacks) SetMH(weapon Weapon)
func (*AutoAttacks) SetOH ¶
func (aa *AutoAttacks) SetOH(weapon Weapon)
func (*AutoAttacks) SetOffhandSwingAt ¶
func (aa *AutoAttacks) SetOffhandSwingAt(offhandSwingAt time.Duration)
func (*AutoAttacks) SetRanged ¶
func (aa *AutoAttacks) SetRanged(weapon Weapon)
func (*AutoAttacks) SetReplaceMHSwing ¶
func (aa *AutoAttacks) SetReplaceMHSwing(replaceSwing ReplaceMHSwing)
func (*AutoAttacks) StopMeleeUntil ¶
func (aa *AutoAttacks) StopMeleeUntil(sim *Simulation, readyAt time.Duration, desyncOH bool)
StopMeleeUntil should be used whenever a non-melee spell is cast. It stops melee, then restarts it at end of cast, but with a reset swing timer (as if swings had just landed).
func (*AutoAttacks) StopRangedUntil ¶
func (aa *AutoAttacks) StopRangedUntil(sim *Simulation, readyAt time.Duration)
func (*AutoAttacks) UpdateSwingTimers ¶
func (aa *AutoAttacks) UpdateSwingTimers(sim *Simulation)
type BuffConfig ¶
type BuffConfig struct { Label string ActionID ActionID Stats []StatConfig }
type BuffsCombo ¶
type CanCastCondition ¶
type CanCastCondition func(sim *Simulation, target *Unit) bool
type Cast ¶
type Cast struct { // Amount of resource that will be consumed by this cast. Cost float64 // The length of time the GCD will be on CD as a result of this cast. GCD time.Duration // The minimum length of time for the GCD. Can be left out to use the default of 1s GCDMin time.Duration // The amount of time between the call to spell.Cast() and when the spell // effects are invoked. CastTime time.Duration // A dummy value to give 0gcd casts a non empty struct NonEmpty bool }
func (*Cast) EffectiveTime ¶
type CastConfig ¶
type CastConfig struct { // Default cast values with all static effects applied. DefaultCast Cast // Dynamic modifications for each cast. ModifyCast func(*Simulation, *Spell, *Cast) // Ignores haste when calculating the GCD and cast time for this cast. // Automatically set if GCD and cast times are all 0, e.g. for empty casts. IgnoreHaste bool CD Cooldown CastTime func(spell *Spell) time.Duration }
Input for constructing the CastSpell function for a spell.
type CastFunc ¶
type CastFunc func(*Simulation, *Unit)
type CastSuccessFunc ¶
type CastSuccessFunc func(*Simulation, *Unit) bool
type Character ¶
type Character struct { Unit Name string // Different from Label, needed for returned results. Race proto.Race Class proto.Class Spec proto.Spec // Current gear. Equipment //Item Swap Handler ItemSwap ItemSwap // Consumables this Character will be using. Consumes *proto.Consumes PrimaryTalentTree uint8 // Up reference to this Character's Party. Party *Party // This character's index within its party [0-4]. PartyIndex int Pets []*Pet // cached in AddPet, for advance() // contains filtered or unexported fields }
Character is a data structure to hold all the shared values that all class logic shares. All players have stats, equipment, auras, etc
func (*Character) AddComboPoints ¶
func (eb *Character) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
func (*Character) AddEnergy ¶
func (eb *Character) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) AddFocus ¶
func (fb *Character) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) AddMajorCooldown ¶
func (mcdm *Character) AddMajorCooldown(mcd MajorCooldown)
Registers a major cooldown to the Character, which will be automatically used when available.
func (*Character) AddPartyBuffs ¶
func (character *Character) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
func (*Character) AddRage ¶
func (rb *Character) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) AddRaidBuffs ¶
func (*Character) AddRunicPower ¶
func (rp *Character) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) Advance ¶
func (rp *Character) Advance(sim *Simulation, newTime time.Duration)
func (*Character) AllRunesSpent ¶
func (rp *Character) AllRunesSpent() bool
func (*Character) AnyRuneReadyAt ¶
func (rp *Character) AnyRuneReadyAt(sim *Simulation) time.Duration
func (*Character) AnySpentRuneReadyAt ¶
AnySpentRuneReadyAt returns the next time that a rune will regenerate. It will be NeverExpires if there is no rune pending regeneration.
func (*Character) ApplyArmorSpecializationEffect ¶
func (*Character) ApplyDynamicEquipScaling ¶
func (character *Character) ApplyDynamicEquipScaling(sim *Simulation, stat stats.Stat, multiplier float64)
func (*Character) ApplyEquipScaling ¶
func (*Character) BloodDeathRuneBothReadyAt ¶
func (*Character) BloodRuneReadyAt ¶
func (rp *Character) BloodRuneReadyAt(sim *Simulation) time.Duration
BloodRuneReadyAt returns the earliest time a (possibly death-converted) blood rune is ready.
func (*Character) BloodTapConversion ¶
func (rp *Character) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
func (*Character) CalcAndRollDamageRange ¶
func (char *Character) CalcAndRollDamageRange(sim *Simulation, coefficient float64, variance float64) float64
func (*Character) CalcScalingSpellDmg ¶
spellEffectCoefficient is the value in the "Coefficient" column of the SpellEffect DB2 table
func (*Character) CalculateMasteryPoints ¶
func (*Character) CancelBloodTap ¶
func (rp *Character) CancelBloodTap(sim *Simulation)
func (*Character) ComboPoints ¶
func (eb *Character) ComboPoints() int32
func (*Character) ConvertFromDeath ¶
func (rp *Character) ConvertFromDeath(sim *Simulation, slot int8)
ConvertFromDeath reverts the rune to its original type.
func (*Character) ConvertToDeath ¶
func (rp *Character) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
ConvertToDeath converts the given slot to death and sets up the reversion conditions
func (*Character) CurrentBloodOrDeathRunes ¶
func (rp *Character) CurrentBloodOrDeathRunes() int8
func (*Character) CurrentBloodRunes ¶
func (rp *Character) CurrentBloodRunes() int8
func (*Character) CurrentDeathRunes ¶
func (rp *Character) CurrentDeathRunes() int8
func (*Character) CurrentEnergy ¶
func (eb *Character) CurrentEnergy() float64
func (*Character) CurrentFocus ¶
func (fb *Character) CurrentFocus() float64
func (*Character) CurrentFrostOrDeathRunes ¶
func (rp *Character) CurrentFrostOrDeathRunes() int8
func (*Character) CurrentFrostRunes ¶
func (rp *Character) CurrentFrostRunes() int8
func (*Character) CurrentHealth ¶
func (hb *Character) CurrentHealth() float64
func (*Character) CurrentHealthPercent ¶
func (hb *Character) CurrentHealthPercent() float64
func (*Character) CurrentRage ¶
func (rb *Character) CurrentRage() float64
func (*Character) CurrentRunicPower ¶
func (rp *Character) CurrentRunicPower() float64
func (*Character) CurrentUnholyOrDeathRunes ¶
func (rp *Character) CurrentUnholyOrDeathRunes() int8
func (*Character) CurrentUnholyRunes ¶
func (rp *Character) CurrentUnholyRunes() int8
func (*Character) DeathRuneRegenAt ¶
DeathRuneRegenAt returns the time the given death rune will regen at. If the rune is not death or not spent it returns NeverExpires.
func (*Character) DeathRuneRevertAt ¶
DeathRuneRevertAt returns the next time that a death rune will revert. If there is no death rune that needs to revert it returns NeverExpires.
func (*Character) DeathRunesInFU ¶
func (rp *Character) DeathRunesInFU() int8
func (*Character) DebugString ¶
func (rp *Character) DebugString() string
func (*Character) DefaultHealingCritMultiplier ¶
func (*Character) DefaultMeleeCritMultiplier ¶
func (*Character) DefaultSpellCritMultiplier ¶
func (*Character) EnableManaBar ¶
func (character *Character) EnableManaBar()
EnableManaBar will setup caster stat dependencies (int->mana and int->spellcrit) as well as enable the mana gain action to regenerate mana. It will then enable mana gain metrics for reporting.
func (*Character) EnableManaBarWithModifier ¶
func (*Character) EndOOMEvent ¶
func (mb *Character) EndOOMEvent(sim *Simulation)
func (*Character) EnergyRegenPerSecond ¶
func (eb *Character) EnergyRegenPerSecond() float64
func (*Character) EquipStats ¶
func (*Character) FillPlayerStats ¶
func (character *Character) FillPlayerStats(playerStats *proto.PlayerStats)
func (*Character) FocusRegenPerSecond ¶
func (fb *Character) FocusRegenPerSecond() float64
func (*Character) FocusRegenPerTick ¶
func (fb *Character) FocusRegenPerTick() float64
func (*Character) FrostRuneReadyAt ¶
func (rp *Character) FrostRuneReadyAt(sim *Simulation) time.Duration
func (*Character) GainHealth ¶
func (hb *Character) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) GetActiveAuraWithTag ¶
func (*Character) GetActiveSetBonusNames ¶
Returns the names of all active set bonuses.
func (*Character) GetActiveSetBonuses ¶
func (character *Character) GetActiveSetBonuses() []ActiveSetBonus
Returns a list describing all active set bonuses.
func (*Character) GetAuraByID ¶
func (*Character) GetAurasWithTag ¶
func (*Character) GetBaseStats ¶
func (*Character) GetConjuredCD ¶
func (*Character) GetDefensiveTrinketCD ¶
func (*Character) GetIcdAuraByID ¶
func (*Character) GetInitialMajorCooldown ¶
func (mcdm *Character) GetInitialMajorCooldown(actionID ActionID) MajorCooldown
func (*Character) GetMHWeapon ¶
Returns the MH weapon if one is equipped, and null otherwise.
func (*Character) GetMajorCooldown ¶
func (mcdm *Character) GetMajorCooldown(actionID ActionID) *MajorCooldown
func (*Character) GetMajorCooldownIDs ¶
func (*Character) GetMajorCooldownIgnoreTag ¶
func (mcdm *Character) GetMajorCooldownIgnoreTag(actionID ActionID) *MajorCooldown
func (*Character) GetMajorCooldowns ¶
func (mcdm *Character) GetMajorCooldowns() []*MajorCooldown
Returns all MCDs.
func (*Character) GetMetricsProto ¶
func (character *Character) GetMetricsProto() *proto.UnitMetrics
func (*Character) GetOHWeapon ¶
Returns the OH weapon if one is equipped, and null otherwise. Note that shields / Held-in-off-hand items are NOT counted as weapons in this function.
func (*Character) GetOffensiveTrinketCD ¶
func (*Character) GetPresimOptions ¶
func (character *Character) GetPresimOptions(playerConfig *proto.Player) *PresimOptions
func (*Character) GetProcMaskForEnchant ¶
func (*Character) GetProcMaskForItem ¶
func (*Character) GetProcMaskForTypes ¶
func (character *Character) GetProcMaskForTypes(weaponTypes ...proto.WeaponType) ProcMask
func (*Character) GetProcMaskForTypesAndHand ¶ added in v0.0.2
func (character *Character) GetProcMaskForTypesAndHand(twohand bool, weaponTypes ...proto.WeaponType) ProcMask
func (*Character) GetPseudoStatsProto ¶
func (*Character) GetRangedWeapon ¶
Returns the ranged weapon if one is equipped, and null otherwise.
func (*Character) HasActiveAura ¶
func (*Character) HasActiveAuraWithTag ¶
func (*Character) HasActiveAuraWithTagExcludingAura ¶
func (*Character) HasAlchStone ¶
func (*Character) HasAuraWithTag ¶
func (*Character) HasMHWeapon ¶
func (*Character) HasMetaGemEquipped ¶
func (*Character) HasOHWeapon ¶
func (*Character) HasProfession ¶
func (character *Character) HasProfession(prof proto.Profession) bool
func (*Character) HasRangedWeapon ¶
func (*Character) HasRingEquipped ¶
func (*Character) HasSetBonus ¶
func (*Character) HasTrinketEquipped ¶
func (*Character) HealingCritMultiplier ¶
func (*Character) IsBloodTappedRune ¶
func (*Character) LeftBloodRuneReady ¶
func (rp *Character) LeftBloodRuneReady() bool
func (*Character) MaximumEnergy ¶
func (eb *Character) MaximumEnergy() float64
func (*Character) MeetsArmorSpecializationRequirement ¶
func (*Character) MeleeCritMultiplier ¶
func (*Character) MultiplyEnergyRegenSpeed ¶
func (eb *Character) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
func (*Character) MultiplyFocusRegenSpeed ¶
func (fb *Character) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
func (*Character) MultiplyRuneRegenSpeed ¶
func (rp *Character) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
func (*Character) MultiplyRunicRegen ¶
func (rp *Character) MultiplyRunicRegen(multiply float64)
func (*Character) NewTemporaryStatsAura ¶
func (character *Character) NewTemporaryStatsAura(auraLabel string, actionID ActionID, tempStats stats.Stats, duration time.Duration) *Aura
Helper for the common case of making an aura that adds stats.
func (*Character) NewTemporaryStatsAuraWrapped ¶
func (character *Character) NewTemporaryStatsAuraWrapped(auraLabel string, actionID ActionID, buffs stats.Stats, duration time.Duration, modConfig func(*Aura)) *Aura
Alternative that allows modifying the Aura config.
func (*Character) NextBloodRuneReadyAt ¶
func (rp *Character) NextBloodRuneReadyAt(sim *Simulation) time.Duration
func (*Character) NextEnergyTickAt ¶
func (*Character) NextFocusTickAt ¶
func (*Character) NextFrostRuneReadyAt ¶
func (rp *Character) NextFrostRuneReadyAt(sim *Simulation) time.Duration
func (*Character) NextUnholyRuneReadyAt ¶
func (rp *Character) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Character) NormalFrostRuneReadyAt ¶
func (rp *Character) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
NormalFrostRuneReadyAt returns the earliest time a non-death frost rune is ready.
func (*Character) NormalSpentBloodRuneReadyAt ¶
func (rp *Character) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
NormalSpentBloodRuneReadyAt returns the earliest time a spent non-death blood rune is ready.
func (*Character) NormalUnholyRuneReadyAt ¶
func (rp *Character) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Character) NumActiveAurasWithTag ¶
func (*Character) OnApplyEffects ¶
func (at *Character) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
Invokes the OnApplyEffects event for all tracked Auras.
func (*Character) OnCastComplete ¶
func (at *Character) OnCastComplete(sim *Simulation, spell *Spell)
Invokes the OnCastComplete event for all tracked Auras.
func (*Character) OnHealDealt ¶
func (at *Character) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnHeal event for all tracked Auras.
func (*Character) OnHealTaken ¶
func (at *Character) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Character) OnPeriodicDamageDealt ¶
func (at *Character) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicDamage
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Character) OnPeriodicDamageTaken ¶
func (at *Character) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Character) OnPeriodicHealDealt ¶
func (at *Character) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicHeal
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Character) OnPeriodicHealTaken ¶
func (at *Character) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Character) OnSpellHitDealt ¶
func (at *Character) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnSpellHit event for all tracked Auras.
func (*Character) OnSpellHitTaken ¶
func (at *Character) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Character) OptimalRuneCost ¶
func (*Character) RegenAllRunes ¶
func (rp *Character) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
func (*Character) RegenRandomDepletedRune ¶
func (rp *Character) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
func (*Character) RegisterOnItemSwap ¶
func (character *Character) RegisterOnItemSwap(callback OnSwapItem)
func (*Character) RegisterResetEffect ¶
func (at *Character) RegisterResetEffect(resetEffect ResetEffect)
Registers a callback to this Character which will be invoked on every Sim reset.
func (*Character) RemoveDynamicEquipScaling ¶
func (character *Character) RemoveDynamicEquipScaling(sim *Simulation, stat stats.Stat, multiplier float64)
func (*Character) RemoveEquipScaling ¶
func (*Character) RemoveHealth ¶
func (hb *Character) RemoveHealth(sim *Simulation, amount float64)
func (*Character) ResetEnergyTick ¶
func (eb *Character) ResetEnergyTick(sim *Simulation)
Gives an immediate partial energy tick and restarts the tick timer.
func (*Character) ResetFocusTick ¶
func (fb *Character) ResetFocusTick(sim *Simulation)
Gives an immediate partial Focus tick and restarts the tick timer.
func (*Character) RuneIsActive ¶
func (*Character) RuneIsDeath ¶
func (*Character) RuneReadyAt ¶
func (rp *Character) RuneReadyAt(sim *Simulation, slot int8) time.Duration
func (*Character) SetPermanentDeathRunes ¶
func (rp *Character) SetPermanentDeathRunes(permanentDeaths []int8)
func (*Character) SpellCritMultiplier ¶
func (*Character) SpendComboPoints ¶
func (eb *Character) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
func (*Character) SpendEnergy ¶
func (eb *Character) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) SpendFocus ¶
func (fb *Character) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) SpendRage ¶
func (rb *Character) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) SpendRuneReadyAt ¶
func (*Character) SpendRunicPower ¶
func (rp *Character) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Character) StartOOMEvent ¶
func (mb *Character) StartOOMEvent(sim *Simulation, requiredMana float64)
func (*Character) UnholyRuneReadyAt ¶
func (rp *Character) UnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Character) UpdateMajorCooldowns ¶
func (mcdm *Character) UpdateMajorCooldowns()
This function should be called if the CD for a major cooldown changes outside of the TryActivate() call.
func (*Character) UpdateMaxEnergy ¶
func (eb *Character) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum Energy, such as from the Druid Primal Madness talent
func (*Character) UpdateMaxHealth ¶
func (hb *Character) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum health from "Last Stand" effects
func (*Character) WeaponFromMainHand ¶
Returns weapon stats using the main hand equipped weapon.
func (*Character) WeaponFromOffHand ¶
Returns weapon stats using the off-hand equipped weapon.
func (*Character) WeaponFromRanged ¶
Returns weapon stats using the ranged equipped weapon.
type CharacterBuildPhase ¶
type CharacterBuildPhase uint8
const ( CharacterBuildPhaseNone CharacterBuildPhase = 0 CharacterBuildPhaseBase CharacterBuildPhase = 1 << iota CharacterBuildPhaseGear CharacterBuildPhaseTalents CharacterBuildPhaseBuffs CharacterBuildPhaseConsumes )
func (CharacterBuildPhase) Matches ¶
func (cbp CharacterBuildPhase) Matches(other CharacterBuildPhase) bool
type CharacterIterationMetrics ¶
type CharacterIterationMetrics struct { Died bool // Whether this unit died in the current iteration. WentOOM bool // Whether the agent has hit OOM at least once in this iteration. ManaSpent float64 ManaGained float64 OOMTime time.Duration // time spent not casting and waiting for regen. FirstOOMTimestamp time.Duration // Timestamp at which unit first went OOM. }
Metrics for the current iteration, for 1 agent. Keep this as a separate struct, so it's easy to clear.
type CharacterSuiteConfig ¶
type CharacterSuiteConfig struct { Class proto.Class Race proto.Race GearSet GearSetCombo SpecOptions SpecOptionsCombo Glyphs *proto.Glyphs Talents string Rotation RotationCombo StartingDistance float64 Consumes *proto.Consumes IsHealer bool IsTank bool InFrontOfTarget bool OtherRaces []proto.Race OtherGearSets []GearSetCombo OtherTalentSets []TalentsCombo OtherSpecOptions []SpecOptionsCombo OtherRotations []RotationCombo OtherStartingDistances []float64 ItemFilter ItemFilter StatsToWeigh []proto.Stat EPReferenceStat proto.Stat Cooldowns *proto.Cooldowns }
type CombinedTestGenerator ¶
type CombinedTestGenerator struct {
// contains filtered or unexported fields
}
func (*CombinedTestGenerator) GetTest ¶
func (generator *CombinedTestGenerator) GetTest(testIdx int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*CombinedTestGenerator) NumTests ¶
func (generator *CombinedTestGenerator) NumTests() int
type Cooldown ¶
type Cooldown struct { *Timer // Default amount of time after activation before this CD can be used again. // Note that some CDs won't use this, e.g. the GCD. Duration time.Duration }
func (*Cooldown) Use ¶
func (cd *Cooldown) Use(sim *Simulation)
Puts this CD on cooldown, using the default duration.
type CooldownActivation ¶
type CooldownActivation func(*Simulation, *Character)
Function for activating a cooldown. Returns whether the activation was successful.
type CooldownActivationCondition ¶
type CooldownActivationCondition func(*Simulation, *Character) bool
Condition for whether a cooldown can/should be activated. Returning false prevents the cooldown from being activated.
type CooldownType ¶
type CooldownType byte
const ( CooldownTypeUnknown CooldownType = 0 CooldownTypeMana CooldownType = 1 << iota CooldownTypeDPS CooldownTypeExplosive CooldownTypeSurvival )
func (CooldownType) Matches ¶
func (ct CooldownType) Matches(other CooldownType) bool
type DefaultAPLValueImpl ¶
type DefaultAPLValueImpl struct { }
Provides empty implementations for the GetX() value interface functions.
func (DefaultAPLValueImpl) Finalize ¶
func (impl DefaultAPLValueImpl) Finalize(*APLRotation)
func (DefaultAPLValueImpl) GetBool ¶
func (impl DefaultAPLValueImpl) GetBool(sim *Simulation) bool
func (DefaultAPLValueImpl) GetDuration ¶
func (impl DefaultAPLValueImpl) GetDuration(sim *Simulation) time.Duration
func (DefaultAPLValueImpl) GetFloat ¶
func (impl DefaultAPLValueImpl) GetFloat(sim *Simulation) float64
func (DefaultAPLValueImpl) GetInnerValues ¶
func (impl DefaultAPLValueImpl) GetInnerValues() []APLValue
func (DefaultAPLValueImpl) GetInt ¶
func (impl DefaultAPLValueImpl) GetInt(sim *Simulation) int32
func (DefaultAPLValueImpl) GetString ¶
func (impl DefaultAPLValueImpl) GetString(sim *Simulation) string
type DelayedActionOptions ¶
type DelayedActionOptions struct { // When the action should be performed. DoAt time.Duration Priority ActionPriority OnAction func(*Simulation) CleanUp func(*Simulation) }
type DistributionMetrics ¶
type DistributionMetrics struct { // Values for the current iteration. These are cleared after each iteration. Total float64 // contains filtered or unexported fields }
func NewDistributionMetrics ¶
func NewDistributionMetrics() DistributionMetrics
func (*DistributionMetrics) ToProto ¶
func (distMetrics *DistributionMetrics) ToProto() *proto.DistributionMetrics
type Dot ¶
type Dot struct { Spell *Spell *Aura // Embed Aura, so we can use IsActive/Refresh/etc directly. BaseTickLength time.Duration // time between each tick SnapshotBaseDamage float64 SnapshotCritChance float64 SnapshotAttackerMultiplier float64 BaseTickCount int32 // base tick count without haste applied BonusCoefficient float64 // EffectBonusCoefficient in SpellEffect client DB table, "SP mod" on Wowhead (not necessarily shown there even if > 0) // contains filtered or unexported fields }
func (*Dot) Apply ¶
func (dot *Dot) Apply(sim *Simulation)
Snapshots and activates the Dot If the Dot is already active it's duration will be refreshed and the last tick from the previous application will be transfered to the new one
func (*Dot) BaseDuration ¶ added in v0.0.10
func (*Dot) CalcAndDealPeriodicSnapshotDamage ¶
func (dot *Dot) CalcAndDealPeriodicSnapshotDamage(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
func (*Dot) CalcAndDealPeriodicSnapshotHealing ¶
func (dot *Dot) CalcAndDealPeriodicSnapshotHealing(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
func (*Dot) CalcSnapshotDamage ¶
func (dot *Dot) CalcSnapshotDamage(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
func (*Dot) CalcSnapshotHealing ¶
func (dot *Dot) CalcSnapshotHealing(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
func (*Dot) CopyDotAndApply ¶
func (dot *Dot) CopyDotAndApply(sim *Simulation, originaldot *Dot)
func (*Dot) DurationExtendSnapshot ¶ added in v0.0.11
func (dot *Dot) DurationExtendSnapshot(sim *Simulation, extendBy time.Duration)
This is the incredibly cursed way fel flame uses to increase dot duration, don't use unless you know what you're doing. It extends the duration, immediately recalculates the next tick and then fits as many ticks into the rest of the aura duration as it can. This will cause aura duration and dot ticks to desync ingame, so the aura will fall off prematurely to what is shown.
Sometimes the game also decides to tick one last time anyway, even though the time since the last tick is absurdly low, though this isn't implemented until someone figures out the conditions.
func (*Dot) HastedTickCount ¶ added in v0.0.10
Returns the total amount of ticks with the snapshotted haste
func (*Dot) NextTickAt ¶
func (*Dot) OutcomeExpectedMagicSnapshotCrit ¶
func (dot *Dot) OutcomeExpectedMagicSnapshotCrit(_ *Simulation, result *SpellResult, _ *AttackTable)
func (*Dot) OutcomeMagicHitAndSnapshotCrit ¶
func (dot *Dot) OutcomeMagicHitAndSnapshotCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Dot) OutcomeRangedHitAndCritSnapshot ¶
func (dot *Dot) OutcomeRangedHitAndCritSnapshot(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Dot) OutcomeSnapshotCrit ¶
func (dot *Dot) OutcomeSnapshotCrit(sim *Simulation, result *SpellResult, _ *AttackTable)
func (*Dot) OutcomeTick ¶
func (dot *Dot) OutcomeTick(_ *Simulation, result *SpellResult, _ *AttackTable)
A tick always hits, but we don't count them as hits in the metrics.
func (*Dot) OutcomeTickCounted ¶
func (dot *Dot) OutcomeTickCounted(_ *Simulation, result *SpellResult, _ *AttackTable)
func (*Dot) OutcomeTickPhysicalCrit ¶
func (dot *Dot) OutcomeTickPhysicalCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Dot) OutstandingDmg ¶ added in v0.0.10
func (*Dot) RemainingTicks ¶ added in v0.0.10
func (*Dot) SnapshotHeal ¶
func (*Dot) SnapshotPhysical ¶
func (*Dot) TakeSnapshot ¶
func (dot *Dot) TakeSnapshot(sim *Simulation, doRollover bool)
Takes a new snapshot of this Dot's effects.
In most cases this will be called automatically, and should only be called to force a new snapshot to be taken.
doRollover will apply previously snapshotted crit/%dmg instead of recalculating.
func (*Dot) TickOnce ¶
func (dot *Dot) TickOnce(sim *Simulation)
Forces an instant tick. Does not reset the tick timer or aura duration, the tick is simply an extra tick.
func (*Dot) TickPeriod ¶
TickPeriod is how fast the snapshotted dot ticks.
func (*Dot) TimeUntilNextTick ¶
func (dot *Dot) TimeUntilNextTick(sim *Simulation) time.Duration
type DotConfig ¶
type DotConfig struct { // Optional, will default to the corresponding spell. Spell *Spell OnSnapshot OnSnapshot OnTick OnTick Aura Aura TickLength time.Duration // time between each tick NumberOfTicks int32 // number of ticks over the whole duration IsAOE bool // Set to true for AOE dots (Blizzard, Hurricane, Consecrate, etc) SelfOnly bool // Set to true to only create the self-hot. AffectedByCastSpeed bool // tick length are shortened based on casting speed HasteReducesDuration bool // does not gain additional ticks after a certain haste threshold BonusCoefficient float64 // EffectBonusCoefficient in SpellEffect client DB table, "SP mod" on Wowhead (not necessarily shown there even if > 0) }
type DynamicDamageDoneByCaster ¶
type DynamicDamageDoneByCaster func(sim *Simulation, spell *Spell, attackTable *AttackTable) float64
type DynamicDamageTakenModifier ¶
type DynamicDamageTakenModifier func(sim *Simulation, spell *Spell, result *SpellResult)
type Enchant ¶
func EnchantFromProto ¶
func EnchantFromProto(pData *proto.SimEnchant) Enchant
type Encounter ¶
type Encounter struct { Duration time.Duration DurationVariation time.Duration Targets []*Target ActiveTargets []*Target TargetUnits []*Unit ExecuteProportion_20 float64 ExecuteProportion_25 float64 ExecuteProportion_35 float64 ExecuteProportion_90 float64 EndFightAtHealth float64 // DamageTaken is used to track health fights instead of duration fights. // Once primary target has taken its health worth of damage, fight ends. DamageTaken float64 // In health fight: set to true until we get something to base on DurationIsEstimate bool // contains filtered or unexported fields }
func NewEncounter ¶
func (*Encounter) AOECapMultiplier ¶
func (*Encounter) GetMetricsProto ¶
func (encounter *Encounter) GetMetricsProto() *proto.EncounterMetrics
type EncounterCombo ¶
func MakeDefaultEncounterCombos ¶
func MakeDefaultEncounterCombos() []EncounterCombo
type EnergyCost ¶
type EnergyCost struct { Refund float64 RefundMetrics *ResourceMetrics ResourceMetrics *ResourceMetrics ComboPointMetrics *ResourceMetrics }
func (*EnergyCost) CostFailureReason ¶
func (ec *EnergyCost) CostFailureReason(_ *Simulation, spell *Spell) string
func (*EnergyCost) IssueRefund ¶
func (ec *EnergyCost) IssueRefund(sim *Simulation, spell *Spell)
func (*EnergyCost) MeetsRequirement ¶
func (ec *EnergyCost) MeetsRequirement(_ *Simulation, spell *Spell) bool
func (*EnergyCost) SpendCost ¶
func (ec *EnergyCost) SpendCost(sim *Simulation, spell *Spell)
type EnergyCostOptions ¶
type EnergyCostOptions struct { Cost float64 Refund float64 RefundMetrics *ResourceMetrics // Optional, will default to unit.EnergyRefundMetrics if not supplied. }
type Environment ¶
type Environment struct { State EnvironmentState // Whether stats are currently being measured. Used to disable some validation // checks which are otherwise helpful. MeasuringStats bool Raid *Raid Encounter Encounter AllUnits []*Unit BaseDuration time.Duration // base duration DurationVariation time.Duration // variation per duration // contains filtered or unexported fields }
func NewEnvironment ¶
func NewEnvironment(raidProto *proto.Raid, encounterProto *proto.Encounter, runFakePrepull bool) (*Environment, *proto.RaidStats, *proto.EncounterStats)
func (*Environment) ActiveTargetUnits ¶
func (env *Environment) ActiveTargetUnits() []*Target
func (*Environment) GetAgentFromUnit ¶
func (env *Environment) GetAgentFromUnit(unit *Unit) Agent
func (*Environment) GetMaxDuration ¶
func (env *Environment) GetMaxDuration() time.Duration
The maximum possible duration for any iteration.
func (*Environment) GetNumTargets ¶
func (env *Environment) GetNumTargets() int32
func (*Environment) GetTarget ¶
func (env *Environment) GetTarget(index int32) *Target
func (*Environment) GetTargetUnit ¶
func (env *Environment) GetTargetUnit(index int32) *Unit
func (*Environment) GetUnit ¶
func (env *Environment) GetUnit(ref *proto.UnitReference, contextUnit *Unit) *Unit
func (*Environment) IsFinalized ¶
func (env *Environment) IsFinalized() bool
func (*Environment) NextTarget ¶
func (env *Environment) NextTarget(target *Unit) *Target
func (*Environment) NextTargetUnit ¶
func (env *Environment) NextTargetUnit(target *Unit) *Unit
func (*Environment) PrepullStartTime ¶
func (env *Environment) PrepullStartTime() time.Duration
func (*Environment) RegisterPostFinalizeEffect ¶
func (env *Environment) RegisterPostFinalizeEffect(postFinalizeEffect PostFinalizeEffect)
Registers a callback to this Character which will be invoked AFTER all Units are finalized.
func (*Environment) RegisterPreFinalizeEffect ¶
func (env *Environment) RegisterPreFinalizeEffect(preFinalizeEffect PostFinalizeEffect)
Registers a callback to this Character which will be invoked BEFORE all Units are finalized, but after they are all initialized and have other effects applied.
type EnvironmentState ¶
type EnvironmentState int
const ( Created EnvironmentState = iota Constructed Initialized Finalized )
type Equipment ¶
type Equipment [proto.ItemSlot_ItemSlotRanged + 1]Item
func NewEquipmentSet ¶
func NewEquipmentSet(equipSpec EquipmentSpec) Equipment
func ProtoToEquipment ¶
func ProtoToEquipment(es *proto.EquipmentSpec) Equipment
func (*Equipment) ToEquipmentSpecProto ¶
func (equipment *Equipment) ToEquipmentSpecProto() *proto.EquipmentSpec
type EquipmentSpec ¶
type EquipmentSpec [proto.ItemSlot_ItemSlotRanged + 1]ItemSpec
Structs used for looking up items/gems/enchants
func ProtoToEquipmentSpec ¶
func ProtoToEquipmentSpec(es *proto.EquipmentSpec) EquipmentSpec
type ExclusiveCategory ¶
type ExclusiveCategory struct { Name string SingleAura bool // If true, only 1 aura in this category may be active at a time. // contains filtered or unexported fields }
func (*ExclusiveCategory) AnyActive ¶
func (ec *ExclusiveCategory) AnyActive() bool
func (*ExclusiveCategory) GetActiveAura ¶
func (ec *ExclusiveCategory) GetActiveAura() *Aura
func (*ExclusiveCategory) GetActiveEffect ¶
func (ec *ExclusiveCategory) GetActiveEffect() *ExclusiveEffect
func (*ExclusiveCategory) GetHighestPrioActiveEffect ¶
func (ec *ExclusiveCategory) GetHighestPrioActiveEffect() *ExclusiveEffect
func (*ExclusiveCategory) SetActive ¶
func (ec *ExclusiveCategory) SetActive(sim *Simulation, newActiveEffect *ExclusiveEffect)
type ExclusiveCategoryArray ¶
type ExclusiveCategoryArray []*ExclusiveCategory
func (ExclusiveCategoryArray) Get ¶
func (categories ExclusiveCategoryArray) Get(target *Unit) *ExclusiveCategory
type ExclusiveEffect ¶
type ExclusiveEffect struct { Aura *Aura Priority float64 OnGain func(*ExclusiveEffect, *Simulation) OnExpire func(*ExclusiveEffect, *Simulation) Category *ExclusiveCategory // contains filtered or unexported fields }
An Exclusive effect is one which may not be active at the same time as other effects in the same category. For example, the armor reduction effects from Sunder Armor and Expose Armor are exclusive with each other.
Within each ExclusiveCategory, the ExclusiveEffect with the highest Priority AND isEnabled == true is the one whose effect is applied.
func AtkSpeedReductionEffect ¶
func AtkSpeedReductionEffect(aura *Aura, speedMultiplier float64) *ExclusiveEffect
func PhysDamageReductionEffect ¶
func PhysDamageReductionEffect(aura *Aura, dmgReduction float64) *ExclusiveEffect
func PhysDamageTakenEffect ¶
func PhysDamageTakenEffect(aura *Aura, multiplier float64) *ExclusiveEffect
func RegisterPercentDamageModifierEffect ¶
func RegisterPercentDamageModifierEffect(aura *Aura, percentDamageModifier float64) *ExclusiveEffect
func (*ExclusiveEffect) Activate ¶
func (ee *ExclusiveEffect) Activate(sim *Simulation) bool
Returns whether the effect is active.
func (*ExclusiveEffect) Deactivate ¶
func (ee *ExclusiveEffect) Deactivate(sim *Simulation)
func (*ExclusiveEffect) IsActive ¶
func (ee *ExclusiveEffect) IsActive() bool
func (*ExclusiveEffect) SetPriority ¶
func (ee *ExclusiveEffect) SetPriority(sim *Simulation, newPrio float64)
type ExclusiveEffectManager ¶
type ExclusiveEffectManager struct {
// contains filtered or unexported fields
}
func (*ExclusiveEffectManager) GetExclusiveEffectCategory ¶
func (eem *ExclusiveEffectManager) GetExclusiveEffectCategory(categoryName string) *ExclusiveCategory
Returns a category with the given name. Creates a new category if one doesn't already exist.
type ExpectedDamageCalculator ¶
type ExpectedDamageCalculator func(sim *Simulation, target *Unit, spell *Spell, useSnapshot bool) *SpellResult
type FocusCost ¶
type FocusCost struct { Refund float64 RefundMetrics *ResourceMetrics ResourceMetrics *ResourceMetrics }
func (*FocusCost) CostFailureReason ¶
func (ec *FocusCost) CostFailureReason(_ *Simulation, spell *Spell) string
func (*FocusCost) IssueRefund ¶
func (ec *FocusCost) IssueRefund(sim *Simulation, spell *Spell)
func (*FocusCost) MeetsRequirement ¶
func (ec *FocusCost) MeetsRequirement(_ *Simulation, spell *Spell) bool
func (*FocusCost) SpendCost ¶
func (ec *FocusCost) SpendCost(sim *Simulation, spell *Spell)
type FocusCostOptions ¶
type FocusCostOptions struct { Cost float64 Refund float64 RefundMetrics *ResourceMetrics // Optional, will default to unit.FocusRefundMetrics if not supplied. }
type GearSetCombo ¶
type GearSetCombo struct { Label string GearSet *proto.EquipmentSpec }
func GetGearSet ¶
func GetGearSet(dir string, file string) GearSetCombo
type Gem ¶
func GemFromProto ¶
type GetSpellpowerValue ¶
type GoRand ¶
func (GoRand) NextFloat64 ¶
type HitOutcome ¶
type HitOutcome uint16
Possible outcomes of any hit/damage roll.
const ( OutcomeEmpty HitOutcome = 0 // These bits are set by the hit roll OutcomeMiss HitOutcome = 1 << iota OutcomeHit OutcomeDodge OutcomeGlance OutcomeParry OutcomeBlock // These bits are set by the crit and damage rolls. OutcomeCrit OutcomeCrush OutcomePartial1 OutcomePartial2 OutcomePartial4 OutcomePartial8 )
Single-bit outcomes.
func (HitOutcome) Matches ¶
func (ho HitOutcome) Matches(other HitOutcome) bool
Returns whether there is any overlap between the given masks.
func (HitOutcome) PartialResistString ¶
func (ho HitOutcome) PartialResistString() string
func (HitOutcome) String ¶
func (ho HitOutcome) String() string
type IndividualTestSuite ¶
type IndividualTestSuite struct { Name string // contains filtered or unexported fields }
func NewIndividualTestSuite ¶
func NewIndividualTestSuite(suiteName string) *IndividualTestSuite
func (*IndividualTestSuite) Done ¶
func (testSuite *IndividualTestSuite) Done(t *testing.T)
func (*IndividualTestSuite) TestCasts ¶
func (testSuite *IndividualTestSuite) TestCasts(testName string, rsr *proto.RaidSimRequest)
func (*IndividualTestSuite) TestCharacterStats ¶
func (testSuite *IndividualTestSuite) TestCharacterStats(testName string, csr *proto.ComputeStatsRequest)
func (*IndividualTestSuite) TestDPS ¶
func (testSuite *IndividualTestSuite) TestDPS(testName string, rsr *proto.RaidSimRequest) *proto.RaidSimResult
func (*IndividualTestSuite) TestStatWeights ¶
func (testSuite *IndividualTestSuite) TestStatWeights(testName string, swr *proto.StatWeightsRequest)
type Item ¶
type Item struct { ID int32 Type proto.ItemType ArmorType proto.ArmorType // Weapon Stats WeaponType proto.WeaponType HandType proto.HandType RangedWeaponType proto.RangedWeaponType WeaponDamageMin float64 WeaponDamageMax float64 SwingSpeed float64 Name string Stats stats.Stats // Stats applied to wearer Quality proto.ItemQuality SetName string // Empty string if not part of a set. SetID int32 // 0 if not part of a set. RandomPropPoints int32 // Used to rescale random suffix stats GemSockets []proto.GemColor SocketBonus stats.Stats // Modified for each instance of the item. RandomSuffix RandomSuffix Gems []Gem Enchant Enchant Reforging *ReforgeStat //Internal use TempEnchant int32 }
func ItemFromProto ¶
func (*Item) ToItemSpecProto ¶
type ItemComboChecker ¶
type ItemComboChecker map[int64]struct{}
type ItemFilter ¶
type ItemFilter struct { // If set to ClassUnknown, any class is fine. Class proto.Class ArmorType proto.ArmorType // Empty lists allows any value. Otherwise, item must match a value from the list. WeaponTypes []proto.WeaponType HandTypes []proto.HandType RangedWeaponTypes []proto.RangedWeaponType // Item IDs to ignore. IDBlacklist []int32 }
Returns all items that meet the given conditions.
func (*ItemFilter) FindAllItems ¶
func (filter *ItemFilter) FindAllItems() []Item
func (*ItemFilter) FindAllMetaGems ¶
func (filter *ItemFilter) FindAllMetaGems() []Gem
func (*ItemFilter) FindAllSets ¶
func (filter *ItemFilter) FindAllSets() []*ItemSet
type ItemSet ¶
type ItemSet struct { ID int32 Name string AlternativeName string // Maps set piece requirement to an ApplyEffect function that will be called // before the Sim starts. // // The function should apply any benefits provided by the set bonus. Bonuses map[int32]ApplyEffect }
func NewItemSet ¶
Registers a new ItemSet with item IDs populated.
type ItemStringSpec ¶
Like ItemSpec, but uses names for reference instead of ID.
type ItemSwap ¶
type ItemSwap struct {
// contains filtered or unexported fields
}
func (*ItemSwap) CalcStatChanges ¶
func (*ItemSwap) RegisterOnSwapItemForEffectWithPPMManager ¶
func (swap *ItemSwap) RegisterOnSwapItemForEffectWithPPMManager(effectID int32, ppm float64, ppmm *PPMManager, aura *Aura)
Helper for handling Effects that use PPMManager to toggle the aura on/off
func (*ItemSwap) RegisterOnSwapItemForEnchantEffect ¶
Helper for handling Effects that use the effectID to toggle the aura on and off
func (*ItemSwap) RegisterOnSwapItemForItemEffect ¶
Helper for handling Effects that use the itemID to toggle the aura on and off
func (*ItemSwap) RegisterOnSwapItemUpdateProcMaskWithPPMManager ¶
func (swap *ItemSwap) RegisterOnSwapItemUpdateProcMaskWithPPMManager(procMask ProcMask, ppm float64, ppmm *PPMManager)
Helper for handling procs that use PPMManager to toggle the aura on/off
type ItemsTestGenerator ¶
type ItemsTestGenerator struct { // Fields describing the base API request. Player *proto.Player PartyBuffs *proto.PartyBuffs RaidBuffs *proto.RaidBuffs Debuffs *proto.Debuffs Encounter *proto.Encounter SimOptions *proto.SimOptions IsHealer bool // Some fields are populated automatically. ItemFilter ItemFilter // contains filtered or unexported fields }
func (*ItemsTestGenerator) GetTest ¶
func (generator *ItemsTestGenerator) GetTest(testIdx int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*ItemsTestGenerator) NumTests ¶
func (generator *ItemsTestGenerator) NumTests() int
type MajorCooldown ¶
type MajorCooldown struct { // Spell that is cast when this MCD is activated. Spell *Spell // Cooldowns with higher priority get used first. This is important when some // cooldowns have a non-zero cast time. For example, Drums should be used // before Bloodlust. Priority int32 // Internal category, used for filtering. For example, mages want to disable // all DPS cooldowns during their regen rotation. Type CooldownType // Whether the cooldown meets all optional conditions for activation. These // conditions will be ignored when the user specifies their own activation time. // This is for things like mana thresholds, which are optimizations for better // automatic timing. ShouldActivate CooldownActivationCondition // contains filtered or unexported fields }
func (*MajorCooldown) Disable ¶
func (mcd *MajorCooldown) Disable()
func (*MajorCooldown) Enable ¶
func (mcd *MajorCooldown) Enable()
func (*MajorCooldown) GetTimings ¶
func (mcd *MajorCooldown) GetTimings() []time.Duration
func (*MajorCooldown) IsEnabled ¶
func (mcd *MajorCooldown) IsEnabled() bool
func (*MajorCooldown) IsReady ¶
func (mcd *MajorCooldown) IsReady(sim *Simulation) bool
func (*MajorCooldown) ReadyAt ¶
func (mcd *MajorCooldown) ReadyAt() time.Duration
func (*MajorCooldown) TimeToNextCast ¶
func (mcd *MajorCooldown) TimeToNextCast(sim *Simulation) time.Duration
Roughly how long until the next cast will happen, accounting for both spell CD and user-specified timings.
func (*MajorCooldown) TimeToReady ¶
func (mcd *MajorCooldown) TimeToReady(sim *Simulation) time.Duration
func (*MajorCooldown) TryActivate ¶
func (mcd *MajorCooldown) TryActivate(sim *Simulation, character *Character) bool
Public version of TryActivate for manual activation by Agent code. Note that this version will work even if the MCD is disabled.
type ManaCost ¶
type ManaCost struct {
ResourceMetrics *ResourceMetrics
}
func (*ManaCost) CostFailureReason ¶
func (mc *ManaCost) CostFailureReason(sim *Simulation, spell *Spell) string
func (*ManaCost) IssueRefund ¶
func (mc *ManaCost) IssueRefund(_ *Simulation, _ *Spell)
func (*ManaCost) MeetsRequirement ¶
func (mc *ManaCost) MeetsRequirement(sim *Simulation, spell *Spell) bool
func (*ManaCost) SpendCost ¶
func (mc *ManaCost) SpendCost(sim *Simulation, spell *Spell)
type ManaCostOptions ¶
type MeleeDamageCalculator ¶
type MovementAction ¶
type MovementAction struct { PendingAction // contains filtered or unexported fields }
func (*MovementAction) GetCurrentPosition ¶
func (action *MovementAction) GetCurrentPosition(sim *Simulation) float64
type MovementCallback ¶
type MovementCallback func(position float64, kind MovementUpdateType)
type MovementUpdateType ¶
type MovementUpdateType byte
type OnApplyEffects ¶
type OnApplyEffects func(aura *Aura, sim *Simulation, target *Unit, spell *Spell)
type OnCastComplete ¶
type OnCastComplete func(aura *Aura, sim *Simulation, spell *Spell)
Callback for when a cast is finished, i.e. when the in-game castbar reaches full.
type OnCastSpeedChanged ¶ added in v0.0.9
type OnDoneIteration ¶
type OnDoneIteration func(aura *Aura, sim *Simulation)
type OnExpire ¶
type OnExpire func(aura *Aura, sim *Simulation)
type OnFocusGain ¶
type OnFocusGain func(*Simulation, float64)
type OnGain ¶
type OnGain func(aura *Aura, sim *Simulation)
type OnInit ¶
type OnInit func(aura *Aura, sim *Simulation)
type OnMasteryStatChanged ¶
type OnMasteryStatChanged func(sim *Simulation, oldMastery float64, newMastery float64)
type OnPeriodicDamage ¶
type OnPeriodicDamage func(aura *Aura, sim *Simulation, spell *Spell, result *SpellResult)
OnPeriodicDamage is called when dots tick, after damage is calculated. Use it for proc effects or anything that comes from the final result of a tick.
type OnPetDisable ¶
type OnPetDisable func(sim *Simulation)
type OnPetEnable ¶
type OnPetEnable func(sim *Simulation)
type OnRageGainCB ¶
type OnRageGainCB func(sim *Simulation, spell *Spell, result *SpellResult, rage float64) float64
type OnReset ¶
type OnReset func(aura *Aura, sim *Simulation)
type OnRuneChange ¶
type OnRuneChange func(sim *Simulation, changeType RuneChangeType, runeRegen []int8)
type OnRunicPowerGain ¶
type OnRunicPowerGain func(sim *Simulation)
type OnSnapshot ¶
type OnSnapshot func(sim *Simulation, target *Unit, dot *Dot, isRollover bool)
type OnSpellHit ¶
type OnSpellHit func(aura *Aura, sim *Simulation, spell *Spell, result *SpellResult)
Callback for after a spell hits the target and after damage is calculated. Use it for proc effects or anything that comes from the final result of the spell.
type OnStacksChange ¶
type OnStacksChange func(aura *Aura, sim *Simulation, oldStacks int32, newStacks int32)
type OnSwapItem ¶
type OnSwapItem func(*Simulation)
type OnTick ¶
type OnTick func(sim *Simulation, target *Unit, dot *Dot)
type OutcomeApplier ¶
type OutcomeApplier func(sim *Simulation, result *SpellResult, attackTable *AttackTable)
This function should do 3 things:
- Set the Outcome of the hit effect.
- Update spell outcome metrics.
- Modify the damage if necessary.
type PPMManager ¶
type PPMManager struct {
// contains filtered or unexported fields
}
func (*PPMManager) Chance ¶
func (ppmm *PPMManager) Chance(procMask ProcMask) float64
func (*PPMManager) Proc ¶
func (ppmm *PPMManager) Proc(sim *Simulation, procMask ProcMask, label string) bool
Returns whether the effect procced.
type Party ¶
type Party struct { Raid *Raid Index int Players []Agent Pets []PetAgent // Cached list of all the pets in the party. PlayersAndPets []Agent // Cached list of players + pets, concatenated. // contains filtered or unexported fields }
func (*Party) GetMetrics ¶
func (party *Party) GetMetrics() *proto.PartyMetrics
func (*Party) GetPartyBuffs ¶
func (party *Party) GetPartyBuffs(basePartyBuffs *proto.PartyBuffs) *proto.PartyBuffs
type PendingAction ¶
type PendingAction struct { NextActionAt time.Duration Priority ActionPriority // Action to perform (required). OnAction func(sim *Simulation) // Cleanup when the action is cancelled (optional). CleanUp func(sim *Simulation) // contains filtered or unexported fields }
func NewDelayedAction ¶
func NewDelayedAction(sim *Simulation, options DelayedActionOptions) *PendingAction
func NewPeriodicAction ¶
func NewPeriodicAction(sim *Simulation, options PeriodicActionOptions) *PendingAction
func StartDelayedAction ¶
func StartDelayedAction(sim *Simulation, options DelayedActionOptions) *PendingAction
Convenience for immediately creating and starting a delayed action.
func StartPeriodicAction ¶
func StartPeriodicAction(sim *Simulation, options PeriodicActionOptions) *PendingAction
Convenience for immediately creating and starting a periodic action.
func (*PendingAction) Cancel ¶
func (pa *PendingAction) Cancel(sim *Simulation)
type PeriodicActionOptions ¶
type PeriodicActionOptions struct { // How often the action should be performed. Period time.Duration // Number of times to perform the action before stopping. // 0 indicates a permanent periodic action. NumTicks int // Whether the first tick should happen immediately. If false, first tick will // wait for Period. TickImmediately bool Priority ActionPriority OnAction func(*Simulation) CleanUp func(*Simulation) }
type Pet ¶
type Pet struct { Character Owner *Character OnPetEnable OnPetEnable OnPetDisable OnPetDisable // contains filtered or unexported fields }
Pet is an extension of Character, for any entity created by a player that can take actions on its own.
func (*Pet) AddComboPoints ¶
func (eb *Pet) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
func (*Pet) AddEnergy ¶
func (eb *Pet) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) AddFocus ¶
func (fb *Pet) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) AddMajorCooldown ¶
func (mcdm *Pet) AddMajorCooldown(mcd MajorCooldown)
Registers a major cooldown to the Character, which will be automatically used when available.
func (*Pet) AddPartyBuffs ¶
func (pet *Pet) AddPartyBuffs(_ *proto.PartyBuffs)
func (*Pet) AddRage ¶
func (rb *Pet) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) AddRaidBuffs ¶
func (*Pet) AddRunicPower ¶
func (rp *Pet) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) Advance ¶
func (rp *Pet) Advance(sim *Simulation, newTime time.Duration)
func (*Pet) AllRunesSpent ¶
func (rp *Pet) AllRunesSpent() bool
func (*Pet) AnyRuneReadyAt ¶
func (rp *Pet) AnyRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) AnySpentRuneReadyAt ¶
AnySpentRuneReadyAt returns the next time that a rune will regenerate. It will be NeverExpires if there is no rune pending regeneration.
func (*Pet) ApplyTalents ¶
func (pet *Pet) ApplyTalents()
func (*Pet) BloodDeathRuneBothReadyAt ¶
func (*Pet) BloodRuneReadyAt ¶
func (rp *Pet) BloodRuneReadyAt(sim *Simulation) time.Duration
BloodRuneReadyAt returns the earliest time a (possibly death-converted) blood rune is ready.
func (*Pet) BloodTapConversion ¶
func (rp *Pet) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
func (*Pet) CancelBloodTap ¶
func (rp *Pet) CancelBloodTap(sim *Simulation)
func (*Pet) ComboPoints ¶
func (eb *Pet) ComboPoints() int32
func (*Pet) ConvertFromDeath ¶
func (rp *Pet) ConvertFromDeath(sim *Simulation, slot int8)
ConvertFromDeath reverts the rune to its original type.
func (*Pet) ConvertToDeath ¶
func (rp *Pet) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
ConvertToDeath converts the given slot to death and sets up the reversion conditions
func (*Pet) CurrentBloodOrDeathRunes ¶
func (rp *Pet) CurrentBloodOrDeathRunes() int8
func (*Pet) CurrentBloodRunes ¶
func (rp *Pet) CurrentBloodRunes() int8
func (*Pet) CurrentDeathRunes ¶
func (rp *Pet) CurrentDeathRunes() int8
func (*Pet) CurrentEnergy ¶
func (eb *Pet) CurrentEnergy() float64
func (*Pet) CurrentFocus ¶
func (fb *Pet) CurrentFocus() float64
func (*Pet) CurrentFrostOrDeathRunes ¶
func (rp *Pet) CurrentFrostOrDeathRunes() int8
func (*Pet) CurrentFrostRunes ¶
func (rp *Pet) CurrentFrostRunes() int8
func (*Pet) CurrentHealth ¶
func (hb *Pet) CurrentHealth() float64
func (*Pet) CurrentHealthPercent ¶
func (hb *Pet) CurrentHealthPercent() float64
func (*Pet) CurrentRage ¶
func (rb *Pet) CurrentRage() float64
func (*Pet) CurrentRunicPower ¶
func (rp *Pet) CurrentRunicPower() float64
func (*Pet) CurrentUnholyOrDeathRunes ¶
func (rp *Pet) CurrentUnholyOrDeathRunes() int8
func (*Pet) CurrentUnholyRunes ¶
func (rp *Pet) CurrentUnholyRunes() int8
func (*Pet) DeathRuneRegenAt ¶
DeathRuneRegenAt returns the time the given death rune will regen at. If the rune is not death or not spent it returns NeverExpires.
func (*Pet) DeathRuneRevertAt ¶
DeathRuneRevertAt returns the next time that a death rune will revert. If there is no death rune that needs to revert it returns NeverExpires.
func (*Pet) DeathRunesInFU ¶
func (rp *Pet) DeathRunesInFU() int8
func (*Pet) DebugString ¶
func (rp *Pet) DebugString() string
func (*Pet) DelayInitialInheritance ¶
Some pets, i.E. Shadowfiend only inherit their owners stat after a brief period of time Causing initial attacks and abilities to not be scaled
func (*Pet) Disable ¶
func (pet *Pet) Disable(sim *Simulation)
func (*Pet) Enable ¶
func (pet *Pet) Enable(sim *Simulation, petAgent PetAgent)
petAgent should be the PetAgent which embeds this Pet.
func (*Pet) EnableDynamicMeleeSpeed ¶
func (pet *Pet) EnableDynamicMeleeSpeed(inheritance PetMeleeSpeedInheritance)
Enables and possibly updates how the pet inherits its owner's melee speed. DK use only.
func (*Pet) EnableDynamicStats ¶
func (pet *Pet) EnableDynamicStats(inheritance PetStatInheritance)
Enables and possibly updates how the pet inherits its owner's stats. DK use only.
func (*Pet) EnableWithTimeout ¶
func (pet *Pet) EnableWithTimeout(sim *Simulation, petAgent PetAgent, petDuration time.Duration)
Helper for enabling a pet that will expire after a certain duration.
func (*Pet) EndOOMEvent ¶
func (mb *Pet) EndOOMEvent(sim *Simulation)
func (*Pet) EnergyRegenPerSecond ¶
func (eb *Pet) EnergyRegenPerSecond() float64
func (*Pet) FocusRegenPerSecond ¶
func (fb *Pet) FocusRegenPerSecond() float64
func (*Pet) FocusRegenPerTick ¶
func (fb *Pet) FocusRegenPerTick() float64
func (*Pet) FrostRuneReadyAt ¶
func (rp *Pet) FrostRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) GainHealth ¶
func (hb *Pet) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) GetActiveAuraWithTag ¶
func (*Pet) GetAuraByID ¶
func (*Pet) GetAurasWithTag ¶
func (*Pet) GetCharacter ¶
Default implementations for some Agent functions which most Pets don't need.
func (*Pet) GetIcdAuraByID ¶
func (*Pet) GetInitialMajorCooldown ¶
func (mcdm *Pet) GetInitialMajorCooldown(actionID ActionID) MajorCooldown
func (*Pet) GetMajorCooldown ¶
func (mcdm *Pet) GetMajorCooldown(actionID ActionID) *MajorCooldown
func (*Pet) GetMajorCooldownIDs ¶
func (*Pet) GetMajorCooldownIgnoreTag ¶
func (mcdm *Pet) GetMajorCooldownIgnoreTag(actionID ActionID) *MajorCooldown
func (*Pet) GetMajorCooldowns ¶
func (mcdm *Pet) GetMajorCooldowns() []*MajorCooldown
Returns all MCDs.
func (*Pet) HasActiveAura ¶
func (*Pet) HasActiveAuraWithTag ¶
func (*Pet) HasActiveAuraWithTagExcludingAura ¶
func (*Pet) HasAuraWithTag ¶
func (*Pet) IsBloodTappedRune ¶
func (*Pet) IsGuardian ¶
func (*Pet) LeftBloodRuneReady ¶
func (rp *Pet) LeftBloodRuneReady() bool
func (*Pet) MaximumEnergy ¶
func (eb *Pet) MaximumEnergy() float64
func (*Pet) MultiplyEnergyRegenSpeed ¶
func (eb *Pet) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
func (*Pet) MultiplyFocusRegenSpeed ¶
func (fb *Pet) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
func (*Pet) MultiplyRuneRegenSpeed ¶
func (rp *Pet) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
func (*Pet) MultiplyRunicRegen ¶
func (rp *Pet) MultiplyRunicRegen(multiply float64)
func (*Pet) NextBloodRuneReadyAt ¶
func (rp *Pet) NextBloodRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) NextEnergyTickAt ¶
func (*Pet) NextFocusTickAt ¶
func (*Pet) NextFrostRuneReadyAt ¶
func (rp *Pet) NextFrostRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) NextUnholyRuneReadyAt ¶
func (rp *Pet) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) NormalFrostRuneReadyAt ¶
func (rp *Pet) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
NormalFrostRuneReadyAt returns the earliest time a non-death frost rune is ready.
func (*Pet) NormalSpentBloodRuneReadyAt ¶
func (rp *Pet) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
NormalSpentBloodRuneReadyAt returns the earliest time a spent non-death blood rune is ready.
func (*Pet) NormalUnholyRuneReadyAt ¶
func (rp *Pet) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) NumActiveAurasWithTag ¶
func (*Pet) OnApplyEffects ¶
func (at *Pet) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
Invokes the OnApplyEffects event for all tracked Auras.
func (*Pet) OnCastComplete ¶
func (at *Pet) OnCastComplete(sim *Simulation, spell *Spell)
Invokes the OnCastComplete event for all tracked Auras.
func (*Pet) OnGCDReady ¶
func (pet *Pet) OnGCDReady(_ *Simulation)
func (*Pet) OnHealDealt ¶
func (at *Pet) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnHeal event for all tracked Auras.
func (*Pet) OnHealTaken ¶
func (at *Pet) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Pet) OnPeriodicDamageDealt ¶
func (at *Pet) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicDamage
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Pet) OnPeriodicDamageTaken ¶
func (at *Pet) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Pet) OnPeriodicHealDealt ¶
func (at *Pet) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicHeal
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Pet) OnPeriodicHealTaken ¶
func (at *Pet) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Pet) OnSpellHitDealt ¶
func (at *Pet) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnSpellHit event for all tracked Auras.
func (*Pet) OnSpellHitTaken ¶
func (at *Pet) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Pet) OptimalRuneCost ¶
func (*Pet) RegenAllRunes ¶
func (rp *Pet) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
func (*Pet) RegenRandomDepletedRune ¶
func (rp *Pet) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
func (*Pet) RegisterResetEffect ¶
func (at *Pet) RegisterResetEffect(resetEffect ResetEffect)
Registers a callback to this Character which will be invoked on every Sim reset.
func (*Pet) RemoveHealth ¶
func (hb *Pet) RemoveHealth(sim *Simulation, amount float64)
func (*Pet) ResetEnergyTick ¶
func (eb *Pet) ResetEnergyTick(sim *Simulation)
Gives an immediate partial energy tick and restarts the tick timer.
func (*Pet) ResetFocusTick ¶
func (fb *Pet) ResetFocusTick(sim *Simulation)
Gives an immediate partial Focus tick and restarts the tick timer.
func (*Pet) RuneIsActive ¶
func (*Pet) RuneIsDeath ¶
func (*Pet) RuneReadyAt ¶
func (rp *Pet) RuneReadyAt(sim *Simulation, slot int8) time.Duration
func (*Pet) SetPermanentDeathRunes ¶
func (rp *Pet) SetPermanentDeathRunes(permanentDeaths []int8)
func (*Pet) SpendComboPoints ¶
func (eb *Pet) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
func (*Pet) SpendEnergy ¶
func (eb *Pet) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) SpendFocus ¶
func (fb *Pet) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) SpendRage ¶
func (rb *Pet) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) SpendRuneReadyAt ¶
func (*Pet) SpendRunicPower ¶
func (rp *Pet) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Pet) StartOOMEvent ¶
func (mb *Pet) StartOOMEvent(sim *Simulation, requiredMana float64)
func (*Pet) UnholyRuneReadyAt ¶
func (rp *Pet) UnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Pet) UpdateMajorCooldowns ¶
func (mcdm *Pet) UpdateMajorCooldowns()
This function should be called if the CD for a major cooldown changes outside of the TryActivate() call.
func (*Pet) UpdateMaxEnergy ¶
func (eb *Pet) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum Energy, such as from the Druid Primal Madness talent
func (*Pet) UpdateMaxHealth ¶
func (hb *Pet) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum health from "Last Stand" effects
type PetMeleeSpeedInheritance ¶
type PetMeleeSpeedInheritance func(amount float64)
type PostFinalizeEffect ¶
type PostFinalizeEffect func()
Callback for doing something after finalization.
type PowerBarType ¶
type PowerBarType int
const ( ManaBar PowerBarType = iota EnergyBar RageBar RunicPower FocusBar )
type PrepullAction ¶
type PrepullAction struct { DoAt time.Duration Action func(*Simulation) }
Callback for doing something on prepull.
type PresetTarget ¶
type PresetTarget struct { // String in folder-structure format identifying a category for this unit, e.g. "Black Temple/Bosses". PathPrefix string Config *proto.Target AI AIFactory }
func GetPresetTargetWithID ¶
func GetPresetTargetWithID(id int32) *PresetTarget
func GetPresetTargetWithPath ¶
func GetPresetTargetWithPath(path string) *PresetTarget
func (PresetTarget) Path ¶
func (pt PresetTarget) Path() string
func (PresetTarget) ToProto ¶
func (pt PresetTarget) ToProto() *proto.PresetTarget
type PresimOptions ¶
type PresimOptions struct { // Called once before each presim round. // // Modify the player parameter to use whatever player options are desired // for the presim. SetPresimPlayerOptions func(player *proto.Player) // Called once after each presim round to provide the results. // // Should return true if this Agent is done running presims, and false otherwise. OnPresimResult func(presimResult *proto.UnitMetrics, iterations int32, duration time.Duration) bool }
Controls the presim behavior for 1 Agent.
type Presimmer ¶
type Presimmer interface {
GetPresimOptions(*proto.Player) *PresimOptions
}
A presim is a full simulation run with multiple iterations, as a preparation step for testing out settings before starting the recorded iterations.
To use this, just implement this interface on your Agent.
If you don't know what this is, you probably don't need it.
type ProcExtraCondition ¶
type ProcExtraCondition func(sim *Simulation, spell *Spell, result *SpellResult) bool
type ProcHandler ¶
type ProcHandler func(sim *Simulation, spell *Spell, result *SpellResult)
type ProcMask ¶
type ProcMask uint32
const ( // Default value is invalid, to force authors to think about proc masks. ProcMaskUnknown ProcMask = 0 ProcMaskEmpty ProcMask = 1 << iota ProcMaskMeleeMHAuto ProcMaskMeleeOHAuto ProcMaskMeleeMHSpecial ProcMaskMeleeOHSpecial ProcMaskRangedAuto ProcMaskRangedSpecial ProcMaskSpellDamage ProcMaskSpellHealing // Special mask for procs that can trigger things ProcMaskProc // Mask for FT weapon and rogue poisons, seems to be spell procs from a weapon imbue ProcMaskWeaponProc // Mind Flay ProcMaskNotInSpellbook // Can proc Talisman of Volatile power, but nothing else? ProcMaskSuppressedProc )
Single-bit masks. These don't need to match Blizzard's values.
type ProcTrigger ¶
type ProcTrigger struct { Name string ActionID ActionID Duration time.Duration Callback AuraCallback ProcMask ProcMask ProcMaskExclude ProcMask SpellFlags SpellFlag Outcome HitOutcome Harmful bool ProcChance float64 PPM float64 ICD time.Duration Handler ProcHandler ClassSpellMask int64 ExtraCondition ProcExtraCondition }
type QueuedSpell ¶
type QueuedSpell struct { // Stores the time at which QueueSpell() was called to ensure that only one spell can be queued up per timestep QueueInitiatedAt time.Duration // contains filtered or unexported fields }
func (*QueuedSpell) Cancel ¶
func (qs *QueuedSpell) Cancel(sim *Simulation)
Models the use of /cqs macros to change which spell should be cast at the last minute
func (*QueuedSpell) InitiateQueue ¶
func (qs *QueuedSpell) InitiateQueue(sim *Simulation, spell *Spell, target *Unit, executeAt time.Duration)
type RageBarOptions ¶
type RageBarOptions struct { StartingRage float64 MHSwingSpeed float64 OHSwingSpeed float64 RageMultiplier float64 // Called when rage is calculated from an OnSpellHitDealt event // but before it has been applied to the unit OnHitDealtRageGain OnRageGainCB // Called when rage is calculated from an OnSpellHitTaken event // but before it has been applied to the unit OnHitTakenRageGain OnRageGainCB }
type RageCost ¶
type RageCost struct { Refund float64 RefundMetrics *ResourceMetrics ResourceMetrics *ResourceMetrics }
func (*RageCost) CostFailureReason ¶
func (rc *RageCost) CostFailureReason(sim *Simulation, spell *Spell) string
func (*RageCost) IssueRefund ¶
func (rc *RageCost) IssueRefund(sim *Simulation, spell *Spell)
func (*RageCost) MeetsRequirement ¶
func (rc *RageCost) MeetsRequirement(_ *Simulation, spell *Spell) bool
func (*RageCost) SpendCost ¶
func (rc *RageCost) SpendCost(sim *Simulation, spell *Spell)
type RageCostOptions ¶
type RageCostOptions struct { Cost float64 Refund float64 RefundMetrics *ResourceMetrics // Optional, will default to unit.RageRefundMetrics if not supplied. }
type Raid ¶
type Raid struct { Parties []*Party AllPlayerUnits []*Unit // Cached list of all Players in the raid. AllUnits []*Unit // Cached list of all Units (players and pets) in the raid. // contains filtered or unexported fields }
func (*Raid) GetActiveAllyUnits ¶
func (*Raid) GetActiveUnits ¶
func (*Raid) GetFirstEmptyRaidIndex ¶
Returns (party, index within party)
func (*Raid) GetFirstNPlayersOrPets ¶
func (*Raid) GetFirstTargetDummy ¶
func (raid *Raid) GetFirstTargetDummy() *TargetDummy
func (*Raid) GetMetrics ¶
func (raid *Raid) GetMetrics() *proto.RaidMetrics
func (*Raid) GetPlayerFromUnit ¶
func (*Raid) GetPlayerFromUnitIndex ¶
func (*Raid) GetRaidBuffs ¶
func (*Raid) NewReplenishmentSource ¶
func (raid *Raid) NewReplenishmentSource(actionID ActionID) ReplenishmentSource
Returns a new aura whose activation will give the Replenishment buff to 10 party/raid members.
func (*Raid) ProcReplenishment ¶
func (raid *Raid) ProcReplenishment(sim *Simulation, src ReplenishmentSource)
type Rand ¶
type Rand interface { Next() uint64 NextFloat64() float64 Seed(int64) GetSeed() int64 rand.Source64 }
implementing Source or Source64 is possible, but adds too much overhead
type RandomSuffix ¶
func RandomSuffixFromProto ¶
func RandomSuffixFromProto(pData *proto.ItemRandomSuffix) RandomSuffix
type ReforgeStat ¶
type ReforgeStat struct { ID int32 FromStat []proto.Stat // Assuming Stat is an enum or int32 type you've defined elsewhere ToStat []proto.Stat Multiplier float64 }
func ReforgeStatFromProto ¶
func ReforgeStatFromProto(protoStat *proto.ReforgeStat) ReforgeStat
ReforgeStatFromProto converts a protobuf ReforgeStat to a Go ReforgeStat
type ReplaceMHSwing ¶
type ReplaceMHSwing func(sim *Simulation, mhSwingSpell *Spell) *Spell
ReplaceMHSwing is called right before a main hand auto attack fires. It must never return nil, but either a replacement spell or the passed in regular mhSwingSpell. This allows for abilities that convert a white attack into a yellow attack.
type ReplenishmentSource ¶
type ReplenishmentSource int
type ResetTestResult ¶
type ResourceKey ¶
type ResourceKey struct { ActionID ActionID Type proto.ResourceType }
type ResourceMetrics ¶
type ResourceMetrics struct { ActionID ActionID Type proto.ResourceType Events int32 Gain float64 ActualGain float64 EventsFromPreviousIterations int32 ActualGainFromPreviousIterations float64 }
func (*ResourceMetrics) ActualGainForCurrentIteration ¶
func (resourceMetrics *ResourceMetrics) ActualGainForCurrentIteration() float64
func (*ResourceMetrics) AddEvent ¶
func (resourceMetrics *ResourceMetrics) AddEvent(gain float64, actualGain float64)
func (*ResourceMetrics) EventsForCurrentIteration ¶
func (resourceMetrics *ResourceMetrics) EventsForCurrentIteration() int32
func (*ResourceMetrics) ToProto ¶
func (resourceMetrics *ResourceMetrics) ToProto() *proto.ResourceMetrics
type RotationCastsTestGenerator ¶
type RotationCastsTestGenerator struct { SpecOptions []SpecOptionsCombo PartyBuffs *proto.PartyBuffs RaidBuffs *proto.RaidBuffs Debuffs *proto.Debuffs Player *proto.Player Encounter *proto.Encounter SimOptions *proto.SimOptions }
func (*RotationCastsTestGenerator) GetTest ¶
func (generator *RotationCastsTestGenerator) GetTest(testIdx int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*RotationCastsTestGenerator) NumTests ¶
func (generator *RotationCastsTestGenerator) NumTests() int
type RotationCombo ¶
type RotationCombo struct { Label string Rotation *proto.APLRotation }
func GetAplRotation ¶
func GetAplRotation(dir string, file string) RotationCombo
type RuneChangeType ¶
type RuneChangeType int32
const ( None RuneChangeType = 0 SpendRune RuneChangeType = 1 GainRune RuneChangeType = 2 ConvertToDeath RuneChangeType = 4 ConvertFromDeath RuneChangeType = 8 )
func (RuneChangeType) Matches ¶
func (r RuneChangeType) Matches(other RuneChangeType) bool
type RuneCost ¶
type RuneCost int32
RuneCost's bit layout is: <16r.4d.4u.4f.4b>. Each part is just a count now (0..15 for runes).
func NewRuneCost ¶
func (RuneCost) RunicPower ¶
type RuneCostImpl ¶
type RuneCostImpl struct { BloodRuneCost int8 FrostRuneCost int8 UnholyRuneCost int8 RunicPowerCost float64 RunicPowerGain float64 Refundable bool RefundCost float64 // contains filtered or unexported fields }
func (*RuneCostImpl) CostFailureReason ¶
func (rc *RuneCostImpl) CostFailureReason(_ *Simulation, _ *Spell) string
func (*RuneCostImpl) GetConfig ¶
func (rc *RuneCostImpl) GetConfig() RuneCostOptions
func (*RuneCostImpl) IssueRefund ¶
func (rc *RuneCostImpl) IssueRefund(_ *Simulation, _ *Spell)
func (*RuneCostImpl) MeetsRequirement ¶
func (rc *RuneCostImpl) MeetsRequirement(_ *Simulation, spell *Spell) bool
func (*RuneCostImpl) SpendCost ¶
func (rc *RuneCostImpl) SpendCost(sim *Simulation, spell *Spell)
type RuneCostOptions ¶
type SettingsCombos ¶
type SettingsCombos struct { Class proto.Class Races []proto.Race GearSets []GearSetCombo TalentSets []TalentsCombo SpecOptions []SpecOptionsCombo Rotations []RotationCombo Buffs []BuffsCombo Encounters []EncounterCombo SimOptions *proto.SimOptions IsHealer bool StartingDistances []float64 Cooldowns *proto.Cooldowns }
func (*SettingsCombos) GetTest ¶
func (combos *SettingsCombos) GetTest(testIdx int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*SettingsCombos) NumTests ¶
func (combos *SettingsCombos) NumTests() int
type Shield ¶
type Shield struct { Spell *Spell // Embed Aura so we can use IsActive/Refresh/etc directly. *Aura }
Rerpresents an absorption effect, e.g. Power Word: Shield.
func (*Shield) Apply ¶
func (shield *Shield) Apply(sim *Simulation, shieldAmount float64)
type ShieldArray ¶
type ShieldArray []*Shield
func (ShieldArray) Get ¶
func (shields ShieldArray) Get(target *Unit) *Shield
type ShieldConfig ¶
type Simulation ¶
type Simulation struct { *Environment Options *proto.SimOptions CurrentTime time.Duration // duration that has elapsed in the sim since starting Duration time.Duration // Duration of current iteration NeedsInput bool // Sim is in interactive mode and needs input ProgressReport func(*proto.ProgressMetrics) QuitChannel chan bool Log func(string, ...interface{}) // contains filtered or unexported fields }
func NewSim ¶
func NewSim(rsr *proto.RaidSimRequest) *Simulation
func (*Simulation) AddPendingAction ¶
func (sim *Simulation) AddPendingAction(pa *PendingAction)
func (*Simulation) AddTask ¶
func (sim *Simulation) AddTask(task Task)
func (*Simulation) Cleanup ¶
func (sim *Simulation) Cleanup()
func (*Simulation) GetRemainingDuration ¶
func (sim *Simulation) GetRemainingDuration() time.Duration
func (*Simulation) GetRemainingDurationPercent ¶
func (sim *Simulation) GetRemainingDurationPercent() float64
Returns the percentage of time remaining in the current iteration, as a value from 0-1.
func (*Simulation) IsExecutePhase20 ¶
func (sim *Simulation) IsExecutePhase20() bool
func (*Simulation) IsExecutePhase25 ¶
func (sim *Simulation) IsExecutePhase25() bool
func (*Simulation) IsExecutePhase35 ¶
func (sim *Simulation) IsExecutePhase35() bool
func (*Simulation) IsExecutePhase90 ¶
func (sim *Simulation) IsExecutePhase90() bool
func (*Simulation) PrePull ¶
func (sim *Simulation) PrePull()
func (*Simulation) RandomExpFloat ¶
func (sim *Simulation) RandomExpFloat(label string) float64
func (*Simulation) RandomFloat ¶
func (sim *Simulation) RandomFloat(label string) float64
Returns a random float64 between 0.0 (inclusive) and 1.0 (exclusive).
In tests, although we can set the initial seed, test results are still very sensitive to the exact order of RandomFloat() calls. To mitigate this, when testing we use a separate rand object for each RandomFloat callsite, distinguished by the label string.
func (*Simulation) RegisterExecutePhaseCallback ¶
func (sim *Simulation) RegisterExecutePhaseCallback(callback func(sim *Simulation, isExecute int32))
func (*Simulation) RemoveTask ¶
func (sim *Simulation) RemoveTask(task Task)
func (*Simulation) RescheduleTask ¶
func (sim *Simulation) RescheduleTask(taskTime time.Duration)
func (*Simulation) Reseed ¶
func (sim *Simulation) Reseed(seed int64)
func (*Simulation) Reset ¶
func (sim *Simulation) Reset()
func (*Simulation) Roll ¶
func (sim *Simulation) Roll(min float64, max float64) float64
Shorthand for commonly-used RNG behavior. Returns a random number between min and max.
func (*Simulation) RollWithLabel ¶
func (sim *Simulation) RollWithLabel(min float64, max float64, label string) float64
func (*Simulation) Step ¶
func (sim *Simulation) Step() bool
type SingleCharacterStatsTestGenerator ¶
type SingleCharacterStatsTestGenerator struct { Name string Request *proto.ComputeStatsRequest }
func (*SingleCharacterStatsTestGenerator) GetTest ¶
func (generator *SingleCharacterStatsTestGenerator) GetTest(_ int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*SingleCharacterStatsTestGenerator) NumTests ¶
func (generator *SingleCharacterStatsTestGenerator) NumTests() int
type SingleDpsTestGenerator ¶
type SingleDpsTestGenerator struct { Name string Request *proto.RaidSimRequest }
func (*SingleDpsTestGenerator) GetTest ¶
func (generator *SingleDpsTestGenerator) GetTest(_ int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*SingleDpsTestGenerator) NumTests ¶
func (generator *SingleDpsTestGenerator) NumTests() int
type SingleStatWeightsTestGenerator ¶
type SingleStatWeightsTestGenerator struct { Name string Request *proto.StatWeightsRequest }
func (*SingleStatWeightsTestGenerator) GetTest ¶
func (generator *SingleStatWeightsTestGenerator) GetTest(_ int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest)
func (*SingleStatWeightsTestGenerator) NumTests ¶
func (generator *SingleStatWeightsTestGenerator) NumTests() int
type SpecOptionsCombo ¶
type SpecOptionsCombo struct { Label string SpecOptions interface{} }
type SpecSetter ¶
type Spell ¶
type Spell struct { // ID for this spell. ActionID // The unit who will perform this spell. Unit *Unit // Fire, Frost, Shadow, etc. SpellSchool SpellSchool SchoolIndex stats.SchoolIndex // Controls which effects can proc from this spell. ProcMask ProcMask // Flags Flags SpellFlag // The specific class spell id // should be a unique bit ClassSpellMask int64 // Speed in yards/second. Spell missile speeds can be found in the game data. // Example: https://wow.tools/dbc/?dbc=spellmisc&build=3.4.0.44996 MissileSpeed float64 ResourceMetrics *ResourceMetrics Cost SpellCost // Cost for the spell. DefaultCast Cast // Default cast parameters with all static effects applied. CD Cooldown ExtraCastCondition CanCastCondition // Optional range constraints. If supplied, these are used to modify the ExtraCastCondition above to additionally check for DistanceFromTarget. MinRange float64 MaxRange float64 SpellMetrics []SpellMetrics // Performs the actions of this spell. ApplyEffects ApplySpellResults // The current or most recent cast data. CurCast Cast BonusHitRating float64 BonusCritRating float64 BonusSpellPower float64 BonusExpertiseRating float64 CastTimeMultiplier float64 CostMultiplier float64 CdMultiplier float64 DamageMultiplier float64 DamageMultiplierAdditive float64 CritMultiplier float64 BonusCoefficient float64 // EffectBonusCoefficient in SpellEffect client DB table, "SP mod" on Wowhead (not necessarily shown there even if > 0) // Multiplier for all threat generated by this effect. ThreatMultiplier float64 // Adds a fixed amount of threat to this spell, before multipliers. FlatThreatBonus float64 // Per-target auras that are related to this spell, usually buffs or debuffs applied by the spell. RelatedAuras []AuraArray RelatedDotSpell *Spell // contains filtered or unexported fields }
func (*Spell) ApplyAOEThreat ¶
func (*Spell) ApplyAOEThreatIgnoreMultipliers ¶
func (*Spell) ApplyCostModifiers ¶
func (*Spell) ApplyPostOutcomeDamageModifiers ¶
func (spell *Spell) ApplyPostOutcomeDamageModifiers(sim *Simulation, result *SpellResult)
func (*Spell) AttackerDamageMultiplier ¶
func (spell *Spell) AttackerDamageMultiplier(attackTable *AttackTable, isDot bool) float64
Returns the combined attacker modifiers.
func (*Spell) BloodRuneMetrics ¶
func (spell *Spell) BloodRuneMetrics() *ResourceMetrics
func (*Spell) BonusDamage ¶
func (*Spell) CalcAndDealDamage ¶
func (spell *Spell) CalcAndDealDamage(sim *Simulation, target *Unit, baseDamage float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcAndDealHealing ¶
func (spell *Spell) CalcAndDealHealing(sim *Simulation, target *Unit, baseHealing float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcAndDealOutcome ¶
func (spell *Spell) CalcAndDealOutcome(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcAndDealPeriodicDamage ¶
func (spell *Spell) CalcAndDealPeriodicDamage(sim *Simulation, target *Unit, baseDamage float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcAndDealPeriodicHealing ¶
func (spell *Spell) CalcAndDealPeriodicHealing(sim *Simulation, target *Unit, baseHealing float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcDamage ¶
func (spell *Spell) CalcDamage(sim *Simulation, target *Unit, baseDamage float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcHealing ¶
func (spell *Spell) CalcHealing(sim *Simulation, target *Unit, baseHealing float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CalcOutcome ¶
func (spell *Spell) CalcOutcome(sim *Simulation, target *Unit, outcomeApplier OutcomeApplier) *SpellResult
For spells that do no damage but still have a hit/miss check.
func (*Spell) CalcPeriodicDamage ¶
func (spell *Spell) CalcPeriodicDamage(sim *Simulation, target *Unit, baseDamage float64, outcomeApplier OutcomeApplier) *SpellResult
func (*Spell) CanCast ¶
func (spell *Spell) CanCast(sim *Simulation, target *Unit) bool
Returns whether a call to Cast() would be successful, without actually doing a cast.
func (*Spell) CanCastOrQueue ¶
func (spell *Spell) CanCastOrQueue(sim *Simulation, target *Unit) bool
Helper function for APL checks to prevent infinite loops
func (*Spell) CanQueue ¶
func (spell *Spell) CanQueue(sim *Simulation, target *Unit) bool
Returns whether the spell could be queued by the player at the current time using the game's spell queueing functionality. Assumes the maximum spell queue window of 400ms that the game allows.
func (*Spell) CastOrQueue ¶
func (spell *Spell) CastOrQueue(sim *Simulation, target *Unit)
func (*Spell) CasterHealingMultiplier ¶
func (*Spell) ComboPointMetrics ¶
func (spell *Spell) ComboPointMetrics() *ResourceMetrics
func (*Spell) CurDamagePerCast ¶
Metrics for the current iteration
func (*Spell) DealDamage ¶
func (spell *Spell) DealDamage(sim *Simulation, result *SpellResult)
func (*Spell) DealHealing ¶
func (spell *Spell) DealHealing(sim *Simulation, result *SpellResult)
func (*Spell) DealOutcome ¶
func (spell *Spell) DealOutcome(sim *Simulation, result *SpellResult)
func (*Spell) DealPeriodicDamage ¶
func (spell *Spell) DealPeriodicDamage(sim *Simulation, result *SpellResult)
func (*Spell) DealPeriodicHealing ¶
func (spell *Spell) DealPeriodicHealing(sim *Simulation, result *SpellResult)
func (*Spell) DeathRuneMetrics ¶
func (spell *Spell) DeathRuneMetrics() *ResourceMetrics
func (*Spell) DisposeResult ¶
func (spell *Spell) DisposeResult(result *SpellResult)
func (*Spell) EffectiveCastTime ¶
Time until either the cast is finished or GCD is ready again, whichever is longer
func (*Spell) EnergyMetrics ¶
func (spell *Spell) EnergyMetrics() *ResourceMetrics
func (*Spell) ExpectedInitialDamage ¶
func (spell *Spell) ExpectedInitialDamage(sim *Simulation, target *Unit) float64
func (*Spell) ExpectedTickDamage ¶
func (spell *Spell) ExpectedTickDamage(sim *Simulation, target *Unit) float64
func (*Spell) ExpectedTickDamageFromCurrentSnapshot ¶
func (spell *Spell) ExpectedTickDamageFromCurrentSnapshot(sim *Simulation, target *Unit) float64
func (*Spell) ExpertisePercentage ¶
func (*Spell) FrostRuneMetrics ¶
func (spell *Spell) FrostRuneMetrics() *ResourceMetrics
func (*Spell) GetPhysicalMissChance ¶
func (spell *Spell) GetPhysicalMissChance(attackTable *AttackTable) float64
func (*Spell) HealingCritChance ¶
func (*Spell) HealingCritCheck ¶
func (spell *Spell) HealingCritCheck(sim *Simulation) bool
func (*Spell) HealingPower ¶
func (*Spell) HealthMetrics ¶
func (spell *Spell) HealthMetrics(target *Unit) *ResourceMetrics
func (*Spell) IsReady ¶
func (spell *Spell) IsReady(sim *Simulation) bool
func (*Spell) IssueRefund ¶
func (spell *Spell) IssueRefund(sim *Simulation)
func (*Spell) MagicCritCheck ¶
func (spell *Spell) MagicCritCheck(sim *Simulation, target *Unit) bool
func (*Spell) MagicHitCheck ¶
func (spell *Spell) MagicHitCheck(sim *Simulation, attackTable *AttackTable) bool
func (*Spell) MeleeAttackPower ¶
func (*Spell) NewResult ¶
func (spell *Spell) NewResult(target *Unit) *SpellResult
func (*Spell) OutcomeAlwaysHit ¶
func (spell *Spell) OutcomeAlwaysHit(_ *Simulation, result *SpellResult, _ *AttackTable)
func (*Spell) OutcomeAlwaysMiss ¶
func (spell *Spell) OutcomeAlwaysMiss(_ *Simulation, result *SpellResult, _ *AttackTable)
func (*Spell) OutcomeEnemyMeleeWhite ¶
func (spell *Spell) OutcomeEnemyMeleeWhite(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeExpectedMagicAlwaysHit ¶
func (spell *Spell) OutcomeExpectedMagicAlwaysHit(_ *Simulation, _ *SpellResult, _ *AttackTable)
func (*Spell) OutcomeExpectedMagicCrit ¶
func (spell *Spell) OutcomeExpectedMagicCrit(_ *Simulation, result *SpellResult, _ *AttackTable)
func (*Spell) OutcomeExpectedMagicHit ¶
func (spell *Spell) OutcomeExpectedMagicHit(_ *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeExpectedMagicHitAndCrit ¶
func (spell *Spell) OutcomeExpectedMagicHitAndCrit(_ *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeExpectedMeleeWeaponSpecialHitAndCrit ¶
func (spell *Spell) OutcomeExpectedMeleeWeaponSpecialHitAndCrit(_ *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeExpectedMeleeWhite ¶
func (spell *Spell) OutcomeExpectedMeleeWhite(_ *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeExpectedTick ¶
func (spell *Spell) OutcomeExpectedTick(_ *Simulation, _ *SpellResult, _ *AttackTable)
func (*Spell) OutcomeHealing ¶
func (spell *Spell) OutcomeHealing(_ *Simulation, result *SpellResult, _ *AttackTable)
func (*Spell) OutcomeHealingCrit ¶
func (spell *Spell) OutcomeHealingCrit(sim *Simulation, result *SpellResult, _ *AttackTable)
func (*Spell) OutcomeMagicCrit ¶
func (spell *Spell) OutcomeMagicCrit(sim *Simulation, result *SpellResult, _ *AttackTable)
func (*Spell) OutcomeMagicHit ¶
func (spell *Spell) OutcomeMagicHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMagicHitAndCrit ¶
func (spell *Spell) OutcomeMagicHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeSpecialBlockAndCrit ¶ added in v0.0.18
func (spell *Spell) OutcomeMeleeSpecialBlockAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeSpecialCritOnly ¶
func (spell *Spell) OutcomeMeleeSpecialCritOnly(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeSpecialHit ¶
func (spell *Spell) OutcomeMeleeSpecialHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeSpecialHitAndCrit ¶
func (spell *Spell) OutcomeMeleeSpecialHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeSpecialNoBlockDodgeParry ¶
func (spell *Spell) OutcomeMeleeSpecialNoBlockDodgeParry(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeSpecialNoBlockDodgeParryNoCrit ¶
func (spell *Spell) OutcomeMeleeSpecialNoBlockDodgeParryNoCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeWeaponSpecialHitAndCrit ¶
func (spell *Spell) OutcomeMeleeWeaponSpecialHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
Like OutcomeMeleeSpecialHitAndCrit, but blocks prevent crits (all weapon damage based attacks).
func (*Spell) OutcomeMeleeWeaponSpecialNoCrit ¶
func (spell *Spell) OutcomeMeleeWeaponSpecialNoCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeMeleeWhite ¶
func (spell *Spell) OutcomeMeleeWhite(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeRangedCritOnly ¶
func (spell *Spell) OutcomeRangedCritOnly(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeRangedHit ¶
func (spell *Spell) OutcomeRangedHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeRangedHitAndCrit ¶
func (spell *Spell) OutcomeRangedHitAndCrit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeRangedHitAndCritNoBlock ¶
func (spell *Spell) OutcomeRangedHitAndCritNoBlock(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) OutcomeTickMagicHit ¶
func (spell *Spell) OutcomeTickMagicHit(sim *Simulation, result *SpellResult, attackTable *AttackTable)
func (*Spell) PhysicalCritChance ¶
func (spell *Spell) PhysicalCritChance(attackTable *AttackTable) float64
func (*Spell) PhysicalCritCheck ¶
func (spell *Spell) PhysicalCritCheck(sim *Simulation, attackTable *AttackTable) bool
func (*Spell) PhysicalHitChance ¶
func (spell *Spell) PhysicalHitChance(attackTable *AttackTable) float64
func (*Spell) RangedAttackPower ¶
func (*Spell) ResistanceMultiplier ¶
func (spell *Spell) ResistanceMultiplier(sim *Simulation, isPeriodic bool, attackTable *AttackTable) (float64, HitOutcome)
Modifies damage based on Armor or Magic resistances, depending on the damage type.
func (*Spell) RuneCostImpl ¶
func (spell *Spell) RuneCostImpl() *RuneCostImpl
func (*Spell) RunicPowerMetrics ¶
func (spell *Spell) RunicPowerMetrics() *ResourceMetrics
func (*Spell) SelfShield ¶
func (*Spell) SetMetricsSplit ¶
func (*Spell) ShouldRefreshExclusiveEffects ¶
func (*Spell) SkipCastAndApplyEffects ¶
func (spell *Spell) SkipCastAndApplyEffects(sim *Simulation, target *Unit)
Skips the actual cast and applies spell effects immediately.
func (*Spell) SpellChanceToMiss ¶
func (spell *Spell) SpellChanceToMiss(attackTable *AttackTable) float64
func (*Spell) SpellCritChance ¶
func (*Spell) SpellHitChance ¶
func (*Spell) SpellPower ¶
func (*Spell) SpendRefundableCost ¶
func (spell *Spell) SpendRefundableCost(sim *Simulation, result *SpellResult)
func (*Spell) SpendRefundableCostAndConvertBloodOrFrostRune ¶
func (spell *Spell) SpendRefundableCostAndConvertBloodOrFrostRune(sim *Simulation, result *SpellResult, convertChance float64)
func (*Spell) SpendRefundableCostAndConvertBloodRune ¶
func (spell *Spell) SpendRefundableCostAndConvertBloodRune(sim *Simulation, result *SpellResult, convertChance float64)
func (*Spell) SpendRefundableCostAndConvertFrostOrUnholyRune ¶
func (spell *Spell) SpendRefundableCostAndConvertFrostOrUnholyRune(sim *Simulation, result *SpellResult, convertChance float64)
func (*Spell) TargetDamageMultiplier ¶
func (spell *Spell) TargetDamageMultiplier(sim *Simulation, attackTable *AttackTable, isPeriodic bool) float64
func (*Spell) ThreatFromDamage ¶
func (spell *Spell) ThreatFromDamage(outcome HitOutcome, damage float64) float64
func (*Spell) TimeToReady ¶
func (spell *Spell) TimeToReady(sim *Simulation) time.Duration
func (*Spell) TravelTime ¶
func (*Spell) UnholyRuneMetrics ¶
func (spell *Spell) UnholyRuneMetrics() *ResourceMetrics
func (*Spell) WaitTravelTime ¶
func (spell *Spell) WaitTravelTime(sim *Simulation, callback func(*Simulation))
type SpellConfig ¶
type SpellConfig struct { // See definition of Spell (below) for comments on these. ActionID SpellSchool SpellSchool ProcMask ProcMask Flags SpellFlag MissileSpeed float64 BaseCost float64 MetricSplits int ClassSpellMask int64 ManaCost ManaCostOptions EnergyCost EnergyCostOptions RageCost RageCostOptions RuneCost RuneCostOptions FocusCost FocusCostOptions Cast CastConfig ExtraCastCondition CanCastCondition // Optional range constraints. If supplied, these are used to modify the ExtraCastCondition above to additionally check for DistanceFromTarget. MinRange float64 MaxRange float64 BonusHitRating float64 BonusCritRating float64 BonusSpellPower float64 BonusExpertiseRating float64 DamageMultiplier float64 DamageMultiplierAdditive float64 CritMultiplier float64 BonusCoefficient float64 // EffectBonusCoefficient in SpellEffect client DB table, "SP mod" on Wowhead (not necessarily shown there even if > 0) ThreatMultiplier float64 FlatThreatBonus float64 // Performs the actions of this spell. ApplyEffects ApplySpellResults // Optional field. Calculates expected average damage. ExpectedInitialDamage ExpectedDamageCalculator ExpectedTickDamage ExpectedDamageCalculator Dot DotConfig Hot DotConfig Shield ShieldConfig RelatedAuras []AuraArray RelatedDotSpell *Spell }
type SpellCost ¶
type SpellCost interface { // Whether the Unit associated with the spell meets the resource cost // requirements to cast the spell. MeetsRequirement(*Simulation, *Spell) bool // Returns a message for when the cast fails due to lack of resources. CostFailureReason(*Simulation, *Spell) string // Subtracts the resources used from a cast from the Unit. SpendCost(*Simulation, *Spell) // Space for handling refund mechanics. Not all spells provide refunds. IssueRefund(*Simulation, *Spell) }
Handles computing the cost of spells and checking whether the Unit meets them.
type SpellFlag ¶
type SpellFlag uint32
Other flags
const ( SpellFlagNone SpellFlag = 0 SpellFlagIgnoreResists SpellFlag = 1 << iota // skip spell resist/armor SpellFlagIgnoreTargetModifiers // skip target damage modifiers SpellFlagIgnoreAttackerModifiers // skip attacker damage modifiers SpellFlagApplyArmorReduction // Forces damage reduction from armor to apply, even if it otherwise wouldn't. SpellFlagCannotBeDodged // Ignores dodge in physical hit rolls SpellFlagIncludeTargetBonusDamage // Spell benefits from Gift of Arthas and Hemorrhage. SpellFlagBinary // Does not do partial resists and could need a different hit roll. SpellFlagChanneled // Spell is channeled SpellFlagDisease // Spell is categorized as disease SpellFlagHauntSE // Spell benefits from haunt/SE effects SpellFlagHelpful // For healing spells / buffs. SpellFlagMeleeMetrics // Marks a spell as a melee ability for metrics. SpellFlagNoOnCastComplete // Disables the OnCastComplete callback. SpellFlagNoMetrics // Disables metrics for a spell. SpellFlagNoLogs // Disables logs for a spell. SpellFlagAPL // Indicates this spell can be used from an APL rotation. SpellFlagMCD // Indicates this spell is a MajorCooldown. SpellFlagNoOnDamageDealt // Disables OnSpellHitDealt and OnPeriodicDamageDealt aura callbacks for this spell. SpellFlagPrepullOnly // Indicates this spell should only be used during prepull. Not enforced, just a signal for the APL UI. SpellFlagEncounterOnly // Indicates this spell should only be used during the encounter (not prepull). Not enforced, just a signal for the APL UI. SpellFlagPotion // Indicates this spell is a potion spell. SpellFlagPrepullPotion // Indicates this spell is the prepull potion. SpellFlagCombatPotion // Indicates this spell is the combat potion. SpellFlagNoSpellMods // Indicates that no spell mods should be applied to this spell SpellFlagCanCastWhileMoving // Allows the cast to be casted while moving // Used to let agents categorize their spells. SpellFlagAgentReserved1 SpellFlagAgentReserved2 SpellFlagAgentReserved3 SpellFlagAgentReserved4 SpellFlagIgnoreModifiers = SpellFlagIgnoreAttackerModifiers | SpellFlagIgnoreTargetModifiers )
type SpellMetrics ¶
type SpellMetrics struct { Casts int32 Misses int32 Hits int32 Crits int32 Crushes int32 Dodges int32 Glances int32 Parries int32 Blocks int32 TotalDamage float64 // Damage done by all casts of this spell. TotalThreat float64 // Threat generated by all casts of this spell. TotalHealing float64 // Healing done by all casts of this spell. TotalShielding float64 // Shielding done by all casts of this spell. TotalCastTime time.Duration }
Metric totals for a spell against a specific target, for the current iteration.
type SpellMod ¶
type SpellMod struct { ClassMask int64 Kind SpellModType School SpellSchool ProcMask ProcMask Apply SpellModApply Remove SpellModRemove IsActive bool AffectedSpells []*Spell // contains filtered or unexported fields }
func (*SpellMod) Deactivate ¶
func (mod *SpellMod) Deactivate()
func (*SpellMod) GetFloatValue ¶
func (*SpellMod) GetIntValue ¶
func (*SpellMod) GetTimeValue ¶
func (*SpellMod) UpdateFloatValue ¶
func (*SpellMod) UpdateIntValue ¶
func (*SpellMod) UpdateTimeValue ¶
type SpellModApply ¶
type SpellModConfig ¶
type SpellModConfig struct { ClassMask int64 Kind SpellModType School SpellSchool ProcMask ProcMask IntValue int64 TimeValue time.Duration FloatValue float64 }
type SpellModFunctions ¶
type SpellModFunctions struct { Apply SpellModApply Remove SpellModRemove }
type SpellModRemove ¶
type SpellModType ¶
type SpellModType uint32
Mod implmentations
const ( // Will multiply the spell.DamageDoneMultiplier. +5% = 0.05 // Uses FloatValue SpellMod_DamageDone_Pct SpellModType = 1 << iota // Will add the value spell.DamageDoneAddMultiplier // Uses FloatValue SpellMod_DamageDone_Flat // Will reduce spell.DefaultCast.Cost by % amount. -5% = -0.05 // Uses FloatValue SpellMod_PowerCost_Pct // Increases or decreases spell.DefaultCast.Cost by flat amount // Uses FloatValue SpellMod_PowerCost_Flat // Increases or decreases RuneCost.RunicPowerCost by flat amount // Uses FloatValue SpellMod_RunicPowerCost_Flat // Will add time.Duration to spell.CD.Duration // Uses TimeValue SpellMod_Cooldown_Flat // Increases or decreases spell.CD.Multiplier by flat amount // Uses FloatValue SpellMod_Cooldown_Multiplier // Will increase the CritMultiplier. +100% = 1.0 // Uses FloatValue SpellMod_CritMultiplier_Pct // Will add / substract % amount from the cast time multiplier. // Ueses: FloatValue SpellMod_CastTime_Pct // Will add / substract time from the cast time. // Ueses: TimeValue SpellMod_CastTime_Flat // Add/subtract bonus crit rating // Uses: FloatValue SpellMod_BonusCrit_Rating // Add/subtract bonus hit rating // Uses: FloatValue SpellMod_BonusHit_Rating // Add/subtract to the dots max ticks // Uses: IntValue SpellMod_DotNumberOfTicks_Flat // Add/subtract to the casts gcd // Uses: TimeValue SpellMod_GlobalCooldown_Flat // Add/substrct to the base tick frequency // Uses: TimeValue SpellMod_DotTickLength_Flat // Add/subtract bonus coefficient // Uses: FloatValue SpellMod_BonusCoeffecient_Flat // Enables casting while moving SpellMod_AllowCastWhileMoving // Add/subtract bonus spell power // Uses: FloatValue SpellMod_BonusSpellPower_Flat // Add/subtract bonus expertise rating // Uses: FloatValue SpellMod_BonusExpertise_Rating )
type SpellRegisteredHandler ¶
type SpellRegisteredHandler func(spell *Spell)
type SpellResult ¶
type SpellResult struct { // Target of the spell. Target *Unit // Results Outcome HitOutcome Damage float64 // Damage done by this cast. Threat float64 // The amount of threat generated by this cast. ResistanceMultiplier float64 // Partial Resists / Armor multiplier PreOutcomeDamage float64 // Damage done by this cast before Outcome is applied // contains filtered or unexported fields }
func (*SpellResult) DamageString ¶
func (result *SpellResult) DamageString() string
func (*SpellResult) DidCrit ¶
func (result *SpellResult) DidCrit() bool
func (*SpellResult) HealingString ¶
func (result *SpellResult) HealingString() string
func (*SpellResult) Landed ¶
func (result *SpellResult) Landed() bool
type SpellSchool ¶
type SpellSchool byte
const ( SpellSchoolNone SpellSchool = 0 SpellSchoolPhysical SpellSchool = 1 << iota SpellSchoolArcane SpellSchoolFire SpellSchoolFrost SpellSchoolHoly SpellSchoolNature SpellSchoolShadow )
func SpellSchoolFromProto ¶
func SpellSchoolFromProto(p proto.SpellSchool) SpellSchool
func (SpellSchool) Matches ¶
func (ss SpellSchool) Matches(other SpellSchool) bool
Returns whether there is any overlap between the given masks.
func (SpellSchool) ResistanceStat ¶
func (ss SpellSchool) ResistanceStat() stats.Stat
type SplitMix64 ¶
type SplitMix64 struct {
// contains filtered or unexported fields
}
adapted from https://prng.di.unimi.it/splitmix64.c
func NewSplitMix ¶
func NewSplitMix(seed uint64) *SplitMix64
func (*SplitMix64) GetSeed ¶
func (sm *SplitMix64) GetSeed() int64
func (*SplitMix64) Int63 ¶
func (sm *SplitMix64) Int63() int64
func (*SplitMix64) Next ¶
func (sm *SplitMix64) Next() uint64
func (*SplitMix64) NextFloat64 ¶
func (sm *SplitMix64) NextFloat64() float64
func (*SplitMix64) Seed ¶
func (sm *SplitMix64) Seed(s int64)
func (*SplitMix64) Uint64 ¶
func (sm *SplitMix64) Uint64() uint64
type StackingStatAura ¶
type StatWeightValues ¶
type StatWeightValues struct { Weights UnitStats WeightsStdev UnitStats EpValues UnitStats EpValuesStdev UnitStats }
func NewStatWeightValues ¶
func NewStatWeightValues() StatWeightValues
func (*StatWeightValues) ToProto ¶
func (swv *StatWeightValues) ToProto() *proto.StatWeightValues
type StatWeightsResult ¶
type StatWeightsResult struct { Dps StatWeightValues Hps StatWeightValues Tps StatWeightValues Dtps StatWeightValues Tmi StatWeightValues PDeath StatWeightValues }
func CalcStatWeight ¶
func CalcStatWeight(swr *proto.StatWeightsRequest, referenceStat stats.Stat, progress chan *proto.ProgressMetrics) *StatWeightsResult
func NewStatWeightsResult ¶
func NewStatWeightsResult() *StatWeightsResult
func (*StatWeightsResult) ToProto ¶
func (swr *StatWeightsResult) ToProto() *proto.StatWeightsResult
type SubGenerator ¶
type SubGenerator struct {
// contains filtered or unexported fields
}
type SubstitutionComboChecker ¶
type SubstitutionComboChecker map[string]struct{}
func (*SubstitutionComboChecker) HasCombo ¶
func (ic *SubstitutionComboChecker) HasCombo(replacements equipmentSubstitution) bool
type Target ¶
Target is an enemy/boss that can be the target of player attacks/spells.
func (*Target) AddComboPoints ¶
func (eb *Target) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
func (*Target) AddEnergy ¶
func (eb *Target) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) AddFocus ¶
func (fb *Target) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) AddPartyBuffs ¶
func (target *Target) AddPartyBuffs(_ *proto.PartyBuffs)
func (*Target) AddRage ¶
func (rb *Target) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) AddRaidBuffs ¶
Empty Agent interface functions.
func (*Target) AddRunicPower ¶
func (rp *Target) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) Advance ¶
func (rp *Target) Advance(sim *Simulation, newTime time.Duration)
func (*Target) AllRunesSpent ¶
func (rp *Target) AllRunesSpent() bool
func (*Target) AnyRuneReadyAt ¶
func (rp *Target) AnyRuneReadyAt(sim *Simulation) time.Duration
func (*Target) AnySpentRuneReadyAt ¶
AnySpentRuneReadyAt returns the next time that a rune will regenerate. It will be NeverExpires if there is no rune pending regeneration.
func (*Target) ApplyTalents ¶
func (target *Target) ApplyTalents()
func (*Target) BloodDeathRuneBothReadyAt ¶
func (*Target) BloodRuneReadyAt ¶
func (rp *Target) BloodRuneReadyAt(sim *Simulation) time.Duration
BloodRuneReadyAt returns the earliest time a (possibly death-converted) blood rune is ready.
func (*Target) BloodTapConversion ¶
func (rp *Target) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
func (*Target) CancelBloodTap ¶
func (rp *Target) CancelBloodTap(sim *Simulation)
func (*Target) ComboPoints ¶
func (eb *Target) ComboPoints() int32
func (*Target) ConvertFromDeath ¶
func (rp *Target) ConvertFromDeath(sim *Simulation, slot int8)
ConvertFromDeath reverts the rune to its original type.
func (*Target) ConvertToDeath ¶
func (rp *Target) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
ConvertToDeath converts the given slot to death and sets up the reversion conditions
func (*Target) CurrentBloodOrDeathRunes ¶
func (rp *Target) CurrentBloodOrDeathRunes() int8
func (*Target) CurrentBloodRunes ¶
func (rp *Target) CurrentBloodRunes() int8
func (*Target) CurrentDeathRunes ¶
func (rp *Target) CurrentDeathRunes() int8
func (*Target) CurrentEnergy ¶
func (eb *Target) CurrentEnergy() float64
func (*Target) CurrentFocus ¶
func (fb *Target) CurrentFocus() float64
func (*Target) CurrentFrostOrDeathRunes ¶
func (rp *Target) CurrentFrostOrDeathRunes() int8
func (*Target) CurrentFrostRunes ¶
func (rp *Target) CurrentFrostRunes() int8
func (*Target) CurrentHealth ¶
func (hb *Target) CurrentHealth() float64
func (*Target) CurrentHealthPercent ¶
func (hb *Target) CurrentHealthPercent() float64
func (*Target) CurrentRage ¶
func (rb *Target) CurrentRage() float64
func (*Target) CurrentRunicPower ¶
func (rp *Target) CurrentRunicPower() float64
func (*Target) CurrentUnholyOrDeathRunes ¶
func (rp *Target) CurrentUnholyOrDeathRunes() int8
func (*Target) CurrentUnholyRunes ¶
func (rp *Target) CurrentUnholyRunes() int8
func (*Target) DeathRuneRegenAt ¶
DeathRuneRegenAt returns the time the given death rune will regen at. If the rune is not death or not spent it returns NeverExpires.
func (*Target) DeathRuneRevertAt ¶
DeathRuneRevertAt returns the next time that a death rune will revert. If there is no death rune that needs to revert it returns NeverExpires.
func (*Target) DeathRunesInFU ¶
func (rp *Target) DeathRunesInFU() int8
func (*Target) DebugString ¶
func (rp *Target) DebugString() string
func (*Target) EndOOMEvent ¶
func (mb *Target) EndOOMEvent(sim *Simulation)
func (*Target) EnergyRegenPerSecond ¶
func (eb *Target) EnergyRegenPerSecond() float64
func (*Target) ExecuteCustomRotation ¶
func (target *Target) ExecuteCustomRotation(sim *Simulation)
func (*Target) FocusRegenPerSecond ¶
func (fb *Target) FocusRegenPerSecond() float64
func (*Target) FocusRegenPerTick ¶
func (fb *Target) FocusRegenPerTick() float64
func (*Target) FrostRuneReadyAt ¶
func (rp *Target) FrostRuneReadyAt(sim *Simulation) time.Duration
func (*Target) GainHealth ¶
func (hb *Target) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) GetActiveAuraWithTag ¶
func (*Target) GetAuraByID ¶
func (*Target) GetAurasWithTag ¶
func (*Target) GetCharacter ¶
func (*Target) GetIcdAuraByID ¶
func (*Target) GetMetricsProto ¶
func (target *Target) GetMetricsProto() *proto.UnitMetrics
func (*Target) HasActiveAura ¶
func (*Target) HasActiveAuraWithTag ¶
func (*Target) HasActiveAuraWithTagExcludingAura ¶
func (*Target) HasAuraWithTag ¶
func (*Target) Initialize ¶
func (target *Target) Initialize()
func (*Target) IsBloodTappedRune ¶
func (*Target) LeftBloodRuneReady ¶
func (rp *Target) LeftBloodRuneReady() bool
func (*Target) MaximumEnergy ¶
func (eb *Target) MaximumEnergy() float64
func (*Target) MultiplyEnergyRegenSpeed ¶
func (eb *Target) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
func (*Target) MultiplyFocusRegenSpeed ¶
func (fb *Target) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
func (*Target) MultiplyRuneRegenSpeed ¶
func (rp *Target) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
func (*Target) MultiplyRunicRegen ¶
func (rp *Target) MultiplyRunicRegen(multiply float64)
func (*Target) NextBloodRuneReadyAt ¶
func (rp *Target) NextBloodRuneReadyAt(sim *Simulation) time.Duration
func (*Target) NextEnergyTickAt ¶
func (*Target) NextFocusTickAt ¶
func (*Target) NextFrostRuneReadyAt ¶
func (rp *Target) NextFrostRuneReadyAt(sim *Simulation) time.Duration
func (*Target) NextTarget ¶
func (*Target) NextUnholyRuneReadyAt ¶
func (rp *Target) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Target) NormalFrostRuneReadyAt ¶
func (rp *Target) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
NormalFrostRuneReadyAt returns the earliest time a non-death frost rune is ready.
func (*Target) NormalSpentBloodRuneReadyAt ¶
func (rp *Target) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
NormalSpentBloodRuneReadyAt returns the earliest time a spent non-death blood rune is ready.
func (*Target) NormalUnholyRuneReadyAt ¶
func (rp *Target) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Target) NumActiveAurasWithTag ¶
func (*Target) OnApplyEffects ¶
func (at *Target) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
Invokes the OnApplyEffects event for all tracked Auras.
func (*Target) OnCastComplete ¶
func (at *Target) OnCastComplete(sim *Simulation, spell *Spell)
Invokes the OnCastComplete event for all tracked Auras.
func (*Target) OnHealDealt ¶
func (at *Target) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnHeal event for all tracked Auras.
func (*Target) OnHealTaken ¶
func (at *Target) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Target) OnPeriodicDamageDealt ¶
func (at *Target) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicDamage
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Target) OnPeriodicDamageTaken ¶
func (at *Target) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Target) OnPeriodicHealDealt ¶
func (at *Target) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicHeal
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Target) OnPeriodicHealTaken ¶
func (at *Target) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Target) OnSpellHitDealt ¶
func (at *Target) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnSpellHit event for all tracked Auras.
func (*Target) OnSpellHitTaken ¶
func (at *Target) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Target) OptimalRuneCost ¶
func (*Target) RegenAllRunes ¶
func (rp *Target) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
func (*Target) RegenRandomDepletedRune ¶
func (rp *Target) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
func (*Target) RegisterResetEffect ¶
func (at *Target) RegisterResetEffect(resetEffect ResetEffect)
Registers a callback to this Character which will be invoked on every Sim reset.
func (*Target) RemoveHealth ¶
func (hb *Target) RemoveHealth(sim *Simulation, amount float64)
func (*Target) Reset ¶
func (target *Target) Reset(sim *Simulation)
func (*Target) ResetEnergyTick ¶
func (eb *Target) ResetEnergyTick(sim *Simulation)
Gives an immediate partial energy tick and restarts the tick timer.
func (*Target) ResetFocusTick ¶
func (fb *Target) ResetFocusTick(sim *Simulation)
Gives an immediate partial Focus tick and restarts the tick timer.
func (*Target) RuneIsActive ¶
func (*Target) RuneIsDeath ¶
func (*Target) RuneReadyAt ¶
func (rp *Target) RuneReadyAt(sim *Simulation, slot int8) time.Duration
func (*Target) SetPermanentDeathRunes ¶
func (rp *Target) SetPermanentDeathRunes(permanentDeaths []int8)
func (*Target) SpendComboPoints ¶
func (eb *Target) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
func (*Target) SpendEnergy ¶
func (eb *Target) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) SpendFocus ¶
func (fb *Target) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) SpendRage ¶
func (rb *Target) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) SpendRuneReadyAt ¶
func (*Target) SpendRunicPower ¶
func (rp *Target) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Target) StartOOMEvent ¶
func (mb *Target) StartOOMEvent(sim *Simulation, requiredMana float64)
func (*Target) UnholyRuneReadyAt ¶
func (rp *Target) UnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Target) UpdateMaxEnergy ¶
func (eb *Target) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum Energy, such as from the Druid Primal Madness talent
func (*Target) UpdateMaxHealth ¶
func (hb *Target) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum health from "Last Stand" effects
type TargetAI ¶
type TargetAI interface { Initialize(*Target, *proto.Target) Reset(*Simulation) ExecuteCustomRotation(*Simulation) }
type TargetDummy ¶
type TargetDummy struct {
Character
}
func NewTargetDummy ¶
func NewTargetDummy(dummyIndex int, party *Party, partyIndex int) *TargetDummy
func (*TargetDummy) AddComboPoints ¶
func (eb *TargetDummy) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
func (*TargetDummy) AddEnergy ¶
func (eb *TargetDummy) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) AddFocus ¶
func (fb *TargetDummy) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) AddMajorCooldown ¶
func (mcdm *TargetDummy) AddMajorCooldown(mcd MajorCooldown)
Registers a major cooldown to the Character, which will be automatically used when available.
func (*TargetDummy) AddPartyBuffs ¶
func (td *TargetDummy) AddPartyBuffs(partyBuffs *proto.PartyBuffs)
func (*TargetDummy) AddRage ¶
func (rb *TargetDummy) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) AddRaidBuffs ¶
func (td *TargetDummy) AddRaidBuffs(raidBuffs *proto.RaidBuffs)
func (*TargetDummy) AddRunicPower ¶
func (rp *TargetDummy) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) Advance ¶
func (rp *TargetDummy) Advance(sim *Simulation, newTime time.Duration)
func (*TargetDummy) AllRunesSpent ¶
func (rp *TargetDummy) AllRunesSpent() bool
func (*TargetDummy) AnyRuneReadyAt ¶
func (rp *TargetDummy) AnyRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) AnySpentRuneReadyAt ¶
AnySpentRuneReadyAt returns the next time that a rune will regenerate. It will be NeverExpires if there is no rune pending regeneration.
func (*TargetDummy) ApplyTalents ¶
func (td *TargetDummy) ApplyTalents()
func (*TargetDummy) BloodDeathRuneBothReadyAt ¶
func (*TargetDummy) BloodRuneReadyAt ¶
func (rp *TargetDummy) BloodRuneReadyAt(sim *Simulation) time.Duration
BloodRuneReadyAt returns the earliest time a (possibly death-converted) blood rune is ready.
func (*TargetDummy) BloodTapConversion ¶
func (rp *TargetDummy) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
func (*TargetDummy) CancelBloodTap ¶
func (rp *TargetDummy) CancelBloodTap(sim *Simulation)
func (*TargetDummy) ComboPoints ¶
func (eb *TargetDummy) ComboPoints() int32
func (*TargetDummy) ConvertFromDeath ¶
func (rp *TargetDummy) ConvertFromDeath(sim *Simulation, slot int8)
ConvertFromDeath reverts the rune to its original type.
func (*TargetDummy) ConvertToDeath ¶
func (rp *TargetDummy) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
ConvertToDeath converts the given slot to death and sets up the reversion conditions
func (*TargetDummy) CurrentBloodOrDeathRunes ¶
func (rp *TargetDummy) CurrentBloodOrDeathRunes() int8
func (*TargetDummy) CurrentBloodRunes ¶
func (rp *TargetDummy) CurrentBloodRunes() int8
func (*TargetDummy) CurrentDeathRunes ¶
func (rp *TargetDummy) CurrentDeathRunes() int8
func (*TargetDummy) CurrentEnergy ¶
func (eb *TargetDummy) CurrentEnergy() float64
func (*TargetDummy) CurrentFocus ¶
func (fb *TargetDummy) CurrentFocus() float64
func (*TargetDummy) CurrentFrostOrDeathRunes ¶
func (rp *TargetDummy) CurrentFrostOrDeathRunes() int8
func (*TargetDummy) CurrentFrostRunes ¶
func (rp *TargetDummy) CurrentFrostRunes() int8
func (*TargetDummy) CurrentHealth ¶
func (hb *TargetDummy) CurrentHealth() float64
func (*TargetDummy) CurrentHealthPercent ¶
func (hb *TargetDummy) CurrentHealthPercent() float64
func (*TargetDummy) CurrentRage ¶
func (rb *TargetDummy) CurrentRage() float64
func (*TargetDummy) CurrentRunicPower ¶
func (rp *TargetDummy) CurrentRunicPower() float64
func (*TargetDummy) CurrentUnholyOrDeathRunes ¶
func (rp *TargetDummy) CurrentUnholyOrDeathRunes() int8
func (*TargetDummy) CurrentUnholyRunes ¶
func (rp *TargetDummy) CurrentUnholyRunes() int8
func (*TargetDummy) DeathRuneRegenAt ¶
DeathRuneRegenAt returns the time the given death rune will regen at. If the rune is not death or not spent it returns NeverExpires.
func (*TargetDummy) DeathRuneRevertAt ¶
DeathRuneRevertAt returns the next time that a death rune will revert. If there is no death rune that needs to revert it returns NeverExpires.
func (*TargetDummy) DeathRunesInFU ¶
func (rp *TargetDummy) DeathRunesInFU() int8
func (*TargetDummy) DebugString ¶
func (rp *TargetDummy) DebugString() string
func (*TargetDummy) EndOOMEvent ¶
func (mb *TargetDummy) EndOOMEvent(sim *Simulation)
func (*TargetDummy) EnergyRegenPerSecond ¶
func (eb *TargetDummy) EnergyRegenPerSecond() float64
func (*TargetDummy) ExecuteCustomRotation ¶
func (td *TargetDummy) ExecuteCustomRotation(sim *Simulation)
func (*TargetDummy) FocusRegenPerSecond ¶
func (fb *TargetDummy) FocusRegenPerSecond() float64
func (*TargetDummy) FocusRegenPerTick ¶
func (fb *TargetDummy) FocusRegenPerTick() float64
func (*TargetDummy) FrostRuneReadyAt ¶
func (rp *TargetDummy) FrostRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) GainHealth ¶
func (hb *TargetDummy) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) GetActiveAuraWithTag ¶
func (*TargetDummy) GetAuraByID ¶
func (*TargetDummy) GetAurasWithTag ¶
func (*TargetDummy) GetCharacter ¶
func (td *TargetDummy) GetCharacter() *Character
func (*TargetDummy) GetIcdAuraByID ¶
func (*TargetDummy) GetInitialMajorCooldown ¶
func (mcdm *TargetDummy) GetInitialMajorCooldown(actionID ActionID) MajorCooldown
func (*TargetDummy) GetMajorCooldown ¶
func (mcdm *TargetDummy) GetMajorCooldown(actionID ActionID) *MajorCooldown
func (*TargetDummy) GetMajorCooldownIDs ¶
func (*TargetDummy) GetMajorCooldownIgnoreTag ¶
func (mcdm *TargetDummy) GetMajorCooldownIgnoreTag(actionID ActionID) *MajorCooldown
func (*TargetDummy) GetMajorCooldowns ¶
func (mcdm *TargetDummy) GetMajorCooldowns() []*MajorCooldown
Returns all MCDs.
func (*TargetDummy) HasActiveAura ¶
func (*TargetDummy) HasActiveAuraWithTag ¶
func (*TargetDummy) HasActiveAuraWithTagExcludingAura ¶
func (*TargetDummy) HasAuraWithTag ¶
func (*TargetDummy) Initialize ¶
func (td *TargetDummy) Initialize()
func (*TargetDummy) IsBloodTappedRune ¶
func (*TargetDummy) LeftBloodRuneReady ¶
func (rp *TargetDummy) LeftBloodRuneReady() bool
func (*TargetDummy) MaximumEnergy ¶
func (eb *TargetDummy) MaximumEnergy() float64
func (*TargetDummy) MultiplyEnergyRegenSpeed ¶
func (eb *TargetDummy) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
func (*TargetDummy) MultiplyFocusRegenSpeed ¶
func (fb *TargetDummy) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
func (*TargetDummy) MultiplyRuneRegenSpeed ¶
func (rp *TargetDummy) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
func (*TargetDummy) MultiplyRunicRegen ¶
func (rp *TargetDummy) MultiplyRunicRegen(multiply float64)
func (*TargetDummy) NextBloodRuneReadyAt ¶
func (rp *TargetDummy) NextBloodRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) NextEnergyTickAt ¶
func (*TargetDummy) NextFocusTickAt ¶
func (*TargetDummy) NextFrostRuneReadyAt ¶
func (rp *TargetDummy) NextFrostRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) NextUnholyRuneReadyAt ¶
func (rp *TargetDummy) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) NormalFrostRuneReadyAt ¶
func (rp *TargetDummy) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
NormalFrostRuneReadyAt returns the earliest time a non-death frost rune is ready.
func (*TargetDummy) NormalSpentBloodRuneReadyAt ¶
func (rp *TargetDummy) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
NormalSpentBloodRuneReadyAt returns the earliest time a spent non-death blood rune is ready.
func (*TargetDummy) NormalUnholyRuneReadyAt ¶
func (rp *TargetDummy) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) NumActiveAurasWithTag ¶
func (*TargetDummy) OnApplyEffects ¶
func (at *TargetDummy) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
Invokes the OnApplyEffects event for all tracked Auras.
func (*TargetDummy) OnCastComplete ¶
func (at *TargetDummy) OnCastComplete(sim *Simulation, spell *Spell)
Invokes the OnCastComplete event for all tracked Auras.
func (*TargetDummy) OnHealDealt ¶
func (at *TargetDummy) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnHeal event for all tracked Auras.
func (*TargetDummy) OnHealTaken ¶
func (at *TargetDummy) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*TargetDummy) OnPeriodicDamageDealt ¶
func (at *TargetDummy) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicDamage
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*TargetDummy) OnPeriodicDamageTaken ¶
func (at *TargetDummy) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*TargetDummy) OnPeriodicHealDealt ¶
func (at *TargetDummy) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicHeal
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*TargetDummy) OnPeriodicHealTaken ¶
func (at *TargetDummy) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*TargetDummy) OnSpellHitDealt ¶
func (at *TargetDummy) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnSpellHit event for all tracked Auras.
func (*TargetDummy) OnSpellHitTaken ¶
func (at *TargetDummy) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*TargetDummy) OptimalRuneCost ¶
func (*TargetDummy) RegenAllRunes ¶
func (rp *TargetDummy) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
func (*TargetDummy) RegenRandomDepletedRune ¶
func (rp *TargetDummy) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
func (*TargetDummy) RegisterResetEffect ¶
func (at *TargetDummy) RegisterResetEffect(resetEffect ResetEffect)
Registers a callback to this Character which will be invoked on every Sim reset.
func (*TargetDummy) RemoveHealth ¶
func (hb *TargetDummy) RemoveHealth(sim *Simulation, amount float64)
func (*TargetDummy) Reset ¶
func (td *TargetDummy) Reset(sim *Simulation)
func (*TargetDummy) ResetEnergyTick ¶
func (eb *TargetDummy) ResetEnergyTick(sim *Simulation)
Gives an immediate partial energy tick and restarts the tick timer.
func (*TargetDummy) ResetFocusTick ¶
func (fb *TargetDummy) ResetFocusTick(sim *Simulation)
Gives an immediate partial Focus tick and restarts the tick timer.
func (*TargetDummy) RuneIsActive ¶
func (*TargetDummy) RuneIsDeath ¶
func (*TargetDummy) RuneReadyAt ¶
func (rp *TargetDummy) RuneReadyAt(sim *Simulation, slot int8) time.Duration
func (*TargetDummy) SetPermanentDeathRunes ¶
func (rp *TargetDummy) SetPermanentDeathRunes(permanentDeaths []int8)
func (*TargetDummy) SpendComboPoints ¶
func (eb *TargetDummy) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
func (*TargetDummy) SpendEnergy ¶
func (eb *TargetDummy) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) SpendFocus ¶
func (fb *TargetDummy) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) SpendRage ¶
func (rb *TargetDummy) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) SpendRuneReadyAt ¶
func (*TargetDummy) SpendRunicPower ¶
func (rp *TargetDummy) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*TargetDummy) StartOOMEvent ¶
func (mb *TargetDummy) StartOOMEvent(sim *Simulation, requiredMana float64)
func (*TargetDummy) UnholyRuneReadyAt ¶
func (rp *TargetDummy) UnholyRuneReadyAt(sim *Simulation) time.Duration
func (*TargetDummy) UpdateMajorCooldowns ¶
func (mcdm *TargetDummy) UpdateMajorCooldowns()
This function should be called if the CD for a major cooldown changes outside of the TryActivate() call.
func (*TargetDummy) UpdateMaxEnergy ¶
func (eb *TargetDummy) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum Energy, such as from the Druid Primal Madness talent
func (*TargetDummy) UpdateMaxHealth ¶
func (hb *TargetDummy) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum health from "Last Stand" effects
type TargetedActionMetrics ¶
type TargetedActionMetrics struct { UnitIndex int32 Casts int32 Hits int32 Crits int32 Misses int32 Dodges int32 Parries int32 Blocks int32 Glances int32 Damage float64 Threat float64 Healing float64 Shielding float64 CastTime time.Duration }
func (*TargetedActionMetrics) ToProto ¶
func (tam *TargetedActionMetrics) ToProto() *proto.TargetedActionMetrics
type Task ¶
type Task interface {
RunTask(sim *Simulation) time.Duration
}
type TestGenerator ¶
type TestGenerator interface { // The total number of tests that this generator can generate. NumTests() int // The name and API request for the test with the given index. GetTest(testIdx int) (string, *proto.ComputeStatsRequest, *proto.StatWeightsRequest, *proto.RaidSimRequest) }
func FullCharacterTestSuiteGenerator ¶
func FullCharacterTestSuiteGenerator(config CharacterSuiteConfig) TestGenerator
type Thresholds ¶
type Thresholds [4]Threshold
func (Thresholds) String ¶
func (x Thresholds) String() string
type Timer ¶
Stored value is the time at which the cooldown will be available again.
func (*Timer) IsReady ¶
func (timer *Timer) IsReady(sim *Simulation) bool
func (*Timer) TimeToReady ¶
func (timer *Timer) TimeToReady(sim *Simulation) time.Duration
type Unit ¶
type Unit struct { Type UnitType // Index of this unit with its group. // For Players, this is the 0-indexed raid index (0-24). // For Enemies, this is its enemy index. // For Pets, this is the same as the owner's index. Index int32 // Unique index of this unit among all units in the environment. // This is used as the index for attack tables. UnitIndex int32 // Unique label for logging. Label string Level int32 // Level of Unit, e.g. Bosses are 83. MobType proto.MobType // Amount of time it takes for the human agent to react to in-game events. // Used by certain APL values and actions. ReactionTime time.Duration // Amount of time following a post-GCD channel tick, to when the next action can be performed. ChannelClipDelay time.Duration // How far this unit is from its target(s). Measured in yards, this is used // for calculating spell travel time for certain spells. StartDistanceFromTarget float64 DistanceFromTarget float64 Moving bool // How much uptime of Dark Intent the unit will have DarkIntentUptimePercent float64 // Environment in which this Unit exists. This will be nil until after the // construction phase. Env *Environment // Provides stat dependency management behavior. stats.StatDependencyManager PseudoStats stats.PseudoStats // All spells that can be cast by this unit. Spellbook []*Spell // Pets owned by this Unit. PetAgents []PetAgent DynamicStatsPets []*Pet DynamicMeleeSpeedPets []*Pet // AutoAttacks is the manager for auto attack swings. // Must be enabled to use, with "EnableAutoAttacks()". AutoAttacks AutoAttacks Rotation *APLRotation // Statistics describing the results of the sim. Metrics UnitMetrics AttackTables []*AttackTable DynamicDamageTakenModifiers []DynamicDamageTakenModifier Blockhandler func(sim *Simulation, spell *Spell, result *SpellResult) GCD *Timer // Separate from GCD timer to support spell queueing and off-GCD actions RotationTimer *Timer // Used for applying the effect of a hardcast spell when casting finishes. // For channeled spells, only Expires is set. // No more than one cast may be active at any given time. Hardcast Hardcast CastSpeed float64 CurrentTarget *Unit // The currently-channeled DOT spell, otherwise nil. ChanneledDot *Dot // Data about the most recently queued spell, otherwise nil. QueuedSpell *QueuedSpell // Used for reacting to mastery stat changes if a spec needs it OnMasteryStatChanged []OnMasteryStatChanged // Used for reacting to cast speed changes if a spec needs it (e.g. for cds reduced by haste) OnCastSpeedChanged []OnCastSpeedChanged GetSpellPowerValue GetSpellpowerValue // contains filtered or unexported fields }
Unit is an abstraction of a Character/Boss/Pet/etc, containing functionality shared by all of them.
func (*Unit) AddBonusRangedCritRating ¶
func (*Unit) AddBonusRangedHitRating ¶
func (*Unit) AddComboPoints ¶
func (eb *Unit) AddComboPoints(sim *Simulation, pointsToAdd int32, metrics *ResourceMetrics)
func (*Unit) AddDynamicDamageTakenModifier ¶
func (unit *Unit) AddDynamicDamageTakenModifier(ddtm DynamicDamageTakenModifier)
func (*Unit) AddDynamicMod ¶
func (unit *Unit) AddDynamicMod(config SpellModConfig) *SpellMod
func (*Unit) AddEnergy ¶
func (eb *Unit) AddEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) AddFocus ¶
func (fb *Unit) AddFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) AddHighestStat ¶
Adds only the highest current stat of the unit from the given stat options
func (*Unit) AddHighestStatDynamic ¶
func (unit *Unit) AddHighestStatDynamic(sim *Simulation, stat stats.Stats)
Adds only the highest current stat of the unit from the given stat options
func (*Unit) AddMana ¶
func (unit *Unit) AddMana(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) AddOnCastSpeedChanged ¶ added in v0.0.9
func (unit *Unit) AddOnCastSpeedChanged(ocsc OnCastSpeedChanged)
func (*Unit) AddOnMasteryStatChanged ¶
func (unit *Unit) AddOnMasteryStatChanged(omsc OnMasteryStatChanged)
func (*Unit) AddRage ¶
func (rb *Unit) AddRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) AddRunicPower ¶
func (rp *Unit) AddRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) AddStatDynamic ¶
func (unit *Unit) AddStatDynamic(sim *Simulation, stat stats.Stat, amount float64)
func (*Unit) AddStaticMod ¶
func (unit *Unit) AddStaticMod(config SpellModConfig)
func (*Unit) AddStatsDynamic ¶
func (unit *Unit) AddStatsDynamic(sim *Simulation, bonus stats.Stats)
func (*Unit) Advance ¶
func (rp *Unit) Advance(sim *Simulation, newTime time.Duration)
func (*Unit) AllRunesSpent ¶
func (rp *Unit) AllRunesSpent() bool
func (*Unit) AnyRuneReadyAt ¶
func (rp *Unit) AnyRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) AnySpentRuneReadyAt ¶
AnySpentRuneReadyAt returns the next time that a rune will regenerate. It will be NeverExpires if there is no rune pending regeneration.
func (*Unit) ApplyCastSpeedForSpell ¶
func (*Unit) BlockDamageReduction ¶
func (*Unit) BloodDeathRuneBothReadyAt ¶
func (*Unit) BloodRuneReadyAt ¶
func (rp *Unit) BloodRuneReadyAt(sim *Simulation) time.Duration
BloodRuneReadyAt returns the earliest time a (possibly death-converted) blood rune is ready.
func (*Unit) BloodTapConversion ¶
func (rp *Unit) BloodTapConversion(sim *Simulation, bloodMetrics *ResourceMetrics, deathMetrics *ResourceMetrics)
func (*Unit) CanQueueSpell ¶
func (unit *Unit) CanQueueSpell(sim *Simulation) bool
Enforce only one queued spell per timestep
func (*Unit) CancelBloodTap ¶
func (rp *Unit) CancelBloodTap(sim *Simulation)
func (*Unit) CancelGCDTimer ¶
func (unit *Unit) CancelGCDTimer(sim *Simulation)
Call this to stop the GCD loop for a unit. This is mostly used for pets that get summoned / expire.
func (*Unit) CancelQueuedSpell ¶
func (unit *Unit) CancelQueuedSpell(sim *Simulation)
func (*Unit) ComboPoints ¶
func (eb *Unit) ComboPoints() int32
func (*Unit) ConvertFromDeath ¶
func (rp *Unit) ConvertFromDeath(sim *Simulation, slot int8)
ConvertFromDeath reverts the rune to its original type.
func (*Unit) ConvertToDeath ¶
func (rp *Unit) ConvertToDeath(sim *Simulation, slot int8, revertAt time.Duration)
ConvertToDeath converts the given slot to death and sets up the reversion conditions
func (*Unit) CurrentBloodOrDeathRunes ¶
func (rp *Unit) CurrentBloodOrDeathRunes() int8
func (*Unit) CurrentBloodRunes ¶
func (rp *Unit) CurrentBloodRunes() int8
func (*Unit) CurrentDeathRunes ¶
func (rp *Unit) CurrentDeathRunes() int8
func (*Unit) CurrentEnergy ¶
func (eb *Unit) CurrentEnergy() float64
func (*Unit) CurrentFocus ¶
func (fb *Unit) CurrentFocus() float64
func (*Unit) CurrentFrostOrDeathRunes ¶
func (rp *Unit) CurrentFrostOrDeathRunes() int8
func (*Unit) CurrentFrostRunes ¶
func (rp *Unit) CurrentFrostRunes() int8
func (*Unit) CurrentHealth ¶
func (hb *Unit) CurrentHealth() float64
func (*Unit) CurrentHealthPercent ¶
func (hb *Unit) CurrentHealthPercent() float64
func (*Unit) CurrentMana ¶
func (*Unit) CurrentManaPercent ¶
func (*Unit) CurrentRage ¶
func (rb *Unit) CurrentRage() float64
func (*Unit) CurrentRunicPower ¶
func (rp *Unit) CurrentRunicPower() float64
func (*Unit) CurrentUnholyOrDeathRunes ¶
func (rp *Unit) CurrentUnholyOrDeathRunes() int8
func (*Unit) CurrentUnholyRunes ¶
func (rp *Unit) CurrentUnholyRunes() int8
func (*Unit) DeathRuneRegenAt ¶
DeathRuneRegenAt returns the time the given death rune will regen at. If the rune is not death or not spent it returns NeverExpires.
func (*Unit) DeathRuneRevertAt ¶
DeathRuneRevertAt returns the next time that a death rune will revert. If there is no death rune that needs to revert it returns NeverExpires.
func (*Unit) DeathRunesInFU ¶
func (rp *Unit) DeathRunesInFU() int8
func (*Unit) DebugString ¶
func (rp *Unit) DebugString() string
func (*Unit) DisableDynamicStatDep ¶
func (unit *Unit) DisableDynamicStatDep(sim *Simulation, dep *stats.StatDependency)
func (*Unit) EnableAutoAttacks ¶
func (unit *Unit) EnableAutoAttacks(agent Agent, options AutoAttackOptions)
func (*Unit) EnableDynamicStatDep ¶
func (unit *Unit) EnableDynamicStatDep(sim *Simulation, dep *stats.StatDependency)
func (*Unit) EnableEnergyBar ¶
func (*Unit) EnableFocusBar ¶
func (unit *Unit) EnableFocusBar(maxFocus float64, baseFocusPerSecond float64, isPlayer bool, onFocusGain OnFocusGain)
func (*Unit) EnableHealthBar ¶
func (unit *Unit) EnableHealthBar()
func (*Unit) EnableRageBar ¶
func (unit *Unit) EnableRageBar(options RageBarOptions)
func (*Unit) EnableRunicPowerBar ¶
func (unit *Unit) EnableRunicPowerBar(startingRunicPower float64, maxRunicPower float64, runeCD time.Duration, onRuneChange OnRuneChange, onRunicPowerGain OnRunicPowerGain)
func (*Unit) EndOOMEvent ¶
func (mb *Unit) EndOOMEvent(sim *Simulation)
func (*Unit) EnergyRegenPerSecond ¶
func (eb *Unit) EnergyRegenPerSecond() float64
func (*Unit) ExecuteCustomRotation ¶
func (unit *Unit) ExecuteCustomRotation(sim *Simulation)
func (*Unit) ExtendGCDUntil ¶
func (unit *Unit) ExtendGCDUntil(sim *Simulation, readyTime time.Duration)
func (*Unit) FinalizeMovement ¶
func (unit *Unit) FinalizeMovement(sim *Simulation)
func (*Unit) FocusRegenPerSecond ¶
func (fb *Unit) FocusRegenPerSecond() float64
func (*Unit) FocusRegenPerTick ¶
func (fb *Unit) FocusRegenPerTick() float64
func (*Unit) FrostRuneReadyAt ¶
func (rp *Unit) FrostRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) GainHealth ¶
func (hb *Unit) GainHealth(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) GetActiveAuraWithTag ¶
func (*Unit) GetAuraByID ¶
func (*Unit) GetAurasWithTag ¶
func (*Unit) GetCurrentPowerBar ¶
func (unit *Unit) GetCurrentPowerBar() PowerBarType
func (*Unit) GetDiminishedDodgeChance ¶
func (*Unit) GetDiminishedMissChance ¶
func (*Unit) GetDiminishedParryChance ¶
func (*Unit) GetEnemyExclusiveCategories ¶
func (caster *Unit) GetEnemyExclusiveCategories(category string) ExclusiveCategoryArray
func (*Unit) GetIcdAuraByID ¶
func (*Unit) GetMasteryPoints ¶
func (*Unit) GetMetadata ¶
func (unit *Unit) GetMetadata() *proto.UnitMetadata
func (*Unit) GetMetricsProto ¶
func (at *Unit) GetMetricsProto() []*proto.AuraMetrics
func (*Unit) GetMovementSpeed ¶
Returns the units current movement speed in yards / second
func (*Unit) GetOpponents ¶
func (*Unit) GetOrInitTimer ¶
Helper for shared timers that are not always needed, so it is only allocated if necessary.
func (*Unit) GetOrRegisterAura ¶
func (*Unit) GetOrRegisterSpell ¶
func (unit *Unit) GetOrRegisterSpell(config SpellConfig) *Spell
Retrieves an existing spell with the same ID as the config uses, or registers it if there is none.
func (*Unit) GetSpell ¶
Returns the first registered spell with the given ID, or nil if there are none.
func (*Unit) GetSpellsMatchingSchool ¶
func (unit *Unit) GetSpellsMatchingSchool(school SpellSchool) []*Spell
func (*Unit) GetTotalAvoidanceChance ¶
func (unit *Unit) GetTotalAvoidanceChance(atkTable *AttackTable) float64
func (*Unit) GetTotalBlockChanceAsDefender ¶
func (unit *Unit) GetTotalBlockChanceAsDefender(atkTable *AttackTable) float64
func (*Unit) GetTotalChanceToBeMissedAsDefender ¶
func (unit *Unit) GetTotalChanceToBeMissedAsDefender(atkTable *AttackTable) float64
func (*Unit) GetTotalDodgeChanceAsDefender ¶
func (unit *Unit) GetTotalDodgeChanceAsDefender(atkTable *AttackTable) float64
func (*Unit) GetTotalParryChanceAsDefender ¶
func (unit *Unit) GetTotalParryChanceAsDefender(atkTable *AttackTable) float64
func (*Unit) HasActiveAura ¶
func (*Unit) HasActiveAuraWithTag ¶
func (*Unit) HasActiveAuraWithTagExcludingAura ¶
func (*Unit) HasAuraWithTag ¶
func (*Unit) HasEnergyBar ¶
func (*Unit) HasFocusBar ¶
func (*Unit) HasHealthBar ¶
func (*Unit) HasManaBar ¶
func (*Unit) HasRageBar ¶
func (*Unit) HasRunicPowerBar ¶
func (*Unit) HasTemporaryBonusForStat ¶
Returns whether the indicates stat is currently modified by a temporary bonus.
func (*Unit) HasTemporaryMeleeSwingSpeedIncrease ¶
Returns if melee swings have any temporary increases active.
func (*Unit) HasTemporaryRangedSwingSpeedIncrease ¶
Returns if ranged swings have any temporary increases active.
func (*Unit) HasTemporarySpellCastSpeedIncrease ¶
Returns if spell casting has any temporary increases active.
func (*Unit) InitialCastSpeed ¶
func (*Unit) IsBloodTappedRune ¶
func (*Unit) IsEnabled ¶
Units can be disabled for several reasons:
- Downtime for temporary pets (e.g. Water Elemental)
- Enemy units in various phases (not yet implemented)
- Dead units (not yet implemented)
func (*Unit) IsOpponent ¶
func (*Unit) LeftBloodRuneReady ¶
func (rp *Unit) LeftBloodRuneReady() bool
func (*Unit) Log ¶
func (unit *Unit) Log(sim *Simulation, message string, vals ...interface{})
func (*Unit) MHNormalizedWeaponDamage ¶
func (unit *Unit) MHNormalizedWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Unit) MHWeaponDamage ¶
func (unit *Unit) MHWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Unit) MP5ManaRegenPerSecond ¶
Returns the rate of mana regen per second from mp5.
func (*Unit) ManaRegenPerSecondWhileCombat ¶
Returns the rate of mana regen per second, assuming this unit is considered to be casting.
func (*Unit) ManaRegenPerSecondWhileNotCombat ¶
Returns the rate of mana regen per second, assuming this unit is considered to be not casting.
func (*Unit) ManaTick ¶
func (unit *Unit) ManaTick(sim *Simulation)
Applies 1 'tick' of mana regen, which worth 2s of regeneration based on mp5/int/spirit/etc.
func (*Unit) MaxMana ¶
Gets the Maxiumum mana including bonus and temporary affects that would increase your mana pool.
func (*Unit) MaximumEnergy ¶
func (eb *Unit) MaximumEnergy() float64
func (*Unit) MoveDuration ¶
func (unit *Unit) MoveDuration(duration time.Duration, sim *Simulation)
func (*Unit) MoveTo ¶
func (unit *Unit) MoveTo(moveRange float64, sim *Simulation)
func (*Unit) MultiplyAttackSpeed ¶
func (unit *Unit) MultiplyAttackSpeed(sim *Simulation, amount float64)
Helper for when both MultiplyMeleeSpeed and MultiplyRangedSpeed are needed.
func (*Unit) MultiplyCastSpeed ¶
func (*Unit) MultiplyEnergyRegenSpeed ¶
func (eb *Unit) MultiplyEnergyRegenSpeed(sim *Simulation, multiplier float64)
func (*Unit) MultiplyFocusRegenSpeed ¶
func (fb *Unit) MultiplyFocusRegenSpeed(sim *Simulation, multiplier float64)
func (*Unit) MultiplyMeleeSpeed ¶
func (unit *Unit) MultiplyMeleeSpeed(sim *Simulation, amount float64)
MultiplyMeleeSpeed will alter the attack speed multiplier and change swing speed of all autoattack swings in progress.
func (*Unit) MultiplyMovementSpeed ¶
func (unit *Unit) MultiplyMovementSpeed(sim *Simulation, amount float64)
func (*Unit) MultiplyRangedSpeed ¶
func (unit *Unit) MultiplyRangedSpeed(sim *Simulation, amount float64)
func (*Unit) MultiplyResourceRegenSpeed ¶
func (unit *Unit) MultiplyResourceRegenSpeed(sim *Simulation, amount float64)
Helper for multiplying resource generation speed
func (*Unit) MultiplyRuneRegenSpeed ¶
func (rp *Unit) MultiplyRuneRegenSpeed(sim *Simulation, multiplier float64)
func (*Unit) MultiplyRunicRegen ¶
func (rp *Unit) MultiplyRunicRegen(multiply float64)
func (*Unit) NewAPLAction ¶
func (unit *Unit) NewAPLAction(rot *APLRotation, config *proto.APLAction) APLActionImpl
Default implementation of Agent.NewAPLAction so each spec doesn't need this boilerplate.
func (*Unit) NewAPLValue ¶
func (unit *Unit) NewAPLValue(rot *APLRotation, config *proto.APLValue) APLValue
Default implementation of Agent.NewAPLValue so each spec doesn't need this boilerplate.
func (*Unit) NewAllyAuraArray ¶
func (*Unit) NewBloodRuneMetrics ¶
func (unit *Unit) NewBloodRuneMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewComboPointMetrics ¶
func (unit *Unit) NewComboPointMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewDeathRuneMetrics ¶
func (unit *Unit) NewDeathRuneMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewEnemyAuraArray ¶
func (*Unit) NewEnemyExclusiveCategoryArray ¶
func (caster *Unit) NewEnemyExclusiveCategoryArray(makeExclusiveCategory func(*Unit) *ExclusiveCategory) ExclusiveCategoryArray
func (*Unit) NewEnergyMetrics ¶
func (unit *Unit) NewEnergyMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewFocusMetrics ¶
func (unit *Unit) NewFocusMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewFrostRuneMetrics ¶
func (unit *Unit) NewFrostRuneMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewHealthMetrics ¶
func (unit *Unit) NewHealthMetrics(actionID ActionID) *ResourceMetrics
Convenience helpers for NewResourceMetrics.
func (*Unit) NewManaMetrics ¶
func (unit *Unit) NewManaMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewRageMetrics ¶
func (unit *Unit) NewRageMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewRunicPowerMetrics ¶
func (unit *Unit) NewRunicPowerMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NewUnholyRuneMetrics ¶
func (unit *Unit) NewUnholyRuneMetrics(actionID ActionID) *ResourceMetrics
func (*Unit) NextBloodRuneReadyAt ¶
func (rp *Unit) NextBloodRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) NextEnergyTickAt ¶
func (*Unit) NextFocusTickAt ¶
func (*Unit) NextFrostRuneReadyAt ¶
func (rp *Unit) NextFrostRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) NextRotationActionAt ¶
func (*Unit) NextUnholyRuneReadyAt ¶
func (rp *Unit) NextUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) NormalFrostRuneReadyAt ¶
func (rp *Unit) NormalFrostRuneReadyAt(sim *Simulation) time.Duration
NormalFrostRuneReadyAt returns the earliest time a non-death frost rune is ready.
func (*Unit) NormalSpentBloodRuneReadyAt ¶
func (rp *Unit) NormalSpentBloodRuneReadyAt(_ *Simulation) time.Duration
NormalSpentBloodRuneReadyAt returns the earliest time a spent non-death blood rune is ready.
func (*Unit) NormalUnholyRuneReadyAt ¶
func (rp *Unit) NormalUnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) NumActiveAurasWithTag ¶
func (*Unit) OHNormalizedWeaponDamage ¶
func (unit *Unit) OHNormalizedWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Unit) OHWeaponDamage ¶
func (unit *Unit) OHWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Unit) OnApplyEffects ¶
func (at *Unit) OnApplyEffects(sim *Simulation, target *Unit, spell *Spell)
Invokes the OnApplyEffects event for all tracked Auras.
func (*Unit) OnCastComplete ¶
func (at *Unit) OnCastComplete(sim *Simulation, spell *Spell)
Invokes the OnCastComplete event for all tracked Auras.
func (*Unit) OnHealDealt ¶
func (at *Unit) OnHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnHeal event for all tracked Auras.
func (*Unit) OnHealTaken ¶
func (at *Unit) OnHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Unit) OnMovement ¶
func (unit *Unit) OnMovement(position float64, kind MovementUpdateType)
func (*Unit) OnPeriodicDamageDealt ¶
func (at *Unit) OnPeriodicDamageDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicDamage
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Unit) OnPeriodicDamageTaken ¶
func (at *Unit) OnPeriodicDamageTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Unit) OnPeriodicHealDealt ¶
func (at *Unit) OnPeriodicHealDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnPeriodicHeal
As a debuff when target is being hit by dot. As a buff when caster's dots are ticking.
func (*Unit) OnPeriodicHealTaken ¶
func (at *Unit) OnPeriodicHealTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Unit) OnSpellHitDealt ¶
func (at *Unit) OnSpellHitDealt(sim *Simulation, spell *Spell, result *SpellResult)
Invokes the OnSpellHit event for all tracked Auras.
func (*Unit) OnSpellHitTaken ¶
func (at *Unit) OnSpellHitTaken(sim *Simulation, spell *Spell, result *SpellResult)
func (*Unit) OnSpellRegistered ¶
func (unit *Unit) OnSpellRegistered(handler SpellRegisteredHandler)
func (*Unit) OptimalRuneCost ¶
func (*Unit) QueueSpell ¶
func (*Unit) RangedSwingSpeed ¶
func (*Unit) RangedWeaponDamage ¶
func (unit *Unit) RangedWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Unit) ReactToEvent ¶
func (unit *Unit) ReactToEvent(sim *Simulation)
Call this when reacting to events that occur before the next scheduled rotation action
func (*Unit) RegenAllRunes ¶
func (rp *Unit) RegenAllRunes(sim *Simulation, metrics []*ResourceMetrics)
func (*Unit) RegenRandomDepletedRune ¶
func (rp *Unit) RegenRandomDepletedRune(sim *Simulation, runeMetrics []*ResourceMetrics)
func (*Unit) RegisterAura ¶
func (*Unit) RegisterMovementCallback ¶
func (unit *Unit) RegisterMovementCallback(callback MovementCallback)
func (*Unit) RegisterPrepullAction ¶
func (unit *Unit) RegisterPrepullAction(doAt time.Duration, action func(*Simulation))
Registers a callback to this Unit which will be invoked on the prepull at the specified negative time.
func (*Unit) RegisterResetEffect ¶
func (at *Unit) RegisterResetEffect(resetEffect ResetEffect)
Registers a callback to this Character which will be invoked on every Sim reset.
func (*Unit) RegisterSpell ¶
func (unit *Unit) RegisterSpell(config SpellConfig) *Spell
Registers a new spell to the unit. Returns the newly created spell.
func (*Unit) RemoveHealth ¶
func (hb *Unit) RemoveHealth(sim *Simulation, amount float64)
func (*Unit) ResetEnergyTick ¶
func (eb *Unit) ResetEnergyTick(sim *Simulation)
Gives an immediate partial energy tick and restarts the tick timer.
func (*Unit) ResetFocusTick ¶
func (fb *Unit) ResetFocusTick(sim *Simulation)
Gives an immediate partial Focus tick and restarts the tick timer.
func (*Unit) RuneIsActive ¶
func (*Unit) RuneIsDeath ¶
func (*Unit) RuneReadyAt ¶
func (rp *Unit) RuneReadyAt(sim *Simulation, slot int8) time.Duration
func (*Unit) SetCurrentPowerBar ¶
func (unit *Unit) SetCurrentPowerBar(bar PowerBarType)
func (*Unit) SetGCDTimer ¶
func (unit *Unit) SetGCDTimer(sim *Simulation, gcdReadyAt time.Duration)
func (*Unit) SetPermanentDeathRunes ¶
func (rp *Unit) SetPermanentDeathRunes(permanentDeaths []int8)
func (*Unit) SetRotationTimer ¶
func (unit *Unit) SetRotationTimer(sim *Simulation, rotationReadyAt time.Duration)
func (*Unit) SpendComboPoints ¶
func (eb *Unit) SpendComboPoints(sim *Simulation, metrics *ResourceMetrics)
func (*Unit) SpendEnergy ¶
func (eb *Unit) SpendEnergy(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) SpendFocus ¶
func (fb *Unit) SpendFocus(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) SpendMana ¶
func (unit *Unit) SpendMana(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) SpendRage ¶
func (rb *Unit) SpendRage(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) SpendRuneReadyAt ¶
func (*Unit) SpendRunicPower ¶
func (rp *Unit) SpendRunicPower(sim *Simulation, amount float64, metrics *ResourceMetrics)
func (*Unit) SpiritManaRegenPerSecond ¶
Returns the rate of mana regen per second from spirit.
func (*Unit) StartOOMEvent ¶
func (mb *Unit) StartOOMEvent(sim *Simulation, requiredMana float64)
func (*Unit) SwingSpeed ¶
func (*Unit) TimeUntilManaRegen ¶
Returns the amount of time this Unit would need to wait in order to reach the desired amount of mana, via mana regen.
Assumes that desiredMana > currentMana. Calculation assumes the Unit will not take any actions during this period that would reset the 5-second rule.
func (*Unit) UnholyRuneReadyAt ¶
func (rp *Unit) UnholyRuneReadyAt(sim *Simulation) time.Duration
func (*Unit) UpdateManaRegenRates ¶
func (unit *Unit) UpdateManaRegenRates()
func (*Unit) UpdateMaxEnergy ¶
func (eb *Unit) UpdateMaxEnergy(sim *Simulation, bonusEnergy float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum Energy, such as from the Druid Primal Madness talent
func (*Unit) UpdateMaxHealth ¶
func (hb *Unit) UpdateMaxHealth(sim *Simulation, bonusHealth float64, metrics *ResourceMetrics)
Used for dynamic updates to maximum health from "Last Stand" effects
func (*Unit) UpdatePosition ¶
func (unit *Unit) UpdatePosition(sim *Simulation)
type UnitMetrics ¶
type UnitMetrics struct { CharacterIterationMetrics // contains filtered or unexported fields }
func NewUnitMetrics ¶
func NewUnitMetrics() UnitMetrics
func (*UnitMetrics) AddFinalPetMetrics ¶
func (unitMetrics *UnitMetrics) AddFinalPetMetrics(petMetrics *UnitMetrics)
This should be called at the end of each iteration, to include metrics from Pets in those of their owner. Assumes that doneIteration() has already been called on the pet metrics.
func (*UnitMetrics) AddOOMTime ¶
func (unitMetrics *UnitMetrics) AddOOMTime(sim *Simulation, dur time.Duration)
func (*UnitMetrics) IsTanking ¶
func (unitMetrics *UnitMetrics) IsTanking() bool
func (*UnitMetrics) MarkOOM ¶
func (unitMetrics *UnitMetrics) MarkOOM(sim *Simulation)
func (*UnitMetrics) NewResourceMetrics ¶
func (unitMetrics *UnitMetrics) NewResourceMetrics(actionID ActionID, resourceType proto.ResourceType) *ResourceMetrics
func (*UnitMetrics) ToProto ¶
func (unitMetrics *UnitMetrics) ToProto() *proto.UnitMetrics
type UnitReference ¶
type UnitReference struct {
// contains filtered or unexported fields
}
Struct for handling unit references, to account for values that can change dynamically (e.g. CurrentTarget).
func NewUnitReference ¶
func NewUnitReference(ref *proto.UnitReference, contextUnit *Unit) UnitReference
func (UnitReference) Get ¶
func (ur UnitReference) Get() *Unit
func (*UnitReference) String ¶
func (ur *UnitReference) String() string
type UnitStats ¶
func NewUnitStats ¶
func NewUnitStats() UnitStats
type VengeanceTracker ¶
type VengeanceTracker struct {
// contains filtered or unexported fields
}
type Weapon ¶
type Weapon struct { BaseDamageMin float64 BaseDamageMax float64 AttackPowerPerDPS float64 SwingSpeed float64 NormalizedSwingSpeed float64 CritMultiplier float64 SpellSchool SpellSchool MinRange float64 MaxRange float64 }
Represents a generic weapon. Pets / unarmed / various other cases don't use actual weapon items so this is an abstraction of a Weapon.
func (*Weapon) AverageDamage ¶
func (*Weapon) BaseDamage ¶
func (weapon *Weapon) BaseDamage(sim *Simulation) float64
func (*Weapon) CalculateAverageWeaponDamage ¶
func (*Weapon) CalculateNormalizedWeaponDamage ¶
func (weapon *Weapon) CalculateNormalizedWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Weapon) CalculateWeaponDamage ¶
func (weapon *Weapon) CalculateWeaponDamage(sim *Simulation, attackPower float64) float64
func (*Weapon) EnemyWeaponDamage ¶
func (weapon *Weapon) EnemyWeaponDamage(sim *Simulation, attackPower float64, damageSpread float64) float64
func (*Weapon) GetSpellSchool ¶
func (weapon *Weapon) GetSpellSchool() SpellSchool
type WeaponAttack ¶
type WeaponAttack struct { Weapon // contains filtered or unexported fields }
func (*WeaponAttack) IsInRange ¶
func (wa *WeaponAttack) IsInRange() bool
Source Files ¶
- agent.go
- api.go
- api_raidsim_concurrent.go
- apl.go
- apl_action.go
- apl_actions_casting.go
- apl_actions_misc.go
- apl_actions_sequences.go
- apl_actions_timing.go
- apl_helpers.go
- apl_value.go
- apl_values_aura.go
- apl_values_auto_attacks.go
- apl_values_boss.go
- apl_values_core.go
- apl_values_encounter.go
- apl_values_gcd.go
- apl_values_operators.go
- apl_values_properties.go
- apl_values_resources.go
- apl_values_runes.go
- apl_values_sequences.go
- apl_values_spell.go
- apl_values_unit.go
- attack.go
- aura.go
- aura_helpers.go
- avoid_dr.go
- base_stats.go
- base_stats_auto_gen.go
- buffs.go
- bulksim.go
- cast.go
- character.go
- constants.go
- consumes.go
- cooldown.go
- database.go
- debuffs.go
- dot.go
- energy.go
- environment.go
- exclusive_effect.go
- flags.go
- focus.go
- gcd.go
- health.go
- item_effects.go
- item_sets.go
- item_swaps.go
- major_cooldown.go
- mana.go
- metrics_aggregator.go
- movement.go
- pending_action.go
- periodic_action.go
- pet.go
- presim.go
- professions.go
- racials.go
- rage.go
- raid.go
- rand.go
- runic_power.go
- runic_power_helper.go
- shield.go
- sim.go
- spell.go
- spell_mod.go
- spell_outcome.go
- spell_queueing.go
- spell_resistances.go
- spell_result.go
- statweight.go
- target.go
- target_ai.go
- target_dummy.go
- test_generators.go
- test_result_compare.go
- test_suite.go
- test_utils.go
- unit.go
- utils.go
- vengeance.go