Baton Pass Marathon (Coded! Looking for a server)

Please, I didn't buff the thread for one liners. I buffed it for serious disscussion so by the time OMotM roles in, its fuly updated state. So cmon, stop liking posts and DISSCUSS
How about discussing Aqua Ring, Shadow Trap, and Leech Seed? They look broken to me. I wonder if Curse is baton passed too.
 

G-Luke

Sugar, Spice and One For All
is a Community Contributoris a CAP Contributoris a Forum Moderator Alumnus
Nah, they don't seem broken. Water types don't usually have soo much moveslots to give away. Leech Seed is annoying, but it balances out crap like a SD for the team. And both the boosts by normal curse and effect by ghost curse are Baton passable i believe.
 
Nah, they don't seem broken. Water types don't usually have soo much moveslots to give away. Leech Seed is annoying, but it balances out crap like a SD for the team. And both the boosts by normal curse and effect by ghost curse are Baton passable i believe.
You do realize that the Ghost Curse deals 25% damage EACH turn. It basically requires your opponent to sack a Pokemon every time it's used. It can't be hazed or rapid spinned. Not even Magic Bounce.
 
You do realize that the Ghost Curse deals 25% damage EACH turn. It basically requires your opponent to sack a Pokemon every time it's used. It can't be hazed or rapid spinned. Not even Magic Bounce.
So, in other words, it's an excellent method of phazing/hazing without having to interact with Magic Bounce, or having to have a Hazer on your team.
 
So, in other words, it's an excellent method of phazing/hazing without having to interact with Magic Bounce, or having to have a Hazer on your team.
Except that Ghost Curse is Baton Passed, I think. Meaning it sticks forever despite your switching.
 
The move Punishment seems pretty decent here. As long as there are no Defense boosts, it can and will do craptons of damage. Foul Play also gets some nice use for attack boosters.
 
Curse is scary, but keep in mind that the 50% HP cut is also pretty risky, especially when the opposing attacker may be boosted and/or able to bypass Substitutes (Sylveon, Infiltrators, etc.) There are a lot of potent powers for both stall and offense, but they also seem to be able to shut each other down quite easily.

Offhand, it seems like, ironically, the best team archetypes might not be full baton pass chains, since there'll be so much baton pass counter in this meta. But rather things that quickly take advantage of the forced pass mechanics. Of course, whether that's true or not would be seen if this ever gets to be playable.
 

AWailOfATail

viva la darmz
I've already taken a look at the code and have an idea of what to do; I just need to put some code in the right spot. I'm kinda busy until this weekend, so expect more progress then. If anyone else codes it instead, go for it. Also yeah I'm suggesting at least a suspect on Curse, mostly because (to my knowledge) it can only be ended through fainting.
 

G-Luke

Sugar, Spice and One For All
is a Community Contributoris a CAP Contributoris a Forum Moderator Alumnus
I see curse as worse than Perish Song. At least Perish forced BOTH you and your opponent to sacrifice boosts or a Pokemon. Curse doesn't neccesarinly mean the user has to sacrifice anything. For example, Jellicent comes in on Keldeo and Curses, while Keldy switches out, it simply recovers as if it never happened. While non-Ghost Curse mons will miss the setup, its arguably healthier for the meta if Curse was banned. Unless of course, y'all can find REASONABLE counter-arguements that prove Curse isn't broken.
 
Wait, U-Turn and Volt Switch resets the boosts? Oh, kay. Now, if only Parting Shot was well distributed, it might have been a good move.
 
I see curse as worse than Perish Song. At least Perish forced BOTH you and your opponent to sacrifice boosts or a Pokemon. Curse doesn't neccesarinly mean the user has to sacrifice anything. For example, Jellicent comes in on Keldeo and Curses, while Keldy switches out, it simply recovers as if it never happened. While non-Ghost Curse mons will miss the setup, its arguably healthier for the meta if Curse was banned. Unless of course, y'all can find REASONABLE counter-arguements that prove Curse isn't broken.
Celebi and Meloetta both get U-Turn and Perish Song. Perish Song, U-Turn out against something that can't do the same into something with Protect, and there you go, dead Pokemon.
 

OM

It's a starstruck world
is a Community Contributor Alumnusis a Battle Simulator Moderator Alumnus
I see curse as worse than Perish Song. At least Perish forced BOTH you and your opponent to sacrifice boosts or a Pokemon. Curse doesn't neccesarinly mean the user has to sacrifice anything. For example, Jellicent comes in on Keldeo and Curses, while Keldy switches out, it simply recovers as if it never happened. While non-Ghost Curse mons will miss the setup, its arguably healthier for the meta if Curse was banned. Unless of course, y'all can find REASONABLE counter-arguements that prove Curse isn't broken.
I believe I've already provided Magic Guard Pokemon, which actually might find viability now that speed is everything [Alakazam for Speed, Reuniclus for Trick Room, Clefable for Bulk I guess.]
 

