Register D&D item event pipeline

This commit is contained in:
2026-07-25 22:05:52 +00:00
parent 5711f8b9e3
commit f0ede9dacc
8 changed files with 382 additions and 10 deletions

View File

@@ -70,6 +70,27 @@ func appendCombatTurnLists(values []dnd.CombatTurnList) (dnd.CombatTurnList, err
return combined, nil
}
func appendItemEventLists(values []dnd.ItemEventList) (dnd.ItemEventList, error) {
count := 0
present := false
for _, value := range values {
if value.Events != nil {
present = true
}
count += len(value.Events)
}
if !present {
return dnd.ItemEventList{}, nil
}
combined := dnd.ItemEventList{Events: make([]dnd.ItemEvent, 0, count)}
for _, value := range values {
for _, event := range value.Events {
combined.Events = append(combined.Events, cloneItemEvent(event))
}
}
return combined, nil
}
func appendNPCInteractionLists(values []dnd.NPCInteractionList) (dnd.NPCInteractionList, error) {
count := 0
present := false
@@ -116,6 +137,16 @@ func cloneCombatTurn(value dnd.CombatTurn) dnd.CombatTurn {
return clone
}
func cloneItemEvent(value dnd.ItemEvent) dnd.ItemEvent {
clone := value
if value.Quantity != nil {
quantity := *value.Quantity
clone.Quantity = &quantity
}
clone.SourceRefs = cloneSourceRefs(value.SourceRefs)
return clone
}
func cloneSpellCast(value dnd.SpellCast) dnd.SpellCast {
clone := value
clone.SourceRefs = cloneSourceRefs(value.SourceRefs)