stats

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: May 13, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PseudoStatsLen = len(proto.PseudoStat_name)
View Source
var UnitStatsLen = int(Len) + PseudoStatsLen

Functions

func NewSchoolFloatArray

func NewSchoolFloatArray(defaultVal float64) [SchoolLen]float64

Types

type Bonuses

type Bonuses struct {
	Multiplier float64          // multiplier added to all stat gains from this stat.
	Deps       map[Stat]float64 // multiplier added to Stat when this stat is changed.
}

Bonuses for a single stat

type PseudoStats

type PseudoStats struct {
	CostMultiplier float64 // Multiplies spell cost.
	CostReduction  float64 // Reduces spell cost.

	CastSpeedMultiplier   float64
	MeleeSpeedMultiplier  float64
	RangedSpeedMultiplier float64

	MeleeCritMultiplier float64

	FiveSecondRuleRefreshTime time.Duration // last time a spell was cast
	SpiritRegenRateCasting    float64       // percentage of spirit regen allowed during casting. Spell effect MOD_MANA_REGEN_INTERRUPT (134)

	// Both of these are currently only used for innervate.
	ForceFullSpiritRegen  bool    // If set, automatically uses full spirit regen regardless of FSR refresh time.
	SpiritRegenMultiplier float64 // Multiplier on spirit portion of mana regen. For spell effect MOD_POWER_REGEN_PERCENT (110)

	// If true, allows block/parry.
	InFrontOfTarget bool

	// "Apply Aura: Mod Damage Done (Physical)", applies to abilities with EffectSpellCoefficient > 0.
	//  This includes almost all "(Normalized) Weapon Damage", but also some "School Damage (Physical)" abilities.
	BonusDamage float64 // Comes from '+X Weapon Damage' effects

	BonusMHDps     float64
	BonusOHDps     float64
	BonusRangedDps float64

	DisableDWMissPenalty bool    // Used by Heroic Strike and Cleave
	IncreasedMissChance  float64 // Insect Swarm and Scorpid Sting
	DodgeReduction       float64 // Used by Warrior talent 'Weapon Mastery' and SWP boss auras.

	MobTypeAttackPower float64 // Bonus AP against mobs of the current type.
	MobTypeSpellPower  float64 // Bonus SP against mobs of the current type.

	ThreatMultiplier float64 // Modulates the threat generated. Affected by things like salv.

	DamageDealtMultiplier       float64            // All damage
	SchoolDamageDealtMultiplier [SchoolLen]float64 // For specific spell schools. DO NOT use with multi school idices! See helper functions on Unit!

	// Important when unit is attacker or target
	BlockValueMultiplier float64

	// Only used for NPCs, governs variance in enemy auto-attack damage
	DamageSpread float64

	// Weapon Skills
	UnarmedSkill         float64
	DaggersSkill         float64
	SwordsSkill          float64
	MacesSkill           float64
	AxesSkill            float64
	TwoHandedSwordsSkill float64
	TwoHandedMacesSkill  float64
	TwoHandedAxesSkill   float64
	PolearmsSkill        float64
	StavesSkill          float64

	// Ranged Skills
	BowsSkill      float64
	CrossbowsSkill float64
	GunsSkill      float64
	ThrownSkill    float64

	CanBlock bool
	CanParry bool
	Stunned  bool // prevents blocks, dodges, and parries

	ParryHaste bool

	ReducedCritTakenChance float64 // Reduces chance to be crit.

	BonusRangedAttackPowerTaken float64 // Hunters mark
	BonusMeleeHitRatingTaken    float64 // Formerly Imp FF and SW Radiance;
	BonusSpellHitRatingTaken    float64 // Imp FF

	BonusHealingTaken float64 // Talisman of Troll Divinity

	DamageTakenMultiplier       float64            // All damage
	SchoolDamageTakenMultiplier [SchoolLen]float64 // For specific spell schools. DO NOT use with multi school index! See helper functions on Unit!
	SchoolCritTakenChance       [SchoolLen]float64 // For spell school crit. DO NOT use with multi school index! See helper functions on Unit!
	SchoolBonusDamageTaken      [SchoolLen]float64 // For spell school bonus damage taken. DO NOT use with multi school index! See helper functions on Unit!

	BleedDamageTakenMultiplier  float64 // Modifies damage taken from bleed effects
	PoisonDamageTakenMultiplier float64 // Modifies damage taken from poison effects

	ArmorMultiplier float64 // Major/minor/special multiplicative armor modifiers

	HealingTakenMultiplier float64
}

