pokemon-showdown/data/mods/mergemons/scripts.js
2019-09-02 01:24:45 +04:00

47 lines
1.5 KiB
JavaScript

'use strict';
/**@type {ModdedBattleScriptsData} */
exports.BattleScripts = {
init() {
let learnsets = Object.assign({}, this.data.Learnsets);
let dex = [];
for (let i in this.data.Pokedex) {
if (this.data.Pokedex[i].num <= 0 || this.data.FormatsData[i].isUnreleased) continue;
if (this.data.Pokedex[i].evos) continue;
if (!this.data.FormatsData[i].tier || !learnsets[i]) continue;
if (this.data.FormatsData[i].tier === 'Illegal') continue;
dex.push(i);
}
for (let i = 0; i < dex.length; i++) {
let pokemon = dex[i];
while (this.data.Pokedex[pokemon].prevo) {
pokemon = this.data.Pokedex[pokemon].prevo;
}
let target = dex[(i === 0 ? dex.length - 1 : i - 1)];
while (this.data.Pokedex[pokemon].num === this.data.Pokedex[target].num) {
target = dex[dex.indexOf(target) - 1];
}
let merge = false;
do {
let learnset = learnsets[target].learnset;
for (let move in learnset) {
if (move === 'shellsmash') continue;
let source = learnset[move][0].charAt(0) + 'L0';
if (!(move in learnsets[pokemon].learnset)) this.modData('Learnsets', pokemon).learnset[move] = [source];
}
if (this.data.Pokedex[target].prevo) {
target = this.data.Pokedex[target].prevo;
} else if (!merge) {
merge = true;
target = dex[(i === dex.length - 1 ? 0 : i + 1)];
while (this.data.Pokedex[pokemon].num === this.data.Pokedex[target].num) {
target = dex[dex.indexOf(target) + 1];
}
} else {
target = '';
}
} while (target && learnsets[target]);
}
},
};