Register item registry normalization

This commit is contained in:
2026-08-05 19:39:06 +00:00
parent ad9ee076b5
commit f91237e9c0
19 changed files with 1165 additions and 15 deletions

View File

@@ -112,6 +112,27 @@ func appendItemEventLists(values []dnd.ItemEventList) (dnd.ItemEventList, error)
return combined, nil
}
func appendItemRegistries(values []dnd.ItemRegistry) (dnd.ItemRegistry, error) {
count := 0
present := false
for _, value := range values {
if value.Items != nil {
present = true
}
count += len(value.Items)
}
if !present {
return dnd.ItemRegistry{}, nil
}
combined := dnd.ItemRegistry{Items: make([]dnd.Item, 0, count)}
for _, value := range values {
for _, item := range value.Items {
combined.Items = append(combined.Items, cloneItem(item))
}
}
return combined, nil
}
func appendNPCOccurrenceLists(values []dnd.NPCOccurrenceList) (dnd.NPCOccurrenceList, error) {
count := 0
present := false
@@ -216,6 +237,12 @@ func cloneItemEvent(value dnd.ItemEvent) dnd.ItemEvent {
return clone
}
func cloneItem(value dnd.Item) dnd.Item {
clone := value
clone.SourceRefs = cloneSourceRefs(value.SourceRefs)
return clone
}
func cloneSpellCast(value dnd.SpellCast) dnd.SpellCast {
clone := value
clone.SourceRefs = cloneSourceRefs(value.SourceRefs)