func NewPseudoStats

func NewPseudoStats() PseudoStats

type SchoolIndex

type SchoolIndex byte
const (
	SchoolIndexNone     SchoolIndex = 0
	SchoolIndexPhysical SchoolIndex = iota
	SchoolIndexArcane
	SchoolIndexFire
	SchoolIndexFrost
	SchoolIndexHoly
	SchoolIndexNature
	SchoolIndexShadow

	SchoolLen

	// School is composed of multiple base schools.
	SchoolIndexMultischool SchoolIndex = iota - 1 // This is deliberately set this way to be a continuous sequence.
)

func (SchoolIndex) IsMultiSchool

func (schoolIndex SchoolIndex) IsMultiSchool() bool

Check if school index is a multi-school.

type Stat

type Stat byte
const (
	Strength Stat = iota
	Agility
	Stamina
	Intellect
	Spirit
	SpellPower
	ArcanePower
	FirePower
	FrostPower
	HolyPower
	NaturePower
	ShadowPower
	MP5
	SpellHit
	SpellCrit
	SpellHaste
	SpellPenetration
	AttackPower
	MeleeHit
	MeleeCrit
	MeleeHaste
	ArmorPenetration
	Expertise
	Mana
	Energy
	Rage
	Armor
	RangedAttackPower
	Defense
	Block
	BlockValue
	Dodge
	Parry
	Resilience
	Health
	ArcaneResistance
	FireResistance
	FrostResistance
	NatureResistance
	ShadowResistance
	BonusArmor
	HealingPower
	SpellDamage
	FeralAttackPower

	Len
)

Use internal representation instead of proto.Stat so we can add functions and use 'byte' as the data type.

This needs to stay synced with proto.Stat.

func ProtoArrayToStatsList

func ProtoArrayToStatsList(protoStats []proto.Stat) []Stat

func (Stat) StatName

func (s Stat) StatName() string

type StatDependency

type StatDependency struct {
	// contains filtered or unexported fields
}

func (StatDependency) String

func (sd StatDependency) String() string

type StatDependencyManager

type StatDependencyManager struct {
	// contains filtered or unexported fields
}

Manages dependencies between stats.

Some examples: Increases your AP by 30% of your Int Increases agility by X% Reduces armor by 50%

func NewStatDependencyManager

func NewStatDependencyManager() StatDependencyManager

func (*StatDependencyManager) AddStatDependency

func (sdm *StatDependencyManager) AddStatDependency(src Stat, dst Stat, amount float64)

func (*StatDependencyManager) ApplyStatDependencies

func (sdm *StatDependencyManager) ApplyStatDependencies(s Stats) Stats

func (*StatDependencyManager) DisableDynamicStatDep

func (sdm *StatDependencyManager) DisableDynamicStatDep(dep *StatDependency) bool

Returns whether the state changed.

func (*StatDependencyManager) EnableDynamicStatDep

func (sdm *StatDependencyManager) EnableDynamicStatDep(dep *StatDependency) bool

Returns whether the state changed.

func (*StatDependencyManager) FinalizeStatDeps

func (sdm *StatDependencyManager) FinalizeStatDeps()

func (*StatDependencyManager) IsFinalized

func (sdm *StatDependencyManager) IsFinalized() bool

func (*StatDependencyManager) MultiplyStat

func (sdm *StatDependencyManager) MultiplyStat(s Stat, amount float64)

