package d2records import ( "fmt" "log" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt" ) func monsterPropertiesLoader(r *RecordManager, d *d2txt.DataDictionary) error { records := make(MonsterProperties) for d.Next() { record := &MonPropRecord{ ID: d.String("Id"), Properties: struct { Normal [numMonProps]*MonProp Nightmare [numMonProps]*MonProp Hell [numMonProps]*MonProp }{ [numMonProps]*MonProp{}, [numMonProps]*MonProp{}, [numMonProps]*MonProp{}, }, } for idx := 1; idx <= numMonProps; idx++ { record.Properties.Normal[idx-1] = &MonProp{ Code: d.String(fmt.Sprintf(fmtProp, idx, fmtNormal)), Param: d.String(fmt.Sprintf(fmtPar, idx, fmtNormal)), Chance: d.Number(fmt.Sprintf(fmtChance, idx, fmtNormal)), Min: d.Number(fmt.Sprintf(fmtMin, idx, fmtNormal)), Max: d.Number(fmt.Sprintf(fmtMax, idx, fmtNormal)), } record.Properties.Nightmare[idx-1] = &MonProp{ Code: d.String(fmt.Sprintf(fmtProp, idx, fmtNightmare)), Param: d.String(fmt.Sprintf(fmtPar, idx, fmtNightmare)), Chance: d.Number(fmt.Sprintf(fmtChance, idx, fmtNightmare)), Min: d.Number(fmt.Sprintf(fmtMin, idx, fmtNightmare)), Max: d.Number(fmt.Sprintf(fmtMax, idx, fmtNightmare)), } record.Properties.Hell[idx-1] = &MonProp{ Code: d.String(fmt.Sprintf(fmtProp, idx, fmtHell)), Param: d.String(fmt.Sprintf(fmtPar, idx, fmtHell)), Chance: d.Number(fmt.Sprintf(fmtChance, idx, fmtHell)), Min: d.Number(fmt.Sprintf(fmtMin, idx, fmtHell)), Max: d.Number(fmt.Sprintf(fmtMax, idx, fmtHell)), } } records[record.ID] = record } if d.Err != nil { return d.Err } log.Printf("Loaded %d MonProp records", len(records)) r.Monster.Props = records return nil }