Commit graph

982 commits

Author SHA1 Message Date
Matt
d004389a3e
Update Gen 4 trade min levels (#2769)
Eggs hatch at Lv. 1 in Gen 4, and some other Species can be found in the wild at Levels lower than their intended evolution requirement.
Closes #2768
2020-03-16 18:14:22 -07:00
Kurt
94d8125574 Split up Friend Safari checks & generator
removes one GetEnumerator call for non-fsafari encounters
2020-03-14 11:32:27 -07:00
Kurt
6a5bf02126 Add min levels for trades
Make PIDs readonly for trades
Clone FR/LG Lickitung (different min levels)
2020-03-13 21:39:35 -07:00
Kurt
6f0c3c1205 Add 3 more met locations
Co-Authored-By: Lusamine <lusamine@users.noreply.github.com>
2020-03-12 20:36:31 -07:00
Kurt
fbd533092d Fix misspelling of the word "Received"
Closes #2757

Co-Authored-By: pi1024e <pi1024e@users.noreply.github.com>
2020-03-12 15:05:34 -07:00
Kurt
1c2d9cf84c Add another Lanturn location, level 38 Corviknight
Yay using bots to collect encounter data from players around the world :P

Co-Authored-By: Lusamine <lusamine@users.noreply.github.com>
2020-03-11 16:38:04 -07:00
Kurt
093ce2a020 Add ★And337 4-Star Gigantamax Corviknight 2020-03-08 17:20:00 -07:00
Kurt
e2c579fbbc 3/8 - Gengar/Machamp nests
New? Dynamax Crystal: ★And337 - 4-Star Gigantamax Corviknight ???
2020-03-08 17:14:20 -07:00
Kurt
ed02f39224 Use another overload
Co-Authored-By: Archit Date <architdate@gmail.com>
2020-03-04 22:31:07 -08:00
Kurt
b831d52b79 not capturable
gotta drip feed content -- tease ppl to migrate from prior games ($$$)
2020-02-26 17:16:52 -08:00
Kurt
283b7a353b Add mewtwo raids
Mewtwo encounter has been added; awaiting confirmation that it can be captured (assumed yes)

Gen1 starters can be captured in beast ball in gen7 (scan), so nothing changes for ball legality.
2020-02-26 17:03:53 -08:00
Kurt
549e6f616b allow shared eggmoves on format 2020-02-22 23:27:47 -08:00
Kurt
509e2f1fa3 Handle more evolution/form checks
Closes #2726
1. Add variant evolutions to form-match cases
2. Ban LGPE origin alolan raichu
3. Add egg form check for unavailable regional forms
4. Previous commit fixed mew (remove ribbon interface from WB7)

Co-Authored-By: Matt <sora10pls@users.noreply.github.com>
2020-02-20 22:11:48 -08:00
Kurt
15121c2945 Fix shared egg moves for non-galar origin
Use the private method; we already know the gen and that the egg moves are permitted

Relocate method to MoveEgg
2020-02-16 19:47:57 -08:00
Kurt
f48a11f013 add 2/17 raids
milcery gone, toxel appears
2020-02-16 17:02:53 -08:00
Kurt
87bb4c4138 Add more met locations
https: //projectpokemon.org/home/forums/topic/56227-bug-missing-game-encounter-affecting-legality-status/
Co-Authored-By: pp-theslayer <pp-theslayer@users.noreply.github.com>
2020-02-11 20:50:26 -08:00
Kurt
ebf20d927b More transfer implications
Totems are downsized to regular
araquanid, togedemaru, and ribombee totems can't transfer (at the moment)
2020-02-11 20:11:33 -08:00
Kurt
cb5d8186fd Defer formargument for raids
Closes #2693
Account for runerigus too, if they ever have a den for it ;)

