package zone // Configuration keys for zone rules and settings const ( // Zone configuration keys ConfigTreasureChestEnabled = "treasure_chest_enabled" ConfigPvPEnabled = "pvp_enabled" ConfigDeathPenalty = "death_penalty_enabled" ConfigSafeZone = "safe_zone" ConfigGroupSpawns = "group_spawns_allowed" ConfigInstanced = "instanced" ConfigMaxPlayers = "max_players" ConfigMinLevel = "min_level" ConfigMaxLevel = "max_level" ConfigLockoutTime = "lockout_time" ConfigReenterTime = "reenter_time" ConfigResetTime = "reset_time" ConfigWeatherEnabled = "weather_enabled" ConfigWeatherType = "weather_type" ConfigSpawnRates = "spawn_rate_modifier" ConfigLootRates = "loot_rate_modifier" ConfigExperienceRates = "experience_rate_modifier" ) // Logging prefixes for consistent log formatting const ( LogPrefixZone = "[ZONE]" LogPrefixMap = "[MAP]" LogPrefixPathfind = "[PATHFIND]" LogPrefixMovement = "[MOVEMENT]" LogPrefixRegion = "[REGION]" LogPrefixWeather = "[WEATHER]" LogPrefixTransport = "[TRANSPORT]" LogPrefixFlight = "[FLIGHT]" LogPrefixProximity = "[PROXIMITY]" LogPrefixGrid = "[GRID]" LogPrefixScript = "[SCRIPT]" LogPrefixCombat = "[COMBAT]" LogPrefixSpawn = "[SPAWN]" LogPrefixClient = "[CLIENT]" ) // Map version constants const ( MapVersionV1 = 1 MapVersionV2 = 2 MapVersionV2Deflated = 3 MapVersionV3Deflated = 4 ) // Map loading states const ( MapStateUnloaded = iota MapStateLoading MapStateLoaded MapStateFailed ) // Pathfinding backend types const ( PathfinderTypeNull = iota PathfinderTypeWaypoint PathfinderTypeNavmesh ) // Pathfinding poly flags for terrain types const ( PathingPolyFlagWalk = 0x01 PathingPolyFlagSwim = 0x02 PathingPolyFlagDoor = 0x04 PathingPolyFlagJump = 0x08 PathingPolyFlagDisabled = 0x10 PathingPolyFlagAll = 0xFFFF ) // Water types for region detection const ( WaterTypeNone = iota WaterTypeNormal WaterTypeLava WaterTypeSlime WaterTypeIce WaterTypeVirtual ) // Region types const ( RegionTypeNormal = iota RegionTypeWater RegionTypeLava RegionTypePvP RegionTypeZoneLine RegionTypeNoSpawn RegionTypeEnvironmentalDamage ) // Environmental damage types const ( EnvironmentalDamageNone = iota EnvironmentalDamageLava EnvironmentalDamagePoison EnvironmentalDamageCold EnvironmentalDamageHeat ) // Movement command types const ( MovementCommandMoveTo = iota MovementCommandSwimTo MovementCommandTeleportTo MovementCommandRotateTo MovementCommandStop MovementCommandEvadeCombat MovementCommandFollowPath ) // Movement modes const ( MovementModeWalk = iota MovementModeRun MovementModeSwim MovementModeFly ) // Stuck behaviors for movement const ( StuckBehaviorNone = iota StuckBehaviorRun StuckBehaviorWarp StuckBehaviorEvade ) // Movement speeds (units per second) const ( DefaultWalkSpeed = 2.5 DefaultRunSpeed = 7.0 DefaultSwimSpeed = 3.5 DefaultFlySpeed = 10.0 ) // NPC brain types const ( BrainTypeNone = iota BrainTypeBasic BrainTypeCombatPet BrainTypeNonCombatPet BrainTypeBlank BrainTypeLua BrainTypeDumbFire ) // Combat states const ( CombatStateNone = iota CombatStateInCombat CombatStateEvading CombatStateReturning ) // NPC AI timing constants (in milliseconds) const ( AIThinkInterval = 100 // How often AI thinks AggroCheckInterval = 1000 // How often to check for new targets MovementUpdateInterval = 250 // How often to update movement CombatTickInterval = 1000 // How often to process combat SpellCheckInterval = 500 // How often to check for spell casting HateDecayInterval = 5000 // How often hate decays ) // Combat ranges const ( DefaultMeleeRange = 5.0 // Default melee attack range DefaultSpellRange = 30.0 // Default spell casting range DefaultAggroRange = 25.0 // Default aggro acquisition range DefaultLeashRange = 100.0 // Default leash range before reset DefaultSocialRange = 15.0 // Range for social aggro ) // Hate system constants const ( MaxHateValue = 2000000000 // Maximum hate value MinHateValue = -MaxHateValue InitialHateValue = 1 // Starting hate for new targets HateDecayAmount = 1 // How much hate decays per interval HateDecayMinimum = 1 // Minimum hate before removal ) // Spell targeting types const ( SpellTargetSelf = iota SpellTargetSingle SpellTargetGroup SpellTargetRaid SpellTargetAOE SpellTargetPBAOE SpellTargetPet ) // Spell effect types const ( SpellEffectHeal = iota SpellEffectDamage SpellEffectBuff SpellEffectDebuff SpellEffectSummon SpellEffectTeleport SpellEffectResurrect ) // Damage types const ( DamageTypeSlashing = iota DamageTypeCrushing DamageTypePiercing DamageTypeHeat DamageTypeCold DamageTypeMagic DamageTypeMental DamageTypePoison DamageTypeDisease ) // Resist types const ( ResistElemental = iota ResistNoxious ResistArcane ResistPhysical ) // Timer intervals (in milliseconds) const ( DefaultTimerInterval = 1000 // 1 second FastTimerInterval = 100 // 100ms for high-frequency updates SlowTimerInterval = 5000 // 5 seconds for infrequent updates SpawnRangeUpdateInterval = 1000 // How often to update spawn ranges SpawnVisibilityInterval = 500 // How often to check spawn visibility CharsheetUpdateInterval = 30000 // How often to update character sheets ClientSaveInterval = 300000 // How often to save client data WeatherUpdateInterval = 60000 // How often to update weather LocationProximityInterval = 1000 // How often to check location proximity PlayerProximityInterval = 500 // How often to check player proximity TrackingUpdateInterval = 2000 // How often to update tracking WidgetUpdateInterval = 100 // How often to update widgets RespawnCheckInterval = 5000 // How often to check respawns DeadSpawnCleanupInterval = 30000 // How often to clean up dead spawns ScriptTimerCheckInterval = 100 // How often to check script timers ) // Packet opcodes and types const ( PacketTypeUpdateLoot = "UpdateLoot" PacketTypeLootResponse = "LootResponse" PacketTypeStoppedLooting = "StoppedLooting" PacketTypeSpawnUpdate = "SpawnUpdate" PacketTypeRemoveSpawn = "RemoveSpawn" PacketTypeAddSpawn = "AddSpawn" PacketTypeZoneInfo = "ZoneInfo" PacketTypeWeatherUpdate = "WeatherUpdate" PacketTypeTimeUpdate = "TimeUpdate" PacketTypeChatMessage = "ChatMessage" PacketTypeEmote = "Emote" PacketTypeAnimation = "Animation" ) // Chat channel types const ( ChatChannelSay = iota ChatChannelTell ChatChannelGroup ChatChannelRaid ChatChannelGuild ChatChannelBroadcast ChatChannelAnnouncement ChatChannelOOC ChatChannelYell ChatChannelAuction ) // Animation types const ( AnimationTypeStandard = iota AnimationTypeLooping AnimationTypeTriggered ) // Visual state types const ( VisualStateStun = iota VisualStateRoot VisualStateFear VisualStateMezz VisualStateStifle VisualStateInvisible VisualStateStealth ) // Emote types const ( EmoteTypeStandard = iota EmoteTypeTargeted EmoteTypeUntargeted ) // Tradeskill recipe difficulty levels const ( RecipeDifficultyTrivial = iota RecipeDifficultyEasy RecipeDifficultyMedium RecipeDifficultyHard RecipeDifficultyExpert ) // Harvest skill names const ( HarvestSkillMining = "Mining" HarvestSkillForesting = "Foresting" HarvestSkillFishing = "Fishing" HarvestSkillTrapping = "Trapping" HarvestSkillGathering = "Gathering" ) // Transport types const ( TransportTypeNormal = iota TransportTypeGuild TransportTypeBoat TransportTypeFlight TransportTypeTeleporter ) // Flight path states const ( FlightPathStateNone = iota FlightPathStateStarting FlightPathStateFlying FlightPathStateLanding FlightPathStateCompleted ) // Widget types const ( WidgetTypeDoor = iota WidgetTypeLift WidgetTypeTransporter WidgetTypeGeneric ) // Widget states const ( WidgetStateClosed = iota WidgetStateOpen WidgetStateMoving ) // Sign types const ( SignTypeGeneric = iota SignTypeZoneTransport ) // Ground spawn states const ( GroundSpawnStateAvailable = iota GroundSpawnStateHarvesting GroundSpawnStateDepeted GroundSpawnStateRespawning ) // Group loot methods const ( GroupLootMethodFFA = iota GroupLootMethodRoundRobin GroupLootMethodMasterLooter GroupLootMethodNeedGreed GroupLootMethodLotto ) // Default configuration values const ( DefaultMaxPlayers = 100 DefaultInstanceLockoutTime = 18000 // 5 hours in seconds DefaultInstanceReenterTime = 3600 // 1 hour in seconds DefaultInstanceResetTime = 259200 // 72 hours in seconds DefaultRespawnTime = 600 // 10 minutes in seconds DefaultSpawnDeleteTimer = 300 // 5 minutes in seconds DefaultWeatherFrequency = 600 // 10 minutes in seconds DefaultWeatherMinSeverity = 0.0 DefaultWeatherMaxSeverity = 1.0 DefaultWeatherChangeAmount = 0.1 DefaultWeatherDynamicOffset = 0.2 DefaultWeatherChangeChance = 50 // 50% chance ) // Error messages const ( ErrZoneNotFound = "zone not found" ErrZoneShuttingDown = "zone is shutting down" ErrZoneNotInitialized = "zone not initialized" ErrMapNotLoaded = "map not loaded" ErrPathfindingFailed = "pathfinding failed" ErrInvalidPosition = "invalid position" ErrSpawnNotFound = "spawn not found" ErrPlayerNotFound = "player not found" ErrClientNotFound = "client not found" ErrInvalidSpawnType = "invalid spawn type" ErrInvalidMovementCommand = "invalid movement command" ErrNoPathAvailable = "no path available" ErrTargetTooFar = "target too far away" ErrNotInRange = "not in range" ErrInvalidTarget = "invalid target" ErrCannotCast = "cannot cast spell" ErrInsufficientPower = "insufficient power" ErrSpellOnCooldown = "spell on cooldown" ErrInterrupted = "spell interrupted" ) // File extensions const ( MapFileExtension = ".map" RegionFileExtension = ".rgn" NavmeshFileExtension = ".nav" WaypointFileExtension = ".wpt" ) // Default file paths const ( DefaultMapsPath = "maps/" DefaultRegionsPath = "regions/" DefaultNavmeshPath = "navmesh/" DefaultWaypointsPath = "waypoints/" ) // Grid system constants const ( DefaultGridSize = 100.0 // Grid cell size in world units MaxGridID = 1000 // Maximum grid ID GridUpdateRadius = 2 // How many grid cells to update around player ) // Proximity system constants const ( MaxProximityDistance = 500.0 // Maximum proximity detection distance ProximityUpdateRadius = 250.0 // Radius for proximity updates LocationProximityRadius = 10.0 // Default radius for location proximity ) // Memory and performance constants const ( MaxSpawnsPerGrid = 100 // Maximum spawns per grid cell MaxClientsPerZone = 200 // Maximum clients per zone MaxTrackedSpawns = 500 // Maximum tracked spawns per client SpawnPoolSize = 1000 // Size of spawn object pool PacketBufferSize = 4096 // Size of packet buffers MaxConcurrentLoaders = 4 // Maximum concurrent map loaders ) // Version compatibility const ( MinSupportedClientVersion = 1 MaxSupportedClientVersion = 60114 DefaultClientVersion = 60114 ) // Database query limits const ( MaxSpawnLocationsPerQuery = 1000 MaxLootTablesPerQuery = 100 MaxNPCsPerQuery = 500 MaxObjectsPerQuery = 200 DatabaseQueryTimeout = 30 // seconds ) // Thread pool sizes const ( DefaultWorkerThreads = 4 IOWorkerThreads = 2 NetworkWorkerThreads = 2 DatabaseWorkerThreads = 2 ) // Cache sizes const ( SpawnCacheSize = 10000 PlayerCacheSize = 1000 ItemCacheSize = 50000 SpellCacheSize = 10000 QuestCacheSize = 5000 ) // Cleanup intervals const ( DeadSpawnCleanupTime = 300 // 5 minutes before dead spawn cleanup ExpiredTimersCleanup = 60 // 1 minute to clean expired timers InactiveClientCleanup = 3600 // 1 hour for inactive client cleanup MemoryCleanupInterval = 300 // 5 minutes for general memory cleanup ) // Language system constants const ( CommonLanguageID = 0 // Common tongue (understood by all) MaxLanguageSkill = 100 // Maximum language skill value DefaultLanguageSkill = 25 // Default language skill for racial languages ) // Quest system constants const ( MaxActiveQuests = 75 // Maximum active quests per player MaxCompletedQuests = 1000 // Maximum completed quests to track QuestUpdateRadius = 50.0 // Radius for quest update notifications ) // PvP system constants const ( PvPSafeZoneRadius = 100.0 // Radius around safe zones where PvP is disabled PvPCombatTimeout = 30 // Seconds before PvP combat timeout PvPFlagDuration = 300 // Duration of PvP flag in seconds ) // Housing system constants const ( MaxHouseItems = 800 // Maximum items per house HouseMaintenanceDays = 30 // Days before house maintenance due MaxHouseSize = 100.0 // Maximum house dimensions ) // Achievement system constants const ( MaxAchievementPoints = 50000 // Maximum achievement points AchievementUpdateRadius = 100.0 // Radius for achievement notifications )