Commit graph

5042 commits

Author SHA1 Message Date
Kurt
72410e1619 Fix genderless walker genders
Raw ROM data wasn't clean genders (0 for staryu, needed 2)
2022-09-30 19:27:29 -07:00
Kurt
0bc7eeb5f5 Improve RNG frame detection for gen4
stupid bruteforce for slot4->pk4
2022-09-30 19:26:59 -07:00
Kurt
65baf92608 Only add encounter moves if context matches
Viewing a PLA thundurus template into SWSH, then clicking current moves would green-tag
2022-09-28 21:51:22 -07:00
Kurt
baf2ac22d7 Update EncounterStatic4Pokewalker.cs 2022-09-28 00:09:10 -07:00
Kurt
583f96a598 Specify full movesets & course for Pokewalker encs
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
2022-09-27 23:14:42 -07:00
Kurt
f42b8609c1 Emit bdsp&pla for swsh version range 2022-09-27 10:00:44 -07:00
Kurt
9bf303d79b Show sublocation for XY locations (routes)
have fun matt
2022-09-27 09:58:00 -07:00
Kurt
b6f5723d40 Make const location IDs ushort 2022-09-27 09:57:42 -07:00
Kurt
eabd8fad02 Reformat met location tables
More coherent alignment
Fix LGPE duplicate Met0 locations
Remove sublocations from XY hatch locations
2022-09-27 09:57:28 -07:00
sora10pls
4fd73d201f Remove unused GBLZero PogoType
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.
2022-09-26 20:37:55 -04:00
Kurt
83d6402fd4 Add gen3 unown form-pid check 2022-09-26 07:27:51 -07:00
Kurt
05d43cef7c Set pk2 time of day for EncounterEgg ctor 2022-09-24 19:23:52 -07:00
Kurt
7cbde296f8 Make GameVersion a byte enum 2022-09-24 19:23:23 -07:00
Kurt
19d062480a Verify time of day for gen2 encounters 2022-09-24 18:07:58 -07:00
Kurt
9c133d4e39 Allow emitting Crystal eggs for location-less pk2's
Closes #3591
ty @randomdice101 !
2022-09-24 18:07:41 -07:00
Kurt
8c93fd1cbd Fix honeytree RNG frame matching
See EncounterSlotDumper for associated change (forgot to retain SlotType)
2022-09-23 13:36:44 -07:00
Kurt
0a9fbfc8c3 Size 7->8, make properties u8 instead of s32 2022-09-22 11:57:58 -07:00
Kurt
f1dcc33168 Update movepp sig to use ushort 2022-09-18 23:06:02 -07:00
Kurt
3a5aa22c6f Force alpha move state for below learn level 2022-09-18 22:00:46 -07:00
Kurt
84be9da49d Revise rotom form check 2022-09-18 17:07:43 -07:00
Kurt
98707b466c Bounds check move & species
searching for florges with dazzling gleam as a PK5 -> reject
2022-09-18 00:44:31 -07:00
Kurt
b04df6383a Fake OT/Nickname fetch for batch command compare 2022-09-17 02:00:26 -07:00
Kurt
fddddcba28 Ban evos byref all the way down
https://github.com/kwsch/PKHeX/issues/2973#issuecomment-1247776541
2022-09-15 17:43:52 -07:00
Lusamine
eb51826243 Add date legality for Otsukimi Festival 2022 Clefairy 2022-09-13 18:51:20 -05:00
Kurt
61aa10a564 Require AtAnyTime for flagging original egg moves
https://projectpokemon.org/home/forums/topic/62305-egg-moves-are-deemed-legal-even-if-they-are-not-in-relearn-moves-list-before-gen-8/?do=findComment&comment=279269

ty liopds !

