/* * 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; if (hit0 == 20 || hit1 == 20) { textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=+[[1d6]]}} {{dmg1type=Ice}}"; submit_button.click(); } if (hit0 == 19 || hit1 == 19) { textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=+[[1d4]]}} {{dmg1type=Ice}}"; submit_button.click(); } if (hit0 == 2 || hit1 == 2) { textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[floor(1d4/2)]]}} {{dmg1type=Ice to self}}}"; submit_button.click(); } if (hit0 == 1 || hit1 == 1) { textarea.value = "&{template:npcdmg} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[1d6]]} {{dmg1type=Ice to self}}}"; submit_button.click(); } textarea.value = old_text; } /* Send a message to the page script. */ 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); }; }; }); } /* Add messagePageScript() as a listener to click events on the "from-content-script" element. */ 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});