Commit graph

9308 commits

Author SHA1 Message Date
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
42f50a6dd6 Merge branch 'master' of https://github.com/kwsch/PKHeX 2022-08-11 00:46:43 -07: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
Kurt
6f7ca34740 Minor clean, xmldoc personal tables 2022-08-09 23:33:41 -07:00
Kurt
f53d468db2 Show complete form name if possible
Get rid of the pk3DS janky form naming :)
2022-08-09 19:16:55 -07:00
berichan
ef0b3f9607
Prompt user for clipboard directory use if present for box dump/save (#3566) 2022-08-09 18:03:00 -07:00
Kurt
59fad0e8cf Minor tweaks
Extract some logic (origin markings)
Revise directives for NET7 targeting, remove old net5 refs
2022-08-05 16:18:42 -07:00
Kurt
54910b8fba Early return if no evos
GO transfers like Snivy can be viewed but shouldn't exist in Gen8. This avoids any exception being thrown for shared move check.
2022-08-05 16:18:06 -07:00
Kurt
94668b4672 Fix clearing of clones (off by 1 last box)
Clamp end box in the clear/modify actions too, just in case.
2022-08-05 11:24:54 -07:00
Kurt
999caedf6e Allow viewing of un-convertible GO encounters 2022-08-05 11:23:48 -07:00
Kurt
538d651aef Misc tweaks
Add xmldoc, simplify some expressions
2022-08-05 11:23:28 -07:00
Kurt
ec45ca1a83 Set species flag on ck3/xk3->pk3
Make GetG3Species return ushort

Fixes regression caused by 5942a74147
Copying SpeciesID3 instead of Species is fine as it skips the map/unmap step, but it also skips the setting of the HasSpecies flag. So we'll just set it in the individual ConvertToPK3 methods.
2022-08-04 09:53:15 -07:00
Kurt
bab2cc11d6 CK3: Fix field width of Friendship
Closes #3564
2022-08-04 08:56:17 -07:00
Kurt
87e45b14c8 Disallow BD/SP Tower Master ribbon w/mythicals
Thanks TFSthegreat !
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=278427
2022-08-03 20:27:13 -07:00
Kurt
19b4a26cd7 Use evo history to check visitation
Previously, the history shared Gen8 for Gen8a/Gen8b; now they're distinct.

Add "HasVisited" for other gens
2022-08-03 18:17:46 -07:00
Kurt
ac17c7d4a3 Prevent setting of invalid dmax levels to set
Just an extra protection.
2022-08-03 17:50:11 -07:00
Kurt
50a64d8beb Add DynamaxLevel parsing for ShowdownSet 2022-08-03 17:10:00 -07:00
Kurt
98c1420b22 Update PKM.cs
Closes #3562
2022-08-03 16:41:10 -07:00
tastymeatball
c6aa13ddc6
Lots of flags added to FireRed/LeafGreen (#3554)
* Lot of flags added to FireRedLeafGreen
* Added a few more flags
2022-08-03 16:15:56 -07:00
CanoeHope
89b49b41d9
Fixed Crystal Event Constant formatting (#3548)
* Update const_c_en.txt
* Update const_c_es.txt
* Update const_c_zh.txt
* Update const_c_zh.txt
2022-08-03 16:15:44 -07:00
Kurt
9166d0eb64
Refactoring: Move Source (Legality) (#3560)
Rewrites a good amount of legality APIs pertaining to:
* Legal moves that can be learned
* Evolution chains & cross-generation paths
* Memory validation with forgotten moves

In generation 8, there are 3 separate contexts an entity can exist in: SW/SH, BD/SP, and LA. Not every entity can cross between them, and not every entity from generation 7 can exist in generation 8 (Gogoat, etc). By creating class models representing the restrictions to cross each boundary, we are able to better track and validate data.

The old implementation of validating moves was greedy: it would iterate for all generations and evolutions, and build a full list of every move that can be learned, storing it on the heap. Now, we check one game group at a time to see if the entity can learn a move that hasn't yet been validated. End result is an algorithm that requires 0 allocation, and a smaller/quicker search space.

The old implementation of storing move parses was inefficient; for each move that was parsed, a new object is created and adjusted depending on the parse. Now, move parse results are `struct` and store the move parse contiguously in memory. End result is faster parsing and 0 memory allocation.

* `PersonalTable` objects have been improved with new API methods to check if a species+form can exist in the game.
* `IEncounterTemplate` objects have been improved to indicate the `EntityContext` they originate in (similar to `Generation`).
* Some APIs have been extended to accept `Span<T>` instead of Array/IEnumerable
2022-08-03 16:15:27 -07:00
Kurt
d1dad7b8eb Revise check for apply PID shinyxor
was checking stale value

make loop max adjustable by caller; knowingly requesting squares is 1:65,536, so a higher loop count than 50k might guarantee more successes.

Maybe in the future we'd have separate algorithms to pre-choose seeds by choosing a PID and unrolling -> rolling.

Co-Authored-By: Kermalis <29823718+Kermalis@users.noreply.github.com>
2022-08-03 16:11:49 -07:00
Kurt
46655147ba Update underground pickles: nat dex considerations
4354cd736e
2022-08-03 13:33:27 -07:00
sora10pls
3248b1d5f6 Update sprites with latest changes
Tentacruel: fixed Shiny sprite d7a6f6ee11

LA sprites: matches latest from National Dex Project with minor fixes
2022-08-02 09:27:46 -04:00
sora10pls
54babc2217 Allow Ranked Ribbon on Mythicals, extend availability 2022-08-02 09:23:07 -04:00
Lusamine
7ad9f68dda Add missing static Loop Lagoon Gyarados
Closes #3555
2022-07-22 18:15:24 -05:00
Kurt
038722ee09 Allow pkrs on PK1->PA8 Kleavor 2022-07-11 18:55:32 -07:00
Kurt
7d35517614 Revise AV check string to show which stat invalid 2022-07-10 17:34:46 -07:00
Kurt
79913a2474 Update IAwakened.cs 2022-07-10 17:16:48 -07:00
Kurt
3dbf46be92 Handle "random" AV gains from level up 2022-07-10 15:53:33 -07:00
Kurt
45af203a26 Fix C/XD playtime reading
ty @trigger-segfault
e611c9661e
apparently Japanese XD uses 32bit instead of 64bit, different struct size. Seems the same as the memo size being different for japanese XD too.

Since we're now using Config, apply the correct CurrentRegion/OriginalRegion values when setting a pk* to sav.
2022-07-06 17:33:15 -07:00
Kurt
d13488f517 Split FrameworkUtil into separate extension classes
Adds bigendian float/double logic
2022-07-06 17:30:14 -07:00
Kurt
240fe8d60f Fix custom event work maximum
Closes #3547

clamp the index, not the value
replaces the combobox with a numericupdown
2022-07-06 11:19:39 -07:00
Kurt
42743d8c2f RS: Locations 75/77 unused
Remove from valid hatch location list
Mark as (unused) in text files

Closes #3544

Co-Authored-By: prof64 <80442784+prof64@users.noreply.github.com>
2022-07-04 01:02:47 -07:00
Kurt
cf86cafdf7 Add optional loop for generating min level 2022-07-02 17:10:30 -07:00
Kurt
0605a01b24 Remove unnecessary assignment
PIDIV.None is equivalent to a zeroed field.
2022-07-02 12:24:43 -07:00
Kurt
daf9ad76c9 Change default ShowdownSet import for empty moves
Don't replace current moveset if no moves requested.
2022-06-30 17:24:01 -07:00
Kurt
5c0498ddbe Don't recognize XD eevee->umbreon as colostarter 2022-06-30 17:23:27 -07:00
sora10pls
f3e0ebd163 Add latest distribution raid data 🐇 2022-06-30 20:07:03 -04:00
Kurt
e4984b203c Update SAV3GCMemoryCard.cs 2022-06-30 07:17:47 -07:00