ah, if this is a macro that the sheet is just providing, you'll need a sheetworker to either 1) update an attribute that holds the macro whenever the character name changes or 2) use custom roll parsing to dynamically create the chat output at roll time. I'd recommend the CRP route, but I have used both methods in sheets I've made. The CRP method would look something like: HTML <fieldset class="repeating_meleeweapon">
<!-- You're repeating row code minus your current roll button-->
<button type="action" name="act_menu">Output Menu</button>
</fieldset>
Sheetworker on('clicked:repeating_meleeweapon:menu',(event) => {
const [,section,rowID,buttonName] = event.sourceAttribute.match(/(repeating_.+?)_(.+?)_(.+)/);
// get any attributes we need
// note the async tag so that we can wait for the result of startRoll
getAttrs(['character-name','list of attributes to get'], async (attributes) => {
// This is basic output of what you showed. I'm assuming you have other content that should be output in this roll as well.
// You'll want to get any attributes you need for calculations or rolls in the getAttrs and then assemble the macro output.
const rollText = `&{template:default} {{[Jinx Redraw](~${attributes.character_name}|jinx_redraw)=**[Fortify Redraw](~${attributes.character_name}|fortify_redraw)**}}`
const roll = await startRoll(rollText);
finishRoll(roll.id);
})
})