for gen8, require "Encounter" flag to match gen6/7
gen6/7 don't need to check IsMovesetDeleted as 8->7 will not traverse to 7-- if it was deleted.
2022-09-13 15:22:19 -07:00
Kurt
5875d76468 Update 22.09.13 2022-09-12 23:55:30 -07:00
Kurt
d5cdd3e6cc Update SAV1.cs
Closes #3583
2022-09-12 11:54:35 -07:00
Kurt
c5908b2b97 Disassociate metadata's SAV reference from clone
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
2022-09-11 09:59:00 -07:00
Kurt
2bbd767066 Fix corrupted personal data entries
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
2022-09-10 22:54:06 -07:00
Kurt
7d2808ea33 Requisite ribbon syndicate ribbons 2022-09-10 19:44:58 -07:00
Kurt
27eb68335b Update learn handling for side-game wiped movesets 2022-09-10 12:02:15 -07:00
Kurt
0a88cdc32e Update Encounters8.cs 2022-09-10 01:13:34 -07:00
Kurt
c611bba9b5 Update WA8.cs 2022-09-08 23:11:58 -07:00
sora10pls
39ccb50580 Add latest distribution raid data 2022-09-08 20:04:39 -04:00
Lusamine
f79560b8a2 Add Continental Vivillon pattern to Nagasaki, Japan for 3DS
Updated earlier this year:
https://docs.google.com/spreadsheets/d/e/2PACX-1vTVVOEZbXLVQvjIdzGACpZ_IrOWgVDBr_Wa-xULK3191BP9lf1tep-z-PsmcAfaH_aE56j3GHDX_9UO/pubhtml
2022-09-07 23:58:04 -05:00
Kurt
17b42219af Improve xd umbreon detection
Make PIDIV for xd starter indicate the TID/SID origin seed too.
2022-09-07 15:49:53 -07:00
Kurt
bbc45d8b0c CXD played: Use TotalHours to set elapsed hours 2022-09-07 14:39:58 -07:00
Kurt
a0c998fdd5 Simplify contest ribbon deadlock set
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.
2022-09-06 21:05:39 -07:00
Kurt
20dcb8d407 Remove old showdown set aliases
Don't need to support sets that don't follow the current standard.
2022-09-06 21:04:40 -07:00
Kurt
d6e83362b3 Fix binarysearch result compare
Method returns a negative number if not found; not always -1
https://projectpokemon.org/home/forums/topic/62246-g3-xd-move-tutor-legality/
2022-09-05 08:50:27 -07:00
Kurt
06196e0440 Minor tweaks
Less alloc
2022-09-04 22:23:35 -07:00
Kurt
6a61b0e449 Update EvolutionTree.cs 2022-09-04 22:20:35 -07:00
Kurt
92a50264cc
Refactor RNG advance/reverse methods (#3579)
The new LCRNG/GCRNG/ARNG classes are static, rather than singletons. Allows them to be inlined much better.
2022-09-04 12:03:37 -07:00
Kurt
d9ad0052a1 Completely remove chatelaine memory check
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.
2022-09-03 10:12:42 -07:00
Kurt
fd27bde673 Update RibbonVerifierCommon6.cs 2022-09-03 08:25:12 -07:00
Kurt
da642ee16e Remap context for sidegame HT memory checks
gastrodon with recover as HT memory needs to verify within the context of SW/SH and prior learn environments.
2022-09-02 15:41:22 -07:00
Kurt
1960b335fd Remove PersonalInfo.Abilities, use interfaces
If you must get a list of abilities, then use the span extension methods.
Also reworks some initial moveset fetching to allocate less
2022-09-02 10:20:19 -07:00
Lusamine
a97e74e628 Correct Arceus Chronicles Growlithe dates 2022-09-02 02:40:40 -05:00
Lusamine
7bab0270bb Fix Wish Ralts moveset
Thanks @Kermalis !
2022-09-01 23:27:58 -05:00
Kurt
59c518f268 Condense moveset deletion check 2022-09-01 20:57:39 -07:00
Lusamine
8ecbd08efd Add start date for Arceus Chronicles Growlithe event 2022-09-01 21:04:56 -05:00
Kurt
e8aa2c8ed1 Correctly check xy/sm if not ao/usum levelup 2022-09-01 09:34:40 -07:00
Kurt
4a008e510d Sanity check friendship and level values parsed
Don't accept Level: 101, for example.
2022-08-31 22:22:23 -07:00
Kurt
f4f9df3a81 Don't add new gs moves to pk1 permit array
Out of range
https://projectpokemon.org/home/forums/topic/62190-user-message-an-unhandled-exception-has-occurred-you-can-continue-running-pkhex-but-please-report-this-error
2022-08-31 21:03:26 -07:00
Kurt
88ac14946d Don't be as strict with shedinja evo moves
EncounterMovesetGenerator doesn't specify a clean encounter, don't check it as thoroughly.
2022-08-31 19:09:06 -07:00
Kurt
fb9deab202 Specify full gift egg wc3 moveset
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 !
2022-08-31 18:55:17 -07:00
Kurt
71e08222cf Update 22.08.31 2022-08-30 22:49:54 -07:00
Kurt
d350bb7fee Misc fixes & pickle updates 2022-08-30 21:15:07 -07:00
Kurt
66e0613d82 Minor clean 2022-08-30 15:00:45 -07:00
Kurt
319a671a6d Simplify munchlax tree list usage 2022-08-29 17:38:27 -07:00
Kurt
f18e884407 Remove unused BDSP bcat logic
ded game, underground distributions unused. no need to differentiate, no need to allocate unused collections.
2022-08-29 17:37:54 -07:00
Kurt
bf37be3ea1 Update LearnVerifierEgg.cs
Order of operations being spooky
2022-08-29 16:08:56 -07:00
Kurt
40649084b3 stackalloc temp unreleased item arrays 2022-08-29 16:08:30 -07:00
Kurt
d8fe34011d Remove some bounds checks, int->byte form oops
https://github.com/kwsch/PKHeX/pull/3575#issuecomment-1229244453
ty @Kermalis !
2022-08-27 12:53:30 -07:00
Kurt
3c232505e5
Refactoring: Narrow some value types (Species, Move, Form) (#3575)
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".
2022-08-26 23:43:36 -07:00
Kurt
444c3d2209 Narrow more types 2022-08-26 10:07:24 -07:00
Kurt
6e4613a3a7 Narrow met location value checks for eggs s32->u16 2022-08-26 10:03:46 -07:00
Kurt
28d726da80 Simplify wild ball permitted checks 2022-08-26 01:20:49 -07:00
Kurt
e700a0e3e6 Handle traded BDSP egg transfers 2022-08-25 23:04:38 -07:00
Kurt
528a377f84 Handle version restrict for new gen4 legend cards
The other existing Eiscue/Stonjourner dmax crystal gifts are version restricted too, using this byte with same values.
2022-08-25 13:10:39 -07:00
Kurt
ad28f7b261 Delete old utility methods (unused)
MoveEgg: already range check in the Safe method
Inline some logic
2022-08-24 23:49:00 -07:00
Kurt
b241c19520 Simplify some memory args 2022-08-24 23:29:03 -07:00
Kurt
d3c2d77d11 Misc move/memory tweaks
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)
2022-08-24 20:32:40 -07:00
Kurt
43871e856c Specify some lambdas as static
Rewrite some usages to be more clear
bikeshedding at its finest, ignoring more important things to update/fix :)
2022-08-23 23:11:26 -07:00
Kurt
26b1453002 Narrow ribbon count type from int->byte, split interface
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)
2022-08-23 21:25:22 -07:00
Kurt
eb2cef10c9 Minor clean
Stability intensifies
2022-08-22 23:18:53 -07:00
Kurt
0b458395f1 Fix handling for USUM banned species bypass
Tweak EReader check for Shadow3, more straightforward since we can just check the location ID (nothing else uses that location ID).
2022-08-21 19:15:02 -07:00
Kurt
6441bdadd8
Add specialized struct for Moveset and IV specs (#3572)
`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.
2022-08-21 17:34:32 -07:00
Kurt
2cb2531288 Add more xmldoc 2022-08-21 01:39:16 -07:00
Kurt
7c0a7fd64e Improve static class localization perf
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.
2022-08-20 12:11:43 -07:00
Kurt
d0ca8403a9 Minor tweaks
Flag enigma berry on ck3/xk3
Suggest national ribbon if missing
Flag N's pkm if any IV is != 30, even if sum is 180.
2022-08-19 22:37:27 -07:00
Kurt
db0b77c493 Update RibbonVerifierCommon7.cs
Closes #3571
2022-08-19 13:22:39 -07:00
Kurt
44c8e772a3 Fix incorrect method call
Copypasta oops, previous commit at fault.
2022-08-18 01:17:03 -07:00
Kurt
5cfaf7eecd Add overloads to get localized showdown sets 2022-08-17 23:50:14 -07:00
Kurt
3dde8a7cfa Reduce linq usage, minor perf 2022-08-17 23:48:37 -07:00
Kurt
5140c47e84 Pass missing flag so that remove all can revert 2022-08-17 23:47:15 -07:00
Kurt
136f742299 Flag cross-transfer presence if tracker missing
Can't get a Pioneer Ribbon on SW/SH alolan vulpix lacking a HOME Tracker, assuming you have the HOME Tracker setting enabled.
2022-08-16 15:50:35 -07:00
Kurt
912023d756 Fix 7->prev EncounterMovesetGenerator traversal
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.
2022-08-16 13:14:48 -07:00
Kurt
f62597cc24 Add shared egg moves to GetAllMoves fetch 2022-08-16 12:42:40 -07:00
Kurt
855e28b086 Update GUI translation text files
winforms control localization has some issues (discarding mgdb/encdb/pkmdb stuff)
2022-08-15 22:05:04 -07:00
Kurt
768047cd80
Legality: Rewrite Ribbon Verifier (#3570)
* Rewrite ribbon verification
* Explicitly verifies all ribbons instead of chained iterators.
* Verifies using only the stack, using `struct` and `Span<T>`. No allocation on heap, or `IEnumerable` iterators.
* Verifies all egg ribbons using a separate method, explicitly implemented. No reflection overhead.
* Separates each ribbon interface to separate `static` classes. Easier to identify code needing change on new game update.
* Extracted logic for specific ribbons. Can easily revise complicated ribbon's acquisition rules.
* Simplifies GiveAll/RemoveAll legal ribbon mutations. No reflection overhead, and no allocation.
* Can be expanded in the future if we need to track conditions for ribbon acquisition (was Sinnoh Champ received in BDSP or Gen4?)

End result is a more performant implementation and easier to maintain & reuse logic.
2022-08-15 21:04:30 -07:00
Kurt
a4274d370f Hide DynamaxLevel outside of Gen8 format 2022-08-14 18:54:08 -07:00
Kurt
3cccb3a9cd Revise alola champ ribbon check 2022-08-12 10:16:12 -07:00
tastymeatball
5f3516c3ce
Fixed error getting Z coordinate (#3567) 2022-08-12 07:58:23 -07:00
Kurt
b900361ad3 Permit alolan champ ribbon from mystery gift
silly world pikachu gift
2022-08-11 21:03:08 -07:00
sora10pls
7ad70a04c7 Add latest distribution raid data 👿 2022-08-11 20:07:02 -04:00
Kurt
7c4e5e7b04 Add more xmldoc 2022-08-11 00:46:41 -07:00
Kurt
af87d038aa Delete unused logic 2022-08-11 00:25:16 -07:00
Kurt
d1959d90a4 Move files 2022-08-11 00:24:59 -07:00
Kurt
30f2450a30 Minor clean, xmldoc personal tables 2022-08-11 00:24:25 -07:00