gamedata

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2026 License: MIT Imports: 0 Imported by: 0

Documentation

Overview

Package gamedata provides static game data (class/race info, warrior spell IDs, base stats) used by the bot AI for making decisions without requiring runtime DBC parsing. This covers the WoW 3.3.5a patch (build 12340).

Index

Constants

This section is empty.

Variables

View Source
var Dungeons = map[string]DungeonInfo{
	"ragefire_chasm": {
		Name:          "Ragefire Chasm",
		MapID:         389,
		MinLevel:      15,
		MaxLevel:      21,
		EntranceMapID: 1,
		EntranceX:     1811.78,
		EntranceY:     -4410.5,
		EntranceZ:     -18.4704,
		GroupSize:     5,
		BossEntries:   []uint32{11517, 11518, 11519, 11520},
	},
	"the_deadmines": {
		Name:          "The Deadmines",
		MapID:         36,
		MinLevel:      17,
		MaxLevel:      26,
		EntranceMapID: 0,
		EntranceX:     -11208.3,
		EntranceY:     1672.52,
		EntranceZ:     24.6361,
		GroupSize:     5,
		BossEntries:   []uint32{644, 642, 1763, 646, 639},
	},
}

Dungeons available for testing.

View Source
var GrindZones = []GrindZone{

	{Name: "Deathknell", MapID: 0, CenterX: 1848, CenterY: 1608, CenterZ: 97, Radius: 100, MinLevel: 1, MaxLevel: 6},
	{Name: "Tirisfal Glades", MapID: 0, CenterX: 2259, CenterY: 312, CenterZ: 35, Radius: 200, MinLevel: 5, MaxLevel: 12},

	{Name: "Northshire Valley", MapID: 0, CenterX: -8920, CenterY: -183, CenterZ: 81, Radius: 150, MinLevel: 1, MaxLevel: 6},
	{Name: "Elwynn Forest", MapID: 0, CenterX: -9465, CenterY: 75, CenterZ: 57, Radius: 300, MinLevel: 5, MaxLevel: 12},
	{Name: "Westfall", MapID: 0, CenterX: -10670, CenterY: 1033, CenterZ: 34, Radius: 400, MinLevel: 10, MaxLevel: 20},
	{Name: "Redridge Mountains", MapID: 0, CenterX: -9225, CenterY: -2200, CenterZ: 65, Radius: 300, MinLevel: 15, MaxLevel: 25},

	{Name: "Valley of Trials", MapID: 1, CenterX: -618, CenterY: -4251, CenterZ: 38, Radius: 150, MinLevel: 1, MaxLevel: 6},
	{Name: "Durotar", MapID: 1, CenterX: 230, CenterY: -4738, CenterZ: 10, Radius: 300, MinLevel: 5, MaxLevel: 12},
	{Name: "The Barrens", MapID: 1, CenterX: -442, CenterY: -2650, CenterZ: 96, Radius: 500, MinLevel: 10, MaxLevel: 25},
}

GrindZones is a list of zones for leveling.

View Source
var HoggerInfo = NPCInfo{
	Entry:    448,
	Name:     "Hogger",
	Level:    11,
	Health:   572,
	MapID:    0,
	PosX:     -10107.26,
	PosY:     617.83,
	PosZ:     38.083,
	ZoneName: "Elwynn Forest",
}

HoggerInfo contains known data about the Hogger NPC for testing.

