From a2f939da2fe1691bee83a0d85adf7f23f258216e Mon Sep 17 00:00:00 2001 From: Ben Carter Date: Sun, 25 Aug 2024 00:58:34 -0400 Subject: [PATCH] scaling is working now and main is scaling first 600 items --- data/items.db | Bin 438272 -> 503808 bytes internal/db/mysql/creatures.go | 2 +- internal/items/item_test.go | 2 +- internal/items/items.go | 25 +++++++++++++++++++------ main.go | 13 ++++++++----- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/data/items.db b/data/items.db index 1d9d1c81a257842feae5c364f3e29594fff3a441..1672a19754c7bf481493e86be60e922d47770642 100644 GIT binary patch delta 61970 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 delta 88 zcmZp8AlL9fYJ!xI_#_4fhHM~)0mg|sMj%nWvQA$99}G- 2 and it.StatsCount > 0 + WHERE rlt.Entry = ? and it.Quality > 2 ` err = db.Select(&refItems, sql, ref) if err != nil { diff --git a/internal/items/item_test.go b/internal/items/item_test.go index 6262e57..ff8c6f5 100644 --- a/internal/items/item_test.go +++ b/internal/items/item_test.go @@ -380,7 +380,7 @@ func TestScaleDPS(t *testing.T) { // Seed the random number generator for consistent test results rand.Seed(1) - gotDPS, err := tt.item.ScaleDPS(tt.level) + gotDPS, err := tt.item.ScaleDPS(tt.level, 100) if (err != nil) != tt.expectError { t.Errorf("ScaleDPS() error = %v, expectError %v", err, tt.expectError) return diff --git a/internal/items/items.go b/internal/items/items.go index 6911967..5df40c7 100644 --- a/internal/items/items.go +++ b/internal/items/items.go @@ -200,12 +200,13 @@ func (item Item) GetDPS() (float64, error) { return 0, fmt.Errorf("delay is not set") } - dps := math.Round((float64(*item.MinDmg1+*item.MaxDmg1)/2.0)/float64(*item.Delay/1000)*100) / 100 + dps := math.Round(((float64(*item.MinDmg1)+float64(*item.MaxDmg1))/2.0)/(float64(*item.Delay)/1000.0)*100) / 100 + return dps, nil } // Scales and items dps damage numbers based on a desired item level. -func (item *Item) ScaleDPS(level int) (float64, error) { +func (item *Item) ScaleDPS(oldLevel, level int) (float64, error) { if item.ItemLevel == nil { return 0, fmt.Errorf("ItemLevel is not set") } @@ -220,13 +221,18 @@ func (item *Item) ScaleDPS(level int) (float64, error) { return 0.0, err } - dps := modifier * float64(level) + scalingFactor := math.Pow(float64(level)/float64(oldLevel), 1.1) + + dps := modifier * float64(level) * scalingFactor adjDps := (dps * (*item.Delay / 1000) / 100) //(((Y8*Y4)/100))*((100 - Y5)) Forumula from Weapon Item Genertor - minimum := adjDps * float64(100-(rand.IntN(17)+20)) + minimum := adjDps * float64(100-(rand.IntN(25)+22)) maximum := adjDps * float64(100+(rand.IntN(25)+28)) + minimum = math.Ceil(minimum) + maximum = math.Ceil(maximum) + // If the weapon has secondary damage, scale that as well based on the ratio of the primary damage if *item.MinDmg2 != 0 && *item.MaxDmg2 != 0 { ratioMin := float64(*item.MinDmg2) / float64(*item.MinDmg1) @@ -505,7 +511,7 @@ func (item *Item) ScaleItem(itemLevel int, itemQuality int) (bool, error) { log.Printf("Failed to get DPS: %v", err) } - dps, err := item.ScaleDPS(itemLevel) + dps, err := item.ScaleDPS(fromItemLevel, itemLevel) if err != nil { log.Printf("Failed to scale DPS: %v", err) return false, err @@ -737,12 +743,18 @@ func scaleStatv3(scaleParams StatScaleParams) int { func ItemToSql(item Item, reqLevel int, difficulty int) string { + var name string + entryBump := 20000000 spellBump := 30000000 + name = "Mythic " + item.Name + if difficulty == 4 { entryBump = 21000000 + name = "Legendary " + item.Name } if difficulty == 5 { + name = "Godlike " + item.Name entryBump = 22000000 } @@ -816,6 +828,7 @@ func ItemToSql(item Item, reqLevel int, difficulty int) string { UPDATE acore_world.item_template SET Quality = %v, + name = '%s', ItemLevel = %v, RequiredLevel = %v, dmg_min1 = %v, @@ -859,7 +872,7 @@ func ItemToSql(item Item, reqLevel int, difficulty int) string { SellPrice = FLOOR(100000 + (RAND() * 400001)), Armor = %v WHERE entry = %v; - `, *item.Quality, *item.ItemLevel, reqLevel, *item.MinDmg1, *item.MaxDmg1, *item.MinDmg2, *item.MaxDmg2, *item.StatsCount, + `, *item.Quality, name, *item.ItemLevel, reqLevel, *item.MinDmg1, *item.MaxDmg1, *item.MinDmg2, *item.MaxDmg2, *item.StatsCount, *item.StatType1, *item.StatValue1, *item.StatType2, *item.StatValue2, *item.StatType3, *item.StatValue3, *item.StatType4, *item.StatValue4, *item.StatType5, *item.StatValue5, *item.StatType6, *item.StatValue6, *item.StatType7, *item.StatValue7, *item.StatType8, *item.StatValue8, *item.StatType9, *item.StatValue9, *item.StatType10, *item.StatValue10, *item.SpellId1, *item.SpellId2, *item.SpellId3, *item.SocketColor1, *item.SocketContent1, diff --git a/main.go b/main.go index 98c77b5..c9fd0b1 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "flag" + "fmt" "io" "log" "os" @@ -100,16 +101,18 @@ func main() { } // Print all the status for the item that was copied - log.Printf("Item Name: %v Stat1: %v Stat2: %v Stat3: %v Stat4: %v Stat5: %v Stat6: %v Stat7: %v Stat8: %v \n", - item.Entry, *item.StatValue1, *item.StatValue2, *item.StatValue3, *item.StatValue4, *item.StatValue5, *item.StatValue6, *item.StatValue7, *item.StatValue8) + // log.Printf("Item Name: %v Stat1: %v Stat2: %v Stat3: %v Stat4: %v Stat5: %v Stat6: %v Stat7: %v Stat8: %v \n", + // item.Entry, *item.StatValue1, *item.StatValue2, *item.StatValue3, *item.StatValue4, *item.StatValue5, *item.StatValue6, *item.StatValue7, *item.StatValue8) item.ApplyStats(items.ItemFromDbItem(highLevelItem)) item.ScaleItem(*itemLevel, 3) - log.Printf("Item Name: %v Stat1: %v Stat2: %v Stat3: %v Stat4: %v Stat5: %v Stat6: %v Stat7: %v Stat8: %v \n", - item.Name, *item.StatValue1, *item.StatValue2, *item.StatValue3, *item.StatValue4, *item.StatValue5, *item.StatValue6, *item.StatValue7, *item.StatValue8) + // log.Printf("Item Name: %v Stat1: %v Stat2: %v Stat3: %v Stat4: %v Stat5: %v Stat6: %v Stat7: %v Stat8: %v \n", + // item.Name, *item.StatValue1, *item.StatValue2, *item.StatValue3, *item.StatValue4, *item.StatValue5, *item.StatValue6, *item.StatValue7, *item.StatValue8) - if itr > 100 { + fmt.Print(items.ItemToSql(item, 80, 3)) + + if itr > 600 { break } }