mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
Adding Gen 3 Hoenn Stadium format (#11797)
* Adding gen 3 colosseum format, updating win check * Update formats.ts * Adding Gen 3 Hoenn Stadium format * They want open team sheets on the format * Fixing selfKO clause code for the gen3colosseum mod. - Perish song only cares if the user is the last mon, we had that wrong. - Corrected the game resolution code to properly calculate winners/draws (Has been tested on a dev server) * forgot Destiny bond * Cleaning up ban and unban lists for hoenn stadium * Deoxys is not nonstandard --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com>
This commit is contained in:
parent
2742d9dd47
commit
3b326cfa83
|
|
@ -5280,6 +5280,28 @@ export const Formats: import('../sim/dex-formats').FormatList = [
|
|||
this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle');
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "[Gen 3] Hoenn Stadium",
|
||||
threads: [
|
||||
`• <a href="https://www.smogon.com/forums/threads/3687813/">ADV Sample Teams</a>`,
|
||||
`• <a href="https://www.smogon.com/forums/threads/orre-colosseum-now-playable.3698894/"> Orre Colosseum</a>`,
|
||||
`• <a href-"https://discord.gg/cSZE6MZX5Q">Join the discord server</a>`,
|
||||
],
|
||||
|
||||
mod: 'gen3colosseum',
|
||||
searchShow: false,
|
||||
gameType: 'singles',
|
||||
ruleset: [
|
||||
'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer',
|
||||
'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 3', 'Exact HP Mod', "Item Clause = 1", 'Open Team Sheets',
|
||||
],
|
||||
banlist: ['Soul Dew', 'Restricted Legendary', 'Mythical', 'Wobbuffet + Leftovers', 'Wynaut + Leftovers'],
|
||||
restricted: [],
|
||||
bestOfDefault: true,
|
||||
onBegin() {
|
||||
this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect you will lose the battle');
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "[Gen 3] Custom Game",
|
||||
mod: 'gen3',
|
||||
|
|
|
|||
|
|
@ -5,30 +5,20 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
perishsong: {
|
||||
inherit: true,
|
||||
onTryMove(attacker, defender, move) {
|
||||
let immuneMon = false;
|
||||
|
||||
for (const mon of attacker.side.active) {
|
||||
if (this.runEvent('Immunity', mon, attacker, move)) {
|
||||
immuneMon = true;
|
||||
}
|
||||
if (attacker.side.pokemonLeft === 1) {
|
||||
this.add('-fail', attacker, 'move: Perish Song');
|
||||
this.hint("Self KO Clause: The last pokemon on a team cannot use moves that force fainting");
|
||||
return false;
|
||||
}
|
||||
|
||||
for (const mon of attacker.side.foe.active) {
|
||||
if (this.runEvent('Immunity', mon, attacker, move)) {
|
||||
immuneMon = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (immuneMon) return;
|
||||
|
||||
if (this.format.gameType === 'singles') {
|
||||
if (attacker.side.pokemonLeft === 1 && attacker.side.foe.pokemonLeft === 1) {
|
||||
return false;
|
||||
}
|
||||
} else if (this.format.gameType === 'doubles') {
|
||||
if (attacker.side.pokemonLeft === 2 && attacker.side.foe.pokemonLeft === 2) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
destinybond: {
|
||||
inherit: true,
|
||||
onTryMove(attacker, defender, move) {
|
||||
if (attacker.side.pokemonLeft === 1) {
|
||||
this.add('-fail', attacker, 'move: Perish Song');
|
||||
this.hint("Self KO Clause: The last pokemon on a team cannot use moves that force fainting");
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,8 +4,18 @@ export const Scripts: ModdedBattleScriptsData = {
|
|||
|
||||
checkWin(faintData?: Battle['faintQueue'][0]) {
|
||||
if (this.sides.every(side => !side.pokemonLeft)) {
|
||||
this.win(faintData ? faintData.target.side : null);
|
||||
return true;
|
||||
let isSelfKo = false;
|
||||
if (faintData?.effect) {
|
||||
isSelfKo = isSelfKo || this.dex.moves.getByID(faintData?.effect?.id).selfdestruct !== undefined;
|
||||
isSelfKo = isSelfKo || this.dex.moves.getByID(faintData?.effect?.id).recoil !== undefined;
|
||||
}
|
||||
if (isSelfKo) {
|
||||
this.win(faintData ? faintData.target.side : null);
|
||||
return true;
|
||||
} else {
|
||||
this.win(undefined);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
for (const side of this.sides) {
|
||||
if (!side.foePokemonLeft()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user