Add May 2025 Randomized Format Spotlight (#11074)

This commit is contained in:
livid washed 2025-05-01 15:31:02 +10:00 committed by GitHub
parent 0d07a671f2
commit 2dab03e2c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 63 additions and 4 deletions

View File

@ -2679,12 +2679,66 @@ export const Formats: import('../sim/dex-formats').FormatList = [
column: 3,
},
{
name: "[Gen 9] B6P4 Random Doubles Battle (Bo3)",
desc: `[Gen 9] Random Doubles Battle, but with open team sheets and each player selects four Pokémon to battle with.`,
mod: 'gen9',
name: "[Gen 9] Partners in Crime Random Battle (6 Moves)",
desc: `Randomized Doubles-based format where both active ally Pokémon share abilities and up to 6 moves.`,
mod: 'partnersincrime',
gameType: 'doubles',
team: 'random',
ruleset: ['[Gen 9] Random Doubles Battle', 'Max Team Size = 6', 'Picked Team Size = 4', 'Team Preview', 'VGC Timer', 'Force Open Team Sheets', 'Best of = 3'],
ruleset: ['[Gen 9] Random Doubles Battle', 'Max Move Count = 6'],
onBegin() {
for (const pokemon of this.getAllPokemon()) {
pokemon.m.trackPP = new Map<string, number>();
}
},
onBeforeSwitchIn(pokemon) {
pokemon.m.curMoves = this.dex.deepClone(pokemon.moves);
let ngas = false;
for (const poke of this.getAllActive()) {
if (this.toID(poke.ability) === ('neutralizinggas' as ID)) {
ngas = true;
break;
}
}
const BAD_ABILITIES = ['trace', 'imposter', 'neutralizinggas', 'illusion', 'wanderingspirit'];
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
if (ally && ally.ability !== pokemon.ability) {
if (!pokemon.m.innate && !BAD_ABILITIES.includes(this.toID(ally.ability))) {
pokemon.m.innate = 'ability:' + ally.ability;
if (!ngas || ally.getAbility().flags['cantsuppress'] || pokemon.hasItem('Ability Shield')) {
pokemon.volatiles[pokemon.m.innate] = this.initEffectState({ id: pokemon.m.innate, target: pokemon, pic: ally });
}
}
if (!ally.m.innate && !BAD_ABILITIES.includes(this.toID(pokemon.ability))) {
ally.m.innate = 'ability:' + pokemon.ability;
if (!ngas || pokemon.getAbility().flags['cantsuppress'] || ally.hasItem('Ability Shield')) {
ally.volatiles[ally.m.innate] = this.initEffectState({ id: ally.m.innate, target: ally, pic: pokemon });
}
}
}
},
// Starting innate abilities in scripts
onSwitchOut(pokemon) {
if (pokemon.m.innate) {
pokemon.removeVolatile(pokemon.m.innate);
delete pokemon.m.innate;
}
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
if (ally?.m.innate) {
ally.removeVolatile(ally.m.innate);
delete ally.m.innate;
}
},
onFaint(pokemon) {
if (pokemon.m.innate) {
pokemon.removeVolatile(pokemon.m.innate);
delete pokemon.m.innate;
}
const ally = pokemon.side.active.find(mon => mon && mon !== pokemon && !mon.fainted);
if (ally?.m.innate) {
ally.removeVolatile(ally.m.innate);
delete ally.m.innate;
}
},
},
// Randomized Metas

View File

@ -0,0 +1,5 @@
import RandomTeams from '../gen9/teams';
export class RandomPartnersInCrimeTeams extends RandomTeams {}
export default RandomPartnersInCrimeTeams;