package ai

// AI tick constants
const (
	DefaultThinkTick int32 = 250   // Default think tick in milliseconds (1/4 second)
	FastThinkTick    int32 = 100   // Fast think tick for active AI
	SlowThinkTick    int32 = 1000  // Slow think tick for idle AI
	BlankBrainTick   int32 = 50000 // Very slow tick for blank brain
	MaxThinkTick     int32 = 60000 // Maximum think tick (1 minute)
)

// Combat constants
const (
	MaxChaseDistance float32 = 150.0 // Default max chase distance
	MaxCombatRange   float32 = 25.0  // Default max combat range
	RunbackThreshold float32 = 1.0   // Distance threshold for runback
)

// Hate system constants
const (
	MinHateValue     int32 = 1          // Minimum hate value (0 or negative is invalid)
	MaxHateValue     int32 = 2147483647 // Maximum hate value (INT_MAX)
	DefaultHateValue int32 = 100        // Default hate amount
	MaxHateListSize  int   = 100        // Maximum entities in hate list
)

// Encounter system constants
const (
	MaxEncounterSize int = 50 // Maximum entities in encounter list
)

// Spell recovery constants
const (
	SpellRecoveryBuffer int32 = 2000 // Additional recovery time buffer (2 seconds)
)

// Brain type constants for identification
const (
	BrainTypeDefault      int8 = 0
	BrainTypeCombatPet    int8 = 1
	BrainTypeNonCombatPet int8 = 2
	BrainTypeBlank        int8 = 3
	BrainTypeLua          int8 = 4
	BrainTypeDumbFire     int8 = 5
)

// Pet movement constants
const (
	PetMovementFollow int8 = 0
	PetMovementStay   int8 = 1
	PetMovementGuard  int8 = 2
)

// Encounter state constants
const (
	EncounterStateAvailable int8 = 0
	EncounterStateLocked    int8 = 1
	EncounterStateBroken    int8 = 2
)

// Combat decision constants
const (
	MeleeAttackChance int = 70 // Base chance for melee attack
	SpellCastChance   int = 30 // Base chance for spell casting
	BuffCheckChance   int = 50 // Chance to check for buffs
)

// AI state flags
const (
	AIStateIdle      int32 = 0
	AIStateCombat    int32 = 1
	AIStateFollowing int32 = 2
	AIStateRunback   int32 = 3
	AIStateCasting   int32 = 4
	AIStateMoving    int32 = 5
)

// Debug levels
const (
	DebugLevelNone     int8 = 0
	DebugLevelBasic    int8 = 1
	DebugLevelDetailed int8 = 2
	DebugLevelVerbose  int8 = 3
)

// Timer constants
const (
	MillisecondsPerSecond int32 = 1000
	RecoveryTimeMultiple  int32 = 10 // Multiply cast/recovery times by 10
)
