Commit graph

9189 commits

Author SHA1 Message Date
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
Kurt
10cfb45e55 BDSP: Allow bred beast ball if species not in SWSH
Remove unnecessary HashSet, all entries are not present in the first hashset comparison. Maybe was true back >4 years ago when initially implemented.
2022-06-29 19:39:08 -07:00
Kurt
43c9cc6bc1 Update HiddenPower.cs 2022-06-29 10:49:39 -07:00
Kurt
6e46f567e9 Replace u16 read with lib 2022-06-29 00:01:14 -07:00
Kurt
1d94baeb7f Fix footer size chop
oops, another hotfix
2022-06-28 16:54:18 -07:00
BlackShark
7e7b2bb2d3
Improved IsOldPkhexCorePresent (#3541) 2022-06-27 22:32:03 -07:00
Kurt
1f64a41670 Fix gci recognition 2022-06-27 22:28:46 -07:00
Kurt
70cab2aea7 Extract batch editor's entity raw value viewer
Add to the advanced tab of all 3 searchers (encdb/mgdb/pkmdb) per #3542
2022-06-27 19:59:36 -07:00
Kurt
41af1085ca Update EvolutionRestrictions.cs 2022-06-26 22:32:51 -07:00
Kurt
54a7966c75 Update 22.06.26
Split the 2020 changelog out of the release binary; archived for posterity.
2022-06-26 22:18:19 -07:00
Kurt
5947da9a3f Update HiddenPower.cs 2022-06-26 20:29:15 -07:00
Kurt
b9b4eb1791 Minor tweaks
Bulk: Pass slot origin to legality analysis. Pass the proper personal data for good measure

Personal: check if the form truly does exist for presence check because sometimes the form will default to 0 on OOB

Showdown: Reduce some allocation, be more lenient in casing parse for Nature suffix and Hidden Power manually typed by user. Parse non-english hidden power sets (yay, now usable by all languages even though PS sets are English only!).
2022-06-26 20:02:57 -07:00
Kurt
0abdb0b8a0 Simplify PKM property copy logic flow 2022-06-26 16:05:16 -07:00
Kurt
4cc992b6ee Fix Valid bool set
oops
2022-06-26 16:04:55 -07:00
Kurt
12954a6369 Minor perf improvement (spans)
Remove PKM.EVs, do operations without heap allocation
Reduce usage of PKM.IVs/PKM.Moves, reuse spans if possible.
2022-06-25 23:08:28 -07:00
Kurt
d8c8a13885 Add bizhawk footer handler
Optimize some of the other handlers.
2022-06-25 11:14:00 -07:00
Kurt
9c086260c6 Fix random level slots (PA8) initial move list 2022-06-22 16:24:11 -07:00
sora10pls
2e9f73ab4d Add PogoType for Ultra Beasts via Field Research
Will need to verify if Beast Balls can be used on other Pokémon, and if generic Poké Balls can be used on Ultra Beasts. We'll see when GO Fest Berlin starts.
2022-06-22 17:19:08 -04:00
Kurt
569010c402 Handle nicknamed PGT gifts
https://github.com/projectpokemon/EventsGallery/pull/278
2022-06-20 14:36:25 -07:00
Kurt
5c4c866482 Fix pk4->pk5 HM transferral
Was deleting the PK4 move, not the PK5 move, thus not actually sanitizing the moves.
Do same logic for PK3->PK4 (saves an array allocation)
2022-06-19 13:46:04 -07:00