Commit graph

395 commits

Author SHA1 Message Date
Kurt
7a5ce5aa78 Remove unmaintained portuguese side-translation
Closes #2004
no changes had been submitted since originally committed on 3/5/2015; 3y
of inactivity.

users can always place "lang_en" to replace the english translation with
their own GUI strings; not worth maintaining non-series language
support.
2018-06-14 17:03:56 -07:00
Kurt
d724dffcc3 Update translations
Add secret debug hotkey to trigger update of translation files
2018-05-31 22:40:55 -07:00
Kurt
6949cf103e Add custom savefile extension support
savexts.txt if you wanna update it without recompiling

Keep in mind these are just aliases for raw data. No conversion is done,
it only allows the file to be filtered to.

Closes #1955
#1856
#1455
2018-05-21 19:12:02 -07:00
Kurt
95b4d0820d Minor reorganization
amount of pkm obj classes is pretty high, move the static utility
classes to another folder

breaks usage of pkm.ShowdownText; removes a dependency from PKM.
2018-05-18 19:33:11 -07:00
Kurt
78c4dbd69c Update plugin interface
now is notified during a file load event (can handle itself)
2018-05-14 17:30:56 -07:00
Kurt
663ec5c536 Add sound path
Closes #1943
2018-05-14 15:46:36 -07:00
Kurt
857919bd28 Add basic plugin sys
reference PKHeX.Core, main window loads assemblies & initializes
providing an ISaveProvider and the menustrip control (to insert controls
into)

pretty rough but should allow for inserting external control buttons &
allowing it to edit the UI a little

