I was thinking something more primitive, just copy everything in a section with no regard for the name. The main function is simple enough, but writing the chat interface is the most annoying part, as always. const copyAllAttrs = (sectionName, sourceID, targetID) => {
findObjs({
characterid: sourceID,
type: "attribute"
})
.filter(x => x.get("name").indexOf(`repeating_${sectionName}_`) === 0)
.map(x => ({
characterid: targetID,
current: x.get("current") || "",
max: x.get("max") || "",
name: x.get("name") || ""
}))
.forEach(data => createObj("attribute", data));
};