Martin

A monoid in the category of endofunctors
is a Smogon Discord Contributoris a Forum Moderator Alumnusis a Community Contributor Alumnusis a Contributor Alumnus
Oh look! Ferrothorn does Smeargle's job 500 times better now!

On a more serious note, non pass-oriented teams could make good use of Haze to clear negative drops on their end while also (mostly) resetting the situation for the opp.

Finally, being able to use a Magic Bounce user that isn't Espeon is a big relief. F*** Sableye tho.

edit: also lol Shuckle is literally a better Gorebyss/Huntail
 
Oh. I just thought of something that sounds extremely niche that I'm not sure has been mentioned here yet. Heart Swap Manaphy. You got some Draco Meteor/Superpower/Close Combat drops you don't like? Your enemy has massive stat boosts you wouldn't mind screwing with? Time for some Heart Swap!
 

AWailOfATail

viva la darmz
config/formats.js
Code:
{
     name: "Baton Pass Marathon",
     section: "Other Metagames",
     mod: 'batonpassmarathon',

     ruleset: ['OU'],
     banlist: ['Perish Song', 'Sand Attack', 'Flash', 'Kinesis', 'Mud-Slap', 'Smokescreen', 'Acupressure'],
     onFaint: function (pokemon) {
          pokemon.clearVolatile();
     }
},
//get rid of this comma if it's the last meta in your list
mods/batonpassmarathon/scripts.js
Code:
'use strict';

exports.BattleScripts = {
   switchIn: function (pokemon, pos) {
     if (!pokemon || pokemon.isActive) return false;
     if (!pos) pos = 0;
     let side = pokemon.side;
     if (pos >= side.active.length) {
       throw new Error("Invalid switch position");
     }
     if (side.active[pos]) {
       let oldActive = side.active[pos];
       let foeActive = side.foe.active[0];
       let lastMove = this.getMove(oldActive.lastMove);
       let foeMove = this.getMove(foeActive.lastMove);
       if ((lastMove === 'voltswitch' || lastMove === 'uturn' || lastMove === 'partingshot') || (foeMove.id === 'whirlwind' || foeMove.id === 'roar' || foeMove.id === 'dragontail' || foeMove.id === 'circlethrow')) {
         oldActive.clearVolatile();
       }
       pokemon.copyVolatileFrom(oldActive);
       if (this.cancelMove(oldActive)) {
         for (let i = 0; i < side.foe.active.length; i++) {
           if (side.foe.active[i].isStale >= 2) {
             oldActive.isStaleCon++;
             oldActive.isStaleSource = 'drag';
             break;
           }
         }
       }
       if (oldActive.switchCopyFlag === 'copyvolatile') {
         delete oldActive.switchCopyFlag;
       }
     }
     pokemon.isActive = true;
     //this.runEvent('BeforeSwitchIn', pokemon);
     if (side.active[pos]) {
       let oldActive = side.active[pos];
       oldActive.isActive = false;
       oldActive.isStarted = false;
       oldActive.usedItemThisTurn = false;
       oldActive.position = pokemon.position;
       pokemon.position = pos;
       side.pokemon[pokemon.position] = pokemon;
       side.pokemon[oldActive.position] = oldActive;
       this.cancelMove(oldActive);
       oldActive.clearVolatile();
     }
     side.active[pos] = pokemon;
     pokemon.activeTurns = 0;
     for (let m in pokemon.moveset) {
       pokemon.moveset[m].used = false;
     }
     this.add('switch', pokemon, pokemon.getDetails);
     let statArray = ['atk', 'def', 'spa', 'spd', 'spe'];
     for (let i = 0; i < statArray.length; i++) {
       if (pokemon.boosts[statArray[i]] !== 0) {
         this.add('-boost', pokemon, statArray[i], pokemon.boosts[statArray[i]], '[silent]');
       }
     }
     let volArray = Object.getOwnPropertyNames(pokemon.volatiles);
     for (let i = 0; i < volArray.length; i++) {
       let currentVol = volArray[i];
       this.add('-start', pokemon, currentVol);
     }
     pokemon.update();
     this.insertQueue({pokemon: pokemon, choice: 'runSwitch'});
   }
};

Let me know if something doesn't work or doesn't show up; I'll edit this post with the correct code.
Happy Baton Passing!
 
Last edited:
You'd think there'd be a few hundred thousand more lines of code for something that took over a year to get coded!

Either way, that's pretty awesome.
 

Users Who Are Viewing This Thread (Users: 1, Guests: 1)

Top