Co-Authored-By: crzyc <crzyc@users.noreply.github.com>
2020-02-09 15:04:45 -08:00
Kurt
e9e1e5e166 Fix encounter find for passed egg moves
https://projectpokemon.org/home/forums/topic/56188-encounter-database-froslass-error/
2020-02-08 13:36:37 -08:00
Kurt
29258ca501 Add tox nests 2020-02-06 17:11:39 -08:00
Kurt
d3d6225a73 Fix unown ?! order
Closes #2683
ty @Kermalis !
2020-02-04 19:03:55 -08:00
Kurt
222d95e742 Add bridge field loc for nest35
https://projectpokemon.org/home/forums/topic/56154-illegal-theivul/
2020-02-01 21:45:33 -08:00
Kurt
774dec5123 Add milcery distro nests 2020-01-30 16:44:51 -08:00
Kurt
dd07126d83 Relocate level suggestions to EncounterSuggestion 2020-01-28 16:21:38 -08:00
Kurt
3111a8dc62 Cast the array a little safer
bad hacks with invalid future gen evolutions yield no evolution data, which results in empty arrays.
2020-01-26 23:58:14 -08:00
Kurt
ffa70e7626 Move files
no functional change, just putting stuff in a more appropriate folder
2020-01-25 17:22:20 -08:00
Kurt
9c28ffacc0 Simplify N's pkm encounter handling
Readonly PID; sparkle is True always, so it's a const instead of a mutable property.
2020-01-25 12:31:56 -08:00
Kurt
7a7358d0e5 Flag g4 bad met locations for hatched eggs
Traded eggs in gen4 can have from any game (since version isn't updated on hatch).
Use the hashsets, and remove the incorrect array. The incorrect array allowed stuff like Pokéwalker to be a "valid met location", hah.
2020-01-25 12:19:59 -08:00
Kurt
94eee74e5c Add another rhydon lvl 46 loc
Ty @slp32 for reporting in #2633, && anubis (discord) for finding the actual level without being asked /s
2020-01-24 17:56:42 -08:00
Kurt
5be9c6bcc8 Remove unnecessary null handling
objects are no longer null
2020-01-20 23:32:05 -08:00
Egzon
1a3d8b1fab Fix Seedot and Nuzleaf swarm moves (#2648) 2020-01-20 14:31:59 -08:00
Kurt
63ea57436f Make the template IV/contest stat array readonly
See prior commits
no longer need to clone subarrays, they're shared immutable
2020-01-18 19:11:29 -08:00
Kurt
843330a375 Remove unnecessary null checks
this is a null free project /s
dont provide null, else u deserve to get an exception
2020-01-18 16:57:25 -08:00
Kurt
8312c52cc1 Make Move[] readonly list
contract: don't modify the template movesets
mystery gift now exposes IRelearn, remove unnecessary type checks
2020-01-18 16:46:38 -08:00
Kurt
0cd9c47953 Make Relearn array for encounters readonly
No change em
2020-01-18 16:31:24 -08:00
Kurt
aecc08f65c Remove duplicate electrode encounter
3IV requirement isn't required for wild slots that are also at the same level-location
Closes #2636

ty @dstevenson12 !
2020-01-14 18:39:25 -08:00
Kurt
f4162d2dce Add another corviknight location
ty anubis
Closes #2633
2020-01-13 22:36:00 -08:00
Kurt
11978dab4f Make pgt ranger manaphy IsEgg true 2020-01-12 23:00:32 -08:00
Kurt
81f280f4d1 Update EncounterSuggestion.cs
weaken legality check, we only check moves
2020-01-12 20:49:33 -08:00
Kurt
5a20dc707d Rewrite encounter suggestions
Don't clone legality templates, and keep suggested information minimal -- this isn't automod
2020-01-12 19:40:36 -08:00
Kurt
eaeebea923 Remove another method shortcut
EncounterSuggestion needs a facelift anyway
2020-01-12 17:00:03 -08:00
Kurt
d5948b9dbe Add relearn moves to Except comparison
Burn Up ho-oh is dumb
2020-01-12 16:09:35 -08:00
Kurt
48fd36a9a2 Handle g4 shedinja learn case too
change 291/292 to Shedinja/Ninjask for easy enum reference check
2020-01-12 14:34:29 -08:00
Kurt
61ecb52347 Remove unnecessary allocation 2020-01-12 12:06:33 -08:00
Kurt
0eca1bbd1c g3 shedinja api usage fix
see comments in src for justification
need ninjask moves if gen3; dl.Count is guaranteed to be >= 1
2020-01-11 21:41:24 -08:00
Kurt
51d2fc9d93 Update with slowpoke-1/new raid data
TransferVerifier: Revise transfer check to allow slowpoke-1 (slowpoke-0 is flagged via next check)
2020-01-09 18:44:45 -08:00
Kurt
0dd4d1fe7a Remove unnecessary casts 2020-01-06 17:50:18 -08:00
Kurt
3d581283c2 Minor clean
move Text.cs manual Courier new() to the designer, have it dispose when form is disposed. Set it as the numericupdown's font and just reuse that :)
2020-01-05 18:46:30 -08:00
Kurt
68e6644d40 Split off shared nest class, deduplicate logic
use generics to have shared logic in one spot
Handle downleveled distribution/crystal(soon?) data
2020-01-04 11:44:16 -08:00
Kurt
308e6fa291 Add temp workaround for version encounter fetch
PKX.Generation is 8, which returns SWSH evo tree; evo tree doesn't have
non-galar-native species data, so stuff like Ambipom don't get reversed
properly.

use math.max for tree fetch when appropriate:
- egg generator: pre-evolutions like pichu should be allowed if pk1
- don't fetch format twice, just do math.max
2020-01-04 11:14:25 -08:00
Kurt
15779513f5 Add stubs for raid correlation verifiers/generators
Not going to implement this within the base repo as z3 is too large of a
dependency and is platform specific.

If anyone wants to implement as a plugin project, just inject your new
methods via the setters on the static func/action at the top of the 3
classes.

Since z3's searches aren't instant, I'd recommend caching recent results
in a dictionary, as re-parses are common. Something like the Wordfilter
is what you'd be aiming for :)

Closes #2617
2020-01-03 20:03:04 -08:00
Kurt
0788780404 Add bewear motostoke crossover location
Closes #2619
2020-01-03 19:14:03 -08:00
Kurt
fe8e5e3fd9 Add more string search methods
exposes some common string search operations that can be useful for
parsing user entered data
2020-01-02 12:06:58 -08:00
Kurt
b55dc37e05 Extend some logic
make summary more accessible
2020-01-02 10:55:37 -08:00
Kurt
166f8d82e5 Misc clean
Refactor out some logic, make "en" literals reference one spot (where
appropriate)
2020-01-01 19:07:21 -08:00
Kurt
7e490b8dcc Add lanturn/bronzong alt locations
Closes #2613
2019-12-31 21:47:28 -08:00
Kurt
14eae5f62d Add magikarp distribution data 2019-12-30 22:32:12 -08:00
Kurt
3b2b86950f Ignore symbols (apostrophe) for string matching
Farfetch'd vs Farfetch’d
2019-12-30 15:39:13 -08:00
Kurt
84c5f6e914 Add another met location for gastro-1
Closes #2612
2019-12-30 15:11:54 -08:00
Kurt
9864f23427 Handle Bridge Field->Stony Wilderness berry tree
Closes #2610
2019-12-29 12:48:34 -08:00
Kurt
d6471e2b3b Add more pelipper & dusclops strong locs
ty anubis
2019-12-29 11:28:29 -08:00
Kurt
ce62d63c5a Fix eggmove fetch for move check
Closes #2609
2019-12-29 10:17:07 -08:00
Kurt
bfd9bf6b53 Simplify formchange calls
Don't use the dex chain for certain checks, it's unnecessary.
2019-12-28 19:00:01 -08:00
Kurt
3280adcb9f Add another location for Golurk & Galvantula
Closes #2606
2019-12-28 18:03:20 -08:00
Kurt
b294eba181 Fix combee gender check
silly convoluted checks
#2603
2019-12-27 19:17:08 -08:00
Kurt
940cdccb6b Restrict downleveled to lvl % 5 == 0 2019-12-27 00:17:59 -08:00
Kurt
ceae77c677 Add load-line overlap location for Den 27/42
The nest is situated right next to the load line, and may be accessed
from either map (across the load line), resulting in a Dusty Bowl
Pumpkaboo-0.

Many thanks to Anubis on Discord for figuring this (very silly) thing
out !
2019-12-26 18:59:02 -08:00
Kurt
bb7c94dadb Add seismitoad location
https://github.com/kwsch/PKHeX/issues/2570#issuecomment-568235086
2019-12-26 13:04:44 -08:00
Kurt
baf0f52f06 Handle downleveled raids
Closes #2573
- self-hosted raids can be downleveled too (see cufant), probably only
by 1 rank
- min-rank check now checks for downleveled cases

- Add extra gyarados/ferrothorn locations
2019-12-26 12:59:16 -08:00
Kurt
4740fab5ec Have separate encounter yielder for gen8
the "Strong" static encounters can be near-matches with wild encounter
slots; example is a evolved Cutiefly->Ribombee with Quiver Dance.

Remove unnecessary IsLink/FriendSafari check for this gen8 method

https://github.com/kwsch/PKHeX/issues/2573#issuecomment-569126371
2019-12-26 12:32:48 -08:00
Kurt
0c7d347a29 Add Delibird distribution data, split files
ROM nest data definitions are already pretty hefty and won't be revised;
split out the future content
2019-12-25 14:26:49 -08:00
Kurt
e6dcf64abe Disallow Spiky Ear Pichu eggs
sneaky gen4 bad hacks are bad
2019-12-24 13:21:56 -08:00
Kurt
3b2ebbb84f Add PID check for gen4/5 Combee->Vespiquen evo
Closes #2593
2019-12-21 16:52:56 -08:00
NotTsunami
a05b38ab39 Legality: Add Nature and Gender to Gen 8 Trades (#2591)
Closes #2589 
https://bulbapedia.bulbagarden.net/wiki/In-game_trade#Sword_and_Shield
2019-12-20 10:48:46 -08:00
Kurt
108233b45f Add glalie/skuntank locations
#2570
2019-12-10 19:54:26 -08:00
Kurt
fcdd7019d3 Add missing shadow yanma location ID
Closes #2577 thanks @HoppyShnell ! -- this looks like the final met
location ID?!

Not sure if Murkrow (locked) is missing one; moved duplicate-location
Heracross and made it use the same locks.
2019-12-10 19:22:46 -08:00
Kurt
9a87647409 Add more static encounter locations
Some of these are probably crossovers
#2570
2019-12-09 19:28:57 -08:00
Kurt
0fa25b4c8c Fix VC transfer evo chain population
Move EncounterOriginal to Legal info; needed in order to pass the
correct encounter to the EvoChain fetch.

The EncounterOriginal 'hack' might be unnecessary with the current state
of the legality checker... maybe can see if it can be removed later.
2019-12-09 15:48:54 -08:00
Kurt
8acb336d51 Use enum for species comparisons
slightly easier to read with named values
2019-12-08 17:39:19 -08:00
Kurt
475dc02101 Add edge case handling for indeedee shared egg moves
#2416
2019-12-08 12:08:21 -08:00
Kurt
861d7b6014 Remove unnecessary parameters for species fetch
#2567
2019-12-07 00:00:49 -08:00
Kurt
d24a09f7c9 Make level min/max virtual for nest
Closes #2566
be sure to set the correct flawless IV count & dynamax level so that the
encounter matches
2019-12-06 19:17:26 -08:00
Kurt
b2fc99e50a Update nest dist/crystal location get/check 2019-12-04 19:04:36 -08:00
Kurt
e333f9b441 Add orbeetle 65 loc
thanks @sora10pls
2019-12-03 19:59:10 -08:00
Kurt
71318c9bd5 Add clarification/notes 2019-12-03 19:54:06 -08:00
Kurt
ab7cf3252e Add snorlax raid dist data 2019-12-03 18:25:06 -08:00
Kurt
a844fb5249 Add strong dubwool location
https://projectpokemon.org/home/forums/topic/55654-new-pokemon-to-fix-on-pkhex/?tab=comments#comment-251010
2019-12-01 00:02:02 -08:00
Matt
7b7a161ac9 Minor fixes (#2547)
Fix Sinistea/Polteageist Form names (as per Strategy Guide)
Add Eternamax menu sprite
2019-11-30 13:19:22 -08:00
Matt
bc9be36123 Add more Gen 8 static encounter locations (#2540)
Also add West Sea Shellos/Gastrodon to transfer form banlist
2019-11-29 10:03:35 -08:00
Kurt
ea2f7f338b Add weather indication to detailed parse output 2019-11-28 12:56:26 -08:00
Kurt
e8bdc34a18 Tweak gift generator
Yield ranger manaphy gift as possible (encmoveset generator)
Move ranger manaphy equals check to PGT
2019-11-28 10:42:24 -08:00
Kurt
5a1bffb2ba Split wild encounters for crossover & weather
Certain Mark values (ribbon) are only obtainable if the encounter was
obtained in some weather (I really hope there's no crossover cases for
this), and non-symbol encounters can't wander to another zone.

I wonder if you can wander from one zone with one exclusive weather, to
another zone, and get an 'unobtainable' mark (with the new zone's
weather) on the crossover mon's weather. yikes lmao
2019-11-27 22:46:14 -08:00
Kurt
a0ee7a3e51 Add route 2 lapras location
ty Waves (discord)
https://www.serebii.net/pokearth/galar/route2.shtml#xy-lake
2019-11-27 19:44:14 -08:00
Kurt
5761f03f94 Add OT memory details for gen6 ingame trades 2019-11-27 19:30:28 -08:00
Kurt
c4951f1650 Add strong piloswine location
ty wowjinxy
2019-11-27 11:34:20 -08:00
Kurt
4cd358833a Add corvisquire static enc location
https://projectpokemon.org/home/forums/topic/55611-corvisquire-route-3/
thanks ThePunish3D!
2019-11-26 18:20:52 -08:00
Kurt
9cb56be3dd Add bronzong/galvantula strong loc
previous Bronzong location is likely a crossover case

ty wowjinxy
2019-11-26 11:39:17 -08:00
Kurt
445fdee2ba Add shared memory interface (encounter) 2019-11-26 10:46:16 -08:00
Kurt
e8f5ac8a00 Minor clean 2019-11-25 22:51:07 -08:00
Kurt
c416fc5fa1 Update handling for invalid genNumber
all edge case movepool stuff is IGeneration; we're fine just using
IGeneration.Generation
2019-11-25 18:33:38 -08:00
Kurt
c5593470df Add 2 more static enc locations, swap yield order
Private report with 3 specimens, 2 undocumented met locations
The other was a Gigantamax which matched another static encounter,
resulting in a partial match being accepted (the real match came after,
but was never iterated to).

Rather than adding deferrals for Enc8, do nest stuff first since it's
the most restrictive

In the past we didn't really have duplicate static encounters with
slightly different permissions.

Thanks @ReignOfComputer & {reporting user}!
2019-11-25 17:57:25 -08:00
Kurt
b37a0c5bfe Add downleveled regular raid movepool verification
#2416
Not having enough badges pulls the level of the captured mon down

need more info if the other raid types behave similarly
2019-11-25 08:52:03 -08:00
Kurt
5dec94d456 Handle banned form eggs with more flexibility
Closes #2519
better to not generate the encounter as opposed to flagging it after
generation
2019-11-25 00:16:16 -08:00
Kurt
c446ff5b51 Fix non-galar egg moves passing
Closes #2516
2019-11-24 18:18:26 -08:00
Kurt
e1e7bf321b Add South Lake Miloch for den 42
#2416
2019-11-24 11:07:31 -08:00
Kurt
64d94903ff Change fixed ability
0=abil1
1=abil2
2=abil4
3=abil1/2
4=any

probably same as WC8 etc

doesn't have any impact as there's other encounters that allow Hidden
2019-11-24 06:26:33 -08:00
Kurt
96f6db0e38 Add recognition for distribution raids
Closes #2457
2019-11-23 22:23:43 -08:00
Kurt
cccf2a1939 Fix flawless IV count check
#2506 trapinch
2019-11-23 14:46:09 -08:00
Archit Date
f96eafa682 grab correct evo stage 1 from evocriteria list (#2503)
EncounterMovesetGenerator was using the de-evolution order in the passed evocriteria list
2019-11-23 09:01:09 -08:00
Kurt
e70a2f40b8 Add den crossover via online share
fix ability deferral for non-HA (eg. A4 mr rime encounter)
2019-11-23 08:27:50 -08:00
Kurt
b29fc5216e Add shared moveset transfer
Closes #2501 for now
2019-11-23 07:27:06 -08:00
Chris
03ee264d0c Add Vanilluxe Multiple Encounters (#2499)
* Add Vanilluxe Multiple Encounters

Vanilluxe spawns also on any Lake if its snowing
2019-11-22 21:32:39 -08:00
Kurt
d25f388bf5 Fix dexnav relearn checks
Closes #2491
Thanks @NinFanBoyFTW !
2019-11-22 19:59:40 -08:00
Chris
97f156364d Update Multiple Encounters for Lakes (#2498)
happens also for:

Drifloon, Wingull, Goldeen, Frillish, Magikarp

but theese aren't listed, feel free to add new encounters.
2019-11-22 18:26:47 -08:00
Chris
e90d2fbc29 Also Seaking have multiple Locations (#2495)
^
2019-11-22 08:05:46 -08:00
Chris
4c9815c17e Add Multiple Gyarados Spawns (#2493)
Gyarados Spawns in Area 1:
North/East/South/West Lake Miloch, 

Area 2:
the Lake of Outrage (in a Wild Area)
2019-11-22 08:04:17 -08:00
Chris
8bdc110e2b Added Multiple Lapras Spawns (#2492)
Lapras Spawns in Area 1:
North/East/South/West Lake Miloch, 

Area 2:
the Lake of Outrage (in a Wild Area)
2019-11-22 08:03:16 -08:00
Kurt
4b3d85d5e6 Add multi-location strong encounter handling
#2484
OH BOY REUSED INDEXES
smart to save space, but a small pain for legality

feels pretty bad breaking up abstractions for every minor difference in
verification...
2019-11-21 21:44:41 -08:00
Kurt
5235c9b252 Revert "Add lapras encounter location?"
This reverts commit e4e516d1c2.
2019-11-21 21:14:45 -08:00
Kurt
e4e516d1c2 Add lapras encounter location?
#2484
The other lapras encounter was found by @sora10pls and was lv56; we're
assuming this other lapras is the encounter (for now).
2019-11-21 20:59:24 -08:00
Kurt
4c8dd0cb3a Defer rather than reject
#2490
2019-11-21 20:05:20 -08:00
Archit Date
e93bc5e67c Misc Nest Fixes (#2490)
* fix A3 and A4 ability values

private > internal so it can be used in Encounter Nest matching

* reject ability number 4 if ability is from A3
2019-11-21 20:03:02 -08:00
Kurt
b9e32c67a0 Add encounter static deferral oop
We've already been doing something similar for the deferral check; just
merge the logic into the base object
Closes #2489
2019-11-21 20:02:08 -08:00
Archit Date
93028b3439 modify nest locations based on serebii (#2483)
https://serebii.net/swordshield/maxraidbattles.shtml
2019-11-20 23:02:54 -08:00
Kurt
f6c6639078 Add online den location
There's still the down-leveled issue with high level moves. fun.
2019-11-20 23:02:31 -08:00
Kurt
473afb8377 Initial rough draft of nest location matching
nest data doesn't match what's expected, but recognition is ready for
tweaks
2019-11-20 17:07:55 -08:00
Kurt
c6f515c755 Use more performat array join 2019-11-20 17:07:55 -08:00
ReignOfComputer
f19193c66f Static Locations Update (#2475)
* Static Locations Update

- Removed version lock on Motostoke Stadium Vulpix (may want to investigate Growlithe)
- Wild Area Updates
- Other Static Updates

* Squeeze in 2 more Statics

* Rhydon Static Location

Last one I promise.
2019-11-20 11:38:25 -08:00
Kurt
8294d77464 Add Carkol static loc 2019-11-19 20:24:12 -08:00
Kurt
2c5a7cd5de Add linoone strong loc 2019-11-19 19:41:30 -08:00
Kurt
feef1c1122 Add 2 more strong locations 2019-11-19 19:27:57 -08:00
Chris
7ef4fce89e Add Eevveelutions Spawns for Lake of Outrage (#2471)
All Eeveelutions spawns at the Lake of Outrage, based on the weather?
2019-11-19 19:21:41 -08:00
Kurt
18b20e09d2 Add leafeon location 2019-11-19 19:03:39 -08:00
Kurt
e6476e943b Change Gender to OT Gender
ty @sora10pls for confirmation
2019-11-19 18:55:03 -08:00
Kurt
0f4598ff66 Update some comparisons 2019-11-19 18:02:57 -08:00
Kurt
85fa6e0273 Add more strong encounter locations 2019-11-19 17:07:11 -08:00
Kurt
fa344208b2 Add crossover location handling
Closes #2461 by implementing slightly differently

Dictionary instead of new[] every area
Checks original met location first before attempting the dictionary
lookup (missing in pull request)
Easy path forward if LGPE crossover is needed

Potential issues: Since encounter types aren't marked, shaking trees and
fishing encounters are allowed to cross over. Maybe need to have some
marking for encounter slots or something...
2019-11-19 08:38:18 -08:00
ReignOfComputer
0230dafe2b Wild Area Updates from RoC's PC (#2460) 2019-11-19 08:13:53 -08:00
Kurt
a368b81519 Minor clean 2019-11-18 22:48:03 -08:00
ReignOfComputer
0ef6f024d6 Wild Area Updates from #2416 (#2459)
https://github.com/kwsch/PKHeX/issues/2416
2019-11-18 22:21:13 -08:00
Kurt
f88388cb70 Add Form (AltForm) to IEncounterable interface
All of the encounterable templates have Form anyway; funny that I was
consistent naming them all differently than pkm.AltForm :)

Closes #2452
2019-11-18 22:20:55 -08:00
ReignOfComputer
6d95fa5884 Wild Area Updates from RoC's PC (#2456) 2019-11-18 20:26:38 -08:00
Kurt
1df90199e3 Rework GetBaseSpecies to return EvoCriteria
#2452
2019-11-18 20:26:11 -08:00
Kurt
5a4c026dc7 Restrict egg related species fetch to EvoCriteria
#2452
2019-11-18 20:10:39 -08:00
Kurt
535397cf5e Consolidate egg ctor with args
Form is an absolute requirement for the encounter data.

#2452
2019-11-18 20:01:48 -08:00
Kurt
1ea3976805 Split up Encounters8
Nests in their own file
Encounter types in their own files
2019-11-18 19:23:01 -08:00
Kurt
e9fdc721df Add chewtle 2019-11-18 18:42:10 -08:00
Kurt
3aa3a29264 Add 3 more static enc locations 2019-11-17 22:04:52 -08:00
Kurt
47be249331 Rework evo tree chaining to track form
Now recognizes & reverses form-changing evolution chains like Sirfetch'd

basically the whole process is to build the tree but point in the
opposite direction (for de-evolution paths)
2019-11-17 21:45:53 -08:00
Kurt
4bcf60746b Add egg move sharing checks
Was referencing wild caught mons that are given a single egg move; this
logic handles shared egg moves too via daycare.

Probably need to rework SplitBreed into a dictionary; this might not
catch Mime/etc split breeds if they have different tables.
2019-11-17 17:14:21 -08:00
Kurt
c2dce518c2 Invert sign of fake met locations
Suggested encounters check < 0
2019-11-17 16:03:53 -08:00
Kurt
d4c5919e5e Revisions for some static encounters
Identified a few more
2019-11-17 15:50:41 -08:00
Kurt
ea822e9fcd Add raid flawless IV check (speculation) 2019-11-17 09:55:27 -08:00
Kurt
86a20afe8e Minor style fix 2019-11-17 09:47:10 -08:00
Kurt
524ceb7bf9 Fix dracozolt species ID
heh dunno how that happened
2019-11-16 15:02:32 -08:00
Kurt
dbda5e6934 Update comments
align all, add location text for motostoke 3(4) encounters
2019-11-16 14:37:00 -08:00
Kurt
e5bd026eec Add static crustle location
ty @ReignOfComputer
2019-11-16 12:46:24 -08:00
Kurt
29d52e065f Don't generate invalid sister-pair eggs 2019-11-16 09:00:05 -08:00
Kurt
848737b2a0 Remove giga gender lock
can be female
2019-11-15 21:05:19 -08:00
Kurt
ab7e920410 Update toxel static encounter def
flawless attack IVs, yay
2019-11-15 19:43:09 -08:00
Kurt
cefb56a749 Sword/Shield Update 2019-11-15 17:52:08 -08:00
Kurt
e3efa65160 Cleanup
handle messages for dirty cleaning :)
2019-10-26 12:33:58 -07:00
Kurt
1c418e8394 Add advanced format output
groups together by encounter slottype (grass, water, etc) for a little
more detail
2019-10-25 19:53:32 -07:00
Kurt
02420d3e93
PKHeX.Core Nullable cleanup (#2401)
* Handle some nullable cases

Refactor MysteryGift into a second abstract class (backed by a byte array, or fake data)
Make some classes have explicit constructors instead of { } initialization

* Handle bits more obviously without null

* Make SaveFile.BAK explicitly readonly again

* merge constructor methods to have readonly fields

* Inline some properties

* More nullable handling

* Rearrange box actions

define straightforward classes to not have any null properties

* Make extrabyte reference array immutable

* Move tooltip creation to designer

* Rearrange some logic to reduce nesting

* Cache generated fonts
* Split mystery gift album purpose
* Handle more tooltips
* Disallow null setters
* Don't capture RNG object, only type enum

* Unify learnset objects
Now have readonly properties which are never null
don't new() empty learnsets (>800 Learnset objects no longer created,
total of 2400 objects since we also new() a move & level array)
optimize g1/2 reader for early abort case

* Access rewrite
Initialize blocks in a separate object, and get via that object
removes a couple hundred "might be null" warnings since blocks are now readonly getters
some block references have been relocated, but interfaces should expose all that's needed
put HoF6 controls in a groupbox, and disable

* Readonly personal data
* IVs non nullable for mystery gift
* Explicitly initialize forced encounter moves
* Make shadow objects readonly & non-null
Put murkrow fix in binary data resource, instead of on startup
* Assign dex form fetch on constructor
Fixes legality parsing edge cases
also handle cxd parse for valid; exit before exception is thrown in FrameGenerator

* Remove unnecessary null checks
* Keep empty value until init
SetPouch sets the value to an actual one during load, but whatever

* Readonly team lock data
* Readonly locks
Put locked encounters at bottom (favor unlocked)

* Mail readonly data / offset
Rearrange some call flow and pass defaults
Add fake classes for SaveDataEditor mocking
Always party size, no need to check twice in stat editor
use a fake save file as initial data for savedata editor, and for
gamedata (wow i found a usage)
constrain eventwork editor to struct variable types (uint, int, etc),
thus preventing null assignment errors
2019-10-16 18:47:31 -07:00
Kurt
a70769dc76 Remove static encounter voltorb def
unused ingame; only electrodes are static

Closes #2399, ty @steph9009 !
2019-10-11 08:19:35 -07:00
Kurt
4baf745af8 Use some c#8 sugar
static local functions
switch expressions
using usings :)

nullable next?
2019-10-07 18:40:09 -07:00
Kurt
87f43a47d8 Bump lang version to 8
some lang upgrades
2019-10-04 20:10:50 -07:00
Kurt
255cdc6ae0 Seal r2
https://www.reddit.com/r/csharp/comments/dd5c1o/til_sealed_override_modifier/

only a few instances for now
2019-10-04 15:56:22 -07:00
Kurt
d3b0c392b2 Minor tweaks
no functional change
2019-10-03 22:21:33 -07:00
Kurt
8d8adde2b1 sealed
sealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealedsealed
2019-10-03 19:09:02 -07:00
Kurt
ab0b8979e9
Add swsh content placeholders (#2392)
placeholder content until real data is dumped
2019-09-23 16:56:47 -07:00
Kurt
3c50983afd Use less efficient IsLevelWithinRange, for clarity
See previous commit for discussion; it's easier to read and maintain
this rather than have the precomputed min/max comparisons.

LevelMin - minDecrease <= min && max <= LevelMax + maxIncrease;
See EncounterArea7b:
Since we know min and minDecrease (0) before doing the linq filter we
can precompute the lowbound, same for highbound; but this isn't
immediately obvious to the reader. The perf cost is pretty much
negligible in the big picture, so leave it in the more readable state.

Thanks @fattard & @ammako !

#2389
2019-09-19 22:54:53 -07:00
Kurt
a4a0e3ac6e Fix flute level amp direction
The inputs to "IsLevelWithinRange" are the highest value the
lowest-level can be, and the lowest value the highest level can be...
seems confusing (hence the original error).

If a slot is 6-7, with a wild encounter (flute), we can go +/-3 from
6-7, which is 3-10.
With an encounter of level 5, the inputs are: 5+3, and 5-3 (8, 2).
Since 8>lvlmin and 2<lvlhi, we can get a level 5 pkm from the slot
(using a negative flute yielding a -1 adjustment).

I could probably refactor it to be a 3-input signature (lvl, lvlneg,
lvlpos), and have it do LevelMin - lvlneg <= lvl && lvl <= LevelMax +
lvlpos

I should probably refactor these methods to do minLevel & maxLevel (so
baseSpecies.Level to CurrentLevel for pkm that lost their original met
data) but nothing needs the extra logic at this time.
2019-09-19 22:37:56 -07:00
Kurt
b41f2a3062 Extract logic from PKX
Extract Species Name logic to SpeciesName
Extract Language logic to Language
Remove FormConverter wrapper for string[] fetch
Rearrange some logic to more appropriate locations, update access
modifiers / types
Move some pkm array methods to arrayutil, make generic

PKX.GetVCLanguage was a dupe of _K12.GuessedLanguage() so just expose
the method

PKX is now back to pkm data manip only
2019-09-18 19:58:23 -07:00
Kurt
972e35a289 Minor reorganization
Move the ea32->array creation to the actual class
2019-09-13 09:08:12 -07:00
Kurt
aa6f803ba9 fix g7sm trade strings
borked in a prior commit, nice string reference
2019-09-13 08:36:21 -07:00
Kurt
734aa33898 Split encounter areas, relocate slot finding to obj
Now logic is reasonably split, and each format of area has its own way
of yielding slots

Too much junk with checking flute boosts or catch combo applicability;
just let the area dictate how slots match.
2019-09-12 23:20:52 -07:00
Kurt
477187a66c Split EncounterArea into game-specific classes
Generating encounters from an EncounterArea is getting a little stupid
without inheritance; each type can now have its own specific behavior
without checking for each individual type of generation pattern. Will
add the abstract method implementations in a future commit

Move some string[] array fetch (for all languages) to Util
2019-09-11 22:06:24 -07:00
Kurt
62d08d7c30 Misc clean
split some methods with optional parameters=null
add more xmldoc
replace some magic numbers -> enum/const references
consolidate common array operations (span soon maybe?)
2019-09-10 00:21:51 -07:00
Matt
afd4ff25a5 Fix off-by-one (#2382) 2019-09-02 19:28:48 -07:00
Kurt
0fc9b4dd15 Fix lgpe init
oops prior commit
2019-09-02 19:07:20 -07:00
Kurt
ef5ff32c3c Add GO transfer restrictions for min level
Closes #2381

Keep Raichu and Marowak at the end for ez referencing. Keep a separate
refence for alolan kanto stuff for futureproofing

Might want to improve the EncounterArea abstraction to do the
slot-finding labor themselves, but whatever, hardcode stuff until swsh
throws new monkey wrenches in. A good idea would be a dictionary with
level forcings [species | form << 10] = X and use the dictionary to
check on slot creation
2019-09-02 18:38:12 -07:00
ReignOfComputer
33ae5b3ac5 Add Realgam Tower to Colosseum Encounters (#2368)
https://github.com/kwsch/PKHeX/issues/2367
2019-07-30 08:43:30 -07:00
Kurt
db632905fd Remove WasEgg setter
WasEgg (aka WasDefinitelyAnEgg) from stored properties is one thing,
WasEgg from encounter info is another; don't mix
2019-07-25 17:42:20 -07:00
Kurt
b5945624eb Add VC2 trade OT gender check
Closes #2343 ty @WEERSOQUEER !

#2338 was referenced by
4d08e21126
, that commit was incorrect. Looks like these 2 have OT Gender female.

Instead of marking every trade MALE except for these two, just update
the handling (i'll probably regret this lol)
2019-06-29 17:43:09 -07:00
Kurt
c8747d4ede Apply OT mismatch deferral to gen2
Check the OT length for the deferral

other encounters are more permissive than trades, hence why we defer
unless we know for certain. Same OTs are possible, except for the
too-long ones!

Closes #2338 , thanks @WEERSOQUEER !
2019-06-27 21:38:24 -07:00
Kurt
4d08e21126 Explicitly check VC in-game trade gender
can't have Female ever, so check == 0
#2338
2019-06-27 21:24:08 -07:00
Kurt
da93a19c05 Add edge-case transfer OT cases
Needs to be checked prior to the strict Array Index search, as we can't
have an exact string match.
can probably be revised to a StartsWith to only check for the specific
language match, but that's a little less obvious & extra work :)
#2338
2019-06-26 21:19:37 -07:00
Matt
7472ba8152 Encounters cleanup (#2335) 2019-06-25 10:55:35 -07:00
Kurt
6b18208ccb Fix g2 trade OT check
Closes #2332 thanks @WEERSOQUEER !
2019-06-24 15:45:52 -07:00
Kurt
2b8ef9236a use some explicit dex numbers as enum 2019-06-01 10:22:49 -07:00
PP-theSLAYER
88d7be62d9 Removed Special Funfest Poliwag & updated min Lvl. (#2315)
According to the link below, the official page states that Poliwag's announcement was a mistake, and they clarified it would not be appearing.
This message was echoed across various pages (Sapporo, Fukuoka, Tohoku), not just the Yokohama one.
https://voice.pokemon.co.jp/stv/yokohama/2013/08/post-2286.html

Additionally, based on tests from me and jojo, Funfest missions forces the grotto encounters to be max level (of the individual grottoes).
https://projectpokemon.org/home/forums/topic/39810-unlock-all-funfiesta-missions/?do=findComment&comment=245303
2019-05-27 00:39:36 -07:00
PP-theSLAYER
968f850138 Added Funfest week 3 encounters (#2312) 2019-05-21 23:37:47 -07:00
Kurt
d1bc1d07c8 Disallow shiny aura
if hadou were here, it'd get the same anti treatment too
2019-05-17 17:48:45 -07:00
Kurt
73b61e5bf0 Add gender changed azurill evo pokewalker edge case
Closes #2311 , thanks @SpiredMoth !
2019-05-15 17:14:48 -07:00
Matt
25985f11e6 Fix Static/Gift IV method call (#2310) 2019-05-15 12:07:48 -07:00
Kurt
4703a3d364 Fix incorrect method call
IVs for regular trade gifts can have random IVs; only VC-era have purely
fixed IVs.
Closes #2300
2019-05-11 17:03:22 -07:00
Kurt
4b770e62d9 Simplify and relocate wurmple evo logic 2019-05-11 14:25:58 -07:00
Kurt
332784d34b Misc updates
parameter name lowercase
simplify some comparisons/calcs
reuse comparison methods
wrap memory dump into readonly struct
2019-05-11 00:59:07 -07:00
Kurt
55189a6967 Extract most common location numbers to class 2019-05-10 20:46:49 -07:00
Kurt
042e5176a6 Remove hardy shuckie & version split
Not version specific; I'm assuming the 00020003 PID is a result of
hacking the save file to change OT gender. Legitimate saves haven't
yielded the Hardy PID. Changing gender probably results in a bad
pointer, fetching the wrong value.

Closes #2290
2019-04-30 17:03:12 -07:00
Kurt
35851fcf5c Simplify and enhance expression
cache fetch of PersonalInfo (avoid re-fetching)
If event, the pkm wasn't bred with ditto
If genderless or male-only (except nido/volb), assume ditto
2019-04-16 23:07:47 -07:00
Kurt
74a45c436a Remove machoke trade catchrate restriction
reverts to 90
Closes #2282, also evident in RoC's PC files (as 90 catch rate).
2019-04-12 22:46:05 -07:00
Kurt
b1ead9e630 Split StringConverter into smaller pieces
reduces loading time (don't have to allocate conversion arrays when
launching a gen7 game), and separates things to easier to manage
locations

reworks gen3 string encode/decode, no longer does 3->4->5 and 5->4->3;
instead goes straight to the end result without an intermediary format.

String sanitization should probably be broken up rather than reused, oh
well.
2019-03-20 21:50:44 -07:00
Kurt
8bc949152d Enhance IEncounterable list summarization
separates by type (wild, egg, etc) then groups by generation, listing
the locations and games that can obtain it in that location
2019-03-19 22:05:13 -07:00
Kurt
7e8154fa62 Make parsing flexible / diacritic insensitive
Flabébé if users manually type it :)
2019-03-18 18:09:48 -07:00
Kurt
53dbdf62f7 Add more test cases, case insensitive parse 2019-03-18 00:04:17 -07:00
Kurt
5e3b390fe1 Add learnability API and tests 2019-03-17 22:19:46 -07:00
Kurt
d975081a86 Add short/long name property differentiation 2019-03-17 22:19:37 -07:00
Kurt
3eed1370c1 Minor simplification
if conditional checks >=3, and all subsequent checks require Valid; add
this to the continue condition, and remove unnecessary comparisons

update some comments
2019-03-16 20:07:30 -07:00
Kurt
30e36579be Misc updates
add more xmldoc
revise some comments for clarity
redo a little bit of logic for perf
rename some methods for better description
2019-02-24 13:57:10 -08:00
Kurt
df94afa711 Misc updates
extract some enums to core, use Enum.GetNames to do string fetch
make stamp listbox taller
clean up Display*ID setters
2019-02-21 21:54:41 -08:00
Kurt
5f4241063f Misc verbosity reductions
hide enum name
2019-02-21 20:44:31 -08:00
Kurt
c9e894a46d Misc reductions
hide setters for LegalInfo outside assembly (shouldn't overwrite the
stored values)
update GenNumber to Gen* if appropriate; GenNumber checks for first Gen*
to match, is a little more explicit and quicker than calling twice when
checking a range
2019-02-21 20:41:04 -08:00
Kurt
941b1b5c47 Extract some reused logic
Put the methods in Tables4; kinda breaks the 'only arrays here' rule but
they only reference values in this file(partial class).
2019-02-20 22:10:15 -08:00
Kurt
7c3e5aa83c Make RandomGender a method instead of property
See pkNX for similar change; the functionality is really *method*
2019-02-17 22:13:40 -08:00
Kurt
d1f6a5a3ff Misc clean
no functional change
2019-02-15 11:46:46 -08:00
Kurt
e79f46673c Refactoring iencounterable->pkm
SetPINGA{S}(pk, criteria) -> pid,iv, nature, gender, ability (stats
future?)
memes aside, this is where criteria data is forced

Split N encounterstatic (has fixed PID and special flag) from
EncounterStaticPID
2019-02-09 11:37:20 -08:00
Kurt
383d4b7700 "" -> string.Empty
be explicit that the string is empty rather than possibly missing
disallow encrypted export for BK4 (they're not encrypted), removes type
check
simplify replaceall in showdownset (don't call ReplaceAll 4x, just get
valid chars and rebuild)
simplify get ribbon sprite name (precompute ToLower and appended values
2019-02-07 21:40:20 -08:00
Kurt
59b41937e1 Misc variable name changes
readability++
2019-02-06 23:28:02 -08:00
Kurt
d03ff30140 Fix ita traded lgpe diglett OT
ty ThePunish3D!

https://projectpokemon.org/home/forums/topic/46143-bug-in-last-update/?do=findComment&comment=240159
2019-02-05 17:09:47 -08:00
Kurt
f481404503 Misc clean 2019-02-02 10:19:41 -08:00
Kurt
aa022fad40 Misc refactoring
remove some null usages, return an empty array instead
reduce as arg
2019-02-01 23:08:03 -08:00
Kurt
6353e8d84d Add special set operation for alph rocksmash
closes #2253
ty @Subject21J & @ReignOfComputer
2019-01-27 11:08:21 -08:00
Kurt
147b676d8c Misc api accessibility tweaks
disable GeneratePKMs from throwing an exception (it's a testing flag,
not to leak out if someone wants a debug dll I guess)
expose FixedGenderFromBiGender
expose ribbon interfaces
2019-01-26 14:48:32 -08:00
Kurt
8652677a79 Misc tweaks
showdownset: contains char instead of string
gameinfo: static readonly array instead of redefining new on update
legality: order of operation / value reuse / simplification / comments
pkx: compare char instead of single character string
header/footer: move assignment into method as an out instead of ref
2019-01-20 21:55:28 -08:00
Kurt
41a3989b53 Consolidate encounterlink into mysterygift
use synthetic wondercards to match link gifts
2019-01-12 23:50:31 -08:00
Kurt
4f1375ad6a Add route 1 to sky location table
Closes #2241 ty @Ninjistix !
2019-01-12 17:21:57 -08:00
Kurt
950ddcf9fd Reduce npclock object size
24 bytes per object -> 16 bytes
2,624 objects are made for legality checking; reduces from 73KB to 41KB
removing unnecessary clone recreation -> count from 2624 -> 414 (41KB to
6.6KB)
yay 10x reduction; not huge in the big picture but a fun exercise
2019-01-06 20:58:57 -08:00
Kurt
0c9b760470 Move GetIV to pkm, misc simplifications
remove linq for characteristic calc (get max IV) and others
remove some reliance on new[] for iv/ev
pk5 replace bitmagic with property get->set copy for cleanliness
2019-01-05 10:51:41 -08:00
Kurt
4dad475fcd Fix colo lock check regression
oops; tests pass now
2019-01-04 00:10:44 -08:00
Kurt
90e5776dbc Update ereader 0IV detection
the ereader mons are nature/gender locked too, so unroll a little prior
to rechecking the overall team (with ereader mon included). Have to do
it this way as a lock can pop if the ereader data matches a prior spread
before the prior teammate can be generated.
2019-01-03 21:29:19 -08:00
Kurt
272a29a641 Differentiate DP/Pt Shaymin
fateful isn't on dp shaymin even though it's an illegal encounter
2019-01-03 17:04:32 -08:00
Kurt
bd6494d8c7 recognize gen12 italian trade OT
https://projectpokemon.org/home/forums/topic/46143-bug-in-last-update/?page=3
Thanks ThePunish3D!
2019-01-03 15:47:41 -08:00
Kurt
bd56999b20 Increase search flexibility
add more version fetch methods, add reset method to reset encounter
priority
#2219
2018-12-30 17:30:57 -08:00
Kurt
2ecd3f1f30 Replace IV3 with FlawlessIVCount
Other games may vary the flawless IV count so best to have consistent
declarations
(the vc transfer encounter has 5 or 3 depending if it's a mew/celebi)
2018-12-30 10:33:00 -08:00
Kurt
82eae79823 Remove cosplay fixed IV
Was added a few months ago
https://github.com/kwsch/PKHeX/pull/2117

Game ignores the fixed IVs and instead does 3 flawless IVs
2018-12-30 01:10:53 -08:00
Kurt
78ff441e8b Update iencounterable api with new criteria arg
rearrange some logic for clearer function (extract some methods)
2018-12-29 22:24:34 -08:00
Kurt
c2422d6927 Misc updates
possibly gonna update the iencounterable api for criteria
check/enforcement, rather than just generating random encounter data.
2018-12-29 22:19:44 -08:00
Kurt
d5a8d29088 Misc updates
reduce some allocs, clearer names/enum usage
2018-12-27 20:24:24 -08:00
Kurt
2d75e93ef0 Move encounter matching logic to iencounterable
generator logic is now clean
2018-12-27 01:00:08 -08:00
Kurt
22b9da58e2 Add priority setting for yielding possible encs 2018-12-15 21:34:50 -08:00
Kurt
ec4088b1fe Cleanly lay out hgss swarm data 2018-12-02 14:46:17 -08:00
Kurt
77a4691a58 Add remainder of relicanth swarm data
https://projectpokemon.org/home/forums/topic/48702-bug-ss-relicanth-encounter-error/
Thanks finalevil151!
2018-12-02 14:39:24 -08:00
Kurt
d41197828b Misc fixes
apply version after adding (was previously left as Unknown version ID)
add Route 9 to rarespawn flying list (thanks @sora10pls )
2018-11-29 16:06:25 -08:00
Kurt
71f1e6238a Misc fixes 2018-11-23 10:15:49 -08:00
Kurt
58080f36c9 Add WB7 and legality detection logic
Derived from WC7 with minor alterations (dynamic OT/Nickname which is
stored in the Full data). Since the 0x108 is not stored in the save
file, just keep the full data around.
2018-11-21 12:24:41 -08:00
Kurt
0ebfb38717 Add Route 20 to sky encounter rarespawn list
Thanks @ReignOfComputer !
2018-11-20 23:00:16 -08:00
Kurt
7bd3bfc52e Update rarespawn restrictions for birds 2018-11-20 13:38:49 -08:00
Kurt
ba1a7c2bcf Fix broken tests
rework getblank for version specific
2018-11-19 16:14:49 -08:00
Kurt
4022d7fea9 Add check for invalid pgo shiny transfer
Thanks @sora10pls !
2018-11-19 13:07:21 -08:00
Kurt
70fe7f58ee Remove eevee, revert porygon 2018-11-18 20:39:15 -08:00
Kurt
67cc6bdead Account for wild catch combo/lure level boost
Route 4 sandshrew captured at level 13 (12 is max)
+1 for now, not sure if it can go higher
2018-11-18 16:17:39 -08:00
Kurt
17348c1808 Add bird rare spawns 2018-11-18 10:36:28 -08:00
Kurt
1c0b2488ef Update lapras/porygon gift locationIDs
Thanks Asia81!
2018-11-18 09:41:52 -08:00
Kurt
029e0e0a08 Manually add rare slot locations
placeholder; hopefully this isn't permanent
2018-11-17 15:12:32 -08:00
Kurt
a2eef9deae Misc fixes
it is version exclusive; fix magikarp speed IV
2018-11-16 16:44:25 -08:00
Kurt
720e04ff91 Allow 7b trades to be shiny
remove the todo, thanks twittersphere

remove version exclusivity for puppycat (can be done on either ver)
2018-11-16 14:20:06 -08:00
Kurt
ed5abbd686 Add puppycat NPC location
Thanks (twitter) thelostdogg!
2018-11-15 18:39:30 -08:00
Kurt
94b924fdfc Add ingame trade IVs and random AV notes
exclusive maximum, not inclusive
2018-11-15 17:35:34 -08:00
Kurt
22063d3907 Add ingame trade met locations 2018-11-14 23:04:40 -08:00
Kurt
830c2cbb29 Add GO encounter area/slots
Level ranges per species TBD
2018-11-14 17:40:41 -08:00
Kurt
24c541eeef Get savefile-context sensitive pkm
Generating a IEncounterable -> SAV for pb7 can't start with pk7
2018-11-13 19:19:20 -08:00
Kurt
f11fa8752c Use pkm format specific evolutions, gg deviations
GG has slightly different evos from usum, don't bother adding a new
binary.
2018-11-13 19:04:58 -08:00
Kurt
5abbe6dceb Add fetching for lgpe encounters (legality checks) 2018-11-11 22:46:03 -08:00
Kurt
101149eb2e Skip eggs for gg (like cxd) 2018-11-11 14:19:02 -08:00
Kurt
9d2be1da9f Add beginnings for 7b encounter asset fetch 2018-11-11 13:12:24 -08:00
Kurt
1827b32d8f Add init function for wc7 gg files
pretty sure these will pop up soon as the pball plus doesn't send the
mew itself
2018-11-11 13:09:04 -08:00
Kurt
f38c46f5ec Misc updates 2018-11-10 21:07:31 -08:00
Kurt
453f43edd8 Allow shiny xd duking gifts
https://projectpokemon.org/home/forums/topic/48279-issue-with-ribbon-legality-shiny-dukings-and-japanese-text/
2018-11-08 18:58:52 -08:00
Evan Dixon
9c87ad2977 Port tests to .Net Core (#2156)
* Rewrite tests with XUnit and .Net Core
* Add better "because" message
* Skipping test that was not ready & convert the fact to a theory
* Tweak casing
* Convert select date tests to theories
* Make the GetStringList load lock safer
2018-11-06 15:25:35 -08:00
Kurt
daf41da91b Add more pokewalker moves
Thanks theSlayer!
2018-11-03 12:42:11 -07:00
Admiral-Fish
69b6ea57a3 More nature lock data (#2154)
* Fix lock data

Don't have data on Speal phenac, Spheal post, and Ursaring from colo so can't verify that.

* Fix e-reader data
2018-11-01 22:38:33 -07:00
Kurt
fe989d48fe Misc prep updates
Update comments / xmldoc
Add a savefile storage compressor (ie array[] with empty interstitials
-> list); return true if the compression moved anything (repopulate
views), and the count of occupied slots in the list.
Add saveblock base class; I haven't really liked how SAV6/7 do all the
logic; I'll still expose properties that will then point to a saveblock.
Cuts down clutter.
Add template Dex manipulator, with gen6/7 implementations
Speculate sequential gp/ge gameversion IDs
2018-11-01 15:38:09 -07:00
Admiral-Fish
6a5ee7bf6d Fix Electabuzz data (#2151) 2018-10-31 23:16:13 -07:00
Kurt
8f9cc6cd7e Fix xmldoc ampersands 2018-10-31 13:52:09 -07:00
Kurt
908c98b876 Switch lock checks to newer more complete check obj
Now accounts for the shiny locks & associated restrictions, abusing the
recursion by setting & unsetting the required CPU Trainer's shiny value.

Repoint all test methods to use the new obj methods
2018-10-29 22:49:04 -07:00
Kurt
afffaaa43c Enable full shadow lock checks
If you find any edge cases (the code does not account for shiny locks
yet) pls lmk, would be nice to have confirmed tests :) :)
2018-10-29 19:44:30 -07:00
Kurt
35143630a0 Add ereader locks 2018-10-29 19:43:32 -07:00
Kurt
1b57acc6a7 Check all locks for legality checking
Single->All
2018-10-28 20:28:56 -07:00
Kurt
a728e97d40 Fix Butterfree lock
Ninetales is female
2018-10-28 20:28:02 -07:00
Kurt
4268239c12 Continue work on shadow lock checks
Now gets count=2 tests working

yield return new SeedFrame { FrameID = ctr + (l.Seen ? 5 : 7), PID = pid
};
used to be ctr + 6, needs to alternate even-odd
all 2 lock cases pass, but didn't make lock3's pass. Something else is
still amiss :)

break out some classes for the solidified lock objects
2018-10-28 11:15:40 -07:00
Kurt
39f98a4a94 Misc qol updates
Check max case for level first, then iterate upwards (eliminates inner
if)
change wc* nature to sbyte (update comparisons, 0xFF too magic-y)
use Rand.Next(x) instead of (0, x)
2018-10-27 21:59:31 -07:00
Kurt
ed3699fbb4 Update Ho-Oh mattle check
More languages than Italian have a rule-breaking name. Rework checks a
bit
Flag eggs more accurately
Update force hatch to move Link Trade met location to Egg Location

fix Ho-oh -> Ho-Oh text strings (correctness is key!)
2018-10-27 16:06:06 -07:00
Kurt
a3e7c4837e Rewrite trade OT/Nick verification, g4 shuckie
Shuckie in HG is not the same as Shuckie in SS.
Use the relatively-recent Nick/OT properties instead of digging through
the encounter table & strings. Ends up being slightly faster.

Thanks theSlayer!

https://projectpokemon.org/home/files/file/3048-kirks-shuckie/?tab=comments#comment-1424
2018-10-27 13:37:03 -07:00
Kurt
e8ad1e227f Update shadow lock table
Thanks @ijuintekka ! Closes #2148
Will check later for commented out tests that should pass.

May end up turning on the first-shadow-lock check feature prior to
release.
2018-10-26 11:14:42 -05:00
Kurt
3d0d8fa649 Add first shadow lock check
Currently toggled off, can be optionally toggled on (I'm not sure that
it's perfect? Random save files have stuff flagged since they don't
match the lock; will have to investigate later)
2018-10-21 21:07:33 -05:00
Kurt
8c4a17335f Add first shadow lock test method
Everything should always pass the first lock check; will add shortly to
any cxd encounter checks
2018-10-21 20:55:02 -05:00
Kurt
c0aae6ab78 Add cxd lock check info & begin troubleshooting
commented out test calls = not working
will have to debug in more detail later; the first lock is always
working at least.

data sourced from
https://github.com/ijuintekka/Eligor/blob/master/Eligor/Spread.cs , not
sure if it's perfect.

can't cleanly condense deviating team appearances as double-shadow leads
can't be selectively encountered. didn't feel like modding lockfinder's
recursive algo to be smarter.
2018-10-20 21:03:04 -05:00
Kurt
93af3e61b7 Add handling for Mt Battle Ho-Oh (italian) edgecase
https://projectpokemon.org/home/forums/topic/47917-colosseum-italian-ho-oh/

there's no shadow ID, so it can have both the short (transferred back)
or full name (never transferred) as CK3 without side effects.

allow 10chars in pkmeditor
2018-10-13 08:07:15 -07:00
Kurt
e8552affca More gb restriction relocations 2018-10-10 16:32:02 -07:00
Kurt
2ad103dd46 Extract gb specific core logic to separate class 2018-10-09 21:07:13 -07:00
Kurt
f65bc2e984 Reduce allocations for gen1 move parse
use shared interfaces
2018-10-07 15:36:32 -07:00
Kurt
fd1009476e Minor logic simplifications
reduce size of encountermoves, split into separate object
only execute gb movedata adjustments for gb
2018-10-06 19:44:50 -07:00
Kurt
4deb5080d1 Misc tweaks
rearrange getmove with respect to tutors; verifycurrentmoves was getting
tutor moves in levelup
extract not-found hint fetch
Expose gen5 block objects (so I can play with saves in linqpad)
2018-10-06 18:45:15 -07:00
Kurt
dc839333b7 Add more parse settings
allows consumers to tweak debatable settings
2018-10-06 13:43:05 -07:00
Kurt
66faa43e03 Add gen6+ fixed ability hot path
Closes #2135
2018-10-06 11:24:46 -07:00
Kurt
f507ab7081 Misc parse settings reorg
makes it more centralized for defining parsing settings, maybe can have
flags to change severity of certain preferential checks
2018-10-05 19:58:30 -07:00
Kurt
ce9d3abbe4 Misc reorganization
Move logical checks using encounter data out of Core.cs

might be possible to excise legality checking objects from
Legal/PKHeX.Core so that a 'slimmer' core can be made
2018-10-04 18:52:00 -07:00
Kurt
03a05364ab Update colo suicune ++
location ID was originally added by:

afde4514e2 (diff-83a32d69355a64376bc77bd07e338a33R446)

I
have another save file that uses met location 110 (like this one) so I
assume it was originally a copypaste error from Sudowoodo.

Change Trade strings to not allocate separate empty arrays.
2018-10-04 08:14:53 -07:00