eq2go/internal/heroic_ops/constants.go

145 lines
3.2 KiB
Go

package heroic_ops
// Heroic Opportunity Constants
const (
// Maximum number of abilities in a starter chain or wheel
MaxAbilities = 6
// Special ability icon values
AbilityIconAny = 0xFFFF // Wildcard - any ability can be used
AbilityIconNone = 0 // No ability required
// Default wheel timer (in seconds)
DefaultWheelTimerSeconds = 10
// HO Types in database
HOTypeStarter = "Starter"
HOTypeWheel = "Wheel"
// Wheel order types
WheelOrderUnordered = 0 // Abilities can be completed in any order
WheelOrderOrdered = 1 // Abilities must be completed in sequence
// HO States
HOStateInactive = iota
HOStateStarterChain
HOStateWheelPhase
HOStateComplete
HOStateFailed
// Maximum number of concurrent heroic opportunities per encounter
MaxConcurrentHOs = 3
// Chance calculation constants
MinChance = 0.0
MaxChance = 100.0
// Timer constants (in milliseconds)
WheelTimerCheckInterval = 100
StarterChainTimeout = 30000 // 30 seconds
WheelPhaseTimeout = 10000 // 10 seconds (configurable)
// Special shift states
ShiftNotUsed = 0
ShiftUsed = 1
// HO completion status
HONotComplete = 0
HOComplete = 1
// Class restrictions (matches EQ2 class IDs)
ClassAny = 0 // Any class can initiate
// Packet constants
PacketHeroicOpportunity = "WS_HeroicOpportunity"
// Error messages
ErrHONotFound = "heroic opportunity not found"
ErrHOInvalidState = "heroic opportunity in invalid state"
ErrHOAbilityNotAllowed = "ability not allowed for current heroic opportunity"
ErrHOTimerExpired = "heroic opportunity timer expired"
ErrHOAlreadyComplete = "heroic opportunity already complete"
ErrHOShiftAlreadyUsed = "wheel shift already used"
ErrHOWheelNotFound = "no wheel found for starter"
// Database constants
MaxHONameLength = 255
MaxHODescriptionLength = 1000
MaxDatabaseRetries = 3
// Memory management
DefaultHOPoolSize = 100
DefaultStarterCache = 500
DefaultWheelCache = 1000
MaxHOHistoryEntries = 50
)
// Heroic Opportunity Event Types for logging and statistics
const (
EventHOStarted = iota + 1
EventHOCompleted
EventHOFailed
EventHOTimerExpired
EventHOAbilityUsed
EventHOWheelShifted
EventHOStarterMatched
EventHOStarterEliminated
EventHOWheelSelected
EventHOProgressMade
)
// Ability icon mappings for common abilities
var CommonAbilityIcons = map[string]int16{
"melee": 1,
"spell": 2,
"divine": 3,
"combat": 4,
"heroic": 5,
"elemental": 6,
}
// Default class names for debugging
var ClassNames = map[int8]string{
0: "Any",
1: "Fighter",
2: "Warrior",
3: "Guardian",
4: "Berserker",
5: "Brawler",
6: "Monk",
7: "Bruiser",
8: "Crusader",
9: "Paladin",
10: "Shadow Knight",
11: "Priest",
12: "Cleric",
13: "Templar",
14: "Inquisitor",
15: "Druid",
16: "Warden",
17: "Fury",
18: "Shaman",
19: "Mystic",
20: "Defiler",
21: "Mage",
22: "Sorcerer",
23: "Wizard",
24: "Warlock",
25: "Enchanter",
26: "Illusionist",
27: "Coercer",
28: "Summoner",
29: "Necromancer",
30: "Conjuror",
31: "Scout",
32: "Rogue",
33: "Swashbuckler",
34: "Brigand",
35: "Bard",
36: "Troubador",
37: "Dirge",
38: "Predator",
39: "Ranger",
40: "Assassin",
}