Commit graph

47 commits

Author SHA1 Message Date
Kurt
06cca185e4 Add edge case for pidiv kor g4 pichu
Closes #2144
미케나 pichu 12179/20300
2018-10-19 22:27:18 -05:00
Kurt
f7f5d78beb Misc perf tweaks
hopefully resolves the image corruption issue (dont use unsafe?)
remove some linq
2018-10-13 08:02:55 -07:00
Kurt
1486b7f14a Misc style & minor tweaks
Remove move combobox flicker hack (no longer necessary)
Add more Array.Empty usages
cache mysterygift sizes
seal some classes

no functionality changes
2018-08-02 20:11:42 -07:00
Kurt
0f17445ef4 Update gen3 event pidiv method check for eggs
closes #2057
Thanks @kamronbatman !

(nothing currently implemented uses BACD_U_S)
2018-07-14 20:19:13 -07:00
Kurt
75ff28925c Dummy out pokespot validation
needs more research, nobody cares, just mark as todo and anyone can dig
deeper at any time in the future
Closes #1359
2018-06-05 19:08:31 -07:00
Kurt
99005d8fc0 Refactoring
more discards & simplifications
2018-05-12 12:28:48 -07:00
Kurt
5a3c8f4147 Remove trailing whitespace 2018-05-12 08:41:29 -07:00
Kurt
734edfae20 Remove cutecharm swarm restriction
only affects species (can't force gender on a fixed gender swarm slot)
https://github.com/kwsch/PKHeX/pull/1314

https://projectpokemon.org/home/forums/topic/45153-bug-cute-charm-swarming-illegal/

Add swarm cutecharm test cases from thread, thanks @PP-theSLAYER !
2018-05-07 16:14:31 -07:00
Kurt
daf093879b More generator updates
all the way up to nidorina

extract some reusable methods
exclude invalid headbutt encounters
use built in randomgender
2018-04-29 18:26:36 -07:00
Kurt
e9a3b4acf1 Merge PIDType and bool? shiny property
Gen5 does not follow the same convention, 0 = non, 1 = rnd, 2 = always;
not gonna bother updating for just that one

bool? occupies 2 bytes; enum:byte is 1 byte.

should probably move validity checking logic into the IEncounterable
objects instead...
2018-03-16 19:35:55 -07:00
Kurt
b69a6df6e7 Add roamer glitch IV collision detection
M1 is checked before M1R. A M1R PIDIV can also be a M1 PIDIV, so check
that collision.

https://projectpokemon.org/home/forums/topic/43567-gen-3-suicune-unaffected-by-roamers-glitch/
2018-01-24 19:07:03 -08:00
Kurt
a5dbdf91bd Misc tweaks
detect antishiny cxd
remove unused using
don't set caught for seenAll (gen7 dex)
2017-12-04 13:18:28 -08:00
Kurt
f7e20a3c43 Misc tweaks
fix roamer3 not setting IVs
fix usum z items rightmost pixel getting chopped off
use Gen* instead of GenNumber for specific cases (faster)
add WasGiftEgg location case for Gen7
remove some unnecessary array allocations
2017-11-17 22:19:23 -08:00
Kurt
495eb26740 Rework colo starter PIDIV detection
force colo starters to be male only
use some c# lang features for EncounterType flags

add edge case PIDIV detection for starter gender/shiny lock scenario

adds a little documentation for those unfamiliar with the NPC PKM
generation quirks.

Colosseum Starters will now be recognized with a different PIDIV type
which is specific to them & them only.
2017-11-01 21:12:44 -07:00
Kurt
0120263bd3 Cute Charm gender ratio changing edge case
Thanks @Admiral-Fish !
2017-10-12 23:18:43 -07:00
Kurt
b23658dee1 Misc tweaks
allow cute charm static encounters
ignore user-entry control types
2017-10-01 21:25:23 -07:00
Kurt
ad69420ad9 Update gen5 shiny PID generating
Closes #1460
https://pastebin.com/GgcMjmwd
2017-09-17 14:43:28 -07:00
Kurt
c55b3df939 Add nyx antishiny pidiv detection
( ͡° ͜ʖ ͡°)
2017-09-12 00:27:16 -07:00
Kurt
d5e5a463dc Refactor order of pidiv checks
collision between mgshiny and cutecharm shinies
Closes #1435
2017-08-29 08:32:22 -07:00
Kurt
a314ebfbd3 Add pokewalker early return check
check the middle bits for signs of pokewalker origins
can either be regular or adjusted underflow style

saves a little bit of computation time by not computing compatibility
for obvious non-matches
2017-08-28 23:40:04 -07:00
Kurt
b078064e08 Improve xdrng seed search speed
refer to stackexchange links, makes XDRNG PID/IV search so quick (2^3
instead of 2^8 or 2^16; as fast as a gen3 shiny pokemon (2^13=8192 times
as fast as last release)

throw in some auto-inlining to eliminate some overhead in repetitive
search calls
2017-08-05 01:51:29 -07:00
Kurt
3621105e85 Change spiky pichu to pokewalker pid method
#1381
now that pokewalker pid method is finished, pichu is noted to be
generated with it.
2017-08-04 09:21:38 -07:00
Kurt
fe06309134 Add IV framegap search
Only usable for searching Method 4 IV spreads -> seeds;
1,3's search uses the same approach as the 1,2 search
I took the 1,2 search derivation to iterate for the next step, which
allows us to not know anything about the middle rand bits.

optimize a little bit more, move the pre-loop add to the initialization
stage; moving to the precomputed section pays off after 256 calls to the
method
2017-08-03 21:35:41 -07:00
Kurt
3123f0df2f Drastically speed up rand() pairs -> seed search
Meet in the middle attack trades some RAM (2^16 flag/byte array) to
reduce future searches by a factor of 1:2^8

profiling yielded >100x speed improvements, even a 2x would have been
impressive ;)
knocks the biggest cpu hog (when searching db) out of the race!
2017-08-03 00:59:39 -07:00
Kurt
4945744599 Update Pokewalker PID checks
wildeep to the rescue 7y ago

http://www.smogon.com/forums/threads/past-gen-rng-research.61090/page-12#post-2661504

test cases need gender specified as gender is stored in a field (not
directly grabbed from PID)

addresses pokewalker pkms provided in #1377, RoC's PC has a bunch of
hacks ;)
2017-08-01 23:48:35 -07:00
Kurt
68aa9aeec9 Relocate encounter data loading to separate files
shifts encounter data from Legal's split tables to individual files for
easier maintenance and initialization. Legal Core's init is so much
simpler now.

