mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-04-25 07:22:09 -05:00
Add May 2025 Randomized Format Spotlight (#11074)
This commit is contained in:
parent
0d07a671f2
commit
2dab03e2c0
|
|
@ -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
|
||||
|
|
|
|||
5
data/random-battles/partnersincrime/teams.ts
Normal file
5
data/random-battles/partnersincrime/teams.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import RandomTeams from '../gen9/teams';
|
||||
|
||||
export class RandomPartnersInCrimeTeams extends RandomTeams {}
|
||||
|
||||
export default RandomPartnersInCrimeTeams;
|
||||
Loading…
Reference in New Issue
Block a user