example: https://github.com/kwsch/PKHeXPluginExample
feedback is appreciated
2018-05-13 12:49:29 -07:00
Kurt
99005d8fc0 Refactoring
more discards & simplifications
2018-05-12 12:28:48 -07:00
Kurt
5a3c8f4147 Remove trailing whitespace 2018-05-12 08:41:29 -07:00
Kurt
19a0560474 Misc cleanup
extend byte[]->pkm iterator for specifying start/stop
clean up some in main window
2018-05-06 22:24:25 -07:00
Kurt
e91cb806e5 Extract extension->prefer format method
fails for 'pkx' (returned 8 instead of 6); establish standard behavior
2018-04-21 14:38:18 -07:00
Kurt
2acef4eaf7 Add messagestring dumper
untested, will monkey with later
2018-04-06 22:51:10 -07:00
Archit Date
400344a0e1 Fix compile error on non debug builds (#1889) 2018-04-06 05:55:46 -07:00
Kurt
5e96c6e035 Extract main window strings to translatable class
Similar to LegalityCheckStrings
no resource files yet, will generate those tomorrow(?)

some strings are not translatable (useless gen6 passerby export text),
not really worth
2018-04-05 21:25:18 -07:00
Kurt
48cf658abd Update translations
#1885
removes content not present, moves dev code to separate debug-only class
2018-04-03 18:46:32 -07:00
Kurt
1777a09bde Update translation files with all translatables
Closes #1883

Some controls could be manually pruned (like Gender labels), but nah
2018-04-02 20:55:10 -07:00
Kurt
9ed2c594f2 Reorder form init 2018-04-02 20:36:13 -07:00
Kurt
17b771632e Add settings editor to main navigation
shortcut ctrl-n (CoNfig)
Closes #1864
add debug lines for triggering translations to update
2018-03-23 22:54:26 -07:00
ReignOfComputer
bf1b685705 Translate Showdown Markings & Fix PT Selection (#1872)
Added translation strings for Apply Showdown Markings in CHS, French,
and Korean. International schools ftw.

Additionally, Portuguese was not accessible as it is Index 9 ("zh2",
which I assume is CHT, is at 8), so I've just hardcoded this bit since I
don't know if anything else relies on lang_val.
2018-03-20 08:36:15 -07:00
ReignOfComputer
430938d131 Showdown Markings Toggle (#1868)
Perhaps we could have a temporary toggle while waiting for a master
settings page? :) Related: https://github.com/kwsch/PKHeX/issues/1864
https://github.com/kwsch/PKHeX/issues/1862
2018-03-19 07:52:16 -07:00
Kurt
cbf4038a95 Refactoring
relocate gift data storage out of legal.cs
2018-03-05 22:19:56 -08:00
Evan Dixon
392f01cb3e Fix build error (#1816)
IEnumerable doesn't support LINQ methods, only the generic variant does. So this commit changes SAV_GameSelect's parameter to a generic IEnumerable of the only type being passed into it. I didn't realize it until afterward, but this is 100% the way it should have been because the databinding members expect ComboItems.
2018-02-05 12:12:42 -08:00
Kurt
9085dfd950 Allow backwards conversion on hax
works somewhat on drag&drop individual files, not guaranteed to work for
all pkm formats
https://i.imgur.com/v3i3ON9.png

Closes #1792
2018-01-28 22:47:03 -08:00
Kurt
eb505303bb Fix vc backups acting like gb era saves
ends with .dat only works if the real file ends with dat
load the filename data after stripping off the bak filename data
#1787
2018-01-28 00:03:49 -08:00
Kurt
ef0453ecf6 Add shiny sprite toggle setting
not functional yet
#1735
2018-01-02 17:08:14 -08:00
Kurt
985883e6ae Refactoring
pull out ability list generating
refactor showdown set to an Action that can be overwritten from
elsewhere
2017-12-21 22:55:33 -08:00
Kurt
2be84b6005 Rework encounterslot location fetch
store ref to area instead of location, useful for fetching sibling slots
from the parent.
2017-11-25 18:16:50 -08:00
Kurt
a6da97ad42 Add debug sensitive date string for qr exports 2017-11-14 08:48:36 -08:00
Kurt
24121553b4 Add savegame sensitive pkm legality checking
uses the forme count of the savefile (rather than a futureproofed
same-gen forme count)
Closes #1559
2017-11-06 19:31:24 -08:00
Kurt
021ecbfe47 move pkm load compat check to pkmconverter
closes #1550 , mgdb/pkmdb throw unconverted files which need conversion;
move main file load conversion to a reusable method and have pkmeditor
call it on every load.

add skip argument to ignore the conversion check (ie if the file is
loaded from an undoubtedly same type source).
2017-10-28 14:26:27 -07:00
Kurt
933bfba8e1 Misc cleanup
check gen2 stadium names, use pkm.Japanese when favorable
2017-10-24 18:27:40 -07:00
Kurt
69cf1eaa9c add more pkhex.core xml documentation
adds a bunch of documentation useful for those unfamiliar with the core
library
2017-10-23 23:12:58 -07:00
Kurt
2ad5b19f6c Add mgqr -> tabs
Closes #1542 and prevents incorrect loading cases (qrpk2jp -> g2en sav
etc)

simplifies things a bit ;)
2017-10-23 15:49:52 -07:00
Kurt
78a557c3cd misc tweaks
simplify some linq usage
2017-10-08 22:14:47 -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
d8c2cdb8e3 Use EnumerateFiles over GetFiles in some cases
https://msdn.microsoft.com/en-us/library/07wt70x2.aspx

iterating as an ienumerable (ie not consuming the whole collection) can
be more efficient by not waiting for the whole collection
2017-09-23 17:02:28 -07:00
javierhimura
f3743e490b Korean language restrictions
Restriction happens because Korean can not trade with non-Korean GB era games
- There is no Korean release for gen 1 pokemon, included VC
- With no gen1 pokemon means any Korean gen2 is Gen2_NotTradeback, that means no gen1 origin nor moves are Legal
- Crystal was never released in Korean
- Pokemon Stadium 2 was never released in Korean, that means no move reminder for gen 2 korean pokemon

- Generation 4 can not trade between Korean and not Korean games, but Korean games can use the palpark with any language

Chinese language restrictions
There is no Chinese release for gen 1 and 2 pokemon games, VC Chinese games are in Japanese
2017-09-23 20:46:10 +02: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
b13a7c9624 Add gen2 VC/Physical selection prompt
#1477
2017-09-22 15:50:19 -07:00
Kurt
28dbdcf992 Disable box dump for saves without boxdata
really only orasdemo only; all others were already disabled
2017-09-21 21:35:01 -07:00
Kurt
7efd771bf4 Misc refactoring
add docs, move some data fetching to more appropriate class
remove old XP memecrypto support handling, was previously removed due to
net standard/core split
refactor memecrypto to handle multiple save sizes (USUM won't be the
same size save file); placeholder -1 for USUM size
2017-09-16 11:38:58 -07:00
Kurt
35049a5b5b Update thread path
Closes #1382
2017-09-07 21:47:18 -07:00
Kurt
432ca847f6 Add debug build identification
shows up prefixed by "d-" and the date modified (compiled)
helps identify shared non-release builds
2017-09-04 13:40:04 -07:00
Kurt
249c08b062 Add gen-sensitive deoxys sprite fetching
Closes #1327
2017-07-16 14:05:29 -07:00
Kurt
8ffe2257db Add cancel abort
Cancel no longer defaults to the latter (no/LG) option
closes #1321
2017-07-11 18:01:20 -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
80e2d55999 Tweak alt-click preview sprite behavior
Closes #1293
2017-07-02 21:27:22 -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
5b5c9d0017 Move ribbon name resources to string dictionary
multilang support now possible, other language translation files added
from existing form translation file

feel free to submit a pull request to change anything for your native
language :)

