Commit graph

301 commits

Author SHA1 Message Date
Kaphotics
35465b837e Minor refactoring
Load used WC even if dismissed, i/o for main display operates by passing
PK6 instead of byte[]
2016-01-24 10:19:30 -08:00
Michael Scire
6230dd7bd6 Add Pokeblock editing support. 2016-01-23 13:00:44 -08:00
Kaphotics
74720e484a Add resumed time
Guess this is how they can track how long your current session has been
active.
2016-01-23 10:44:35 -08:00
Kaphotics
cfc93ef96e Minor Tweaks (ORASDEMO)
Simplifies checking for ORAS so that ORAS includes ORASDEMO by default.

Hide tab pages properly.
2016-01-23 08:42:11 -08:00
Kaphotics
808e4b6a9f Add Adventure Start editing
Seconds Since 1/1/2000; can go negative (more than 32 bits, but we can't
ever realistically do that).
2016-01-22 19:39:03 -08:00
Kaphotics
ea000cc95d Avoid invalid cast errors
Should only use Util.getIndex when a BindingSource is set with a
retrievable value. The method will now throw an exception instead of
handling it to let the programmer know that the wrong fetch method was
used.
2016-01-21 22:55:20 -08:00
Kaphotics
f8f0d76793 Cleanup
Simplified cbItem a little.

Check for null input, then null selected value; catch only happens if
the method is fed something irregular.
2016-01-21 22:40:59 -08:00
Kaphotics
061309ccd6 AdventureStart -> LastSaved
Misattributed
2016-01-20 21:25:33 -08:00
Kaphotics
a8a89c3bb2 5bit day
0-31, should fit all possible dates.
2016-01-20 20:40:52 -08:00
Kaphotics
025b5a3c52 Add Adventure Start to editables
With that I'm pretty unhappy with the large form; might tabulate the
view in later commits.
2016-01-20 20:38:21 -08:00
Kaphotics
33baac4fff Add Adventure Start Attributes
So many different ways to store the same thing...
12bit year
4bit month
4bit day
2016-01-19 07:50:05 -08:00
Kaphotics
c768124591 More refactoring
Removed a lot more unneeded parenthesis.
2016-01-17 17:07:19 -08:00
Kaphotics
dd83330191 Implement ContextMenuStrip translation 2016-01-17 15:35:02 -08:00
Kaphotics
0b89682a64 Refactoring
Now have win10, new vs, new resharper, new c# tricks
2016-01-17 13:27:24 -08:00
Kurt
508a23d386 Clean Utility Methods
Rewrote LayerImage & ChangeOpacity to be faster (graphics & lockbits
instead of manual pixel by pixel changing)
Removed control based string conversion methods
Used linq to parse hex instead of Numerics
2016-01-09 12:46:15 -08:00
Kurt
bd5a1c7db3 Use string method instead of control based 2016-01-09 12:46:13 -08:00
Kurt
52ea545b29 Remove more parenthesis
No functional change, just src clarity.
2016-01-05 18:16:58 -08:00
Kurt
e56b6652dd Improve toolstrip item finding
Search within menustrip, not just looking within the top items.
2016-01-02 20:22:35 -08:00
Kurt
872f2a940c Fix Egg-Set bugs
Thanks StarFisherX!
2016-01-01 21:18:23 -08:00
Kaphotics
ace267d554 Reorganize EV output
Thanks Wanderer1391!
2016-01-01 19:45:03 -08:00
Kurt
06cd71b58b Add ORAS Demo support
Likely going to regret doing this; but this sets the groundwork for
enabling partial support for future games.
2015-12-29 22:03:27 -08:00
Kurt
b9af9deac8 Fix conversion issues
pk5->pk6 conversion was missing Gender/AltForm definition.
2015-12-29 10:28:24 -08:00
Kurt
aa7974e158 Rearrange src, speed up encryption
No need to shuffle 11*, just have the precomputed final shuffle values
and redirect.
Rearrangement removes PKX/PGT interaction (now only refers to past gen
code base)
2015-12-28 19:00:10 -08:00
Kurt
8218fbfefb Add DexNav count 0->1 on modify (ORAS only) 2015-12-28 17:12:38 -08:00
Kurt
6246b01191 Add display of secure values
Not editable, as the user should not have to modify. Just display!
2015-12-28 13:52:08 -08:00
Kurt
b8618e9aa1 Fix Bad Egg creation (bitflipping) on setting Dex
Adding two offset ptrs is bad; only use one! Guess I originally intended
to have languageflags be a shift of the PokeDex ptr, but that's not
right!

