Created
October 31, 2026 14:50
-
-
Save met4000/6054bea2e7d8a305b347720d6f8287ca to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (() => { | |
| 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(); | |
| })(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (()=>{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