You can actually take advantage of a little known &{tracker} feature, the ability to adjust the existing score using &{tracker:+}: I tried setting this up for fun. It turns out you can't use :+ inside a button, sadly, but you can use it in an ability, so I whipped up a way to do it using a character named InitSys: &{template:default} {{name=Initiative
}} {{Reset=[0](~InitSys|reset)
}} {{Ranged=[1d4](~InitSys|ranged)[D](~InitSys|rangedD)[A](~InitSys|rangedA)
}} {{Move=[1d6](~InitSys|move)[D](~InitSys|moveD)[A](~InitSys|moveA)
}} {{Swap=[1d6](~InitSys|swap)[D](~InitSys|swapD)[A](~InitSys|swapA)
}} {{Other=[1d6](~InitSys|else)[D](~InitSys|elseD)[A](~InitSys|elseA)
}} {{Melee=[1d8](~InitSys|melee)[D](~InitSys|meleeD)[A](~InitSys|meleeA)
}} {{Spell=[1d10](~InitSys|spell)[D](~InitSys|spellD)[A](~InitSys|spellA)
}} {{Surprised=[+10](~InitSys|surprised)
}}
And here's a list of abilities and their values: reset
@{selected|token_name} clears to [[0 &{tracker} ]]
move
@{selected|token_name} will move: +[[1d6 &{tracker:+}]]
melee
@{selected|token_name} will melee attack +[[1d8 &{tracker:+}]]
moveD
@{selected|token_name} will move (disadvantage): +[[2d6kh1 &{tracker:+}]]
moveA
@{selected|token_name} will move (advantage): +[[2d6kl1 &{tracker:+}]]
meleeD
@{selected|token_name} will melee attack (disadvantage) +[[2d8kh1 &{tracker:+}]]
meleeA
@{selected|token_name} will melee attack (advantage) +[[2d8kl1 &{tracker:+}]]
ranged
@{selected|token_name} will ranged attack +[[1d4 &{tracker:+}]]
rangedD
@{selected|token_name} will ranged attack (disadvantage) +[[2d4kh1 &{tracker:+}]]
rangedA
@{selected|token_name} will ranged attack (advantage) +[[2d4kl1 &{tracker:+}]]
spell
@{selected|token_name} will cast a spell +[[1d10 &{tracker:+}]]
spellD
@{selected|token_name} will cast a spell (disadvantage) +[[2d10kh1 &{tracker:+}]]
spellA
@{selected|token_name} will cast a spell (advantage) +[[2d10kl1 &{tracker:+}]]
swap
@{selected|token_name} will swap gear: +[[1d6 &{tracker:+}]]
swapD
@{selected|token_name} will swap gear (disadvantage): +[[2d6kh1 &{tracker:+}]]
swapA
@{selected|token_name} will swap gear (advantage): +[[2d6kl1 &{tracker:+}]]
else
@{selected|token_name} will ?{something else}: +[[1d6 &{tracker:+}]]
elseD
@{selected|token_name} will ?{something else} (disadvantage): +[[2d6kh1 &{tracker:+}]]
elseA
@{selected|token_name} will ?{something else} (advantage): +[[2d6kl1 &{tracker:+}]]
surprised
@{selected|token_name} is surprised: +[[10 &{tracker:+}]]
The nice thing about using a character to hold the abilities is you can move it between games with the Character Vault or Transmogrifier, if you have access to either. For pro subscribers, here's an API script that sets up the character and the template as a macro named #init: on('ready',function(){
"use strict";
const abilities= {
reset: '@{selected|token_name} clears to [[0 &{tracker} ]]',
move: '@{selected|token_name} will move: +[[1d6 &{tracker:+}]]',
melee: '@{selected|token_name} will melee attack +[[1d8 &{tracker:+}]]',
moveD: '@{selected|token_name} will move (disadvantage): +[[2d6kh1 &{tracker:+}]]',
moveA: '@{selected|token_name} will move (advantage): +[[2d6kl1 &{tracker:+}]]',
meleeD: '@{selected|token_name} will melee attack (disadvantage) +[[2d8kh1 &{tracker:+}]]',
meleeA: '@{selected|token_name} will melee attack (advantage) +[[2d8kl1 &{tracker:+}]]',
ranged: '@{selected|token_name} will ranged attack +[[1d4 &{tracker:+}]]',
rangedD: '@{selected|token_name} will ranged attack (disadvantage) +[[2d4kh1 &{tracker:+}]]',
rangedA: '@{selected|token_name} will ranged attack (advantage) +[[2d4kl1 &{tracker:+}]]',
spell: '@{selected|token_name} will cast a spell +[[1d10 &{tracker:+}]]',
spellD: '@{selected|token_name} will cast a spell (disadvantage) +[[2d10kh1 &{tracker:+}]]',
spellA: '@{selected|token_name} will cast a spell (advantage) +[[2d10kl1 &{tracker:+}]]',
swap: '@{selected|token_name} will swap gear: +[[1d6 &{tracker:+}]]',
swapD: '@{selected|token_name} will swap gear (disadvantage): +[[2d6kh1 &{tracker:+}]]',
swapA: '@{selected|token_name} will swap gear (advantage): +[[2d6kl1 &{tracker:+}]]',
else: '@{selected|token_name} will ?{something else}: +[[1d6 &{tracker:+}]]',
elseD: '@{selected|token_name} will ?{something else} (disadvantage): +[[2d6kh1 &{tracker:+}]]',
elseA: '@{selected|token_name} will ?{something else} (advantage): +[[2d6kl1 &{tracker:+}]]',
surprised: '@{selected|token_name} is surprised: +[[10 &{tracker:+}]]'
};
if(!findObjs({type:'character',name:'InitSys'}).length){
let character = createObj('character',{name:'InitSys'});
_.each(abilities,(v,k)=>createObj('ability',{
characterid: character.id,
name: k,
action: v
}));
let gm=_.chain(findObjs({type:'player'}))
.filter((p)=>playerIsGM(p.id))
.first()
.value();
createObj('macro',{
name: 'init',
playerid: gm.id,
action: `&{template:default} {{name=Initiative
}} {{Reset=[0](~InitSys|reset)
}} {{Ranged=[1d4](~InitSys|ranged)[D](~InitSys|rangedD)[A](~InitSys|rangedA)
}} {{Move=[1d6](~InitSys|move)[D](~InitSys|moveD)[A](~InitSys|moveA)
}} {{Swap=[1d6](~InitSys|swap)[D](~InitSys|swapD)[A](~InitSys|swapA)
}} {{Other=[1d6](~InitSys|else)[D](~InitSys|elseD)[A](~InitSys|elseA)
}} {{Melee=[1d8](~InitSys|melee)[D](~InitSys|meleeD)[A](~InitSys|meleeA)
}} {{Spell=[1d10](~InitSys|spell)[D](~InitSys|spellD)[A](~InitSys|spellA)
}} {{Surprised=[+10](~InitSys|surprised)
}}`,
visibleto: 'all'
});
}
});
If you've got GroupInitiative installed, you might find these commands handy: Clear all in turn order to 0: !group-init --adjust -100000 0 Sort turn order: !group-init --sort Configure to be ascending initiative (just once, to get this set up): !group-init-config --sort-option|Ascending