144 lines
3.2 KiB
Go
144 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",
|
|
} |