BeyondTheHorizon Posted May 17, 2017 Posted May 17, 2017 A few days ago I posted this at the PKHeX GitHub errors page. I asked why Golbat with Screech is marked as illegal in PKHeX. I accepted the answer and thanked the responder. However, as Smogon recommends Screech on Golbat for its moveset here, I decided to look again at Golbat's RBY learnset on Bulbapedia as well as the Levels you can obtain him at in the Seafoam Islands, and I still don't think I understand. If Golbat can be caught at Level 27 in the wild—which is the lowest Level it can be caught in those games—it should have Screech, as well as Bite, Supersonic and Confuse Ray. PKHeX recommends Leech Life when I click on the box surrounding the moves, but according to Bulbapedia Leech Life comes before Screech on the learnset, meaning Leech Life should be overridden by Confuse Ray if you catch Golbat at Level 27 in the wild, not Screech. I'm confused.
javier_himura Posted May 17, 2017 Posted May 17, 2017 I will look into that later. Maybe the problem is caused by the catch rate. PKHeX uses the catch rate in generation 1 games to determine in what species was captured the pokemon. A Golbat with catch rate 255 was caught as a zubat, and a golbat with catch rate 90 was caught as a Golbat, only the second one could learn Screech. Of course this only apply to pokemon in generation 1 format with VC mode, not generation 2, 7 or generation 1 with tradebacks from generation 2.
sora10pls Posted May 17, 2017 Posted May 17, 2017 Perhaps try catching a Golbat at Lv. 27 from Seafoam Islands in RBY and check its moves in-game.
theSLAYER Posted May 17, 2017 Posted May 17, 2017 I just caught a Lv 29 Golbat in Seafoam Island (1F) of Pokemon Red, and it has Screech:042 - GOLBAT - C370.pk1 (I'm using the Pokemon red rom hack that uses Gen 2 images, hence why the sprite looks different)
BeyondTheHorizon Posted May 18, 2017 Author Posted May 18, 2017 7 hours ago, theSLAYER said: I just caught a Lv 29 Golbat in Seafoam Island (1F) of Pokemon Red, and it has Screech:042 - GOLBAT - C370.pk1 (I'm using the Pokemon red rom hack that uses Gen 2 images, hence why the sprite looks different) I thought so. RBY Golbat with Screech is not illegal, after all. This should be fixed in PKHeX.
theSLAYER Posted May 18, 2017 Posted May 18, 2017 Now that this is confirmed, it indeed can be added/fixed for the Pkhex checks.
javier_himura Posted May 23, 2017 Posted May 23, 2017 I think i now understant where is the problem. When PKHeX search for valid encounters for a pokemon if the encounters is a Wild Encounter PKHeX just select the minimun level and miminun species that is legal for the giving pokemon. It is assuming that all the valid moves for an evolved encounter are valid for unevoled encounters, but that for generation 1 Golbat is not true because of the Screech move. This means the methods to search for generation 1 wild encounters should be refactor to return the 2 potential encounters in this case, Zubat and Golbat
Kaphotics Posted May 25, 2017 Posted May 25, 2017 On 5/23/2017 at 0:45 AM, javier_himura said: I think i now understant where is the problem. When PKHeX search for valid encounters for a pokemon if the encounters is a Wild Encounter PKHeX just select the minimun level and miminun species that is legal for the giving pokemon. It is assuming that all the valid moves for an evolved encounter are valid for unevoled encounters, but that for generation 1 Golbat is not true because of the Screech move. This means the methods to search for generation 1 wild encounters should be refactor to return the 2 potential encounters in this case, Zubat and Golbat PKHeX assumed pre-filtering could select a precise encounter prior to checking moves; the EncounterGiftMatch list and EncounterStaticMatch list are evidence that it's not 100% possible. I'm thinking that the main encounter matching setup needs to be refactored to more of a yield-return ienumerable pattern. With that setup, multiple encounters can be checked. The static/gift workaround will end up being simplified so that the entire legality check first yields valid encounters then checks moves. If all moves are valid then the encounter passes, leading to remainder of the checks, else it will try the next encounter. Overall logic flow: IEnumerable to yield possible encounters Pre-move check rejection scenarios (invalid encounter slots/types) Move Checks Final Checks Will need to make the rejection loop flexible enough so that post-move checks can be inserted. Will also need to have a way to peek at the next possible encounter; if none, the flow will continue through the remainder of the checks as there is no other encounter to compare against. Won't be straightforward as the program has to be able to restart for the next encounter.
Kaphotics Posted May 28, 2017 Posted May 28, 2017 fixed in latest commit https://github.com/kwsch/PKHeX/commit/858aa5068921a8d95a507639e545a7aa9aff60e9 1
BeyondTheHorizon Posted May 29, 2017 Author Posted May 29, 2017 On 2017-5-28 at 6:20 AM, Kaphotics said: fixed in latest commit Thanks for the fix.
Recommended Posts