Closes #1250
not gonna add the alt sprites/names for pk3's
2017-06-22 21:56:41 -07:00
Kurt
0aec466965 Fix loading boxdata/pcdata
the input == 0 checks only applied to gen4+; pk1/2/3 do not have a
sanity at 0x4
Closes #1262
2017-06-22 17:52:11 -07:00
Kurt
aa67a63893 Allow alt-click preview to import showdown
Alt-Click species may not always be visible, simple enough
2017-06-21 21:57:59 -07:00
Evan Dixon
2636e7ded8 Fixed another potential blank error message
I also added comments where appropriate, because it took far too long to understand what was going on when reviewing the commit that fixed the original bug.
2017-06-20 20:38:33 -05:00
Kurt
2db061d15d Fix blank error message
Closes #1251

Thanks @ReignOfComputer for finding the source :)
2017-06-20 18:16:29 -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
258f660a90 Misc fixes
Immediately hide legality indication if hax
invert blank sav check (refactoring oops)
Closes #1238
2017-06-17 19:20:37 -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
8a4c40908b Enforce met location matching for crystal data
Only while format == 2
improve detection for gen1/2 ingame trades
2017-06-12 18:15:26 -07:00
Kurt
0f040fb6e0 remove typo
Closes #1210
2017-06-09 08:56:28 -07: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
1433ffd823 Remove double close event
Closes #1203
2017-06-07 22:19:49 -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
14225bbc2e misc fixes
encounterinvalid isegg no longer throws exceptions when parsing moves
dropping invalid file paths to main window are now ignored (downloads
from chrome can be manually deleted but still dragged from the downloads
bar)
add pidiv case for manaphy gift
2017-06-04 00:12:37 -07:00
Kurt
e522094679 Fix pkm editor behavior
Closes #1180
2017-05-30 20:50:15 -07:00
Kurt
550153e3bc Improve gen3 sav detection
better detect RSE collisions
add auto-detection for japanese games
Closes #1172
2017-05-29 10:33:27 -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
Kurt
da3d8c99be Misc refactoring
move some open/save file dialog events out of the main form
update main form logic to reflect newly flagged pkm cases
2017-05-17 22:00:06 -07:00
Kurt
7edc2eb14f Add report exporting to clipboard
Closes #1141
cleaner look maybe in the future (colorized)
2017-05-16 21:15:32 -07:00
Kurt
f674d45854 Misc changes
Properly handle egg hatch counters for generated mystery gifts, as well
as HT friendship for gen6+
fetch form specific (friendship doesn't change but abilities fetch
species specific data later, so just fetch once up front). Do not depend
on save file as SAV7 importing PGF may have different abilities
allocated
Pad buttons for folder popup
fix double Japanese/International error message for importing jpk1<->pk1
2017-05-16 20:34:24 -07:00
Evan Dixon
e254ec7c37 Activate illegal mode with commandline arg
Workaround for PKHaX being broken. Trimming each argument allows "hax", "-hax", and "--hax" to all work for activating illegal mode.
2017-05-16 20:55:24 -05:00
Kurt
1659405dc4 Add quick folder open menu item
Closes #1137
allows loading of tab separated value text file "savpaths.txt" which can
also be used to 'favorite' locations (ie, the program checks for
duplicate paths and only adds the first).
folder availability checked on form creation

shortcut: press ctrl-F on main window

Thanks @sora10pls !
2017-05-16 16:27:43 -07:00
Kurt
2bfa98db09 Refactor dragdrop managing logic
Relocate class out of main form for reusability/less lines in main.cs
refactored to be a bit more oop
2017-05-16 08:56:13 -07:00
Kurt
6f64c9be8e Fix update check url
version txt was in core project prior to refactor

