Template:CorruptionsTable/doc: Difference between revisions

Update script to include data sort values and regex so manually replacing effect icons isn't necessary
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>