func (*StatDependencyManager) NewDynamicMultiplyStat

func (sdm *StatDependencyManager) NewDynamicMultiplyStat(s Stat, amount float64) *StatDependency

func (*StatDependencyManager) NewDynamicStatDependency

func (sdm *StatDependencyManager) NewDynamicStatDependency(src Stat, dst Stat, amount float64) *StatDependency

func (*StatDependencyManager) ResetStatDeps

func (sdm *StatDependencyManager) ResetStatDeps()

func (*StatDependencyManager) SortAndApplyStatDependencies

func (sdm *StatDependencyManager) SortAndApplyStatDependencies(s Stats) Stats

type Stats

type Stats [Len]float64

func FromFloatArray

func FromFloatArray(values []float64) Stats

func (Stats) Add

func (stats Stats) Add(other Stats) Stats

Adds two Stats together, returning the new Stats.

func (*Stats) AddInplace

func (stats *Stats) AddInplace(other *Stats)

Adds another to Stats to this, in-place. For performance, only.

func (Stats) DotProduct

func (stats Stats) DotProduct(other Stats) Stats

Multiplies two Stats together by multiplying the values of corresponding stats, like a dot product operation.

func (Stats) Equals

func (stats Stats) Equals(other Stats) bool

func (Stats) EqualsWithTolerance

func (stats Stats) EqualsWithTolerance(other Stats, tolerance float64) bool

func (Stats) FlatString

func (stats Stats) FlatString() string

Like String() but without the newlines.

func (Stats) Floor added in v0.0.8

func (stats Stats) Floor() Stats

func (Stats) Invert

func (stats Stats) Invert() Stats

func (Stats) Multiply

func (stats Stats) Multiply(multiplier float64) Stats

func (Stats) String

func (stats Stats) String() string

func (Stats) Subtract

func (stats Stats) Subtract(other Stats) Stats

Subtracts another Stats from this one, returning the new Stats.

func (Stats) ToFloatArray

func (stats Stats) ToFloatArray() []float64

type UnitStat

type UnitStat int

func UnitStatFromIdx

func UnitStatFromIdx(s int) UnitStat

func UnitStatFromPseudoStat

func UnitStatFromPseudoStat(s proto.PseudoStat) UnitStat

func UnitStatFromStat

func UnitStatFromStat(s Stat) UnitStat

func (UnitStat) AddToStatsProto

func (s UnitStat) AddToStatsProto(p *proto.UnitStats, value float64)

func (UnitStat) EqualsPseudoStat

func (s UnitStat) EqualsPseudoStat(other proto.PseudoStat) bool

func (UnitStat) EqualsStat

func (s UnitStat) EqualsStat(other Stat) bool

func (UnitStat) IsPseudoStat

func (s UnitStat) IsPseudoStat() bool

func (UnitStat) IsStat

func (s UnitStat) IsStat() bool

func (UnitStat) PseudoStatIdx

func (s UnitStat) PseudoStatIdx() int

func (UnitStat) StatIdx

func (s UnitStat) StatIdx() int

type WeaponSkill

type WeaponSkill byte
const (
	WeaponSkillUnknown WeaponSkill = iota
	WeaponSkillAxes
	WeaponSkillSwords
	WeaponSkillMaces
	WeaponSkillDaggers
	WeaponSkillUnarmed
	WeaponSkillTwoHandedAxes
	WeaponSkillTwoHandedSwords
	WeaponSkillTwoHandedMaces
	WeaponSkillPolearms
	WeaponSkillStaves
	WeaponSkillThrown
	WeaponSkillBows
	WeaponSkillCrossbows
	WeaponSkillGuns

	WeaponSkillLen
)

type WeaponSkills

type WeaponSkills [WeaponSkillLen]float64

func WeaponSkillsFloatArray

func WeaponSkillsFloatArray(values []float64) WeaponSkills

Jump to

Keyboard shortcuts

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