Also restrict 3IV randomization to gen6+ (sub)legends.
Closes #1131
2017-05-15 08:27:19 -07:00
Kurt
404651774a Further simplifications
Gender color display was copypasted everywhere, now just call the gender
color method.
2017-05-13 12:51:33 -07:00
Kurt
5ec3521d48 More c#7 shorthand
outs & pattern matching, other simplifications
2017-05-13 10:20:25 -07:00
Kurt
aeb90d262c Cleanup 2017-05-12 09:33:12 -07:00
Evan Dixon
52c4fbbe97 Converted PKHeX.Core to .Net Standard
Refactored and rearranged things as needed to allow the change
2017-05-11 23:34:18 -05:00
Kurt
1b7e0e630c Add template loading when sav loaded
Closes #1114
Loads a template file (if it exists) instead of applying default
template info when a new save is loaded. No formats are hardcoded, as
ck3!=xk3!=pk3!=bk4
2017-05-10 19:24:58 -07:00
Kurt
6d9cbaaec0 Add IOException type write protection check
per recent forum thread
2017-05-10 19:01:01 -07:00
Kurt
d05d6c44f4 Misc ec/pid tweaks
use the encryption constant (pk3-5 return PID on get), fix gen4 using
gen5 correlation
2017-05-03 23:14:34 -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
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
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
ef35055d4e Fix directory not found issue
Thanks ArcticLoveBunny!
2017-04-19 18:47:42 -07:00
Kurt
757cf11f52 Database improvements
Reduce linq usage (toarray) and just use the actual index
Implement GetHashCode for Mystery Gifts to only add unique data arrays
#1071
2017-04-19 03:15:54 -07:00
Kurt
5d9962d102 Mark SAV as unmodified upon load
Closes #1076
seems kinda lazy as I didn't bother tracking down the suspect that
modifies the save (presumably the hex seed values); those should load
correctly and not change any bytes.
2017-04-17 23:36:46 -07:00
Kurt
8a8b43948b Improve visual interactivity with storage slots
* Replace the background with a frosty partially transparent image to
snap user attention to the hovered slot
* change cursor to hand symbol when over a draggable box slot
* remove duplicated resource references
* remove unused line in rtc3
2017-04-13 23:05:19 -07:00
Kurt
bbc6915114 Add RTC Editor for Gen3
FRLG doesn't have an RTC, so only permit the editor on RS & E.
2017-04-13 19:11:01 -07:00
Kurt
bb97c0ffef Update wurmple check
wurmple index was calculated incorrectly
update main form EC reroll; now that legality checking (and gen1->7) is
implemented the legality indicator will alert the user to their error
instead.
2017-04-12 21:38:53 -07:00
Kurt
dbae1fb932 Tweak gameselect parameters
Combo items are now localized automatically by specifying the game IDs
and using the gameinfo values. (odd style is to support eventual message
localization).
program title now indicates XD/C/Batrev instead of just SAV(generation)
2017-04-10 16:28:44 -07:00
javierhimura
5e87608079 E-reader Berry (#1050)
* E-Reader berry improvement
Load from the savegame the name of the e-reader berry and show in the item list that name instead of enigma berry if there is any e-reader berry data stored
Also check Legality of the berry, as enigma berry is unrelead in generation 3, but if there is e-berry data if check if the e-berry name is from one of the released cards

* Fix Shedinja moves check in generation 3 format

* Update comments, e-berry code is based in Suloku work for the gen 3 wc-tool

* Move e-reader comunication with Legality class to Main.cs
Remove curly braces in GameInfo

* Undo all changes in SaveUtil.cs
2017-04-10 15:59:16 -07:00
Kurt
0d8a58d3ab Cleanup
reduce nesting & complexity by splitting into smaller methods
fetch species list on boot instead of every gen1pkm
misc style fixes
2017-04-09 17:43:05 -07:00
Kurt
06f778ac92 Add event nicknamed fishy flag
Also updates lang translations for incorrect/missing strings

(ps: uncomment the line in main to copy the current localization strings
to clipboard for ez paste replace into notepad)
2017-04-09 16:38:29 -07:00
Kurt
691493cafe String editing refactor
Move all sanitization operations from PK* and SAV* to PKX; add general
method for fetching a generation specific string
Changes the Text subform editor to show trash bytes when appropriate.
Special characters to be shown can be easily inserted in the future.
2017-04-09 14:06:50 -07:00
pokecal
7d430387f8 add Gen4 MiscEditForm
there is now only a tab Poketch.
2017-04-08 18:20:16 +09:00
suloku
1dc5831921 Added Honey Tree Editor for DP and Pt savegames. (#1029) 2017-04-06 17:39:36 -07:00
Kurt
b789478a25 Add friend safari cheat macro
Thanks @suloku !
#330
resx stop being goofy
2017-04-04 18:58:32 -07:00
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)