View Source
var WarriorSpells = map[uint32]SpellInfo{

	78:   {Name: "Heroic Strike", Level: 1, RageCost: 15, Cooldown: 0, Range: 5, IsMelee: true},
	772:  {Name: "Rend", Level: 4, RageCost: 10, Cooldown: 0, Range: 5, IsMelee: true},
	6343: {Name: "Thunder Clap", Level: 6, RageCost: 20, Cooldown: 6, Range: 8, IsMelee: true},
	1715: {Name: "Hamstring", Level: 8, RageCost: 10, Cooldown: 0, Range: 5, IsMelee: true},
	7384: {Name: "Overpower", Level: 12, RageCost: 5, Cooldown: 5, Range: 5, IsMelee: true, IsProc: true},
	6572: {Name: "Revenge", Level: 14, RageCost: 5, Cooldown: 5, Range: 5, IsMelee: true, IsProc: true},
	285:  {Name: "Heroic Strike (Rank 2)", Level: 16, RageCost: 15, Cooldown: 0, Range: 5, IsMelee: true},
	7386: {Name: "Sunder Armor", Level: 10, RageCost: 15, Cooldown: 0, Range: 5, IsMelee: true},
	845:  {Name: "Cleave", Level: 20, RageCost: 20, Cooldown: 0, Range: 5, IsMelee: true},
	6552: {Name: "Pummel", Level: 38, RageCost: 10, Cooldown: 10, Range: 5, IsMelee: true},
	1464: {Name: "Slam", Level: 30, RageCost: 15, Cooldown: 0, Range: 5, IsMelee: true},
	5308: {Name: "Execute", Level: 24, RageCost: 15, Cooldown: 0, Range: 5, IsMelee: true},
	1680: {Name: "Whirlwind", Level: 36, RageCost: 25, Cooldown: 10, Range: 8, IsMelee: true},

	2457:  {Name: "Battle Shout", Level: 1, RageCost: 10, Cooldown: 0, Range: 0, IsMelee: false},
	6673:  {Name: "Battle Shout (Rank 2)", Level: 12, RageCost: 10, Cooldown: 0, Range: 0, IsMelee: false},
	1160:  {Name: "Demoralizing Shout", Level: 14, RageCost: 10, Cooldown: 0, Range: 0, IsMelee: false},
	5246:  {Name: "Intimidating Shout", Level: 22, RageCost: 25, Cooldown: 120, Range: 0, IsMelee: false},
	18499: {Name: "Berserker Rage", Level: 32, RageCost: 0, Cooldown: 30, Range: 0, IsMelee: false},
	1719:  {Name: "Recklessness", Level: 50, RageCost: 0, Cooldown: 300, Range: 0, IsMelee: false},

	100:   {Name: "Charge", Level: 4, RageCost: 0, Cooldown: 15, Range: 25, IsMelee: false, MinRange: 8},
	355:   {Name: "Taunt", Level: 10, RageCost: 0, Cooldown: 8, Range: 30, IsMelee: false},
	2565:  {Name: "Shield Block", Level: 16, RageCost: 10, Cooldown: 60, Range: 0, IsMelee: false},
	12678: {Name: "Stance Mastery", Level: 20, RageCost: 0, Cooldown: 0, Range: 0, IsMelee: false},

	34428: {Name: "Victory Rush", Level: 6, RageCost: 0, Cooldown: 0, Range: 5, IsMelee: true, IsProc: true},
}

Warrior spells by level range - the bot's primary class for testing. These are the baseline abilities a warrior would train while leveling.

Functions

func ClassSpells

func ClassSpells(classID uint8) map[uint32]SpellInfo

ClassSpells returns a simplified list of important spell IDs by class ID.

func GetSpellPriority

func GetSpellPriority(classID uint8, level uint32) []uint32

GetSpellPriority returns a priority-ordered list of offensive spell IDs for the given class at the given level. Higher priority first. Excludes proc abilities, buffs, and non-combat spells.

func RaceStartPosition

func RaceStartPosition(race uint8) (mapID uint32, x, y, z float32)

RaceStartPosition returns the starting zone coordinates for a race.

Types

type DungeonInfo

type DungeonInfo struct {
	Name          string
	MapID         uint32
	MinLevel      uint32
	MaxLevel      uint32
	EntranceMapID uint32
	EntranceX     float32
	EntranceY     float32
	EntranceZ     float32
	GroupSize     int
	BossEntries   []uint32
}

DungeonInfo holds info about a dungeon for group testing.

type GrindZone

type GrindZone struct {
	Name     string
	MapID    uint32
	CenterX  float32
	CenterY  float32
	CenterZ  float32
	Radius   float32
	MinLevel uint32
	MaxLevel uint32
}

GrindZone represents a zone where bots can grind for XP.

func GetGrindZone

func GetGrindZone(level uint32, mapID uint32) *GrindZone

GetGrindZone returns a suitable grind zone for the given level and map.

type NPCInfo

type NPCInfo struct {
	Entry    uint32
	Name     string
	Level    uint32
	Health   uint32
	MapID    uint32
	PosX     float32
	PosY     float32
	PosZ     float32
	ZoneName string
}

NPCInfo holds info about a known NPC.

type SpellInfo

type SpellInfo struct {
	Name     string
	Level    uint32
	ManaCost uint32
	RageCost uint32
	Cooldown float32 // seconds
	Range    float32 // yards
	MinRange float32 // yards
	IsMelee  bool
	IsHeal   bool
	IsProc   bool // requires a proc to be usable (e.g. Victory Rush)
}

SpellInfo holds static info about a spell.

Jump to

Keyboard shortcuts

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