Plugins may have popups that were created on another thread as diagnostic messages; by trying to close these on our main GUI thread, the program crashes.
Just leave these other-thread forms open when we change save files instead of crashing or closing them on their proper thread.
* Gen 5 enhancements:
-- BW: Dump/import black city/white forest data from each other.
-- BW: Reset thundurus/tornadus flags so they can be roaming again by visiting the cabin at route 7.
Reset this flag and switch your BW version with the same save file, you can catch the other pokemon that's limited to a sole version.
* Use work 192, fc5 ext
Adds a translatable message string to indicate the provided input size is incorrect.
- Allow paradox species to receive master rank ribbon
- Resize & center IV/AV rand button (localizations
were too wide for AVs)
- Highlight blue the most recently toggled Ribbon
If the criteria template is optimized, we will be able to source moves from sibling game pairs that require indications of it being traded (yay strict logic...)
ex: encgenerator now yields X/Y eggs when ORAS tutors requested in moveset and game is X/Y
Un-fix main panel, guess this might help for scaling the GUI via OS settings. Add an overload to rescale ItemSize for the vertical tab control; don't think it is ever called though.
Make EvoChain get method public for archit
Allow dragon ascent bitfetch for gen6/7
Fix hidden power type parse/trim
Remove */ from hidden power type calc
allow longer set lines (full EVs specified for Gen2 is 74 chars
allow set lines of length 1-2 to fully support trash sets for all languages
Tweak pb8->pk8 to be more straightforward
* Remove the useless blank line in text_Natures_zh2.txt
Remove the useless blank line to fix the Natures drop-down selection menu issue, which may be introduced from the last modification.
* Update some translation texts for better display
Update some translation texts for better display.
pk3->pk4 trash length copy
cross-thread main preview dragdrop (continue from same GUI thread)
rearrange csproj again, seems like SelfContained needs to go after the Publish content.
Updates from net46->net7, dropping support for mono in favor of using the latest runtime (along with the performance/API improvements). Releases will be posted as 64bit only for now.
Refactors a good amount of internal API methods to be more performant and more customizable for future updates & fixes.
Adds functionality for Batch Editor commands to `>`, `<` and <=/>=
TID/SID properties renamed to TID16/SID16 for clarity; other properties exposed for Gen7 / display variants.
Main window has a new layout to account for DPI scaling (8 point grid)
Fixed: Tatsugiri and Paldean Tauros now output Showdown form names as Showdown expects
Changed: Gen9 species now interact based on the confirmed National Dex IDs (closes#3724)
Fixed: Pokedex set all no longer clears species with unavailable non-base forms (closes#3720)
Changed: Hyper Training suggestions now apply for level 50 in SV. (closes#3714)
Fixed: B2/W2 hatched egg met locations exclusive to specific versions are now explicitly checked (closes#3691)
Added: Properties for ribbon/mark count (closes#3659)
Fixed: Traded SV eggs are now checked correctly (closes#3692)
51875d27b2
Previous change ^ was short circuiting logic for gen5 eggs (unavailable HA for Serperior)
probably need to rewrite this method or maybe just delete these lines since they should fall through.
Generation of version-less eggs is -1, so just default to the format it is.
Met location lists weren't reloading if the version was 0; could load a non-SV entity followed by an egg and it would keep the old lists. Fall back to the save file's group if no list is available.
All Pokémon in the Paldea Pokédex are eligible, except for Legendaries, Sub-Legendaries, and Paradox.
Currently ineligible foreigners are Charmander/Charmeleon/Charizard, Wooper-0/Quagsire, Meowth-2/Perrserker
.EncryptionConstant=$rand0
.EncryptionConstant=$rand3
^ both will randomize so EC%100 = 0
Additionally, added $rand0/$randB/$randS for Wurmple/Beautifly/Silcoon to force EC%10 [0,4], otherwise EC%10 will be [5,9] for the Cascoon/Dustox evolution.
For neither of the two above cases, can do EC%6=last char if someone cares about the EC tiebreaker for characteristic determination. No, I don't want to consider how allow the above cases to do that too :) -- just write your own syntax via a plugin and add your ComplexSet to the list!
ROM data has min:24, max:22 (24-22) instead of (22-24).
In-game test shows all Psyduck are level 22 (max), and 24 (min) is not considered since it is greater than the max.
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
Now matches the Mightiest mark and other "isMissing" state checks.
Also indicate for Alpha marks since the logic check is the same != style.
Closes#3640
ty @Kitcham
* Update CHT translations of SV for PKHeX
Update Traditional Chinese translations of SV for PKHeX.
* Remove useless blank line
Remove useless blank line.
* Minor tweak for GUI translations
Minor tweak for GUI translations.
* Minor tweak for GUI translations
Minor tweak for GUI translations.
Remove story scenario flags from fly loc cheat
Modify shrine work value to lift seals and make sub-legendaries ready to catch
Add cheats to unlock all TM recipes and bike upgrades
Closes#3635
Adds support for Scarlet & Violet.
Co-Authored-By: SciresM <8676005+SciresM@users.noreply.github.com>
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
Correct a linguistic error in CHT translation based on feedback.
Correct abilities error in CHT translation
Add missing CHT translation text for Pokémon type.
Can unroll the loop, but would look more ugly :)
JIT will probably do it for us.
Fix <= to < for IVs
Inline temp var (start is unused after assigning to low)
Big thanks to Parzival from the RNG discord community for chiseling the LCRNG search space down to the best performing implementation possible.
50x? Down from O(2^8) -> O(2^3) is 32x, but we no longer need to access two heap arrays (262KB no longer needed!). Everything can be calculated tightly with the stack.
f641f3eab2/RNG/LCG_Reversal.py (L31)
Rainbow tables is the only faster implementation. However, nobody is gonna hog many GB of RAM for O(1) reversals. This is ~O(2^3), down from O(2^8). Much better than the days of O(2^16)!
No longer uses linq, and uses stackalloc for temp array creation.
Silly enums not implementing IEquatable<T>, so I have to implement the Contains myself.
Fix 3DS region display bug in zh-HK traditional Chinese. Corresponding 3DSLocale text was omitted in previous commits.
Improve some expressions in zh-HK README + traditional Chinese GUI.
Add zh-HK README translation for README. It was wrote in Traditional Chinese Hong Kong style.
Add Traditional Chinese translation resource and make PKHeX support for tradition Chinese.
* Add RanchMii for SAV4Ranch
* Add RanchToy
* Add RanchTrainerMii
* Add RanchLevel
* Add RanchToy class; make existing RanchToy RanchToyType
* Add RanchToy and RanchLevel to SAV4Ranch
* Remove incorrect MaxPkmCount entry from RanchLevel
* Move code to remove PtHGSS data to a function in G$PKM
* Add RK4 for My Pokemon Ranch Pokemon
* Add RanchPkOwnershipType
* SAV4Ranch updates
* Fix PK4/RK4 conversion logic to stop breaking nicknames/OTs
* Fix EntityDetection.IsPresent() check tripping on the data end marker for SAV4Ranch
* Add .rk4 to README translations
* Minor tweaks
Fix RK4 TID/SID endianness/order, split Ownership enum into two enums
Condense mii classes to get/set properties
Make RanchLevel a static class for logic
Remove ClearFF for TrainerMii -- the FFFF is the string terminator char for gen4
Make Toy byte enum, with unused alignment bytes
Co-authored-by: Kurt <kaphotics@gmail.com>
Didn't trust the existing manual transcribing, and both Bulbapedia and Serebii contain errors that don't match the original raw data. So, let's rip the raw data ourselves and use our own parse pickle (just raw bytes) instead of 162 manual entries.
For ripping logic, see: 203874da12
Partial match if language cannot access walker course
Re-do language override for EncounterStatic->pkm:
- Override gen1/2 event OT/language only if requested language is not possible
- Override walker OT/language if requested language is not possible (->japanese)
Closes#3594
This was implemented because Niantic messed up some GBL encounters in the past, but it was fixed quick enough for it to not matter for legality, so no encounters actually use this PogoType.
Also rename GBLDay => GBLD to match other PogoTypes for consistency across enum names.
Necessary for gen3 manual overrides; the fetched properties for Metadata should refer to the cloned data that it is using, not the original reference.
Closes#3582
Script run 4y ago used the wrong size to jump between entries (used B2W2's), and ended up copying bytes to empty spots that were NOT abilities.
f8a1d26694
Used the original dump and re-ran the script from 9f4b18119e
Was missing the check & revert step; just fix the logic completely.
We should have the contest star ribbon if we've set all the ribbons, otherwise it was already removed.
Gen6 can get the memory on those who did not participate by being in the party with other participants.
This includes those who cannot enter into the Maison; having memory and no ribbon is entirely legal.
PKHeX needs the exact moveset rather than a "permit this extra move" because our recent logic improvements check for strict moveset matching when it is still an egg.
Closes#3577 thanks @wararjey !
In this pull request I've changed a ton of method signatures to reflect the more-narrow types of Species, Move# and Form; additionally, I've narrowed other large collections that stored lists of species / permitted values, and reworked them to be more performant with the latest API spaghetti that PKHeX provides. Roamer met locations, usually in a range of [max-min]<64, can be quickly checked using a bitflag operation on a UInt64. Other collections (like "Is this from Colosseum or XD") were eliminated -- shadow state is not transferred COLO<->XD, so having a Shadow ID or matching the met location from a gift/wild encounter is a sufficient check for "originated in XD".
Disallow max moves from Sketch
Hide dmax moves from legal dropdown lists
Pass ushort for moves for validating memories
Internal class for move pp (hide empty class from dll users)
Fix RibbonVerifier4 not checking gen4 contest ribbons correctly
Split IRibbonCommon6 to have memory ribbons separate, as they are not implemented in mystery gifts. Also, we can add the boolean flags to the interface, and check that the boolean is set if count is nonzero.
Fix adding ribbons to Gen8 gift templates
Improve Gen8 template ribbon fetch (no closure, faster IndexOf)
`Moveset` struct stores 4 moves, and exposes methods to interact with a moveset.
`IndividualValueSet` stores a 6 IV template (signed).
Performance impact:
* Less allocating on the heap: Moves - (8 bytes member ptr, 20 bytes heap->8 bytes member)
* Less allocating on the heap: IVs - (8 bytes member ptr, 28 bytes heap->8 bytes member)
* No heap pointers, no need to jump to grab data.
* Easy to inline logic for checking if moves are present (no linq usage with temporary collections).
End result is faster ctor times, less memory used, faster program.
Every reflection GetValue / SetValue call would do a bunch of allocation; just let the runtime give us the full list it builds each time, then iterate off that.
Improve start index searching; properties do not contain spaces, so we can find the start by just searching for the first character of the splitter (space).
No longer need to trycatch as we're setting foreach property, instead of foreach string.
The dummy EncounterInvalid has Generation:0, when 7->6/2 depends on which generation the encounter originated on. Change it so that the origin generation gets passed along.