Commit graph

830 commits

Author SHA1 Message Date
Kurt
0e6db90de2 more minor tweaks
add 2 overloads for encounter generator
more simplifications
2018-05-12 18:11:47 -07:00
Kurt
99005d8fc0 Refactoring
more discards & simplifications
2018-05-12 12:28:48 -07:00
Kurt
e2f11edc43 Refactoring
discards, Array.Find over FirstOrDefault
2018-05-12 08:41:29 -07:00
Kurt
5a3c8f4147 Remove trailing whitespace 2018-05-12 08:41:29 -07:00
wwwwwwzx
997d41b6db Fix minlevel of Pangoro/Tyrantrum/Aurorus in gen6 (#1938)
* Fix minlevel of Pangoro/Tyrantrum/Aurorus in gen6

30: level + dark type in the party
32: level + day
33: level + night
34: level + female
Note Meowstic isn't affected due to another entry of level + male (23)

* Minor text usage fix

* Fix xorPID flipping in TransferEC check
2018-05-12 06:57:11 -07:00
Kurt
c2644cc9f0 Flag gendered pkm without gender
for lack of a better message
#1936

add some docs & trycatch bad wavs
2018-05-11 21:05:15 -07:00
Kurt
9fb7056837 Add test living dex generator
doesn't generate everything due to the evo chain not being 'full'
(instead is unevolved singular pkm), nor does it evolve pkm
2018-05-09 21:02:35 -07:00
Kurt
79b2576c31 add overloads for GetPossible
Remove edge case handling for level 2 blissey; updates over the past 2
(yay 2 years of legality checking) can now handle that case without
special handling.
2018-05-09 20:37:11 -07:00
Kurt
9f8e86b2b5 Finish rough generator
* handle gen6+ egg case where egg move count < 4 (cannot displace
Levelup lvl1 moves)
* handle minior altform case

generates all species/encounters possible, yielding 144,094 pkm files
(all detected as legal!)
2018-05-09 19:21:44 -07:00
Kurt
16ed4353b2 More generator updates
Store 4g giratina held item for enc->pkm legality
revise usages of GetSaneGender
Rearrange some logic
Better handle impossible version encounters (gen4)

gen 1-5 done, stuck on 659 - bunnelby egg...?
2018-05-09 17:50:56 -07:00
Kurt
4913ef9647 More generator updates
* B2 has an error in the encounter table for Route 3 Corphish Special
water encounter; GF edited from Basculin-1 to Corphish-1 and forgot to
update the form to 0.
* Ranch Trade egg locations
* Trade gender-PID set correctly
* static roamer glitch does not apply for emerald
* Mirage Island wild Wynaut case now allowed (collision with Gift Wynaut
egg hatched on Mirage Island?)

gen1-3 done; now at 413 (Wormadam) which currently yields an
EncounterEgg AS wormadam, which isn't right...
2018-05-08 21:17:31 -07:00
Kurt
c21f8bf45f More generator updates
Blazing past 251, now stopped at 280 (trade ralts, gender mismatch??)
2018-05-08 20:13:55 -07:00
Kurt
4d60a5a64e More generator updates
* first case of EncounterLink, now works (version, ability, OT memory)
* handle gen2 gb events (not even sure if they pop up, just in case)
* handle gen3 ereader shadow mons
* handle gen4 spiky pichu PID type
* handle gen2 crystal egg met level
2018-05-07 22:53:36 -07:00
Kurt
8902e9662c Add exclusive encounter handling
Handle Faraway Island Mew, handle DP Darkrai/Shaymin & Arceus, handle
not-distributed WC3s.

Now stopping at dex 154 -- one full generation of PKM species IDs can be
completely spawned directly from IEncounterable data!
2018-05-07 22:12:12 -07:00
Kurt
3c31d5798f Continued pkmgen updates
* adds g4 forced shiny seed->pid (Chain Shiny Lake of Rage Gyarados)
* adds cxd starter pid generating handling
* adds g5 forced shiny seed->pid (MG5Shiny Shiny gift Dratini)
* excludes gen4 route45 surf impossible encounters
* actually use ingame trade edge case handler

Up to dragonair (147) yay; yellow dragonair is likely the catch rate
edge case.
2018-05-07 21:16:54 -07:00
Kurt
86bf4201e2 Remove encounterstatic-encounterslot collision case
Exeggutor Island has wild & one static with a fixed ability; the fixed
ability is returned first which causes wild lv40 exeggutors with
ability2 (1/2/H) to be flagged as illegal.
2018-05-07 21:12:42 -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
ea2c6260fa Prevent providing beta safari zone encounters
Fixes Krabby / etc.
Fix genderless encounterstatic gender set (Voltorb)

Now at 103, Exeggutor
pretty cool that over 100 species can have every single encounter
generate a legal pkm ;)
might be useful to add metrics to count how many encounters are
generated in a session
2018-04-29 21:56:12 -07:00
Kurt
ab71ea2d8b More generator updates
Graveler (SM Trade) -> Force applying handling trainer details for
ingame trades
Ponyta (Ranch Trade) Apply correct ability for encountertradePID

Up to 98 : Wild Gen2 Krabby (safari zone impossible location needs to
get filtered from possible encounters)
2018-04-29 21:29:34 -07:00
Kurt
997ca29fe6 More generator updates
Checks.cs : fix duplicate analysis result (encountertrade machoke is
legal & illegal), nope, legal.
Core.cs : Add version bypass if none assigned.
EncounterSlot.cs: Handle yellow kadabra
EncounterTrade: Handle must-evolves.