Thanks DeadSkullzJr!
2015-12-28 09:23:59 -08:00
Kurt
3147d8b1df pk2pk Refactoring
Transition from modifying byte arrays to just having objects mediate the
conversion.

Farewell pk2pk!

The PK# objects can convert up to the next generation through their own
methods; doing this required having class structures for all generations
:)
2015-12-27 21:26:07 -08:00
Kurt
24703bfc22 Minor refactoring
Do things better.
2015-12-26 21:17:23 -08:00
Kurt
919ca0a02b Add Manaphy Egg case 2015-12-26 17:09:13 -08:00
Kurt
20276e4293 Finish PGT conversion 2015-12-26 16:05:09 -08:00
Kurt
85e000da27 Expose IV32
Needed to check for PGT random IVs (essentially unnecessary)
2015-12-26 16:04:54 -08:00
Kurt
92fe0910fe Add 4th gen crypto (+PGT specific optional arg)
PGT files are encrypted with the PK4's checksum instead of the PID;
however, the shuffle value is still determined by the PID.
2015-12-26 15:55:25 -08:00
Kurt
b990f6c39a Add remaining KOR codes
Fixes the early return issue on 4->5 conversion
2015-12-26 15:50:46 -08:00
Kurt
8a77a1cd6c First look at PK4 code 2015-12-26 13:00:00 -08:00
Kurt
1644e6c848 Use traded status (HT Name) when setting untraded
This now prevents untraded mons from being modified (which is intended).
2015-12-26 10:42:29 -08:00
Kurt
7f0d714683 Tweak trade status detect for modifying geolocation 2015-12-26 10:37:07 -08:00
Kurt
5325975e76 Implement gen5 event PID method
force shiny method, thanks to all the researchers active during genV RNG
research.

Slight tweaks to force ability.
2015-12-25 18:17:47 -08:00
Kurt
9b7394f631 Fix order of operation
cast happened before modulo, resulting in negative return values
2015-12-25 17:54:14 -08:00
Kurt
c91512dc15 Implement Gender/Ability criteria 2015-12-25 17:06:56 -08:00
Kurt
20ae99f20d Finish PGF import 2015-12-25 14:07:17 -08:00
Kurt
374f8b0c83 Fix pk6 modifying and event handling logic
Memories won't be modified if the window has it disabled
Geolocations won't be modified if the Pokemon is an event Pokemon and is
so-far untraded.

Misc change: initializing boxes won't do unnecessary calcs.
2015-12-24 15:38:07 -08:00
Kurt
1bb07b5998 Add pgf skeleton & supports
Untested and not intended to be correct; just establishing the framework
for now.
2015-12-22 21:14:50 -08:00
Kurt
54bd371b50 Fix Showdown Export IVs 2015-12-20 10:55:47 -08:00
Kurt
308dfd2c24 Fix Showdown Export nicknames 2015-12-20 10:50:09 -08:00
Kurt
e4e662e2f2 Wonder Card update
Added preview display for all Wonder Cards; consistency in calling them
Wonder Cards.
2015-12-17 21:15:40 -08:00
Kurt
9e4f13d00d Reorganize & SAV Backup
Alt Click the Export SAV button.
Remove Tools Tab and transferred richtextbox outputs to Clipboard
exports.
2015-12-17 18:55:59 -08:00
Kaphotics
36a1550dd3 Add GameSyncID property
Thanks daxtsu for figuring out where this value is stored.

