Jump to content

Catch rate glitches (Generation II): Difference between revisions

Explanation and easier fix
>Sherkel
No edit summary
>Bbbbbbbbba
(Explanation and easier fix)
Line 1:
In {{GSC}}, ifa the opposingwild Pokémon's catch rate is not affected if it is burned, poisoned, or paralyzed, despite those conditions increasing catch rate in other generations and the code seeming to attempt to factor them in. Sleep and freeze still affect the catch rate as intended.
 
==Explanation==
Line 9:
ld c, 10
jr nz, .done
; ld a, [wEnemyMonStatus] ; bugfix
and a
ld c, 5
Line 15 ⟶ 16:
.done
 
What the code does is set a value increasing catch rate (referred to as "a" in Bulbapedia's explanation, linked below) to 10 if the opponent is asleep or frozen, and do nothing otherwise. The next few lines are presumably intended to set the value to 5 if there is a different status condition present; however, since the "jrvalue nz"of precedingregister it<code>a</code> preventsis thisalready from<code>WildPokemonStatus being& able(SLP|FRZ)</code>, tothe occursecond <code>jr nz, as.done</code> WildPokemonStatusis willnever nottaken, beand the value is set to 0 anyway.
 
Inserting the commented line would fix this glitch.
One possible fix would be modifying the code to the following:
 
ld b, a
ld a, [WildPokemonStatus]
and a
ld c, 0
jr z, .done
and SLP|FRZ
ld c, 10
jr nz, .done
ld c, 5
.done
 
This would instead set c to 5 if the opponent was inflicted by a status condition but not asleep of frozen before jumping to ".done", rather than doing so prematurely.
 
==See also==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.