Commit graph

1353 commits

Author SHA1 Message Date
Kurt
d95ba482f3 Reduce allocation in methodfinder IV set 2022-03-13 19:39:38 -07:00
Kurt
d5ae6764aa Stackalloc IVs for template->pkm fill 2022-03-13 19:24:08 -07:00
Kurt
8f8726ac5e Disallow encstatic1 yield catchrate not tradeback 2022-03-13 18:29:47 -07:00
Kurt
8afc6814eb Disallow matching BU statics for non-JP 2022-03-13 17:45:01 -07:00
Kurt
69fafcab83 Performance: Slightly reduce allocations in moveset validation (#3460)
* Reuses move parse result objects for each encounter parsed in a LegalityCheck attempt, instead of creating a new object.
* Ensures the objects are never-null, and makes cleanup easier.

Slightly adjusts some other parts of the moveset validation to reduce allocations.
2022-03-12 17:39:00 -08:00
Kurt
93255efcb8 Disassociate Shiny enum from WC6 PIDType (#3461)
Have `Shiny.Random` be `0`, so we can skip init on this field for EncounterStatic. Plus makes it a little less brittle for future expansion if shiny qualities change.
2022-03-12 17:38:59 -08:00
Kurt
5359a140a6 Handle fixed ability for 8b RNG 2022-03-08 08:44:55 -08:00
Kurt
4e1276a954 -8 bytes from each encounter template
saves about ~1MB RAM savings (>=179,142 objects)
2022-03-06 23:25:47 -08:00
Kurt
462ef70ffb SlotNumber/MagnetStatic int->byte
more size reductions
2022-03-06 22:47:03 -08:00
Kurt
8f9de86347 Span-ify BreedInfo, saves 10bytes heap alloc
the Actual result still needs to leave the stack, so that has to be heap allocated.
2022-03-06 13:04:56 -08:00
Kurt
9049ef99fd Minor allocation reduction 2022-03-06 13:03:39 -08:00
Kurt
e1414a0bea Move some interfaces to different folder
No code changes
2022-03-06 12:06:50 -08:00
Kurt
c51d51d381 More specific primitives for Memories/others 2022-03-06 12:01:47 -08:00
Kurt
41d2dd9294 Update EncounterTrade for Shiny metadata
Doesn't need to be stored in most cases
Now permits EncounterTrade1 to be shiny
2022-03-05 21:04:18 -08:00
Kurt
e17483fe46 some linq reduction 2022-03-05 20:03:52 -08:00
Kurt
1b266c1e4b Handle PLA MMO formarg deferral
Can capture formarg evolved stuff directly in wild
2022-03-05 18:54:50 -08:00
Kurt
b20566eb59 Use actual primitive instead of int
Some interfaces aren't needed to be exposed as int
2022-03-05 18:30:35 -08:00
Kurt
d0f2b6eeb5 Add .CurrentLevel=$suggest for min legal level 2022-03-04 22:34:11 -08:00
Kurt
50828fa1bb Change some field types, reduce memory usage 2022-02-28 22:46:59 -08:00
Kurt
85e422c225 Compress PLA wild bin resource
Change the data structure so that different locations are tied to the table, rather than separate usages of the table.

This de-bloats from 344KB->85KB and has less runtime memory consumption.
2022-02-27 15:08:53 -08:00
Kurt
c2f7003f38 Update Encounters8a.cs 2022-02-27 14:13:35 -08:00
Kurt
e5e2a3427f Rename Silver SV->SI
SV will likely be the lump for SCarlet and VIolet
2022-02-27 11:16:12 -08:00
Kurt
ff58d1bb68 BDSP Shaymin encounter uncomment
Now available via oak's letter
2022-02-27 09:00:11 -08:00
Kurt
ccca8abdad Remove fixedball for go7, reset h/w/cp
Now that we have accurate calcs, let's just generate them with the values.
2022-02-25 13:52:50 -08:00
Kurt
cd043bce04 Extract egg met location 2022-02-24 23:14:40 -08:00
Kurt
ab62e76505 Handle alolan vulpix suggestion scenario 2022-02-24 22:47:48 -08:00
Kurt
65130a9ae1 temp fix for some fixed h/w statics 2022-02-22 23:18:10 -08:00
sora10pls
91d1a91142 Add Pokémon Day distribution raids 2022-02-21 19:05:34 -05:00
Kurt
d5be6254f3
Add logic for PLA wild RNG correlation (#3443)
Adds structures to read/write saved spawner data such as seeds, counts.
Adds generator and validator to emulate the FixInitSpec builder used by the game logic

Similar to SW/SH raids, validating these in-process is not feasible due to the number crunching required.

This does not handle the encounter slot call or the follow-up level range call. Just the inner FixInitSpec ctor & fill.

level is calc'd:
randFloat(sum) -> slot float
rand.Next() -> gen_seed (for all the details)
rand.NextInt(delta) +min -> level

Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
2022-02-20 17:59:48 -08:00
Kurt
dc3d8e7cec Minor clean 2022-02-14 21:32:52 -08:00
Kurt
013fe95c8d Update 22.02.14 2022-02-13 01:18:19 -08:00
Kurt
d17639f956 Add alpha move for encounter slots
oops
Closes #3427
2022-02-09 19:21:45 -08:00
Kurt
04856122b7 Simplify landmark alpha move match check 2022-02-09 16:17:44 -08:00
Kurt
988385e450 Add accurate Colo EReader PID generating
Closes #3421
Needed to force the locks, since they themselves are nature/gender locked.
2022-02-09 09:26:10 -08:00
Kurt
80eac48a49 Fix no alpha move bypass for alphas
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=273294
2022-02-08 23:16:00 -08:00
Kurt
556f711728 Remove random EC set for Trade8b
EC is fixed, in the template
2022-02-08 17:37:33 -08:00
Kurt
e12f3004ad Post-check defer if catchrate disallows tradeback
Closes #3412
2022-02-07 18:44:29 -08:00
Kurt
c7ed55ab54 Simplify match rating return value choice
Ensure it is ordered Partial->DeferredErrors->Deferred->Match
2022-02-06 16:14:46 -08:00
Kurt
07b3efd14d Force PID for shiny ponyta 2022-02-05 15:57:34 -08:00
Kurt
3793fd4fd3 Landmark Alphas do not have Alpha Moves
nice omission gamefreak
2022-02-05 10:23:00 -08:00
Kurt
69ee363663 Fix EncounterSlot form set order, copy expgrowth for consistency
Closes #3387
ty @odin880 !
2022-02-05 00:47:17 -08:00
Kurt
10fff124e5 Minor clean 2022-02-04 22:19:04 -08:00
Kurt
94f2d3ba0b Fix Flawless IV count comparison
lol ty atrius
Closes #3383
2022-02-04 19:31:45 -08:00
Kurt
eed5bb04e3
Merge pull request #3382 from kwsch/pla
Update 22.02.04
Individual commits from this PR are not cherry-pickable in a vacuum; these were manually re-committed from a staging repo in order to group together changes for general public viewing. There were over 250 commits on the private development repo for this update.
2022-02-04 18:28:17 -08:00
Kurt
0b32cbf132 Update PKHeX.Core abstractions with latest logic
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
Co-Authored-By: SciresM <8676005+SciresM@users.noreply.github.com>
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
2022-02-04 17:35:15 -08:00
Kurt
4c280c4c6d Add BinLinkerAccessor for better startup perf
Read without splitting the arrays by using span instead.
2022-02-04 17:20:56 -08:00
Kurt
66c00e4f8a Add EC/PID checks for bdsp in-game trades
all data stored in the object is pre-computed from the EC xoroshiro (similar to roamers); all have a fixed seed.
2022-01-17 20:22:17 -08:00
Lusamine
96d2ca1dcc Add Wild8RNG generation method 2022-01-16 01:57:56 -06:00
Kurt
682feab3d4 Return evolution chains with more accurate min-max
Closes #3371 ty @Ninjistix !
2022-01-14 00:11:33 -08:00
Lusamine
5dfd7996f7 Uncomment 3 IV static Rotom and Ditto from SWSH
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/page/10/#comment-272386
Thanks to air6ornepig for reporting.
2022-01-13 13:16:15 -06:00