I plan on adding a "GameSync ID" related button in the Main window's SAV tabs.
2015-12-15 11:32:21 -08:00
Kurt
6101fd2123 CopyTo 2015-12-14 07:52:05 -08:00
Kurt
a51bf8389c Switch DataTable to int[][]
Little less silly.
2015-12-13 22:31:34 -08:00
Kurt
627f8e9c91 Remove unused array 2015-12-13 20:12:08 -08:00
Kurt
f015ca5a58 Add support for Forms
PKHeX & Showdown have to have parity with Form descriptions.
2015-12-09 19:57:53 -08:00
Kurt
62df1f473f Add BattleBoxData fetching 2015-12-09 19:40:08 -08:00
Kurt
9013dc0641 Tweak set IO
Return empty string instead of null
Recalculate current level (ignore corrupted stats)
2015-12-09 19:38:09 -08:00
Kurt
71f428cb69 Fix party accessing
Return current party member counts, no blanks
2015-12-09 19:18:39 -08:00
Kurt
f664bbe34f Write PK6 -> ShowdownSet export text 2015-12-09 19:16:50 -08:00
Kurt
dd910e6aa1 Tweak set override logic
If the method defines whether or not the sub should be called, that will
be used. Else, it will use the global setting.
2015-12-08 06:19:34 -08:00
Kurt
a4b5033b1e Mess with showdown exporting
Still nonfunctional, just have to write the encoder after relaying all
relevant information to the ShowdownSet
2015-12-07 21:46:48 -08:00
Kurt
fed7bacac3 Further cleanup of sprite assets
Reduces the size
2015-12-06 22:40:48 -08:00
Kaphotics
5b14b99872 WC6 change 0xFD IV
25+2*31 --> 2*31 (no 25)
2015-12-05 11:29:16 -08:00
Kurt
0ff7c5c152 Tweak IV generation further to account for 0xFD
Thanks Wanderer1391 for continuing the investigation!
2015-12-02 20:42:16 -08:00
Kurt
9ac9739e3e Tweak wc6 Random IV/PID
No longer gives 3 flawless IVs by default (now only for unbreedables);
should now behave even closer to what the game does.
2015-12-02 18:18:23 -08:00
Kurt
b4c4419015 Minor reorganization
CLeaned up some unnecessary parenthesis and simplified a few
expressions.
2015-12-01 23:08:16 -08:00
Kurt
c9dad89e11 Minor refactoring
Cleaned up a little bit of code and used more magic references.
2015-11-29 12:59:13 -08:00
Kurt
864c5bfd65 IVs and Fateful Encounter 2015-11-26 19:14:41 -08:00
Kurt
d2103a96b3 Update friendship/memory logic 2015-11-26 19:07:20 -08:00
Kurt
28390758e6 Implement wc6->pk6
"There's not enough data in the wondercard to faithfully create the
Pokémon!"
2015-11-26 07:49:44 -08:00
Kurt
0ac33a0639 Cleanup
Remove unnecessary logic.
2015-11-25 22:52:23 -08:00
Kurt
520af0ff55 Tweak stat retrieval logic 2015-11-25 22:46:16 -08:00
Kurt
c9d0db23ac Refactoring
Increase flexibility, use game personal data and structure to clearly
define what is going on.

Helps for implementing future games.
2015-11-25 22:20:09 -08:00
Kurt
8a2e7f3f74 Fix ternary null input
Having a ternary result in null creates a new param of []{ null },
instead of a true null.
2015-11-25 18:28:21 -08:00
Kaphotics
03a773f9bb Update WC6.cs
Initialize the default size of wc6 to 0x108
2015-11-25 18:08:54 -08:00
Kurt
7469150a02 Add Wondercard class 2015-11-22 13:38:16 -08:00
Kurt
19ff462fff Relocate PokePuff sav properties 2015-11-21 19:17:35 -08:00
Kurt
0064d1b497 Finish conversion of tr stats to SAV6 properties 2015-11-21 17:23:00 -08:00
Kurt
925699af0d Fix Trainer Info editor issues + bugfixes
Fixed reported bugs by Wanderer1391; found a bunch more as a side effect
of refactoring. Didn't like how so many values were hard coded so I
moved them all into the SAV6 class for easier r/w.

Re-enabled the Map Coordinate editing for non-ramsavs.
Updated the Map Coordinate display to the ingame coordinate style (using
NumericUpDowns), the coordinates for player.X and player.Y are divided
by 18 to get the current cell coordinates.
2015-11-20 22:02:15 -08:00
Kurt
b16ee55ed4 Assign an identifier for PK6 box/spot origin 2015-11-15 22:03:36 -08:00
Kurt
e4bc9e58f0 Box and Party properties for easy manipulation 2015-11-15 21:58:34 -08:00
Kurt
861881a37d Allow new instance of PK6 with no arguments 2015-11-15 21:56:00 -08:00
Kurt
c15cbe2870 Separated initialization bool for clear purpose
formInitialized is for closing the splash screen and showing the main
form.
fieldsInitialized is for setting up and not running updates until fields
are ready to be updated.