now at 75: graveler (SM trade)
2018-04-29 21:08:49 -07:00
Kurt
1c3a330ab2 Remove clefable from non-obtainable encounters
Can be obtained via game corner
update possible games of origin
clear wasegg flag for next iteration

now at species 64: Kadabra.
2018-04-29 20:04:13 -07:00
Kurt
50d390bd4e Fix gen1 trade version overwrite
only noticable when generating from

up to dex 35, clefairy now. I expect things to ramp up soon...
2018-04-29 19:03:55 -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
b1549837b1 Update gen2 ingame-trade met location handling 2018-04-29 11:46:49 -07:00
Kurt
b353701d3e More generator updates
adds pokewalker handling

now stuck on GSC Trade Spearow (likely not setting OT details as needed)
2018-04-29 11:33:35 -07:00
Kurt
4214b1be7b More generator fixes/improvements
Fix/add missing gameversion references (BU instead of BW,
pokewalker=HGSS)
increase reuse of pidgenerator & add more generating methods.

seems like it's generating pkm fine besides the PID edge cases, which is
nice
2018-04-29 09:31:13 -07:00
Kurt
08603c5664 Fix xd miror b encounters not receiving versionID
version was set to Encounter_XD, which did not contain the miror b
encounters.

simplify XD check to be O(1) now that version is stored in the encounter
obj
2018-04-29 08:31:57 -07:00
Kurt
120f5380c9 Rework some more pkm generating logic
can get all the way to caterpie
- gen3/4 needs an antishiny,
- gen5 needs shiny&antishiny mech
- else case needs both as well.
2018-04-28 22:56:10 -07:00
Kurt
70992138e2 Misc encounter->pkm generating fixes
eggs for Gen1 must be generated in Gen2
gen1 wild encounter initial moves
gen4 abilities have 0 for single ability mons
2018-04-28 16:30:56 -07:00
Kurt
55f0143400 Handle generating gb2 events & eggs
restrict the simple encounter provider to not spit out cart era only
gifts.
2018-04-28 15:59:33 -07:00
Kurt
b2c54b7a43 Apply trade memory when changing handlers for pk6 2018-04-28 15:58:53 -07:00
Kurt
ea357cd57a Add GetRandomFeeling
fixes tests & transfers where an explicit range is not legal
2018-04-28 12:59:11 -07:00
Kurt
71faaee31c Refactor savefile tid/sid to int
can now use TrainerID editor control on a savefile... soon?
2018-04-28 11:06:58 -07:00
wwwwwwzx
fc72323c2e Add general memory intensity/feeling check (#1916)
* Add general memory intensity/feeling check

Memory setting subroutines: Y: sub_43C1E4 AS: sub_469A94
Memory table RAM address: Y:0x54A4F0 AS: 0x58A134
https://pastebin.com/h1RHL7nR

* Check if egg's OT memory is blank

All empty memory should be checked before common check.
Don't allow eggs to fall through.
2018-04-28 06:26:04 -07:00
Kurt
af8084fd34 Rework cosplay pikachu static encounter population
Now IV3, thanks @wwwwwwzx for finding the hard-coded case (Lati@s is
already IV3).

https://projectpokemon.org/home/forums/topic/45011-illegal-cosplay-pikachu/?tab=comments#comment-230318

remove SkipFormCheck, and just have all 6 populated (so that Form0
pikachu doesn't slip through).
2018-04-27 21:53:00 -07:00
Kurt
3f6b1acc93 Add fixed gender checks for non-GBA/NDS games
Closes #1912 , genderless ~= fixed gender I guess; shouldn't get these
gender-errors unless it's manually tampered data/ShowdownSet

remove unnecessary code in:
* PKMEditor (>=255 is already covered by == 255 and the fact that gt is
always <= 255)
* VerifyGender (3 <= x <= 5) check is already early-returned via
PIDGender check above

Update IsGenderValid knowing that VC mons have a gennumber <= 2
2018-04-23 19:58:29 -07:00
Kurt
1b4ec11335 Add rebattleable Miror B locations to xd shadows
https://projectpokemon.org/home/forums/topic/44957-bug-pokemon-xd-post-game-shadows-flagged-illegal/

if shadow lock sets are ever implemented, would need to update this as
well to 'clone' with the different shadow teams available.
2018-04-23 17:14:52 -07:00
Kurt
0b62ab85a1 Nature -> byte instead of int 2018-04-21 09:18:53 -07:00
Kurt
159928b09b Remove soaring as valid egg hatch loc
hatch ctr doesn't update (steps don't count while soaring)

https://projectpokemon.org/home/forums/topic/44854-is-it-possible-to-hatch-an-egg-while-soaring-in-the-sky/?tab=comments#comment-229931

could probably rename the hashset to indicate that it's only used for
egg hatch locations...
2018-04-18 16:01:12 -07:00
Kurt
c3494c61c1 Fix encountertime comparison for surf mons
surf does not have another slot set; so they were all being set to
Morning.
Could have set all 3 time flags, but kept as 'any'.

will update release binaries with this one
2018-04-18 15:58:21 -07:00
Kurt
353978df59 Add fixed ability pcd valid bypass
https://projectpokemon.org/home/forums/topic/44834-bugabout-event-evolution/
2018-04-17 20:48:14 -07:00
Kurt
a48c70ccf2 Add evolution minbound check
https://projectpokemon.org/home/forums/topic/44834-bugabout-event-evolution/?do=findComment&comment=229887

(espeon at level 50 originating from a level 50 eevee gift is not valid)
2018-04-17 20:06:23 -07:00
Kurt
fef1d6e0dd de-linq some evolution dexlevel fetch
use shared IList interface instead of IEnumerable
2018-04-17 19:56:43 -07:00
Kurt
a34be35d9f Add commit contents for previous commit
removal of some linq, reorders as described by previous commit
2018-04-17 19:50:25 -07:00
Kurt
8250bc58cd Fix levelup->evo fetching of next levelup move
Correctly fixes #1163 (test cases added), eg wooper->quagsire would
learn yawn at 31 before evolving; the getmoves wouldn't provide yawn
(stopped at 30) with the old code; the lvl decrement was removed in the
incorrect commit, providing a legal verdict which was obtained
incorrectly (dexlevels were inaccurate)
2018-04-17 19:49:33 -07:00
Kurt
f767b2db0f Differentiate WasEgg (any egg location) from bred
https://projectpokemon.org/home/forums/topic/44838-buggen5-egg/

WasEgg is used for other encounter based checks, so can't reduce the
logic usage
2018-04-17 18:54:38 -07:00
Kurt
86333c6db6 Flag VC transfer affection
contest check only applies for 3->7 not 1/2->7

https://projectpokemon.org/home/forums/topic/44674-bug-about-contests-ribbon/?do=findComment&comment=229785

Thanks Davil!
2018-04-14 21:36:11 -07:00
Kurt
6db0b673db Handle ??? type gen4 arceus form check
interstitial between steel & fire, shift the form value up by 1 if
applicable

https://projectpokemon.org/home/forums/topic/44806-arceus-not-legal/?tab=comments#comment-229774
2018-04-14 18:20:58 -07:00
Kurt
7a77b4524f Add b2w2 route 23 amoonguss
https://projectpokemon.org/home/forums/topic/44798-bug-report-amoonguss-encount-error-b2w2/
Thanks smileynation!
2018-04-14 08:47:02 -07:00
Kurt
8cfd64df63 Add affection contest check for pre gen6 events
https://projectpokemon.org/home/forums/topic/44674-bug-about-contests-ribbon/?do=findComment&comment=229739
2018-04-13 18:52:38 -07:00
Kurt
6b387f9037 Handle alolan species transfer form check
https://projectpokemon.org/home/forums/topic/44718-bugabout-xd-alola-form/?do=findComment&comment=229735
2018-04-13 18:44:16 -07:00
Kurt
78f533605c Handle untranslated Italian LeafGreen Jynx trade
lul nice translating team u got there, would be a shame if they forget
to translate something ;) /s

