// Package achievements provides a complete achievement system for EQ2Emulator servers. // // Features: // - Achievement definitions with requirements and rewards // - Thread-safe master achievement list for server-wide management // - Player-specific achievement tracking and progress // - Database operations with both SQLite and MySQL support // // Basic Usage: // // // Create database connection // db, _ := database.NewSQLite("world.db") // // db, _ := database.NewMySQL("user:pass@tcp(host:port)/dbname") // // // Create new achievement // achievement := achievements.New(db) // achievement.AchievementID = 1001 // achievement.Title = "Monster Slayer" // achievement.Category = "Combat" // achievement.PointValue = 50 // // // Add requirements and rewards // achievement.AddRequirement("kill_monsters", 100) // achievement.AddReward("experience:5000") // // // Save to database (insert or update automatically) // achievement.Save() // // // Load achievement by ID // loaded, _ := achievements.Load(db, 1001) // // // Update and save // loaded.Title = "Master Monster Slayer" // loaded.Save() // // // Delete achievement // loaded.Delete() // // Master List Management: // // // Create master list for server-wide achievement management // masterList := achievements.NewMasterList() // // // Load all achievements from database // allAchievements, _ := achievements.LoadAll(db) // for _, ach := range allAchievements { // masterList.AddAchievement(ach.ToLegacy()) // } // // // Get achievements by category // combatAchievements := masterList.GetAchievementsByCategory("Combat") // // Player Progress Management: // // // Player achievement management // playerMgr := achievements.NewPlayerManager() // achievements.LoadPlayerAchievements(db, playerID, playerMgr.Achievements) // achievements.LoadPlayerAchievementUpdates(db, playerID, playerMgr.Updates) package achievements