mirror of
https://github.com/araxiaonline/wow-item-generator.git
synced 2026-06-13 03:02:22 -04:00
Added scaleStat v3
This commit is contained in:
@@ -93,48 +93,48 @@ var StatModifiers = map[int]float64{
|
||||
}
|
||||
|
||||
var ScalingFactor = map[int]float64{
|
||||
0: 1.5, // ITEM_MOD_MANA
|
||||
1: 2.0, // ITEM_MOD_HEALTH
|
||||
3: 2.0, // ITEM_MOD_AGILITY
|
||||
4: 2.0, // ITEM_MOD_STRENGTH
|
||||
5: 2.0, // ITEM_MOD_INTELLECT
|
||||
6: 1.0, // ITEM_MOD_SPIRIT
|
||||
7: 2.5, // ITEM_MOD_STAMINA
|
||||
12: 1.5, // ITEM_MOD_DEFENSE_SKILL_RATING
|
||||
13: 1.5, // ITEM_MOD_DODGE_RATING
|
||||
14: 1.25, // ITEM_MOD_PARRY_RATING
|
||||
15: 1.25, // ITEM_MOD_BLOCK_RATING
|
||||
16: 1.25, // ITEM_MOD_HIT_MELEE_RATING
|
||||
17: 1.25, // ITEM_MOD_HIT_RANGED_RATING
|
||||
18: 1.25, // ITEM_MOD_HIT_SPELL_RATING
|
||||
19: 1.5, // ITEM_MOD_CRIT_MELEE_RATING
|
||||
20: 1.5, // ITEM_MOD_CRIT_RANGED_RATING
|
||||
21: 1.0, // ITEM_MOD_CRIT_SPELL_RATING
|
||||
22: 1.0, // ITEM_MOD_HIT_TAKEN_MELEE_RATING
|
||||
23: 1.0, // ITEM_MOD_HIT_TAKEN_RANGED_RATING
|
||||
24: 1.0, // ITEM_MOD_HIT_TAKEN_SPELL_RATING
|
||||
25: 1.0, // ITEM_MOD_CRIT_TAKEN_MELEE_RATING
|
||||
26: 1.0, // ITEM_MOD_CRIT_TAKEN_RANGED_RATING
|
||||
27: 1.0, // ITEM_MOD_CRIT_TAKEN_SPELL_RATING
|
||||
28: 1.5, // ITEM_MOD_HASTE_MELEE_RATING
|
||||
29: 1.5, // ITEM_MOD_HASTE_RANGED_RATING
|
||||
30: 1.5, // ITEM_MOD_HASTE_SPELL_RATING
|
||||
31: 1.25, // ITEM_MOD_HIT_RATING
|
||||
32: 1.5, // ITEM_MOD_CRIT_RATING
|
||||
33: 1.0, // ITEM_MOD_HIT_TAKEN_RATING
|
||||
34: 1.0, // ITEM_MOD_CRIT_TAKEN_RATING
|
||||
35: 1.0, // ITEM_MOD_RESILIENCE_RATING
|
||||
36: 1.5, // ITEM_MOD_HASTE_RATING
|
||||
37: 1.25, // ITEM_MOD_EXPERTISE_RATING
|
||||
38: 3.5, // ITEM_MOD_ATTACK_POWER
|
||||
39: 3.5, // ITEM_MOD_RANGED_ATTACK_POWER
|
||||
40: 3.5, // ITEM_MOD_FERAL_ATTACK_POWER (not used as of 3.3)
|
||||
41: 3.5, // ITEM_MOD_SPELL_HEALING_DONE
|
||||
42: 3.5, // ITEM_MOD_SPELL_DAMAGE_DONE
|
||||
43: 1.5, // ITEM_MOD_MANA_REGENERATION
|
||||
44: 1.5, // ITEM_MOD_ARMOR_PENETRATION_RATING
|
||||
45: 3.75, // ITEM_MOD_SPELL_POWER
|
||||
46: 1.8, // ITEM_MOD_HEALTH_REGEN
|
||||
47: 2.0, // ITEM_MOD_SPELL_PENETRATION
|
||||
48: 1.5, // ITEM_MOD_BLOCK_VALUE
|
||||
0: 1.1, // ITEM_MOD_MANA
|
||||
1: 1.1, // ITEM_MOD_HEALTH
|
||||
3: 1.1, // ITEM_MOD_AGILITY
|
||||
4: 1.1, // ITEM_MOD_STRENGTH
|
||||
5: 1.1, // ITEM_MOD_INTELLECT
|
||||
6: 1.1, // ITEM_MOD_SPIRIT
|
||||
7: 2.0, // ITEM_MOD_STAMINA
|
||||
12: 1.1, // ITEM_MOD_DEFENSE_SKILL_RATING
|
||||
13: 1.1, // ITEM_MOD_DODGE_RATING
|
||||
14: 1.1, // ITEM_MOD_PARRY_RATING
|
||||
15: 1.1, // ITEM_MOD_BLOCK_RATING
|
||||
16: 1.1, // ITEM_MOD_HIT_MELEE_RATING
|
||||
17: 1.1, // ITEM_MOD_HIT_RANGED_RATING
|
||||
18: 1.1, // ITEM_MOD_HIT_SPELL_RATING
|
||||
19: 1.1, // ITEM_MOD_CRIT_MELEE_RATING
|
||||
20: 1.1, // ITEM_MOD_CRIT_RANGED_RATING
|
||||
21: 1.1, // ITEM_MOD_CRIT_SPELL_RATING
|
||||
22: 1.1, // ITEM_MOD_HIT_TAKEN_MELEE_RATING
|
||||
23: 1.1, // ITEM_MOD_HIT_TAKEN_RANGED_RATING
|
||||
24: 1.1, // ITEM_MOD_HIT_TAKEN_SPELL_RATING
|
||||
25: 1.1, // ITEM_MOD_CRIT_TAKEN_MELEE_RATING
|
||||
26: 1.1, // ITEM_MOD_CRIT_TAKEN_RANGED_RATING
|
||||
27: 1.1, // ITEM_MOD_CRIT_TAKEN_SPELL_RATING
|
||||
28: 1.1, // ITEM_MOD_HASTE_MELEE_RATING
|
||||
29: 1.1, // ITEM_MOD_HASTE_RANGED_RATING
|
||||
30: 1.1, // ITEM_MOD_HASTE_SPELL_RATING
|
||||
31: 1.1, // ITEM_MOD_HIT_RATING
|
||||
32: 1.1, // ITEM_MOD_CRIT_RATING
|
||||
33: 1.1, // ITEM_MOD_HIT_TAKEN_RATING
|
||||
34: 1.1, // ITEM_MOD_CRIT_TAKEN_RATING
|
||||
35: 1.1, // ITEM_MOD_RESILIENCE_RATING
|
||||
36: 1.1, // ITEM_MOD_HASTE_RATING
|
||||
37: 1.1, // ITEM_MOD_EXPERTISE_RATING
|
||||
38: 1.5, // ITEM_MOD_ATTACK_POWER
|
||||
39: 1.1, // ITEM_MOD_RANGED_ATTACK_POWER
|
||||
40: 1.1, // ITEM_MOD_FERAL_ATTACK_POWER (not used as of 3.3)
|
||||
41: 1.7, // ITEM_MOD_SPELL_HEALING_DONE
|
||||
42: 1.7, // ITEM_MOD_SPELL_DAMAGE_DONE
|
||||
43: 1.5, // ITEM_MOD_MANA_REGENERATION
|
||||
44: 1.0, // ITEM_MOD_ARMOR_PENETRATION_RATING
|
||||
45: 1.7, // ITEM_MOD_SPELL_POWER
|
||||
46: 1.1, // ITEM_MOD_HEALTH_REGEN
|
||||
47: 1.0, // ITEM_MOD_SPELL_PENETRATION
|
||||
48: 1.1, // ITEM_MOD_BLOCK_VALUE
|
||||
}
|
||||
|
||||
@@ -467,15 +467,15 @@ func (item *Item) ScaleItem(itemLevel int, itemQuality int) (bool, error) {
|
||||
origValue := stat.Value
|
||||
|
||||
scaleParams := StatScaleParams{
|
||||
ItemLevel: *item.ItemLevel,
|
||||
NewItemLevel: fromItemLevel,
|
||||
ItemLevel: fromItemLevel,
|
||||
NewItemLevel: *item.ItemLevel,
|
||||
Quality: *item.Quality,
|
||||
ItemType: *item.InventoryType,
|
||||
StatTypeId: statId,
|
||||
StatValue: stat.Value,
|
||||
}
|
||||
|
||||
stat.Value = scaleStatv2(scaleParams)
|
||||
stat.Value = scaleStatv3(scaleParams)
|
||||
// stat.Value = scaleStatv2(itemLevel, *item.InventoryType, *item.Quality, stat.Percent, config.StatModifiers[statId])
|
||||
|
||||
log.Printf(">>>>>> Scaled : StatId: %v Type: %s Orig: %v - New Value: %v Percent: %v", statId, stat.Type, origValue, stat.Value, stat.Percent)
|
||||
@@ -698,12 +698,37 @@ func scaleStat(itemLevel int, itemType int, itemQuality int, percOfStat float64,
|
||||
|
||||
func scaleStatv2(scaleParams StatScaleParams) int {
|
||||
modifier := config.QualityModifiers[scaleParams.Quality] * config.ScalingFactor[scaleParams.StatTypeId]
|
||||
scaledValue := float64(scaleParams.StatValue) * float64(scaleParams.NewItemLevel/scaleParams.ItemLevel) * modifier
|
||||
modifier *= float64(scaleParams.NewItemLevel) / float64(scaleParams.ItemLevel)
|
||||
scaledValue := float64(scaleParams.StatValue) * modifier // * config.InvTypeModifiers[scaleParams.ItemType]
|
||||
|
||||
log.Printf("------- scaledValue: %v modifier: %v", scaledValue, modifier)
|
||||
return int(math.Ceil(scaledValue))
|
||||
}
|
||||
|
||||
func scaleStatv3(scaleParams StatScaleParams) int {
|
||||
// Calculate the quality and inventory type modifiers
|
||||
qualityModifier := config.QualityModifiers[scaleParams.Quality]
|
||||
// invTypeModifier := config.InvTypeModifiers[scaleParams.ItemType]
|
||||
|
||||
// Calculate the base scaling factor
|
||||
baseScalingFactor := config.ScalingFactor[scaleParams.StatTypeId]
|
||||
|
||||
// Calculate the level ratio (new item level / original item level)
|
||||
levelRatio := float64(scaleParams.NewItemLevel) / float64(scaleParams.ItemLevel)
|
||||
|
||||
// Apply the comprehensive scaling formula
|
||||
scaledValue := float64(scaleParams.StatValue) *
|
||||
math.Pow(levelRatio, baseScalingFactor) *
|
||||
qualityModifier
|
||||
|
||||
// // Log the details for debugging
|
||||
// log.Printf("------- scaledValue: %v, levelRatio: %v, qualityModifier: %v, baseScalingFactor: %v",
|
||||
// scaledValue, levelRatio, qualityModifier, baseScalingFactor)
|
||||
|
||||
// Return the scaled value, rounded up
|
||||
return int(math.Ceil(scaledValue))
|
||||
}
|
||||
|
||||
func ItemToSql(item Item, reqLevel int, difficulty int) string {
|
||||
|
||||
entryBump := 20000000
|
||||
|
||||
2
main.go
2
main.go
@@ -105,7 +105,7 @@ func main() {
|
||||
|
||||
item.ApplyStats(items.ItemFromDbItem(highLevelItem))
|
||||
|
||||
item.ScaleItem(*itemLevel, 4)
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user