Commit graph

135 commits

Author SHA1 Message Date
Kurt
32abc6daf4 speed up pkm loading slightly
PreparePKM had the opportunity to be recursive (preparation ->
validating*N -> preparation*N), lock out preview sprite updating (which
calls PreparePKM via Main.cs) while validating all controls

remove uncallable paths (format is checked prior, and checksum check is
never called as fieldsInitialized is forced false)

move gui toggling to loading methods when appropriate
2017-10-25 19:37:31 -07:00
Kurt
3458924446 Restrict data sources per savefile not pkm
pkm is not restricted from ORAS (etc) values when on an XY (etc) save
file; use the save file maxes and indication values.

no reference to the pkm anymore!

Closes #1546
2017-10-24 21:06:21 -07:00
Kurt
515a694afa Add LanguageID enum
no functional change, just less-magic-numbers for easier to understand
src
2017-10-22 21:01:08 -07:00
Kurt
f85910abe2 Show Time of Day for gen2
apparently both controls were hidden
also hide encountertype control panel when not applicable (shifts time
of day up beneath other controls)
2017-10-20 19:53:38 -07:00
Kurt
90d965e6bc Fix gen2 kor lang detection loading
closes #1533
Thanks @host1126 !
2017-10-19 19:59:34 -07:00
Kurt
c3c4336d43 Add gen3 roamer editor
Thanks BlackShark!
2017-10-10 18:48:14 -07:00
Kurt
762b55e957 handle invalid nature stat amps
natures (>25) are invalid and causes IndexOutOfRangeException due to
being greater than the length of the array.
sanity check array length and amped stat prior to applying amplification
Closes #1515
2017-10-06 18:44:14 -07:00
Kurt
c25207a6ab Save met level
closes #1514 , needed to go in savemisc for gen3 pkm

met_location is saved when changing it in the forms, save anyways
2017-10-06 08:22:12 -07:00
Kurt
059451d66e misc tweaks
dictionary species check, max deviation beginnings for USUM
simplification for gen1/2 pokemonlists
2017-10-05 22:37:45 -07:00
Kurt
9c92472723 Fix friendship loading
move from misc1 (pk1++) to misc2 (pk2++)
2017-10-05 16:06:51 -07:00
Kurt
a9892203c7 Refactoring
extract pkm loading routines to smaller methods
reduce code duplication (rely on empty setters to ignore some calls)

should be much easier to understand the load/save process; the original
setup (pk6) was following the structure from 0x00-end, no point still
doing that as everything is now abstracted.
2017-10-02 23:13:40 -07:00
Kurt
1e377c2963 interpolation++
no functional change (assumed)
2017-09-29 22:58:25 -07:00
Kurt
ed1b934374 Misc refactoring
expose some useful IEnumerable methods (sorting / bin->pkm / copy) to
simplify some common operations
change some explicit arrays to IList for flexibility
remove old memecrypto bool (no longer necessary as XP is not supported)
rename some methods for more clarity
2017-09-28 22:20:27 -07:00
Kurt
c270479bf9 Show SID7 on hover
Closes #1494
2017-09-26 23:14:29 -07:00
Kurt
532cee406a Add gen1 overworld respawner 2017-09-25 23:06:16 -07:00
Kurt
e166f1eaa9 Show gen3+ berry analogues on gen2
also change "Reset key" to "Reset Password" to be closer to the game's
prompt
2017-09-24 12:05:36 -07:00
Kurt
12187a5128 Expose gen2 RTC resetkey
#1487

also expose gen1 event flags (well, the crappy ones at least)
constants/event_constants.asm
2017-09-23 22:13:48 -07:00
Kurt
da8ba46d22 Fix gen1/2 shinify/gender change behavior
Closes #1488
also fixes female->shinify starters not flipping back to male gender
(changingFields was set back to the same value)
2017-09-23 16:50:38 -07:00
Kurt
6e579abfc3 Misc changes
* allow gen2 to have evolutions on gen1 when transferred to gen7
(Core.cs)
* handle korean strings on transfer slightly better (pk2.cs)
* auto-set johto location when changing game ID
* auto-detect VC saves (all have extensions with .dat)

