Skip to content

Instantly share code, notes, and snippets.

@met4000
Created October 31, 2026 14:50
Show Gist options
  • Select an option

  • Save met4000/6054bea2e7d8a305b347720d6f8287ca to your computer and use it in GitHub Desktop.

Select an option

Save met4000/6054bea2e7d8a305b347720d6f8287ca to your computer and use it in GitHub Desktop.
(() => {
if (document.querySelector(".log-messages").children[0].innerText === "No messages yet...")
{
console.warn("No events to process");
return;
}
const doTokenCount = () => {
const players = [...document.querySelectorAll(`div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth tbody tr td span.icon-text span`)].map(v => v.innerText);
const playerTokens = Object.fromEntries(players.map(p=>[p,11]));
let poolTokens = 0;
for (const event of document.querySelector(".log-messages").children)
{
const [, player, action] = event.innerText.match(/^([\s\S]+) has (passed|taken \d+)$/) ?? [];
if (/^passed$/.test(action))
{
playerTokens[player]--;
poolTokens++;
}
else if (/^taken /.test(action))
{
playerTokens[player] += poolTokens;
poolTokens = 0;
}
else
{
console.error(`Unknown event: ${event.innerText}`);
}
}
const th_row = document.querySelector("div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth thead tr");
if (th_row.querySelector("th:nth-of-type(4)") === null)
{
const newHeader = document.createElement("th");
newHeader.appendChild(document.createTextNode("T"))
newHeader.style.width = "40px";
th_row.appendChild(newHeader);
for (const row of document.querySelectorAll("div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth tbody tr"))
row.appendChild(document.createElement("td"));
}
for (const row of document.querySelectorAll("div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth tbody tr"))
{
const playerName = row.querySelector("td:nth-of-type(2)").innerText;
const playerTokenDisplay = row.querySelector("td:nth-of-type(4)");
playerTokenDisplay.innerHTML = playerTokens[playerName];
}
};
let intervalId;
window.startTokenCount = () => intervalId = setInterval(doTokenCount, 100);
window.stopTokenCount = () => clearInterval(intervalId);
window.startTokenCount();
})();
(()=>{if(document.querySelector(".log-messages").children[0].innerText==="No messages yet..."){console.warn("No events to process");return}const doTokenCount=()=>{const players=[...document.querySelectorAll(`div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth tbody tr td span.icon-text span`)].map(v=>v.innerText);const playerTokens=Object.fromEntries(players.map(p=>[p,11]));let poolTokens=0;for(const event of document.querySelector(".log-messages").children){const[,player,action]=event.innerText.match(/^([\s\S]+) has (passed|taken \d+)$/)??[];if(/^passed$/.test(action)){playerTokens[player]-=1;poolTokens+=1}else if(/^taken /.test(action)){playerTokens[player]+=poolTokens;poolTokens=0}else{console.error(`Unknown event: ${event.innerText }`)}}const th_row=document.querySelector("div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth thead tr");if(th_row.querySelector("th:nth-of-type(4)")===null){const newHeader=document.createElement("th");newHeader.appendChild(document.createTextNode("T"));newHeader.style.width="40px";th_row.appendChild(newHeader);for(const row of document.querySelectorAll("div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth tbody tr")){row.appendChild(document.createElement("td"))}}for(const row of document.querySelectorAll("div.box.b-primary.container div.body-wrapper div.box.mb-0.is-1 div.mb-4 table.table.is-fullwidth tbody tr")){const playerName=row.querySelector("td:nth-of-type(2)").innerText;const playerTokenDisplay=row.querySelector("td:nth-of-type(4)");playerTokenDisplay.innerHTML=playerTokens[playerName]}};let intervalId;window.startTokenCount=()=>intervalId=setInterval(doTokenCount,100);window.stopTokenCount=()=>clearInterval(intervalId);window.startTokenCount()})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment