Template:CorruptionsTable/doc: Difference between revisions

From Melvor Idle
m (Change style of output results; Use text-positive class instead of a color style)
(Update script to include data sort values and regex so manually replacing effect icons isn't necessary)
Line 1: Line 1:
A script is used to generate the following table. To use, open the game and paste the below into the [[In-game_Functions#Using_In-game_Functions|console]]. The outputs will be copied to your clipboard automatically. After running the script, 'edit source' on [[Template:CorruptionsTable]] then Ctrl+A and Ctrl+V. Look over the contents to ensure everything looks fine.
A script is used to generate the following table. To use, open the game and paste the below into the [[In-game_Functions#Using_In-game_Functions|console]]. The outputs will be copied to your clipboard automatically. After running the script, 'edit source' on [[Template:CorruptionsTable]] then Ctrl+A and Ctrl+V. Look over the contents to ensure everything looks fine.


A manual pass will need to be done to add links to different status effects, buffs, and enemy debuffs, such as [[Laceration]], [[Slow]], etc. Limit these links to once per effect.
<syntaxhighlight lang="javascript" line>
const EFFECT_ICON_MODIFICATIONS = [{ effect: 'Bleed' }, { effect: 'Slow' }, { effect: 'Laceration' }, { effect: 'Ablaze' }, { effect: 'Blight' }, { effect: 'Fear' }, { effect: 'Silence' }];
const LINKS_MODIFICATIONS = [ { effect: 'Attack Interval' },  { effect: 'Lifesteal' },  { effect: 'Accuracy Rating' },  { effect: 'Global Evasion' }];
const ICON_MODIFICATIONS = [ { effect: 'Unholy Prayers' }, { effect: 'Barrier' }, { effect: 'Abyssal Resistance' }];
[...EFFECT_ICON_MODIFICATIONS, ...LINKS_MODIFICATIONS, ...ICON_MODIFICATIONS].forEach(x => x["regex"] = new RegExp("\\b" + x.effect + "\\b", "ig"));


<syntaxhighlight lang="javascript" line>
const modifyDescription = (text) => {
let results = [`<noinclude>{{/doc}}[[Category:Manual Tables]]</noinclude>\n{| class="wikitable sortable stickyHeader"\n|-\n! Min Monster Lvl\n! Effect`];
EFFECT_ICON_MODIFICATIONS.forEach((x, i) => { text = text.replace(x.regex, `{{EffectIcon|${x.effect}}}`); });
LINKS_MODIFICATIONS.forEach((x, i) => { text = text.replace(x.regex, `[[${x.effect}]]`); });
ICON_MODIFICATIONS.forEach((x, i) => { text = text.replace(x.regex, `{{Icon|${x.effect}}}`); });
text = text.replace('Global Accuracy', '[[Accuracy Rating|Global Accuracy]]');
return text
}
 
let results = [`<noinclude>{{/doc}}[[Category:Manual Tables]]</noinclude>\n{| class="wikitable sortable"\n|-\n! Min Monster Lvl\n! Effect`];
game.corruption.corruptionEffects.allRows.sort((a,b) => a.minMonsterLevel - b.minMonsterLevel).forEach(row => {
game.corruption.corruptionEffects.allRows.sort((a,b) => a.minMonsterLevel - b.minMonsterLevel).forEach(row => {
results.push(`| ${row.minMonsterLevel ? numberWithCommas(row.minMonsterLevel) : 'Starts Unlocked'}\n| <span class="text-positive">${row.customDescription}</span>`);
let description = modifyDescription(row.customDescription),
monsterLevelReq = row.minMonsterLevel ? numberWithCommas(row.minMonsterLevel) : 'Starts Unlocked';
results.push(`|data-sort-value="${row.minMonsterLevel}"| ${monsterLevelReq}\n| <span class="text-positive">${description}</span>`);
});
});
let output = ``;results.forEach((alias, i) => output += alias + (i === results.length - 1 ? '\n|}' : '\n|-\n'));console.log(output);
let output = ``;results.forEach((alias, i) => output += alias + (i === results.length - 1 ? '\n|}' : `\n|-\n`));console.log(output);
self.nw?.Clipboard.get().set ? self.nw?.Clipboard?.get().set(output, 'text') : copy(output);
self.nw?.Clipboard.get().set ? self.nw?.Clipboard?.get().set(output, 'text') : copy(output);
</syntaxhighlight>
</syntaxhighlight>

Revision as of 18:56, 20 September 2024

A script is used to generate the following table. To use, open the game and paste the below into the console. The outputs will be copied to your clipboard automatically. After running the script, 'edit source' on Template:CorruptionsTable then Ctrl+A and Ctrl+V. Look over the contents to ensure everything looks fine.

const EFFECT_ICON_MODIFICATIONS = [{ effect: 'Bleed' }, { effect: 'Slow' }, { effect: 'Laceration' }, { effect: 'Ablaze' }, { effect: 'Blight' }, { effect: 'Fear' }, { effect: 'Silence' }];
const LINKS_MODIFICATIONS = [ { effect: 'Attack Interval' },  { effect: 'Lifesteal' },  { effect: 'Accuracy Rating' },  { effect: 'Global Evasion' }];
const ICON_MODIFICATIONS = [ { effect: 'Unholy Prayers' }, { effect: 'Barrier' }, { effect: 'Abyssal Resistance' }];
[...EFFECT_ICON_MODIFICATIONS, ...LINKS_MODIFICATIONS, ...ICON_MODIFICATIONS].forEach(x => x["regex"] = new RegExp("\\b" + x.effect + "\\b", "ig"));

const modifyDescription = (text) => {
	EFFECT_ICON_MODIFICATIONS.forEach((x, i) => { text = text.replace(x.regex, `{{EffectIcon|${x.effect}}}`); });
	LINKS_MODIFICATIONS.forEach((x, i) => { text = text.replace(x.regex, `[[${x.effect}]]`); });
	ICON_MODIFICATIONS.forEach((x, i) => { text = text.replace(x.regex, `{{Icon|${x.effect}}}`); });
	text = text.replace('Global Accuracy', '[[Accuracy Rating|Global Accuracy]]');
	return text
}

let results = [`<noinclude>{{/doc}}[[Category:Manual Tables]]</noinclude>\n{| class="wikitable sortable"\n|-\n! Min Monster Lvl\n! Effect`];
game.corruption.corruptionEffects.allRows.sort((a,b) => a.minMonsterLevel - b.minMonsterLevel).forEach(row => {
	let description = modifyDescription(row.customDescription),
		monsterLevelReq = row.minMonsterLevel ? numberWithCommas(row.minMonsterLevel) : 'Starts Unlocked';
	results.push(`|data-sort-value="${row.minMonsterLevel}"| ${monsterLevelReq}\n| <span class="text-positive">${description}</span>`);
});
let output = ``;results.forEach((alias, i) => output += alias + (i === results.length - 1 ? '\n|}' : `\n|-\n`));console.log(output);
self.nw?.Clipboard.get().set ? self.nw?.Clipboard?.get().set(output, 'text') : copy(output);