Commit graph

612 commits

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