mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-05-19 13:45:19 -05:00
54 lines
1.9 KiB
JavaScript
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;
|
|
}
|
|
}
|
|
};
|