/* * Simple script which looks for changes in the chat area, and rolls extra damage * based on any relevant hit dice. */ function handleMoonslicer(message) { var result = message.querySelector('div.sheet-result') var rx = /">([0-9]+)<\/span>/ var h0str = result.children[0].children[0].children[0].getAttribute("title"); var h1str = result.children[2].children[0].children[0].getAttribute("title"); var hit0 = Number(h0str.match(rx)[1]); var hit1 = Number(h1str.match(rx)[1]); var input_area = document.getElementById('textchat-input'); var textarea = input_area.querySelector("textarea"); var submit_button = input_area.querySelector("button.btn"); console.log('Hit0: ' + hit0 + ' Hit1: ' + hit1); var old_text = textarea.value; new Set([hit0, hit1]).forEach( function(die_val) { switch (die_val) { case 20: textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=+[[1d6]]}} {{dmg1type=Ice}}"; break; case 19: textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=+[[1d4]]}} {{dmg1type=Ice}}"; break; case 2: textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[floor(1d4/2)]]}} {{dmg1type=Ice to self}}"; break; case 1: textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[floor(1d6/2)]]}} {{dmg1type=Ice to self}}"; break; } submit_button.click(); }); textarea.value = old_text; } /* * Figure out what to do with the messages we find in the textchat area */ function handleMutation(mutation) { mutation.addedNodes.forEach( function(message) { if (message.classList && message.classList.contains('you')) { var labelElem = message.querySelector('div.sheet-rolltemplate-atk div.sheet-label'); var label = labelElem.querySelector('span a'); if (label && label.innerHTML == 'Moonslicer') { handleMoonslicer(message); }; }; }); } /* * Watch for changes to the textchat content area */ var textchat = document.getElementById("textchat"); var content = textchat.getElementsByClassName("content")[0]; var observer = new MutationObserver(function(mutations) {mutations.forEach(handleMutation);}); observer.observe(content, {childList: true});