Commit graph

146 commits

Author SHA1 Message Date
wwwwwwzx
015bdc606b Misc gen4 legality checking fixes (#1025)
* Fix hgss safari zone encounters

* Add fishing slots at night (hgss)

* Fix Japanese Special Character (gen 4)

* Add gen4 ball with HA legality checking (gen7)

Males can pass the ball with HA females ONLY when they have the same
pokedex number

* Add safari ball with HA checking (gen7)

* Fix ball legality checking for shedninja

Poke Ball only

* Map Unicode Chinese characters to in-game chars

Chinese species names in sun/moon were remapped by GF.

* Add nickname legality check for east asia language

Can not give Chinese or Japanese kanji nickname to pkm.

* Remove hiding nickname textbox for chs/cht

Since remapping and legality checking are implemented, There will be no
strange character or misunderstanding.
2017-04-03 20:02:40 -07:00
Kurt
3ae6256459 Refactoring
Adds game selection subform for RSEFRLG/Memcard game selection
Backs up entire memory card instead of just gci when loading from
memcard
Reduce string usage (easier dialog translation if that ever happens)

Does the memory card store date last saved? Could be used to autodetect
the last saved game and load directly instead of selecting.
2017-04-02 13:42:42 -07:00
javierhimura
ab67bf0d60 Split memory card files extension for bin and raw files.
Raw is the extension used by Dolphin and Bin is used by Wii Devolution, both have the exact internal format and size
2017-04-02 17:36:50 +02:00
javierhimura
699dadcccb The UI was checking wrong if a pokemon is shadow or purified
The internal data of GC games for purification for shadow pokemon does not have values from 0-non shadow to 100-total shadow, it have values sarting from the initial shadow hearth gauge to 0-non shadow.
2017-04-02 17:10:40 +02:00
javierhimura
a38e923e83 Load pokemon savegames directly from gamecube memory card files. This files can be saved again in the same memory card file or exported as a gci file with only the savegame.
Do not allow to resize memory cards nor create a new memory card from a gci files
If the MC contains multiple save files the program ask the user what game he want to edit
2017-04-02 16:53:46 +02:00
Kurt
288aee8c3b performance tweak
only do the flicker hack if the combobox is actually visible
delay form appearing until initial files are loaded
2017-03-29 22:23:18 -07:00
Kurt
f2c072bc8a Fix gen2 slot set
Fixes #1007
Closes #1008 with a slightly different implementation of the validation
check; other fixes for legality incorporated. Thanks @javierhimura !

Note for the Electrode encounter: both PIDIVs should be method 1 (not
J/K) thus only one is kept in the array.
2017-03-29 17:43:17 -07:00
javierhimura
aecd3f9738 Fix error loading save from gen 2 when pokeball does not have elements 2017-03-26 18:24:02 +02:00
Kurt
7d45b5c4fb Fix levelup egg pre-relearnmove check
Closes #991
2017-03-25 19:57:41 -07:00
Evan Dixon
056318d108 Altered the order of operations in language changes
Fixes a bug where language changes would not apply in new implementation of legality string translation
2017-03-24 13:18:14 -05:00
Evan Dixon
a80a2489a4 Refactored implementation of #959 2017-03-24 12:59:45 -05:00
Kurt
121a821180 Fix clickOT order of operations
Closes #976
subregion was set first, but changing the country caused it to reset the
subregion to 0/existing value.

thus, load country first then subregion (why not move 3DSReg first 👍
)
2017-03-23 18:10:14 -07:00
Kurt
38bcfe30cc Add setting for unset changes notification
opt in setting
resx too goofy

Closes #970
2017-03-22 18:02:05 -07:00
Kurt
eb8b9602b2 Add pkm modified & unset alert
Same for save edited check on closing, this will alert the user if View
is called without the data being Set first.
2017-03-21 23:25:17 -07:00
Kurt
503a9b9d71 Finish legality string translation feature
Same " = " separator as the main form translation, uses the cache style
in GameStrings to only load once.

Closes #959, feel free to discuss there.
2017-03-21 21:40:33 -07:00
ReignOfComputer
6f7c8e73a0 Dump Single Box (#962)
* Dump Single Box

Probably can be better optimized or something. The code works, the thing
is I can't seem to edit the Menu Items to add this in as it causes the
view to go haywire. VS can be silly sometimes. For your consideration :)

Related:
https://projectpokemon.org/forums/forums/topic/40358-how-to-export-all-pokemon-in-boxes-as-pk7/

* Manual Design Edit of Main
2017-03-21 00:21:03 -07:00
Kurt
3027eadb8d Refactory legality strings
For future translation feature as per #959
3 helper methods provided to facilitate the localization (import /
export / update)

I decided to simplify some duplicate-function sections
2017-03-21 00:18:44 -07:00
Kurt
127d2c2aaa static analysis fixes
fixes the friend safari form checks (if else were chained incorrectly)
argumentorder of some unused sections (BV date, canlearnmachinemove)
2017-03-20 00:03:31 -07:00
Kurt
deac1724c7 Add gen4/5 event concatenated binaries
events now show up in the event browser too

pcd(4)/pgf(5) will be used for encounter matching by the legality check.
2017-03-19 16:19:59 -07:00
Kurt
ab88f5b4e2 Fix application path detection
Launching from args sets the Environment.CurrentDirectory to that of the
files that launched the program; instead we want the
Application.StartupPath (where the exe is, which is where our backup
files are).

Closes #948
2017-03-19 10:42:48 -07:00
Kurt
a099d18c9c Alpha 3-5 legality checking
Incorporates files from #190
Skeleton added for future implementations; currently missing gifts,
encounter info, and the fine tuning that follows.
Basically sets up areas for future implementation... feel free to submit
pull requests filling in the EncounterStatic/EncounterTrade blocks with
the basic info. I'll probably focus on gen5->4->3 in terms of priority.

Encounter slots need to be marked up for encounter slot legality (yay
32bit RNG), and will be used for PIDIV detection too.

XD/C is not in this round of implementation. Pretty much every pkm 3-5
will show up as invalid until this round of dev is finished.
2017-03-18 16:50:34 -07:00
Kurt
9106896909 Update 170318
Updates event binaries
Clear AllowGBCartEra if not gen2.

lookin at u 3-5, 4/7 over 50%! /cryptic
2017-03-17 22:27:59 -07:00
Kurt
cc5b065a39 Force validation when exporting data
Apply same logic to PKM exporting; the existing setup was manually
triggering validation by changing focus; now just call the
ValidateChildren method on the form.

Closes #936
Thanks @Storm-Eagle20 !
2017-03-12 17:01:48 -07:00
Kurt
fe66a65464 Misc updates
Closes #860 by adding in prompt for Gen1 saves to determine if the save
originated from VC. Will disable Gen2 legality sources when checking pk1
files.

--

Fixes froslass/gallade evolution tree pruning movesets. For whatever
reason, the level argument of the Evolution is not 0 when using the
item; I manually edited the evos_sm.pkl binary to set the 2 evolutions
from [XX] -> 00.

Fixes gen1 ingame trades slipping through the getEncounter12 preference.
Gen2 has set TIDs, so check if TID is set.

Loosens checks for Gen7 trades (including prior transfers) as trading
between games clears the memory.

Add 3 more g7 trainer stat records too.

Thanks Holla!

--

Add getMoves(100) optimization as gen7 learnsets can grab 1->100, better
than looping over the range every time it's checked.
2017-03-12 16:36:23 -07:00
Kurt
bcbebf73ff Refactor qr server fetch & add notification 2017-03-10 20:35:18 -08:00
Kurt
0715f133d2 Add misc info editor for gen3
Closes #193
If there's more offsets found, this would be the place to edit oddball
stats.

Also threw in BP/Coin (& Rival Name FRLG only) editing.
2017-03-09 19:38:57 -08:00
Kurt
4874c174d8 Add gen4 pokedex editor
Fixes the setDex implementation for gen4
why u have to be so weird gen4
hgss has 0x1C extra form flags in the first form array... unused?
2017-03-06 22:43:46 -08:00
Kurt
199257fabd Re-add selectionlength
only use it when repopulating move legality
skip repopulation when clicking moves or met location since it's updated
at the end of the respective method
2017-03-05 20:00:27 -08:00
Kurt
5ecf01e481 Add gen5 pokedex editor
Cloned and modified from XY's editor

might as well simplify the dex setting for gen5. / -> >>, % -> &
2017-03-05 17:34:30 -08:00
Kurt
8550253842 Add gen3 pokedex editor
Uses SimplePokedex form since the pokedex is currently simple
2017-03-05 16:40:57 -08:00
Kurt
a76b549a49 Switch MessageBox usage to util
Use the WinFormsUtil implementation of alert/prompt
2017-03-04 17:21:33 -08:00
Kurt
529f8d1348 Misc profiling improvements
ResetBoxes reduce method calls for new blank/setting, just set data.
160ms->4ms

ComboBox Validation calling SelectedText.Length=0 no longer needed 3y
after it was originally added.
268ms->0ms

speeds up main thread by a third of a second (wowww), but the
selectedtext removal makes the program snappier during regular use
(loading/modifying)
2017-03-04 09:38:39 -08:00
Evan Dixon
0eda87fdf6 Averted potential null reference exception 2017-03-02 09:40:33 -06:00
Evan Dixon
beed20cfdf Reloading settings doesn't work right 2017-03-02 09:37:54 -06:00
Evan Dixon
0946b00075 Delete settings if corrupt 2017-03-02 09:28:33 -06:00
Kurt
9df18d2bd1 Tweak gen3 sav load to force version prompt
Hold Control when opening the save file
Closes #887
2017-02-28 23:23:58 -08:00
Kurt
b87f1fc8db Remove showdown import button clicks
Button not visible -> onClick method not called; just call the method
directly.

(import a set on the Met tab via the tools dropdown, with shiny. won't
import a shiny pkm).
2017-02-27 08:59:20 -08:00
Kaphotics
5874a8bfa6 Merge pull request #892 from ReignOfComputer/gen-7-item-checks
Gen 7 Item Legality Checks
2017-02-26 09:35:37 -08:00
ReignOfComputer
4072f0d2ca Shortcut Max Level
IMO this is useful, for your consideration :)
2017-02-27 00:08:28 +08:00
ReignOfComputer
b3ceb93ece Gen 7 Item Legality Checks
For https://github.com/kwsch/PKHeX/issues/891.
2017-02-26 23:55:22 +08:00
Kurt
bff6a62bbd Fix german pumpkaboo forme errors
Exception thrown due to medium form ("M") getting set to gender, then
screwing with the updateForm method (returning -1 for current form if
the gendersymbols are unicode). Fix both sources of error.
2017-02-25 15:52:57 -08:00
Kurt
6ddcdee9cf Fix dragging battle team slot sprite refresh
Refresh the image if the team slot indication needs updating
(true->false, false->true), else stay lazy and just set the image.

