{"name":"vital tracker","enabled":true,"description":"","type":"group","id":1,"items":[{"type":"function","name":"onLoad","enabled":true,"id":2,"code":"//engi: parts: pt\nvit = {};\nvit.tell = false;\nvit.tellWho = '';\nvit.gmcp = function(e, r, n) {\n \n if (r == \"Char.Vitals\") {\n var output = \"\";\n var noHTML = \"\";\n var diff = 0;\n var num = 0;\n //if it's different, add the string.\n for (var key in vit.vitals) {\n if (vit.vitals[key].show && (vit.vitals[key].val !== n[key])) {\n diff = Number(vit.vitals[key].val) - Number(n[key]);\n if (diff < 0) {\n num = Math.floor(Math.abs(diff) * 100) / 100\n output+='+'+ num +vit.vitals[key].short+' ';\n noHTML+='+'+num + vit.vitals[key].short+' ';\n } else {\n num = Math.floor(Math.abs(diff) * 100) / 100\n output+='-'+num+vit.vitals[key].short+' ';\n noHTML+='-'+num + vit.vitals[key].short+' ';\n }\n\n }\n vit.vitals[key].val = n[key];\n }\n if (output !== '') {\n vit.report(output);\n if(vit.tell) {\n send_command('tell '+vit.tellWho+ ' '+noHTML);\n }\n }\n }\n}\nvit.options = {};\nvit.options.tag = '⟪ vit ⟫'\nvit.options.tagc = 'rgb(239, 143, 124)'\nvit.options.msgc = 'rgb(239, 249, 119)'\n\n\nvit.owWrite = function(selector, text) {\n if (text.trim() == \"\") return;\n\n // doing these updates asynchronously to minimize reflows when under heavy load\n window.requestAnimationFrame(function() {\n var hooks = $.cssHooks;\n $.cssHooks = {};\n\n var output = client.document.querySelectorAll(selector + ' .output')[0];\n var newel = document.createElement('div');\n newel.innerHTML = text;\n newel.className = 'line';\n newel.id = 'msg' + num_msgs;\n output.appendChild(newel);\n append_to_log(newel.innerHTML);\n\n var scrollback = client.document.querySelectorAll(selector + ' .output_scrollback')[0];\n newel = document.createElement('div');\n newel.className = 'line';\n newel.innerHTML = text;\n newel.id = 'sb_msg' + num_msgs;\n scrollback.appendChild(newel);\n\n trim_ow(selector);\n\n num_msgs++;\n scrollback_num_msgs++;\n\n if (selector === '#output_main') {\n if (no_prompts || gag_prompts) {\n var el = client.document.querySelectorAll('#output_main .prompt');\n for (var i = 0; i < el.length; i++) el[i].style.display = 'none';\n // last prompt shown?\n if ((!no_prompts) && el.length > 0)\n el[el.length - 1].style.display = 'block';\n }\n if (show_timestamps) {\n var el = client.document.querySelectorAll('#output_main .output #msg'+(num_msgs-1)+' .timestamp');\n for (var i = 0; i < el.length; i++) el[i].classList.remove('no_out');\n }\n if (show_scroll_timestamps) {\n var el = client.document.querySelectorAll('#output_main .output_scrollback #sb_msg'+(num_msgs-1)+' .timestamp');\n for (var i = 0; i < el.length; i++) el[i].classList.remove('no_out');\n }\n }\n\n output.scrollTop = output.scrollHeight;\n\n $.cssHooks = hooks;\n });\n\n},\n \n//vit.write = function(msg) { ow_Write('#output_main', '