Closes #1478 , thanks @NinFanBoyFTW !
2017-09-22 17:54:43 -07:00
Kurt
3a3ffe0d00 Fix hacked stats clearing on save
UpdateStats would ovewrite stats when saving a pkm; only overwrite stat
values if hacked stats is not checked or no stats have been loaded yet.
2017-09-22 16:03:51 -07:00
Kurt
71b1134e44 Fix party not loading for orasdemo
no box data -> returned early
2017-09-21 21:42:27 -07:00
Kurt
b63e53af95 misc tweaks
no functional changes
2017-09-19 23:19:22 -07:00
Kurt
fa14c794c0 Add dragdrop tab switching qol improvement
#1457
2017-09-15 09:13:08 -07:00
Kurt
62f99bf5b8 Refactoring
split up slot resetting to smaller methods, use non-box reset when
toggling FlagIllegal
Closes #1446
2017-09-06 22:11:08 -07:00
Kurt
863220655e gen1/2 shiny button fix
setting the string to the control causes it to update, use the
changingFields to prevent this update from happening until we want to
(via UpdateIVs)
Closes #1444
2017-09-06 17:10:15 -07:00
Kurt
cbda637981 Remove old (GF fixed) shiny correlation
Transporter was updated
2017-09-06 09:12:56 -07:00
Kurt
492e378101 Disable auto-hyper on showdown import (lvl 100)
only hyper train if currently loaded pkm is level 100 (can be hyper
trained).
closes #1439
2017-09-04 19:01:04 -07:00
Kurt
229d752d7a Update showdown form parsing
Closes #1437 (should have been handled in PKHeX.Core not winforms);
extracted the two sanitization methods and sprinkled in some c#7
2017-09-02 08:26:51 -07:00
Kurt
072f1ba83d Refactor level-evolution checks slightly
Allows evolution met level check to be skipped
Adds minimum level constraint for evolution chain generating

Closes #1430