Could just refresh the image regardless but muh negligible speed
2017-02-24 20:26:28 -08:00
LegoFigure11
3ab2d303f8 Update Main.cs 2017-02-22 19:15:30 +11:00
LegoFigure11
33f1dd3221 Add .gci in the supported file type dropdown 2017-02-22 17:23:20 +11:00
Kurt
f860bd31c7 Add minimum size check for opening files
0bytes -> exception, just use pk2 stored (min size)
2017-02-15 08:29:47 -08:00
Kurt
0f45adda89 Handle skipped gens
Expand InhabitedGeneration to actually check if it can inhabit
generation instead of if species can exist on generation
misc behavior tweaks
2017-02-15 00:11:12 -08:00
Kurt
2e9f8e19ea Menu sprite distortion fix
Closes #858 by adding in updated Steelix sprite, uses ripped files
re-saved in paint.net
Thanks @sora10pls !
2017-02-14 18:54:46 -08:00
Kurt
f9cc9c10ca Tweak suggestion behavior
Prefer lowest level wild encounter; expand suggestion for evolved pkm.
Add click event to Current Level (for gen1+ pkm since Met Location not
visible).
Add Nickname CheckIdentifier to change incorrect identifiers in Nickname
check.
2017-02-14 17:33:57 -08:00
Kurt
a5e09bfe31 Fix legal move selection allowing future moves
Initially populated with a filtered list, was unfiltered when
repopulated for legal moves. Just split legal/illegal, have the main
form choose which one is the stored list.