Thanks cicciochiave!
2018-04-12 21:22:04 -07:00
Kurt
b8a5ccdf7d Simplify shedinja evo move check
Closes #1895 , re-verified with pkm provided in #1805
there's no shedinja gift, always is an evolution

seal some forms to remove virt call in constructor warning
2018-04-10 17:00:28 -07:00
Kurt
be285917b9 Update ingame trade data
https://projectpokemon.org/home/forums/topic/44726-bug-in-game-trader-pokemon-flagged-illegal/

Thanks Jimmy Cerno!
2018-04-07 12:34:06 -07:00
Kurt
caa32c1516 Add alolan evo species check
can't change to a local variant form if it was originally obtained as a
non-variant form (no evolutions!)
2018-04-06 21:46:27 -07:00
Kurt
547c799eeb Handle gen1/2 static encounters
levelup starts after initial moves
2018-04-02 17:51:37 -07:00
Kurt
39f1805940 Fix gen2 met data setting 2018-04-01 20:25:40 -07:00
Kurt
d4e38dded0 Refactor time of day check/validate
Fixes time of day flitering property reference (met_day is always 0, so
it never reached)
2018-04-01 20:22:10 -07:00
Kurt
867c705597 Fix broken gen2 tests
add oddish to the mix
2018-04-01 15:51:55 -07:00
Kurt
d42eb4372f Fix 4 egg move gen2 oddish
egg moves also can be taught in gen1, which causes the learn source to
be locked to a tradeback (removing egg moves that have IDs greater than
RBY's moves). Simplify gen<=2 parse preference ordering with this
addition to force egg moves to be acknowledged.
2018-04-01 15:04:53 -07:00
Kurt
07b2568b1f Fix g2 caterpie generating
has no egg moves -> no moves generated!
2018-04-01 15:02:27 -07:00
Kurt
5e55b916fa Handle fixed gender statics
Seems like a PID/Nature/Gender/Ability smart-setter is necessary for
other encounters
2018-03-31 21:55:59 -07:00
Kurt
ba4c911566 Refactoring & finish eevee test case
generates a legal pk* for every possible encounter; there's likely other
scenarios and more roughness to smooth out, but seems legit for now
2018-03-31 20:37:36 -07:00
Kurt
32f9f806db Add other iencounterable->pkm generators
not tested
2018-03-31 00:43:41 -07:00
Kurt
0b4adf9763 Sync missing content
fixes tests
2018-03-30 22:11:24 -07:00
Kurt
0597833899 Track version of slots/static/trades
I think I set the version at the appropriate times to get all encounter
objects
2018-03-30 21:38:57 -07:00
Kurt
a89c0c3312 Rename egg game->version
add more gameversions (soon)
2018-03-30 21:37:01 -07:00
Kurt
b38abc22e2 Refactoring
add IVersion interface with common interactions
2018-03-30 16:31:40 -07:00
Kurt
537ad33229 Add encounterlink gen
not tested
2018-03-30 01:02:37 -07:00
Kurt
214e684ff8 Add GetEncounterMoves method
dictionary mapping common gameversions to their associated obj
2018-03-30 01:02:22 -07:00
Kurt
d03ff147d4 Add template -> pkm method
fix signature if no versions are provided (empty params is [0], not
null)
2018-03-29 21:04:05 -07:00
Kurt
2ea1fea5f5 Refactoring
add GameVersion to generation
fix generating pk2 eggs
relocate some logic
2018-03-29 21:00:38 -07:00
Kurt
e74e7878cd Lower dragonair encounter level req for trade
https://projectpokemon.org/home/forums/topic/44555-gen2-legality-issue-with-in-game-trade/
Thanks Bumidek !
2018-03-29 08:50:23 -07:00
Kurt
e5ccae906a misc quality of life improvements
set egg friendship
allow SetRandomIVs to use a minimum fixed IV count
2018-03-28 20:56:58 -07:00
Kurt
76b4db1477 Add egg converter & test
only tested for gen7 egg->pkm (not to eventual set)

pretty sure a good chunk of the egg generation logic can be pulled out
for reuse in other IEncounterable generators (IEncounterable
extensions?)
2018-03-28 20:40:07 -07:00
Kurt
6333c42cf1 Add more suggestions for eggs 2018-03-28 20:38:21 -07:00
Kurt
1e13220e6e Add IEncounterable -> pkm interface method
egg,slot,static,link,trade need to be implemented later

remove IEncounterable from PL6
2018-03-28 20:38:07 -07:00
Kurt
314a92b67b Extend core api
add copy/fetch new
2018-03-28 20:34:58 -07:00
Kurt
e026a8ab49 Add default trainer info
use in pkmeditor and utilize
2018-03-28 18:52:50 -07:00
Kurt
d794e71175 Extend contest-affection check to pre-gen6 transfer
Closes #1881
Thanks @ijuintekka !
Thanks @sora10pls !
2018-03-28 16:07:03 -07:00
Kurt
a0eb658ef2 Extract minimum trainer information requirements
If one wanted to extend ConvertToPKM to other IEncounterables, this
would be the provided obj containing the receiver's info

allows pkm gen without a savefile, which is nice?
2018-03-28 15:55:19 -07:00
Kurt
78616e1ad5 Add showdownset -> pkm encounter fetch test case
Test parsing glaceon, input must equal output
Test generating encounters for a specific version (exists only on Moon)
Test generating encounters for the same version (add handling trainer
data to permit Tutors)

fixes error in VC generations-present fetch which allowed movesets from
generations 3-6 lul
exclude negative/invalid gameversions
2018-03-27 19:45:22 -07:00
Kurt
5b4b6e4158 fix ability comparison
a==a obviously, need to check against the current ability
2018-03-27 09:02:56 -07:00
Kurt
a25425a277 Add pcd ability mismatch edge case
yay set PID but nah lets force an ability that doesn't agree with the
PID

https://projectpokemon.org/home/forums/topic/43724-gen-4-events-flagged-as-illegal/
2018-03-26 23:23:27 -07:00
Kurt
1ca69965bf store encountertrade nick/ot within object
allows for ot/nick fetch for a given language
2018-03-26 22:23:11 -07:00
Kurt
6abd2a22a4 Add oras contest master ribbon affection check
Each contest victory requires a contest participation; each
participation gives 20 OT affection (not current trainer!)
Thanks @WyrXIII , @JusLi, @Cresceda !
2018-03-26 16:42:18 -07:00
Matt
ff675ed6e5 Detect event contest affection boost (#1880)
* Detect event contest affection boost

* Re-order check
2018-03-26 10:43:42 -07:00
Kurt
4d3877bf7f Add EncounterMovesetGenerator
lack of a better name; generates IEncounterable list.
2018-03-25 22:50:32 -07:00
Kurt
99a4c55579 Relocate some logic to core
party stats set when setting a slot to a save file
simplify set/delete slotchange duplicate logic
suggest better met locations beyond VC transfers
hatching a gen6 egg applies memories automatically
2018-03-25 19:05:49 -07:00
Kurt
a24e5aa742 Update personalinfo usages
less temp array usages, add methods for cleaner understanding
2018-03-25 13:54:30 -07:00
Kurt
1e708a2102 Simplify default met location fetch
now that IGeneration is available, don't call pkm.GenNumber (slower)
2018-03-24 17:28:56 -07:00
Kurt
a6977af19a Pull out Contest Stat logic to interface 2018-03-24 10:36:48 -07:00
Kurt
d1cfdd782e Rework ball / frame check passing
Two checks are performed for Gen 3 & 4:
A: Encounterability (wurmple, ball, ability)
B: RNG Compatibility (frame)

Original code only checked 'A'
Recent code ordered by 'A', but returned anything that matched 'B'. If
'B was not satisfied, an 'A' match would get deferred, allowing for an
eventual B & !A to be returned before a A & !B being returned.

yay bool logic

we want to prefer a RNGFrameMatch as well as a SlotCompatible match
original code (no RNG checks) retrieves with SlotCompatible just fine
recent adding in framematch resulted in deferring compatible if not RNG
frame, yielding !A matches before A & !B

maintain 3 queues (A & B get yielded immediately) to track A!B, !AB, and
!A!B
not necessary to check unown case anymore as it'll fall into the A!B
group. better performant to skip that check in favor of only adding for
fail.

thanks theSlayer!
2018-03-21 20:19:54 -07:00
Kurt
636736c3fa Add g3 safari ball wild deferrals
Pineco is valid but also can be sourced to altering cave
similar for sandslash
Thanks theSlayer!
2018-03-21 17:30:19 -07:00
Kurt
2c4e3358e4 Fix ninjask evo move comparison
https://projectpokemon.org/home/forums/topic/44413-bug-information-about-bug-found-on-the-new-version-180319/
2018-03-18 15:30:19 -07:00
Kurt
f55028c1a0 Fix KChart errors
gen1 & gen2 types aren't laid out contiguously (yay bird type and extra
types)
fix gen2 type accessors looking at the wrong byte

type sprites now load correctly, and 3rd ability no longer throws an
error (forced to None).
2018-03-18 11:22:20 -07:00
Kurt
88ce27f26b Add R/S roamer data offset
is different from emerald

Thanks TetsuyaGR!

https://projectpokemon.org/home/forums/topic/44407-bug-rubysapphire-roamer-bug/

(use concatall in encounters4)
2018-03-18 08:37:40 -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
274d2200a3 Correctly flag hidden7apricorn
[0] -> Last()

Thanks Davil!

https://projectpokemon.org/home/forums/topic/44374-bug-about-hidden-apricorn-voltorb-bronzor/
2018-03-15 19:04:14 -07:00
Kurt
2685fe29c2 Ban hidden-apricorn voltorb bronzor
Thanks @wwwwwwzx !
2018-03-14 08:10:12 -07:00
Kurt
1cdbe6f4f8 Fix ditto5 IV order
closes #1863
2018-03-12 19:34:54 -07:00
Kurt
aa65d88d3d Cache pressure slot instead of saving all to list
faster to do:
null check & comparison for each
vs
collection add (especially if growing collection)

don't evaluate all slots (faster), capturing the dexlevel[] object is
fine until the enumerable is discarded
2018-03-11 11:02:02 -07:00
Kurt
5148fd2c4e Add minimally filtered encounter generators
Filters by species at most, resulting in something that can be scanned
for a preferred encounter.
2018-03-11 00:29:31 -08:00
Kurt
94811d9052 Split up IEncounterable generators
Can break the filtering out into smaller methods such that the generator
can return results with less strict filtering
2018-03-10 19:51:09 -08:00
Kurt
84c5decfc0 Comment out unused
temp = temp permanent lul
2018-03-10 19:40:57 -08:00
Kurt
2bd9d99d9e Refactoring
WinForms->Core logic absorbing (CommonEdits)
loading ShowdownSet now applies properties to PKM instead of PKMEditor
Contest/IVs for Static/Trades are no longer set by default (less object
allocations), and are now checked by the encounter generator
2018-03-10 18:03:09 -08:00
Kurt
9da1913f1b Only check static IVs if original IVs still exist
https://projectpokemon.org/home/forums/topic/44319-bug-vc-mew/
Thanks Davil!
2018-03-09 20:00:13 -08:00
Kurt
cda2cfcefd Clean up EncounterLink
no new gen6 pkm link gifts, simplify usages
2018-03-09 18:58:00 -08:00
Kurt
452ffe2369 Refactoring
relocate location of stuff
2018-03-08 21:18:32 -08:00
ReignOfComputer
8147258e9e Unban Gen 7 Starters HA (#1860)
HA Starters Event via Pokemon Bank
2018-03-08 05:55:47 -08:00
Kurt
cbf4038a95 Refactoring
relocate gift data storage out of legal.cs
2018-03-05 22:19:56 -08:00
Kurt
21cdf4f642 Reorganization
wonder if it's possible to provide a more lightweight core by pulling
out legality stuff to a separate project?
2018-03-05 20:49:45 -08:00
wwwwwwzx
c9a54307c4 Fix WC6/7 IV generation (#1857)
https://pastebin.com/bbpS6svw
IV lock doesn't work for IV3 case
2018-03-02 16:17:14 -08:00
Kurt
89d3437d0b prevent blue flabebe apricorn/beast
closes #1850
impossible SOS's were already removed from the SOS list (e.g. no slots
in the SOS table with w.Species == 669 && w.Form == 3)
2018-02-24 17:28:07 -08:00
Kurt
e33bd4c327 Add Dialga/Palkia headbutt location
turns out route 47 (below route 48) also yields dialgapalkia, which also
has a tall grass patch that can be headbutted from.

Closes #1833
2018-02-15 19:40:42 -08:00
Kurt
f8bf3e400b Misc tweaks
Add bulkstorage SaveFile template
remove unused using
un-virtual box property (don't override behavior)
Split new-USUM island names (unused)
Remove island names from valid egg locations (thanks Davil !)

https://projectpokemon.org/home/forums/topic/43874-bug-met-location/?tab=comments#comment-227684
2018-02-15 17:05:45 -08:00
Kurt
89248b30a9 Re-add rufflet pelago for sn
Thanks @wwwwwwzx !
2018-02-12 17:38:31 -08:00
Kurt
28180687a5 Add transfer2 future evos for legality reuse
https://projectpokemon.org/home/forums/topic/43827-gsc-mismagius-treated-as-illegal/
2018-02-11 20:48:36 -08:00
Kurt
38fb30e847 Remove Punishment from Murkrow USUM eggmoves
Closes #1829

"In Pokémon Ultra Sun and Ultra Moon, Murkrow is programmed to be able
to learn Punishment through breeding, but no other Pokémon in the Flying
Group can pass down Punishment as an Egg Move in those games. Vullaby
and Mandibuzz are the only Flying Egg Group Pokémon that can learn
Punishment, but they cannot pass down the move due to being female-only
species."
2018-02-10 18:56:06 -08:00
wwwwwwzx
9187be8177 Update CHS translation files (#1827)
* Update CHS translation files

* Fix crabrawler outliers

Double check the wild encounters level range again.
2018-02-10 15:29:22 -08:00
Kurt
f289249b2d Add oddball crabrawler berry pile levels
thanks @wwwwwwzx !
2018-02-09 21:26:28 -08:00
Kurt
033d5baa06 Check EC-PID same for gen1/2 transfers
Fix PID->EC on gen<3 transfers

https://projectpokemon.org/home/forums/topic/43779-about-vc-pokemons-pid-and-encryptionconstant/
2018-02-08 18:47:52 -08:00
Kurt
d6fbd0f0d7 Reorder gsc encounters
new string resources have shuckle last
thanks @sora10pls
2018-02-08 17:05:15 -08:00
Kurt
05c4a0f286 partner cap pikachu update
great job gamefreak

allow current handler to be 0, remove static encounter as the data was
sneakily faked as a WC7 in the events gallery.

Closes #1817 ; still needs to update with new pikachu pid method
allowing shinies (next update).
2018-02-07 19:56:02 -08:00
Kurt
9408255bee Add other international (non english) gen2 tradeOTs 2018-02-06 23:09:00 -08:00
Matt
1b2aded412 Allow shiny Partner Cap Pikachu (#1820)
good job Game Freak https://twitter.com/wwwwwwzx/status/961057063198539778
2018-02-06 18:54:45 -08:00
Kurt
05355f3566 Fix gsc shuckle jp name
Closes #1818
strengthen language specific checks (JP or INT, not any)
2018-02-05 20:55:10 -08:00
Kurt
246b9d46a9 Add GSC fishing swarm encounters
Closes #1814
2018-02-04 23:14:12 -08:00
Kurt
2a638a957f Refactoring
compress some ideas
2018-02-04 19:17:44 -08:00
Kurt
e3ca751e2c Add dp/hgss shedinja gender glitch handling
not providing pkmeditor ability since Pt behaves correctly.
Closes #1813 , thanks @ultima-soul & @Lusamine !
2018-02-04 18:12:20 -08:00
Kurt
420a18ea85 Rework shadow lock checking
tested for 2 locks, later commits with legality check implementation
will feature more lengthy lock checks (test case automation).

https://pastebin.com/VdbjWaqL
(species doesn't matter since most are 50/50 ratio)
2018-02-04 16:33:53 -08:00
Kurt
c20f03434f Add FrameCache object
arbitrary access for RNG frame results, only generating frames when the
frame is unavailable. all calculated frames are cached.

to be used in RNG searching where caching seeds is necessary (repeat
checks)
2018-02-04 16:30:50 -08:00
Kurt
35e5dbfb32 Add eterna forest honey tree location
Closes #1812 , thanks @ultima-soul !
2018-02-04 14:03:35 -08:00
Kurt
04888a5c39 Add crabrawler berry pile scripted encounter
https://projectpokemon.org/home/forums/topic/43628-crabawler-bug/
doesn't exist in static encounters, maybe is set up like the swooping
encounters of gen6.
2018-02-04 13:04:45 -08:00
Kurt
9a20734be2 Update lock checks
test case
https://pastebin.com/f4K7uc56
only checked for single locks
2018-02-04 00:06:07 -08:00
Kurt
14fc71a5d2 Fix Zygarde Aura Break formechange detect
original was AltForm != 1, 0 is also invalid so >1 suffices.
remove parameter from method & update usages
2018-02-03 21:12:36 -08:00
Kurt
0a22ccdb2b Disallow invalid pelago levels
simplify pelago slot generation too
linq for now; can be silly and make it a for loop but meh
2018-02-02 20:52:44 -08:00
Kurt
382c94c348 drop sm pelago exclusives back to 1-55 not 37-55
https://projectpokemon.org/home/forums/topic/43711-vullaby-invalid-error/
2018-02-02 20:10:43 -08:00
Kurt
b603bc87b8 Update shedinja ninjask move checks
check level of source moves for any incompatibility in non-bred cases.
Closes #1805
2018-02-01 19:57:02 -08:00
Kurt
999427f484 Update gen2 egg generator
Level = Level is equivalent to Level = 0

update EggInfoSource to use Level instead of LevelMin (LevelMin returns
Level, just be clear on usage)
update VerifyCurrentMoves so that only gen1/2 do the gen1/2 move update
methods. Recently extended all encounters to have a generation property;
we only care about gen1/2 here.

https://projectpokemon.org/home/forums/topic/43655-pokemon-crystal-egg-mark-as-not-legit/
2018-01-30 20:36:22 -08:00
Kurt
84a0381050 Add Italian to gb languages
https://projectpokemon.org/home/forums/topic/43655-pokemon-crystal-egg-mark-as-not-legit/
2018-01-30 20:34:11 -08:00
Kurt
836566004f Use CXD met location string on verbose output
was previously using RSEFRLG locations for CXD encounters
2018-01-30 20:24:45 -08:00
Kurt
7063ea2971 Remove vc1 pay day mewtwo restriction
Closes #1794
2018-01-30 09:38:45 -08:00
Kurt
4ac92b9418 Update nincada->shedinja evo chain check
Thanks @admiral-fish & @Marty-D !
2018-01-29 20:52:05 -08:00
Kurt
74f185591a Fix shiny/nonshiny egg mysterygift link trade checks
thanks @Admiral-Fish for finding this case
2018-01-28 23:40:57 -08:00
Kurt
2365e2394c Add eggcycles override for Odd Eggs
not gonna bother checking for exp < 125 because after transfer these are
indistinguishable from regular eggs.
2018-01-28 09:46:11 -08:00
Kurt
735ff26486 Rework GetEncounterMoves to match games
Closes #1787

Noticed that the search-backwards approach for GetMoves yields Sludge
for muk even though it shouldn't be allowed
im fine with this for now because gen2 never had online checks and any
current-gen checks allow relearning.
2018-01-28 00:09:11 -08:00
Kurt
13e7d8ff85 Fix dragonair ingame trade genders
#1787
2018-01-27 23:23:10 -08:00
Kurt
282676e2f2 Refactoring
reduces mental footprint
2018-01-27 17:49:18 -08:00
Kurt
ca2898d648 Rework gbc celebi detection
disallow outside jp games
2018-01-27 11:46:51 -08:00
Kurt
0e7350ee9e Update korean vc string checks
https://projectpokemon.org/home/forums/topic/43610-legality-about-gen-2/
2018-01-27 09:45:33 -08:00
Kurt
c066df243f Misc fixes/updates
Fix crystal lacking met level<->current level checks
Fix met location loading for gen2 saves (gen7 sav loaded gen1/2 pkm ->
load gen2 sav)
refactor some logic with pattern matching/consistent method names
2018-01-26 09:19:20 -08:00
Kurt
48564d7e30 Fix celebi iv check
update version ID as well
Closes #1775
2018-01-25 20:39:32 -08:00
Kurt
9b7b0b25d4 Flag iv<5 celebi
thanks @sora10pls
2018-01-25 19:34:18 -08:00
Kurt
58e374bcc6 Add celebi / more crystal legality handling
Closes #1772
2018-01-25 19:25:10 -08:00
Kurt
802105d22d Allow pay day mewtwo, disallow dizzy punch
#1772
transfer pk1->pk2->pk7 for mewtwo knowing dizzy punch, just so we can
keep Pay Day
2018-01-25 19:17:42 -08:00
Kurt
5472f869cf Remove some crystal vc checks
now legal
assuming x->kor7 sets the language val based on the cart language,
should be good for the kor crystal checks.
2018-01-25 09:14:25 -08: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
713e9ea209 Compress box padding 2018-01-23 17:18:37 -08:00
Kurt
b229a947f2 Fix pt/hgss egg location handling 4->5
Closes #1766
pt/hgss egg location data is lost on transfer, retaining faraway place
only.
2c8e2176e9 fix was incorrect
2018-01-21 11:57:34 -08:00
Kurt
e616b56bfa Remove uncatchable grubbin static encounter
#1763
2018-01-18 14:06:17 -08:00
Kurt
387030e16f Fix 7th gen pikachu altform check
https://projectpokemon.org/home/forums/topic/43498-bug-about-event-pikachu/
2018-01-18 13:50:29 -08:00
Kurt
17e4bdbe3a Add pikachu7 forme nongift check
other branch was unhandled, flag if we have a mismatch
closes #1762
2018-01-15 17:50:33 -08:00
Kurt
029539003b FormChange check: use original form not current form
Closes #1758
noticing the different usage for species (encounter species vs current),
iterating over possible dexlevels (unnecessary?)
2018-01-13 12:10:17 -08:00
Kurt
fb6738f18b Add unown 2->7+ shiny check
closes #1755

also:
fix vc transfer checks not being called (EncounterOriginalGB is no
longer GBEncounterData).
remove usages of GBEncounterData -- class is (as of a ~~month ago) now
never leaked out of the EncounterGenerator -- always returns the actual
encounter data as the wrapper is not needed.
simplify logic flow / references
2018-01-10 16:16:35 -08:00
Kurt
c751c987a9 Add DebutGeneration get
https://projectpokemon.org/home/forums/topic/43378-generation-search-in-pkmdb-andor-batch-editor/

(less than) < and (greater than) > not currently supported (no plan to
add, would need to rewrite value eval logic)
2018-01-10 15:40:33 -08:00
Kurt
701edbc592 Remove KOR language from gen3 selection
add flag for non japanese lang gen3 eggs
Closes #1747
2018-01-06 22:43:48 -08:00
Kurt
63a983749e Don't generate encounter slots for eggs
Closes #1749
2018-01-06 21:51:58 -08:00
Kurt
6a9e2ed4b9 Refactoring
improve speed for resource fetch, add optional Shiny parameter
(currently unused)
#1735
2018-01-02 16:53:39 -08:00
Kurt
0f21fc2217 add location interface for verbose analysis output
indicates met location for transferred mons
most gen1/2 encounters won't show values due to the location not being
stored respective to the string tables (anyone wanna do a location remap
after initial load?)
2018-01-02 12:00:41 -08:00
Kurt
5888898e7d fix gen2 egg met level mod
https://projectpokemon.org/home/forums/topic/43278-gen-2-hitmonlee-and-hitmonchan-flagged-as-illegal-if-location-is-mt-mortar-at-level-10/?tab=comments#comment-225577
2018-01-01 21:51:36 -08:00
Kurt
76385a6b4a Fix gsc pre-evo species chain filtering
simplify gsc check to do only once

https://projectpokemon.org/home/forums/topic/43278-gen-2-hitmonlee-and-hitmonchan-flagged-as-illegal-if-location-is-mt-mortar-at-level-10/
2018-01-01 13:53:28 -08:00
Kurt
cfe78a7a0c Add rby power plant static encounters
https://projectpokemon.org/home/forums/topic/43272-small-electrode-legality-bug/?tab=comments#comment-225537
2018-01-01 10:38:38 -08:00
Kurt
1b409dd327 Ban phione egg in non-pokeball
Thanks Davil!
https://projectpokemon.org/home/forums/topic/43262-bug-phione-ball/
2017-12-31 09:56:27 -08:00
Kurt
0c2b16391f fix spanish ranch gift name check
oops
2017-12-29 13:08:06 -08:00
Kurt
90260187f7 Add light of ruin & plasma fists as invalid sketch
moves not available for sketch without hacking a specimen in

https://projectpokemon.org/home/forums/topic/43244-two-problems/?tab=comments#comment-225421
2017-12-29 12:00:06 -08:00
Kurt
43cb0e8d7d Provide more accurate met level for eggs
Gen6 egg with met level != 1 (ie 98) will use the gen3-4 metlevel
branch.
fuzzed input from #1728 to be hacked (met level = 98)
2017-12-28 10:01:48 -08:00
Kurt
a1f2f8708a Refactoring
pass identifier on cloning pkm
remove unnecessary ref for passing Data (not modifying array reference)
const some magic numbers
2017-12-27 16:36:24 -08:00
sora10pls
c3d5266b89 Add XY gift Lapras ability check 2017-12-23 18:28:00 -05:00
Kurt
ea76d6a899 Misc tweaks
minor perf improvements (don't ToList for encounter slots, store all
slots incrementally); has better performance for legal pkm checks
2017-12-23 11:49:20 -08:00
Kurt
7f21728e84 Add area->location references to remaining slots 2017-12-23 11:48:10 -08:00
Kurt
5e59e20ea1 Store matched encounter generation
previously was only defined for gen1/2, why not all gens
can now query encounters in Core for encounters per generation via
reflection; can help group encounters for data vis or be faster than
getting individual gen numbers
2017-12-18 16:17:21 -08:00
Kurt
80baaea3b7 add b2w2 n's pokemon PIDs
add b2w2 fixed PID encounters (N's Pokemon), move nsparkle to this class
redo static encounter cloning
2017-12-18 15:25:40 -08:00
Kurt
24b5cc48ed Fix gb encounter move comparison
don't calc NoMoveReminder for non-gen2 formats, also fix comparisons
(gen1 || gen2&&noRemind)
Closes #1707
2017-12-17 21:26:31 -08:00
Kurt
47eee3aa98 Add roto powers as held items
not gonna add sprites because these are useless, anyone can submit via
pr (image might need downscaling to <15x15)
Closes #1703

remove useless null checks (throws the exact same exception it would if
it were not there, except without detail)
2017-12-16 19:52:06 -08:00
Kurt
21c1dde3a7 Fix static encounter gift / egg edge case
extract EncounterStatic match determination; in doing so fixes "lvl" by
passing byval.

Pichu encounters (2) come before the Gift level 25 pikachu, causing lvl
to be dropped to 5. When pikachu comes around, it compares 5==25 -> bad;
pulling out the method and passing byval allows it to be 25 at the start
of every new encounterstatic checked.
2017-12-16 18:24:03 -08:00
Kurt
0b58d4ffe9 Add form/nature checks for gen5 trades
altform wasn't checked for EncounterTrade
nature wasn't checked for gen5 origin (decoupled from PID, but forced)
#1702
2017-12-16 14:09:03 -08:00
Kurt
e5aa39a6bb Refactoring
get language list now doesn't return new objects (or re-enumerate)
update rand usage to be inclusive for top bound, extend shuffle to
collections
remove unnecessary location overrides (already overriden in legal fetch)
2017-12-14 20:58:55 -08:00
Kurt
b5640de538 Misc tweaks
reorder some args, reuse some standard methods;
add spanish for gen1/2 egg name case
2017-12-14 16:16:47 -08:00
Kurt
9a39f818f9 Misc fixes
#1700
dp personal: add wormadam/deoxys manual forme count values
generator: bcc handling for pkm present in & out of bcc, and static/wild
duplicates
util: fix incorrect variable reference
2017-12-13 16:17:02 -08:00
Kurt
a9ff74059a Misc perf tweaks
checking untraded should just check for the first character (rather than
creating string object)
hashset for wild6 balls
2017-12-13 16:12:53 -08:00
Kurt
816ebf6b0e Refactoring
no functional change
2017-12-11 16:01:24 -08:00
Kurt
dd21f9375f Misc updates
Disallow sandygast on US
Add 2 more records
thanks @feralfalcon
Closes #1698
2017-12-08 08:54:00 -08:00
Kurt
a43880184a Fix artist ribbon gen6+
having 4 ribbons is sufficient (normal/super/hyper/master = 4, etc)

https://projectpokemon.org/home/forums/topic/42933-2-issues-invalid-ribbons-artist-encounter-level-in-origin-game/
2017-12-07 07:57:07 -08:00
Kurt
f9946368a0 Remove usage of LegalityAnalysis from PK*
CK3<->XK3 transfers to PK3 first now (no direct transfer legally)
2017-12-06 21:28:34 -08:00
Kurt
bd9f7fc7e2 Remove fossils from usum capture list 2017-12-06 21:05:36 -08:00
Kurt
4550f656d0 Update gs vc check female
will be revised when/if vc-c is released
2017-12-05 15:08:02 -08:00
Kurt
88f67ebd36 fix crystal gender flagging
C->GS->Gen7 keeps female OT but gives GS version
also fixes wrong logic path for format2
thanks randomdice101
2017-12-05 14:43:02 -08:00
Kurt
5bc2e6da88 Refactoring
de-linq some areas where direct accessing is possible (list/array)
2017-12-04 20:16:54 -08:00
Kurt
4a63769351 Add voltorb to beast ball permissible table
closes #1694
2017-12-04 16:54:09 -08:00