Files
wow-item-generator/main.go

149 lines
4.2 KiB
Go

package main
import (
"flag"
"io"
"log"
"os"
_ "github.com/go-sql-driver/mysql"
"github.com/joho/godotenv"
)
func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
godotenv.Load()
// database.models.Connect()
debug := flag.Bool("debug", false, "Enable verbose logging inside generator")
// itemLevel := flag.Int("ilvl", 305, "Specify the item level to start scaling from, expansion and difficulty modifiers scale up.")
// difficulty := flag.Int("difficulty", 3, "set the difficulty of the dungeon, defaults to 3 (mythic) 4 (legendary) 5 (ascendant)")
// levelUp := flag.Bool("levelUp", false, "Boss items require higher +1 level to equip, defaults to false")
// baselevel := flag.Int("baselevel", 80, "set the base level for items to be used, defaults to 80 this is required for levelUp flag")
flag.Parse()
if *debug {
log.SetOutput(os.Stdout)
} else {
log.SetOutput(io.Discard)
}
// if difficulty == nil || *difficulty < 3 || *difficulty > 5 {
// log.Fatal("difficulty must be between 3-5")
// os.Exit(1)
// }
// // main loop
// dungeons, err := models.DB.GetDungeons(-1)
// if err != nil {
// log.Panicf("failed to get dungeons for expansion %v error: %v", 0, err)
// }
// for _, dungeon := range dungeons {
// log.Printf("+++++Dungeon: %s ID: %v level %v \n", dungeon.Name, dungeon.Id, dungeon.Level)
// bosses, err := models.DB.GetBosses(dungeon.Id)
// if err != nil {
// log.Fatal("failed to get bosses")
// }
// // Determine the scale value of the item based on expansion and dungeon level
// scaleValue := *itemLevel
// endGameDung := false
// if dungeon.Level == 60 {
// scaleValue += 10
// endGameDung = true
// }
// if dungeon.ExpansionId == 1 && dungeon.Level <= 70 {
// scaleValue += 3
// }
// if dungeon.ExpansionId == 1 && dungeon.Level == 70 {
// scaleValue += 12
// endGameDung = true
// }
// if dungeon.ExpansionId == 2 && dungeon.Level <= 80 {
// scaleValue += 4
// }
// if dungeon.ExpansionId == 2 && dungeon.Level == 80 {
// scaleValue += 15
// endGameDung = true
// }
// // Apply difficuly modifiers for gear scale
// // mythic: Bosses-Epic Gear (Purple) drops and Rare (Blue) for random drops (BOE)
// // legendary: Bosses-Epic Gear (Purple) drops and Epic (Purple) for random drops (BOE)
// // ascendant: Bosses-Legendary Gear (Yellow) drops and Epic (Purple) for random drops (BOE)
// var bossQuality int
// var boeQuality int
// if *difficulty == 4 {
// bossQuality = 4
// boeQuality = 4
// } else if *difficulty == 5 {
// bossQuality = 5
// boeQuality = 4
// } else {
// bossQuality = 4
// boeQuality = 3
// }
// for _, boss := range bosses {
// items, err := models.DB.GetBossLoot(boss.Entry)
// log.Printf("++++++++++ Boss: %s Entry: %v has %v items\n", boss.Name, boss.Entry, len(items))
// if err != nil {
// log.Fatal(err)
// continue
// }
// for _, item := range items {
// _, error := item.ScaleItem(scaleValue, bossQuality)
// if error != nil {
// log.Printf("Failed to scale item: %v", error)
// continue
// }
// fmt.Printf("\n-- Item %v Entry: %v ItemLevel %v \n", item.Name, item.Entry, *item.ItemLevel)
// if *levelUp && endGameDung {
// fmt.Print(ItemToSql(item, *baselevel+1, *difficulty))
// } else {
// fmt.Print(ItemToSql(item, *baselevel, *difficulty))
// }
// }
// }
// items2, err := models.DB.GetAddlDungeonDrops(dungeon.Id)
// if err != nil {
// log.Printf("failed to get additional loot for dungeon %v - err: %v", dungeon.Id, err)
// }
// for _, item := range items2 {
// // reduce item level of dungeon random drops since they are not boss fights
// adjScaleValue := scaleValue - 4
// _, error := item.ScaleItem(adjScaleValue, boeQuality)
// if error != nil {
// log.Printf("Failed to scale item: %v", error)
// continue
// }
// fmt.Printf("\n-- Item %v Entry: %v ItemLevel %v \n", item.Name, item.Entry, *item.ItemLevel)
// fmt.Print(ItemToSql(item, *baselevel, *difficulty))
// }
// log.Printf("++++++++++ Additional Count: %v\n", len(items2))
// }
// defer models.DB.Close()
}