Remove unnecessary linq for other forms
2017-02-13 21:20:10 -08:00
Kurt
6722afef76 Misc behavior updates
Closes #855
2017-02-13 20:42:39 -08:00
Kurt
578f05cd2e Initial Gen1 legality checks (WIP)
Have only tested pk1 format so far; there's still a few cases that are
unhandled (move discrepancies between games, trade gifts, event mew,
tmhm).

pls no report bugs unless you are very detailed (include WHY it is
wrong).
2017-02-12 17:00:03 -08:00
Kurt
22e49928c5 Tweak nickname language update behavior
Closes #849
2017-02-12 09:59:49 -08:00
Kurt
2f76d83add Add VC extension to openfiledialog filter
So crowded, put all files at the top for default behavior
2017-02-09 20:19:38 -08:00
Kurt
3b0485414d Move xorpad decryption out of winforms
simplify logic a little, fix a few issues
nobody uses powersaves & xorpads anymore tho
2017-02-09 00:44:38 -08:00
Evan Dixon
bd4b400626 Cleanup
Whoops.
2017-02-07 23:13:33 -06:00
Evan Dixon
6504d5305a Fixed settings not saving when form closes
Should resolve #833.

This is why I prefer if statement logic to return statements littered everywhere.
2017-02-07 23:12:18 -06:00
Kurt
2ecf1c1c7b Improve file loaded transfer preference
use last char of file extension if available. edge case for pk[m]
considered:
pk[m] => 0x6D, -0x30 = 61d, &7 = 5, which prefers 6 instead of 7+ :)

