Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- randomHCTeam: function (side) {
- var team = [];
- var itemPool = Object.keys(this.data.Items);
- var abilityPool = Object.keys(this.data.Abilities);
- var movePool = Object.keys(this.data.Movedex);
- var naturePool = Object.keys(this.data.Natures);
- var hasDexNumber = {};
- var formes = [[], [], [], [], [], []];
- // Pick six random pokemon--no repeats, even among formes
- // Also need to either normalize for formes or select formes at random
- // Unreleased are okay but no CAP
- var num;
- for (var i = 0; i < 6; i++) {
- do {
- num = this.random(721) + 1;
- } while (num in hasDexNumber);
- hasDexNumber[num] = i;
- }
- for (var id in this.data.Pokedex) {
- if (!(this.data.Pokedex[id].num in hasDexNumber)) continue;
- var template = this.getTemplate(id);
- if (template.learnset && template.species !== 'Pichu-Spiky-eared') {
- formes[hasDexNumber[template.num]].push(template.species);
- }
- }
- for (var i = 0; i < 6; i++) {
- // Choose forme
- var pokemon = formes[i][this.random(formes[i].length)];
- var template = this.getTemplate(pokemon);
- // Random unique item
- var item = '';
- do {
- item = this.sampleNoReplace(itemPool);
- } while (this.data.Items[item].isNonstandard);
- // Genesect forms are a sprite difference based on its Drives
- if (template.species.substr(0, 9) === 'Genesect-' && item !== toId(template.requiredItem)) pokemon = 'Genesect';
- // Random unique ability
- var ability = '';
- do {
- ability = this.sampleNoReplace(abilityPool);
- } while (this.data.Abilities[ability].isNonstandard);
- // Random unique moves
- var m = [];
- while (true) {
- var moveid = this.sampleNoReplace(movePool);
- if (!this.data.Movedex[moveid].isNonstandard && (moveid === 'hiddenpower' || moveid.substr(0, 11) !== 'hiddenpower')) {
- if (m.push(moveid) >= 4) break;
- }
- }
- // Random EVs
- var evs = {hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0};
- var s = ['hp', 'atk', 'def', 'spa', 'spd', 'spe'];
- var evpool = 510;
- do {
- var x = s[this.random(s.length)];
- var y = this.random(Math.min(256 - evs[x], evpool + 1));
- evs[x] += y;
- evpool -= y;
- } while (evpool > 0);
- // Random IVs
- var ivs = {hp: this.random(32), atk: this.random(32), def: this.random(32), spa: this.random(32), spd: this.random(32), spe: this.random(32)};
- // Random nature
- var nature = naturePool[this.random(naturePool.length)];
- // Level balance
- var mbstmin = 1307;
- var stats = template.baseStats;
- var mbst = (stats['hp'] * 2 + 31 + 21 + 100) + 10;
- mbst += (stats['atk'] * 2 + 31 + 21 + 100) + 5;
- mbst += (stats['def'] * 2 + 31 + 21 + 100) + 5;
- mbst += (stats['spa'] * 2 + 31 + 21 + 100) + 5;
- mbst += (stats['spd'] * 2 + 31 + 21 + 100) + 5;
- mbst += (stats['spe'] * 2 + 31 + 21 + 100) + 5;
- var level = Math.floor(100 * mbstmin / mbst);
- while (level < 100) {
- mbst = Math.floor((stats['hp'] * 2 + 31 + 21 + 100) * level / 100 + 10);
- mbst += Math.floor(((stats['atk'] * 2 + 31 + 21 + 100) * level / 100 + 5) * level / 100);
- mbst += Math.floor((stats['def'] * 2 + 31 + 21 + 100) * level / 100 + 5);
- mbst += Math.floor(((stats['spa'] * 2 + 31 + 21 + 100) * level / 100 + 5) * level / 100);
- mbst += Math.floor((stats['spd'] * 2 + 31 + 21 + 100) * level / 100 + 5);
- mbst += Math.floor((stats['spe'] * 2 + 31 + 21 + 100) * level / 100 + 5);
- if (mbst >= mbstmin) break;
- level++;
- }
- // Random happiness
- var happiness = this.random(256);
- // Random shininess
- var shiny = !this.random(1024);
- team.push({
- name: pokemon,
- item: item,
- ability: ability,
- moves: m,
- evs: evs,
- ivs: ivs,
- nature: nature,
- level: level,
- happiness: happiness,
- shiny: shiny
- });
- }
- return team;
- },
Advertisement
Add Comment
Please, Sign In to add comment