Kurt
ebefa0a918
Update ShowdownSet.cs
2021-05-15 10:20:19 -07:00
Kurt
2b25cd1e18
add notes for oras endscroll data
...
https://projectpokemon.org/home/forums/topic/49356-battle-chateau-help-well-not-really/?do=findComment&comment=266428
2021-05-15 01:46:33 -07:00
Kurt
e31980d15e
Clean up nickname parsing, make Gender an int type
...
Breaking change for anyone using IBattleTemplate (alm)
2021-05-14 23:41:14 -07:00
Kurt
acdbda4e12
Split DateUtil from Util class
2021-05-14 16:46:48 -07:00
Kurt
3ac1882151
Move BinaryCodedDecimal conversions to separate class
...
Add unit tests, clarify names
2021-05-14 16:32:26 -07:00
Kurt
50b15cd740
Use range/index
...
More in line with modernizing the codebase with latest c# syntax
improve web-qr decode speed slightly (no linq skiptake)
get money/coin mask without a temporary string (lol performance)
2021-05-14 15:30:55 -07:00
Kurt
871f9b0627
Convert checksum operations to span-based
...
Fix SAV.Data references in SAV_Misc4 to use the General block instead
2021-05-14 12:30:40 -07:00
Kurt
014835ed14
Add BigEndian span conversions
2021-05-14 12:23:12 -07:00
Kurt
b9d9766674
Fix typos, update block list notes
2021-05-14 12:16:08 -07:00
Kurt
07584a8774
Add chateau score, seaside cycle score
...
Update some other areas too
looks like this fixes the sube pkx fetch method for extraslots, yay.
2021-05-13 23:12:53 -07:00
Kurt
1fe77c004c
Cache transfer location arrays if created once
2021-05-11 23:32:29 -07:00
Kurt
b97b54e5e4
Skip first indexes if requested
...
Fixes partition2 calls
2021-05-11 23:25:36 -07:00
Kurt
013aac602f
Don't clone string resources on fetch
...
Hardcode egg names, don't rely on string resource loading order for SpeciesNames to get an un-mutated copy.
fixes the infrequent race condition for legality unit tests
2021-05-10 18:41:01 -07:00
Kurt
3597eb14ad
Improve gen1-4 species name fetch
...
reduce nesting (separated methods)
handle gen2 french egg name (all caps)
use stringbuilder to replace chars
2021-05-10 16:09:28 -07:00
Kurt
ef4857fa9f
Improve perf of byte->hexstring parse
...
just use a stringbuilder
2021-05-10 16:07:25 -07:00
Kurt
d340642b09
Minor perf improvements
2021-05-10 01:01:45 -07:00
Kurt
8e9953dc0f
Keep festaID separate from nex ID bytes
2021-05-09 23:38:14 -07:00
Kurt
01f75f8441
Add test for hex string (arbitrary length) convert
2021-05-09 23:33:54 -07:00
Kurt
1cad57e35d
Build results in place, no linq
...
O(n) for speed & memory usage, as good as we can get.
Modified method is now less dumb. Array Copy doesn't have to worry about same-array overlapping src/dest regions
2021-05-09 22:48:24 -07:00
Kurt
2a7027ed84
Move files to more accurate subfolders
...
Gen1-3 are disjointed from the gen4+ item name listings, hence the separate folder. Plus, not all languages have localization files created.
2021-05-09 16:25:19 -07:00
Kurt
96d941db69
Preformat csv files, remove header
...
Shaves off a few kb
2021-05-09 15:47:21 -07:00
Kurt
f25ad054ef
Selectively TrimEnd without extra robust logic
...
TrimEnd has some loops and stuff which isn't necessary for single-char, single-time trims
2021-05-09 13:21:59 -07:00
Kurt
43af6322e8
Clean up csproj's
...
no functional change
yay wildcards
2021-05-09 12:57:26 -07:00
Kurt
96ea7f0b39
Fix toxtricity neutral StatNature generating
2021-05-08 08:29:20 -07:00
Kurt
a7f3ce5766
Leak mismatched forms thru the possible check
...
The EncDB doesn't specify form; the encounter methods verify Form.
This is actually a fix; pkm that can change forms aren't really encounter trades, but we shouldn't be strict matching here.
2021-05-08 08:13:27 -07:00
Kurt
ceede68861
Minor tweaks
2021-05-07 22:11:10 -07:00
Kurt
31142ee297
Replace some linq usage with direct logic
2021-05-06 23:26:38 -07:00
Kurt
fa5bc0d634
Set friendship after form set
...
Resolves GO galarian stunfisk, ty matt
2021-05-05 08:43:32 -07:00
Kurt
f063014879
Improve clarity of plugin load failures
2021-05-02 18:27:04 -07:00
sora10pls
6ed6e60840
Add PogoType + Requirements for Strange Egg encounters
...
Rationale behind this is explained in the accompanied commit in PGET: 7c2575d8a8
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
2021-04-30 21:13:28 -04:00
sora10pls
e330eb5cfc
Add current Meowth Distribution Raids
2021-04-29 20:08:16 -04:00
Kurt
2bfcdaf148
Update LegalityAnalysis.cs
2021-04-28 18:22:39 -07:00
CanoeHope
c1cce9a892
Correct Colosseum/XD Item Quantities ( #3203 )
...
* Update SAV3Colosseum.cs
* Update SAV3XD.cs
2021-04-28 16:55:37 -07:00
CanoeHope
747d6ed6c7
Fix Colosseum/XD Max Money ( #3202 )
...
* Update SAV3Colosseum.cs
* Update SAV3XD.cs
2021-04-28 11:58:26 -07:00
Kurt
91557d0180
Don't defer on hidden ability change
2021-04-25 00:11:15 -07:00
Lusamine
e5867ce512
Add NormalEncountRigel2 block and Pokedex Rec block
2021-04-23 17:41:54 -05:00
Lusamine
eceb498da3
Fix Gen 2 roamer locations
2021-04-23 15:52:54 -05:00
sora10pls
00e88b2abd
Add World Penguin Day distribution Raids
2021-04-23 11:39:20 -04:00
Kurt
e36fdd3cb6
Update EncounterStatic8ND.cs
2021-04-22 22:32:17 -07:00
Kurt
efb3d9aeac
Add inaccessible den-rank checks
...
Rotom Bike water upgrade isn't available until you have sufficient progress, so you can't get these dens with the lowest rank.
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
2021-04-22 21:47:25 -07:00
Kurt
f66662b8db
More deferral tweaks for non-HA having HA
2021-04-22 13:47:33 -07:00
Kurt
8483dc241d
Update MarkVerifier.cs
2021-04-21 19:12:50 -07:00
Kurt
7256ff0a7f
Check if the Shedinja's encounter can have marks
...
Not all gen8 encounters can have marks (nest, go), so use the regular method.
2021-04-21 18:52:24 -07:00
Kurt
b89c4fb17f
Database load on invalid party counts
2021-04-21 18:33:57 -07:00
Kurt
2aed4c3118
Add shedinja dropped ribbons/marking considerations
...
Nice bug ya got there, gamefreak.
Coulda cleared the AffixedRibbon value instead of copying it on Shedinja creation, and it would have made this unnecessary.
Please ditch the Affixed Ribbon gimmick for future games, thanks!
2021-04-21 15:20:16 -07:00
Kurt
25565e6f07
More pattern matching expressions
...
Shapes are fancy; nested pattern checks
2021-04-20 02:17:28 -07:00
Kurt
9dfa1077ee
Rename internal PKMInfo class to match batch names
2021-04-20 01:50:47 -07:00
Kurt
d9c22b1d74
Move pk1/2 EV maxing to class
2021-04-20 01:50:27 -07:00
Kurt
b64edb751d
More xmldoc
2021-04-20 01:50:04 -07:00
Kurt
2f078e6565
Minor tweaks
...
Make HP IV set use single array fetch, less memory required
add some xmldoc
2021-04-20 01:02:32 -07:00
Kurt
45f12bd924
Update FormVerifier.cs
2021-04-18 21:22:58 -07:00
Kurt
f61108ac4e
Check gen1/2 female OTs a little more thoroughly
...
https://github.com/kwsch/PKHeX/issues/2687#issuecomment-822072999
celebi is a es2e, so just filter on specified TID
Co-Authored-By: FeralFalcon <33670476+FeralFalcon@users.noreply.github.com>
2021-04-18 19:31:22 -07:00
Kurt
c67e01849a
Extract 3ds chinese glyph remapping, only do on 3DS games
...
Optimize some functions within gen7zh for perf (no linq, no allocation)
2021-04-18 18:29:02 -07:00
Kurt
0e4848ad82
minor clean
2021-04-18 18:18:09 -07:00
Kurt
c6d6a52e0b
'->’ stragglers
2021-04-18 14:04:26 -07:00
Lusamine
f2c2a77cfe
Check nest distribution encounters by patch epoch ( #3195 )
...
Distribution raid encounters from before each of the DLC patches can only be captured in existing Wild Area locations.
Store the BCAT index in the encounter details and use it to compare when the BCAT was available.
2021-04-18 11:01:42 -07:00
Kurt
fd8da81b4a
Remove unnecessary setter
2021-04-18 11:00:40 -07:00
Kurt
0719320e33
Eggs: explicitly pass generation instead of calculating
2021-04-17 20:09:02 -07:00
Kurt
9171d7f87e
move property to class that uses it
2021-04-17 20:08:20 -07:00
Kurt
f35a3ce03c
Add overload for Totem check, simplify some flow
2021-04-17 13:24:57 -07:00
Kurt
5635e8f345
Unroll some loops, reduce allocations a little for hacked eggs
2021-04-17 13:13:03 -07:00
Kurt
893f22a664
Extract generation traversal list fetch to static class
2021-04-17 13:09:09 -07:00
Kurt
8e52d2fddb
Xmldoc updates
2021-04-17 13:07:28 -07:00
Kurt
8b180c3122
Fix egg move source indications (were defaulting to gen2)
...
Switch expression had an issue with interpreting the object's type (unboxing, yay)
should probably just return a typed object from the parse, but nah, this is a quick fix.
2021-04-16 17:57:48 -07:00
Kurt
16406d7bba
Allow Strongest Trainer memory on gen6-visitors banned from Maison
...
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=265898
End result is only gen7-origin-in-gen7 are disallowed.
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
2021-04-16 08:53:50 -07:00
Kurt
aaae94b739
Fix Gen2 roamer location check
...
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=265885
Location=>pkm.Met_Location
Change the array search for a bitwise and check, for muh efficiency
2021-04-14 13:29:23 -07:00
Kurt
c56ba76601
Expand jp table too
...
6754645a5f
2021-04-12 19:14:23 -07:00
Kurt
6754645a5f
Minor optimization
...
Similar to the index hack done for array shuffling modulo 24 & 1f.
2021-04-12 17:08:57 -07:00
Kurt
758b6e6770
Remove '<->’ aliasing
...
Farfetch’d uses the non-vertical apostrophe, still.
Showdown is consistent with their usage (in/outputting ’), but we'll keep the '->’ for that sanitization just in case other services/users enter the wrong char.
Closes #3185
2021-04-12 17:04:02 -07:00
Kurt
b289c12918
Update Locations.cs
2021-04-12 15:43:21 -07:00
Kurt
7bc733c900
Update SK2 language coercion
...
Closes #3194
Exports are fine, imports with an ambiguous language (can be either JPN or INT) while illegal don't result in the above branches passing it.
Inputs with <=6 chars for OT&Nick will be ambiguous; PKM editor.
2021-04-11 20:50:34 -07:00
Kurt
0d45075d4b
Rewrite settings handling; enhance some user experiences ( #3193 )
...
- Settings now stored as json next to exe
- Settings now exposes all legality checking setttings that can be changed
- Slot hovering now can play cries in MGDB/PKMDB/etc, not just the main boxes.
- Enhanced hover text for mystery gifts and encounters that have movesets
- Show recently loaded save files in ctrl-f browser
- Toggle auto-load savefile setting to be none/detect-latest/last-loaded
- Custom extensions & extra backup paths can now be configured directly in the json settings
- Settings editor now uses propertygrid & tabs.
2021-04-11 18:09:54 -07:00
Kurt
aaa69eac15
Rename Gen3 Champ ribbon to be more accurate
...
been like this since mid 2016
this ribbon can be obtained in either Hoenn or Kanto within Gen3
https://bulbapedia.bulbagarden.net/wiki/List_of_Ribbons_in_the_games#League_Ribbons
2021-04-10 12:09:43 -07:00
Kurt
cfcefca14f
Add splitbreed relearn suggest recursion
2021-04-10 11:03:21 -07:00
Kurt
c7b997865c
Minor clean
2021-04-09 14:52:49 -07:00
Kurt
fb972b9782
Update MoveSetApplicator.cs
...
Closes #3191 , uses a better method
2021-04-09 11:22:10 -07:00
Kurt
a450b56878
Add Gen2 rock smash encounters
...
oops
2021-04-08 20:45:14 -07:00
Kurt
e9c9627ad5
Relearn suggestions + Headbutt Slot Fix ( #3190 )
...
This change revises the logic for an Egg Move's RelearnMoves.
Removes a class that is no longer used
Passes the large value-passing struct byref via in keyword
Revises handling so that early-returned results from the MoveBreed processing are marked with their move source rather than leaving them unvisited.
The moveset processor uses depth search recursion, and returns false if the move that it is processing is not possible for the hatched moveset. If the depth search never reaches the check for base moves, all moves won't be marked for their origins, resulting in the result array not being accurate to use for suggestion purposes.
Yay multi-purpose logic (validation w/early returns & fixing needing fully processed data).
2021-04-08 15:58:09 -07:00
Kurt
3e052987e2
Clean up emerald event info files
...
Closes #3188
Remove tabs from zh
Removes duplicate flag from es
Co-Authored-By: hard <62216646+kamisama6866@users.noreply.github.com>
2021-04-07 22:13:09 -07:00
Kurt
b0700ba281
Extract Gen7 HoF class, extend event flag count
...
4k flags exactly, and probably 4950 for USUM (alignment +1 byte for an even 4960)
The old flag + count (4 bytes total) are just +32 event flags.
2021-04-07 00:20:02 -07:00
Kermalis
0c982a725a
Fix FRLG flags ( #3186 )
2021-04-06 19:17:57 -07:00
Kurt
2f4b754505
Fix incorrect event flag reference
...
Thanks SneakyPeekyFox!
Also fix crash if pressing escape on the save differentiation popup.
2021-04-06 17:26:13 -07:00
Kurt
c05fc854b1
Update 21.04.06
...
Mostly because of Gen3 save editing bugfixes, forcing a new version.
Last version added the PID checks for Gen8; this one adds move ordering checks for eggs. More fun :)
2021-04-05 22:57:05 -07:00
Kurt
223b56d779
Fix gen3 save incorrect destination writes
2021-04-05 22:28:04 -07:00
Kurt
673c0d93a6
Extract event flag/work editing from GUI
...
now <200 lines for editing (ignoring the diff functions), yay
Opening the editor allocates less (no copying save file)
2021-04-05 20:52:49 -07:00
Kurt
d0258fa2f7
Add gs/c resources
2021-04-04 22:14:17 -07:00
Kurt
4579a66a38
Fix deferral for wild slots
...
Base method checks wurmple (not available in swsh), removed.
Hidden ability check returns Partial for any species that cannot be patched, and Deferred for any patched; we don't care, because there aren't any wild species that can't be patched in swsh.
2021-04-04 21:54:24 -07:00
Kurt
63639a1ec8
Add latest distribution raid templates
2021-04-04 20:38:26 -07:00
Kurt
0ad06c6359
Disallow Thousand Arrows/Waves for Format6 Smeargle
...
moves unavailable in that format, same as light of ruin
Closes #3182 ty @DaWoblefet
2021-04-04 19:39:31 -07:00
Kurt
0626b0c29b
Add Breeding move ordering logic, and use in legality analysis ( #3183 )
...
* Initial bred moveset validation logic
Unpeel the inheritance via recursion and permitted moves
* Volt tackle considerations
* Optimize out empty slot skips
* Add tests, fix off-by-one's
* Require all base moves if empty slot in moveset
* Add test to prove failure per Anubis' provided test
* Tweak enum labels for easier debugging
When two enums share the same underlying value, the ToString/name of the value may be either of the two (or the last defined one, in my debugging). Just give it a separate magic value.
* Fix recursion oopsie
Also check for scenario where no-base-moves but not enough moves to push base moves out
* Add Crystal tutor checks
* Add specialized gen2 verification method
Game loops through father's moves and pushes in one iteration, rather than checking by type.
* Add another case with returning base move
* Add push-out requirement for re-added base moves
* Minor tweaks
Condense tests, fix another off-by-one noticed when creating tests
* Disallow inherited parent levelup moves
Disallow volt tackle on Gen2/R/S
* Split MoveBreed into generation specific classes
Gen2 behaves slightly different from Gen3/4, which behaves slightly different from Gen5... and Gen6 behaves differently too.
Add some xmldoc as the api is starting to solidify
* Add method overload that returns the parse
Verify that the parse order is as expected
* Add reordering suggestion logic
Try sorting first, then go nuclear with rebuilding.
* Return base moves if complete fail
* Set base moves when generating eggs, only.
* Use breed logic to check for egg ordering legality
Don't bother helping for split-breed species
2021-04-04 18:30:01 -07:00
Kurt
8c4ca3134a
Fix Gen3 coin get/set
2021-04-04 11:53:55 -07:00
Kurt
ba5bf463e0
Convert static dictionary to switch
...
probably ends up as a jumptable via jit, so better perf?
2021-04-02 16:47:37 -07:00
Kurt
1348f5deec
Allocate smaller buffers for gen3 sav objects
...
n*0xF80 instead of n*0x1000
2021-04-02 14:57:30 -07:00
Lusamine
d3059218c9
Remove gen 8 static encounters from DB if no location ( #3181 )
2021-04-01 15:09:26 -07:00
Kurt
cdc9710869
Fix gen3 record get/set
...
FR and LG are separate version IDs now
2021-04-01 14:15:11 -07:00
Kurt
a92f92e1c5
Fix gen3 TMHM pouch
2021-04-01 14:14:47 -07:00
Kurt
9881beea1e
Update EncounterStaticGenerator.cs
2021-04-01 13:51:00 -07:00
Kurt
1e38f55007
Fix changes not being saved completely
2021-04-01 13:43:06 -07:00
Kurt
4700fdd1e3
Set updated version when resetting personal
...
Closes #3180
Improves handling for corrupt gen3 saves (pokedex cheaters)
2021-04-01 13:37:39 -07:00
Kurt
4cf926f703
Update 21.04.01
...
Latest cumulative update release with mgdb/pget binaries updated.
There aren't any April Fools jokes in this release.
2021-03-31 21:52:15 -07:00
Kurt
69c737b71a
Show Mystery Gift information in hover summary
2021-03-30 20:27:58 -07:00
Kurt
75fb704658
Use already allocated result array
...
All operations overwrite all 4 entries of the result array, so no need to forcibly reallocate the array.
2021-03-30 20:27:40 -07:00
Kurt
5c9ce494cf
Minor perf improvements
...
Defer some value assignments
Pass already known values directly
Pass static references to reduce allocating small duplicate objects
2021-03-30 18:51:53 -07:00
Kurt
645f2b4db5
Revert implicit casting
...
Looks like netstandard2.0 wasn't meant to receive that new c#9 goodie
2021-03-29 00:14:44 -07:00
Kurt
f59d012cda
Add gen3 battle video class
...
Just supports importing dumps (via code), and the GUI supports loading the party data to boxes like the other supported battle video formats.
2021-03-27 23:22:56 -07:00
Kurt
4daf225379
Add location for colo ereader shadows
2021-03-27 20:32:52 -07:00
Kurt
53d3dba74e
Reorder array for ordered search
2021-03-27 20:32:25 -07:00
Kurt
0190098e47
Gen3: Add methods to get/set external event data
2021-03-27 18:58:51 -07:00
Kurt
4bb95e0bd3
Spring raids
2021-03-25 18:28:17 -07:00
Kurt
0c1d13bf4d
Minor tweaks
...
Lift some temporary arrays for more reuse
reuse some temp references
less allocation overall
2021-03-23 23:10:30 -07:00
Kurt
7c926dc09e
More xmldoc
2021-03-23 21:20:02 -07:00
Kurt
3822981590
Rework EncounterCriteria to be ability indexed rather than direct ability ( #3179 )
...
* Exploration: rework ability criteria to ability numbers desired
* Sync remaining changes
* Update EncounterCriteria.cs
* Add xmldoc
* Improve speed of IsDualGender check
* More xmldoc updates
Should be doing this on main but meh, this branch is gonna get merged later
* Fix typo
* Update WC7.cs
* Update PersonalInfo.cs
2021-03-23 17:05:15 -07:00
Kurt
f86291cc1c
Split gen3 encounter listing to have CXD separate
2021-03-21 19:52:48 -07:00
Kurt
5ce3d64996
Disallow lang=2 for dp trades
...
DP English origin are Japanese language; since we 1=>2, we still needed to disallow 2.
2021-03-21 10:34:00 -07:00
Kurt
012f6678ba
Check for dual ability =>evo w/single ability capsule
2021-03-20 17:49:16 -07:00
Kurt
56f24bbe5a
Fix deferral compare
...
neq -> defer
not like it matters for these
2021-03-20 17:47:31 -07:00
Kurt
e547a9cf63
Extract report generation from LegalityAnalysis object functions
...
Can replace the default functionality with your own formatter, I guess.
2021-03-20 13:21:04 -07:00
Kurt
7badb56535
Move strings file to formatting subfolder
2021-03-20 12:47:59 -07:00
Kurt
8d3f990667
Make some properties into consts
2021-03-20 12:47:21 -07:00
Kurt
a71d7d1950
Handle gen3 mismatched ability
...
ty Breil --
https://projectpokemon.org/home/forums/topic/58665-makuhita-in-game-trade-bug-sapphire/
2021-03-20 11:22:56 -07:00
Kurt
8020a44961
Minor simplification
...
All slots are now initialized via constructor, property can now be init!
Optimize some value fetching for gen7b, as the input data has features that can be abused
2021-03-17 22:40:37 -07:00
Kurt
71d355804a
Move enc7b sky encounter fudging to reformatter project
...
50c53d6b33
2021-03-17 21:59:00 -07:00
Kurt
1acefbcf93
Remove sigilyph from g5 breed HA banlist
...
https://projectpokemon.org/home/forums/topic/58657-sigilyph/?do=findComment&comment=265330
2021-03-17 20:20:54 -07:00
Kurt
b4f763f7ef
Move bridge-stony copy logic to pkNX
...
Also trims out empty slots (species=0), less size!
49efb96db9
2021-03-17 18:11:07 -07:00
Kurt
535f464b61
Update EncounterSlot7.cs
...
Closes #3176
2021-03-16 23:49:04 -07:00
Kurt
27cdcb8b0c
Simplify SAV3 loading
...
Remove hardcoded chunk lengths array
Remove cached chunk index array
Handle new-game files correctly (all blocks present check).
Consistently call things sector instead of chunk or block.
Somehow there was a bug with my FRLG save file's box data, which now loads completely?? Neat
2021-03-16 23:32:16 -07:00
Kurt
3b344bd5c3
Add batrev as a blank sav option via code
2021-03-16 18:49:27 -07:00
Kurt
98a80b4bf1
Fix party offset swap
2021-03-16 18:48:33 -07:00
Kurt
33e2c64721
Split SAV3 into version classes
...
Begone are the version-switch cases for value fetching.
2021-03-15 23:51:58 -07:00
Kurt
6bce4eea14
Minor clean
...
Annotations (nullable), some switch cases for readability
2021-03-14 16:16:55 -07:00
Kurt
ac116e0d0b
Add more xmldoc / enum clean
2021-03-14 11:28:46 -07:00
Kurt
649958ee68
Move EReader berry names from tables to settings class
2021-03-14 10:16:09 -07:00
Kurt
b7bb5a0672
Remove unused 0 pp entries at end
...
Array is length checked already
2021-03-14 10:15:45 -07:00
Kurt
7b163147ef
Add case for special headbutt slots
...
Closes #3174
Add more xmldoc for SlotType
Import revised slot-type table, as we've removed "Special" from the regular trees.
ef4b1b2894
2021-03-11 20:52:00 -08:00
Kurt
5cc3322b83
Split RNG class into simple & enhanced
...
ARNG object doesn't need the reversal caches, saves 256KB of memory allocation
Move RNG algorithms & support logic into a subfolder
2021-03-10 22:30:30 -08:00
Kurt
b36aa0ac99
Remove altering cave event tables
...
https://projectpokemon.org/home/forums/topic/58627-altering-cave-alternative-spawn-legality/
2021-03-10 10:10:54 -08:00
Kurt
155e0283ce
Inline some string logic, extract magic values, xmldoc
2021-03-09 21:31:53 -08:00
Kurt
4c45aa99af
Add missing uint cast
2021-03-08 15:33:52 -08:00
Kurt
e32bfcde2e
Minor simplifications
...
Extract RSBOX checksum logic to checksum class
Allocate half as much for gen3 save detect
Simplify some expressions for GC save loading (x - size + offset, when x==size)
2021-03-08 11:39:15 -08:00
Kurt
49541e6073
Rework mainline sav3 to not operate off chunks
...
Previous style was to resize the sav buffer and concat all the storage chunks at the end. Allocated a double save file.
Now, just allocate 3 buffers.
2021-03-07 23:22:07 -08:00
CanoeHope
cb7ee8a64e
Update Gen 6 Event Flags ( #3171 )
...
* Update flags_xy_en.txt
* Update flags_xy_es.txt
* Update flags_xy_ja.txt
* Update flags_xy_ko.txt
* Update flags_xy_zh.txt
* Update flags_oras_en.txt
* Update flags_oras_en.txt
* Update flags_oras_es.txt
* Update flags_oras_fr.txt
* Update flags_oras_ja.txt
* Update flags_oras_ko.txt
* Update flags_oras_zh.txt
* Update flags_oras_en.txt
2021-03-07 18:48:30 -08:00
Kurt
9e4f1d11cc
Show misc encounter details on hover
2021-03-07 12:35:26 -08:00
CanoeHope
b71de0e1d9
Add more Event Flags/Constants ( #3168 )
...
* Update const_c_en.txt
* Update flags_c_en.txt
* Update flags_c_es.txt
* Update flags_c_ja.txt
* Update flags_c_zh.txt
* Update flags_gs_en.txt
* Update flags_gs_es.txt
* Update flags_gs_ja.txt
* Update flags_gs_ko.txt
* Update flags_gs_zh.txt
* Update flags_rs_en.txt
* Update flags_rs_es.txt
* Update flags_rs_zh.txt
* Update flags_e_en.txt
* Update flags_rs_es.txt
* Update flags_rs_zh.txt
* Update flags_e_es.txt
* Update flags_e_zh.txt
* Update flags_e_zh.txt
* Update flags_frlg_en.txt
* Update flags_frlg_es.txt
* Update flags_frlg_zh.txt
* Update flags_dp_en.txt
* Update flags_dp_es.txt
* Update flags_dp_ja.txt
* Update flags_dp_ko.txt
* Update flags_dp_zh.txt
* Update flags_pt_en.txt
* Update flags_pt_es.txt
* Update flags_pt_ja.txt
* Update flags_pt_ko.txt
* Update flags_pt_zh.txt
* Update const_pt_en.txt
* Update const_pt_es.txt
* Update const_pt_ko.txt
* Update const_pt_zh.txt
* Update flags_e_zh.txt
* Update flags_e_en.txt
* Update flags_e_es.txt
* Update flags_e_zh.txt
2021-03-05 18:02:44 -08:00
Kurt
2e10e0757a
Check gen5 egg met location rather than gen6
...
Override the base impl in encstatic, swap const refs
2021-03-03 18:35:26 -08:00
sora10pls
9ee27aaf8f
Update EncounterArea7g/8g
...
Now properly grabs forms for Unown, Arceus, Vivillon, and Silvally.
2021-03-03 17:45:18 -05:00
Easy World
77aefbf20d
Update flags_gs_zh.txt ( #3167 )
2021-03-03 06:59:31 -08:00
Easy World
3c4efd0e29
Update flags_c_zh.txt ( #3166 )
2021-03-03 06:59:12 -08:00
CanoeHope
ef70ad0217
Add Gen 2 Event Constants and Legendary Beasts Flag ( #3163 )
...
* Add GSC Event Constants
* Update flags_c_en.txt
* Update flags_c_es.txt
* Update flags_c_ja.txt
* Update flags_c_zh.txt
* Update flags_gs_en.txt
* Update flags_gs_es.txt
* Update flags_gs_ja.txt
* Update flags_gs_ko.txt
* Update flags_gs_zh.txt
* Update const_c_en.txt
* Update const_gs_en.txt
2021-03-02 22:54:43 -08:00
Kurt
2826049e32
Add boxes unlocked & secret box toggle
...
ty @sora10pls
use box layout editor to change values (0-32 and toggle the flag)
2021-03-02 21:28:53 -08:00
sora10pls
08ecac8cb3
Update upcoming Dynamax Crystal encounters
2021-03-02 11:21:56 -05:00
Kurt
eba704a46b
Add March raid data
...
Wonder if they'll fix the gmax Hattrem ;)
2021-02-28 17:19:17 -08:00
Kurt
c27697c919
Flag contest stats if sheen is present on gen5+ origin
2021-02-27 20:02:18 -08:00
CanoeHope
f9bbf30d50
Update RSE Sealed Chamber Flags ( #3161 )
...
* Update flags_rs_en.txt
* Update flags_rs_es.txt
* Update flags_rs_zh.txt
* Update flags_e_en.txt
* Update flags_e_es.txt
* Update flags_e_zh.txt
2021-02-27 12:39:45 -08:00
Kurt
7afd2ec351
Add Pika 2/25 raids
2021-02-25 16:27:05 -08:00
Kurt
0ba029226c
Add more xmldoc
2021-02-24 18:08:03 -08:00
sora10pls
94597b84e0
Increment Total Battle/Poké Ball usage records on set
...
Closes #3158
2021-02-24 11:12:59 -05:00
Egzon
815da3ff0c
Update spanish translation ( #3160 )
...
* Update LegalityCheckStrings_es.txt
* Update lang_es.txt
2021-02-23 06:27:27 -08:00
Easy World
dcd5f1fce1
update zh translation ( #3159 )
2021-02-22 20:46:02 -08:00
Easy World
4dcd00026b
Update LegalityCheckStrings_zh.txt ( #3156 )
2021-02-21 19:29:12 -08:00
Kurt
89cc722cd2
Add missing met location bypass for pokewalker xfr's
2021-02-21 18:41:42 -08:00
Kurt
b159a43110
Update EncounterArea6XY.cs
2021-02-21 16:50:03 -08:00
CanoeHope
2940a0a47e
Update SM/USUM Event Flags ( #3155 )
...
* Update flags_sm_en.txt
* Update flags_sm_es.txt
* Update flags_sm_ja.txt
* Update flags_sm_ko.txt
* Update flags_sm_zh.txt
* Update flags_usum_en.txt
* Update flags_usum_es.txt
* Update flags_usum_ja.txt
* Update flags_usum_ko.txt
* Update flags_usum_zh.txt
2021-02-21 15:27:08 -08:00
Kurt
32eff161cc
Repopulate translations with latest additions/removals
2021-02-21 15:22:28 -08:00
Kurt
aaa1fd1b4f
Remove obsolete legality checks for safari
...
Hard matches for encounter slot result in these never being executable.
2021-02-21 15:22:10 -08:00
Kurt
c8b12a9ddc
Add safari slots for floette 2/3
...
Move the array into the constructor; let it get garbage collected rather than leaving it as static
2021-02-21 15:18:58 -08:00
Kurt
41096fb56e
Minor xmldoc / usage updates
2021-02-21 15:01:28 -08:00
Kurt
c11cf3d6d4
Extract gen4 pokedex logic
2021-02-21 09:59:10 -08:00
Kurt
f308be38fd
More tweaks
2021-02-19 10:52:26 -08:00
Kurt
d61e646ca9
Minor tweaks
2021-02-18 17:26:06 -08:00
Kurt
83c61a2515
Update EncounterGenerator6.cs
2021-02-17 08:49:32 -08:00
Kurt
31245d0e37
Add mythical table, allow non-mythical legends in latest ruleset (master ribbon)
2021-02-16 21:42:36 -08:00
Kurt
0121028a6b
Furfrou Bank edge cases
...
lmao nice meme
2021-02-16 21:22:20 -08:00
Kurt
165a0f3956
Update EncounterSlot8.cs
2021-02-16 09:54:47 -08:00
Kurt
f5b47f9116
Update EncounterGenerator6.cs
...
Closes #3153
wc6 is the only one with deferred cards that matter
2021-02-16 07:35:55 -08:00
Kurt
f63654d5ae
Force curry mark for generated galar mine hidden slots
2021-02-15 15:21:10 -08:00
Kurt
0d05715582
Fix reflective convert
...
Adding setters for Hidden Power caused the IVs to get mutated, same for some other values. The DateTime could return null if undefined.
Used to be Declared only (properties in destination class), but GBPKM has shared Nick/Lang/IV logic.
513648638f
Just do the GBPKM fixup at the end to copy the remaining properties manually. Set HP type if the conversion was from future 31IV games.
2021-02-15 13:52:49 -08:00
Kurt
6088a95421
Location specific restrictions
2021-02-15 10:31:07 -08:00
Kurt
bfe411d503
Update EncounterSlot8.cs
2021-02-15 10:19:52 -08:00
Kurt
74a5c03cd2
Clean check for overworld IVs
...
Closes #3150
Still need to remove some symbol encounter tables that are unused
2021-02-15 09:04:47 -08:00
Kurt
b82b0da7d9
Add checks for fishing mark
2021-02-14 22:25:59 -08:00
Kurt
90f7de4b27
Update Overworld8RNG.cs
2021-02-14 21:52:34 -08:00
Kurt
34bb0f1fc0
Update Overworld8RNG.cs
...
because archit wants it
2021-02-14 21:45:39 -08:00
Kurt
ebb4e2a56a
Defer curry mark static encounters, flag as invalid
...
Closes #3001 as all marks that can be checked are checked.
Promote trades above static encounters, as it's just met location.
2021-02-14 21:24:31 -08:00
Kurt
927c83d660
Show seed in output, flag correlations that shouldn't
2021-02-14 16:00:43 -08:00
Kurt
5949c3b57e
Minor clean
2021-02-14 15:14:45 -08:00
Kurt
267613270e
Generate slots/static per correlation if appropriate
...
Relocate the SetRandomEC at the tail end of the generator into the specific classes that set EC, so that our correlation generators don't have their EC overwritten at the end.
2021-02-14 12:27:14 -08:00
Kurt
884cd70d43
Minor clean
2021-02-14 10:23:53 -08:00
Kurt
1af27516e6
pid encounter type mismatch: returns
...
Keeping the cryptic message for now :)
2021-02-14 10:20:35 -08:00
Lusamine
205cf481b0
Add Gyarados/Milotic crossover & disallow marks in Motostoke Gym ( #3149 )
...
* Add a Gyarados crossover & disallow marks in Motostoke Gym
* Milotic can be lured across boundary too
2021-02-14 10:13:45 -08:00
Kurt
a65ab2accc
Flag wild slots that don't match 32bit correlation
2021-02-13 22:45:07 -08:00
Kurt
834d0d77ba
Create Overworld8RNG.cs
2021-02-13 18:18:14 -08:00
Kurt
4e92195b80
Add custom save type loading (hacks)
...
plugin adds a reader -> reader checks if it is a non-PKHeX.Core save type (they'd implement their own savefile/etc type) -> returns a matching save object if so
basically bypasses the base PKHeX logic
2021-02-13 01:53:38 -08:00
Kurt
6e4908b21e
Simplify a little
...
path.getfilename will never return null unless you pass null, which we don't do
setchecksums' base method does the AllBlocks.SetChecksums. move the battle team set to right before the usage of SetChecksums
2021-02-13 01:38:09 -08:00
Kurt
f583cdd385
Add valentines milcery def
...
nonshiny is dupe with prior enc
2021-02-12 20:21:13 -08:00
Kurt
c8d815dc59
Shift gen6 event flags to their actual index (+0xC*8)
2021-02-12 20:08:54 -08:00
Lusamine
c0b73575e6
Moltres-1 can be caught at Honeycalm Sea ( #3147 )
2021-02-10 21:02:29 -08:00
Kurt
4cabbc49a2
Add affixed ribbon drop-down
...
Closes #3146
2021-02-10 13:34:49 -08:00
Kurt
1405f2b9ba
Add optional original species parameter
2021-02-09 08:41:34 -08:00
Kurt
2ee88ee010
Update FormVerifier.cs
2021-02-08 23:18:45 -08:00
Kurt
666a1805ba
Relocate formargument logic
2021-02-08 20:42:19 -08:00
Kurt
ff7817a749
Create FormArgument extension logic
2021-02-08 20:39:46 -08:00
Kurt
37cb15749e
Update FormArgument handling for gen6/7
...
Disassociate pk4/pk6 backing byte[] when converting to pk5|pk7, as we no longer make a copy of the byte[] in the pkm's constructor.
Change UpdatePKM to include isParty, as we want it optional to update FormArgument too.
Change FormArgument saving to be handled by FormConverter; kinda not really good to have it there, but nothing else is handling FormArgument values.
Expand IFormArgument to have all FormArgument values exposed. "Maximum" is furfrou only.
PK6: Max is in the "FormArgument" u32, and the remain/elapsed is in party stats (hence the reverting when boxed)
PK7: u8 remain, u8 elapsed, u8 max, u8 unused.
PK8: assumedly the same as PK7, given the disassembly hints that it's the same as past games (even though Furfrou and Hoopa are not in SWSH).
2021-02-08 20:26:53 -08:00
CanoeHope
9a82070c7c
Add and update Gen 3 Event Flags ( #3142 )
...
* Update flags_rs_en.txt
* Update flags_rs_es.txt
* Update flags_rs_zh.txt
* Update flags_e_en.txt
* Update flags_e_es.txt
* Update flags_e_zh.txt
* Update const_frlg_en.txt
* Update const_frlg_es.txt
* Update const_frlg_en.txt
* Update const_frlg_es.txt
2021-02-08 09:04:27 -08:00
Kurt
3876b3b1fa
Allow traded egg while still egg
...
Closes #3144
2021-02-08 08:29:18 -08:00
Kurt
61266e3d49
Use popcount when appropriate
2021-02-07 21:47:43 -08:00
Kurt
62f4499646
Clamp type
...
oops, bitflags leaking through in comparison
2021-02-07 21:40:31 -08:00
Kurt
91253b810a
Indicate duplicate home trackers in report
...
Closes #3143
Reminder: Bulk Analysis can be accessed by control-clicking the verify checksums button :P
2021-02-07 08:34:56 -08:00
Kurt
a2d5d7d769
Show preview for encounter database slots on hover
2021-02-06 22:33:13 -08:00
Kurt
30cbe117dc
Add missing invert
2021-02-05 17:25:38 -08:00
Kurt
5bb4c9e7fe
Update FormVerifier.cs
2021-02-05 17:25:13 -08:00
Kurt
a7f65554ad
Update formarg handling
2021-02-05 16:52:46 -08:00
Kurt
b3029302ea
Cache a mismatched IV encounterslotGO
...
Eggs may come before wild in the pget pickle, so just keep bad matches around until the end.
2021-02-05 14:20:43 -08:00
sora10pls
eab75b7cba
Update HOME date legality
...
Update dictionary to use proper format (yyyy-mm-dd), as well as verifier to properly check met year.
Also updated IsValidDateWC8 to clamp latest met date based on UTC, like with GO encounters.
2021-02-04 09:12:47 -05:00
Kurt
f6f81ec782
Add initial date checks for HOME gifts
2021-02-03 22:57:59 -08:00
Kurt
5745f8b44e
Update AbilityVerifier.cs
2021-02-03 22:57:23 -08:00
Kurt
51bc48a6a8
Add Cramorant raids
2021-02-03 22:44:15 -08:00
Kurt
335ba2447e
Default parsesettings tradeback to true
2021-02-03 15:39:30 -08:00
Kurt
230073876f
Add catch rate for staticencounter1
2021-02-03 15:22:48 -08:00
Kurt
5350cb4ab6
Update EncounterTradeGenerator.cs
2021-02-03 14:50:15 -08:00
Kurt
ac464e0c57
Update EncounterStatic2E.cs
2021-02-03 13:49:14 -08:00
Kurt
36670292ad
Futureproof check regardless of packing filename
...
When making the wc8 bin, the filename v1/v2 may be first or second if the EventsGallery changes its syntax. Don't assume the v2 comes after v1. Just check for mismatch
2021-02-03 13:31:37 -08:00
Kurt
7d5596995d
Update WC8.cs
2021-02-03 13:29:48 -08:00
Kurt
862403858b
Refactoring
...
no functional change
2021-02-03 11:33:09 -08:00
Kurt
16ff74ccc0
Update WC8.cs
2021-02-02 22:57:44 -08:00
Kurt
9d9eb935b1
Improve partial match bleed through
...
Checks partial matches in the loop rather than outside; it'll only settle on the partial match if there's nothing else to settle on.
Gen1/2 generators can have partial matches bubble up before actual matches (gen1 fighting gen2).
2021-02-02 22:40:06 -08:00
Kurt
2b00e310ae
Handle some gen1/2 static generating easier
...
I should probably have slot1/2 and static1/2 and trade1/2 implement GetBlank so that they can flexibly return a japanese/int/(kor) from template rather than default int, but eh
2021-02-02 22:14:33 -08:00
Kurt
e33468db96
Mark (JP-BU)/(JP-GN)(EN-BU) as RB
...
BU is only Japanese
2021-02-02 22:13:24 -08:00
Kurt
33fc33a165
Add more nickname logic checks
...
Variant nicklang OT can nickname if it's the handler
2021-02-02 22:12:36 -08:00
Kurt
cd286d6923
Yield specific static encounters for rby/gsc for moveset gen
2021-02-02 20:25:59 -08:00
Kurt
fa09c6bc25
Update NicknameVerifier.cs
2021-02-02 19:21:17 -08:00
Kurt
3d99902023
Add HOME nickname verification rules
2021-02-02 19:14:38 -08:00
Kurt
107d9a71d5
Fix transfer for Gen1 in-game trades
2021-02-02 16:27:31 -08:00
Kurt
630d84c8b6
Check encounter moves for gen1/2 (no relearner)
2021-02-02 15:39:56 -08:00
Kurt
21e1e6def5
Check format 3/4 for setpidnature
2021-02-02 15:39:41 -08:00
Kurt
78cc0098b3
Update EncounterStatic2.cs
2021-02-02 10:41:28 -08:00
Kurt
f7f8597281
Handle game-specific slot fetch for gen1/2 more explicitly
2021-02-02 10:20:30 -08:00
Kurt
8705c26adc
Bake cosplay moves into the encounter template
...
yay records `with` syntax
don't bother specifying form6's moves, they're all levelup moves.
2021-02-02 09:40:58 -08:00
Kurt
f85ee7615d
Replace dashes with spaces for cosplay pikachu (rock star)
...
Can't replace all dashes with spaces, because Pom-Pom Oricorio exists.
2021-02-02 09:19:29 -08:00
Kurt
48c2c43293
Re-dump slots with revised SlotType definitions
2021-02-01 23:43:52 -08:00
Kurt
e55dae8f7b
Remove headbutt available check; already pruned
...
The Encounter dumper project already excluded all headbutt tree areas that can't be accessed. Every slot that is present in this project can be accessed.
Move the tree check to the eslot2 object
Check all gen2 slots regardless of crystal origin, since we now tag all of them with location IDs.
2021-02-01 21:22:58 -08:00
Kurt
a7afa58156
Rework partialmatch hidden check
...
Want to check if it has been evolved from the original species, and the current species is a non-changeable hidden ability
2021-02-01 20:45:48 -08:00
Kurt
5ef1850e46
Disallow marks on GO encounters
2021-02-01 20:34:04 -08:00
Kurt
4e9908a53d
Remove unnecessary logic
2021-02-01 20:17:17 -08:00
Kurt
03940b54a5
Update WB7.cs
2021-02-01 18:39:34 -08:00
Kurt
9124a3c62b
Improve handling of multi-nicknamed mystery gifts
2021-02-01 18:35:37 -08:00
Kurt
6d41d6a17c
Fix casting issue for mystry seed fetch
...
rand32 -> int32 can yield negative, when modulo'd can be negative (bad index)
2021-02-01 10:53:40 -08:00
Kurt
8a2d115df3
Sanity check nature for Criteria parameter
2021-02-01 10:45:53 -08:00
Kurt
afbf1d997b
Try to detect vc transferred species, don't assume most evolved
2021-02-01 09:52:25 -08:00
Kurt
7833d12f95
Simplify shared egg move array get
2021-01-31 23:07:14 -08:00
Kurt
a43f6aa71a
Add february dist raids
2021-01-31 22:40:47 -08:00
Kurt
f3ef88a5e9
Respect ability from criteria
2021-01-31 21:53:11 -08:00
Kurt
2dbdd83952
Update NicknameVerifier.cs
2021-01-31 21:43:33 -08:00
Kurt
34ac8167f2
Update EncounterSlot.cs
2021-01-31 21:42:24 -08:00
Kurt
d2d20c13e0
Don't emit JP-BU as a random gameversion
2021-01-31 21:28:33 -08:00
Kurt
fa3fe0a380
Invert check, fix xmldoc descriptions
2021-01-31 20:12:46 -08:00
Kurt
7d6249853d
Add gen8 case
...
This method is only used by BulkStorage, which is unused. Just keeping this up to date.
2021-01-31 13:10:03 -08:00
Kurt
1ece844f78
Partial match HA species without a HA possible
...
A captured metapod cannot have hidden ability via ability patch, but a captured caterpie evolved into metapod can, assuming it existed as caterpie.
2021-01-31 13:05:36 -08:00
Kurt
4456a9dc7a
Update nickname rules for gen8/=>gen8
...
Add a setting so that can flag deceptive species nicknames (even though it may be possible).
2021-01-31 12:37:03 -08:00
Kurt
09e5dde609
Add gen6 key item arg logic
2021-01-31 10:53:41 -08:00
Kurt
fd4034272b
Update WC8.cs
2021-01-31 10:36:33 -08:00
Kurt
d8e75ee85a
Force Japanese language for JP-BU safe language fetch
2021-01-31 10:19:12 -08:00
Kurt
4d25214c8d
Update EncounterEgg.cs
2021-01-31 01:20:35 -08:00
Kurt
332449f53d
Fix erroneous yield counter increments
...
https://projectpokemon.org/home/forums/topic/58492-possible-legality-error-for-the-mon-from-pokemon-bank-using-ability-patch-with-the-new-update/
2021-01-31 01:12:20 -08:00
Kurt
a7f6c212f9
Permit gen2 moves on a vc1 transfer
...
feels dirty
2021-01-30 22:03:41 -08:00
Kurt
a524032f61
Add TR flags to emoveset generator
2021-01-30 21:49:45 -08:00
Kurt
6089268b53
Set valid nature for generated toxtricity
2021-01-30 19:58:05 -08:00
Kurt
09bfe5bd95
Enforce shadow locks when generating a ck3/xk3 from criteria
2021-01-30 19:42:58 -08:00
Kurt
62bf1c2755
Add stubs for verifying memories regarding items
...
Not implementing these, but at least setting up a clean area for anyone else to implement the logic
2021-01-30 19:15:39 -08:00
Kurt
33b671c636
Allow home gifts with T7SID > 0
2021-01-30 18:39:40 -08:00
Kurt
8dacc2f63e
Clean up memcard handling a little
2021-01-30 16:45:08 -08:00
Kurt
3bb4553b24
Disallow encounter edge case moves when battleversion reset
2021-01-30 13:15:21 -08:00
Kurt
8db21c2bd0
Update 21.01.30
...
Latest cumulative update release with mgdb/pget binaries updated.
2021-01-30 10:46:05 -08:00
Kurt
bdbbe5194e
Update MoveSetApplicator.cs
2021-01-30 10:34:24 -08:00
Kurt
4f7faf9c85
Moveset generator tweaks, dexnav move logic
2021-01-30 10:15:38 -08:00
Kurt
1e86fdcea8
Fracture the encounter matching checks to allow progressive validation ( #3137 )
...
## Issue
We want to discard-but-remember any slots that aren't a perfect fit, on the off chance that a better one exists later in the search space. If there's no better match, then we gotta go with what we got.
## Example:
Wurmple exists in area `X`, and also has a more rare slot for Silcoon, with the same level for both slots.
* We have a Silcoon that we've leveled up a few times.
Was our Silcoon originally a Wurmple, or was it caught as a Silcoon?
* To be sure, we have to check the EC/PID if the Wurmple wouldn't evolve into Cascoon instead.
* We don't want to wholly reject that Wurmple slot, as maybe the Met Level isn't within Silcoon's slot range.
---
Existing implementation would store "deferred" matches in a list; we only need to keep 1 of these matches around (less allocation!). We also want to differentiate between a "good" deferral and a "bad" deferral; I don't think this is necessary but it's currently used by Mystery Gift matching (implemented for the Eeveelution mystery gifts which matter for evolution moves).
The existing logic didn't use inheritance, and instead had static methods being reused across generations. Quite kludgy. Also, the existing logic was a pain to modify the master encounter yield methods, as one generation's quirks had to not impact all other generations that used the method.
---
The new implementation splits out the encounter yielding methods to be separate for each generation / subset. Now, things don't have to check `WasLink` for Gen7 origin, because Pokémon Link wasn't a thing in Gen7.
---
## Future
Maybe refactoring yielders into "GameCores" that expose yielding behaviors / properties, rather than the static logic. As more generations and side-gamegroups get added (thanks LGPE/GO/GameCube), all this switch stuff gets annoying to maintain instead of just overriding/inheritance.
## Conclusion
This shouldn't impact any legality results negatively; if you notice any regressions, report them! This should reduce false flags where we didn't defer-discard an encounter when we should have (wild area mons being confused with raids).
2021-01-29 17:55:27 -08:00
CanoeHope
70b13fc28b
Added Spiritomb and Hallowed Tower DPPt Event Constants ( #3136 )
...
* Update const_dp_en.txt
* Update const_pt_en.txt
* Update const_dp_es.txt
* Update const_pt_es.txt
* Update const_dp_ko.txt
* Update const_pt_ko.txt
* Update const_dp_zh.txt
* Update const_pt_zh.txt
2021-01-29 16:17:33 -08:00
Kurt
ff21d63d16
Update MemoryVerifier.cs
2021-01-29 14:34:45 -08:00
Kurt
697a9fc668
Permit 80-89 memories on eggs
...
nice logic ya got there, GameFreak
2021-01-29 13:47:31 -08:00
Kurt
f7b703626c
Only import gbera statics for Generation >0
...
GO requests would have Generation=-1 (no met location to differentiate 7/8).
2021-01-29 11:32:51 -08:00
Kurt
e5943e3c92
Clamp generation fetch for battleversion
2021-01-29 09:56:31 -08:00
Kurt
3a6bff11c9
Fix relearn move check for gen6+
...
Probably should rewrite some sections of the current move verifier; lots of old code with illogical paths
2021-01-28 18:08:13 -08:00
Kurt
e8fa28794c
Make PIDIV lighter weight, readonly
2021-01-27 16:52:04 -08:00
Kurt
6c1b6a269d
Pass gender when creating static entry
2021-01-27 12:29:49 -08:00
Kurt
7497e08f9b
Template fields with species for save file
...
Fix PP since gen8 has pound at 35 rather than 40
2021-01-27 08:40:37 -08:00
CanoeHope
8144a5add2
Add HGSS Blue Card Points Event Constant ( #3135 )
...
* Update const_hgss_en.txt
* Update const_hgss_es.txt
* Update const_hgss_ko.txt
* Update const_hgss_zh.txt
2021-01-26 22:13:30 -08:00
Kurt
4bbe9dec96
Update FormVerifier.cs
2021-01-26 16:23:26 -08:00
sora10pls
1be20be877
Fix GO Shiny permissions
2021-01-26 13:35:57 -05:00
Kurt
511797c1f9
Fix gen4 hm indexing
2021-01-25 20:58:56 -08:00
CanoeHope
94d6ce42bd
Add and update some Gen III and IV Event Flags ( #3134 )
...
* Update const_frlg_en.txt
* Update const_frlg_es.txt
* Update flags_dp_en.txt
* Update flags_dp_es.txt
* Update flags_dp_ja.txt
* Update flags_dp_ko.txt
* Update flags_dp_zh.txt
* Update flags_pt_en.txt
* Update flags_pt_es.txt
* Update flags_pt_ja.txt
* Update flags_pt_ko.txt
* Update flags_pt_zh.txt
* Update flags_hgss_en.txt
* Update flags_hgss_es.txt
* Update flags_hgss_ja.txt
* Update flags_hgss_ko.txt
* Update flags_hgss_zh.txt
* Update const_hgss_en.txt
* Update const_hgss_es.txt
* Update const_hgss_ko.txt
2021-01-23 16:52:55 -08:00
Kurt
b1c3526618
Update WC8.cs
2021-01-23 11:43:56 -08:00
Kurt
f8c8a1b0e0
Trim out inaccessible headbutt tables
...
57.1KB => 53.6KB (-3.5KB)
Refer to dumper project for filtering logic
3642bfaf9d
2021-01-23 11:33:43 -08:00
Kurt
edfb8fc2ff
Add TID/SID fetch for Battle Revolution
...
Can unlock boxes by setting a nonzero TID/SID
https://projectpokemon.org/home/forums/topic/36582-pok%C3%A9mon-battle-revolution-save-research-thread/?do=findComment&comment=221812
ty Akunoko
2021-01-22 22:55:55 -08:00
Kurt
68673cf671
Flag all marks, unlike prior commit
...
oops, unnecessary simplification
2021-01-22 21:17:41 -08:00
Kurt
acfbef6cfa
Disallow raids matching if has mark
...
Closes #3133
not an ideal solution, but the encounter matching API is kinda limited in deferred-invalid vs deferred-notIdeal.
probably need to unify the match logic and generators so they can cache one secondary-check invalid
2021-01-22 20:28:54 -08:00
Kurt
5f8e2b13c5
Simplify headbutt tree pivot check
...
See the EncounterSlotDumper with the memoization logic & json tree listing.
Simplifies things a lot, and improves checking speed. Unreachable trees are now treated the same as no-trees maps.
ez 1.5KB reduction in file size :P
2021-01-22 19:20:18 -08:00
Kurt
5abd61816f
Add gamesync interface for gen7
...
oops; gamesync ID now shows up as intended
2021-01-22 19:04:54 -08:00
Kurt
6d0da504d5
Fix Tree Area list from Whirl Islands (0x1F) to Route 42 (0x22)
...
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=264118
Thanks Tlili !
2021-01-21 22:21:13 -08:00
Kurt
944ff107b0
Add new distribution raids
2021-01-21 16:30:07 -08:00
Kurt
8546ecaf46
Fix suggested moveset
2021-01-21 09:27:33 -08:00
Kurt
06e6242944
Update SAV4BR.cs
...
Uses Big Endian unicode for savefile strings, but pkm strings are big-endian-g4
2021-01-20 22:13:59 -08:00
Kurt
803b8675fe
Rework batrev current slot handling
...
Show all slots even if they're uninitialized. Empty first slots but present second slots caused errors on init.
2021-01-20 20:29:26 -08:00
Kurt
fbc089e7eb
Minor tweaks
...
Remove gen3 egg location hashset; only paths that reach it are for hatched eggs or current breed-eggs. Check breed eggs with the singular met location.
Simplify some logic flow
2021-01-20 12:37:51 -08:00
Kurt
9964c91dc6
Remove static init of yancy/curtis names
...
static constructor ran after the initializer; flip it and remove the unnecessary all-set
2021-01-20 12:36:46 -08:00
CanoeHope
121ae9b611
Rename SWSH blocks and update Chinese HGSS Event Constant ( #3131 )
...
* Update TrainerCard8.cs
* Update SaveBlockAccessor8SWSH.cs
* Update const_hgss_zh.txt
2021-01-19 12:46:54 -08:00
CanoeHope
b117c269fe
Add some HGSS Event Flags and update existing ones ( #3129 )
...
* Update const_hgss_en.txt
* Update const_hgss_ko.txt
* Update const_hgss_es.txt
* Update const_hgss_zh.txt
* Update flags_hgss_en.txt
* Update flags_hgss_es.txt
* Update flags_hgss_ja.txt
* Update flags_hgss_ko.txt
* Update flags_hgss_zh.txt
* Update const_hgss_ko.txt
2021-01-18 09:04:03 -08:00
Kurt
680e8b711d
Add some code analysis for try-return with nullable out
2021-01-17 00:05:07 -08:00
Kurt
bfd948ee2b
Update pget binaries, check gender
...
yay single gender availability! (frillish/jellicent being male only)
2021-01-16 18:29:27 -08:00
Kurt
b5c30193fa
Set initial capacity for stringbuilder to reduce reallocation
...
Default capacity is 16 so it's rarely an issue, but sometimes we don't need that much.
Update xmldoc for more clarity
2021-01-16 17:31:05 -08:00
Kurt
03ae3d470c
Simplify value passing
...
buffers are fixed size matching the StringLength anyways; don't bother with confusing max length passing when the buffer is obvious
2021-01-16 13:56:37 -08:00
Kurt
3c42978afa
Use IndexOf instead of FindIndex when possible
2021-01-16 12:47:02 -08:00
Kurt
de418e8db2
Simplify string termination handling
...
If 0x50,00.. terminated, treat differently than 0x50.. terminated buffer
2021-01-16 12:43:17 -08:00
Kurt
bb1d23e112
Minor clean
...
Use some enums, save a few virtual/static fetches
2021-01-16 12:01:40 -08:00
Lusamine
15da92f9bc
Document weather for static encounters ( #3127 )
...
This only matches the weather table with the Pokemon and does not fully
account for whether a location can spawn a particular weather.
Additional minor changes:
- Adds ScriptedNoMarks to Regis and Glimwood Tangle static encounters
- Corrects a few version-specific Pokemon such as Ludicolo/Shiftry
- Removes erroneous encounters such as Milotic in East/West Lake Axewell
- Removes an unused Motostoke Stadium encounter
2021-01-16 09:31:21 -08:00
Kurt
8eb499c4d0
Update EncounterStatic5.cs
...
Use base deferral method which only checks fateful flag.
2021-01-14 22:51:01 -08:00
Kurt
613e6db744
Use StringConverter api consistently; use stringbuilder when possible
...
Retain a stringbuilder to mutate the string rather than finalizing temporary strings
yields some speed improvements (less gen0 string objects allocated)
2021-01-14 22:50:13 -08:00
Kurt
3816d25f7b
Condense some expressions
...
Simplify legal held item array creation, reduce linq usage in startup
Discard unreleased item array references; no need to retain after startup
2021-01-12 22:38:18 -08:00
Kurt
c32b38a53c
Minor annotation tweaks
...
no functional change
2021-01-12 22:26:08 -08:00
Kurt
890ce9ea4e
Simplify some expressions
...
Search array for index rather than loop and check; gives early-break too -- was O(n) now is O(<~n)
2021-01-12 22:25:30 -08:00
Kurt
e62ea685c3
Make SpeciesConverter methods visible (class)
...
4 public methods; shouldn't need these except for fringe scenarios.
2021-01-11 17:52:02 -08:00
Kurt
2d3d6b49da
Force bad vc1 (should be vc2) to be vc2 templates
2021-01-11 17:47:25 -08:00
Kurt
621e708d23
Minor clean
2021-01-10 18:15:33 -08:00
CanoeHope
291ec5b073
Added 4 FRLG flags ( #3124 )
...
* Update flags_frlg_en.txt
* Update flags_frlg_es.txt
* Update flags_frlg_zh.txt
2021-01-10 17:17:21 -08:00
Kurt
6566b0ed1f
Add Pokedex flag properties
...
Closes #2954 ; can set directly from propertygrid already, but might as well clean things up a little bit to match the disassembly logic.
Open the simple editor center parent rather than next-form-position
2021-01-09 23:27:22 -08:00
Kurt
76ae6b2b3d
Minor tweaks
...
Disallow OT handling when originated gen is 1/2
Cast the input not the const
Hide HighestGameID (Use the method instead)
2021-01-09 21:25:28 -08:00
Kurt
a235cae9e0
Add Move enum, similar to Species/Ability
...
dash,apostrophe,space => empty
Z Moves have P/S suffixed
10mil volt thunderbolt "TenM"
2021-01-09 13:07:29 -08:00
Kurt
c83208c915
Rename CheckIdentifier.Move to CheckIdentifier.CurrentMove
2021-01-09 13:05:56 -08:00
Kurt
6a3fa4c90f
Shift puff strings down by 1, remove init shift
2021-01-09 08:43:57 -08:00
Kurt
89a4dde4ee
Minor perf improvements for location list init
...
Strip out unused lines [~ XX]; behaviorially equivalent to empty strings.
Mutate original met list rather than making a copy and moving any changes into it (saves extra allocations)
Change initial loop start to pre-skip iterations not meeting criteria
Manually mark duplicate lines (only 2 exist); no more linq/searching.
Wipe merged location sub-names prior to merging (bounds check optimization, maybe? already accessed, setting should be fine).
Tests still pass :)
Check for negative met location IDs to return empty (fuzzing?)
2021-01-08 19:26:20 -08:00
Kurt
1882d284bd
Enable Gen1 slot location indication
...
Change "FRLG" -> "Kanto" as strings are reused
Used lines:
39c3968e5e/Gen1/DumpUtil.cs (L5)
table.Where(z => z != 0).Select(z => lines[z]).Distinct()
The only two that had FRLG are now showing "Kanto"
2021-01-08 13:59:18 -08:00
Kurt
3e0b52195a
Minor clean
2021-01-08 13:17:59 -08:00
Kurt
4a3a8dd090
Add japanese blue encounter tables (unique to jp_blue)
...
When creating a new pk1 for the slot->pkm, get it as a pk1-japanese.
Export the gameversion when in pk1/2 format (same as VC).
2021-01-08 11:29:00 -08:00
Kurt
2deb51b365
Minor optimization for hashing
...
don't use FIPS compliant hashing methods explicitly, no real reason to. hash.Create() will select managed vs csp depending on the framework/core and reg flags.
add >net46 incremental hash logic for swsh
remove static sha256 instance (single threaded overkill)
2021-01-08 00:32:04 -08:00
Kurt
d2d2be899b
Critical typo fix
...
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
2021-01-07 21:30:39 -08:00
Kurt
92c9e9897a
Add latest dist raid changes
...
Same as 11/20, with one swap. Only the swap is kept (because duplicate encounters don't matter).
2021-01-07 21:27:57 -08:00
Kurt
c9f222bf38
Set valid mystry mew seed on creation
...
Uses a Method specific seed regardless of template.
2021-01-07 21:27:19 -08:00
Kurt
86d80a7d0b
Minor perf improvement for advancing keys
...
Further improvements can be made if there's a way to have a union struct (4 u16s, lumped u64) that has a simple 4bit diagonal mirror operation on it. Can be at least twice as fast.
Benchmarking with optimizations shows about 80-90% of the prior time taken, so at least a 10% speed optimization
Rarely used, was fun to try and optimize a little more.
Eliminate bounds checks by accessing/setting the highest element, and only index twice instead of 6x.
Eliminate u16 casts by leaving as int type (same result)
Eliminate temp value caching and instead directly write to storage. (no more _0123).
End result looks neat too, since the >> 0's removed looks like a diagonal, like the nibble rotation :D
2021-01-07 20:50:28 -08:00
Kurt
1138cd44bc
Minor rearranging
2021-01-07 18:05:21 -08:00
Kurt
19d40f61f5
Move save crypto types to focused folder
2021-01-07 16:01:34 -08:00
Kurt
f615814548
Add xmldoc, increase swish util flexibility
2021-01-07 15:34:26 -08:00
Kurt
5554651951
Mark scxorshift32 and xoro128p as ref structs
...
Prevents passing them as args, as intended. These are self mutating structs
2021-01-07 15:33:42 -08:00
Kurt
1c19bc86f4
Preallocate some holding objects to prevent doubling allocations
...
Saves 12 doubling reallocations for new List to hold blocks
Saves 21 for the memorystream on writing
2021-01-07 09:37:27 -08:00
Kurt
6e741a0cf0
Minor tweaks
...
Add xmldoc
Remove linq from memecrypto code (speed lmao)
Hide some methods that shouldn't be called directly
Name variables better for accessor const's
2021-01-06 23:30:30 -08:00
Kurt
9718d1d2aa
Add save handler abstraction for detecting atypical save formats
...
GCI, DSV, DUC are already supported, so I've written the abstraction for those and seed the Handler list on startup.
Can add a new class with recognition via SaveUtil.Handlers.Add(myHandler);
2021-01-06 15:46:43 -08:00
Kurt
118e1266a6
Swap lgpe sandshrew/vulpix version restrictions
...
Closes #3122 ty @FeralFalcon !
2021-01-05 17:30:14 -08:00
Kurt
1bd60ba6f9
Check original species in the event of VC transfers
2021-01-05 16:36:16 -08:00
Kurt
9d7c9929b4
Minor tweaks
...
should be it :( :(
2021-01-05 09:58:33 -08:00
Kurt
23b5aebe05
Update IndividualValueVerifier.cs
2021-01-05 09:56:19 -08:00
Kurt
70fe1847ac
sync missing changes
2021-01-05 09:51:32 -08:00
Kurt
373aecdf7c
Merge GO IV checks, behavior is now correct
...
Rename IV1/2/3 to HP/ATK/DEF in gp1 structure
2021-01-05 09:39:50 -08:00
Kurt
6fc8779aaa
Revert "Add vc shiny female gender ratio check"
...
This reverts commit d5a1283585
.
2021-01-04 17:31:56 -08:00
Kurt
cc43550357
Simplify more expressions
2021-01-04 17:31:43 -08:00
Kurt
ad48f4e909
Set languageID if present for sav
...
Lowercase the "SAV" variable too
2021-01-04 16:28:46 -08:00
Kurt
acf811f5c1
Permit all generations prior to requested generation for know move check
2021-01-04 15:38:30 -08:00
Kurt
cbc57dc794
Force sav1 BU to init as japanese
2021-01-04 15:18:16 -08:00
Kurt
99fe3b59b4
Fix contains indexing incorrectly
...
blame apr 17 2017 !
a5b1d72f06 (diff-53c2e8acc19c5af65034cf0460ba82ebc7dc00ba61eb142ef4aa2c0cbc1f7cffR2918)
2021-01-04 15:06:52 -08:00
Kurt
0ab3493335
Skip save sub-type detection if we already it
2021-01-03 18:11:59 -08:00
Kurt
d5a1283585
Add vc shiny female gender ratio check
2021-01-03 18:08:31 -08:00
Kurt
730640decc
Minor clean
2021-01-03 16:53:13 -08:00
Kurt
33ad654be6
Mark encstatic version on init rather than post-init
2021-01-03 16:49:49 -08:00
CanoeHope
916c70341a
Added Bebe's PC Event Flag for DP + Update Gen 3 & 4 translations ( #3116 )
...
* Update flags_dp_en.txt
* Update flags_frlg_es.txt
* Update flags_dp_es.txt
* Update flags_dp_ja.txt
* Update flags_dp_ko.txt
* Update flags_dp_zh.txt
* Update flags_frlg_zh.txt
* Update flags_rs_es.txt
* Update flags_rs_zh.txt
2021-01-02 21:36:42 -08:00
Kurt
e663ffdd35
Fix comparison
2021-01-02 20:52:39 -08:00
Kurt
1f600f3518
Fix Gen2 Shiny ShowdownSet import
...
SetNature loops by changing the PID which doesn't exist; there's no nature or abilities in gen1/2 so just skip these two methods completely.
2021-01-02 19:58:25 -08:00
Kurt
7629d3f887
Bounds check empty permutations
...
If the length is 0 or malformed input, we return empty.
2021-01-02 19:23:39 -08:00
Kurt
1f3d3112d3
Move some future-evolution tables to separate class
2021-01-02 19:11:46 -08:00
Kurt
4a52b349ff
Minor clean
2021-01-02 19:11:34 -08:00
Kurt
77a784a881
Move Stadium static encounter junk to event list
...
Charmander has Leer at level 5, which makes it a special move (can't learn it normally that low).
2021-01-02 14:48:11 -08:00
Kurt
97be69bca1
Use EncounterMatch when EncounterOriginal doesn't matter
2021-01-02 14:47:39 -08:00
Kurt
7a4d8925f2
Update EncounterStaticGenerator.cs
2021-01-02 13:53:25 -08:00
Kurt
f785231692
Fix backup filenaming
2021-01-02 10:34:33 -08:00
Kurt
699a598227
Update NicknameVerifier.cs
...
Nickname AND Trainer Name are verified in that method; we still want to execute it. If it has a fixed nickname, we can skip the wordfilter since it's already been checked.
2021-01-02 01:02:59 -08:00
Kurt
401add520a
Check nickname of non-nicknamed in-game trades
2021-01-02 00:48:58 -08:00
Kurt
c432a15a20
Relocate some tables to a location closer to where they're used
2021-01-02 00:46:09 -08:00
Kurt
a7b9fafb69
Remove unnecessary logic
...
Encounters are thoroughly checked for their origins; don't need to check again if it's possible to have it in an egg.
2021-01-01 19:45:40 -08:00
Kurt
2648560684
Invert breeding method result returns
...
clean:
if (!logical) return;
Existing logic had methods named to return true if fail, now method checks for passing, thus the logic now follows the above pattern.
2021-01-01 19:36:54 -08:00
Kurt
09089da14e
Use more expression return style
...
Reduces indentation & bracketing, a bit more concise
2021-01-01 17:08:49 -08:00
Kurt
1d22b74970
Remove unused block class
...
Copied from Gen7b, swsh is just a key,value list
2021-01-01 16:57:18 -08:00
Kurt
813180453e
Delete duplicate HT bit fetch method
...
Make expression methods
2021-01-01 16:39:33 -08:00
Kurt
11a2a7a318
Condense expression to use bitflags
...
from 2 cmp to just 1
2021-01-01 16:25:48 -08:00
Kurt
46f3b17a67
Replace this[] indirect access with direct table access
...
The static constructor setup methods don't need to be maxSpecies aware, they always succeed. So just remove the self-imposed-safe bounds checks by accessing & mutating the table directly.
2021-01-01 15:24:11 -08:00
Kurt
04f8efec4f
Move more breeding logic to Breeding
...
Simplify some method signatures, reduce checks for MoveEgg.GetEggMoves
ran legality checks for 100,000 pkm, no more exceptions (Internal Error) -- added a "CanGameGenerateEggs" which filters out unused gameIDs
2021-01-01 15:01:22 -08:00
Kurt
7523e0e200
Make ContestStat fields byte (from int)
2021-01-01 13:39:08 -08:00
Kurt
f6d4d93613
Inline some logic for contest stats
2021-01-01 12:21:46 -08:00
Kurt
e2c1a3045a
Extract gen2 egg generator, simplify can be egg checks
...
Optional parameters were never passed; force Min Level to 5 to match egg level.
Tried removing it completely but it still allowed Charizard eggs (no)
2021-01-01 11:27:45 -08:00
Kurt
a4c4a2b231
Make EncounterArea record type
...
immutable reference types is the goal; the array for the data isn't copied, but both records refer to the same data.
2021-01-01 10:55:33 -08:00
Kurt
4e01e78734
Make Species/Form/Min/Max readonly, not init
...
Pass them to the abstract class's constructor
2021-01-01 10:53:05 -08:00
CanoeHope
45c46d774f
Added a few RS, FRLG and DP Event Flags ( #3115 )
...
* Update flags_rs_en.txt
* Update flags_frlg_en.txt
* Update flags_dp_en.txt
2020-12-31 23:36:12 -08:00
Kurt
fb008be6a6
Condense some more expressions
2020-12-31 23:13:27 -08:00
Kurt
080f6f827d
Replace pkm.GG references with direct version checks
...
No longer tied to met location
2020-12-31 17:45:11 -08:00
Kurt
8bf250ff5a
Update EncounterEggGenerator.cs
2020-12-31 17:16:28 -08:00
Kurt
2689e72252
Hide field that shouldnt be used by external users
...
Not to be confused with LegalityAnalysis.Parse
2020-12-31 17:14:39 -08:00
Kurt
b9f0427ccd
Add Year of the Dragon distribution raids
2020-12-31 16:07:52 -08:00
Kurt
f631cbbecd
Generate gen2 eggs via gen2 method, ignore gen1 versions
...
For searching, only return versions compatible with the save file
Don't bother filtering out BU for Japanese-only.
2020-12-31 15:51:06 -08:00
Kurt
4058d44229
Fix inverted check
2020-12-31 12:14:24 -08:00
Kurt
aaad127b99
Condense things a little more
2020-12-31 10:41:55 -08:00
Kurt
f4bf9dd208
Minor clean
...
add download count to changelog
move 2019 changelog to uncompiled resource (for record)
2020-12-31 10:36:09 -08:00
Kurt
28ec0e91f0
Use specific type when storing reference
2020-12-31 10:33:30 -08:00
Kurt
38e02a53b2
Condense switch cases to switch expressions
2020-12-31 10:33:13 -08:00
Kurt
99292c75f9
Update 20.12.30
2020-12-30 21:16:38 -08:00
Kurt
b7d70e61d3
Update gen7 slot pickles, removes inaccessible areas
...
Closes #3025 , ty @sora10pls and @Ammako !
2020-12-30 19:08:53 -08:00
Kurt
6a9aa891f1
Validate VC transfer consoleregion-language relationship
2020-12-30 15:30:50 -08:00
Kurt
ef51f53e9a
Flag battle-only minior forms
2020-12-30 15:03:55 -08:00
Kurt
24332b6979
Minor tweaks
2020-12-30 13:08:15 -08:00
Kurt
206a05082b
Update HistoryVerifier.cs
2020-12-30 09:55:41 -08:00
Kurt
6040faed10
Yield gb events in generator
...
Were recently split off so that the events could be generated last rather than with the rest of static encounters (first)
2020-12-29 21:45:37 -08:00
Kurt
6071834d4f
Fix gender ratio comparison for Colo starters
...
LockFinder:
https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=263736
CXDVerifier:
Use a switch expression for a more concise representation of logic
2020-12-29 20:25:05 -08:00
Kurt
b19688b13d
Defer go slots with IV sets as there might be other encs
...
Move the logic to the class
Update go binaries
2020-12-29 16:07:29 -08:00
Kurt
4d1832b124
Move showdown stuff to subfolder
2020-12-29 15:39:24 -08:00
Kurt
2af9e800fb
Add RotomAffection and rotoloto1/2 flag editing to GUI
2020-12-29 11:39:19 -08:00
Kurt
d9a4eacaf4
Allow deactivating all raids
2020-12-29 10:53:47 -08:00
Kurt
de840f40d4
Invert some "!is" to "is not"
2020-12-29 00:58:08 -08:00
Kurt
e8c23f6644
Simplify some repeated comparisons with expressions
...
Less prone for bugs since it uses the same value for all comparisons without re-specifying
2020-12-29 00:37:59 -08:00
Kurt
c119f18af3
spec->species
2020-12-28 22:22:52 -08:00
Kurt
6502c9df33
Condense some expressions, extract static class
2020-12-28 21:42:54 -08:00
Kurt
0a46f45b00
Split MetDataSource from GameDataSource
2020-12-28 21:12:46 -08:00
Kurt
688b636b93
Fix off-by-one and trim trailing tabs of blank rows
2020-12-28 14:45:08 -08:00
Kurt
bb68dcc3cb
Move trade->pkm edge case handling to derived classes
2020-12-28 14:42:48 -08:00
Kurt
934316d68d
Simplify some expressions for game datasources
...
Reduce allocations for ball
Use a clean switch expression for version->met list
2020-12-28 13:32:36 -08:00
Kurt
74ee22e66e
Make ComboItem a record
2020-12-28 11:57:34 -08:00
Kurt
e44100a9fd
Remove unnecessary ComboItem logic
2020-12-28 11:56:00 -08:00
Kurt
a124168e87
Make FormArg editing a complex control
...
Shows a dropdown for alcremie only, and a number entry for everything else.
See 771086a222
for initial implementation; I don't want the lag anymore lol
2020-12-28 11:51:25 -08:00
Kurt
c14f2a1dd1
Minor initialization tweaks
...
GameStrings: 10% of strings are unique; just mark everything. Stop a little early so we don't process the empty & (trade) string.
LearnsetReader: All empty entries are length==0; malformed should throw an exception (never).
EggMoves: Compute ptr inside the array fetch loop; don't use linq.
EggMoves & string shaves off 80ms of startup time according to profiling; some could be attributed to warm-up but yay more efficient.
2020-12-28 10:22:13 -08:00
Lusamine
c46c55f304
Add missing static encounters ( #3113 )
2020-12-27 11:47:01 -08:00
Kurt
b84e2283a7
Add missing snorlax nest encounter (Zeraora event)
...
The event had copies of the current month's raids, but snuck in Snorlax at level 17 (wrong, should have been munchlax?).
ty atrius
fix indentation
2020-12-27 11:32:05 -08:00
CanoeHope
0f5a77f187
Update DPPt Starter event constants ( #3112 )
...
* Update const_dp_en.txt
* Update const_dp_es.txt
* Update const_pt_en.txt
* Update const_pt_es.txt
2020-12-26 12:46:49 -08:00
Kurt
e4c391dc01
Move nest downlevel checks into specific encounter type
...
Distribution nests are checked for 1/3 badge restrictions similar to regular nests; crystal nests are not. Thanks @Lusamine!
2020-12-26 09:31:21 -08:00
Kurt
a4ccca7980
Add battle-only known move memory bypass
2020-12-26 09:27:41 -08:00
Kurt
ee5349ff98
moar is or
2020-12-25 12:30:26 -08:00
Kurt
4a8a495d04
Condense some switch expressions
...
Should be it for now; exhaustively searched for all that made sense to change
2020-12-25 10:58:33 -08:00
Kurt
799d5aea56
Merge branch 'master' of https://github.com/kwsch/PKHeX
2020-12-24 17:15:34 -08:00
Kurt
1d501366cb
Add holiday raids
2020-12-24 17:15:32 -08:00
Kurt
95e3337f2c
More switch expressions
2020-12-24 17:12:08 -08:00
Kurt
4d0108331a
Move LegalityAnalysis derived movesets out of class
...
LegalityAnalysis just does the analysis; no need to do unnecessary suggestion logic inside the object.
2020-12-24 16:36:50 -08:00
Kurt
749fef0ac6
Minor clean
2020-12-24 15:23:38 -08:00
Kurt
ba7ccaf5e6
Make EncounterTrade's version init-only
2020-12-24 15:23:26 -08:00
CanoeHope
3d400675dd
Add running shoes for DP + merge 1 RS event flag ( #3111 )
...
* Add running shoes flag for DP
Platinum & HGSS don't use a flag, sorry!
* Merge an identical RS flag
2020-12-24 13:08:21 -08:00
Kurt
43dd390f21
Split IContestStats, mark trades as records
2020-12-24 00:06:40 -08:00
Kurt
afdd2bd57e
Mark EncounterSlot/Static types as immutable record types
2020-12-23 20:40:59 -08:00
Kurt
0a3f45218f
Add OT gender check for N's Pokemon
...
Closes #3110 ty @FeralFalcon !
2020-12-23 18:03:05 -08:00
Kurt
93910df2c6
Use new switch statements
2020-12-23 17:14:38 -08:00
Kurt
736564be8c
Merge EncounterStatic4 back together
2020-12-23 12:15:49 -08:00
Kurt
324ce9d6ac
Minor clean
2020-12-23 09:34:29 -08:00
Kurt
e34c8df044
Revise some method signatures
2020-12-22 20:50:33 -08:00
Kurt
105e8b3818
Move version forcing for unavailable encounters to es4
2020-12-22 20:15:56 -08:00
sora10pls
dcd20a3649
Update PogoTypes and their respective requirements
...
For more context, see 62e84309d7
2020-12-22 15:20:15 -05:00
Kurt
d288a32ef5
Permit TR flags for "Can Relearn", split branching for TR checks
2020-12-22 09:10:10 -08:00
Kurt
53e0046a48
SWSH has some form entries with different base friendship (stunfisk)
2020-12-22 09:09:49 -08:00
Kurt
2bc7110884
Remove unnecessary overrides
2020-12-21 23:40:58 -08:00
Kurt
997e0751f3
Minor clean
...
Handle remainder of c#9 sugar
Fix some spelling mistakes
2020-12-21 23:37:07 -08:00
Kurt
514b60b447
Merge type check with usage in if statements
...
if x is y with z property true, then :D
2020-12-21 22:33:48 -08:00
Kurt
4890e0e952
Change move source requests from a bunch of bools to bitflag enum
...
little more sane & clear
2020-12-21 21:24:16 -08:00
Kurt
cd76e49388
Strengthen know move check
2020-12-21 19:50:56 -08:00
Kurt
351637900f
Downgrade swsh move memory verification severity
...
Some special encounters don't set the Relearn Moves, so we can't really check the memory-moves unless we somehow late-reject a matching encounter. Not really worth the effort to try and verify cosmetic mismatches; just tag them as Fishy.
2020-12-21 19:20:11 -08:00
Kurt
d225f3391a
Split up DataUtil to separate files
...
ya i know there's already a localizeutil class, whatever
2020-12-21 19:13:18 -08:00
Kurt
594db92ad0
Minor clean
...
Handle some stragglers
2020-12-21 17:48:08 -08:00
Kurt
98be0f6739
Target type'd new
2020-12-21 17:17:56 -08:00
Kurt
0303eada32
this is not that
...
clearer than before, yay
2020-12-21 17:12:39 -08:00
Kurt
1854d172bd
Add missing property set
...
lol oops
2020-12-21 17:12:21 -08:00
Kurt
68ee8cfcc4
Change setters to init only
2020-12-21 17:05:05 -08:00
Kurt
c6b702ae54
Create cosplay pikachu rather than clone
2020-12-21 17:04:37 -08:00
Kurt
133b8e6ba0
Rework Pokewalker/Dream Radar static encounters to own class
2020-12-21 17:04:09 -08:00
Kurt
5729718d68
Simplify ternary byte casts
...
No longer needed to explicitly cast, thanks c#9 !
2020-12-21 16:53:28 -08:00
Kurt
6d030831ab
Bump PKHeX.Core to C#9 language version
...
Add FrameworkUtil.cs which is compiled if the build isn't net5+, needed to support init setters & records
2020-12-21 16:52:11 -08:00
Kurt
b71df7b064
Allow shared moves from daycare as "can know move"
...
See b58f3bbc22
2020-12-21 16:49:42 -08:00
Kurt
8a0e7d90e0
Move Shiny override set to constructor
2020-12-21 14:40:34 -08:00
Kurt
b58f3bbc22
Add memory checks for GO->HOME transfers
...
Also add checks for the new memory types introduced in swsh
2020-12-21 14:22:24 -08:00
Kurt
62018cce1a
Unify concepts with different names
...
AltForm & Form & Forme => Form
GenNumber & Generation => Generation
Extract out SpeciesForm interface, and re-add IGeneration
For those using PKHeX as a dependency, this should be a pretty straightforward manual replacement... GenNumber and AltForm should be quick find-replace`s.
2020-12-10 20:42:30 -08:00
Kurt
7c4c1e0913
Minor prep clean
2020-12-10 19:49:53 -08:00
Kurt
ebc1cec3da
Extract breeding info to separate class
...
Remove splitbreed check in encounteregg2 generator; gen is always 2, never >=3, so the splitbreed check is never executed
2020-12-07 20:54:55 -08:00
Kurt
a13c2c852c
Add some comments, clean a little
2020-12-07 20:14:12 -08:00
Kurt
98ef0299b6
Add xmldoc for save meta/state tracking
...
Move some logic around to the more appropriate spot
2020-12-07 19:49:04 -08:00
Kurt
6f7602f2ad
Change signatures to use readonly if possible
...
Extract get/set team methods for battle video
2020-12-05 06:09:33 -08:00
Kurt
e72c80613e
Extract metadata/state tracking from SaveFile obj
2020-12-05 05:36:23 -08:00
Kurt
44473d1593
Add CHS armor trade OT name
...
Closes #3100 ty @FeralFalcon !
2020-12-03 12:50:07 -08:00
Kurt
9cd6d34f1d
Disregard ability bit checks if was shadow
...
only really pertains to xk3/ck3 and this doesn't really impact legality once transferred
2020-12-02 21:40:35 -08:00
Kurt
3d87070cc8
Require strict match for hidden ability encounters
...
Metagross collision with wild beldum
deferral API is kinda crude, hence these janky workarounds. Was originally intended to hold onto close matches when there's no more possible matches to check.
I think a priority-deferral while only retaining a single encounter bad (instead of a list of retries) may work better than the current setup, but that would require more abstraction
2020-12-02 21:39:45 -08:00
Kurt
d5bd36143e
Add language check for jp-blue gameversion, non-crystal female
...
Closes #3099
Ty @CarlosofKalos !
2020-12-01 16:55:10 -08:00
Kurt
e54e94a734
Don't waste alloc on clearing titlescreen slot
...
Revisiting #3098 #3086
2020-12-01 07:19:21 -08:00
CanoeHope
228042b111
Properly set empty slots to Trainer Card ( #3098 )
...
#3086
Was only partially addressed -- it was only done for Title Screen and not League Card too.
2020-11-30 21:38:15 -08:00
Kurt
c77461808d
Update Encounters8NestDist.cs
2020-11-30 21:38:03 -08:00
Kurt
5e32e64ac8
Handle MANôA and FALCçN SPA->FRE Gen2 Trades
...
Transporter remaps certain locale specific chars depending on the source ROM's version.
Since VC can trade between languages, there are 2 Spanish in-game trades that have glyphs subject to remapping, if it's transferred from a French game.
If the spanish trade is transferred from a french game, it must match the mutated string.
ty @Lusamine & helpers :D
2020-11-29 18:17:15 -08:00
Kurt
4f7e34dd47
Simplify slot init to reduce re-allocation
...
Slap in friend safari at the end during object construction; saves about 1KB of allocation on startup (lol)
Change internal array types to match object types, similar to other encounter-generation definitions.
2020-11-29 15:05:53 -08:00
Kurt
5bc5b611cb
Make RefreshAbility virtual, add overrides for gen3&5
...
Gen5: set HA bit if hidden ability
Gen3: prevent setting AbilityBit if it doesn't have 2 distinct abilities
Failed test now passes; all tests are passing!
2020-11-29 15:02:57 -08:00
Kurt
fefc38bacb
Minor debug optimizations
...
Trees:
- Only retain the objects needed after calculation
- Reduce size of TreeCoordinates and remove allocation penalty (now a struct)
No more warnings for Release compilation :D
2020-11-28 14:55:09 -08:00
Kurt
8778d8c6b7
Update 20.11.28
2020-11-27 21:40:36 -08:00
Kurt
3d6bb0ec00
Ignore bad evolution slots
2020-11-27 21:04:06 -08:00
Kurt
016ebb86ad
Update AbilityVerifier.cs
2020-11-27 20:44:44 -08:00
Kurt
8eb582c997
Move species/move names to parsesettings
2020-11-27 18:45:06 -08:00
Kurt
67b7d44ced
Fix accented-a/i for spanish in-game trade
...
I think this was a PKHeX issue that went unnoticed; originally, we didn't include the Á and Í chars in the dictionary.
I checked the transporter code:
The app maintains the international & japanese character tables, and depending on the ROM language, it may change a char to the language-specific entry. Refer to Bulbapedia's notes on the char tables for different languages:
https://bulbapedia.bulbagarden.net/wiki/Character_encoding_in_Generation_II
However, none of these char-changes are able to be reached with a legal char.
Á and Í (only accessible from the Spanish in-game trades) and the german 0xC0 && z <= 0xC6 chars are already in the international table. Every single difference in the VC1/VC2 table is an un-enterable char.
tl;dr -- all possible char codes are transferred fine with the VC2 table without extra language logic. We just keep out any inaccessible char (replaced with space).
2020-11-27 16:49:06 -08:00
Kurt
e9075436b7
Split off g7 transporter string handling
...
Add katakana / hiragana sensitive transferring
var check = CheckKata("ぐリお") == "ぐりお";
check should be true, dugtrio case !
2020-11-27 15:37:55 -08:00
Kurt
110d25d50e
Add placeholder duplicate relearn move check
2020-11-27 13:05:36 -08:00
Kurt
26d6143325
Indicate static encounters disallowed from marks
...
Includes gifts by default
2020-11-27 12:48:47 -08:00
Kurt
3680048c0a
Add local pickle loading if compiled as debug
...
Same dangers about "what is the root path"
Bump the level cap while we're here.
2020-11-27 12:14:13 -08:00
Kurt
c2867f7899
Move EvoBase to Evolutions folder
2020-11-27 12:06:52 -08:00
Kurt
6ebeb73293
Rename split legality class files
2020-11-27 12:01:30 -08:00
Kurt
fa36b70b29
Split Analysis into two separate classes
...
Will rename in next commit
2020-11-27 12:00:49 -08:00
Kurt
9b178fefe2
Xmldoc, minor tweaks
...
Move form-info logic from FormConverter to AltFormInfo; now FormConverter is entirely form=>string[]
Add a bunch of xmldoc
Make pogo no-end-date cmp agaisnt UTCnow rather than local now.
2020-11-27 11:51:02 -08:00
sora10pls
a437cbb9ca
Update FormConverter.cs
...
Display 0-9999 for Galarian Yamask formarg values.
2020-11-26 18:41:45 -05:00
Kurt
771086a222
Show all valid yamask-1 formarg values
...
from 319 (max HP-1) to 9999 (max saved value).
Causes a little bit of GUI lag when loading 10k items to the combobox; could be a number entry but meh. Lazily allocate the 10k strings; wait until it's requested.
2020-11-24 12:40:56 -08:00
Kurt
d6294d42f7
Update SAV1.cs
2020-11-24 10:51:31 -08:00
Kurt
1bde155c4d
Move tolerance permissions to pget
2020-11-23 16:25:34 -08:00
Kurt
21669d3f77
Update EncounterTrade1.cs
2020-11-23 13:24:02 -08:00
Kurt
624c65b937
Update EncounterMovesetGenerator.cs
2020-11-23 12:53:32 -08:00
ShadowMario3
80c0d73e18
Fix order of RB Ingame Trades ( #3095 )
...
* Fix Gen1 traded JPN Dugtrio nickname
* Fix order of RB Ingame Trades
2020-11-23 10:29:59 -08:00
ShadowMario3
ba8b8f706b
Fix Gen1 traded JPN Dugtrio nickname ( #3094 )
2020-11-23 08:44:15 -08:00
Kurt
69ad16c30f
Remove has move check for static encounters
...
Event Move special encounters are yielded after static encounters by the generator, so this iterator-picker will never behave as originally intended.
Since the encounter generator works fine for these events in its current form, we can just remove it. If we need to prefer GB era events before static, then we'd reinstate the priority and move the GenerateGBEvents before the static yielder.
bla bla bla this is just a cleanup from old preference code where we wanted to recognize the encounter as an event/trade as they're more recognizable. We just want to track the progress of the iterator so that g1/g2 follow a merged yielding order
2020-11-22 17:03:30 -08:00
Kurt
37782f0ce4
Consolidate EncounterTrade1 level objects
...
Adds Nickname checks, thanks @ShadowMario3 for grabbing these into separate text files from Bulbapedia.
I reordered all the encounters to match Bulbapedia; each level is denoted if different if it can be sourced from RBY.
2020-11-22 16:19:03 -08:00
Kurt
e701bf2725
Add Frostpoint Field for dens 175/176
...
Closes #3091
2020-11-20 18:20:00 -08:00
Kurt
dba7dc9911
Forest distribution raids
2020-11-19 16:06:43 -08:00
Kurt
ce17fd4050
Minor tweaks
...
Enc static 4 should check met location, since locations are flexible for roamers
Simplify expressions
Disallow 0 moves in "needed moves" list.
2020-11-19 15:34:06 -08:00
Kurt
9d8b528437
Update EncounterMovesetGenerator.cs
2020-11-19 07:33:35 -08:00
Kurt
0af0c05bac
Update go slot list yield and move fetch
2020-11-18 21:34:40 -08:00
sora10pls
f8dd2cf977
Update PogoType.cs
2020-11-18 21:05:46 -05:00
zzzzRuby
34321ee52c
Add some event flag of gift pokemon for Platinum version ( #3088 )
2020-11-18 08:28:38 -08:00
sora10pls
3b66e2e9b1
Add min. Level requirement for PogoType FieldP
...
Mew, Celebi, Jirachi and Victini (one-time Mythicals) require Lv. 15 with at least 10/10/10 IVs.
2020-11-17 21:56:47 -05:00
Kurt
4a8ad8b149
Expose raw evolution chain methods
2020-11-17 14:23:15 -08:00
Kurt
037db7b8a3
Add xmldoc for new obj/func related to GO legality
2020-11-16 21:17:45 -08:00
Kurt
e6a60ec210
Add single day tolerance to end of appearance period
2020-11-16 15:41:39 -08:00
Kurt
26e0f31c95
Include date legality parameters for LGPE
...
Extract common abstract class for GO transferred encounters
Clamp minlevel instead of met level
Add optional parameter for GO IV randomization
Update go legality binaries with latest
2020-11-16 15:32:22 -08:00
Kurt
770f7584c9
Behavior tweaks
2020-11-16 14:33:21 -08:00
Kurt
f25a7c7cf2
Apply valid ball on create
2020-11-15 20:51:07 -08:00
Kurt
d393773fb0
Update EncounterSlot8GO.cs
2020-11-15 18:32:30 -08:00
Kurt
d7dc69104b
Fix year check
...
still testing
2020-11-15 18:12:58 -08:00
Kurt
0ba2f6a53a
Update EncounterSlot8GO.cs
2020-11-15 17:44:13 -08:00
sora10pls
a4125472f4
Add PogoType for GO Battle League Mythicals
...
Covers Darkrai and any other future Mythical rewards from GBL.
2020-11-15 18:48:33 -05:00
Kurt
b1ae53ec63
Set empty slots if party not full
...
Closes #3086
2020-11-15 14:31:33 -08:00
Kurt
b6da6c1207
Add raticate form list for gen8+
2020-11-15 08:31:58 -08:00
Kurt
760adb4945
Check date legality
2020-11-15 08:31:48 -08:00
sora10pls
d5e1447f7c
Add additional PogoType enums, add min Lv/IVs
2020-11-14 19:36:07 -05:00
Kurt
cb57e807ce
Update EncounterSlot8GO.cs
2020-11-14 15:33:32 -08:00
Kurt
377ec02c9b
Minor clean
...
Remove GoPark as a "Type" since it is now baked into the encounter object type
2020-11-14 12:55:30 -08:00
Kurt
ad9e9ddfa0
Relocate go encounter maintenance outside of pkhex.core
...
PKHeX.Core now accepts generated pkl binaries from PoGoEncounterTool (PGET).
Refer to pporg's repo. This will be treated like event data; occasionally updated.
2020-11-14 12:51:24 -08:00
Kurt
5e22c119be
Continued refinements
2020-11-13 08:20:51 -08:00
Kurt
67a796e982
Update EncountersGO.cs
2020-11-12 22:08:13 -08:00
Kurt
82c016639d
Update EncountersGO.cs
2020-11-12 22:00:09 -08:00
Kurt
f366d27bdb
Revert Mothim form
2020-11-12 22:00:02 -08:00
Kurt
3e4d685d37
Update EncountersGO.cs
2020-11-12 20:50:39 -08:00
Kurt
01c597cba7
GO checks round 2
2020-11-12 20:41:01 -08:00
Kurt
7db746b9d4
Downshift types to remove curse type from g4 personal vals
...
kchart for gen4 games now shows the correct typings
2020-11-12 15:46:12 -08:00
Kurt
98f602fc87
Require tracker for HOME gifts too
2020-11-11 21:27:33 -08:00
Kurt
72e209a156
Split some methods, handle flow for go enc
2020-11-11 21:22:13 -08:00
Kurt
edd9ace51e
More pogo rules
2020-11-11 21:03:47 -08:00
Kurt
df5ebd1f54
Minor clean
...
Resolve some messages
2020-11-11 21:01:41 -08:00
Kurt
915727ed67
Add g-kanto formes
...
Probably will refactor things when shiny/ball legality is detailed
2020-11-11 13:27:08 -08:00
sora10pls
532cee11f7
Update SWSH symbol encounter binaries
...
For context, see 9059ea660d
2020-11-11 08:46:59 -05:00
Kurt
93ff841a1d
Update EncounterMovesetGenerator.cs
2020-11-10 22:17:23 -08:00
Lusamine
86096201e8
Add Route 3 -> Motostoke City crossover ( #3085 )
...
Not related to the location glitch; whistle to lead Zigzagoon.
Co-Authored-By: tehvik <40148574+tehvik@users.noreply.github.com>
2020-11-10 22:11:19 -08:00
Kurt
7654ce2123
Add initial legality checks for GO->HOME transfers
...
took me less than an hour to do these changes, and i can flag bad form movesets no problemo
Expect tightening of restrictions (ball, level, shininess) later
if someone wants to curate met date restrictions, go ahead!
2020-11-10 22:10:53 -08:00
ShadowMario3
7b2f76b621
Fix issue #3083 ( #3084 )
2020-11-07 22:48:46 -08:00
Kurt
cb24c20a44
Remove relearn suggestion logic from relearn move verification
...
Sure it's nice to cache a valid array, but the amount of logic was small enough that it can be done with 10 lines of code rather than at the end of each verification method.
Reduces parameter passing & removes 1 field from the info object, as relearn suggestions are only done rarely after legality checking.
Allows for a simpler api surface (pkm, encounter) rather than a bigger object reference
2020-11-07 12:25:15 -08:00
Kurt
227efc1fc3
Only allow checking if lvl60 when lvl<60
2020-11-05 21:17:13 -08:00