Jump to content

Bug and some more minor legality checks


Eskuero

Recommended Posts

There's a little bug when the gender of the OT of a Pokemon is different than the current handler, if you click on OT it applies the one from savefile properly, but the color of the gender sign is not updated unless you click twice. Is a small bug I noticed but doesn't have a lot of relevance.

Also do you think this: https://github.com/kwsch/PKHeX/commit/309d521201561feab43a347cc76671407332e2b8 could be applied in case we're loading a box as well?

The next thing are a few extra things that could be checked from the memories in order to catch some more errors when genning a Pokemon.

{0} became {1}'s friend when it arrived via Like Trade - This cannot be OT's memory since is not possible their first met was a trade.

{0} encountered {2} with {1} using the Poké Radar - This cannot be OT's memory if the origin game is not X/Y since this item doesn't exist in OR/AS. Would be legal as notOT as long as the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} flew, carrying {1} on its back, to {2} - This is illegal for any mon that can't learn Fly

{0} hatched from an Egg and saw {1} for the first time at - Is impossible to have this memory as nonOT's since hatching an egg automatically makes you the OT.

{0} learned {2} from {1} - Here we should at least check if the corresponding move is legal for that Pokemon to know. But this may vary depending of it's traded or not, and depending if it's original game is X/Y or OR/AS since some mons have different level-up learning tables and tutors only exist in OR/AS. So this memory would be crazy to fully check.

{0} looked down at the world from a tall tower where it went with {1} - This refers to Sky Pillar, so it would only be a legal memory to have for OT's if origin game is OR/AS. Would be legal as notOT all the time unless the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} met {1} at... {2}. {1} threw a Poké Ball at it, and they started to travel together - This is illegal to have as nonOT's memory since stealing Pokemons is morally wrong.

{0} participated in a contest with {1} and impressed many people - Illegal to have as OT's memory if game of origin is X/Y since contests don't exist there. Would be legal as notOT unless the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} participated in a contest with {1} and won the title - Exactly the same as the previous memory.

{0} saw {2} carrying {1} on its back - This would become illegal if the Pokemon {2} refers to cannot learn Fly.

{0} saw itself in a mirror in a mirror cave that it went to with {1} - This is illegal as OT's memory if original game is not X/Y since this refers to the mirrors on the Reflection Cave. Would be legal as notOT as long as the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} soared through the sky with {1} and went to many different places - This is illegal for OT's memory if origin game is X/Y. Would be legal as notOT unless the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} surfed across the water, carrying {1} on this back - This is illegal if the Pokemon cannot learn Surf.

{0} used {2} at {1}'s instruction, but it had no effect - Here we should at least check if the corresponding move is legal for that Pokemon to know. But this may vary depending of it's traded or not, and depending if it's original game is X/Y or OR/AS since some mons have different level-up learning tables and tutors only exist in OR/AS. So this memory would be crazy to fully check.

{0} used Waterfall while carrying {1} on its back - This is illegal if the Pokemon cannot learn Waterfall.

{0} was able to remember {2} at {1}'s instruction - This is illegal if the Pokemon cannot relearn the specified move because it's not on his level-up movepool or on the relearn moves.

{0} was impressed by the speed of the train it took with {1} - This is illegal for OT's memory if origin game is OR/AS since the train only exists on X/Y. Would be legal as notOT as long as the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} was with {1} when (he/she) build a Secret Base - This is illegal for OT's memory if the origin game is X/Y since Secret Base only exists on OR/AS. Would be legal as notOT as long as the current handler is on OR/AS but we don't always have a save file loaded to check this.

{0} was with {1} when (he/she) caught {2} - This is illegal regardless if {2} refers to a Pokemon that cannot be caught in-game and only obtained through events like Jirachi, Celebi, Volcanion, Diancie, Hoopa... etc. It may be illegal for OT's memory if the Pokemon original game is X/Y and the Pokemon {2} refers to one that's not on Kalos Pokedex.

{0} was with {1} when (he/she) went to a boutique and tried on clothes, but (he/she) let the boutique without buying anything - This is illegal for OT's memory if the origin game is not X/Y since character cutomization only exists on those games. Would be legal as notOT as long as the current handler is on X/Y but we don't always have a save file loaded to check this.