Arceus is now the initial species instead of language dependent
(Abomasnow).
2015-11-05 22:59:55 -08:00
Kurt
f67441cc89 Change byte to int
Allows it to be easier used by comboboxes; SelectedValue = (byte) does
not work.
Instead of having these cast to int whenever used, this way is more
preferable.
2015-10-27 17:58:53 -07:00
Kurt
76d6320b21 Simplify Friendship modification on set
Copies instead of highbounds.
Added supporting property in PK6 class.
2015-10-25 18:46:17 -07:00
Kurt
b1c0beff74 Send "chunk uninitialized detection" to class
yeah, get educated.
2015-10-24 16:52:25 -07:00
Kurt
101c0ad80f Minor bugfixes and cleanup
Added an Edited property for the save
blank slot (encrypted) is initialized once and can be used elsewhere
instead of constantly being recreated for no reason.
Fixed having 32 boxes for non-saves

All SAV editing forms now set the Edited flag when saving->close.
2015-10-24 16:33:44 -07:00
Kurt
1b514bc84f Move SAV box sorting to class 2015-10-24 12:31:29 -07:00
Kurt
775dc74287 Add trade friendship altering
Special cases allow friendship to be min/maxed anyway.
Added get/set for current friendship.
2015-10-24 11:57:07 -07:00
Kurt
25fca4964b Implement Trade logic when Set
Friendship and Affection are still not modified.
This may cause an issue with users who edit mons with their OT as
current handler and set friendship to 255, and the program makes the HT
with 0 friendship.

Can't really code in an alert as it'd be an annoyance for users. Gotta
think about it more :)
2015-10-24 11:29:03 -07:00
Kurt
f14a06a8bd Fix initialization for non-saves
When initializing with a zero-byte array (ie, starting the program and
just having blank data), the box/party have specific offsets.

Also got rid of the silly default switch cases which can just be
achieved earlier.
2015-10-24 09:52:02 -07:00
Kurt
661052bcf9 Refactoring of Save File Usage
Probably breaks a thing or two... time to get testing after this new
commit.

Wrapping the stored 'savefile' into an object which handles its use
allows a clearer separation of function and easier maintenance or future
updates.

May eventually move all get/sets for each form to allow property
fetching from any window, all logic handled within the class.
2015-10-23 20:13:32 -07:00
Kurt
d85936467e Add dex overriding from method call
A little shuffling of info too for ease of use.
2015-10-23 20:10:03 -07:00
Kurt
d5484d265b Implement global settings for on-set methods
This makes it so that the program can turn off these methods for every
instance unless the implemented method explicitly says otherwise.

Nullable boolzzz
2015-10-23 19:58:23 -07:00
Kurt
f348a27d0c Minor Bug fixes
Properly init offsets for inventory, and fix for genderless bit writing.

ORAS PokeDex editor does not save bools for the current entry when
closing the form; fix will be provided in a later commit.
2015-10-23 19:45:25 -07:00
Kurt
322fceb598 Add new class
Performs SAV operations to match the division already done for PK6.
2015-10-22 00:16:44 -07:00
Kurt
5057be999f Use defined size names 2015-10-21 22:59:22 -07:00
Kurt
f3374aee10 Add constant sizes for easy reference in code 2015-10-21 22:54:50 -07:00
Kurt
2e5f447dce Begin Implementing auto-modification when set
There's a few ways to finish implementing, as the program needs a way to
access Trainer Information on the fly. Quick and dirty way is to add new
global variables and set them when a save file is loaded, and a cleaner
way would be to move the 'savefile' variable into the sav class and do
all accessing from there.

Not yet decided on which. For now, the added items and code still do
nothing.
2015-10-19 19:08:56 -07:00
Kurt
4a1ee57c58 Improve Trading logic to include Banking 2015-10-18 18:33:38 -07:00
Kurt
8885e826a8 Fix sanity get offset 2015-10-13 18:55:05 -07:00
Kurt
bd8ff36e4b Add FileName fetching
Non language specific export, doesn't indicate egg either (the Nickname
will though!)
2015-10-12 17:05:34 -07:00
Kurt
b07359f8dd Add Trade Logic
I don't have TradeFriendshipAffection called by anything; or any of
these methods for that matter. Need to find a solution so that the user
can turn ON/OFF these types of modifications (and ensure that PKHeX
doesn't overwrite any user data).
2015-10-11 14:31:46 -07:00
Kurt
c8bab4d01c Add Generation attributes 2015-10-10 10:11:22 -07:00