Commit Graph

10475 Commits

Author SHA1 Message Date
Kurt
b9df2d65c6 Improve performance of adding sprite accents
Can get the native memory span via MemoryMarshal.CreateSpan; this skips allocating a 15KB buffer as well as copying 30KB for each mutation

am paranoid about mutating the original image, so that can stay for now
2025-01-16 21:34:53 -06:00
Kurt
0549cfda4a Rework SCBlock to Memory<byte> 2025-01-16 20:55:07 -06:00
sora10pls
2442165907 Add latest distribution raid/outbreak data 🌴🦩 2025-01-16 19:05:01 -05:00
Kurt
eced651024 Pokewalker: Handle 539 stroll, revise signatures
Was missing the worst case scenario; ran a bruteforce script to find a 539 after adding the final logic. We try to do the least amount of cpu instructions so this is probably the better arrangement anyway.

Revise the method signatures to exclude the scratchspace span reuse (not-obvious behavior). Just stackalloc a new span.

Add seed indication to legality formatting. #4416
2025-01-15 01:26:49 -06:00
Kurt
e9092ca702 Update MetaFilter.cs 2025-01-14 21:50:04 -06:00
Kurt
5230cba9f6 Misc tweak for alpha mark check 2025-01-13 23:47:57 -06:00
Kurt
9f0812cb8b Pokewalker: Don't check slots for stroll seeds
Closes #4416
Majority of the changelog here is additional/revised comments/xmldoc or "unused code". Only `GetFirstSeed`'s behavior has changed on line 154 (new). Since there is no longer the need to refer to Species and Course, remove from the method signatures & usages.

Refer to the discussion in the ^ mentioned issue.

Co-Authored-By: HappyLappy1 <86489014+happylappy1@users.noreply.github.com>
Co-Authored-By: NickPlayeZ <80699972+nickplayez@users.noreply.github.com>
2025-01-13 23:24:18 -06:00
Kurt
ef60ee622d Fix colo espeon pidiv double-check
forgot about the fakeID before IVs
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/page/30/#findComment-293040
ty jacksonf !
2025-01-13 22:25:32 -06:00
Kurt
7d2c564744 Improve comment for lang restricted walker courses
Refer to Comment for context: https://github.com/kwsch/PKHeX/issues/4416#issuecomment-2588858294
2025-01-13 22:04:34 -06:00
Kurt
943223fe09 Handle snowy crossover deferrals better 2025-01-12 22:14:43 -06:00
Lusamine
09fce189d3 Filter uncatchable SV fixed encounters by AI action 2025-01-12 19:49:44 -06:00
Kurt
e99105cd78 Update hgss safari slot permutations
https://github.com/kwsch/PKHeX/issues/4416

