11407 Commits

Author SHA1 Message Date
Kurt
90b265a8f3 Add hover tooltip for Met Location ID peek 2026-08-16 16:49:33 -05:00
Kurt
c0b78e6b6a Batch Editor: undo, enhancements
if you close the form after running a batch edit, it allows you to undo
if you want to undo while the form is still up, you can reset back to the initial state
buttons only enable when sufficient progress/available slots (so it doesn't run on 0/0)
shows a live-updating count of how many pkm slots will be edited by your currently entered command
2026-08-16 02:30:29 -05:00
Kurt
2d970dde75 SaveFinder: better timeout handling
Pass CancellationToken thru and better scan drive types to see if we bother trying to access them.
Network drives and CD drives are now disallowed, which should lessen the amount of hang-hiccups on startup for some users' hardware setup.
2026-08-13 23:02:48 -05:00
sora10pls
027f2450c6 Add latest distribution raid/outbreak data 🐵💢 2026-08-13 20:07:30 -04:00
Kurt
146172f618 Minor clean
parenthesis, trailing spaces, other info-warning clean fixes
2026-08-12 22:37:31 -05:00
Kurt
c46596c09e PBR: retain party stats, recognize party size
ty Pocket Monsters on pporg:
https://projectpokemon.org/home/forums/topic/68143-bug-in-dump-box-in-pok%C3%A9mon-battle-revolution-saves/
2026-08-12 21:37:52 -05:00
Kurt
8ea0ee00ef hatch4: permit rotom's room in hg/ss
thanks Erikz12
https://projectpokemon.org/home/forums/topic/68142-hgss-invalid-cant-hatch-egg-at-met-location-rotoms-room/
2026-08-12 14:21:36 -05:00
Kurt
6169d60cfd Fix berryfix zigzagoon min seed to allow 0,1,2
timestamp sum is across hh:mm:ss, no date component.
unify xmldoc/comment references to prevent any future confusion

https://projectpokemon.org/home/forums/topic/39517-gen-3-event-generation-algorithm-research-10anniv-etc/page/16/#findComment-222113

ty Shiny Mew Trader (discord) for bringing this to my attention :)
2026-08-10 00:05:46 -05:00
Kurt
368954c7b0 Misc tweaks
no functional change
2026-08-07 12:11:25 -05:00
Kurt
0f59fd4c5a Check Egg Move combinations for valid parent chain (#4847)
* Recursive egg chain solver

Supercedes #4444
- Handles Volbeat/NidoranM specific inheritance cases
- Handles Smoochum(female-only) male father search cases
- Allocation free, result struct

Closes #4426

Removed unreachable eggmoves from gs:
no Charm for Bulbasaur
no Charm for Oddish
no Charm for Snorlax
no AuroraBeam for Staryu
no Barrier for Staryu
no Supersonic for Staryu
no LovelyKiss for Smoochum

pass a ref struct storing the result, which updates with transactions to log the verification state during the recursion.

* Print traced chain in verbose report
2026-08-07 11:34:08 -05:00
Ka-n00b
5747342f19 Update translations (#4850)
* Update flags_dp_es-419.txt

* Update flags_dp_es.txt

* Update flags_pt_es-419.txt

* Update flags_pt_es.txt

* Update flags_pt_en.txt

* Update flags_dp_en.txt

* Update flags_dp_fr.txt

* Update flags_pt_fr.txt

* Update flags_pt_ja.txt

* Update flags_dp_ja.txt

* Update flags_dp_ko.txt

* Update flags_pt_ko.txt

* Update flags_pt_zh-Hans.txt

* Update flags_dp_zh-Hans.txt

* Update flags_pt_zh-Hant.txt

* Update flags_dp_zh-Hant.txt

* Update lang_fr.txt

* Update lang_it.txt

* Update lang_es-419.txt

* Update lang_es.txt

* Update flags_pt_zh-Hant.txt

* Update lang_es-419.txt

* Update lang_es.txt

* Update lang_fr.txt

* Update lang_es.txt

* Update lang_es-419.txt

* Update flags_rs_en.txt

* Update flags_rs_es-419.txt

* Update flags_rs_es.txt

* Update flags_rs_fr.txt

* Update flags_rs_ja.txt

* Update flags_rs_zh-Hans.txt

* Update flags_rs_zh-Hant.txt

* Update flags_e_en.txt

* Update flags_e_es-419.txt

* Update flags_e_es.txt

* Update flags_e_fr.txt

* Update flags_e_ja.txt

* Update flags_rs_zh-Hans.txt

* Update flags_e_zh-Hans.txt

* Update flags_e_zh-Hant.txt

* Update text_rsefrlg_00000_zh-Hant.txt

* Update text_xy_00000_zh-Hant.txt

* Update flags_rs_zh-Hant.txt

* Update flags_e_zh-Hant.txt

* Update text_xy_00000_zh-Hant.txt

* Update flags_oras_zh-Hant.txt

* Update flags_e_zh-Hans.txt

* Update flags_rs_zh-Hans.txt

* Update text_xy_00000_zh-Hant.txt

* Update flags_oras_zh-Hant.txt

* Update lang_es-419.txt

* Update lang_es.txt

* Update lang_es-419.txt

* Update lang_es.txt

* Update flags_dp_es.txt

* Update flags_dp_es-419.txt

* Update flags_pt_es.txt

* Update flags_pt_es-419.txt

* Update lang_fr.txt

* Update lang_fr.txt

* Update lang_it.txt

* Update lang_fr.txt

* Update lang_fr.txt
2026-08-06 22:21:24 -05:00
ScarlettHaze
361f272fef Exclude same gender rival in PokeGear callers for HGSS (#4848)
Added functionality to exclude the opposite-gender rival (self) from PokeGear callers.

* Remove Bike Shop from Pokegear callers list: It's not legally obtainable you only get called once you've used the Bike enough you never get to save it.

* Exclude bike shop in caller list logic

Updated logic to exclude both the rival and bike shop from the caller list.
2026-08-06 22:20:26 -05:00
sora10pls
9be23f2043 Add latest distribution raid/outbreak data 💐 2026-08-06 20:10:37 -04:00
Kurt
18cc30d641 BDSP: move voiceless to PersonalInfo
Better there and now public for anyone to use (why would they want to check that lol)

make the Battle Frontier hashset a ReadOnlySpan;
- since the list is sorted, use BinarySearch to reduce worst case from 43 ops to 6.
- no static ctor in RibbonRules (yay no nanosecond hiccup)

that was the last static HashSet in the repo 👀
2026-08-03 17:22:23 -05:00
Kurt
76307aaa4b BDSP: Condense voiceless array
saves 0.4KB lol
no functional change

update terminology; might not be explicitly "footprint" type, more "footprint man's evaluated type"
https://bulbapedia.bulbagarden.net/wiki/Footprint#Footprint_Ribbon
2026-08-03 17:06:12 -05:00
Kurt
31b4e0a6d8 Join Avenue: fix r/w of shop type
It's stored as a 3-variable value. Decompose & recompose in the GUI.

Closes #4841 -- Raffle is values 1-10, which explains the observed behavior in the issue.
The old GUI would set [-1, 7], if modified to any selected Shop type, results in all being Raffle (incorrect behavior).

By unpacking to separate variables, the 1-321 combinations are user adjustable rather than just showing the raw value for edits. Sure the Version could be localized, and Shop Rank could be [1,10] instead of [0,9]...

ref: https://bulbapedia.bulbagarden.net/wiki/Join_Avenue#Shop_rank
2026-08-03 15:06:51 -05:00
Kurt
09977b448f SAV: update record fallback - use correct global
#4845
2026-08-03 10:39:03 -05:00
Kurt
1f6c3f3fc1 Add .Ball=$rand in batch editor 2026-08-01 17:48:30 -05:00
Kurt
2e64de8e9d ComboBox suggest: Remove dropdown on keydown
Windows.Forms quirk where it don't hide the dropdown when it tries to Suggest via the separate Suggest pop-down.
Since all comboboxes that do the databind+suggest are impacted by this, just add the event when initializing binding. There don't appear to be any reapply-binding cases where it is set to suggest (only case is Battle Revolution save select, which isn't textual entry).

Closes #4846
2026-08-01 10:05:04 -05:00
Kurt
2f9d50308b Revise savefile subversion indication in title
Ensure all have dashes at front
for multiple strings, separate out the GB/VC to a separate tag.

No longer does the program show `SAV3FRLGUGBA` instead of `SAV3FRLG-U [GBA]`, which is a little more transparent to the end user.
2026-07-31 16:50:20 -05:00
Ka-n00b
7890222343 Minor GUI translation updates (#4839) 2026-07-30 00:04:36 -05:00
Kurt
d457fb02ae Update xoro128 solver, channel IV solver
I accidentally reverted my intermediate value sum for the channel solver after I discovered the counterexample -- now with the refinements as detailed in the issue, we can proceed with many `long` => `uint`

The xoroshiro128+ solvers aren't really set up to take advantage of the eager returns; the iterator struct (not class) would have to be made heavier to store the intermediate values for a given `assume`. Probably would have to inline the methods and break out their inner Update steps. Probably not worth the hassle :)

Closes #4844

Co-Authored-By: StarfBerry <65578604+StarfBerry@users.noreply.github.com>
2026-07-29 23:35:02 -05:00
Kurt
ce08c00877 More refinements/impl of lattice reversals
#4844
not yet implemented: xoroshiro algorithmic improvements

overflow counterexample for channel IV reversal regarding s32 vs s64 noted in the github issue

Co-Authored-By: StarfBerry <65578604+StarfBerry@users.noreply.github.com>
2026-07-28 23:48:39 -05:00
Kurt
757a297f14 encdb->pa8: source shiny roll count from save file 2026-07-28 21:54:00 -05:00
abcboy101
b916b06c03 PBR: Fix SetStringUnicodeBR maxLength (#4843)
maxLength is the maximum length in terms of characters, not bytes
2026-07-27 11:14:13 -05:00
Kurt
9ccc5fdc45 Gen4: Remove placeholder area data for bcc/safari
Game has a Ratatta table for the Safari zone that it replaces with the Safari slots.
HG/SS (separately) have Caterpie and Weedle for the National Park fake area when a BCC is active.
Updated pkl includes "correct" safari zone wild encounter rate rather than an encoded "which safari sub-zone" index.
e789757783
2026-07-26 21:47:11 -05:00
Kurt
5cceba5867 Gen4: misc encounter generating fixes
Pt Eggs: use correct learnset table (eevee has swapped moves in dp)
Extract force-hatch routine so that Gen4 eggs can generate as eggs
2026-07-26 21:45:35 -05:00
Kurt
b483ad47f8 gen4 hgss ball: handle traded eggs
turns out pk4 egg => hatch routine recreates the mon, copying only properties they figured were worth copying. guess it's a good way to sanitize out eggs.
since version doesn't update on hatch, we need to be flexible based on detecting which game it actually hatched on (thus, the game it truly was last "created" on.
https://github.com/kwsch/PKHeX/discussions/4842
2026-07-24 22:22:51 -05:00
Kurt
5c9e949c9f hgss: Trim out unused fishing swarm species
cb5a58084a
2026-07-21 21:28:24 -05:00
Kurt
6f717f2359 Add Ranch IV reversal, improved lattice recovery
Introduces the MRNG algorithm and MRNGReversal to model My Pokemon Ranch IV generation, then wires it into Gen4 Ranch gift creation and IV legality checks with a new PIDType.Ranch classification.
Updates the seed-reversal logic in the LCRNG-based recovery methods with more performant lattice-bound implementations and early returns.
Adds more unit tests for Ranch & Channel reversals and expected recovered seed counts/hit-ability.

Refer to the linked LCG_Recovery.py for more details.
https://github.com/StarfBerry/PokeRNG/blob/main/Recovery/LCG_Recovery.py
(big thanks to StarfBerry for the math & documentation; this is merely a port of their work).

From Admiral-Fish's testing for PokeFinder, "shows 17-25% faster. Channel is 12k times faster"
d4512de8dc

Co-Authored-By: StarfBerry <65578604+starfberry@users.noreply.github.com>
2026-07-19 12:49:12 -05:00
Kurt
766b620f65 Minor tweaks
No functional change
2026-07-19 12:12:53 -05:00
Kurt
f901e9753f Update SAVEditor.Designer.cs
increase sav editor button height so 2 rows of text can render if needed
2026-07-19 11:15:51 -05:00
Kurt
c485122ab1 pk5 unit test: fix language on eeveelution
forgot to check unit tests after the recent PGF language/version restrict was added lol
2026-07-19 00:41:09 -05:00
Kurt
773a97c4fd Misc tweaks
Fix outbreak met location suggestion for bit0 set and none in second set
Narrow some api methods, rename some parameters for better clarity
2026-07-18 23:35:49 -05:00
sora10pls
4f7777f1e1 Fix inverted check 2026-07-17 07:25:17 -04:00
sora10pls
24c9e3c31f Add latest distribution raid/outbreak data 🌴🌊 2026-07-16 20:10:51 -04:00
Kurt
9ac42ff269 Gen5: add pgf restrictions scraped from card name
Closes #4837

refer pkl generation code that appends the scraped restriction info to the end of the concatenated bin:
1ae1742acd

other adjustments:
- remove Nature set on pgf->pk5 ctor, already set later in SetPINGA
- ensure sane language/version on ctor, distrust OT if language incompatible (not perfect but better)
2026-07-15 23:00:50 -05:00
Kurt
68b8b8b060 RK4: split handler char count from OT
Needed because RK4 reserves 10char for the handler.
2026-07-15 22:23:01 -05:00
Kurt
a262ea9f3d Relax sanity flagging
Battle Revolution uses more of the sanity flags (probably as quarantine) and the checksum algorithm probably isn't updated/stale. Just ignore it for now.
2026-07-15 08:53:09 -05:00
Kurt
572b4e26fd Entree5: add language restrictions for pgl promos
Fixes #4836 wrt language mismatch
2026-07-14 22:40:08 -05:00
Kurt
1db56ce169 Entree5: Fix early return
Fixes #4836 wrt gender mismatch
2026-07-14 22:39:52 -05:00
Kurt
9a0fdcdcf4 Misc tweaks
No functional change
2026-07-13 22:36:00 -05:00
Kurt
f1ebf585d4 Revert furfrou forms in gen6/7 egg gen
https://projectpokemon.org/home/forums/topic/68093-furfrou-trims-incorrectly-invalidate-relearn-moves-for-legitimate-bred-pok%C3%A9mon-with-egg-moves-gen-7/#comment-300902
2026-07-13 22:33:59 -05:00
Lusamine
add0b51bfa Add all known LZA crossovers 2026-07-13 00:13:15 -05:00
Kurt
6501f0ab46 Update EncounterUtil.cs 2026-07-08 10:08:24 -05:00
Kurt
fcfb50269a Update 26.07.07 26.07.07 2026-07-07 22:07:17 -05:00
Kurt
3c484b5040 RSE: prefer swarm match
special moves and hard to verify vblanks, just prefer the special move source first. I guess it's also the more statistically likely (players using swarms to catch the species that are much less common otherwise?)
2026-07-06 22:53:40 -05:00
Kurt
8c15ee4617 Minor tweaks
Tab indexing in save force loader, some anchoring/visibility preference
Hide SID on Trainer control update when in gen1/2 (refactor miss)
2026-07-06 03:25:36 -05:00
Alex
4965d96ddc Localize additional settings PropertyGrid editors (#4833)
* Localize additional settings PropertyGrid editors

* Handle [Flags] enum with multiple flagged values

* Regenerate translation file

Can be done by pressing CTRL-ALT-D on the Main form when running a debug build of the program.

Also includes new translations for Champions SP stat export for battle templates from an unrelated commit.
2026-07-04 17:06:38 -05:00
Kurt
e579fee9f3 Settings: Switch tabcontrol to ListBox
Little less goofy.
2026-07-03 23:16:46 -05:00