diff --git a/main.go b/main.go index 2f47a24..bb5ed3a 100644 --- a/main.go +++ b/main.go @@ -27,35 +27,97 @@ func main() { log.SetOutput(io.Discard) } - bosses, err := models.DB.GetBosses(229) + // main loop + dungeons, err := models.DB.GetDungeons(-1) if err != nil { - log.Fatal("failed to get bosses") + log.Panicf("failed to get dungeons for expansion %v error: %v", 0, err) } - for _, boss := range bosses { + for _, dungeon := range dungeons { + log.Printf("+++++Dungeon: %s ID: %v level %v \n", dungeon.Name, dungeon.Id, dungeon.Level) - items, err := models.DB.GetBossLoot(boss.Entry) - log.Printf("Boss: %s Entry: %v has %v items\n", boss.Name, boss.Entry, len(items)) + bosses, err := models.DB.GetBosses(dungeon.Id) if err != nil { - log.Fatal(err) + log.Fatal("failed to get bosses") } - for _, item := range items { + scaleValue := 305 - log.Printf("\nItem %v Entry: %v ItemLevel %v \n", item.Name, item.Entry, *item.ItemLevel) + if dungeon.Level == 60 { + scaleValue = 315 + } - _, error := item.ScaleItem(320, 3) - fmt.Print(ItemToSql(item, 80, 3)) - if error != nil { - log.Printf("Failed to scale item: %v", error) - } + if dungeon.ExpansionId == 1 && dungeon.Level <= 70 { + scaleValue = 308 + } - // stat, value, err := item.GetPrimaryStat() + if dungeon.ExpansionId == 1 && dungeon.Level == 70 { + scaleValue = 315 + + } + + if dungeon.ExpansionId == 2 && dungeon.Level <= 80 { + scaleValue = 309 + } + + if dungeon.ExpansionId == 2 && dungeon.Level == 80 { + scaleValue = 320 + } + + 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, 4) + 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 scaleValue >= 315 { + fmt.Print(ItemToSql(item, 81, 3)) + } else { + fmt.Print(ItemToSql(item, 80, 3)) + } + } } + + 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, 3) + 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 scaleValue >= 315 { + fmt.Print(ItemToSql(item, 81, 3)) + } else { + fmt.Print(ItemToSql(item, 80, 3)) + } + + } + log.Printf("++++++++++ AdditionalLoot Count: %v\n", len(items2)) } defer models.DB.Close()