{0} went clothes shopping with {1} - The same as the previous memory.

{0} went fishing with {1}, and they caught {2} - This is illegal if the Pokemon {2} refers to cannot be caught using a Rod.

{0} went to a Pokémon Center with {1} to buy {2} - This is illegal for OT's memory if the origin game is OR/AS since the shop is not integrated onto the Pokemon Center in Hoenn. Would be legal as notOT as long as the current handler is on X/Y but we don't always have a save file loaded to check this. This also would be illegal if the current item cannot be bought on the shop.

{0} went to the Pokémon Center in {2} with {1} and had its tired body healed there - This would be illegal if the Location specified doesn't have a Pokemon Center. THis would be illegal for OT's memory if the Origin game doesn't have a city named after the location specified. As always we should not check the nonOT's memory info when it's tied to a savefile we may not have loaded.

{1} asked {0} to dive. Down it went, deep into the ocean, to explore the bottom of the sea - This would be illegal if the Pokemon cannot learn Dive. This would be illegal as well for OT's memory if the original game is X/Y since there's no zone for diving there. As always we should not check the nonOT's memory info when it's tied to a savefile we may not have loaded.

The Move Deleter that {0} met through {1} made it forget {2} - This would be illegal if the move {2} refers cannot be learn by the Pokemon by any method.

All of this is going to be a pain to check, and I'm sure I missed some more specific things that could be checked on the memories, and I don't know if you wanted to spend any time on this. I would not mind doing it myself little by little but first I wanted to know your opinion.

Link to comment
Share on other sites

clickOT Bugfix

Add load modifyPK6 override

Memories:

Pros:

* Catches people using templates

Cons:

* Memories are not checked for online play

* Memories aren't exposed when battling

* Memories can't be inherited

* "Illegal" check output is already confusing enough for non-English speakers

I'll work on it over the next week or so. Feel free to update your post / reply as needed ;)

Link to comment
Share on other sites

Added a bunch of the checks that were easy to add.

Of my 3k pk6's I have dumped, only one got flagged (61 - Tall tower for X/Y).

Remaining from your list:

New methods required:

SPECIES can know X (untraded XY Origin noTutor)

SPECIES can ReLearn X

SPECIES can be Tutored X (untraded XY return false)

Moves - Learn

{0} used {2} at {1}'s instruction, but it had no effect - CHECK _ LEARN {2} : KNOW METHOD

The Move Deleter that {0} met through {1} made it forget {2} - CHECK _ LEARN {2} : KNOW METHOD - XY Untraded no Tutor

Moves - Learn with Restriction

{0} was able to remember {2} at {1}'s instruction - CHECK _ LEARN {2} : RELEARN METHOD

{0} learned {2} from {1} - CHECK _ LEARN {2} : LEARN METHOD - XY no Tutor

Encounter - Specific Slot

{0} went fishing with {1}, and they caught {2} - Filter by SlotType? Slots that result from fishing need to be flagged when the program loads.

Edited by Kaphotics
Link to comment
Share on other sites

I thought it was strange for the Tall Tower memory text to be present in X/Y's programming, if it was indeed an ORAS-exclusive memory, so I went back to my copy of Y to take a look:

The tall tower memory is legal in Kalos - Pokemon will gain this memory when visiting the Tower of Mastery.

Link to comment
Share on other sites

So basically what is left is:

{0} learned {2} from {1} - I've doubts about if this memory allows HM/TM only or does take in count level-up moves as well.

Encounter - Specific Slot

{0} went fishing with {1}, and they caught {2} - Filter by SlotType? Slots that result from fishing need to be flagged when the program loads. I'm totally lost here. I originally though doing this through a simple array like the one used for PKMN Centers should indeed work, but since you mentioned the SlotType thing idk which other method already implemented could be used for this.

I also just noticed two memories:

{1} had {0} hold items like {2} to help it along. {4} that {3}.

{1} used {2} when {0} was in trouble. {4} that {3}.

In this two memories the allowed TextVar refers to an item but on both cases it allows to choose Key Items and HM/TMs that of course a Pokemon cannot hold/use under any case. Could be argued that the second one should allow TMs/HMs since they can be used to teach a move but I think the "was in trouble" part clearly states that it refers to in-battle usage.

Edited by Eskuero
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...