5,003
edits
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. | ||
<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")); | |||
const modifyDescription = (text) => { | |||
let results = [`<noinclude>{{/doc}}[[Category:Manual Tables]]</noinclude>\n{| class="wikitable sortable | 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 => { | ||
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|}' : | 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> |