adds a check for transferred pkm not having their CurrentHandler being
flagged as the save file (impossible for a transferred PKM to be still
handled by the OT).
2017-02-06 22:19:10 -08:00
Kurt
ac818424f2 Delay pkm file loading via cmd args to end
Closes #828
2017-02-05 13:24:39 -08:00
Kurt
77c25c41d3 Add legality indication for exported QRs
only appears if the legality was checked (ie checking supported)
2017-02-05 12:55:17 -08:00
Kurt
f25adad211 Misc tweaks
allow qr for gens 1-3, change draginfo cursor type to object.
need to figure out how I can get it out of main
2017-02-04 23:11:48 -08:00
Kurt
5d3e167496 Box slot legality r3
Closes #814 thanks @JortonMV !
Closes #818 thanks @egzonqj !
(both were instrumental in regards to this commit, much appreciated)

Refactors to move the slot image generation per the save file to an
extension method, instead of having 4 methods (2 in main, getQuickFiller
& getSlotFiller, and 2 in box viewer, same names).

Uses the legality marker unscaled in the bottom left corner of the
sprite.
Fielded a few ideas in IRC (a commented-out line that tinted the sprite
red remains in the src), but the folks in IRC preferred the indicator.

When toggling the legality indicator, the box viewer has to be updated
as well as the main box slots.
2017-02-04 20:39:42 -08:00
Kurt
25f6b5259b Refactoring
Add documentation for PKM/PKX, move some code around
2017-02-04 18:27:28 -08:00
Kurt
c930b7eb7e Relocate box load/dump/verify to extensions
now with shiny new documentation
2017-02-04 14:58:30 -08:00
Kurt
53eb8f9f57 Manually defining nickname from another lang
Don't automatically flag as Nicknamed if the pasted text
2017-02-03 21:48:43 -08:00
Kurt
c0e5db6bb0 Add party-only form legality checks
Closes #806
2017-02-02 19:27:48 -08:00
ReignOfComputer
b7a29c1017 Refresh Visiblity of Legality (#795)
This clears any legality markings when loading Pokemon from generations
not covered by checks. Should fix issue
https://github.com/kwsch/PKHeX/issues/794.
2017-01-31 18:48:33 -08:00
Kurt
1454433483 Misc legality updates
Add ゲーフリ to valid 151 OTs
Revise logic for split-forme egg moves (Closes #777)
Save config on closing instead of option change
Remove geolocation setting for 6->7 and associated legality check, move
geolocation validity check higher (Closes #776)
2017-01-30 17:49:28 -08:00
Kurt
9506b3bbe1 Fix cloning overflow
use the count of slots in a box, not 30 hardcoded
Thanks Wanderer1391!
2017-01-29 17:50:06 -08:00
Kurt
6a63137ca6 Fix forme display
Closes #771
2017-01-29 10:45:02 -08:00
Kurt
30ec9011c8 Misc updates
Remove safari hidden ability check for gen7 origin pkm
load template data on any save load, causes the legality triangle to
appear on supported games
2017-01-29 00:02:32 -08:00
Kurt
5cc8d1de5c Fix clickLegality calling
existing logic put mnuLLegality back into mnuL, causing the getSlot call
to return -1 (not from a box/party slot, ie read from tabs).

new logic should have the intended behavior
2017-01-28 15:20:11 -08:00
Kurt
340b57ee60 More UI improvements
Hold Control when right clicking a Box/Party/etc slot to get the
Legality menu item to appear.

Improve the SD card locked check when saving for multiple exception
types.
2017-01-28 13:07:44 -08:00
Kurt
5ae027c934 Misc user protections
trycatch SD card readonly check
Remove All medals now clears gen7 flags (for improper transfers)
2017-01-28 10:50:36 -08:00
Kurt
ab5a0a7a3a Fix PID auto-update past gen
Closes #766
2017-01-28 10:36:57 -08:00
Kurt
b86321c142 Expand pk6/pk7 checks
As per comments on 75d460e
2017-01-27 23:33:36 -08:00
Kurt
f282711e35 Cleanup
Use S/M met locations for Pokémon GO origin
Changing to VC1 or GO now autofills met location
Un-alphabetize RGBY games and move to end of games list (+go)
Mark unused region names (Kanto string appears twice in text bank 3,
30013 is used)
Move hypertraining stat toggling to pkm object

shift 1->7 logic to repeat less operations
add more 1->7 logic pertaining to memories
add RefreshAbility method (0 based input, not 1/2/4)
2017-01-25 22:51:52 -08:00
Kurt
f1c2a74aed Add write protection alert on save load
#750
2017-01-25 20:11:53 -08:00
Kurt
0a19b8b59b Split gen1/2 shininess
an attempt was made
2017-01-24 21:28:29 -08:00
Kurt
eebf3fbac3 Add gen1 shininess editing
Since it's the same as gen2's checks, and gen1->7 is now possible...
2017-01-24 21:01:32 -08:00
Michael Scire
5a23fda752 Add support for VC/Horohoro game ID markings 2017-01-24 07:12:14 -08:00
Kurt
bcb5f5f2bb Minor cleanup
extrabytes setting moved to another method, fixes all resharper problems
2017-01-22 23:05:54 -08:00
Kurt
ed52aa31e1 Fix set import shortly after starting program
CB_Form is not yet initialized with items, do a little sanity checking
before setting index to 0.
Closes #729
2017-01-18 23:18:14 -08:00
Kurt
469e0940c2 Add gen7 hall of fame editor 2017-01-16 22:40:28 -08:00
Kurt
97227fdfe9 More simplification
Extrabytes index selection done in setPKMFormatMode

if (visible) is bad, why do I forget? If the control is not shown (ie
another tab) but possible to be visible it'll return false. Use enabled
instead.
2017-01-14 16:59:57 -08:00
Kurt
3f218968c5 Refactoring & fixes
Fix blank sav creation for gens 1-3 (data vs Data references, version
overrides)
Fix main form init with gen2 first (check for altform usage like all
other gens)
Use GameVersion specific blank fetch instead of generation ID
2017-01-14 16:43:16 -08:00
Kurt
e321c48871 Refactoring
Add blank save creation to Core SaveUtil methods.
Simplify main form resource usage (remove redundant qualifiers)
2017-01-14 13:10:36 -08:00
Kurt
f4797e06a0 More refactoring
More extension methods for other types of images
2017-01-11 22:28:35 -08:00
Kurt
db5e084ef9 Further refactoring
Move System.Drawing usage out of Core to WinForms, as System.Drawing is
not in .NET Core/Standard. Simple methods to return resource name
strings have been added instead.
2017-01-11 17:55:42 -08:00
Kurt
1d1179465a Add typo null check
Updating legality with an invalid move name causes SelectedValue to
equal null. Use the util function that has null check for combobox &
selectedvalue.
2017-01-10 20:59:31 -08:00
Kurt
c1e613280b Hide save buttons if no save has been loaded
buttons enabled by default => only show button panel if the save is
valid AND at least one enabled.
2017-01-10 20:01:33 -08:00
Kurt
c9e721fc5b Update settings load
bad settings files cause exceptions, silently delete them
move language init out of loadconfig (want it to happen regardless of
config errors, so load config value instead)
2017-01-09 19:15:46 -08:00
Kurt
1fcdffc654 Add pkm value indication
Grab an example PKM (from main window) to get the current value to
assist users in creating their modification scripts.

Added 3 tooltips for hovering over property/type/value controls
2017-01-08 21:06:15 -08:00
Kurt
51352c3c13 Remove more find-replace errors
yay for unsaved changes
2017-01-08 17:14:39 -08:00
Kurt
1e3a46d760 Find replace is bad 2017-01-08 15:27:00 -08:00
Kurt
7da6f1ab1d Cleanup 2017-01-08 00:14:34 -08:00
Kurt
595c7eb4c5 Split winforms to separate project
resources still are associated with winforms, eh
program still runs fine and I've replicated the mono build options. lmk
if this breaks stuff
2017-01-07 23:54:09 -08:00
Renamed from PKHeX/MainWindow/Main.cs (Browse further)