pokemon-showdown/mods/statswitch/scripts.js
2014-12-01 11:32:03 -05:00

54 lines
1.9 KiB
JavaScript

exports.BattleScripts = {
init: function () {
var battleFormeIDs = {'Mega':1, 'Mega-X':1, 'Mega-Y':1};
// due to a happy coincidence, no other Pokémon having HP as its min xor max stat changes forme in-battle
var battleAltFormes = [];
for (var i in this.data.Pokedex) {
var dexEntry = this.data.Pokedex[i];
if (dexEntry.forme in battleFormeIDs) {
// should be processed after their base forme is
battleAltFormes.push(i);
continue;
}
var maxValue = dexEntry.baseStats[Object.max(dexEntry.baseStats)];
var minValue = dexEntry.baseStats[Object.min(dexEntry.baseStats)];
if (maxValue === minValue) continue;
var modStats = {};
for (var statID in dexEntry.baseStats) {
if (dexEntry.baseStats[statID] === maxValue) {
modStats[statID] = minValue;
} else if (dexEntry.baseStats[statID] === minValue) {
modStats[statID] = maxValue;
} else {
modStats[statID] = dexEntry.baseStats[statID];
}
}
this.modData('Pokedex', i).baseStats = modStats;
}
// megas inherit the swapped HP from the base forme and ignore it for their own swap
for (var i = 0, len = battleAltFormes.length; i < len; i++) {
var dexEntry = this.data.Pokedex[battleAltFormes[i]];
var swappableStats = Object.reject(dexEntry.baseStats, 'hp');
var maxValue = swappableStats[Object.max(swappableStats)];
var minValue = swappableStats[Object.min(swappableStats)];
if (maxValue === minValue) continue;
var modStats = {'hp': this.data.Pokedex[toId(dexEntry.baseSpecies)].baseStats['hp']};
for (var statID in swappableStats) {
if (swappableStats[statID] === maxValue) {
modStats[statID] = minValue;
} else if (swappableStats[statID] === minValue) {
modStats[statID] = maxValue;
} else {
modStats[statID] = swappableStats[statID];
}
}
this.modData('Pokedex', battleAltFormes[i]).baseStats = modStats;
}
}
};