From 64c595197014a5c73c7750f7a5da765daca4e830 Mon Sep 17 00:00:00 2001 From: livid washed <115855253+livid-washed@users.noreply.github.com> Date: Fri, 10 May 2024 10:52:33 +1000 Subject: [PATCH] Move Random Battles files to a separate folder (#10285) * Move Random Battles files to a new folder * Fix bdsp test * Move SSB back and move rands files into folders * fix BF tests * fix test * fix bug * fix SSB teamgen --- data/mods/gen7pokebilities/random-teams.ts | 5 - data/mods/gen9ssb/random-teams.ts | 2 +- data/mods/mixandmega/random-teams.ts | 154 ------------- data/mods/partnersincrime/random-teams.ts | 5 - data/mods/potd/random-teams.ts | 206 ------------------ .../gen1/data.json} | 0 .../gen1/teams.ts} | 4 +- .../gen2/sets.json} | 0 .../gen2/teams.ts} | 6 +- .../gen3/sets.json} | 0 .../gen3/teams.ts} | 6 +- .../gen4/sets.json} | 0 .../gen4/teams.ts} | 6 +- .../gen5/sets.json} | 0 .../gen5/teams.ts} | 6 +- .../gen6/factory-sets.json | 0 .../gen6/sets.json} | 0 .../gen6/teams.ts} | 6 +- .../gen7/bss-factory-sets.json | 0 .../gen7/factory-sets.json | 0 .../gen7/sets.json} | 0 .../gen7/teams.ts} | 4 +- .../gen7letsgo/data.json} | 0 .../gen7letsgo/teams.ts} | 4 +- .../gen8/bss-factory-sets.json | 0 .../gen8/cap-1v1-sets.json | 0 .../gen8/data.json} | 0 .../gen8/factory-sets.json | 0 .../gen8/teams.ts} | 2 +- .../gen8bdsp/data.json} | 0 .../gen8bdsp/teams.ts} | 4 +- .../gen9/doubles-sets.json} | 0 .../gen9/sets.json} | 0 .../gen9/teams.ts} | 14 +- .../randomroulette/teams.ts} | 2 +- .../sharedpower/teams.ts} | 2 +- server/chat-plugins/randombattles/index.ts | 9 +- sim/teams.ts | 7 +- test/random-battles/all-gens.js | 16 +- test/random-battles/gen2.js | 4 +- test/random-battles/gen3.js | 4 +- test/random-battles/gen4.js | 4 +- test/random-battles/gen5.js | 4 +- test/random-battles/gen6.js | 4 +- test/random-battles/gen7.js | 4 +- test/random-battles/gen8.js | 4 +- test/random-battles/gen9.js | 4 +- tsconfig.json | 1 + 48 files changed, 67 insertions(+), 436 deletions(-) delete mode 100644 data/mods/gen7pokebilities/random-teams.ts delete mode 100644 data/mods/mixandmega/random-teams.ts delete mode 100644 data/mods/partnersincrime/random-teams.ts delete mode 100644 data/mods/potd/random-teams.ts rename data/{mods/gen1/random-data.json => random-battles/gen1/data.json} (100%) rename data/{mods/gen1/random-teams.ts => random-battles/gen1/teams.ts} (99%) rename data/{mods/gen2/random-sets.json => random-battles/gen2/sets.json} (100%) rename data/{mods/gen2/random-teams.ts => random-battles/gen2/teams.ts} (99%) rename data/{mods/gen3/random-sets.json => random-battles/gen3/sets.json} (100%) rename data/{mods/gen3/random-teams.ts => random-battles/gen3/teams.ts} (99%) rename data/{mods/gen4/random-sets.json => random-battles/gen4/sets.json} (100%) rename data/{mods/gen4/random-teams.ts => random-battles/gen4/teams.ts} (99%) rename data/{mods/gen5/random-sets.json => random-battles/gen5/sets.json} (100%) rename data/{mods/gen5/random-teams.ts => random-battles/gen5/teams.ts} (99%) rename data/{mods => random-battles}/gen6/factory-sets.json (100%) rename data/{mods/gen6/random-sets.json => random-battles/gen6/sets.json} (100%) rename data/{mods/gen6/random-teams.ts => random-battles/gen6/teams.ts} (99%) rename data/{mods => random-battles}/gen7/bss-factory-sets.json (100%) rename data/{mods => random-battles}/gen7/factory-sets.json (100%) rename data/{mods/gen7/random-sets.json => random-battles/gen7/sets.json} (100%) rename data/{mods/gen7/random-teams.ts => random-battles/gen7/teams.ts} (99%) rename data/{mods/gen7letsgo/random-data.json => random-battles/gen7letsgo/data.json} (100%) rename data/{mods/gen7letsgo/random-teams.ts => random-battles/gen7letsgo/teams.ts} (99%) rename data/{mods => random-battles}/gen8/bss-factory-sets.json (100%) rename data/{mods => random-battles}/gen8/cap-1v1-sets.json (100%) rename data/{mods/gen8/random-data.json => random-battles/gen8/data.json} (100%) rename data/{mods => random-battles}/gen8/factory-sets.json (100%) rename data/{mods/gen8/random-teams.ts => random-battles/gen8/teams.ts} (99%) rename data/{mods/gen8bdsp/random-data.json => random-battles/gen8bdsp/data.json} (100%) rename data/{mods/gen8bdsp/random-teams.ts => random-battles/gen8bdsp/teams.ts} (99%) rename data/{random-doubles-sets.json => random-battles/gen9/doubles-sets.json} (100%) rename data/{random-sets.json => random-battles/gen9/sets.json} (100%) rename data/{random-teams.ts => random-battles/gen9/teams.ts} (99%) rename data/{mods/randomroulette/random-teams.ts => random-battles/randomroulette/teams.ts} (69%) rename data/{mods/sharedpower/random-teams.ts => random-battles/sharedpower/teams.ts} (68%) diff --git a/data/mods/gen7pokebilities/random-teams.ts b/data/mods/gen7pokebilities/random-teams.ts deleted file mode 100644 index f364755b8a..0000000000 --- a/data/mods/gen7pokebilities/random-teams.ts +++ /dev/null @@ -1,5 +0,0 @@ -import RandomGen7Teams from '../gen7/random-teams'; - -export class RandomGen7PokebilitiesTeams extends RandomGen7Teams {} - -export default RandomGen7PokebilitiesTeams; diff --git a/data/mods/gen9ssb/random-teams.ts b/data/mods/gen9ssb/random-teams.ts index e35b99e30c..65a548e5f6 100644 --- a/data/mods/gen9ssb/random-teams.ts +++ b/data/mods/gen9ssb/random-teams.ts @@ -1,4 +1,4 @@ -import RandomTeams from '../../random-teams'; +import RandomTeams from '../../random-battles/gen9/teams'; export interface SSBSet { species: string; diff --git a/data/mods/mixandmega/random-teams.ts b/data/mods/mixandmega/random-teams.ts deleted file mode 100644 index 188541d28a..0000000000 --- a/data/mods/mixandmega/random-teams.ts +++ /dev/null @@ -1,154 +0,0 @@ -import {RandomTeams} from './../../random-teams'; -import {toID} from '../../../sim/dex'; - -const mnmItems = [ - 'blueorb', 'redorb', 'rustedshield', 'rustedsword', -]; - -export class RandomMnMTeams extends RandomTeams { - randomCCTeam(): RandomTeamsTypes.RandomSet[] { - this.enforceNoDirectCustomBanlistChanges(); - - const dex = this.dex; - const team = []; - - const natures = this.dex.natures.all(); - const items = this.dex.items.all().filter(item => item.megaStone || mnmItems.includes(item.id)); - - const randomN = this.randomNPokemon(this.maxTeamSize, this.forceMonotype, undefined, undefined, true); - - for (let forme of randomN) { - let species = dex.species.get(forme); - if (species.isNonstandard) species = dex.species.get(species.baseSpecies); - - // Random legal item - let item = ''; - let isIllegalItem; - if (this.gen >= 2) { - do { - item = this.sample(items).name; - isIllegalItem = this.dex.items.get(item).gen > this.gen || this.dex.items.get(item).isNonstandard; - } while (isIllegalItem); - } - - // Make sure forme is legal - if (species.battleOnly) { - if (typeof species.battleOnly === 'string') { - species = dex.species.get(species.battleOnly); - } else { - species = dex.species.get(this.sample(species.battleOnly)); - } - forme = species.name; - } else if (species.requiredItems && !species.requiredItems.some(req => toID(req) === item)) { - if (!species.changesFrom) throw new Error(`${species.name} needs a changesFrom value`); - species = dex.species.get(species.changesFrom); - forme = species.name; - } - - // Random legal ability - const abilities = Object.values(species.abilities).filter(a => this.dex.abilities.get(a).gen <= this.gen); - const ability: string = this.gen <= 2 ? 'No Ability' : this.sample(abilities); - - // Four random unique moves from the movepool - let pool = ['struggle']; - if (forme === 'Smeargle') { - pool = this.dex.moves.all() - .filter(move => !(move.isNonstandard || move.isZ || move.isMax || move.realMove)) - .map(m => m.id); - } else { - pool = [...this.dex.species.getMovePool(species.id)]; - } - - const moves = this.multipleSamplesNoReplace(pool, this.maxMoveCount); - - // Random EVs - const evs: StatsTable = {hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0}; - const s: StatID[] = ["hp", "atk", "def", "spa", "spd", "spe"]; - let evpool = 510; - do { - const x = this.sample(s); - const y = this.random(Math.min(256 - evs[x], evpool + 1)); - evs[x] += y; - evpool -= y; - } while (evpool > 0); - - // Random IVs - const 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 - const nature = this.sample(natures).name; - - // Level balance--calculate directly from stats rather than using some silly lookup table - const mbstmin = 1307; // Sunkern has the lowest modified base stat total, and that total is 807 - - let stats = species.baseStats; - // If Wishiwashi, use the school-forme's much higher stats - if (species.baseSpecies === 'Wishiwashi') stats = Dex.species.get('wishiwashischool').baseStats; - - // Modified base stat total assumes 31 IVs, 85 EVs in every stat - let 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; - - let level; - if (this.adjustLevel) { - level = this.adjustLevel; - } else { - level = Math.floor(100 * mbstmin / mbst); // Initial level guess will underestimate - - while (level < 100) { - mbst = Math.floor((stats["hp"] * 2 + 31 + 21 + 100) * level / 100 + 10); - // Since damage is roughly proportional to level - 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 - const happiness = this.random(256); - - // Random shininess - const shiny = this.randomChance(1, 1024); - - const set: RandomTeamsTypes.RandomSet = { - name: species.baseSpecies, - species: species.name, - gender: species.gender, - item, - ability, - moves, - evs, - ivs, - nature, - level, - happiness, - shiny, - }; - if (this.gen === 9) { - // Tera type - set.teraType = this.sample(this.dex.types.all()).name; - } - team.push(set); - } - - return team; - } -} - -export default RandomMnMTeams; diff --git a/data/mods/partnersincrime/random-teams.ts b/data/mods/partnersincrime/random-teams.ts deleted file mode 100644 index 600818a738..0000000000 --- a/data/mods/partnersincrime/random-teams.ts +++ /dev/null @@ -1,5 +0,0 @@ -import RandomTeams from '../../random-teams'; - -export class RandomPartnersInCrimeTeams extends RandomTeams {} - -export default RandomPartnersInCrimeTeams; diff --git a/data/mods/potd/random-teams.ts b/data/mods/potd/random-teams.ts deleted file mode 100644 index bca2df23e2..0000000000 --- a/data/mods/potd/random-teams.ts +++ /dev/null @@ -1,206 +0,0 @@ -import {RandomTeams} from './../../random-teams'; - -const potdPokemon = [ - "hoopa", "groudon", "dachsbun", "squawkabilly", "cacturne", "typhlosion", "jolteon", "masquerain", "falinks", - "wyrdeer", "gardevoir", "decidueye", "hawlucha", "azelf", "gothitelle", "donphan", "pikachu", "zaciancrowned", - "quagsire", "uxie", "dondozo", "orthworm", "klawf", "dunsparce", "avalugg", "pawmot", "qwilfish", "lilliganthisui", -]; - -export class RandomPOTDTeams extends RandomTeams { - randomTeam() { - this.enforceNoDirectCustomBanlistChanges(); - - const seed = this.prng.seed; - const ruleTable = this.dex.formats.getRuleTable(this.format); - const pokemon: RandomTeamsTypes.RandomSet[] = []; - - // For Monotype - const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause'); - const isDoubles = this.format.gameType !== 'singles'; - const typePool = this.dex.types.names(); - const type = this.forceMonotype || this.sample(typePool); - - // PotD stuff - const day = new Date().getDate(); - const potd = this.dex.species.get(potdPokemon[day > 28 ? 27 : day - 1]); - - const baseFormes: {[k: string]: number} = {}; - - const tierCount: {[k: string]: number} = {}; - const typeCount: {[k: string]: number} = {}; - const typeComboCount: {[k: string]: number} = {}; - const typeWeaknesses: {[k: string]: number} = {}; - const teamDetails: RandomTeamsTypes.TeamDetails = {}; - - const pokemonList = isDoubles ? Object.keys(this.randomDoublesSets) : Object.keys(this.randomSets); - const [pokemonPool, baseSpeciesPool] = this.getPokemonPool( - type, pokemon, isMonotype, pokemonList.filter(m => this.dex.species.get(m).baseSpecies !== potd.baseSpecies) - ); - - // Add PotD to type counts - for (const typeName of potd.types) { - typeCount[typeName] = 1; - } - typeComboCount[potd.types.slice().sort().join()] = 1; - - // Increment weakness counter - for (const typeName of this.dex.types.names()) { - // it's weak to the type - if (this.dex.getEffectiveness(typeName, potd) > 0) { - typeWeaknesses[typeName] = 1; - } - } - - while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) { - const baseSpecies = this.sampleNoReplace(baseSpeciesPool); - let species = this.dex.species.get(this.sample(pokemonPool[baseSpecies])); - if (!species.exists) continue; - - // Limit to one of each species (Species Clause) - if (baseFormes[species.baseSpecies]) continue; - - // Illusion shouldn't be on the last slot - if (species.baseSpecies === 'Zoroark' && pokemon.length >= (this.maxTeamSize - 1)) continue; - - // If Zoroark is in the team, the sixth slot should not be a Pokemon with extremely low level - if ( - pokemon.some(pkmn => pkmn.name === 'Zoroark') && - pokemon.length >= (this.maxTeamSize - 1) && - this.getLevel(species, isDoubles) < 72 && - !this.adjustLevel - ) { - continue; - } - - // Pokemon with Last Respects, Intrepid Sword, and Dauntless Shield shouldn't be leading - if (['Basculegion', 'Houndstone', 'Zacian', 'Zamazenta'].includes(species.baseSpecies) && !pokemon.length) continue; - - const tier = species.tier; - const types = species.types; - const typeCombo = types.slice().sort().join(); - // Dynamically scale limits for different team sizes. The default and minimum value is 1. - const limitFactor = Math.round(this.maxTeamSize / 6) || 1; - - // Limit one Pokemon per tier, two for Monotype - // Disable this for now, since it is still a new gen - // Unless you want to have a lot of Ubers! - // if ( - // (tierCount[tier] >= (this.forceMonotype || isMonotype ? 2 : 1) * limitFactor) && - // !this.randomChance(1, Math.pow(5, tierCount[tier])) - // ) { - // continue; - // } - - if (!isMonotype && !this.forceMonotype) { - let skip = false; - - // Limit two of any type - for (const typeName of types) { - if (typeCount[typeName] >= 2 * limitFactor) { - skip = true; - break; - } - } - if (skip) continue; - - // Limit three weak to any type - for (const typeName of this.dex.types.names()) { - // it's weak to the type - if (this.dex.getEffectiveness(typeName, species) > 0) { - if (!typeWeaknesses[typeName]) typeWeaknesses[typeName] = 0; - if (typeWeaknesses[typeName] >= 3 * limitFactor) { - skip = true; - break; - } - } - } - if (skip) continue; - } - - // Limit one of any type combination, two in Monotype - if (!this.forceMonotype && typeComboCount[typeCombo] >= (isMonotype ? 2 : 1) * limitFactor) continue; - - // The Pokemon of the Day - if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd; - - const set = this.randomSet(species, teamDetails, pokemon.length === 0, isDoubles); - - // Okay, the set passes, add it to our team - pokemon.push(set); - if (pokemon.length === this.maxTeamSize) { - // Set Zoroark's level to be the same as the last Pokemon - const illusion = teamDetails.illusion; - if (illusion) pokemon[illusion - 1].level = pokemon[this.maxTeamSize - 1].level; - - // Don't bother tracking details for the last Pokemon - break; - } - - // Now that our Pokemon has passed all checks, we can increment our counters - baseFormes[species.baseSpecies] = 1; - - // Increment tier counter - if (tierCount[tier]) { - tierCount[tier]++; - } else { - tierCount[tier] = 1; - } - - // Don't increment type/weakness counters for POTD, since they were added at the beginning - if (pokemon.length !== 1 && this.maxTeamSize !== 1) { - // Increment type counters - for (const typeName of types) { - if (typeName in typeCount) { - typeCount[typeName]++; - } else { - typeCount[typeName] = 1; - } - } - if (typeCombo in typeComboCount) { - typeComboCount[typeCombo]++; - } else { - typeComboCount[typeCombo] = 1; - } - - // Increment weakness counter - for (const typeName of this.dex.types.names()) { - // it's weak to the type - if (this.dex.getEffectiveness(typeName, species) > 0) { - typeWeaknesses[typeName]++; - } - } - } - - // Track what the team has - if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1; - if (set.ability === 'Drought' || set.moves.includes('sunnyday')) teamDetails.sun = 1; - if (set.ability === 'Sand Stream') teamDetails.sand = 1; - if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) { - teamDetails.snow = 1; - } - if (set.moves.includes('spikes')) teamDetails.spikes = (teamDetails.spikes || 0) + 1; - if (set.moves.includes('stealthrock')) teamDetails.stealthRock = 1; - if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1; - if (set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1; - if (set.moves.includes('toxicspikes')) teamDetails.toxicSpikes = 1; - if (set.moves.includes('defog')) teamDetails.defog = 1; - if (set.moves.includes('rapidspin')) teamDetails.rapidSpin = 1; - if (set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1; - if (set.moves.includes('tidyup')) teamDetails.rapidSpin = 1; - if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) { - teamDetails.screens = 1; - } - if (set.role === 'Tera Blast user') teamDetails.teraBlast = 1; - - // For setting Zoroark's level - if (set.ability === 'Illusion') teamDetails.illusion = pokemon.length; - } - if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built - throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`); - } - - return pokemon; - } -} - -export default RandomPOTDTeams; diff --git a/data/mods/gen1/random-data.json b/data/random-battles/gen1/data.json similarity index 100% rename from data/mods/gen1/random-data.json rename to data/random-battles/gen1/data.json diff --git a/data/mods/gen1/random-teams.ts b/data/random-battles/gen1/teams.ts similarity index 99% rename from data/mods/gen1/random-teams.ts rename to data/random-battles/gen1/teams.ts index 8a7216c728..0b2d16b1d7 100644 --- a/data/mods/gen1/random-teams.ts +++ b/data/random-battles/gen1/teams.ts @@ -1,4 +1,4 @@ -import RandomGen2Teams from '../gen2/random-teams'; +import RandomGen2Teams from '../gen2/teams'; import {Utils} from '../../../lib'; interface HackmonsCupEntry { @@ -15,7 +15,7 @@ interface Gen1RandomBattleSpecies { } export class RandomGen1Teams extends RandomGen2Teams { - randomData: {[species: string]: Gen1RandomBattleSpecies} = require('./random-data.json'); + randomData: {[species: string]: Gen1RandomBattleSpecies} = require('./data.json'); // Challenge Cup or CC teams are basically fully random teams. randomCCTeam() { diff --git a/data/mods/gen2/random-sets.json b/data/random-battles/gen2/sets.json similarity index 100% rename from data/mods/gen2/random-sets.json rename to data/random-battles/gen2/sets.json diff --git a/data/mods/gen2/random-teams.ts b/data/random-battles/gen2/teams.ts similarity index 99% rename from data/mods/gen2/random-teams.ts rename to data/random-battles/gen2/teams.ts index be8b74df9f..7810c2d9c7 100644 --- a/data/mods/gen2/random-teams.ts +++ b/data/random-battles/gen2/teams.ts @@ -1,6 +1,6 @@ -import RandomGen3Teams from '../gen3/random-teams'; +import RandomGen3Teams from '../gen3/teams'; import {PRNG, PRNGSeed} from '../../../sim/prng'; -import type {MoveCounter} from '../gen8/random-teams'; +import type {MoveCounter} from '../gen8/teams'; // Moves that restore HP: const RECOVERY_MOVES = [ @@ -26,7 +26,7 @@ const MOVE_PAIRS = [ ]; export class RandomGen2Teams extends RandomGen3Teams { - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); constructor(format: string | Format, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen3/random-sets.json b/data/random-battles/gen3/sets.json similarity index 100% rename from data/mods/gen3/random-sets.json rename to data/random-battles/gen3/sets.json diff --git a/data/mods/gen3/random-teams.ts b/data/random-battles/gen3/teams.ts similarity index 99% rename from data/mods/gen3/random-teams.ts rename to data/random-battles/gen3/teams.ts index caf5e7a748..203f26215c 100644 --- a/data/mods/gen3/random-teams.ts +++ b/data/random-battles/gen3/teams.ts @@ -1,7 +1,7 @@ -import RandomGen4Teams from '../gen4/random-teams'; +import RandomGen4Teams from '../gen4/teams'; import {Utils} from '../../../lib'; import {PRNG, PRNGSeed} from '../../../sim/prng'; -import type {MoveCounter} from '../gen8/random-teams'; +import type {MoveCounter} from '../gen8/teams'; // Moves that restore HP: const RECOVERY_MOVES = [ @@ -31,7 +31,7 @@ export class RandomGen3Teams extends RandomGen4Teams { battleHasDitto: boolean; battleHasWobbuffet: boolean; - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); constructor(format: string | Format, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen4/random-sets.json b/data/random-battles/gen4/sets.json similarity index 100% rename from data/mods/gen4/random-sets.json rename to data/random-battles/gen4/sets.json diff --git a/data/mods/gen4/random-teams.ts b/data/random-battles/gen4/teams.ts similarity index 99% rename from data/mods/gen4/random-teams.ts rename to data/random-battles/gen4/teams.ts index 78221d4ebb..8b1e5cfdfd 100644 --- a/data/mods/gen4/random-teams.ts +++ b/data/random-battles/gen4/teams.ts @@ -1,7 +1,7 @@ -import RandomGen5Teams from '../gen5/random-teams'; +import RandomGen5Teams from '../gen5/teams'; import {Utils} from '../../../lib'; import {PRNG} from '../../../sim'; -import type {MoveCounter} from '../gen8/random-teams'; +import type {MoveCounter} from '../gen8/teams'; // Moves that restore HP: const RECOVERY_MOVES = [ @@ -43,7 +43,7 @@ const PRIORITY_POKEMON = [ ]; export class RandomGen4Teams extends RandomGen5Teams { - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); constructor(format: string | Format, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen5/random-sets.json b/data/random-battles/gen5/sets.json similarity index 100% rename from data/mods/gen5/random-sets.json rename to data/random-battles/gen5/sets.json diff --git a/data/mods/gen5/random-teams.ts b/data/random-battles/gen5/teams.ts similarity index 99% rename from data/mods/gen5/random-teams.ts rename to data/random-battles/gen5/teams.ts index 22af9f0636..616d626612 100644 --- a/data/mods/gen5/random-teams.ts +++ b/data/random-battles/gen5/teams.ts @@ -1,8 +1,8 @@ -import RandomGen6Teams from '../gen6/random-teams'; +import RandomGen6Teams from '../gen6/teams'; import {Utils} from '../../../lib'; import {toID} from '../../../sim/dex'; import {PRNG} from '../../../sim'; -import {MoveCounter} from '../gen8/random-teams'; +import {MoveCounter} from '../gen8/teams'; // Moves that restore HP: const RECOVERY_MOVES = [ @@ -52,7 +52,7 @@ const PRIORITY_POKEMON = [ ]; export class RandomGen5Teams extends RandomGen6Teams { - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); constructor(format: string | Format, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen6/factory-sets.json b/data/random-battles/gen6/factory-sets.json similarity index 100% rename from data/mods/gen6/factory-sets.json rename to data/random-battles/gen6/factory-sets.json diff --git a/data/mods/gen6/random-sets.json b/data/random-battles/gen6/sets.json similarity index 100% rename from data/mods/gen6/random-sets.json rename to data/random-battles/gen6/sets.json diff --git a/data/mods/gen6/random-teams.ts b/data/random-battles/gen6/teams.ts similarity index 99% rename from data/mods/gen6/random-teams.ts rename to data/random-battles/gen6/teams.ts index 9aaa1ed14c..2973bfb9a8 100644 --- a/data/mods/gen6/random-teams.ts +++ b/data/random-battles/gen6/teams.ts @@ -1,5 +1,5 @@ -import {MoveCounter, TeamData} from '../gen8/random-teams'; -import RandomGen7Teams, {BattleFactorySpecies, ZeroAttackHPIVs} from '../gen7/random-teams'; +import {MoveCounter, TeamData} from '../gen8/teams'; +import RandomGen7Teams, {BattleFactorySpecies, ZeroAttackHPIVs} from '../gen7/teams'; import {PRNG, PRNGSeed} from '../../../sim/prng'; import {Utils} from '../../../lib'; import {toID} from '../../../sim/dex'; @@ -63,7 +63,7 @@ const PRIORITY_POKEMON = [ ]; export class RandomGen6Teams extends RandomGen7Teams { - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); constructor(format: Format | string, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen7/bss-factory-sets.json b/data/random-battles/gen7/bss-factory-sets.json similarity index 100% rename from data/mods/gen7/bss-factory-sets.json rename to data/random-battles/gen7/bss-factory-sets.json diff --git a/data/mods/gen7/factory-sets.json b/data/random-battles/gen7/factory-sets.json similarity index 100% rename from data/mods/gen7/factory-sets.json rename to data/random-battles/gen7/factory-sets.json diff --git a/data/mods/gen7/random-sets.json b/data/random-battles/gen7/sets.json similarity index 100% rename from data/mods/gen7/random-sets.json rename to data/random-battles/gen7/sets.json diff --git a/data/mods/gen7/random-teams.ts b/data/random-battles/gen7/teams.ts similarity index 99% rename from data/mods/gen7/random-teams.ts rename to data/random-battles/gen7/teams.ts index a15dc2d5f6..e7cb617966 100644 --- a/data/mods/gen7/random-teams.ts +++ b/data/random-battles/gen7/teams.ts @@ -1,4 +1,4 @@ -import {MoveCounter, TeamData, RandomGen8Teams} from '../gen8/random-teams'; +import {MoveCounter, TeamData, RandomGen8Teams} from '../gen8/teams'; import {PRNG, PRNGSeed} from '../../../sim/prng'; import {Utils} from '../../../lib'; import {toID} from '../../../sim/dex'; @@ -99,7 +99,7 @@ function sereneGraceBenefits(move: Move) { } export class RandomGen7Teams extends RandomGen8Teams { - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); constructor(format: Format | string, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen7letsgo/random-data.json b/data/random-battles/gen7letsgo/data.json similarity index 100% rename from data/mods/gen7letsgo/random-data.json rename to data/random-battles/gen7letsgo/data.json diff --git a/data/mods/gen7letsgo/random-teams.ts b/data/random-battles/gen7letsgo/teams.ts similarity index 99% rename from data/mods/gen7letsgo/random-teams.ts rename to data/random-battles/gen7letsgo/teams.ts index 22088aa2ae..66f37bdfdf 100644 --- a/data/mods/gen7letsgo/random-teams.ts +++ b/data/random-battles/gen7letsgo/teams.ts @@ -1,8 +1,8 @@ import type {PRNG} from '../../../sim'; -import {MoveCounter, RandomGen8Teams, OldRandomBattleSpecies} from '../gen8/random-teams'; +import {MoveCounter, RandomGen8Teams, OldRandomBattleSpecies} from '../gen8/teams'; export class RandomLetsGoTeams extends RandomGen8Teams { - randomData: {[species: string]: OldRandomBattleSpecies} = require('./random-data.json'); + randomData: {[species: string]: OldRandomBattleSpecies} = require('./data.json'); constructor(format: Format | string, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/mods/gen8/bss-factory-sets.json b/data/random-battles/gen8/bss-factory-sets.json similarity index 100% rename from data/mods/gen8/bss-factory-sets.json rename to data/random-battles/gen8/bss-factory-sets.json diff --git a/data/mods/gen8/cap-1v1-sets.json b/data/random-battles/gen8/cap-1v1-sets.json similarity index 100% rename from data/mods/gen8/cap-1v1-sets.json rename to data/random-battles/gen8/cap-1v1-sets.json diff --git a/data/mods/gen8/random-data.json b/data/random-battles/gen8/data.json similarity index 100% rename from data/mods/gen8/random-data.json rename to data/random-battles/gen8/data.json diff --git a/data/mods/gen8/factory-sets.json b/data/random-battles/gen8/factory-sets.json similarity index 100% rename from data/mods/gen8/factory-sets.json rename to data/random-battles/gen8/factory-sets.json diff --git a/data/mods/gen8/random-teams.ts b/data/random-battles/gen8/teams.ts similarity index 99% rename from data/mods/gen8/random-teams.ts rename to data/random-battles/gen8/teams.ts index 59e83c8c7c..1cec6b38ed 100644 --- a/data/mods/gen8/random-teams.ts +++ b/data/random-battles/gen8/teams.ts @@ -111,7 +111,7 @@ export class RandomGen8Teams { readonly maxMoveCount: number; readonly forceMonotype: string | undefined; - randomData: {[species: string]: OldRandomBattleSpecies} = require('./random-data.json'); + randomData: {[species: string]: OldRandomBattleSpecies} = require('./data.json'); /** * Checkers for move enforcement based on a Pokémon's types or other factors diff --git a/data/mods/gen8bdsp/random-data.json b/data/random-battles/gen8bdsp/data.json similarity index 100% rename from data/mods/gen8bdsp/random-data.json rename to data/random-battles/gen8bdsp/data.json diff --git a/data/mods/gen8bdsp/random-teams.ts b/data/random-battles/gen8bdsp/teams.ts similarity index 99% rename from data/mods/gen8bdsp/random-teams.ts rename to data/random-battles/gen8bdsp/teams.ts index c391e6309e..af6d75f747 100644 --- a/data/mods/gen8bdsp/random-teams.ts +++ b/data/random-battles/gen8bdsp/teams.ts @@ -1,10 +1,10 @@ // BDSP team generation logic is currently largely shared with Swsh import {PRNG, PRNGSeed} from '../../../sim/prng'; -import {MoveCounter, RandomGen8Teams, OldRandomBattleSpecies} from '../gen8/random-teams'; +import {MoveCounter, RandomGen8Teams, OldRandomBattleSpecies} from '../gen8/teams'; export class RandomBDSPTeams extends RandomGen8Teams { - randomData: {[species: string]: OldRandomBattleSpecies} = require('./random-data.json'); + randomData: {[species: string]: OldRandomBattleSpecies} = require('./data.json'); constructor(format: Format | string, prng: PRNG | PRNGSeed | null) { super(format, prng); diff --git a/data/random-doubles-sets.json b/data/random-battles/gen9/doubles-sets.json similarity index 100% rename from data/random-doubles-sets.json rename to data/random-battles/gen9/doubles-sets.json diff --git a/data/random-sets.json b/data/random-battles/gen9/sets.json similarity index 100% rename from data/random-sets.json rename to data/random-battles/gen9/sets.json diff --git a/data/random-teams.ts b/data/random-battles/gen9/teams.ts similarity index 99% rename from data/random-teams.ts rename to data/random-battles/gen9/teams.ts index 354a340391..efe6db1e0e 100644 --- a/data/random-teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -1,8 +1,8 @@ -import {Dex, toID} from '../sim/dex'; -import {Utils} from '../lib'; -import {PRNG, PRNGSeed} from '../sim/prng'; -import {RuleTable} from '../sim/dex-formats'; -import {Tags} from './tags'; +import {Dex, toID} from '../../../sim/dex'; +import {Utils} from '../../../lib'; +import {PRNG, PRNGSeed} from '../../../sim/prng'; +import {RuleTable} from '../../../sim/dex-formats'; +import {Tags} from './../../tags'; export interface TeamData { typeCount: {[k: string]: number}; @@ -1755,8 +1755,8 @@ export class RandomTeams { return [pokemonPool, baseSpeciesPool]; } - randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-sets.json'); - randomDoublesSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./random-doubles-sets.json'); + randomSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./sets.json'); + randomDoublesSets: {[species: string]: RandomTeamsTypes.RandomSpeciesData} = require('./doubles-sets.json'); randomTeam() { this.enforceNoDirectCustomBanlistChanges(); diff --git a/data/mods/randomroulette/random-teams.ts b/data/random-battles/randomroulette/teams.ts similarity index 69% rename from data/mods/randomroulette/random-teams.ts rename to data/random-battles/randomroulette/teams.ts index b3934e245d..47379682cd 100644 --- a/data/mods/randomroulette/random-teams.ts +++ b/data/random-battles/randomroulette/teams.ts @@ -1,4 +1,4 @@ -import RandomTeams from '../../random-teams'; +import RandomTeams from '../gen9/teams'; export class RandomRandomRouletteTeams extends RandomTeams {} diff --git a/data/mods/sharedpower/random-teams.ts b/data/random-battles/sharedpower/teams.ts similarity index 68% rename from data/mods/sharedpower/random-teams.ts rename to data/random-battles/sharedpower/teams.ts index db19a3c76c..0163a1bef9 100644 --- a/data/mods/sharedpower/random-teams.ts +++ b/data/random-battles/sharedpower/teams.ts @@ -1,4 +1,4 @@ -import RandomTeams from '../../random-teams'; +import RandomTeams from '../gen9/teams'; export class RandomSharedPowerTeams extends RandomTeams {} diff --git a/server/chat-plugins/randombattles/index.ts b/server/chat-plugins/randombattles/index.ts index 4efe797c02..5d86f13f24 100644 --- a/server/chat-plugins/randombattles/index.ts +++ b/server/chat-plugins/randombattles/index.ts @@ -156,7 +156,7 @@ function getSets(species: string | Species, format: string | Format = 'gen9rando species = dex.species.get(species); const isDoubles = format.gameType === 'doubles'; const setsFile = JSON.parse( - FS(`data/${dex.isBase ? '' : `mods/${dex.currentMod}/`}random-${isDoubles ? `doubles-` : ``}sets.json`) + FS(`data/random-battles/${format.mod}/${isDoubles ? `doubles-` : ``}sets.json`) .readIfExistsSync() || '{}' ); const data = setsFile[species.id]; @@ -172,7 +172,7 @@ function getData(species: string | Species, format: string | Format): any | null format = Dex.formats.get(format); species = dex.species.get(species); const dataFile = JSON.parse( - FS(`data/mods/${dex.currentMod}/random-data.json`).readIfExistsSync() || '{}' + FS(`data/random-battles/${format.mod}/data.json`).readIfExistsSync() || '{}' ); const data = dataFile[species.id]; if (!data) return null; @@ -203,7 +203,6 @@ function getLevel(species: string | Species, format: string | Format): number { Uber: 61, }; return levelScale[species.tier] || 80; - // TODO: Gen 7 Doubles (currently uses BST-based scaling that accounts for the set's ability/item) } return 0; } @@ -260,7 +259,7 @@ function battleFactorySets(species: string | Species, tier: string | null, gen = const genNum = parseInt(gen[3]); if (isNaN(genNum) || genNum < 6 || (isBSS && genNum < 7)) return null; const statsFile = JSON.parse( - FS(`data${gen === 'gen9' ? '/' : `/mods/${gen}`}/${isBSS ? `bss-` : ``}factory-sets.json`).readIfExistsSync() || + FS(`data/random-battles/gen${genNum}/${isBSS ? `bss-` : ``}factory-sets.json`).readIfExistsSync() || "{}" ); if (!Object.keys(statsFile).length) return null; @@ -360,7 +359,7 @@ function battleFactorySets(species: string | Species, tier: string | null, gen = function CAP1v1Sets(species: string | Species) { species = Dex.species.get(species); const statsFile = JSON.parse( - FS(`data/mods/gen8/cap-1v1-sets.json`).readIfExistsSync() || + FS(`data/random-battles/gen8/cap-1v1-sets.json`).readIfExistsSync() || "{}" ); if (!Object.keys(statsFile).length) return null; diff --git a/sim/teams.ts b/sim/teams.ts index 41eebc38d7..56e5d59fdf 100644 --- a/sim/teams.ts +++ b/sim/teams.ts @@ -617,12 +617,13 @@ export const Teams = new class Teams { getGenerator(format: Format | string, seed: PRNG | PRNGSeed | null = null) { let TeamGenerator; + format = Dex.formats.get(format); if (toID(format).includes('gen9computergeneratedteams')) { TeamGenerator = require(Dex.forFormat(format).dataDir + '/cg-teams').default; - } else if (toID(format).includes('gen7randomdoublesbattle')) { - TeamGenerator = require(Dex.forFormat(format).dataDir + '/random-doubles-teams').default; + } else if (toID(format).includes('gen9superstaffbrosultimate')) { + TeamGenerator = require(`../data/mods/gen9ssb/random-teams`).default; } else { - TeamGenerator = require(Dex.forFormat(format).dataDir + '/random-teams').default; + TeamGenerator = require(`../data/random-battles/${format.mod}/teams`).default; } return new TeamGenerator(format, seed); diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index c82b6f25cf..711bbedfcc 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -34,7 +34,7 @@ describe('value rule support (slow)', () => { // Due to frontloading of moveset generation, formats with the new set format do not support // Max Move Counts less than 4 if (count < 4) continue; - const setsJSON = require(`../../dist/data/${gen === 9 ? '' : `mods/gen${gen}/`}random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen${gen}/sets.json`); it(`${format.name} should support Max Move Count = ${count}`, () => { testTeam({format, rounds: 50}, team => { @@ -66,7 +66,7 @@ describe('value rule support (slow)', () => { }); }); } else { - const dataJSON = require(`../../dist/data/mods/gen${gen}/random-data.json`); + const dataJSON = require(`../../dist/data/random-battles/gen${gen}/data.json`); it(`${format.name} should support Max Move Count = ${count}`, () => { testTeam({format, rounds: 50}, team => { @@ -114,12 +114,12 @@ describe('value rule support (slow)', () => { }); describe("New set format", () => { - const files = ['../../data/random-sets.json', '../../data/random-doubles-sets.json']; + const files = ['../../data/random-battles/gen9/sets.json', '../../data/random-battles/gen9/doubles-sets.json']; for (const filename of files) { it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); let validRoles = []; - if (filename === '../../data/random-sets.json') { + if (filename === '../../data/random-battles/gen9/sets.json') { validRoles = ["Fast Attacker", "Setup Sweeper", "Wallbreaker", "Tera Blast user", "Bulky Attacker", "Bulky Setup", "Fast Bulky Setup", "Bulky Support", "Fast Support", "AV Pivot"]; } else { @@ -178,16 +178,16 @@ describe('randomly generated teams should be valid (slow)', () => { }); describe('Battle Factory and BSS Factory data should be valid (slow)', () => { - for (const filename of ['mods/gen8/bss-factory-sets', 'mods/gen7/bss-factory-sets', 'mods/gen7/factory-sets', 'mods/gen6/factory-sets']) { + for (const filename of ['gen8/bss-factory-sets', 'gen7/bss-factory-sets', 'gen7/factory-sets', 'gen6/factory-sets']) { it(`${filename}.json should contain valid sets`, function () { this.timeout(0); - const setsJSON = require(`../../dist/data/${filename}.json`); - const mod = filename.split('/')[1] || 'gen' + Dex.gen; + const setsJSON = require(`../../dist/data/random-battles/${filename}.json`); + const mod = filename.split('/')[0] || 'gen' + Dex.gen; const genNum = isNaN(mod[3]) ? Dex.gen : mod[3]; for (const type in setsJSON) { const typeTable = filename.includes('bss-factory-sets') ? setsJSON : setsJSON[type]; - const vType = filename === 'bss-factory-sets' ? `battle${genNum === 8 ? 'stadium' : 'spot'}singles` : + const vType = filename.includes('bss-factory-sets') ? `battle${genNum === 8 ? 'stadium' : 'spot'}singles` : type === 'Mono' ? 'monotype' : type.toLowerCase(); for (const species in typeTable) { const speciesData = typeTable[species]; diff --git a/test/random-battles/gen2.js b/test/random-battles/gen2.js index b2c9e47cd2..dbf1547ae6 100644 --- a/test/random-battles/gen2.js +++ b/test/random-battles/gen2.js @@ -8,11 +8,11 @@ const {testTeam, validateLearnset} = require('./tools'); describe('[Gen 2] Random Battle (slow)', () => { const options = {format: 'gen2randombattle'}; - const setsJSON = require(`../../dist/data/mods/gen2/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen2/sets.json`); const dex = Dex.forFormat(options.format); describe("New set format", () => { - const filename = '../../data/mods/gen2/random-sets.json'; + const filename = '../../data/random-battles/gen2/sets.json'; it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); const validRoles = [ diff --git a/test/random-battles/gen3.js b/test/random-battles/gen3.js index 57eca9f051..a49354915f 100644 --- a/test/random-battles/gen3.js +++ b/test/random-battles/gen3.js @@ -8,11 +8,11 @@ const {testTeam, validateLearnset} = require('./tools'); describe('[Gen 3] Random Battle (slow)', () => { const options = {format: 'gen3randombattle'}; - const setsJSON = require(`../../dist/data/mods/gen3/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen3/sets.json`); const dex = Dex.forFormat(options.format); describe("New set format", () => { - const filename = '../../data/mods/gen3/random-sets.json'; + const filename = '../../data/random-battles/gen3/sets.json'; it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); const validRoles = [ diff --git a/test/random-battles/gen4.js b/test/random-battles/gen4.js index 047afd0656..1612f07033 100644 --- a/test/random-battles/gen4.js +++ b/test/random-battles/gen4.js @@ -8,11 +8,11 @@ const {testTeam, testSet, testHiddenPower, validateLearnset} = require('./tools' describe('[Gen 4] Random Battle (slow)', () => { const options = {format: 'gen4randombattle'}; - const setsJSON = require(`../../dist/data/mods/gen4/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen4/sets.json`); const dex = Dex.forFormat(options.format); describe("New set format", () => { - const filename = '../../data/mods/gen4/random-sets.json'; + const filename = '../../data/random-battles/gen4/sets.json'; it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); const validRoles = [ diff --git a/test/random-battles/gen5.js b/test/random-battles/gen5.js index 5e44cf9f5d..75d6b32fcc 100644 --- a/test/random-battles/gen5.js +++ b/test/random-battles/gen5.js @@ -8,11 +8,11 @@ const {testTeam, testSet, testHiddenPower, testAlwaysHasMove, validateLearnset} describe('[Gen 5] Random Battle (slow)', () => { const options = {format: 'gen5randombattle'}; - const setsJSON = require(`../../dist/data/mods/gen5/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen5/sets.json`); const dex = Dex.forFormat(options.format); describe("New set format", () => { - const filename = '../../data/mods/gen5/random-sets.json'; + const filename = '../../data/random-battles/gen5/sets.json'; it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); const validRoles = [ diff --git a/test/random-battles/gen6.js b/test/random-battles/gen6.js index fa2c4b4935..2560355163 100644 --- a/test/random-battles/gen6.js +++ b/test/random-battles/gen6.js @@ -8,11 +8,11 @@ const {testTeam, testNotBothMoves, testSet, testHiddenPower, testAlwaysHasMove, describe('[Gen 6] Random Battle (slow)', () => { const options = {format: 'gen6randombattle'}; - const setsJSON = require(`../../dist/data/mods/gen6/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen6/sets.json`); const dex = Dex.forFormat(options.format); describe("New set format", () => { - const filename = '../../data/mods/gen6/random-sets.json'; + const filename = '../../data/random-battles/gen6/sets.json'; it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); const validRoles = [ diff --git a/test/random-battles/gen7.js b/test/random-battles/gen7.js index 8c2e164914..ec8c8d8e98 100644 --- a/test/random-battles/gen7.js +++ b/test/random-battles/gen7.js @@ -8,11 +8,11 @@ const {testTeam, testNotBothMoves, testSet, testHiddenPower, testAlwaysHasMove, describe('[Gen 7] Random Battle (slow)', () => { const options = {format: 'gen7randombattle'}; - const setsJSON = require(`../../dist/data/mods/gen7/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen7/sets.json`); const dex = Dex.forFormat(options.format); describe("New set format", () => { - const filename = '../../data/mods/gen7/random-sets.json'; + const filename = '../../data/random-battles/gen7/sets.json'; it(`${filename} should have valid set data`, () => { const setsJSON = require(filename); const validRoles = [ diff --git a/test/random-battles/gen8.js b/test/random-battles/gen8.js index 55cfcd1085..7b6ddd9474 100644 --- a/test/random-battles/gen8.js +++ b/test/random-battles/gen8.js @@ -8,7 +8,7 @@ const assert = require('../assert'); describe('[Gen 8] Random Battle (slow)', () => { const options = {format: 'gen8randombattle'}; - const dataJSON = require(`../../dist/data/mods/gen8/random-data.json`); + const dataJSON = require(`../../dist/data/random-battles/gen8/data.json`); const dex = Dex.forFormat(options.format); const generator = Teams.getGenerator(options.format); @@ -258,7 +258,7 @@ describe('[Gen 8] Free-for-All Random Battle (slow)', () => { describe('[Gen 8 BDSP] Random Battle (slow)', () => { const options = {format: 'gen8bdsprandombattle'}; - const dataJSON = require(`../../dist/data/mods/gen8bdsp/random-data.json`); + const dataJSON = require(`../../dist/data/random-battles/gen8bdsp/data.json`); const dex = Dex.forFormat(options.format); const okToHaveChoiceMoves = ['switcheroo', 'trick', 'healingwish']; diff --git a/test/random-battles/gen9.js b/test/random-battles/gen9.js index 5e8c1bb217..daf5f9467d 100644 --- a/test/random-battles/gen9.js +++ b/test/random-battles/gen9.js @@ -10,7 +10,7 @@ const Dex = require('./../../dist/sim/dex').Dex; describe('[Gen 9] Random Battle (slow)', () => { const options = {format: 'gen9randombattle'}; - const setsJSON = require(`../../dist/data/random-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen9/sets.json`); const dex = Dex.forFormat(options.format); it('all Pokemon should have 4 moves, except for Ditto', function () { @@ -78,7 +78,7 @@ describe('[Gen 9] Monotype Random Battle (slow)', () => { describe('[Gen 9] Random Doubles Battle (slow)', () => { const options = {format: 'gen9randomdoublesbattle'}; - const setsJSON = require(`../../dist/data/random-doubles-sets.json`); + const setsJSON = require(`../../dist/data/random-battles/gen9/doubles-sets.json`); const dex = Dex.forFormat(options.format); it('all Pokemon should have 4 moves, except for Ditto', function () { diff --git a/tsconfig.json b/tsconfig.json index fe8ac8c64d..f0cd522688 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,6 +27,7 @@ "./config/*.ts", "./data/*", "./data/text/*", + "./data/random-battles/**/*", "./data/mods/*/*", "./dev-tools/*.ts", "./lib/*.ts",