The Let's Play Archive

Pokemon Yellow

by Crosspeice

Part 48: Side Notes #04: GOTTA CATCH 'EM SOMEHOW


So we've been catching quite a number of creatures. It's been pretty easy so far, but really, how does it work? Well strap in, we've got some nerd shit to talk about.
    If the Pokémon is a Marowak and the player's current location is the sixth floor of Pokémon Tower 
(in practice, this only happens for the ghost Marowak), the capture immediately fails.
"It dodged the thrown BALL! This POKéMON can't be caught!"

    If the ball being thrown is a Master Ball, the Pokémon is automatically caught. Skip the rest of the procedure.

    Generate a random number R1, with a range depending on the ball used:
        If it's a Poké Ball, R1 ranges from 0 to 255 (inclusive).
        If it's a Great Ball, R1 ranges from 0 to 200 (inclusive).
        If it's an Ultra or Safari Ball, R1 ranges from 0 to 150 (inclusive).

    Create a status variable S:
        If the targeted Pokémon is asleep or frozen, S is 25.
        If the targeted Pokémon is poisoned, burned or paralyzed, S is 12.
        Otherwise, S is 0.

    Subtract S from R1 (to avoid confusion with the original R1, I will refer to the result as R*).

    If R* is less than zero (i.e. if the generated R1 was less than S), the Pokémon is successfully caught. 
Skip the rest of the procedure.

    Calculate the HP factor F:
        Multiply the Pokémon's max HP by 255 and store the result in F.
        Divide F by
            8 if the ball used was a Great Ball.
            12 otherwise.
        Divide the Pokémon's current HP by four. If the result is greater than zero,
divide F by this number and make that the new F.
        If F is now greater than 255, make it 255 instead.

    If the base catch rate of the Pokémon is less than R*, the Pokémon automatically breaks free.

    Generate a second random number R2 ranging from 0 to 255 (inclusive).
    If R2 is less than or equal to the HP factor F, the Pokémon is caught. Skip the rest of the procedure.

    The capture fails. Determine the appropriate animation to show:
        Multiply the Pokémon's base catch rate by 100 and store the result in a wobble approximation variable W.
        Divide W by a number depending on the ball used, rounding the result down:
            If it was a Poké Ball, divide by 255.
            If it was a Great Ball, divide by 200.
            If it was an Ultra or Safari Ball, divide by 150.

        If the result is greater than 255, the ball will wobble three times; skip the rest of this subprocedure. 
(This can't actually happen, since the Pokémon's base catch rate can never be greater than 255, 
but given the shenanigans that can happen when Game Freak forgets to include failsafes, I don't blame them.)

        Multiply W by F (the HP factor calculated above).
        Divide W by 255.
        Add a number if the Pokémon has a status affliction:
            If the Pokémon is asleep or frozen, add 10 to W.
            If the Pokémon is poisoned, burned or paralyzed, add 5 to W.

        Show the animation and message corresponding to W:
            If W is less than 10, the ball misses ("The ball missed the POKéMON!").
            If W is between 10 and 29 (inclusive), the ball wobbles once ("Darn! The POKéMON broke free!").
            If W is between 30 and 69 (inclusive), the ball wobbles twice ("Aww! It appeared to be caught!").
            Otherwise (if W is greater than or equal to 70), the ball wobbles three times ("Shoot! It was so close too!").
RIGHT, so that's a lot of words, if you really want to math it up, then give this a read, it's where I sto- er, borrowed that nerdy stuff. We'll keep it simple, so I don't go insane.

Firstly, the most useful part of the equation is status effects, they give you the biggest boost in catch rate then anything else and are calculated before HP is even a factor.
Ball	    PSN/PAR/BRN	         SLP/FRZ
Poké Ball   12/256 = 4.69%	 25/256 = 9.77%
Great Ball  12/201 = 5.97%	 25/201 = 12.44%
Ultra Ball  12/151 = 7.95%	 25/151 = 16.56%
You will ALWAYS have this chance of catching something, regardless of HP or catch rate, so make use of status when you can.

Next, the equation makes it so lowering Pokemon below 33% of their health has no effect on the capture chance. This applies to Poke Balls and Ultra Balls. Great Balls have the cutoff at 50% health, so you're twice as likely to catch it by this, or three times as likely using another ball.

Because of Great Ball's interesting quirk, it has a better chance of catching a Pokemon of around half health with no status effects and a high catch rate, around 200 or so. Whereas Ultra Balls work much better on statused, low health, low catch rate Pokemon, though for just low health, they work around the same as a Great Ball.

Finally, noticed how Pidgeotto broke free at the same point each time? That's because the wobbles in this game are an indication of how likely you are to catch the Pokemon. So it will break out on the same shake each and every time.
Wobbles	 Message	                  Approximated chance of capture
0	 "The ball missed the POKéMON!"   < 10%
1	 "Darn! The POKéMON broke free!"  10-30%
2	 "Aww! It appeared to be caught!" 30-70%
3	 "Shoot! It was so close too!"	  >= 70%
So a lot of Pokemon will "appear to be caught", so just keep trying. You also shouldn't see many of message 3, since you'll usually catch it before too long.

As an aside, Catch Rate is on a per species basis and range from 3 (Legendaries) to 255 (common crap), using the formula C+1. It obviously increases the range of numbers that determine capture and are a good online indication as to how tricky this particular bugger will be. Any lower than 3+1 and the Pokemon just cannot be captured.

So that's how you capture a Pokemon. For now, we wont have to worry about stuff, but note how for a lot of Pokemon, I'm starting the capture when they go past 33% and that status isn't too helpful right now.