Commit graph

396 commits

Author SHA1 Message Date
Kurt
9191f023a3 Minor clean
Nullability annotations and some logic simplification
2020-09-06 11:24:54 -07:00
Kurt
8a3804e4b3 Reduce static constructor requirements
Gen1: all are Trade1 objects, and all get the values set; just set the value in the object initializer
Gen2: all are Trade2 objects, set the same version

Gen2 all static encounters already have a version marked. Only thing remaining is to set the language.
2020-09-05 13:06:08 -07:00
Kurt
6b472ffd62 Misc iencounterable->pkm generator fixes
Still some pending stuff like bad mystery gifts

gen2 static encounters on g/s applying met level and not location
gen6 ralts trade (no nickname) being flagged as nicknamed when it shouldn't
gen4 manaphy egg not having a hatch location (worked fine if you transferred it up)
gen3 antishiny gifts not setting their PIDs (jirachi WC3)
gen5 N's pkm gifts setting the wrong nature
gen3 unown not being generated correctly, cosplay pikachu being allowed form0, non-BugCatchingContest no longer require Sport ball, oras dexnav marill now uses the azurill eggmove table
2020-09-03 19:00:46 -07:00
Kurt
90f2ea1749 8/31 - Electric Grass 2020-08-31 18:09:15 -07:00
Kurt
ad4b560071 Minor clean
Remove RibbonWishing as property, just calc on the fly since it's a single case
Update type info for vc transfer to indicate it's an es7
Split up dreamworld encounters as intended, fix logic lol
2020-08-30 22:37:14 -07:00
Kurt
9667e86446 Simplify dreamworld encounter init
precompute result size
set Gen5 as lumped group for common encounters
remove linq usage (besides Sum call, whatever)
GetEncounters now only filters the in-game static encounters rather than the dreamworld too, as those are already filtered by separate arrays.
2020-08-30 19:51:44 -07:00
Kurt
e3ad6ec55d Make multiple-met locations a single object instance
make trade have Any again; it's a marker to apply the gameversion since we're lazy
2020-08-30 19:24:24 -07:00
Kurt
9ce09c8b1b Minor clean 2020-08-30 16:16:22 -07:00
Kurt
5a391bc20c Make EncounterStatic abstract, make Generation property abstract
Merge EncounterGift8 with EncounterStatic8 since there isn't much need to have two separate classes
2020-08-30 16:10:24 -07:00
Kurt
81a693bafe Make Generation property get-only per class
don't need to store an int since it's a const-per-class
2020-08-30 15:35:59 -07:00
Kurt
ce5897ff94 Move version value from Slot to Area to reduce member size & value passing
Restrict some setters to protected only
2020-08-30 11:08:21 -07:00
Kurt
6ee7a8724b
Offload EncounterSlot loading logic to reduce complexity (#2980)
* Rework gen1 slot loading

Slot templates are precomputed from ROM data and just loaded straight in, with tight coupling to the encounter area (grouped by slot types).

* Revise fuzzy met check for underleveled wild evos

Example: Level 23 poliwhirl in RBY as a level 50 poliwhirl, will assume the chain is 25-50 for poliwhirl (as poliwag evolves at 25). Instead of revising the origin chain, just ignore the evo min level in the comparison.

Previous commit fixed it for gen1.

* Rework gen2-4 slot loading

Gen4 not finished, Type Encounter data and some edge encounters not recognizing yet...

* Add feebas slots for old/good encounters

* Begin moving properties

Great news! Gen5-7 need to be de-dumbed like Gen1-4.

Then I can remove the bang (!) on the Area accessor and ensure that it's never null!

* Split off XD pokespot slot encounter table type

* Set area in constructor

* Deduplicate g3 roaming encounters

* Deduplicate xd encounter locations (rebattle)

Only difference is met location; no need to create 500 extra encounter objects. A simple contains check is ok (rarely in gen3 format).

* Make all slots have a readonly reference to their parent area

* Minor clean

* Remove "Safari" slot type flag

Can be determined via other means (generation-location), allows us to reduce the size of SlotType member to a byte

Output of slot binaries didn't preserve the Safari flag anyway.

* Update SlotType.cs

* Handle type encounters correctly

* Merge safari area into regular xy area

* Merge dexnav accessor logic

* fix some logic so that tests pass again

rearrange g5 dw init to be done outside of static constructor (initializer instead)
PIDGenerator: friend safari slots now generate with required flawless IV count

* Add cianwood tentacool gift encounter

* Remove unnecessary abstractions

Fake area just returned a slot; since Slots have a non-null reference to the area, we can just return the slot and use the API to grab a list of possible slots for the chain.

Increase restrictiveness of location/type get-set operations

* Minor tweaks, pass parameters

DexNav observed state isn't necessary to use, only need to see if it's possible to dexnav. Now that we have metadata for slots, we can.

* Remove unused legality tables
2020-08-30 10:23:22 -07:00
Kurt
a62324a5a1
Refactoring some IEncounterable-type'd object initialization and original-generation evo chain (#2974) 2020-08-21 16:35:49 -07:00
Lusamine
f611d0b780
pika pi (#2960) 2020-08-05 19:10:35 -07:00
Kurt
497639d48e 7/31 distribution raids 2020-07-31 18:13:29 -07:00
Kurt
36684ab867 Minor clean
Simplify some expressions
2020-07-31 11:20:48 -07:00
Kurt
05ac8acb5f Phenac City Hexagon Brothers rebattle
Closes #2951
2020-07-29 13:45:33 -07:00
Matt
3a02bf457f
Update GO minimum Level requirements (#2953)
GO Fest 2020 made Alolan Marowak available in wild spawns, and further testing has proved that Raid/Research PKM can be  downleveled to 15 after trading to low-level accounts.

This'll probably end up being deprecated in the future when we have GO->HOME transfer checks, in addition to IV checking.
2020-07-26 08:27:21 -07:00
Kurt
a6a3c6eaaa Refactoring
change some expressions for better perf/readability
2020-07-19 17:48:45 -05:00
Kurt
40ce63873d Reduce gen1 encounter legality startup alloc by 5KB
Use precomputed counts to remove the need to store a cache of read values

rename some variables in ReadSlots1FishingYellow
2020-07-19 14:08:56 -05:00
Kurt
eb7ed44b29 Finish splitting gen1/2 encounter types from parent class
Results in a little more code, but each path is less tangled
simplify some expressions
remove RBDragonair content in favor of a strict filter for catch rate

Move gen1 trade trainer names to stringconverter, since pk1/pk2 shouldn't refer to legality classes
2020-07-19 13:32:40 -05:00
Kurt
705822c965 Abstract some gen1/2 encounter types from their parent class 2020-07-18 15:36:30 -05:00
Kurt
1ecafd8db3
Update Encounters8NestDist.cs
Puts the new encounters in the correct array; the new encounters should now be recognized on the other game version.
2020-07-17 12:18:28 -05:00
Kurt
8c52932bbe Under da sea
did they just give up on version exclusive raids?
get yo shiny wailord
2020-07-16 21:18:37 -05:00
Kurt
e04b96a9b3 Fix dizzy punch egg recognition & gen2 hatch conter verification
Closes #2939
Fixes #2938

Inline some logic where appropriate for egg levels
2020-07-12 20:58:07 -05:00
Lusamine
fdfa10e881
Add a few static/crossover encounters (#2932) 2020-07-08 22:59:08 -05:00
Matt
fa7c8929b1
Update SWSH enc binaries, fix Rotom form/move issues (#2927)
Some zone names were mislabeled in pkNX -- Staryu are not scripted encounters!
Remove altform specific moves from distro/static Rotom, which would erroneously allow illegal mismatches (e.g. Hydro Pump Rotom-1); thanks Abyzab (Discord)!
2020-07-05 11:45:53 -05:00
Lusamine
39040358c1
Add a Whiscash (#2921) 2020-07-03 14:31:19 -05:00
Kurt
e207031920 Shuckle Magic Coat -> Encore
Nice typo! Ty sora10pls(matt) & too salty (via discord)
2020-07-03 10:48:31 -05:00
Kurt
0198179133 Add fixed raid news content
no change in species/form from the crownite ore one afaik; common for both games???

fix type of rigel encount so it shows up in block editor, with correct name (ty matt)
2020-06-29 21:10:12 -05:00
Kurt
065c1cc6d4 Specify version on all defined wc3
rearrange some setters for visual appearances

Closes #2904
2020-06-27 14:21:45 -05:00
Kurt
d2ef98f7d4 Add underground staryu encounters
not in any of our dumps, like crabrawler?
why gf
Closes #2913
2020-06-27 13:56:29 -05:00
Lusamine
565c9a590e
Add some cross boundary encounters (#2910) 2020-06-26 23:31:23 -05:00
Matt
3f09afd4cb
Update TradeGift_R1 (#2909)
Both games have a pair of version exclusive trades on The Isle of Armor, as noted on Bulbapedia.
2020-06-26 11:00:45 -05:00
Kurt
ce5a09055a Merge branch 'master' of https://github.com/kwsch/PKHeX 2020-06-24 18:59:30 -05:00
Kurt
1ae9cb7602 Handle pika/meow soup evolutions
Can lose gmax flag if its current species is able to eat soup, or its origin species could eat soup

this handles stuff like charmander->charizard, as charmeleon would not pass

hopefully there's never a mid-stage evo that has a gmax form, and its final evo doesn't... (don't get any ideas, gamefreak)
2020-06-24 18:59:26 -05:00
Lusamine
bc1538efa5
Add some IoA cross-boundary encounters (#2902) 2020-06-24 07:34:26 -05:00
Kurt
6fb2ebe039 Minor clean
add some xmldoc
2020-06-21 19:46:06 -05:00
Abyzab
a797459543
Additional Cross Boundary Edge Cases (#2891)
* Additional Cross Boundary Edge Cases

The static spawn point right outside Brawlers' cave, all of the pokemon are able to chase the player into the cave and be caught

https://cdn.discordapp.com/attachments/401014193211441161/724112694088695918/a0f06577821f60edf119308675de7894.png
https://cdn.discordapp.com/attachments/401014193211441161/724117077698281502/JPEG_20200621_002242.jpg

Unsure if there were more that spawn in this point that have the same behaviour, but these were the ones I found (w/ Ano0onymouse
 for Shield ones)
2020-06-21 09:33:29 -05:00
Kurt
523f101c82 Add barraskewda location
Closes #2889

Co-Authored-By: Abyzab <abyzab@users.noreply.github.com>
2020-06-20 20:26:54 -05:00
Kurt
4c7c6532bb Check ability deferral with more scrutiny 2020-06-20 13:14:44 -05:00
Kurt
eedaca8712 Fix mistake
oops lol
2020-06-20 12:09:03 -05:00
Kurt
8f24477197
Weezing ingame trade can be any ability 2020-06-20 11:37:37 -05:00
ReignOfComputer
2e584f43fc
Additional Statics (#2883) 2020-06-20 07:51:04 -05:00
Kurt
36dd5ece21 Initial Isle of Armor support
Co-Authored-By: sciresm <sciresm@users.noreply.github.com>
Co-Authored-By: Matt <sora10pls@users.noreply.github.com>
Co-Authored-By: Archit Date <architdate@gmail.com>
2020-06-19 18:51:15 -05:00
Kurt
2cdb5d26db Clean up some method signatures
rename things to be a little more consistent in naming conventions
2020-06-16 21:46:22 -05:00
Kurt
f7d2101500 Update Encounters8NestDist.cs 2020-06-06 09:53:14 -07:00
Kurt
3af369c152 ★Sgr6879 (Copperajah) 2020-06-05 07:31:40 -07:00
Kurt
321a2d120f Add new distribution raids
Add Copperajah crystal (commented); uncomment when released?
2020-06-02 07:09:49 -07:00
Kurt
6aab8ca449 Minor renaming/type change of passed args
Next commit will have more changes where we remove some reliance on PKM.GenNumber, in favor of the passed encounter's generation
2020-05-31 12:12:07 -07:00