for permutation code change, see dumper repo:
cdfafa8a31
2025-01-12 17:23:36 -06:00
Kurt
67156dd0df Misc tweaks
Fix gender filtering for gender-locked tera raids
Fix gender filtering for gen3 pcny
Make StringInstruction a record, expose Comparer in ctor
2025-01-12 11:22:30 -06:00
Kurt
b79551411b Fix batchmod compare for $rand 2025-01-11 23:20:14 -06:00
Kurt
26e06f80fb Revise minior handling
Fixed symbol isn't actually form random (previous commit reverted)
2025-01-11 17:51:04 -06:00
Kurt
9f60ff9eb7 Add settings to bypass hotkey requirement
Legality context menu requires holding control when opening the menu -- with this option enabled, don't need to do the hotkey.
2025-01-11 17:36:03 -06:00
Kurt
c17774f57c Revert "Handle fixed tera Minior from su2"
This reverts commit 20245dd512.
2025-01-11 17:35:53 -06:00
Kurt
20245dd512 Handle fixed tera Minior from su2
Thanks XD_Lele for bringing this up -- form-random handling wasn't added for this encounter type
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/page/30/#findComment-293014
2025-01-10 22:08:39 -06:00
Kurt
20887a1b2d Gen4: allow battle use items to be held (oops)
Closes #4415
2025-01-10 12:27:37 -06:00
sora10pls
c44f6d286c Add latest distribution outbreak data 🐍 2025-01-09 19:55:13 -05:00
Professor Dirty
866f0269af
Append CHS translation (#4413) 2025-01-08 16:51:54 -06:00
Kurt
172ba0d119 Update ITrainerInfo.cs
Closes #4414
2025-01-08 16:48:44 -06:00
Kurt
46c808d118 Enhance fail-retry PID generation for raids
try with criteria -> try with critera-w/o-IVs, try without any criteria
2025-01-08 01:02:00 -06:00
Kurt
93c7b765c3 Minor tweaks
Handle ARNG egg manaphy for gen4 trainer, force hatch
add xmldoc/comments
expand expressions for version/language selection, disallow languages correctly
2025-01-08 00:36:02 -06:00
Kurt
c60efc7d14 Revise Manaphy PIDIV checks for antishiny+egg
Handles all permutations correctly
set correct version value for blank DP save (not valid saved ver, need to fall back to D)
2025-01-07 23:45:56 -06:00
Kurt
e1773e83b9 Allow B2W2 Funfest Stunky/Glameow from both games
https: //github.com/kwsch/PKHeX.EncounterSlotDumper/pull/2
Co-Authored-By: Parnassius <11491745+parnassius@users.noreply.github.com>
2025-01-06 21:36:15 -06:00
Kurt
ab215d0721
Enhance EncounterCriteria and template->pkm adherance (#4411)
Change the EncounterCriteria object to a readonly record struct, and introduce extra properties to indicate how flexible we are with random results.
2025-01-04 22:45:30 -06:00
Kurt
37e4b06a9e Misc tweaks
Make nick/trainer'd encounters use RoM instead of string[] to truly make them readonly records, and skip 1 dereference on access
add some xmldoc
fix open file suggesting main from another folder
2025-01-04 21:43:55 -06:00
Kurt
c1f0c9e7ae Update dependencies
for .NET 9.0 there's a few
2025-01-04 01:25:14 -06:00
Kurt
b94ab9acb4 Minor clean
No functional change
2025-01-04 01:24:29 -06:00
Kurt
520c849287 Fix Gen1 party+clear
Closes #4410

Also fix trash bytes persistence (only overwrite nickname with default if it visually differs from what is present in the textbox).
Add trash edits to Gen3 HoF
2025-01-03 21:33:22 -06:00
Kurt
674a778bf9 Fix form centering to non-primary screen
The first screen is configured with origin coordinates 0,0; any other screens that are arranged to the left or below will have coordinates in the negative. Negative coordinates are valid; don't sanitize.
2025-01-03 13:35:54 -06:00
Kurt
a1a15fe5b2 Fix opening Gen3 HoF editor
Closes #4409
(icon reference needed to point to the static resource)

Add SAV3 property to check for misconfigured (small) sizes, to disallow editing extdata blocks that don't exist (no exception thrown for the small saves, can't open the GUI)
Rearrange GUI, handle exception when copypasting bad PID and saving, add sprite, add Clear button instead of auto-clearing on species:0, add shiny checkbox (readonly)
2025-01-03 13:32:24 -06:00
Kurt
fdcd71a3b6 Minor clean
Enhance the API for SV's item pouch/items, if anyone bothers to use it
2025-01-02 20:59:37 -06:00
Kurt
d7ecbfe667 Move PLA verifier into MiscVerifier
Only checks PLA stats in PA8 format; no need to type check this in the main method. Might be a good idea to extract format-specific verifiers into classes.

Extract size checks to top level method. A wasted type check isn't too bad compared to all the duplicate logic.
2025-01-02 20:33:15 -06:00
Kurt
9ef46b5f8c Correctly filter dummied moves in BDSP and SV
Less noise in the user drop-downs for moves that aren't available in the game. Unlike SW/SH that has all moves from the past, there's no need to confuse the user with impossible options (unless they turn on HaX, which is unchanged).

Add performant path for dummied move list fetch for Gen8a+
Skip duplicate work for Relearn list fetch (always same as Moves, except for Gen7 relearn)
2025-01-02 20:29:58 -06:00
Kurt
abc1e785d8 Remove fullness/enjoyment from PKM, use interface
No need to carry this baggage further since SV ditched it. PLA and BDSP only have it because there's a gap in the structure that *we assume* is unused (rather than reserved), and is worth checking for legality (unused bytes shouldn't be used).
2025-01-02 20:19:29 -06:00
Kurt
30fdfb29e7 Add context to TrashByte editor
rather than just Generation, context is also important to help select glyphs for different games (Gen7b differing from Gen7?)
2025-01-02 20:17:17 -06:00
Kurt
cb967ef283 Minor adjustments
Inline some gameversion calls, replace `is IAlpha` with immutable interface instead
Add interface to get the mastery object for a given a learnset source & species-form (rather than calling it statically)
Shorten the BallUseLegality expression
Defer ec%100 context to PKX (easy to miss in a future update if any others added down the road)
Rewrite Alpha mark check logic to require entry in to HOME (tracker present) as that's the method of obtaining the mark
Make SaveUtil not allocate, and let the compiler optimize size checks.
2025-01-02 20:15:53 -06:00
Kurt
a6beb0293c Don't bother passing evos for hypertrain check
if it exists in PLA, then it can exist in SWSH/BDSP/SV (as of latest DLC!). Only need to check if it has visited (tracker present).
2025-01-02 20:04:04 -06:00
Kurt
8ec1c8cc81 Extract some magic numbers
If Legends: ZA adds more megas (likely), would have to refactor this monster. Rename the mega check, as SV doesn't have megas, but if ZA is Gen9(a?) we need to segregate somehow.
2025-01-02 19:57:38 -06:00
Kurt
92d49e858f Extract SV Runtime Language get/set
Useful for get to check if things are misaligned in a save file. If future games continue doing this, then we can reuse the enum.
2025-01-02 19:54:46 -06:00
Kurt
a41f32c66b Hide PKX.Personal behind methods
No need to have the entire master personal table visible within the assembly when it is only used for gender fetching. Add 2 methods that return the info that the previous consumers were wanting from the previous logic.
2025-01-02 19:53:29 -06:00
Kurt
88c7256841 Extract common technical record applications
Get a neat API for it to provide an "option" of what all you want set.
Ends up deduplicating some logic in batch editor as well.
2025-01-02 19:51:03 -06:00
Kurt
f77899ab73 Extract entity extension list fetch
No need to have a static member in PKM for something that is only used outside of PKM.cs (save files, GUI, aka file naming)
2025-01-02 19:48:56 -06:00
Kurt
243c4102dc Reduce some allocations in SpeciesName
implement the net9 shortcut for species name lookup from span
don't fetch japanese/spanish names twice or build dictionaries for them
2024-12-31 13:15:02 -06:00
Kurt
e2086d2a0d Misc tweaks
Allow pkm batch editor to take readonlyspan property names
concrete types over `default` for clarity
encounterverifier: use const values for egg levels for clarity
batchediting: fetch all properties only once
etrade4: reduce object size/init by having Contest as a property
2024-12-31 12:53:51 -06:00
Professor Dirty
e4f63848ad
Add new translations to CHS and remove obsolete paragraphs (#4406) 2024-12-24 10:58:40 -08:00
Kurt
83df635e04 Add more DPPt underground stats, update names
Closes #4405
2024-12-23 19:31:01 -08:00
sora10pls
e6a8df366d Add latest distribution raid/outbreak data 🐉 2024-12-19 19:03:51 -05:00