fix resource name typo
2017-07-25 00:28:43 -07:00
Kurt
c61c572f35 update channel generation
Thanks @admiral-fish !
2017-07-15 19:59:38 -07:00
Kurt
2a2f5669e4 Add wc3->pk3 conversion
fixes 10ANIV pikachu having Thunderbolt twice
un-duplicates CHANNEL event data
adds seed->PIDIV generator template for M1/2/4, CXD, Channel, and BACD

improve pkm converter to update nickname of hatched eggs. isn't perfect
(farfetch'd) but works better than before
2017-07-15 18:36:55 -07:00
javierhimura
8219bb6716 Fix ChainShiny method, allow outside safari zones instead inside 2017-07-07 14:00:06 +02:00
javierhimura
7b1812f184 Added check for pokeradar shiny grass patch
Not allow cutecharm pid iv method for swarm pokemon
Fix loading time encounter for generation 2 and mark crystal location slots in any gen 2 tables
Typos in tree areas comments
2017-07-07 13:53:21 +02:00
Kurt
e6d9f49fce Handle e-reader PIDIV type
no pidiv type since IVs are frozen at 0
2017-07-05 23:38:28 -07:00
Kurt
2ef5b81b15 Add gen4 cutecharm for valid gen4 wild pidivs
encounter is screened for charm validity prior to this type check, so no
further checks are required
2017-07-05 18:40:47 -07:00
Kurt
0c23881f65 Add manaphy egg PIDIV check
slightly different from hatched in that it can't be shiny as an egg as
the ID/SID doesn't change until hatched.

move Ranger check to utility
2017-07-05 17:47:48 -07:00
Kurt
b760509fcb Misc gen3 event updates
Add special ribbon detection (for wc3),
speed up seeds from IVs calc (flip top bit of seed to get the result for
other iteration)
Add a bunch of gen3 event data
2017-07-01 16:50:45 -07:00
Kurt
1c4a1af633 Misc updates
Detect channel, only detect Channel PIDIV for RS origin (only really
care about method1/2/4 being used when it shouldn't)
Channel does this weird thing called not setting the met level.

Refactor set suggested met location to a method that can suppress
popups.
2017-06-29 19:32:29 -07:00
Kurt
ac16492daa update abilityflip g5mgshiny checks
Closes #1269
Also adds pokewalker PID check (don't think it works correctly but close
enough for now)
2017-06-24 17:24:36 -07:00
Kurt
3f38b123a3 Refactoring
mostly renaming things, includes a little bit of added sugar and
splitting methods to simplify the codebase.

all methods are now PascalCase
2017-06-17 18:37:19 -07:00
Kurt
9e3ee6eacb Update gen4 gift PIDIV checks
fix method1 PIDIV creation, check for antishiny manaphy gift
2017-06-15 18:34:03 -07:00
Kurt
6ca2cb16dc Skip spiky eared pichu pidiv verification
Closes #1199
2017-06-09 21:30:17 -07:00
Kurt
14225bbc2e misc fixes
encounterinvalid isegg no longer throws exceptions when parsing moves
dropping invalid file paths to main window are now ignored (downloads
from chrome can be manually deleted but still dragged from the downloads
bar)
add pidiv case for manaphy gift
2017-06-04 00:12:37 -07:00
Kurt
7c4092e1c5 Misc updates
More elegant handling for PKM without nicknames that have another
language species name; use that language ID instead of the pkm's
language ID. Since ToLower is not called, Ho-Oh from 3/4->6 now
transfers correctly.

fix gen3 encounterstatic eggs while still on gen3 games; only check the
egg location if still an egg

tighten up gen3 PIDIV compatibility checks, roamer glitch is fixed on
Emerald, and static encounters can't get method 2, and can only have
method 4 if under software emulation (RS Box) since the emu speed is
faaaaast 🚤 /s
2017-06-03 17:49:37 -07:00
Kurt
a959e31063 Fix roamer PIDIV method detection
http://bulbapedia.bulbagarden.net/wiki/List_of_glitches_in_Generation_III#Roaming_Pok.C3.A9mon_IV_bug
only 8 bits are transferred, not the top 2 IVs (10bits). Add appropriate
constraints
2017-06-03 15:43:41 -07:00
Kurt
4201e10a0e Misc cleanup
Add PCD fixed PID check
improve PID matching for CXD pkm
hide no-pidiv match seed (00000000)
fix matching fateful for wild pokespot pkm
don't generate eggs for c/xd
2017-06-03 15:16:27 -07:00
Kurt
5823425f42 Add PIDIV checking for encounters
Fixes HGSS egg moves, and improves encounter detail detection.
example: togepi from FRLG transferred up, old detection couldn't
differentiate the gift egg from a regular egg; however, PIDIVs can lend
a hand -- eggs don't have a PIDIV!

fixed shiny BACD spread detection (in regards to antishiny rerolls).
Shiny WISHMKR now detected correctly.
2017-06-03 00:12:05 -07:00
Kurt
db2d043199 unroll cxd seed completely
re-letter for clearer order of RNG results, don't unroll 3x to roll
forward 2x (just unroll 1,1 then 1).

Put origin seed in RNG Reporter => frame 1 result
Closes #1169
2017-05-27 22:18:04 -07:00
Kurt
9380ca25d9 Update current RNG frame detection methods
Still not hooked in or handling every case, but is enough progress for
now.
2017-05-14 12:42:27 -07:00
Evan Dixon
52c4fbbe97 Converted PKHeX.Core to .Net Standard
Refactored and rearranged things as needed to allow the change
2017-05-11 23:34:18 -05:00
Renamed from PKHeX/Legality/RNG/MethodFinder.cs (Browse further)