Prefix,Suffix,LevelReq Socketed items on bases, bodyloc, Merc equipment (#74)
* Prefix,Suffix, Socketed with base, bodyloc, Merc equipment Will add better description later: Item that has socketed items now display their linked runes/jewels/gems in accurate order Rare prefix, rare suffix id Magic prefix1,2,3 magic suffix1,2,3 Prefix1 also used to tell wich runeword it is Spirit 20635, cta 20519 , infinity 20566 see : getlocalestring.txt Mercenary equipment now displaying in inventory list . Also has custom location : mercenary instead of equipped Bodyloc : // Body locations LocNone LocationType = "none" LocHead LocationType = "head" LocNeck LocationType = "neck" LocTorso LocationType = "torso" LocLeftArm LocationType = "left_arm" LocRightArm LocationType = "right_arm" LocLeftRing LocationType = "left_ring" LocRightRing LocationType = "right_ring" LocBelt LocationType = "belt" LocFeet LocationType = "feet" LocGloves LocationType = "gloves" LocLeftArmSecondary LocationType = "left_arm_secondary" LocRightArmSecondary LocationType = "right_arm_secondary" Note that if you begin game on secondary slot it will be left_arm then primary will be left_arm_secondary (inversed): With pr 62 (activeweaponslot) we will be able to solve this potential issue. * small optimization * Socketed items to base from pointer new helper functions. AutoAffix offset. * remove helpers fnc, flag isEquipped to HasBeenEquipped * Runewords names mapped * helper function not needed * Optimization * adjust pre-allocations * readd removed itemloc comment * Addex prefix/suffix to rules .nip new structure: [Type], [Quality],[Class], [Name], [Flag], [Color], [Prefix], [Suffix] # Stats Exemple : [name] == ring && [quality] == rare && [suffix] == 174 # Any magic ring with suffix 'of The Apprentice' ( 10 faster cast rate) Will be useful for trophy items with fool/cruel [prefix] == 1416 [prefix] == 1273 * LevelReq + Affixes mapping rare/magic/base/runewords. Nip parser LevelReq * Unique and set items mapping + LevelReq
This commit is contained in:
@@ -33,7 +33,15 @@ func generateFile(sourcePath, destinationPath, tpl string) error {
|
||||
fileScanner.Split(bufio.ScanLines)
|
||||
|
||||
headers := make([]string, 0)
|
||||
fileContent := make([]map[string]string, 0)
|
||||
fileContent := make(map[int]map[string]string)
|
||||
currentID := 0
|
||||
|
||||
// Determine if this is an affix file that should include empty rows
|
||||
isAffixFile := strings.Contains(sourcePath, "rareprefix") ||
|
||||
strings.Contains(sourcePath, "raresuffix") ||
|
||||
strings.Contains(sourcePath, "magicprefix") ||
|
||||
strings.Contains(sourcePath, "magicsuffix")
|
||||
|
||||
for fileScanner.Scan() {
|
||||
fields := strings.Split(fileScanner.Text(), "\t")
|
||||
if len(headers) == 0 {
|
||||
@@ -41,24 +49,68 @@ func generateFile(sourcePath, destinationPath, tpl string) error {
|
||||
continue
|
||||
}
|
||||
|
||||
// Ignore if Code is empty
|
||||
if fields[1] == "" {
|
||||
continue
|
||||
}
|
||||
// Create line map
|
||||
lineMap := make(map[string]string)
|
||||
for i, header := range headers {
|
||||
lineMap[header] = fields[i]
|
||||
if i < len(fields) {
|
||||
lineMap[header] = fields[i]
|
||||
} else {
|
||||
lineMap[header] = ""
|
||||
}
|
||||
}
|
||||
fileContent = append(fileContent, lineMap)
|
||||
|
||||
// Skip empty entries for non-affix files
|
||||
if !isAffixFile && fields[1] == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
// Store in map with current ID
|
||||
fileContent[currentID] = lineMap
|
||||
currentID++
|
||||
}
|
||||
|
||||
if len(fileContent) == 0 {
|
||||
return fmt.Errorf("error: no content found for file %s", sourcePath)
|
||||
}
|
||||
|
||||
t := template.Must(template.New("tpl").Funcs(template.FuncMap{
|
||||
funcMap := template.FuncMap{
|
||||
"replace": strings.ReplaceAll,
|
||||
}).Parse(tpl))
|
||||
"iterate": func(count int) []int {
|
||||
var items []int
|
||||
for i := 0; i < count; i++ {
|
||||
items = append(items, i)
|
||||
}
|
||||
return items
|
||||
},
|
||||
"add": func(a, b int) int {
|
||||
return a + b
|
||||
},
|
||||
"slice": func() []string {
|
||||
return make([]string, 0)
|
||||
},
|
||||
"append": func(slice []string, items ...string) []string {
|
||||
return append(slice, items...)
|
||||
},
|
||||
"default": func(value, defaultValue string) string {
|
||||
if value == "" {
|
||||
return defaultValue
|
||||
}
|
||||
return value
|
||||
},
|
||||
"contains": strings.Contains,
|
||||
"dict": func() map[string][]string {
|
||||
return make(map[string][]string)
|
||||
},
|
||||
"set": func(m map[string][]string, key string, value []string) map[string][]string {
|
||||
m[key] = value
|
||||
return m
|
||||
},
|
||||
"list": func() []string {
|
||||
return make([]string, 0)
|
||||
},
|
||||
}
|
||||
|
||||
t := template.Must(template.New("tpl").Funcs(funcMap).Parse(tpl))
|
||||
|
||||
file, err := os.Create(destinationPath)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user