ScriptCards is capable of doing that with its Triggers. I use it a lot with the ` change:campaign:turnorder` event to prompt players, remove status' when their turnorder timers end, all sorts. I totally expect that other options are available but ScriptCards is what I use to trigger events on turnorder changes like what you describe. If you are interested, I can possibly help you with it. It would involve creating a character in your game named ScriptCards_Triggers and installing ScriptCards mod. Then creating an ability on the ScriptCards_Triggers character named change:campaign:turnorder. So it's not amazingly complicated but it's also not a 1 click off the shelf option either. EDIT: I essentially had this setup so stripping out my custom stuff to provide this example: Here is the ScriptCard I use when all initiative is rolled. It sorts the turnorder and then adds a custom entry named Round that increases by 1. !script {{
--/|name: SortTurnorder
--/|version: 0.2.0
--/|requires: SC 2.1.8+
--#hidecard|1
--~|turnorder;sort
--~|turnorder;addcustom;Round;1;1
}} And this is the ScriptCard that will go into the ability named change:campaign:turnorder on the character named ScriptCards_Triggers !script {{
--/|Script Name : change_campaign_turnorer trigger
--/|Version : 0.1.0
--/|Requires SC : 2.6.0
--/|TRIGGER_REPLACEMENTS
--#hidecard|1
-->GET_CURRENT_TURN_INFO|TID;INIT;CUSTOM;FORMULA;PAGE;name
--?"X[&TID]" -eq "X"|Done
--:CheckCustom|
--?[&TID] -ne -1|Done
--:CUSTOM_TURN|
--?"[&name]" -eq "Round"|[
--#hidecard|0
--#title|Top of the Round
--+|[b]NOW BEGINNING ROUND [&INIT][/b]
--]|
--:Done|
--X|
--/|The functions below were all stolen from Kurt J's turnorder functions
--/|<a href="https://github.com/kjaegers/ScriptCards/blob/main/ScriptCards_Examples/system-neutral/TurnOrderFunctions.scard" rel="nofollow">https://github.com/kjaegers/ScriptCards/blob/main/ScriptCards_Examples/system-neutral/TurnOrderFunctions.scard</a>
--:GET_CURRENT_TURN_INFO|TokenID, InitCounter, CustomName, Formula, page, name
--?"X[$_toCount.Raw]" -eq "X"|>_to_PARSE_TURN_ORDER
--?[$_toCount] -eq 0|_to_CLEAR_AND_RETURN
-->_to_GET_TURN_INFO|[%1%];[%2%];[%3%];[%4%];[%5%];[%6%];"[&_to1(replaceall,;,!!!)]"
--<|
--:_to_PARSE_TURN_ORDER|
--&_to_temp|[*C:turnorder]
--&_to_temp|[&_to_temp(replaceall,",)]
--&_to_temp|[&_to_temp(replaceall,;,!!!)]
--&_to_temp|[&_to_temp(1)]
--&_to_temp|[&_to_temp(0,[=[&_to_temp(length)]-1])]
--?"X[&_to_temp]X" -eq "X[]X"|_to_CLEAR_AND_RETURN
--~_to|string;split;},{;[&_to_temp]
--<|
--:_to_CLEAR_AND_RETURN|
--&[%1%]| --&[%2%]| --&[%3%]| --&[%4%]| --&[%5%]| --&[%6%]|
--<|
--:_to_GET_TURN_INFO|
--&_work_turn|[%7%]
--&_work_turn|[&_work_turn(replaceall,!!!,;)]
--&_work_turn|[&_work_turn(replaceall,{,)] --&_work_turn|[&_work_turn(replaceall,},)]
--~_to_ThisTurn|string;split;,;[&_work_turn]
--%_toLoop|1;[$_to_ThisTurnCount]
--?"[&_to_ThisTurn[&_toLoop](0,2)]" -eq "id"|&[%1%];[&_to_ThisTurn[&_toLoop](replace,id:,)]
--?"[&_to_ThisTurn[&_toLoop](0,2)]" -eq "pr"|&[%2%];[&_to_ThisTurn[&_toLoop](replace,pr:,)]
--?"[&_to_ThisTurn[&_toLoop](0,2)]" -eq "cu"|&[%3%];[&_to_ThisTurn[&_toLoop](replace,custom:,)]
--?"[&_to_ThisTurn[&_toLoop](0,2)]" -eq "fo"|&[%4%];[&_to_ThisTurn[&_toLoop](replace,formula:,)]
--?"[&_to_ThisTurn[&_toLoop](0,2)]" -eq "_p"|&[%5%];[&_to_ThisTurn[&_toLoop](replace,_pageid:,)]
--%|
--?[&[%1%]] -ne -1|&[%6%];[*[&[%1%]]:t-name]|&[%6%];[&[%3%]]
--<|
}} Where the output is here: --:CUSTOM_TURN|
--?"[&name]" -eq "Round"|[
--#hidecard|0
--#title|Top of the Round
--+|[b]NOW BEGINNING ROUND [&INIT][/b]
--]| So the example output is like so: So that's an example for you if you wanted to go down this route of using ScriptCards to monitor turnorder for changes.