Commit graph

686 commits

Author SHA1 Message Date
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