hunter

package
v1.9.3 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	OptionShoot = iota
	OptionWeave
	OptionSteady
	OptionMulti
	OptionArcane
	OptionNone
)
View Source
const BaseFocusPerTick = 25.0
View Source
const MaxFocus = 100.0

Time between focus ticks.

View Source
const ThoridalTheStarsFuryItemID = 34334

Variables

View Source
var BMTalents = &proto.HunterTalents{
	ImprovedAspectOfTheHawk: 5,
	FocusedFire:             2,
	UnleashedFury:           5,
	Ferocity:                5,
	BestialDiscipline:       2,
	AnimalHandler:           1,
	Frenzy:                  5,
	FerociousInspiration:    3,
	BestialWrath:            true,
	SerpentsSwiftness:       5,
	TheBeastWithin:          true,

	LethalShots:    5,
	Efficiency:     5,
	GoForTheThroat: 2,
	AimedShot:      true,
	RapidKilling:   2,
	MortalShots:    5,
}
View Source
var FullDebuffs = &proto.Debuffs{
	BloodFrenzy:               true,
	FaerieFire:                proto.TristateEffect_TristateEffectImproved,
	ImprovedSealOfTheCrusader: true,
	JudgementOfWisdom:         true,
	Misery:                    true,
}
View Source
var FullIndividualBuffs = &proto.IndividualBuffs{
	BlessingOfKings:  true,
	BlessingOfWisdom: proto.TristateEffect_TristateEffectImproved,
	BlessingOfMight:  proto.TristateEffect_TristateEffectImproved,
}
View Source
var FullPartyBuffs = &proto.PartyBuffs{
	Bloodlust: 1,
	Drums:     proto.Drums_DrumsOfBattle,

	BattleShout:       proto.TristateEffect_TristateEffectImproved,
	LeaderOfThePack:   proto.TristateEffect_TristateEffectImproved,
	ManaSpringTotem:   proto.TristateEffect_TristateEffectRegular,
	GraceOfAirTotem:   proto.TristateEffect_TristateEffectRegular,
	WindfuryTotemRank: 5,
}
View Source
var FullRaidBuffs = &proto.RaidBuffs{
	ArcaneBrilliance: true,
	GiftOfTheWild:    proto.TristateEffect_TristateEffectImproved,
}
View Source
var ItemSetBeastLord = core.NewItemSet(core.ItemSet{
	Name: "Beast Lord Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetDemonStalker = core.NewItemSet(core.ItemSet{
	Name: "Demon Stalker Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetGronnstalker = core.NewItemSet(core.ItemSet{
	Name: "Gronnstalker's Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {

		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var ItemSetRiftStalker = core.NewItemSet(core.ItemSet{
	Name: "Rift Stalker Armor",
	Bonuses: map[int32]core.ApplyEffect{
		2: func(agent core.Agent) {
		},
		4: func(agent core.Agent) {

		},
	},
})
View Source
var P1Gear = items.EquipmentSpecFromJsonString(`{"items": [
	{
		"id": 28275,
		"enchant": 29192,
		"gems": [
			24028,
			32409
		]
	},
	{
		"id": 29381
	},
	{
		"id": 27801,
		"enchant": 28888,
		"gems": [
			31868,
			24028
		]
	},
	{
		"id": 24259,
		"enchant": 34004,
		"gems": [
			24028
		]
	},
	{
		"id": 28228,
		"enchant": 24003,
		"gems": [
			24028,
			24028,
			24055
		]
	},
	{
		"id": 29246,
		"enchant": 34002
	},
	{
		"id": 27474,
		"enchant": 33152,
		"gems": [
			24028,
			24028
		]
	},
	{
		"id": 28828,
		"gems": [
			24055,
			31868
		]
	},
	{
		"id": 30739,
		"enchant": 29535,
		"gems": [
			24028,
			24028,
			24028
		]
	},
	{
		"id": 28545,
		"enchant": 28279,
		"gems": [
			24028,
			24061
		]
	},
	{
		"id": 28757
	},
	{
		"id": 28791
	},
	{
		"id": 28830
	},
	{
		"id": 29383
	},
	{
		"id": 28435,
		"enchant": 22556
	},
	{
		"id": 28772,
		"enchant": 23766
	}
]}`)
View Source
var PetConfigs = map[proto.Hunter_Options_PetType]PetConfig{
	proto.Hunter_Options_Bat: PetConfig{
		Name:             "Bat",
		DamageMultiplier: 1.07,
		PrimaryAbility:   Bite,
		SecondaryAbility: Screech,
	},
	proto.Hunter_Options_Bear: PetConfig{
		Name:             "Bear",
		DamageMultiplier: 0.91,
		PrimaryAbility:   Bite,
		SecondaryAbility: Claw,
	},
	proto.Hunter_Options_Cat: PetConfig{
		Name:             "Cat",
		DamageMultiplier: 1.1,
		PrimaryAbility:   Bite,
		SecondaryAbility: Claw,
	},
	proto.Hunter_Options_Crab: PetConfig{
		Name:             "Crab",
		DamageMultiplier: 0.95,
		PrimaryAbility:   Claw,
	},
	proto.Hunter_Options_Owl: PetConfig{
		Name:             "Owl",
		DamageMultiplier: 1.07,
		PrimaryAbility:   Claw,
		SecondaryAbility: Screech,
		RandomSelection:  true,
	},
	proto.Hunter_Options_Raptor: PetConfig{
		Name:             "Raptor",
		DamageMultiplier: 1.1,
		PrimaryAbility:   Bite,
		SecondaryAbility: Claw,
	},
	proto.Hunter_Options_Ravager: PetConfig{
		Name:             "Ravager",
		DamageMultiplier: 1.1,
		PrimaryAbility:   Bite,
		SecondaryAbility: Gore,
	},
	proto.Hunter_Options_WindSerpent: PetConfig{
		Name:             "Wind Serpent",
		DamageMultiplier: 1.07,
		PrimaryAbility:   Bite,
		SecondaryAbility: LightningBreath,
	},
}

Abilities reference: https://tbc.wowhead.com/hunter-pets https://tbc.wowhead.com/guides/hunter-dps-best-pets-taming-loyalty-burning-crusade-classic

View Source
var PlayerOptionsBasic = &proto.Player_Hunter{
	Hunter: &proto.Hunter{
		Talents:  BMTalents,
		Options:  basicOptions,
		Rotation: basicRotation,
	},
}
View Source
var PlayerOptionsFrench = &proto.Player_Hunter{
	Hunter: &proto.Hunter{
		Talents:  BMTalents,
		Options:  windSerpentOptions,
		Rotation: frenchRotation,
	},
}
View Source
var PlayerOptionsMeleeWeave = &proto.Player_Hunter{
	Hunter: &proto.Hunter{
		Talents:  BMTalents,
		Options:  windSerpentOptions,
		Rotation: meleeWeaveRotation,
	},
}
View Source
var PlayerOptionsSV = &proto.Player_Hunter{
	Hunter: &proto.Hunter{
		Talents:  SVTalents,
		Options:  windSerpentOptions,
		Rotation: meleeWeaveRotation,
	},
}
View Source
var SVTalents = &proto.HunterTalents{
	ImprovedAspectOfTheHawk: 5,
	FocusedFire:             2,

	LethalShots:         5,
	ImprovedHuntersMark: 5,
	GoForTheThroat:      2,
	RapidKilling:        1,

	MonsterSlaying:    3,
	HumanoidSlaying:   3,
	SavageStrikes:     2,
	CleverTraps:       2,
	Survivalist:       2,
	Surefooted:        3,
	SurvivalInstincts: 2,
	KillerInstinct:    3,
	LightningReflexes: 5,
	ThrillOfTheHunt:   2,
	ExposeWeakness:    3,
	MasterTactician:   5,
	Readiness:         true,
}

Functions

func RegisterHunter

func RegisterHunter()

Types

type Hunter

type Hunter struct {
	core.Character

	Talents  proto.HunterTalents
	Options  proto.Hunter_Options
	Rotation proto.Hunter_Rotation

	AmmoDPS         float64
	AmmoDamageBonus float64

	AspectOfTheHawk  *core.Spell
	AspectOfTheViper *core.Spell

	AimedShot    *core.Spell
	ArcaneShot   *core.Spell
	KillCommand  *core.Spell
	MultiShot    *core.Spell
	RapidFire    *core.Spell
	RaptorStrike *core.Spell
	ScorpidSting *core.Spell
	SerpentSting *core.Spell
	SteadyShot   *core.Spell

	SerpentStingDot *core.Dot

	AspectOfTheHawkAura  *core.Aura
	AspectOfTheViperAura *core.Aura
	ScorpidStingAura     *core.Aura
	TalonOfAlarAura      *core.Aura
	// contains filtered or unexported fields
}

func NewHunter

func NewHunter(character core.Character, options proto.Player) *Hunter

func (*Hunter) AddPartyBuffs

func (hunter *Hunter) AddPartyBuffs(partyBuffs *proto.PartyBuffs)

func (*Hunter) AddRaidBuffs

func (hunter *Hunter) AddRaidBuffs(raidBuffs *proto.RaidBuffs)

func (*Hunter) ApplyTalents

func (hunter *Hunter) ApplyTalents()

func (*Hunter) GetCharacter

func (hunter *Hunter) GetCharacter() *core.Character

func (*Hunter) GetHunter

func (hunter *Hunter) GetHunter() *Hunter

func (*Hunter) GetPresimOptions

func (hunter *Hunter) GetPresimOptions(_ proto.Player) *core.PresimOptions

func (*Hunter) Initialize

func (hunter *Hunter) Initialize()

func (*Hunter) MultiShotCastTime

func (hunter *Hunter) MultiShotCastTime() time.Duration

func (*Hunter) NewHunterPet

func (hunter *Hunter) NewHunterPet() *HunterPet

func (*Hunter) OnAutoAttack

func (hunter *Hunter) OnAutoAttack(sim *core.Simulation, spell *core.Spell)

func (*Hunter) OnGCDReady

func (hunter *Hunter) OnGCDReady(sim *core.Simulation)

func (*Hunter) OnManaTick

func (hunter *Hunter) OnManaTick(sim *core.Simulation)

func (*Hunter) Reset

func (hunter *Hunter) Reset(sim *core.Simulation)

func (*Hunter) SteadyShotCastTime

func (hunter *Hunter) SteadyShotCastTime() time.Duration

func (*Hunter) TryKillCommand

func (hunter *Hunter) TryKillCommand(sim *core.Simulation, target *core.Unit)

func (*Hunter) TryRaptorStrike

func (hunter *Hunter) TryRaptorStrike(sim *core.Simulation) *core.Spell

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

type HunterAgent

type HunterAgent interface {
	GetHunter() *Hunter
}

Agent is a generic way to access underlying hunter on any of the agents.

type HunterPet

type HunterPet struct {
	core.Pet

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

func (*HunterPet) AddFocus

func (fb *HunterPet) AddFocus(sim *core.Simulation, amount float64, actionID core.ActionID)

func (*HunterPet) Cancel

func (fb *HunterPet) Cancel(sim *core.Simulation)

func (*HunterPet) CurrentFocus

func (fb *HunterPet) CurrentFocus() float64

func (*HunterPet) EnableFocusBar

func (hunterPet *HunterPet) EnableFocusBar(regenMultiplier float64, onFocusGain OnFocusGain)

func (*HunterPet) GetPet

func (hp *HunterPet) GetPet() *core.Pet

func (*HunterPet) Initialize

func (hp *HunterPet) Initialize()

func (*HunterPet) NewPetAbility

func (hp *HunterPet) NewPetAbility(abilityType PetAbilityType, isPrimary bool) PetAbility

func (*HunterPet) OnGCDReady

func (hp *HunterPet) OnGCDReady(sim *core.Simulation)

func (*HunterPet) Reset

func (hp *HunterPet) Reset(sim *core.Simulation)

func (*HunterPet) SpendFocus

func (fb *HunterPet) SpendFocus(sim *core.Simulation, amount float64, actionID core.ActionID)

type OnFocusGain

type OnFocusGain func(sim *core.Simulation)

OnFocusGain is called any time focus is increased.

type PetAbility

type PetAbility struct {
	Type PetAbilityType

	// Focus cost
	Cost float64

	*core.Spell
}

func (*PetAbility) TryCast

func (ability *PetAbility) TryCast(sim *core.Simulation, target *core.Unit, hp *HunterPet) bool

Returns whether the ability was successfully cast.

type PetAbilityType

type PetAbilityType int
const (
	Unknown PetAbilityType = iota
	Bite
	Claw
	FireBreath
	Gore
	LightningBreath
	PoisonSpit
	Screech
)

type PetConfig

type PetConfig struct {
	Name string

	DamageMultiplier float64

	PrimaryAbility   PetAbilityType
	SecondaryAbility PetAbilityType

	// Randomly select between abilities instead of using a prio.
	RandomSelection bool
}

Jump to

Keyboard shortcuts

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