also adds deferral to the gen3 encounter generator as encounterstatic
gifts can collide with wild encounters when transferred
2017-08-28 18:12:57 -07:00
Kurt
41482af052 Add auto hyper train on showdown set import 2017-08-27 20:39:11 -07:00
Egzon Qukovci Jusufi
2775ad984e Fix Underground button to be only enabled for DPPt 2017-08-27 22:52:47 +02:00
Egzon Qukovci Jusufi
d0b5ceb8ff Underground Score Editor (help needed) (#1416)
* Underground Score Editor first commit

* not needed space

* changed anchor points

* added dp offsets, ug scores to underground, underground button click code
2017-08-27 12:32:43 -07:00
Kurt
896427a848 Refresh box viewers on box load
closes #1425
2017-08-26 18:37:44 -07:00
Kurt
183164a197 Add batch edit pk1/2 .PID=$shiny
Closes #1419
2017-08-25 17:44:15 -07:00
Kurt
37c858b6ad Update validation tweak
prior commit reverted incorrect behavior fix, force something within the
control to validate (not everything else)
2017-08-17 16:43:54 -07:00
Kurt
cadf3134d9 Misc fixes
fix early-verification (introduced in 9864d84), just invert the
fieldsLoaded check. No longer interrupts the pkm loading routine when
changing game locations
fix stadium check (accidentally inverted in bfdf1c5)
Closes #1398
Closes #1397
2017-08-16 22:12:28 -07:00
Kurt
9864d84704 Misc fixes/improvements
Reduce memory usage for evo method banlist (static banlist references)
Fix gen6 mega evo flag truncation
simplify QR encode/decode logic a little
Don't apply transparency if transparency is already 100% (skip the loop)
Add gen5 wild pid/tid-sid correlation check
Fix validation value reset (loading gen3-4 pkm without looking at met
tab causes the met location to get reset); fixed by prematurely
validating before setting the value
Fix gen3 pkm with gen4 contest ribbons in gen4/5 getting flagged
incorrectly
2017-08-13 00:21:42 -07:00
Kurt
07690e2919 Unhide language for gen1/2 saves
Closes #1349

Add egg memory wiping when ticking as egg,
Add egg memory setting when suggesting encounter info.
Closes #1350
I'd rather have it this way as to not do cross-tab auto edits that the
user may miss.
2017-08-05 20:30:33 -07:00
Kurt
9b31202345 Restore bk4 properties
necessary for reflection property transferral (ie language)
indirectly fixes mixed-bit properties (ie altform/gender) as they are
reversed bits relative to pk4.
2017-07-26 18:26:54 -07:00
Kurt
2d18440445 Fix wurmple evo gen3/4
yeah it was never the lowest 16 bits as every-internet-source claims.

1D9C9130 silcoon => 3716[8] = cascoon (nope)
#1330 was correct!
2017-07-17 15:58:15 -07:00
Kurt
569873701b Fix antishiny 3-5=>6+ check
uint SID = Util.ToUInt32(TB_TID.Text);
uint TID = Util.ToUInt32(TB_TID.Text);
first line should have been TB_SID.Text not TID

pull out method

Thanks wejhvabewjty!

https://projectpokemon.org/forums/forums/topic/41110-problem-with-pok%C3%A9mon-caught-w-cute-charm-lead/
2017-07-15 09:48:08 -07:00
Kurt
fa4d6d78fe Fix filenotfound exception on drag&drop
Dragging from a deeply nested file & folder truncates the filename (eg
from winrar), causing an invalid path to be passed.
2017-07-10 18:57:03 -07:00
Kurt
502093b8b2 Misc tweaks
fix pcd detection (yield brewk needed to be inside brackets
remove brackets from single line lambda expressions
2017-07-05 23:05:49 -07:00
Kurt
e8f9fd0098 Add control-click for box left/right
jump to start/end of boxes
2017-07-05 18:54:21 -07:00
Kurt
70b5832dff Change g7tid format
d6 not d7
Closes #1291
2017-07-02 11:02:16 -07:00
Kurt
4e9b6be8e5 Convert console output to debug output
output messages are now no longer in release builds, as they are only
visible when debugging in an IDE.
2017-07-01 19:43:51 -07:00
Kurt
a71229beca Misc performance tweak
fetching blank sav in GUI thread takes ~200ms on my PC, running in a
different thread saves ~180ms on startup time (thread returns approx the
same time as InitializeComponent finishes)
2017-06-29 23:48:25 -07:00
Kurt
1c4a1af633 Misc updates
Detect channel, only detect Channel PIDIV for RS origin (only really
care about method1/2/4 being used when it shouldn't)
Channel does this weird thing called not setting the met level.

Refactor set suggested met location to a method that can suppress
popups.
2017-06-29 19:32:29 -07:00
Kurt
bf6ef284b1 Move contest stat to separate usercontrol
#1272
Smart label now appears for gen 3-5
2017-06-25 10:57:35 -07:00
Kurt
606a091523 save/read gen2 pkrs
instead of ignoring it
#1257
2017-06-21 20:31:51 -07:00
Kurt
e697a9edc7 Block parties without battleable pkms
#1257
not perfect but less restrictive, probably more obvious.
2017-06-21 20:24:42 -07:00
Kurt
36b75179f3 Update level/egg behavior
Similar to how anything higher than 255 is dropped to 100, setting level
to 0 will overwrite it to 1. Current level is just a derived property
from EXP, so it's just a display property in the editor.

Toggling IsEgg for gen4 won't flag as nicknamed.

#1257
2017-06-20 22:57:22 -07:00
Kurt
1a9da12404 Misc updates
fields->properties, capitalize
fix pkm fields toggle referencing old pkm file, simplify that process
instead of constantly referencing Format
2017-06-20 17:57:23 -07:00
Kurt
b4222c756a Refactoring
reduce cross-class chatter, simplifly large methods to smaller pieces
some speed improvements
2017-06-18 22:27:40 -07:00
Kurt
5b4cedf14b Refactoring
Rewrote showdown set exporting to be much clearer, added auto-fixing of
relearn moves when importing showdown set (applies suggested relearn
moves)
Simplified main form loading routine (from ~160 to ~25 by extracting
methods)
2017-06-18 13:02:02 -07:00
Kurt
b5d2db6610 Add shinyleaf/pokeathlon stat legality check
#1236
2017-06-17 22:16:24 -07:00
Kurt
da6f880c16 Add Shiny Leaf editing
Closes #1236
pk4/bk4 only, obviously

side note, using static events is no-no, designer auto-removed them.
just manually reapply (as well to others that used it)
2017-06-17 21:49:14 -07:00
Kurt
13d3e515f0 Flag save as edited when unlocking friend safari
Closes #1241
2017-06-17 19:27:35 -07:00
Kurt
3f38b123a3 Refactoring
mostly renaming things, includes a little bit of added sugar and
splitting methods to simplify the codebase.

all methods are now PascalCase
2017-06-17 18:37:19 -07:00
Kurt
5d50f58d86 Add pk1 catchrate refresher to current species
Label_Species already has a click event for showdown sets with a
modifierkey; add a default behavior which checks for pk1 and if so, sets
the catch rate to the current species.

Users shouldn't have to look up catch rate values or be responsible for
editing them; they are currently handled by the pk1 object. Setting a
species ID checks if the catch rate is within the species lineage, and
only updates it to the current species if the rate doesn't match any.
With this change, the user can force the catchrate to match the current
species (then change back to the evo form) instead of having to change
the species to a separate lineage that does not have the current (not
displayed) catch rate value.

Closes #1235
2017-06-16 18:56:17 -07:00
Kurt
cf8f6573f2 Use savefile for personalinfo form count
BW has forms that aren't present in b2w2; expect the same for usum<->sm

splash screen opacity change for fanciness
2017-06-11 18:23:18 -07:00
pokecal
753964c138 fix Gen4 Misc Resources
add missing FlyDst and use MetLocation string.
add TrainerCard flags to FlagEditor.
add Pt resources.

fix HoneyTree, the BlockOffset needed.
2017-06-11 03:20:55 +09:00
Kurt
63b18ff51f Fix misc problems
flag undistributed gen3 events
fix gen3 string writing (resized then expanded yields 00, missing
terminator), closes #1204
fix stackoverflow, fix pkmeditor template loading save prompt, closes
#1207
2017-06-08 20:57:30 -07:00
Kurt
0c3333137b Relocate legality request to main form
changes to an event; no longer duplicates the behavior for the pkm tabs
show legality
#1193
2017-06-04 13:35:51 -07:00
Kurt
59ac78b70a Fix usercontrol clipping
set the usercontrol to inherit from whatever it is placed on; fixes the
clipping issue noted in the forums

Thanks english09, wejhvabewjty, & zkrxpdlf3!
2017-06-03 20:25:00 -07:00
Kurt
32deb3879a Simplify Shiny SID creation
calculates a passing SID and applies random bits to not be too
predictable
no need to bruteforce
2017-06-03 08:58:30 -07:00
javierhimura
814e63aa1c Add Control key modifier to set shiny button to change the pokemon SID instead of the PID, that allow the change shiny of gen 3/4 pokemon without turn the pokemon in illegal because PID/IV mistmatch
Added Cherrygrove City to surf headbutt encounter locations, the upper right trees on the map can be reach from the water in route 30
2017-06-03 12:02:22 +02:00
Kurt
f70bd02d69 Fix wurmple evo lockup
while loop wasn't checking the modified EC value, thus looping forever
standardize usage across core
2017-06-01 18:41:22 -07:00
Kurt
2fb3cd5207 Fix template loading behavior
Closes #1181
move preview sprite fetch to the absolute end
2017-05-31 21:27:46 -07:00
Kurt
e522094679 Fix pkm editor behavior
Closes #1180
2017-05-30 20:50:15 -07:00
Kurt
11aab91eee Fix drag&drop exception
immediately after dropping the file, move the mouse outside of the box
slots
DoDragDrop re-performs the drop event at the same coordinate as the
mouse; if the mouse isn't outside of the box area it'll do nothing, thus
the need to create a new event to fire.

Closes #1178
2017-05-30 19:17:37 -07:00
Kurt
f60f36081a Fix relearnmove suggestion for set relearn moves 2017-05-30 18:28:06 -07:00
Kurt
2e30878e8b Update 170530
Update event binaries
unban gen3 mega evo stones
fix a lil bit of behaviors
2017-05-29 22:34:45 -07:00
Kurt
8b833c0c15 Add null check for invalid origin pkm
Closes #1173

info isn't set if the species is invalid or the origin generation is
invalid
lazy fix
2017-05-29 10:52:41 -07:00
Kurt
9a7dc9998c Misc fixes
Track gen1/2 origin game as well  as generation
fix pk2 gender setting (incorrect bitmask & wasn't set from tabs)
extend female gender check for gen2 to apply to GS encounters -- if met
location is missing, was traded to gen1 which clears gender.
2017-05-28 16:56:51 -07:00
Kurt
8eed9f84ba Fix pk1 catch rate overwriting
CatchRateIsItem is always false, thus the catch rate was always
overwritten with the base species catch rate regardless of if the base
species was the encounter.
For species like Metapod who have different catch rates from their base
species, this would invalidate any Metapod capture. So all possible
catch rates are checked.

Instead of setting the catch rate to the base species catch rate, set it
to the current species. Allows user to set the exact catch rate by
toggling between a legendary and the target species...
2017-05-28 13:19:48 -07:00
Kurt
858aa50689 Refactor encounter matching
exercise in deferred execution/state machine, only calculate possible
matches until a sufficiently valid match is obtained. Previous setup
would try to calculate the 'best match' and had band-aid workarounds in
cases where a subsequent check may determine it to be a false match.

There's still more ways to improve speed:
- precalculate relationships for Encounter Slots rather than iterating
over every area
- yielding individual slots instead of an entire area
- group non-egg wondercards by ID in a dict/hashtable for faster
retrieval

reworked some internals:
- EncounterMatch is always an IEncounterable instead of an object, for
easy pattern matching.
- Splitbreed checking is done per encounter and is stored in the
EncounterEgg result
- Encounter validation uses Encounter/Move/RelearnMove/Evolution to
whittle to the final encounter.

As a part of the encounter matching, a lazy peek is used to check if an
invalid encounter should be retained instead of discarded; if another
encounter has not been checked, it'll stop the invalid checks and move
on. If it is the last encounter, no other valid encounters exist so it
will keep the parse for the invalid encounter.

If no encounters are yielded, then there is no encountermatch. An
EncounterInvalid is created to store basic details, and the parse is
carried out.

Breaks some legality checking features for flagging invalid moves in
more detail, but those can be re-added in a separate check (if
splitbreed & any move invalid -> check for other split moves).

Should now be easier to follow the flow & maintain 😄
2017-05-27 21:17:57 -07:00
Kurt
25bdeb8053 Merge branch 'master' of https://github.com/kwsch/PKHeX 2017-05-27 14:25:12 -07:00
Kurt
5ee918d62c Fix form being altered during load
Closes #1167
Thanks @Odaxis !
2017-05-27 14:25:07 -07:00
pokecal
32815d0c4b add BW2 KeySystem Unlock
I excepted first 8 keys(used for check selected value),
they are very easy to edit in game.
2017-05-27 19:32:19 +09:00
pokecal
0cae317770 add EventFlags resources BW
I recently noticed that some activation use TID/SID,
I will re-check past resources that have abnormal value(e.g.AzureFlute),
after researching BW2,Pt.
2017-05-26 19:17:28 +09:00
Kurt
7e30d863b0 Revert dexlevel evotree fetch + re-implement fix
check requireslevelup during evolution validity check, not during tree
generation as movepool fetch treats the 'level' as the max possible
level it was at (not the level it was encountered).

fix dropping pkm from external source causing exception (final return
false caused it to proceed with regular dragdrop operation from source
slot).

#1163
2017-05-23 18:35:32 -07:00
Kurt
a98c904168 Tweak level/exp changing events
move from validated to textchanged as the user expects the values to
live update
only use the value-cap on validation if the input is not associated with
another control's value
this is now consistent with the IV/EV updating stats

#1163
2017-05-23 17:46:32 -07:00
Kurt
2e1c0b9c48 misc loading fix
gen1/2 games with new pkm editor no longer cause an exception on init
load
2017-05-23 08:28:53 -07:00
Kurt
11b2dc35d7 Refactor main form into smaller pieces
pkm editor, sav editor, menus, and a manager to glue the storage slots
together
decouples the pkm/sav editors from a static savefile reference.

improves dragdrop/click view/set/delete indication, hides unavailable
contextmenuitems, and fixes a few incorrect references. Box Subviewer
slots now have all the indication/events that the main save editor slots
have.

pls report behavior bugs 👍
2017-05-22 21:55:12 -07:00