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", }