fix(topdata): encode spell radial feat IDs
This commit is contained in:
@@ -4712,6 +4712,24 @@ func (r *valueResolver) resolveValue(row map[string]any, field string, value any
|
||||
|
||||
switch typed := value.(type) {
|
||||
case map[string]any:
|
||||
if radial, ok := typed["spellradial"].(map[string]any); ok && len(typed) == 1 {
|
||||
if r.dataset.Name != "spells" || field != "FeatID" {
|
||||
return tlkCompiledValue{}, fmt.Errorf("spellradial reference is only valid for spells.FeatID")
|
||||
}
|
||||
radialKey, ok := radial["id"].(string)
|
||||
if !ok || len(radial) != 1 {
|
||||
return tlkCompiledValue{}, fmt.Errorf("spellradial reference requires exactly one id")
|
||||
}
|
||||
featID, ok := r.keyToID[radialKey]
|
||||
if !ok {
|
||||
return tlkCompiledValue{}, fmt.Errorf("unknown spellradial feat reference: %s", radialKey)
|
||||
}
|
||||
spellID, ok := row["id"].(int)
|
||||
if !ok {
|
||||
return tlkCompiledValue{}, fmt.Errorf("spellradial reference requires a numeric spell row id")
|
||||
}
|
||||
return tlkCompiledValue{Value: spellID<<16 + featID}, nil
|
||||
}
|
||||
if encoding, ok := r.valueEncodingForField(field); ok {
|
||||
mode := strings.TrimSpace(encoding.Mode)
|
||||
_, hasList := typed["list"]
|
||||
|
||||
Reference in New Issue
Block a user