Commit graph

3061 commits

Author SHA1 Message Date
Kurt
24b55b7b79 Add gen3 roamer pidiv detection
add shiny lock for spiky eared pichu
fix wurmple ECPID comparison (only continue if ALL are wurmple)
slightly speed up comparison of LCRNG spreads, may be worth applying
same approach to others.
2017-05-01 23:41:19 -07:00
Kurt
f1db88026b Add frlg unown PIDIV type
The modified form-finding routine generates the PID gen halves in the
reverse order like events. Due to possible collisions with event PIDIVs,
only run it for unown (since that's all it applies to); the analyzing of
PIDIVs to find incorrect usages isn't really feasible (collision) for
this one.
#1103
2017-05-01 08:37:23 -07:00
Kurt
f19d85002b slight tweaks
reduce nesting, formatting; no functional change
2017-05-01 08:25:20 -07:00
javierhimura
758adf2cff Encounter Type fix and detection of pokemon that should have evolve on trade (#1105)
* Detect encounter trades that evolve on trade and have not been evolved
Detect generation 1 pokemon with special catch rates : krabby trade and Pokemon Stadium
Detect generation 1 pokemon that evolve on trade and have been traded but not evolved
Detect pokemon with tradeback status any but with only encounters from the other GB generation, that means they are WasTradeback
Detect pokemon with moves from the other GB generation, change tradebackstatus to WasTradeback

* Fix dppt surfing and fishing encounter type, is is surfing because the battle background is the same as other surfingfishing encounters

Fix headbutt encounter type, the encounter type depends on the battle background used when battle a pokemon, for headbutt it changes with the player tile, is the player is in a city it will be building encounter, in a grass tile tall grass, in water it is surfingfishing and cave inside a cave. Some locations have more than one possible encounter type, for example routes with trees near the grass, near the water and near non-combat tiles.

Also added slot type headbutt special for the special trees, those trees are all in routes and are only adjacent to non-combat tiles

* Fix encounter type for missing areas with multiple grass encounters types: Mt Coronet, Mt Silver Cave and Stark Mountain (Issue # 1095)

* Fixes and typos

* Check for non-japanese e-reader pokemon, is unreleased
2017-05-01 08:07:20 -07:00
Kurt
ad6a48b7f1 Add gen3 force shiny event PIDIV detection
matches for berry fix zigzagoon

use correct type comparison for checking if national ribbon is to be set
or not; change XDC to CXD for parity with other references
2017-04-30 22:11:51 -07:00
Kurt
527a830bae Add moon ball for gen4 captures
Closes #1102, Moon Ball is id 23 (0x17)

also:
fix spacing of previous commit
2017-04-30 18:28:29 -07:00
Kurt
a2972b6939 Add EncounterType for E-Speed Dratini
#1095
2017-04-30 17:01:47 -07:00
Kurt
0bad6738d4 Add C/XD specific checks
Pokespot: a given PID will satisfy ~37% of the time, flag pokespot
encounters
I can see hatching eggs being a problem, no idea how this would work
2017-04-30 16:53:54 -07:00
Kurt
1ff2a0fdfa Add preliminary CXD checking
quite a few shadow pkm are obtainable in multiple locations, feeling
like duplicating the entries with different location IDs is the way to
go
2017-04-30 12:17:27 -07:00
Kurt
2a28019ef3 Add gen3 event pidiv detection
includes antishiny mechanism detection, needed 2 new enum values to tag
those.
handle overflow case
2017-04-29 23:18:36 -07:00
Kurt
f613960cdc Fix viewing legality as ck3/xk3
ChecksumValid was returning false
2017-04-29 23:13:21 -07:00
Kurt
e814e7291f Add chain shiny and shinyPGF pidiv detection
delete incorrect legality message entry (used a few lines up for super
training flags), is unused.
fix for transferred 8<=xor<16 PIDs in which case the encryption constant
is used (as it is the unmodified PID)
2017-04-29 20:04:54 -07:00
Kurt
6685ae6228 Sync remaining changes
yay
2017-04-29 16:35:32 -07:00
Kurt
82375ca464 Add PIDIV matching
Includes 1 test for each pkm pidiv type, haven't added absolutely every
method possible but it's enough for now
2017-04-29 16:22:32 -07:00
Kurt
2f0eedbe7c Slight refactoring
use a list to collect legality report instead of building a string
remove unnecessary null check (already checked prior)
2017-04-29 15:45:21 -07:00
Kurt
8a5cf27f61 Fix SAV3 block not found editing
Block 4 is used by the pokedex setter, don't set the bitflag if the
block is yet to be initialized in the save file
Closes #1101

Convert a bunch of scattered magic numbers to constants; no functional
change besides a possible resize of SeenFlagOffsets to chop off missing
block offsets.
2017-04-28 18:03:20 -07:00
Kurt
96a20f0ae5 Remove pk7 fullness/enjoyment clearing
https://projectpokemon.org/forums/forums/topic/40552-fullness-and-enjoyment-pkmn-sun-and-moon/
2017-04-28 17:29:02 -07:00
Kurt
803ff951db Add IVs to database clone search hash
simplify expression of clone searching
2017-04-27 09:15:16 -07:00
Kurt
6efdf64bab Cleanup
Update some comments, adjust performance/flow. No functional changes
2017-04-26 22:05:32 -07:00
javierhimura
b14ac67c1f Generation 1 and 2 legal Improvements (#1099)
* Refactor parseMovesForEncounter to gather valid moves for species encounter, some Pokemon can have valid encounters with different source species from the encounter, the valid moves change if the encounter species change because some preevolutions moves are illegal if pokemon caught already evolved.
Example, generation 1 Pikachu that can have a RBY Pikachu encounter and GSC Pichu encounter, the valid moves for the first encounters should not have any Pichu exclusive evolution moves

Also assign the encounter match from gb when parsing moves like the variable Encounter Match, to store the encounter that is valid for the pokemon moves instead the first encounter.

Store the species encounter, this will be needed to check if the evolution is valid for species that evolve leveling with a given learned move

* Add Tradeback Status to the pokemon, this variable for generations 1 and 2 use data like the catch rate to determine if trade between generations 1 and 2 was possible.
If analysis is for VC games tradeback have value NotTradeback for every gen 1 pokemon, but for cart saves some pokemon can be determine that have not been tradeback, if catch rate match species catch rate but do not match a valid generation 2 held item that means the pokemon habe been never traded to generation 2 games, that allow to discart encounters and moves from generation 2.

Also if is not tradeback catch rate is used to filter encounters, catch rate determine in what species was captured the pokemon discarting some preevolutions moves

Also add option for generation 1 cart save analysis to check legal status not allowing generation 2 games, like VC games but with Stadium allowed, like the generation 1 non tradeback rules from Smogon

Also change evolution chains to included generation 2 preevolutions for gen 1 pokemon if tradeback was possible, it is needed to avoid parsemoves to check illegal pokemon like Hitmonchan with Tyrogue level up moves

* Check legal values of generation 1 type and catch rate
Replace pokemon catch rate after changind pokemon species always if pokemon was not tradeback from generation 2, the catch rate will keep unchanged only if it can be a held item and do not match species catch rate (default item)
Also if catch rate is changed use base species catch rate to avoid legal errors if the catch rate of the evolution species if is not possible with the current moves

* Filter ingame trades and static encounters with catch rate for generation 1 non tradeback

* Fix min moves for generation 1 metapod encounter

* Clean up

* Fix encounter level for generation 1, valid moves are those with one level after the encounter level, pokemon can not learn a new move until level up
Clean up type validation
Fix generation 3 fatefull encounter eggs, the pokemon lost the fatefull mark when it hatch

* Clean-up

* Use new variable EncounterSpecies when it is needed to detect the species of the encounter, the old code wont work if the encounter is a wild slots array

* Fix generation 1 evolution chains and catch rate as default held item

* Fix Generation 1 Yellow Pikachu and Kadabra catch rates
2017-04-26 21:27:59 -07:00
Kurt
ece845cd17 Add item modify existing counts
Closes #1097
2017-04-25 21:18:14 -07:00
Kurt
3c4d541aeb Merge pull request #1096 from javierhimura/master
Fix issue #1095 and gen 4 egg encounter issue from forums
2017-04-25 18:13:07 -07:00
javierhimura
e186e4a344 Spiritomb is summoned in the outside are of Route 209 from a non-grass tile, that make it an encounter with type none instead of building 2017-04-25 22:54:58 +02:00
javierhimura
29a2b20013 Add maniac tunnel to cave locations 2017-04-25 22:49:15 +02:00
javierhimura
0e3815b048 Fix issue with egg pokemon reported in the forums, gen 4 transfer analysis was returning wild encounters for a pokemon that was egg
Fix issue #1095, added encounter type for swarms and pokeradar safari
Split DP and Pt fossils, they have different encounter type
Change Drifloon to encounter static without type, that stationary pokemon is not in a tail grass tile
Added Burned Tower Suicune Encounter Type
2017-04-25 22:40:10 +02:00
Kurt
6164bc8ceb Merge pull request #1094 from javierhimura/master
Fix error in transfer legality G4.
2017-04-24 18:31:08 -07:00
javierhimura
4f371dbe35 Ignore static encounters if pokemon is insde a safari ball or inside a sports ball, to fix error on Voltorb from HGSS Safari that is mistaken from HGSS static voltorb 2017-04-25 02:55:56 +02:00
javierhimura
1dc6204b61 Fix error in transfer legality G4.
Transfer legality is not checked if the pokemon is a valid static encounter, also an Entei with invalid encounter is returning null as check encounter making the analysis to throw an exception, reported in the forum. Instead check transfer legality and do not return checkresult until the end to add invalid values if Gen4Result is null.
2017-04-25 02:42:15 +02:00
Kurt
e0dc6bce47 Merge pull request #1093 from javierhimura/master
Fix Encounter Type checks
2017-04-24 12:26:46 -07:00
javierhimura
4d9cd1cfc2 Fix Encounter Type checks
Added bug contest as tail grass encounters
Illex Forest as cave encounter
Mark encounter types in the final encounter array to avoid have none encounter in any alt slot
2017-04-24 19:42:27 +02:00
Kurt
7a508590a3 Update 170424
Updates wc7 event dbs
Fixes string raw copy for text editor
2017-04-23 21:44:12 -07:00
Kurt
dc911351fe Import pk2pk functionality
Exposes reflective conversion capability and sanity checking methods for
use in the class library.
2017-04-23 20:33:17 -07:00
Kurt
d84f101dc6 Store base type and matched type
parent class via Type, actual class via MatchedType. It's better to have
a general solution for future additions/separations (like
EncounterStaticShadow) or EncounterTradePID
add more encounter type recognition
override gen4 transferred encounter detection to prefer EncounterTrades
skip encountertype check if encounter is not valid

Closes #1091
Closes #1092
2017-04-23 17:53:22 -07:00
Kurt
4bf567c7b3 Add berryfix macro to gen3 RTC editor
arbitrary date set
2017-04-23 14:02:52 -07:00
Kurt
a9ff3aceaa Fix Navel Rock clearing issue
Closes #1090
Saving of the Battle Frontier symbols is clearing the flag

block2 ofs 0x40C = Navel Rock
block2 ofs 0x408 = symbols

bitconverter getbytes was fed an Int64 due to bit shifting ints and
uints. Forcibly cast to uint to keep only 32 bits -> intended behavior.

sneak in RNG readonly
2017-04-23 12:07:45 -07:00
Kurt
2b1bc213aa Prep for next wave of implementation
need to get a release out beforehand tho
2017-04-23 09:18:46 -07:00
Kurt
d402c1ee61 Merge pull request #1088 from javierhimura/master
Move validation for evolutions by move, and fix static typed encounters
2017-04-23 09:16:55 -07:00
Kurt
779d0a3b43 Merge pull request #1089 from pokecal/master
fix G4 Miscs
2017-04-23 08:57:56 -07:00
pokecal
748919bb71 fix G4 Miscs
for add DP stats
2017-04-23 23:55:29 +09:00
javierhimura
43eea1c93c Include MoveReminder in preevolution moves and post evolution moves 2017-04-23 16:50:36 +02:00
javierhimura
52b54c04d9 Reduced for in getValidPostEvolutionMoves 2017-04-23 16:48:23 +02:00
javierhimura
263f416edc Fix function name, this return all valid moves after evolving, not only the exclusive moves 2017-04-23 16:46:14 +02:00
javierhimura
710b126f60 Check moves for pokemon that evolved leveling up while learning a specific move, if they have 4 moves they must have at least the move that make them evolve or one move that can be learned after evolving
Fix generation 4 static encounters for those that have none encounter and those with not encounter type implemented yet
Fix comprobation of encounter type is static to include the new typed class
2017-04-23 14:54:52 +02:00
Kurt
016497bece Refactoring r2
Don't calculate suggested moves until prompted
Don't check EncounterType for gen7 pkm (no field to check)
2017-04-22 21:00:06 -07:00
Kurt
bcf1e63310 Refactoring
Simplify EncounterStatic type check as it is gen4 specific -> gen4
specific child class
Checks.cs: Move transfer legality check back to end as Gen4Result needs
to be defined (not null)
Rename EncounterType of Analysis class to avoid conflict with the
EncounterType enum
2017-04-22 13:04:12 -07:00
javierhimura
c847ef1d71 Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083)
* Ignore relearn level 2-100 moves from Phione

* Cave encounter types DPPt

* Generation 4 EncounterType filter and validation
Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters
Generation 4 roaaming static encounters have been splitted in two, grass and surf

* Added new legality texts

* Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible
Moved unreleased DP locations to valid Platinum locations only

* Improved generation 3 special egg check.
Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg
because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output

* Clean up

* Fix gen 5 pokemon from issue #1011
Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead
Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality

* Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis

* Do not make wild encounters prevail static encounter if the pokemon was an egg

* Changed type of WildEncounter variable to EncounterSlot[]

* Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 11:49:49 -07:00
Kurt
45066be82b Merge pull request #1084 from pokecal/master
add G4 BattleFrontier controls
2017-04-22 08:04:24 -07:00
pokecal
c2f1fb4df6 add G4 BattleFrontier controls
Editable many values. It seems a batch button needs,
but little demand, I have not made it.
2017-04-22 21:40:02 +09:00
Kurt
298691a94e Fix frlg wish egg legality checks
Add the second special move to the movepool
Closes #1069
2017-04-21 23:01:09 -07:00
Kurt
5bf14642e5 Expand logging for invalid batch edits
Closes #1003
If the pkm has a bad checksum/sanity or is in a locked slot, it never
incremented the counter. Just increment the counter anyway and write the
msg to console.
2017-04-20 21:04:51 -07:00