mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-19 19:06:45 -05:00
D2data treasure class (#631)
* added loader for TreasureClassEx.txt * fix lint error
This commit is contained in:
parent
460e821a5e
commit
0018044c83
@ -245,6 +245,7 @@ func (a *App) loadDataDict() error {
|
|||||||
{d2resource.Sets, d2datadict.LoadSets},
|
{d2resource.Sets, d2datadict.LoadSets},
|
||||||
{d2resource.SetItems, d2datadict.LoadSetItems},
|
{d2resource.SetItems, d2datadict.LoadSetItems},
|
||||||
{d2resource.AutoMagic, d2datadict.LoadAutoMagicRecords},
|
{d2resource.AutoMagic, d2datadict.LoadAutoMagicRecords},
|
||||||
|
{d2resource.TreasureClass, d2datadict.LoadTreasureClassRecords},
|
||||||
}
|
}
|
||||||
|
|
||||||
d2datadict.InitObjectRecords()
|
d2datadict.InitObjectRecords()
|
||||||
|
91
d2common/d2data/d2datadict/treasure_class.go
Normal file
91
d2common/d2data/d2datadict/treasure_class.go
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
package d2datadict
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/OpenDiablo2/OpenDiablo2/d2common"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
numTreasures = 10
|
||||||
|
treasureItemFmt = "Item%d"
|
||||||
|
treasureProbFmt = "Prob%d"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TreasureClassRecord represents a rule for item drops in diablo 2
|
||||||
|
type TreasureClassRecord struct {
|
||||||
|
Name string
|
||||||
|
Group int
|
||||||
|
Level int
|
||||||
|
NumPicks int
|
||||||
|
FreqUnique int
|
||||||
|
FreqSet int
|
||||||
|
FreqRare int
|
||||||
|
FreqMagic int
|
||||||
|
FreqNoDrop int
|
||||||
|
Treasures []*Treasure
|
||||||
|
}
|
||||||
|
|
||||||
|
// Treasure describes a treasure to drop
|
||||||
|
// the key is either a reference to an item, or to another treasure class
|
||||||
|
type Treasure struct {
|
||||||
|
Name string
|
||||||
|
Probability int
|
||||||
|
}
|
||||||
|
|
||||||
|
var TreasureClass map[string]*TreasureClassRecord //nolint:gochecknoglobals // Currently global by design
|
||||||
|
|
||||||
|
// LoadTreasureClassRecords loads treasure class records from TreasureClassEx.txt
|
||||||
|
//nolint:funlen // Makes no sense to split
|
||||||
|
func LoadTreasureClassRecords(file []byte) {
|
||||||
|
TreasureClass = make(map[string]*TreasureClassRecord)
|
||||||
|
|
||||||
|
d := d2common.LoadDataDictionary(file)
|
||||||
|
|
||||||
|
for d.Next() {
|
||||||
|
record := &TreasureClassRecord{
|
||||||
|
Name: d.String("Treasure Class"),
|
||||||
|
Group: d.Number("group"),
|
||||||
|
Level: d.Number("level"),
|
||||||
|
NumPicks: d.Number("Picks"),
|
||||||
|
FreqUnique: d.Number("Unique"),
|
||||||
|
FreqSet: d.Number("Set"),
|
||||||
|
FreqRare: d.Number("Rare"),
|
||||||
|
FreqMagic: d.Number("Magic"),
|
||||||
|
FreqNoDrop: d.Number("NoDrop"),
|
||||||
|
}
|
||||||
|
|
||||||
|
for treasureIdx := 0; treasureIdx < numTreasures; treasureIdx++ {
|
||||||
|
treasureColumnKey := fmt.Sprintf(treasureItemFmt, treasureIdx+1)
|
||||||
|
probColumnKey := fmt.Sprintf(treasureProbFmt, treasureIdx+1)
|
||||||
|
|
||||||
|
treasureName := d.String(treasureColumnKey)
|
||||||
|
if treasureName == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
prob := d.Number(probColumnKey)
|
||||||
|
|
||||||
|
treasure := &Treasure{
|
||||||
|
Name: treasureName,
|
||||||
|
Probability: prob,
|
||||||
|
}
|
||||||
|
|
||||||
|
if record.Treasures == nil {
|
||||||
|
record.Treasures = []*Treasure{treasure}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
record.Treasures = append(record.Treasures, treasure)
|
||||||
|
}
|
||||||
|
|
||||||
|
TreasureClass[record.Name] = record
|
||||||
|
}
|
||||||
|
|
||||||
|
if d.Err != nil {
|
||||||
|
panic(d.Err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Loaded %d TreasureClass records", len(TreasureClass))
|
||||||
|
}
|
@ -193,6 +193,7 @@ const (
|
|||||||
CubeRecipes = "/data/global/excel/cubemain.txt"
|
CubeRecipes = "/data/global/excel/cubemain.txt"
|
||||||
Skills = "/data/global/excel/skills.txt"
|
Skills = "/data/global/excel/skills.txt"
|
||||||
SkillDesc = "/data/global/excel/skilldesc.txt"
|
SkillDesc = "/data/global/excel/skilldesc.txt"
|
||||||
|
TreasureClass = "/data/global/excel/TreasureClassEx.txt"
|
||||||
|
|
||||||
// --- Animations ---
|
// --- Animations ---
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user