nexgui4 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/images/head female.png +0 -0
- package/dist/images/headRe.png +0 -0
- package/dist/images/left arm female.png +0 -0
- package/dist/images/left armRe.png +0 -0
- package/dist/images/left leg female.png +0 -0
- package/dist/images/left legRe.png +0 -0
- package/dist/images/right arm female.png +0 -0
- package/dist/images/right armRe.png +0 -0
- package/dist/images/right leg female.png +0 -0
- package/dist/images/right legRe.png +0 -0
- package/dist/images/torso female.png +0 -0
- package/dist/images/torsoRe.png +0 -0
- package/dist/nexGui4.nxs +1 -0
- package/dist/nexgui4.min.js +152 -0
- package/package.json +82 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/nexGui4.nxs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"group","name":"nexGui4","enabled":true,"items":[{"type":"function","name":"__meta","enabled":true,"code":"{\n\t\"description\": \"nexGui4 Achaea enhancements for the Nexus client\",\n \"version\": \"1.0.0\",\n \"website\": \"https://github.com/NexusUnleashed/nexgui4\",\n \"dependencies\": [\n \"eventStream3\",\n \"nexSys4\"\n ]\n}"},{"type":"function","name":"SCRATCH","enabled":true,"code":"/* Khaseem's scratch pad */\n/*\n\n*/\n"},{"type":"function","name":"README","enabled":true,"code":"/***************************************************************************************************\nAdd instructions here\n****************************************************************************************************/"},{"type":"function","name":"onInstall","enabled":true,"code":"nexusclient.reflexes().run_function('onLoad', {}, 'nexGui4');\nconst np = nexusclient.packages();\nif (!np.exists('eventStream3')) {\n fetch(`https://unpkg.com/nexevent/eventStream3.nxs`, { cache: \"no-store\" })\n .then((r) => r.json())\n .then((d) => {\n const p = np.create('eventStream3', 'placeholder');\n p.name = \"eventStream3\";\n const i = np.exists('eventStream3');\n np.move(i - 1, 1);\n np\n .get(\"eventStream3\")\n .apply(d, nexusclient.reflexes());\n });\n}"},{"type":"function","name":"onLoad","enabled":true,"code":"globalThis.React ??= nexusclient.platform().React;\nglobalThis.ReactDOM ??= nexusclient.platform().ReactDOM;\n\nglobalThis.GMCP ??= nexusclient.datahandler().GMCP;\n\nnexusclient.packages().get('nexGui4').items.filter(item => item.type === 'group').forEach(group => group.enabled = false);"},{"type":"function","name":"SystemLoaded","enabled":true,"code":"return;\nimport('https://unpkg.com/nexgui4/dist/nexgui4.min.js').then(() => {\n nexusclient.packages().get('nexGui4').items.filter(item => item.type === 'group').forEach(group => group.enabled = true);\n nexGui.bootstrapNexus();\n});"},{"type":"group","name":"nexGui.colors","enabled":false,"actions":[],"items":[{"type":"group","name":"balances","enabled":true,"items":[{"type":"trigger","name":"Bal Recover","enabled":true,"actions":[{"type":"script","enabled":true,"script":"const filler = Math.max(\n 32,\n Math.floor(document.getElementsByClassName(\"box_center\")[0].offsetWidth / 25)\n);\n\nconst duration = nexSys.state.balances.balance.lastServerDurationSeconds ?? \"\";\n\nconst html = `<span style=\"\n display:inline-flex;\n width:calc(100% - 16ch);\n overflow:hidden;\n \">\n <span style=\"\n min-width:0;\n color:#33cc33;\n \">${\"=\".repeat(filler)}</span>\n <span style=\"\"><span style=\"color:#33cc33;\"> BALANCE </span><span style=\"color:#00ccff;\">(${duration>0?parseFloat(duration).toFixed(2):duration}) </span></span>\n <span style=\"\n min-width:0;\n color:#00ccff;\n \">${\"=\".repeat(filler)}</span>\n </span>`;\n\nnexSys.api.line.replaceHTML(html);"}],"text":"You have recovered balance on all limbs.","matching":"exact","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Eq Recover","enabled":true,"actions":[{"type":"script","enabled":true,"script":"const filler = Math.max(\n 32,\n Math.floor(document.getElementsByClassName(\"box_center\")[0].offsetWidth / 26)\n);\n\nconst duration = nexSys.state.balances.equilibrium.lastServerDurationSeconds ?? \"\";\n\nconst html = `<span style=\"\n display:inline-flex;\n width:calc(100% - 16ch);\n overflow:hidden;\n \">\n <span style=\"\n color:#00ccff;\n \">${\"=\".repeat(filler)}</span>\n <span style=\"\"><span style=\"color:#00ccff;\"> EQUILIBRIUM </span><span style=\"color:#33cc33;\">(${duration>0?parseFloat(duration).toFixed(2):duration}) </span></span>\n <span style=\"\n min-width:0;\n color:#33cc33;\n \">${\"=\".repeat(filler)}</span>\n </span>`;\n\nnexSys.api.line.replaceHTML(html);"}],"text":"You have recovered equilibrium.","matching":"exact","whole_words":true,"case_sensitive":true}]},{"type":"function","name":"nexGui.colors","enabled":true,"code":"// https://www.w3schools.com/colors/colors_names.asp\nnexGui.api.room.items.set('a monolith sigil', { text: 'A MONOLITH SIGIL', color: 'red' });\nnexGui.api.room.items.set('a granite boulder', { text: 'BOULDER!!!', color: 'tomato' });\n"},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//nexSys.replaceHTML(`<span>The ${nexGui.iconHTML('fish-fins', ['khaki', 'orange'], 16)} appear to be plentiful here.`);\n//console.log(args[0]);\n//console.log('You bleed line -1:', nexusclient.current_block[nexusclient.current_line.index -1].line)\n\nif (nexusclient.current_line.index > 0) {\n nexusclient.current_block[nexusclient.current_line.index -1].gag = true;\n}\nnexSys.api.line.replaceHTML(args[0].replaceAll('bleed', nexGui.api.colors.iconHtml('droplet', ['red', 'silver'], 16)))\n"}],"text":"^You bleed \\d+ health\\.$","matching":"regexp","whole_words":true,"case_sensitive":true}]},{"type":"group","name":"nexGui.party","enabled":false,"actions":[],"items":[{"type":"trigger","name":"Party Aff call 1","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//(Party): Dalran says, \"Paralysis on Dunn.\"\nif (!nexGui.state.party.settings.affCalls || !nexGui.api.party.isMember(args[1])) {\n return;\n}\n\n//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\n// This triggers an event in my personal affliction tracking system. Left in place as\n// an example of how it might be used.\nif (GMCP.Target === args[3]) {\n /*eventStream.raiseEvent(`${args[2]}GotInsightAff`);*/\n}"}],"text":"^\\(Party\\): (\\w+) says, \"(\\w+) on (\\w+)\\.\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Aff call 2","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//(Party): Fieth says, \"Vanessa: Asthma.\"\nif (!nexGui.state.party.settings.affCalls || !nexGui.api.party.isMember(args[1])) {\n return;\n}\n\n//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\n// This triggers an event in my personal affliction tracking system. Left in place as\n// an example of how it might be used.\nif (GMCP.Target === args[2])\n eventStream.raiseEvent(`${args[3]}GotInsightAff`);"}],"text":"^\\(Party\\): (\\w+) says, \"(\\w+): (\\w+)\\.\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Target 1","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\nconst id = args[2].charAt(0).toUpperCase() + args[2].slice(1);\nif (\n nexGui.state.party.settings.targetCalls && \n args[1] === nexGui.state.party.leader && \n nexGui.api.players.get(GMCP.Char.Status.name).city !== nexGui.api.players.get(id)?.city\n) {\n nexusclient.send_commands(`settarget ${args[2]}`);\n nexusclient.send_commands(`enemy ${args[2]}`);\n}"}],"text":"^\\(Party\\): (\\w+) says, \"Target: (.+)\\.\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Target 2","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\nconst id = args[2].charAt(0).toUpperCase() + args[2].slice(1);\nif (\n nexGui.state.party.settings.targetCalls && \n args[1] === nexGui.state.party.leader && \n nexGui.api.players.get(GMCP.Char.Status.name).city !== nexGui.api.players.get(id)?.city\n) {\n nexusclient.send_commands(`settarget ${args[2]}`);\n nexusclient.send_commands(`enemy ${args[2]}`);\n}"}],"text":"^\\(Party\\): (\\w+) says, \"(?:Target|TARGET) (.+)\\.\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Enemy","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\n//(Party): Dunn says, \"Enemy Auri.\"\nif (nexGui.state.party.settings.targetCalls && args[1] === nexGui.state.party.leader) {\n nexusclient.send_commands(`enemy ${args[2]}`);\n}"}],"text":"^\\(Party\\): (\\w+) says, \"Enemy (.+)\\.\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Follow","enabled":true,"actions":[{"type":"script","enabled":true,"script":"if (nexGui.api.party.isMember(args[1])) {\n\tnexusclient.send_commands(`follow ${args[1]}`);\n}"}],"text":"^(\\w+) makes a beckoning motion\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Block","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\nconst validBlocks = [\"n\", \"e\", \"s\", \"w\", \"ne\", \"se\", \"sw\", \"nw\", \"d\", \"u\", \"down\", \"up\", \"north\", \"east\", \"south\", \"west\", \"northeast\", \"southeast\", \"southwest\", \"northwest\", \"in\", \"out\"];\n\nif (validBlocks.includes(args[1].toLowerCase())) {\n nexusclient.send_commands(`block ${args[1]}`);\n}"}],"text":"^\\(Party\\): \\w+ says, \"Block (\\w+).\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"Party Unblock","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//GMCP safeguard\nif (GMCP.Comm.Channel.Text.talker !== args[1]) {\n return;\n}\n\nnexusclient.send_commands('unblock');"}],"text":"^\\(Party\\): \\w+ says, \"Unblock\\.\"$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexSys.api.defs.setDefaultPriority('blocking', 0);"}],"text":"Block is not a valid command.","matching":"exact","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexSys.api.defs.setDefaultPriority('blocking', 0);"}],"text":"You need to be mounted to block.","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexSys.api.defs.setDefaultPriority('blocking', 0);"}],"text":"There is no exit to block that way.","matching":"regexp","whole_words":true,"case_sensitive":true}]},{"type":"group","name":"nexGui.timer","enabled":false,"actions":[],"items":[{"type":"trigger","name":"","enabled":false,"actions":[{"type":"script","enabled":true,"script":"// Example of how to start timers.\nnexGui.api.timers.start('tree')"}],"text":"^You touch the tree of life tattoo\\.$","matching":"regexp","whole_words":true,"case_sensitive":true}]},{"type":"group","name":"nexGui.msg","enabled":false,"actions":[],"items":[{"type":"trigger","name":"Smiley face gag","enabled":true,"actions":[{"type":"script","enabled":true,"script":"for(let i = 0; i < nexusclient.current_block.length; i++) {\n\tif (!nexusclient.current_line.is_prompt) {\n\t\tnexusclient.current_block[i].gag = true;\n }\n}"}],"text":" ..o@@@@@@@@@@@@@o..","matching":"exact","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"AlertnessHere","enabled":true,"actions":[{"type":"script","enabled":true,"script":"const players = [args[1]];\nconst re = /^Your enhanced senses inform you that (\\w+) has entered .+ at your location\\.$/;\nconst index = nexusclient.current_block.findIndex(e => e === nexusclient.current_line);\nconst testBlock = () => {\n for (let i = index + 1; i < nexusclient.current_block.length - 1; i++) {\n const txt = nexusclient.current_block[i].parsed_line?.text();\n const match = txt.match(re);\n if (match) {\n players.push(match[1]);\n\t nexusclient.current_block[i].gag = true;\n }\n }\n\n}\ntestBlock();\nconsole.log(nexusclient.current_block);\n\nconst line = document.createElement('span');\n\nconst left = document.createElement('span');\nleft.textContent = \"[\";\nleft.style.color = \"red\";\nline.appendChild(left);\n\nplayers.forEach(p => {\n const player = document.createElement('span');\n player.textContent = `${p} `;\n player.style.color = nexGui.api.colors.playerColor(p);\n line.appendChild(player);\n})\n\nconst dir = document.createElement('span');\ndir.textContent = \"- Here\";\ndir.style.color = 'white';\nline.appendChild(dir);\n\nconst right = document.createElement('span');\nright.textContent = \"]\";\nright.style.color = \"red\";\nline.appendChild(right);\n\nnexSys.api.line.replaceHTML(line.outerHTML);"}],"text":"^Your enhanced senses inform you that (\\w+) has entered .+ at your location\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"AlertnessThere","enabled":true,"actions":[{"type":"script","enabled":true,"script":"const players = [args[1]];\nconst re = /^Your enhanced senses inform you that (\\w+) has entered .+, to the (\\w+)\\.$/;\nconst index = nexusclient.current_block.findIndex(e => e === nexusclient.current_line);\n\nconst testBlock = () => {\n for (let i = index + 1; i < nexusclient.current_block.length - 1; i++) {\n const txt = nexusclient.current_block[i].parsed_line?.text();\n const match = txt.match(re);\n if (match) {\n players.push(match[1]);\n\t nexusclient.current_block[i].gag = true;\n }\n }\n\n}\ntestBlock();\nconsole.log(nexusclient.current_block);\n\nconst line = document.createElement('span');\n\nconst left = document.createElement('span');\nleft.textContent = \"[\";\nleft.style.color = \"red\";\nline.appendChild(left);\n\nplayers.forEach(p => {\n const player = document.createElement('span');\n player.textContent = `${p} `;\n player.style.color = nexGui.api.colors.playerColor(p);\n line.appendChild(player);\n})\n\nconst dir = document.createElement('span');\ndir.textContent = `- ${args[2].capitalize()}`;\ndir.style.color = 'cyan';\nline.appendChild(dir);\n\nconst right = document.createElement('span');\nright.textContent = \"]\";\nright.style.color = \"red\";\nline.appendChild(right);\n\nnexSys.api.line.replaceHTML(line.outerHTML);\n"}],"text":"^Your enhanced senses inform you that (\\w+) has entered .+, to the (\\w+)\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[],"text":"^(\\w+) wanders into view directly below\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[],"text":"^(\\w+) wanders out of sight from below you\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[],"text":"^(\\w+) flies away to the beyond\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[],"text":"^(\\w+) flits into view directly overhead\\.$","matching":"regexp","whole_words":true,"case_sensitive":true}]},{"type":"group","name":"nexGui.stream","enabled":false,"actions":[],"items":[{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"// This block gags all of the curing text that follows the [Curing] msg.\n// things like sipping the health vial. Only the [Curing] (text). is displayed.\nconsole.log(nexusclient.current_line)\nnexusclient.current_line.parsed_line.chunks[nexusclient.current_line.parsed_line.chunks.length-1]._txt = nexusclient.current_line.parsed_line.chunks[nexusclient.current_line.parsed_line.chunks.length-1]._txt.toLowerCase();\n\nconst index = nexusclient.current_line.index;\nfor(let i = index + 1; i < index + 3 && i < nexusclient.current_block.length; i++) {\n\tif (nexusclient.current_block[i].is_prompt) {\n break;\n }\n if (nexusclient.current_block[i].line) {\n nexusclient.current_block[i].gag = true;\n nexusclient.current_block[i].log = true;\n }\n}\n\nif (args[1] === 'CLOT') {\n /*clotCount++;\n if (clotCount > 1) {\n nexGui.stream.system.revise([\n `<span style=\"color: #800000; \">[Curing]:</span>`,\n `<span style=\"color: #aaaaaa\" class=\"nexGui-Clot\">Clot x${clotCount}</span>`\n ]);\n } else {\n nexGui.api.stream.add({\n html: `<span style=\"color: #800000; \">[Curing]: </span><span style=\"color: #aaaaaa\" class=\"nexGui-Clot\">Clot</span>`,\n stream: \"system\",\n });\n \tnexGui.stream.system.add([\n `<span style=\"color: #800000; \">[Curing]:</span>`,\n `<span style=\"color: #aaaaaa\" class=\"nexGui-Clot\">Clot</span>`\n ]);\n }*/\n} else {\n clotCount = 0;\n nexGui.api.stream.add({\n html: `<span style='color:#800000'>[Curing]: </span><span class='mono'>${args[1]}</span>`,\n stream: \"system\",\n });\n //nexGui.stream.system.add([`<span style='color:#800000'>[Curing]:</span>`,`<span class='mono'>${args[1].toProperCase()}</span>`]);\n}\n\nnexusclient.current_line.gag = true;\nnexusclient.current_line.log = true;"}],"text":"^\\[Curing\\]: (.+)$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":false,"actions":[{"type":"script","enabled":true,"script":"nexGui.stream.system.add([`<span style=\"color:deepskyblue\">[Prio] ${args[2]}</span>`,`<span>${args[1].toProperCase()}</span>`]);"}],"text":"^You have set the \\'(\\w+)\\' defence to the (\\d+) priority\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":false,"actions":[{"type":"script","enabled":true,"script":"nexGui.stream.system.add([\n `<span style=\"color:deepskyblue\">[Prio] ${args[2]}</span>`,\n `<span>${args[1].toProperCase()}</span>`\n ]);"}],"text":"^You have set the \\'(\\w+)\\' affliction to the (\\d+) priority\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":false,"actions":[{"type":"script","enabled":true,"script":"nexGui.stream.combat.add([\n `<span style=\"color:red\">[Target]</span>`,\n `<span class=\"mono\">${GMCP.IRE.Target.Info.short_desc}</span>`\n ]);"}],"text":"^Your target is now: (.+)$","matching":"regexp","whole_words":true,"case_sensitive":true}]},{"type":"group","name":"nexGui.who","enabled":false,"items":[{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.send_commands(\"qwc\");\nnexusclient.reflexes().enable_reflex(nexusclient.reflexes().find_by_name(\"trigger\", \"qw capture\", true, false, \"nexGui3\"));"}],"text":"qw","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.reflexes().enable_reflex(nexusclient.reflexes().find_by_name(\"trigger\", \"qw capture\", true, false, \"nexGui3\"));\nnexusclient.send_commands('qwc');"}],"text":"qwl","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//TODO\n//nexusclient.reflexes().enable_reflex(nexusclient.reflexes().find_by_name(\"group\", \"nexGui.who.capture\", true, false, \"nexGui3\"));\nnexusclient.send_commands('who brief');"}],"text":"qwb","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"//TODO\n//nexusclient.reflexes().enable_reflex(nexusclient.reflexes().find_by_name(\"group\", \"nexGui.who.capture\", true, false, \"nexGui3\"));\nnexusclient.send_commands('who brief');"}],"text":"qwhom","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"trigger","name":"qw capture","enabled":false,"actions":[{"type":"script","enabled":true,"script":"const nexusColors = {\n \"#800080\": \"ashtan\",\n \"#008080\": \"cyrene\",\n \"#00ff00\": \"eleusis\",\n \"#808000\": \"hashan\",\n \"#ff0000\": \"mhaldor\",\n \"#ffffff\": \"targossas\",\n \"#c0c0c0\": \"(none)\",\n \"#008000\": \"garden\",\n \"#ffff00\": \"garden\",\n};\n\nconst playerDirectory = nexGui.__contextValue.playerDirectory;\n\nnexusclient.current_block[0].parsed_line.chunks.forEach((e) => {\n if (e._txt && e._color) {\n const nexGuiPlayer = playerDirectory.getPlayerProfile(e._txt);\n const gameCity = nexusColors[e._color];\n\n if (gameCity && (!nexGuiPlayer || nexGuiPlayer.city != gameCity)) {\n nexusclient.display_notice(\n `City mismatch: ${e._txt} game: ${gameCity}, nexGui4: ${nexGuiPlayer?.city}`,\n );\n console.log(\n `City mismatch: ${e._txt} game: ${gameCity}, nexGui4: ${nexGuiPlayer?.city}`,\n );\n console.log(e);\n\n playerDirectory.rememberPlayerStatus({\n name: e._txt,\n city: gameCity,\n });\n }\n }\n});\n\nnexusclient\n .reflexes()\n .disable_reflex(\n nexusclient\n .reflexes()\n .find_by_name(\"trigger\", \"qw capture\", true, false, \"nexGui4\"),\n );"}],"text":"^.*\\(\\d+ total\\)\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"group","name":"nexGui.who.capture","enabled":false,"items":[{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;\nnexGui.cdb.qwbCapture(args[1], args[2]);"}],"text":"^(\\w+)\\s+\\((.+)\\)$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;\nnexGui.cdb.qwbCapture(args[1], 'unknown');\nreturn;\nlet area = { name: 'unknown' };\nif (typeof nexWho.capturedAreas[area.name] === 'undefined') {\n nexWho.capturedAreas[area.name] = {}\n nexWho.capturedAreas[area.name]['Embracing Death'] = [args[1]];\n} else if (typeof nexWho.capturedAreas[area.name]['Embracing Death'] === 'undefined') {\n nexWho.capturedAreas[area.name]['Embracing Death'] = [args[1]];\n} else {\n nexWho.capturedAreas[area.name]['Embracing Death'].push(args[1]);\n}"}],"text":"^\\(Embracing Death\\)\\s+(\\w+)\\.$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;\nnexGui.cdb.qwbCapture(`Soul ${args[1]}`, args[2]);\nreturn;\nlet area = nexWho.mudmap.areas.find(a => a.rooms.find(r => r.name?.indexOf(args[2]) === 0));\nif (typeof area === 'undefined') { area = { name: 'unknown' }; }\nif (typeof nexWho.capturedAreas[area.name] === 'undefined') {\n nexWho.capturedAreas[area.name] = {}\n nexWho.capturedAreas[area.name][args[2]] = [`Soul ${args[1]}`];\n} else if (typeof nexWho.capturedAreas[area.name][args[2]] === 'undefined') {\n nexWho.capturedAreas[area.name][args[2]] = [`Soul ${args[1]}`];\n} else {\n nexWho.capturedAreas[area.name][args[2]].push(`Soul ${args[1]}`);\n}"}],"text":"^The soul of (\\w+)\\s+\\((.+)\\)$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;"}],"text":"^(\\w+)$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;\nnexusclient.send_commands('more');"}],"text":"^\\[Type MORE if you wish to continue reading\\. \\((\\d+)% shown\\)\\]$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;"}],"text":"^\\[File continued via MORE\\]$","matching":"regexp","whole_words":true,"case_sensitive":true},{"type":"trigger","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"nexusclient.current_line.gag = true;\n\nnexGui.cdb.qwbDisplay();\n\nnexusclient.reflexes().disable_reflex(nexusclient.reflexes().find_by_name(\"group\", \"nexGui.who.capture\", true, false, \"nexGui3\"));"}],"text":"^Total: (\\d+)$","matching":"regexp","whole_words":true,"case_sensitive":true}]}]},{"type":"group","name":"nexGui.classCustomizations","enabled":false,"actions":[],"items":[{"type":"function","name":"nexGui.occultist","enabled":true,"code":"// nexSys is a dependency for some of these checks.\n// The code is still useful for examples on user customizations.\nif (typeof nexSys === \"undefined\") { return; }\n\n/*\n This is the GMCP property for your class balance.\n This will control the state of the class balance icon which is added as\n an hourglass on the footer.\n*/\nnexGui.api.customize.classBalance.set('Entity');\n\n/*\n Populates the nexGui defence array with defences from nexSys\n for your class which you have set a priority for.\n*/\nconst defs = Object.values(nexSys.state.defs).filter(d => d.priority > 0).map(d => d.id);\nnexGui.api.customize.defences.set(defs);\n\n// Update this to match whatever tattoos you like to maintain\nnexGui.api.customize.defences.set([\n ...nexGui.state.customize.defences,\n 'oxtattoo', 'boartattoo', 'megalithtattoo', 'chameleon', 'starburst', 'mosstattoo', 'grookbubble', 'nicatorlegend', 'astronomy',\n]);\n\n// Clear only the timers belonging to this class, identified by groupId.\n// Using .clear() with no argument removes ALL timers — a clean slate. May or may not be desired.\n// nexGui.api.timers.clear();\nnexGui.api.timers.clear('myClass');\n\n// Add timers starting from the top.\n// nexGui.api.timers.add(id, durationMs, label, options)\n// durationMs is in milliseconds. direction: 'countup' counts up from zero, 'countdown' counts down to zero.\n// Assigning a groupId ties these timers to this class — nexGui.api.timers.clear('myClass') removes only these.\nnexGui.api.timers.add('tree', 15000, 'Tree Tattoo', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('fool', 35000, 'Fool', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('sunTick', 25000, 'Sun Tick', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('crystaltattoo', 3600000, 'Crystal Tattoo', { direction: 'countup', groupId: 'myClass' });\n\n// Add timers starting from the bottom.\nnexGui.api.timers.add('tentacles', 45000, 'Tentacles', { direction: 'countdown', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('arctar', 45000, 'Arctar Orb', { direction: 'countdown', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('sunOrb', 180000, 'Sun Orb', { direction: 'countdown', position: 'bottom', groupId: 'myClass' });\n"},{"type":"function","name":"nexGui.magi","enabled":true,"code":"// nexSys is a dependency for some of these checks\nif (typeof nexSys === \"undefined\") { return; }\n\nconst defs = Object.values(nexSys.state.defs).filter(d => d.priority > 0).map(d => d.id);\nnexGui.api.customize.defences.set(defs);\n\n// Update this to match whatever tattoos you like to maintain\nnexGui.api.customize.defences.set([\n ...nexGui.state.customize.defences,\n 'oxtattoo', 'boartattoo', 'megalithtattoo', 'chameleon', 'starburst', 'mosstattoo', 'grookbubble', 'nicatorlegend', 'astronomy',\n 'stonefist', 'stoneskin', 'diamondskin', 'chargeshield'\n]);\n\n// Clear existing timers\nnexGui.api.timers.clear('myClass');\n\n// Timers at the top of panel\nnexGui.api.timers.define('tree', 15000, 'Tree Tattoo', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('crystaltattoo', 3600000, 'Crystal Tattoo', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('vibes', 2400000, 'Vibes', { direction: 'countdown', groupId: 'myClass' });\n// Timers at the bottom of panel\nnexGui.api.timers.add('stormbolt', 27000, 'Stormbolt', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('dilation', 35000, 'Dilation', { direction: 'countup', position: 'bottom', groupId: 'myClass' });"},{"type":"function","name":"nexGui.runewarden","enabled":true,"code":"// nexSys is a dependency for some of these checks. \n//The code is still useful for examples on User customizations.\nif (typeof nexSys === \"undefined\") { return; }\n"},{"type":"function","name":"nexGui.reddragon","enabled":true,"code":"// nexSys is a dependency for some of these checks\nif (typeof nexSys === \"undefined\") { return; }\n\nconst defs = Object.values(nexSys.state.defs).filter(d => d.priority > 0).map(d => d.id);\nnexGui.api.customize.defences.set(defs);\n\n// Update this to match whatever tattoos you like to maintain\nnexGui.api.customize.defences.set([\n ...nexGui.state.customize.defences,\n 'oxtattoo', 'boartattoo', 'megalithtattoo', 'chameleon', 'starburst', 'mosstattoo', 'grookbubble', 'nicatorlegend', 'astronomy',\n]);\n\n// Clear existing timers\nnexGui.api.timers.clear('myClass');\n\n// Timers at the top of panel\nnexGui.api.timers.add('tree', 15000, 'Tree Tattoo', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('dragonheal', 20000, 'Dragon Heal', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('crystaltattoo', 3600000, 'Crystal Tattoo', { direction: 'countup', groupId: 'myClass' });\n// Timers at the bottom of panel\nnexGui.api.timers.add('dragontaunt', 19000, 'Dragontaunt', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('scorch', 25000, 'Scorch', { direction: 'countup', position: 'bottom', groupId: 'myClass' });"},{"type":"function","name":"nexGui.bluedragon","enabled":true,"code":"// nexSys is a dependency for some of these checks\nif (typeof nexSys === \"undefined\") { return; }\n\n// All defenses that have a priority set by default\nconst defs = Object.values(nexSys.state.defs).filter(d => d.priority > 0).map(d => d.id);\nnexGui.api.customize.defences.set(defs);\n\n// Update this to match whatever tattoos you like to maintain\nnexGui.api.customize.defences.set([\n ...nexGui.state.customize.defences,\n 'oxtattoo', 'boartattoo', 'megalithtattoo', 'chameleon', 'starburst', 'mosstattoo', 'grookbubble', 'nicatorlegend', 'astronomy',\n]);\n\n// Clear existing timers\nnexGui.api.timers.clear('myClass');\n\n// Timers at the top of panel\nnexGui.api.timers.add('tree', 15000, 'Tree Tattoo', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('dragonheal', 20000, 'Dragon Heal', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('crystaltattoo', 3600000, 'Crystal Tattoo', { direction: 'countup', groupId: 'myClass' });\n// Timers at the bottom of panel\nnexGui.api.timers.add('dragonchill', 16000, 'Dragonchill', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('ague', 23000, 'Ague', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('glaciate', 33000, 'Glaciate', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('override', 23000, 'Override', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('frostwave', 23000, 'Frostwave', { direction: 'countup', position: 'bottom', groupId: 'myClass' });"},{"type":"function","name":"nexGui.goldendragon","enabled":true,"code":"// nexSys is a dependency for some of these checks\nif (typeof nexSys === \"undefined\") { return; }\n\n// All defenses that have a priority set by default\nconst defs = Object.values(nexSys.state.defs).filter(d => d.priority > 0).map(d => d.id);\nnexGui.api.customize.defences.set(defs);\n\n// Update this to match whatever tattoos you like to maintain\nnexGui.api.customize.defences.set([\n ...nexGui.state.customize.defences,\n 'oxtattoo', 'boartattoo', 'megalithtattoo', 'chameleon', 'starburst', 'mosstattoo', 'grookbubble', 'nicatorlegend', 'astronomy',\n]);\n\n// Clear existing timers\nnexGui.api.timers.clear('myClass');\n\n// Timers at the top of panel\nnexGui.api.timers.add('tree', 15000, 'Tree Tattoo', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('dragonheal', 20000, 'Dragon Heal', { direction: 'countup', groupId: 'myClass' });\nnexGui.api.timers.add('crystaltattoo', 3600000, 'Crystal Tattoo', { direction: 'countup', groupId: 'myClass' });\n// Timers at the bottom of panel\nnexGui.api.timers.add('deaden', 35000, 'Deaden', { direction: 'countup', position: 'bottom', groupId: 'myClass' });\nnexGui.api.timers.add('psidaze', 40000, 'Psidaze', { direction: 'countup', position: 'bottom', groupId: 'myClass' });"}]},{"type":"group","name":"nexGui.userSettings","enabled":false,"items":[]},{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"const layout = {\n layout: JSON.stringify(nexusclient.ui().layout().model().layout),\n borders: JSON.stringify(nexusclient.ui().layout().model().borders),\n}\nnexusclient.variables().vars.nexGui4Layout = layout;\nnexusclient.ui().layout().model().layout = JSON.parse(\"{\\\"type\\\":\\\"row\\\",\\\"id\\\":\\\"main\\\",\\\"children\\\":[{\\\"type\\\":\\\"row\\\",\\\"id\\\":\\\"#70e4ecdf-81dc-40c6-b536-b62595eff99b\\\",\\\"weight\\\":57.26509774852639,\\\"children\\\":[{\\\"type\\\":\\\"tabset\\\",\\\"id\\\":\\\"#f85f4040-6d4a-49c7-94bd-7244f1a3b32d\\\",\\\"weight\\\":17.557736227615205,\\\"selected\\\":1,\\\"children\\\":[{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"map\\\",\\\"name\\\":\\\"Map\\\",\\\"helpText\\\":\\\"Map\\\",\\\"component\\\":\\\"map\\\",\\\"icon\\\":\\\"route\\\"},{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"nexMap\\\",\\\"name\\\":\\\"nexMap\\\",\\\"helpText\\\":\\\"nexMap\\\",\\\"component\\\":\\\"nexMap\\\",\\\"icon\\\":\\\"feather-pointed\\\"}]},{\\\"type\\\":\\\"row\\\",\\\"id\\\":\\\"#bcb4f90b-4716-4f9b-9b22-ffd8741be626\\\",\\\"weight\\\":7.090289581370549,\\\"children\\\":[{\\\"type\\\":\\\"tabset\\\",\\\"id\\\":\\\"#b54bf1ab-4145-4041-9e67-8e6b789724b1\\\",\\\"weight\\\":11.363636363636363,\\\"children\\\":[{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"nexPlayers\\\",\\\"name\\\":\\\"nexPlayers\\\",\\\"helpText\\\":\\\"nexPlayers\\\",\\\"component\\\":\\\"nexPlayers\\\",\\\"icon\\\":\\\"feather-pointed\\\"}]},{\\\"type\\\":\\\"tabset\\\",\\\"id\\\":\\\"#3df7c443-17f5-406e-9a45-54879deb731e\\\",\\\"weight\\\":26.79425837320574,\\\"children\\\":[{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"nexNpcs\\\",\\\"name\\\":\\\"nexNpcs\\\",\\\"helpText\\\":\\\"nexNpcs\\\",\\\"component\\\":\\\"nexNpcs\\\",\\\"icon\\\":\\\"feather-pointed\\\"}]},{\\\"type\\\":\\\"tabset\\\",\\\"id\\\":\\\"#5c7c36a2-9496-4e6f-a1df-c581f898f7ac\\\",\\\"weight\\\":36.8421052631579,\\\"children\\\":[{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"nexItems\\\",\\\"name\\\":\\\"nexItems\\\",\\\"helpText\\\":\\\"nexItems\\\",\\\"component\\\":\\\"nexItems\\\",\\\"icon\\\":\\\"feather-pointed\\\"}],\\\"active\\\":true}]},{\\\"type\\\":\\\"tabset\\\",\\\"id\\\":\\\"#1eaac23b-4eae-486d-8915-90a25f41f9e0\\\",\\\"weight\\\":2.6494514015995967,\\\"children\\\":[{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"all_comm\\\",\\\"name\\\":\\\"All Comm\\\",\\\"helpText\\\":\\\"Global Communication Window\\\",\\\"component\\\":\\\"all_comm\\\",\\\"icon\\\":\\\"message-lines\\\"}]},{\\\"type\\\":\\\"tabset\\\",\\\"id\\\":\\\"#fdd3f126-a4e3-4f24-9e2b-03b2f25825ec\\\",\\\"weight\\\":30.58912072755898,\\\"enableDrop\\\":false,\\\"enableTabStrip\\\":false,\\\"children\\\":[{\\\"type\\\":\\\"tab\\\",\\\"id\\\":\\\"#90968890-c02d-44ac-947a-5651201350c8\\\",\\\"component\\\":\\\"center\\\"}]}]}]}\");\n\nnexusclient.ui().layout().model().borders = JSON.parse(\n '[{\"type\":\"border\",\"size\":700,\"location\":\"right\",\"children\":[{\"type\":\"tab\",\"id\":\"nexOptions\",\"name\":\"nexOptions\",\"helpText\":\"nexOptions\",\"component\":\"nexOptions\",\"icon\":\"feather-pointed\",\"borderWidth\":300},{\"type\":\"tab\",\"id\":\"nexParty\",\"name\":\"nexParty\",\"helpText\":\"nexParty\",\"component\":\"nexParty\",\"icon\":\"feather-pointed\",\"borderWidth\":300},{\"type\":\"tab\",\"id\":\"nexMetrics\",\"name\":\"nexMetrics\",\"helpText\":\"nexMetrics\",\"component\":\"nexMetrics\",\"icon\":\"feather-pointed\"},{\"type\":\"tab\",\"id\":\"nexStats\",\"name\":\"nexStats\",\"helpText\":\"nexStats\",\"component\":\"nexStats\",\"icon\":\"feather-pointed\",\"borderWidth\":725},{\"type\":\"tab\",\"id\":\"nexCombat\",\"name\":\"nexCombat\",\"helpText\":\"nexCombat\",\"component\":\"nexCombat\",\"icon\":\"feather-pointed\"},{\"type\":\"tab\",\"id\":\"nexSystem\",\"name\":\"nexSystem\",\"helpText\":\"nexSystem\",\"component\":\"nexSystem\",\"icon\":\"feather-pointed\"},{\"type\":\"tab\",\"id\":\"nexTarget\",\"name\":\"nexTarget\",\"helpText\":\"nexTarget\",\"component\":\"nexTarget\",\"icon\":\"feather-pointed\"},{\"type\":\"tab\",\"id\":\"nexDefences\",\"name\":\"nexDefences\",\"helpText\":\"nexDefences\",\"component\":\"nexDefences\",\"icon\":\"feather-pointed\"},{\"type\":\"tab\",\"id\":\"nexTimers\",\"name\":\"nexTimers\",\"helpText\":\"nexTimers\",\"component\":\"nexTimers\",\"icon\":\"feather-pointed\"},{\"type\":\"tab\",\"id\":\"nexFeed\",\"name\":\"nexFeed\",\"helpText\":\"nexFeed\",\"component\":\"nexFeed\",\"icon\":\"feather-pointed\"}]}]'\n);\n"}],"text":"ng mobile","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"console.log('browser');\nconst layout = nexusclient.variables().vars.nexGui4Layout;\nconsole.log(layout);\nnexusclient.ui().layout().model().layout = JSON.parse(layout.layout);\n\nnexusclient.ui().layout().model().borders = JSON.parse(layout.borders);"}],"text":"ng browser","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"alias","name":"","enabled":true,"actions":[{"type":"script","enabled":true,"script":"/**\nThis alias is for debugging purposes only.\nPlayers should never need to use this.\n*/\nreturn;\nnexDrop.import('nexgui5.min').then(() => {\n setTimeout(()=>{\n nexGui.bootstrapNexus();\n\n // nexusclient.packages().get('nexGui3').items.find(e => e.name == \"nexGui.colors\").items.find(e => e.name == \"balances\").enabled\n }, 2000)\n});"}],"text":"ng load","matching":"exact","whole_words":true,"case_sensitive":true,"prefix_suffix":true},{"type":"alias","name":"","enabled":false,"actions":[{"type":"script","enabled":true,"script":"if (typeof nexGui === 'undefined' /*|| typeof Realm === 'undefined'*/) {return;}\n\nnexGui.aliases.call(args[1], args[2] ? args[2] : false)"}],"text":"^ng (\\w+)\\s?(.+)?$","matching":"regexp","whole_words":true,"case_sensitive":true,"prefix_suffix":true}],"description":"Khaseem's Nexus GUI for Nexus 3.0"}
|