Merge branch 'master'
6
.gitignore
vendored
@@ -241,3 +241,9 @@ pip-log.txt
|
||||
|
||||
# Mr Developer
|
||||
.mr.developer.cfg
|
||||
|
||||
#################
|
||||
## MonoDevelop
|
||||
#################
|
||||
|
||||
*.userprefs
|
||||
@@ -175,8 +175,10 @@ private LegalityCheck verifyEVs()
|
||||
{
|
||||
var evs = pk6.EVs;
|
||||
int sum = evs.Sum();
|
||||
if (pk6.IsEgg && sum > 0)
|
||||
return new LegalityCheck(Severity.Invalid, "Eggs cannot receive EVs.");
|
||||
if (sum == 0 && pk6.Stat_Level - pk6.Met_Level > 0)
|
||||
return new LegalityCheck(Severity.Fishy, "All EVs are zero, but leveled above Met Level");
|
||||
return new LegalityCheck(Severity.Fishy, "All EVs are zero, but leveled above Met Level.");
|
||||
if (sum == 508)
|
||||
return new LegalityCheck(Severity.Fishy, "2 EVs remaining.");
|
||||
if (sum > 510)
|
||||
@@ -349,6 +351,8 @@ private LegalityCheck verifyLevel()
|
||||
return new LegalityCheck(Severity.Invalid, "Met Level does not match Wonder Card level.");
|
||||
|
||||
int lvl = pk6.CurrentLevel;
|
||||
if (lvl > 1 && pk6.IsEgg)
|
||||
return new LegalityCheck(Severity.Invalid, "Current level for an egg is invalid.");
|
||||
if (lvl < pk6.Met_Level)
|
||||
return new LegalityCheck(Severity.Invalid, "Current level is below met level.");
|
||||
if ((pk6.WasEgg || EncounterMatch == null) && !Legal.getEvolutionValid(pk6) && pk6.Species != 350)
|
||||
@@ -365,6 +369,28 @@ private LegalityCheck verifyRibbons()
|
||||
|
||||
List<string> missingRibbons = new List<string>();
|
||||
List<string> invalidRibbons = new List<string>();
|
||||
|
||||
if (pk6.IsEgg)
|
||||
{
|
||||
var RibbonNames = ReflectUtil.getPropertiesStartWithPrefix(pk6.GetType(), "Ribbon");
|
||||
foreach (object RibbonValue in RibbonNames.Select(RibbonName => ReflectUtil.GetValue(pk6, RibbonName)))
|
||||
{
|
||||
if ((RibbonValue as int?) > 0)
|
||||
return new LegalityCheck(Severity.Invalid, "Eggs should not have ribbons.");
|
||||
if (RibbonValue as bool? == true)
|
||||
return new LegalityCheck(Severity.Invalid, "Eggs should not have ribbons.");
|
||||
}
|
||||
|
||||
var DistNames = ReflectUtil.getPropertiesStartWithPrefix(pk6.GetType(), "DistSuperTrain");
|
||||
if (DistNames.Select(MissionName => ReflectUtil.GetValue(pk6, MissionName)).Any(Flag => Flag as bool? == true))
|
||||
return new LegalityCheck(Severity.Invalid, "Distribution Super Training missions on Egg.");
|
||||
|
||||
var TrainNames = ReflectUtil.getPropertiesStartWithPrefix(pk6.GetType(), "SuperTrain");
|
||||
if (TrainNames.Select(MissionName => ReflectUtil.GetValue(pk6, MissionName)).Any(Flag => Flag as bool? == true))
|
||||
return new LegalityCheck(Severity.Fishy, "Super Training missions on Egg.");
|
||||
|
||||
return new LegalityCheck();
|
||||
}
|
||||
|
||||
// Check Event Ribbons
|
||||
bool[] EventRib =
|
||||
@@ -420,7 +446,13 @@ private LegalityCheck verifyRibbons()
|
||||
invalidRibbons.Add("Battle Memory"); // Gen3/4 Battle
|
||||
|
||||
if (missingRibbons.Count + invalidRibbons.Count == 0)
|
||||
{
|
||||
var DistNames = ReflectUtil.getPropertiesStartWithPrefix(pk6.GetType(), "DistSuperTrain");
|
||||
if (DistNames.Select(MissionName => ReflectUtil.GetValue(pk6, MissionName)).Any(Flag => Flag as bool? == true))
|
||||
return new LegalityCheck(Severity.Fishy, "Distribution Super Training missions are not released.");
|
||||
|
||||
return new LegalityCheck(Severity.Valid, "All ribbons accounted for.");
|
||||
}
|
||||
|
||||
string[] result = new string[2];
|
||||
if (missingRibbons.Count > 0)
|
||||
@@ -820,6 +852,14 @@ private LegalityCheck verifyForm()
|
||||
}
|
||||
private LegalityCheck verifyMisc()
|
||||
{
|
||||
if (pk6.IsEgg)
|
||||
{
|
||||
if (new[] { pk6.Move1_PPUps, pk6.Move2_PPUps, pk6.Move3_PPUps, pk6.Move4_PPUps }.Any(ppup => ppup > 0))
|
||||
return new LegalityCheck(Severity.Invalid, "Cannot apply PP Ups to an Egg.");
|
||||
if (pk6.CNTs.Any(stat => stat > 0))
|
||||
return new LegalityCheck(Severity.Invalid, "Cannot increase Contest Stats of an Egg.");
|
||||
}
|
||||
|
||||
if (pk6.Gen6 && Encounter.Valid && EncounterType == typeof(WC6) ^ pk6.FatefulEncounter)
|
||||
{
|
||||
if (EncounterType == typeof(EncounterStatic) && pk6.Species == 386) // Deoxys Matched @ Sky Pillar
|
||||
|
||||
@@ -840,6 +840,9 @@ public static partial class Legal
|
||||
};
|
||||
internal static readonly int[] Ban_Gen3Ball =
|
||||
{
|
||||
387, 390, 393, //1 - Turtwig, Chimchar, Piplup
|
||||
388, 391, 394, //2
|
||||
389, 392, 395, //3
|
||||
495, 498, 501, //1 - Snivy, Tepig, Oshawott
|
||||
496, 499, 502, //2
|
||||
497, 500, 503, //3
|
||||
@@ -850,6 +853,9 @@ public static partial class Legal
|
||||
152, 155, 158, //1 - Chikorita, Cyndaquil, Totodile
|
||||
153, 156, 159, //2
|
||||
154, 157, 160, //3
|
||||
387, 390, 393, //1 - Turtwig, Chimchar, Piplup
|
||||
388, 391, 394, //2
|
||||
389, 392, 395, //3
|
||||
495, 498, 501, //1 - Snivy, Tepig, Oshawott
|
||||
496, 499, 502, //2
|
||||
497, 500, 503, //3
|
||||
|
||||
28
PKHeX/Legality/Tables1.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public static partial class Legal
|
||||
{
|
||||
// PKHeX Valid Array Storage
|
||||
internal static readonly ushort[] Pouch_Items_RBY = Enumerable.Range(0, 7) // 0-6
|
||||
.Concat(Enumerable.Range(10, 11)) // 10-20
|
||||
.Concat(Enumerable.Range(29, 15)) // 29-43
|
||||
.Concat(Enumerable.Range(45, 5)) // 45-49
|
||||
.Concat(Enumerable.Range(51, 8)) // 51-58
|
||||
.Concat(Enumerable.Range(60, 24)) // 60-83
|
||||
.Concat(Enumerable.Range(196, 54)) // 196-249
|
||||
.Select(i => (ushort)i).ToArray();
|
||||
|
||||
internal static readonly int[] MovePP_RBY =
|
||||
{
|
||||
0,
|
||||
35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 30, 30, 35, 35, 20, 15, 20, 20, 10, 20, 30, 05, 25, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 20, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20,
|
||||
30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 20, 10, 10, 40, 25, 10, 35, 30, 15, 20, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20,
|
||||
15, 10, 40, 15, 20, 30, 20, 20, 10, 40, 40, 30, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 10, 20, 15, 15, 35, 20, 15, 10, 20, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40,
|
||||
40, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 10, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00
|
||||
};
|
||||
}
|
||||
}
|
||||
35
PKHeX/Legality/Tables2.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public static partial class Legal
|
||||
{
|
||||
// PKHeX Valid Array Storage
|
||||
internal static readonly ushort[] Pouch_Items_GSC = {
|
||||
3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 51, 52, 53, 57, 60, 62, 63, 64, 65, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 117, 118, 119, 121, 122, 123, 124, 125, 126, 131, 132, 138, 139, 140, 143, 144, 146, 150, 151, 152, 156, 158, 163, 168, 169, 170, 172, 173, 174, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189
|
||||
};
|
||||
internal static readonly ushort[] Pouch_Ball_GSC = {
|
||||
1, 2, 4, 5, 157, 159, 160, 161, 164, 165, 166, 167
|
||||
};
|
||||
internal static readonly ushort[] Pouch_Key_GS = {
|
||||
7, 54, 55, 58, 59, 61, 66, 67, 68 , 69, 71, 127, 128, 130, 133, 134, 175, 178
|
||||
};
|
||||
internal static readonly ushort[] Pouch_Key_C = Pouch_Key_GS.Concat(new ushort[]{70, 115, 116, 129}).ToArray();
|
||||
internal static readonly ushort[] Pouch_TMHM_GSC = {
|
||||
191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249
|
||||
};
|
||||
|
||||
internal static readonly ushort[] HeldItems_GSC = new ushort[1].Concat(Pouch_Items_GSC).Concat(Pouch_Ball_GSC).Concat(Pouch_TMHM_GSC).ToArray();
|
||||
|
||||
internal static readonly int[] MovePP_GSC =
|
||||
{
|
||||
00,
|
||||
35, 25, 10, 15, 20, 20, 15, 15, 15, 35, 30, 05, 10, 30, 30, 35, 35, 20, 15, 20, 20, 10, 20, 30, 05, 25, 15, 15, 15, 25, 20, 05, 35, 15, 20, 20, 20, 15, 30, 35, 20, 20, 30, 25, 40, 20, 15, 20, 20, 20,
|
||||
30, 25, 15, 30, 25, 05, 15, 10, 05, 20, 20, 20, 05, 35, 20, 25, 20, 20, 20, 15, 20, 10, 10, 40, 25, 10, 35, 30, 15, 20, 40, 10, 15, 30, 15, 20, 10, 15, 10, 05, 10, 10, 25, 10, 20, 40, 30, 30, 20, 20,
|
||||
15, 10, 40, 15, 20, 30, 20, 20, 10, 40, 40, 30, 30, 30, 20, 30, 10, 10, 20, 05, 10, 30, 20, 20, 20, 05, 15, 10, 20, 15, 15, 35, 20, 15, 10, 20, 30, 15, 40, 20, 15, 10, 05, 10, 30, 10, 15, 20, 15, 40,
|
||||
40, 10, 05, 15, 10, 10, 10, 15, 30, 30, 10, 10, 20, 10, 01, 01, 10, 10, 10, 05, 15, 25, 15, 10, 15, 30, 05, 40, 15, 10, 25, 10, 30, 10, 20, 10, 10, 10, 10, 10, 20, 05, 40, 05, 05, 15, 05, 10, 05, 15,
|
||||
10, 05, 10, 20, 20, 40, 15, 10, 20, 20, 25, 05, 15, 10, 05, 20, 15, 20, 25, 20, 05, 30, 05, 10, 20, 40, 05, 20, 40, 20, 15, 35, 10, 05, 05, 05, 15, 05, 20, 05, 05, 15, 20, 10, 05, 05, 15, 15, 15, 15,
|
||||
10, 00, 00, 00, 00
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ public static partial class Legal
|
||||
// PKHeX Valid Array Storage
|
||||
#region RS
|
||||
internal static readonly ushort[] Pouch_Items_RS = {
|
||||
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 93, 94, 95, 96, 97, 98, 103, 104, 106, 107, 108, 109, 110, 111, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 254, 255, 256, 257, 258
|
||||
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 93, 94, 95, 96, 97, 98, 103, 104, 106, 107, 108, 109, 110, 111, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 254, 255, 256, 257, 258
|
||||
};
|
||||
internal static readonly ushort[] Pouch_Key_RS = {
|
||||
259, 260, 261, 262, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288
|
||||
|
||||
3253
PKHeX/MainWindow/Main.Designer.cs
generated
@@ -67,8 +67,7 @@ public Main()
|
||||
};
|
||||
relearnPB = new[] { PB_WarnRelearn1, PB_WarnRelearn2, PB_WarnRelearn3, PB_WarnRelearn4 };
|
||||
movePB = new[] { PB_WarnMove1, PB_WarnMove2, PB_WarnMove3, PB_WarnMove4 };
|
||||
defaultControlWhite = CB_Species.BackColor;
|
||||
defaultControlText = Label_Species.ForeColor;
|
||||
Label_Species.ResetForeColor();
|
||||
|
||||
// Set up Language Selection
|
||||
foreach (var cbItem in main_langlist)
|
||||
@@ -78,7 +77,7 @@ public Main()
|
||||
new ToolTip().SetToolTip(dragout, "PKM QuickSave");
|
||||
|
||||
// Box Drag & Drop
|
||||
foreach (PictureBox pb in PAN_Box.Controls)
|
||||
foreach (PictureBox pb in SlotPictureBoxes)
|
||||
{
|
||||
pb.AllowDrop = true; // The PictureBoxes have their own drag&drop event handlers (pbBoxSlot)
|
||||
pb.GiveFeedback += (sender, e) => { e.UseDefaultCursors = false; };
|
||||
@@ -173,15 +172,14 @@ public Main()
|
||||
#region Important Variables
|
||||
public static PKM pkm = new PK6(); // Tab Pokemon Data Storage
|
||||
public static SaveFile SAV = new SAV6 { Game = (int)GameVersion.AS, OT = "PKHeX", TID = 12345, SID = 54321, Language = 2, Country = 49, SubRegion = 7, ConsoleRegion = 1 }; // Save File
|
||||
public static Color defaultControlWhite, defaultControlText;
|
||||
public static string eggname = "";
|
||||
|
||||
public static string curlanguage = "en";
|
||||
public static string[] gendersymbols = { "♂", "♀", "-" };
|
||||
public static string[] specieslist, movelist, itemlist, abilitylist, types, natures, forms,
|
||||
memories, genloc, trainingbags, trainingstage, characteristics,
|
||||
encountertypelist, gamelanguages, balllist, gamelist, pokeblocks, g3items = { };
|
||||
public static string[] metRSEFRLG_00000 = { };
|
||||
encountertypelist, gamelanguages, balllist, gamelist, pokeblocks, g3items, g2items, g1items = { };
|
||||
public static string[] metGSC_00000, metRSEFRLG_00000 = { };
|
||||
public static string[] metHGSS_00000, metHGSS_02000, metHGSS_03000 = { };
|
||||
public static string[] metBW2_00000, metBW2_30000, metBW2_40000, metBW2_60000 = { };
|
||||
public static string[] metXY_00000, metXY_30000, metXY_40000, metXY_60000 = { };
|
||||
@@ -219,7 +217,7 @@ public Main()
|
||||
|
||||
public static string WorkingDirectory => Environment.CurrentDirectory;
|
||||
public static string DatabasePath => Path.Combine(WorkingDirectory, "db");
|
||||
private static string WC6DatabasePath => Path.Combine(WorkingDirectory, "wc6");
|
||||
public static string WC6DatabasePath => Path.Combine(WorkingDirectory, "wc6");
|
||||
private static string BackupPath => Path.Combine(WorkingDirectory, "bak");
|
||||
private static string ThreadPath => @"https://projectpokemon.org/forums/showthread.php?36986";
|
||||
private static string VersionPath => @"https://raw.githubusercontent.com/kwsch/PKHeX/master/PKHeX/Resources/text/version.txt";
|
||||
@@ -338,6 +336,15 @@ private void mainMenuDatabase(object sender, EventArgs e)
|
||||
Util.Alert("PKHeX's database was not found.",
|
||||
$"Please dump all boxes from a save file, then ensure the '{DatabasePath}' folder exists.");
|
||||
}
|
||||
private void mainMenuMysteryDM(object sender, EventArgs e)
|
||||
{
|
||||
var z = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(SAV_MysteryGiftDB)) as SAV_MysteryGiftDB;
|
||||
if (z != null)
|
||||
{ Util.CenterToForm(z, this); z.BringToFront(); return; }
|
||||
|
||||
new SAV_MysteryGiftDB(this).Show();
|
||||
|
||||
}
|
||||
private void mainMenuUnicode(object sender, EventArgs e)
|
||||
{
|
||||
unicode = Menu_Unicode.Checked;
|
||||
@@ -423,9 +430,12 @@ private void clickShowdownImportPK6(object sender, EventArgs e)
|
||||
if (Set.Species < 0)
|
||||
{ Util.Alert("Set data not found in clipboard."); return; }
|
||||
|
||||
if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, "Import this set?", Clipboard.GetText()))
|
||||
if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, "Import this set?", Set.getText()))
|
||||
{ return; }
|
||||
|
||||
if (Set.InvalidLines.Any())
|
||||
Util.Alert("Invalid lines detected:", string.Join(Environment.NewLine, Set.InvalidLines));
|
||||
|
||||
// Set Species & Nickname
|
||||
CB_Species.SelectedValue = Set.Species;
|
||||
CHK_Nicknamed.Checked = Set.Nickname != null;
|
||||
@@ -789,6 +799,8 @@ private void openSAV(byte[] input, string path)
|
||||
private void loadSAV(SaveFile sav, string path)
|
||||
{
|
||||
PKM pk = preparePKM();
|
||||
// clean fields
|
||||
populateFields(SAV.BlankPKM);
|
||||
SAV = sav;
|
||||
|
||||
if (path != null) // Actual save file
|
||||
@@ -797,7 +809,7 @@ private void loadSAV(SaveFile sav, string path)
|
||||
SAV.FileName = Path.GetExtension(path) == ".bak"
|
||||
? Path.GetFileName(path).Split(new[] { " [" }, StringSplitOptions.None)[0]
|
||||
: Path.GetFileName(path);
|
||||
Text = "PKHeX - " + $"SAV{SAV.Generation}: {Path.GetFileNameWithoutExtension(Util.CleanFileName(SAV.BAKName))}"; // more descriptive
|
||||
Text = $"PKH{(HaX ? "a" : "e")}X - " + $"SAV{SAV.Generation}: {Path.GetFileNameWithoutExtension(Util.CleanFileName(SAV.BAKName))}"; // more descriptive
|
||||
|
||||
// If backup folder exists, save a backup.
|
||||
string backupName = Path.Combine(BackupPath, Util.CleanFileName(SAV.BAKName));
|
||||
@@ -810,7 +822,7 @@ private void loadSAV(SaveFile sav, string path)
|
||||
{
|
||||
SAV.FilePath = null;
|
||||
SAV.FileName = "Blank Save File";
|
||||
Text = "PKHeX - " + $"SAV{SAV.Generation}: {SAV.FileName} [{SAV.OT} ({SAV.Version})]";
|
||||
Text = $"PKH{(HaX ? "a" : "e")}X - " + $"SAV{SAV.Generation}: {SAV.FileName} [{SAV.OT} ({SAV.Version})]";
|
||||
|
||||
GB_SAVtools.Visible = false;
|
||||
}
|
||||
@@ -830,13 +842,29 @@ private void loadSAV(SaveFile sav, string path)
|
||||
}
|
||||
setPKXBoxes(); // Reload all of the PKX Windows
|
||||
|
||||
bool WindowTranslationRequired = false;
|
||||
|
||||
// Hide content if not present in game.
|
||||
GB_SUBE.Visible = SAV.HasSUBE;
|
||||
PB_Locked.Visible = SAV.HasBattleBox && SAV.BattleBoxLocked;
|
||||
|
||||
PAN_Box.Visible = CB_BoxSelect.Visible = B_BoxLeft.Visible = B_BoxRight.Visible = SAV.HasBox;
|
||||
if (!SAV.HasBox && tabBoxMulti.TabPages.Contains(Tab_Box))
|
||||
tabBoxMulti.TabPages.Remove(Tab_Box);
|
||||
else if (SAV.HasBox && !tabBoxMulti.TabPages.Contains(Tab_Box))
|
||||
{
|
||||
tabBoxMulti.TabPages.Insert(0, Tab_Box);
|
||||
WindowTranslationRequired = true;
|
||||
}
|
||||
Menu_LoadBoxes.Enabled = Menu_DumpBoxes.Enabled = Menu_Report.Enabled = Menu_Modify.Enabled = B_SaveBoxBin.Enabled = SAV.HasBox;
|
||||
|
||||
if (!SAV.HasDaycare && tabBoxMulti.TabPages.Contains(Tab_Other))
|
||||
tabBoxMulti.TabPages.Remove(Tab_Other);
|
||||
else if (SAV.HasDaycare && !tabBoxMulti.TabPages.Contains(Tab_Other))
|
||||
{
|
||||
tabBoxMulti.TabPages.Insert(tabBoxMulti.TabPages.IndexOf(Tab_PartyBattle) + 1, Tab_Other);
|
||||
WindowTranslationRequired = true;
|
||||
}
|
||||
|
||||
if (path != null) // Actual save file
|
||||
{
|
||||
PAN_BattleBox.Visible = L_BattleBox.Visible = L_ReadOnlyPBB.Visible = SAV.HasBattleBox;
|
||||
@@ -853,10 +881,10 @@ private void loadSAV(SaveFile sav, string path)
|
||||
B_OpenOPowers.Visible = SAV.HasOPower;
|
||||
B_OpenPokedex.Visible = SAV.HasPokeDex;
|
||||
B_OpenBerryField.Visible = SAV.HasBerryField && SAV.XY;
|
||||
B_Pokeblocks.Visible = SAV.HasPokeBlock;
|
||||
B_OpenPokeblocks.Visible = SAV.HasPokeBlock;
|
||||
B_JPEG.Visible = SAV.HasJPEG;
|
||||
B_OpenEventFlags.Visible = SAV.HasEvents;
|
||||
B_LinkInfo.Visible = SAV.HasLink;
|
||||
B_OpenLinkInfo.Visible = SAV.HasLink;
|
||||
B_CGearSkin.Visible = SAV.Generation == 5;
|
||||
}
|
||||
|
||||
@@ -864,8 +892,7 @@ private void loadSAV(SaveFile sav, string path)
|
||||
byte[] extraBytes = new byte[1];
|
||||
Tip1.RemoveAll(); Tip2.RemoveAll(); Tip3.RemoveAll(); // TSV/PSV
|
||||
|
||||
CB_Country.Visible = CB_SubRegion.Visible = CB_3DSReg.Visible =
|
||||
Label_Country.Visible = Label_SubRegion.Visible = Label_3DSRegion.Visible = SAV.Generation >= 6;
|
||||
FLP_Country.Visible = FLP_SubRegion.Visible = FLP_3DSRegion.Visible = SAV.Generation >= 6;
|
||||
Label_EncryptionConstant.Visible = BTN_RerollEC.Visible = TB_EC.Visible = SAV.Generation >= 6;
|
||||
GB_nOT.Visible = GB_RelearnMoves.Visible = BTN_Medals.Visible = BTN_History.Visible = SAV.Generation >= 6;
|
||||
PB_Legal.Visible = PB_WarnMove1.Visible = PB_WarnMove2.Visible = PB_WarnMove3.Visible = PB_WarnMove4.Visible = SAV.Generation >= 6;
|
||||
@@ -873,77 +900,93 @@ private void loadSAV(SaveFile sav, string path)
|
||||
PB_MarkPentagon.Visible = SAV.Generation == 6;
|
||||
TB_GameSync.Visible = TB_Secure1.Visible = TB_Secure2.Visible = L_GameSync.Visible = L_Secure1.Visible = L_Secure2.Visible = SAV.Exportable && SAV.Generation == 6;
|
||||
|
||||
CB_Form.Visible = Label_Form.Visible = CHK_AsEgg.Visible = GB_EggConditions.Visible =
|
||||
Label_MetDate.Visible = CAL_MetDate.Visible = PB_Mark5.Visible = PB_Mark6.Visible = SAV.Generation >= 4;
|
||||
FLP_NSparkle.Visible = L_NSparkle.Visible = CHK_NSparkle.Visible = SAV.Generation == 5;
|
||||
|
||||
CB_Form.Visible = Label_Form.Visible = CHK_AsEgg.Visible = GB_EggConditions.Visible = PB_Mark5.Visible = PB_Mark6.Visible = SAV.Generation >= 4;
|
||||
|
||||
BTN_Ribbons.Visible = SAV.Generation >= 3;
|
||||
DEV_Ability.Enabled = DEV_Ability.Visible = SAV.Generation > 3 && HaX;
|
||||
TB_AbilityNumber.Visible = SAV.Generation >= 6 && DEV_Ability.Enabled;
|
||||
CB_Ability.Visible = !DEV_Ability.Enabled && SAV.Generation >= 3;
|
||||
FLP_Nature.Visible = SAV.Generation >= 3;
|
||||
FLP_Ability.Visible = SAV.Generation >= 3;
|
||||
FLP_Language.Visible = SAV.Generation >= 3;
|
||||
GB_ExtraBytes.Visible = GB_ExtraBytes.Enabled = SAV.Generation >= 3;
|
||||
GB_Markings.Visible = SAV.Generation >= 3;
|
||||
BTN_Ribbons.Visible = SAV.Generation >= 3;
|
||||
CB_HPType.Enabled = CB_Form.Enabled = SAV.Generation >= 3;
|
||||
BTN_RerollPID.Visible = Label_PID.Visible = TB_PID.Visible = Label_SID.Visible = TB_SID.Visible = SAV.Generation >= 3;
|
||||
|
||||
GB_ExtraBytes.Visible = SAV.Generation > 1;
|
||||
GB_Markings.Visible = SAV.Generation > 2;
|
||||
FLP_FriendshipForm.Visible = SAV.Generation >= 2;
|
||||
FLP_HeldItem.Visible = SAV.Generation >= 2;
|
||||
CHK_IsEgg.Visible = Label_Gender.Visible = SAV.Generation >= 2;
|
||||
FLP_PKRS.Visible = FLP_EggPKRSRight.Visible = SAV.Generation >= 2;
|
||||
Label_OTGender.Visible = SAV.Generation >= 2;
|
||||
|
||||
Label_HeldItem.Visible = CB_HeldItem.Visible = SAV.Generation > 1;
|
||||
Label_Total.Visible = TB_IVTotal.Visible = TB_EVTotal.Visible = L_Potential.Visible =
|
||||
Label_HiddenPowerPrefix.Visible = CB_HPType.Visible = SAV.Generation > 1;
|
||||
Label_CharacteristicPrefix.Visible = L_Characteristic.Visible = SAV.Generation > 1;
|
||||
Label_ContestStats.Visible = Label_Cool.Visible = Label_Tough.Visible = Label_Smart.Visible =
|
||||
Label_Sheen.Visible = Label_Beauty.Visible = Label_Cute.Visible = TB_Cool.Visible = TB_Tough.Visible =
|
||||
TB_Smart.Visible = TB_Sheen.Visible = TB_Beauty.Visible = TB_Cute.Visible = Label_Nature.Visible =
|
||||
CB_Nature.Visible = Label_Language.Visible = CB_Language.Visible = Label_Ability.Visible =
|
||||
Label_Friendship.Visible = Label_HatchCounter.Visible = TB_Friendship.Visible = BTN_RerollPID.Visible =
|
||||
Label_PID.Visible = TB_PID.Visible = Label_SID.Visible = TB_SID.Visible = SAV.Generation >= 3;
|
||||
if (SAV.Generation == 1)
|
||||
Label_IsShiny.Visible = false;
|
||||
|
||||
// HaX override, needs to be after DEV_Ability enabled assignment.
|
||||
TB_AbilityNumber.Visible = SAV.Generation >= 6 && DEV_Ability.Enabled;
|
||||
|
||||
// Met Tab
|
||||
CHK_Fateful.Visible = Label_OriginGame.Visible = Label_Ball.Visible = Label_MetLevel.Visible =
|
||||
CB_MetLocation.Visible = Label_MetLocation.Visible = SAV.Generation > 2 || (SAV.Version == GameVersion.GSC);
|
||||
CB_GameOrigin.Visible = CB_Ball.Visible = TB_MetLevel.Visible = SAV.Generation > 2;
|
||||
FLP_MetDate.Visible = SAV.Generation >= 4;
|
||||
FLP_Fateful.Visible = FLP_Ball.Visible = FLP_OriginGame.Visible = SAV.Generation >= 3;
|
||||
FLP_MetLocation.Visible = FLP_MetLevel.Visible = SAV.Generation >= 2;
|
||||
FLP_TimeOfDay.Visible = SAV.Generation == 2;
|
||||
|
||||
CHK_Infected.Visible = CHK_Cured.Visible = SAV.Generation >= 3;
|
||||
// Stats
|
||||
FLP_StatsTotal.Visible = SAV.Generation >= 3;
|
||||
FLP_Characteristic.Visible = SAV.Generation >= 3;
|
||||
FLP_HPType.Visible = SAV.Generation >= 2;
|
||||
|
||||
PAN_Contest.Visible = SAV.Generation >= 3;
|
||||
|
||||
// Second daycare slot
|
||||
SlotPictureBoxes[43].Visible = SAV.Generation > 1;
|
||||
SlotPictureBoxes[43].Visible = SAV.Generation >= 2;
|
||||
|
||||
CHK_IsEgg.Visible = Label_Gender.Visible = SAV.Generation > 1;
|
||||
|
||||
Label_OTGender.Visible = SAV.Generation > 1;
|
||||
|
||||
if (1 <= sav.Generation && sav.Generation <= 2)
|
||||
if (sav.Generation == 1)
|
||||
{
|
||||
Label_SPD.Visible = TB_SPDEV.Visible = TB_SPDIV.Visible = Stat_SPD.Visible = false;
|
||||
Label_SPA.Text = "Spc";
|
||||
TB_HPIV.ReadOnly = true;
|
||||
FLP_SpD.Visible = false;
|
||||
Label_SPA.Visible = false;
|
||||
Label_SPC.Visible = true;
|
||||
TB_HPIV.Enabled = false;
|
||||
MaskedTextBox[] evControls = { TB_SPAEV, TB_HPEV, TB_ATKEV, TB_DEFEV, TB_SPEEV, TB_SPDEV };
|
||||
foreach (var ctrl in evControls)
|
||||
{
|
||||
ctrl.Mask = "00000";
|
||||
ctrl.Size = new Size(37, 20);
|
||||
ctrl.Size = Stat_HP.Size;
|
||||
}
|
||||
}
|
||||
else if (sav.Generation == 2)
|
||||
{
|
||||
FLP_SpD.Visible = true;
|
||||
Label_SPA.Visible = true;
|
||||
Label_SPC.Visible = false;
|
||||
TB_SPDEV.Enabled = TB_SPDIV.Enabled = false;
|
||||
TB_HPIV.Enabled = false;
|
||||
MaskedTextBox[] evControls = { TB_SPAEV, TB_HPEV, TB_ATKEV, TB_DEFEV, TB_SPEEV, TB_SPDEV };
|
||||
foreach (var ctrl in evControls)
|
||||
{
|
||||
ctrl.Mask = "00000";
|
||||
ctrl.Size = Stat_HP.Size;
|
||||
}
|
||||
Control[] statControls = {Stat_HP, Stat_ATK, Stat_DEF, Stat_SPA, Stat_SPD, Stat_SPE};
|
||||
foreach (Control ctrl in statControls)
|
||||
ctrl.Location = new Point(173, ctrl.Location.Y);
|
||||
Label_Stats.Location = new Point(168, Label_Stats.Location.Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
Label_SPD.Visible = TB_SPDEV.Visible = TB_SPDIV.Visible = Stat_SPD.Visible = true;
|
||||
Label_SPA.Text = "SpA";
|
||||
TB_HPIV.ReadOnly = false;
|
||||
FLP_SpD.Visible = true;
|
||||
Label_SPA.Visible = true;
|
||||
Label_SPC.Visible = false;
|
||||
TB_SPDEV.Enabled = TB_SPDIV.Enabled = true;
|
||||
TB_HPIV.Enabled = true;
|
||||
MaskedTextBox[] evControls = { TB_SPAEV, TB_HPEV, TB_ATKEV, TB_DEFEV, TB_SPEEV, TB_SPDEV };
|
||||
foreach (var ctrl in evControls)
|
||||
{
|
||||
ctrl.Mask = "000";
|
||||
ctrl.Size = new Size(31, 20);
|
||||
ctrl.Size = TB_ExtraByte.Size;
|
||||
}
|
||||
Control[] statControls = { Stat_HP, Stat_ATK, Stat_DEF, Stat_SPA, Stat_SPD, Stat_SPE };
|
||||
foreach (Control ctrl in statControls)
|
||||
ctrl.Location = new Point(167, ctrl.Location.Y);
|
||||
Label_Stats.Location = new Point(162, Label_Stats.Location.Y);
|
||||
}
|
||||
|
||||
// Recenter PKM SubEditors
|
||||
FLP_PKMEditors.Location = new Point((tabMain.TabPages[4].Width - FLP_PKMEditors.Width) / 2, FLP_PKMEditors.Location.Y);
|
||||
FLP_PKMEditors.Location = new Point((Tab_OTMisc.Width - FLP_PKMEditors.Width) / 2, FLP_PKMEditors.Location.Y);
|
||||
|
||||
switch (SAV.Generation)
|
||||
{
|
||||
@@ -952,6 +995,11 @@ private void loadSAV(SaveFile sav, string path)
|
||||
getPKMfromFields = preparePK1;
|
||||
extraBytes = new byte[] {};
|
||||
break;
|
||||
case 2:
|
||||
getFieldsfromPKM = populateFieldsPK2;
|
||||
getPKMfromFields = preparePK2;
|
||||
extraBytes = new byte[] { };
|
||||
break;
|
||||
case 3:
|
||||
getFieldsfromPKM = populateFieldsPK3;
|
||||
getPKMfromFields = preparePK3;
|
||||
@@ -979,9 +1027,10 @@ private void loadSAV(SaveFile sav, string path)
|
||||
break;
|
||||
}
|
||||
bool init = fieldsInitialized;
|
||||
fieldsInitialized = false;
|
||||
fieldsInitialized = fieldsLoaded = false;
|
||||
pkm = (pkm.Format != SAV.Generation || SAV.Generation < 3) ? SAV.BlankPKM : pk;
|
||||
populateFilteredDataSources();
|
||||
populateFields((pkm.Format != SAV.Generation || SAV.Generation == 1) ? SAV.BlankPKM : pk);
|
||||
populateFields(pkm);
|
||||
fieldsInitialized |= init;
|
||||
|
||||
// SAV Specific Limits
|
||||
@@ -989,12 +1038,21 @@ private void loadSAV(SaveFile sav, string path)
|
||||
TB_OTt2.MaxLength = SAV.OTLength;
|
||||
TB_Nickname.MaxLength = SAV.NickLength;
|
||||
|
||||
// Hide Unused Tabs
|
||||
if (SAV.Generation == 1 && tabMain.TabPages.Contains(Tab_Met))
|
||||
tabMain.TabPages.Remove(Tab_Met);
|
||||
else if (SAV.Generation != 1 && !tabMain.TabPages.Contains(Tab_Met))
|
||||
{
|
||||
tabMain.TabPages.Insert(1, Tab_Met);
|
||||
WindowTranslationRequired = true;
|
||||
}
|
||||
|
||||
// Common HaX Interface
|
||||
CHK_HackedStats.Enabled = CHK_HackedStats.Visible = MT_Level.Enabled = MT_Level.Visible = MT_Form.Enabled = MT_Form.Visible = HaX;
|
||||
TB_Level.Visible = !HaX;
|
||||
|
||||
// Load Extra Byte List
|
||||
if (GB_ExtraBytes.Visible)
|
||||
if (GB_ExtraBytes.Enabled)
|
||||
{
|
||||
CB_ExtraBytes.Items.Clear();
|
||||
foreach (byte b in extraBytes)
|
||||
@@ -1002,9 +1060,16 @@ private void loadSAV(SaveFile sav, string path)
|
||||
CB_ExtraBytes.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
// pk2 save files do not have an Origin Game stored. Prompt the met location list to update.
|
||||
if (SAV.Generation == 2)
|
||||
updateOriginGame(null, null);
|
||||
|
||||
// Refresh PK#->PK6 conversion info
|
||||
PKMConverter.updateConfig(SAV.SubRegion, SAV.Country, SAV.ConsoleRegion, SAV.OT, SAV.Gender);
|
||||
|
||||
if (WindowTranslationRequired) // force update -- re-added controls may be untranslated
|
||||
Util.TranslateInterface(this, curlanguage);
|
||||
|
||||
// Indicate audibly the save is loaded
|
||||
SystemSounds.Beep.Play();
|
||||
}
|
||||
@@ -1022,7 +1087,7 @@ private static void refreshWC6DB()
|
||||
for (int i = 0; i < wc6full.Length; i += WC6.SizeFull)
|
||||
{
|
||||
byte[] data = new byte[WC6.SizeFull];
|
||||
Array.Copy(wc6bin, i, data, 0, WC6.SizeFull);
|
||||
Array.Copy(wc6full, i, data, 0, WC6.SizeFull);
|
||||
wc6db.Add(new WC6(data));
|
||||
}
|
||||
|
||||
@@ -1046,7 +1111,7 @@ private void changeMainLanguage(object sender, EventArgs e)
|
||||
InitializeLanguage();
|
||||
Util.TranslateInterface(this, lang_val[CB_MainLanguage.SelectedIndex]); // Translate the UI to language.
|
||||
// Recenter PKM SubEditors
|
||||
FLP_PKMEditors.Location = new Point((tabMain.TabPages[4].Width - FLP_PKMEditors.Width)/2, FLP_PKMEditors.Location.Y);
|
||||
FLP_PKMEditors.Location = new Point((Tab_OTMisc.Width - FLP_PKMEditors.Width)/2, FLP_PKMEditors.Location.Y);
|
||||
populateFields(pk); // put data back in form
|
||||
fieldsInitialized |= alreadyInit;
|
||||
|
||||
@@ -1059,12 +1124,16 @@ private void InitializeStrings()
|
||||
if (CB_MainLanguage.SelectedIndex < 8)
|
||||
curlanguage = lang_val[CB_MainLanguage.SelectedIndex];
|
||||
|
||||
string l = curlanguage;
|
||||
|
||||
// Past Generation strings
|
||||
g3items = Util.getStringList("ItemsG3", "en");
|
||||
metRSEFRLG_00000 = Util.getStringList("rsefrlg_00000", "en");
|
||||
g3items = Util.getStringListFallback("ItemsG3", l, "en");
|
||||
g2items = Util.getStringListFallback("ItemsG2", l, "en");
|
||||
g1items = Util.getStringListFallback("ItemsG1", l, "en");
|
||||
metRSEFRLG_00000 = Util.getStringListFallback("rsefrlg_00000", l, "en");
|
||||
metGSC_00000 = Util.getStringListFallback("gsc_00000", l, "en");
|
||||
|
||||
// Current Generation strings
|
||||
string l = curlanguage;
|
||||
natures = Util.getStringList("natures", l);
|
||||
types = Util.getStringList("types", l);
|
||||
abilitylist = Util.getAbilitiesList(l);
|
||||
@@ -1092,7 +1161,14 @@ private void InitializeStrings()
|
||||
puffs = Util.getStringList("puff", l);
|
||||
}
|
||||
|
||||
// Gen4 Mail names not stored in future games. No clever solution like for HM's, so improvise.
|
||||
for (int i = 137; i <= 148; i++)
|
||||
itemlist[i] = $"Mail #{i-137+1} (G4)";
|
||||
|
||||
// Fix Item Names (Duplicate entries)
|
||||
int len = itemlist[425].Length;
|
||||
itemlist[426] = itemlist[425].Substring(0, len-1) + (char)(itemlist[425][len-1]+1) + " (G4)";
|
||||
itemlist[427] = itemlist[425].Substring(0, len-1) + (char)(itemlist[425][len-1]+2) + " (G4)";
|
||||
itemlist[456] += " (HG/SS)"; // S.S. Ticket
|
||||
itemlist[736] += " (OR/AS)"; // S.S. Ticket
|
||||
itemlist[463] += " (DPPt)"; // Storage Key
|
||||
@@ -1226,9 +1302,9 @@ private void InitializeLanguage()
|
||||
#region Met Locations
|
||||
// Gen 2
|
||||
{
|
||||
var met_list = Util.getCBList(metRSEFRLG_00000, Enumerable.Range(0, 0x5F).ToArray());
|
||||
met_list = Util.getOffsetCBList(met_list, metRSEFRLG_00000, 00000, new[] { 253, 254, 255 });
|
||||
metGen2 = null;
|
||||
var met_list = Util.getCBList(metGSC_00000, Enumerable.Range(0, 0x5F).ToArray());
|
||||
met_list = Util.getOffsetCBList(met_list, metGSC_00000, 00000, new[] { 0x7E, 0x7F });
|
||||
metGen2 = met_list;
|
||||
}
|
||||
// Gen 3
|
||||
{
|
||||
@@ -1284,6 +1360,8 @@ private void populateFilteredDataSources()
|
||||
string[] items = itemlist;
|
||||
if (SAV.Generation == 3)
|
||||
items = g3items;
|
||||
if (SAV.Generation == 2)
|
||||
items = g2items;
|
||||
|
||||
ItemDataSource = Util.getCBList(items, (HaX ? Enumerable.Range(0, SAV.MaxItemID) : SAV.HeldItems.Select(i => (int)i)).ToArray());
|
||||
CB_HeldItem.DataSource = new BindingSource(ItemDataSource.Where(i => i.Value <= SAV.MaxItemID).ToList(), null);
|
||||
@@ -1307,9 +1385,10 @@ private void populateFilteredDataSources()
|
||||
public void populateFields(PKM pk, bool focus = true)
|
||||
{
|
||||
if (pk == null) { Util.Error("Attempted to load a null file."); return; }
|
||||
|
||||
if (pk.Format > SAV.Generation)
|
||||
{ Util.Alert("Can't load future generation files."); return; }
|
||||
|
||||
if ((pk.Format >= 3 && pk.Format > SAV.Generation) // pk3-7, can't go backwards
|
||||
|| (pk.Format <= 2 && SAV.Generation > 2 && SAV.Generation < 7)) // pk1-2, can't go 3-6
|
||||
{ Util.Alert($"Can't load Gen{pk.Format} to Gen{SAV.Generation} games."); return; }
|
||||
|
||||
bool oldInit = fieldsInitialized;
|
||||
fieldsInitialized = fieldsLoaded = false;
|
||||
@@ -1329,7 +1408,8 @@ public void populateFields(PKM pk, bool focus = true)
|
||||
Util.Alert("Converted File.");
|
||||
}
|
||||
|
||||
getFieldsfromPKM();
|
||||
try { getFieldsfromPKM(); }
|
||||
catch { fieldsInitialized = oldInit; throw; }
|
||||
|
||||
CB_EncounterType.Visible = Label_EncounterType.Visible = pkm.Gen4;
|
||||
fieldsInitialized = oldInit;
|
||||
@@ -1353,6 +1433,9 @@ public void populateFields(PKM pk, bool focus = true)
|
||||
}
|
||||
fieldsLoaded = true;
|
||||
|
||||
Label_HatchCounter.Visible = CHK_IsEgg.Checked && SAV.Generation > 1;
|
||||
Label_Friendship.Visible = !CHK_IsEgg.Checked && SAV.Generation > 1;
|
||||
|
||||
// Set the Preview Box
|
||||
dragout.Image = pk.Sprite;
|
||||
updateLegality();
|
||||
@@ -1382,6 +1465,11 @@ private void setForms()
|
||||
|
||||
bool hasForms = SAV.Personal[species].HasFormes || new[] { 201, 664, 665, 414 }.Contains(species);
|
||||
CB_Form.Enabled = CB_Form.Visible = Label_Form.Visible = hasForms;
|
||||
if (SAV.Generation == 2)
|
||||
CB_Form.Enabled = false;
|
||||
|
||||
if (HaX)
|
||||
Label_Form.Visible = true;
|
||||
|
||||
if (!hasForms)
|
||||
return;
|
||||
@@ -1399,7 +1487,7 @@ private void setAbilityList()
|
||||
formnum = CB_Form.SelectedIndex;
|
||||
|
||||
int[] abils = SAV.Personal.getAbilities(species, formnum);
|
||||
if (abils[1] == 0)
|
||||
if (abils[1] == 0 && SAV.Generation != 3)
|
||||
abils[1] = abils[0];
|
||||
string[] abilIdentifier = {" (1)", " (2)", " (H)"};
|
||||
List<string> ability_list = abils.Where(a => a != 0).Select((t, i) => abilitylist[t] + abilIdentifier[i]).ToList();
|
||||
@@ -1423,7 +1511,7 @@ private void setIsShiny(object sender)
|
||||
bool isShiny = pkm.IsShiny;
|
||||
|
||||
// Set the Controls
|
||||
BTN_Shinytize.Visible = BTN_Shinytize.Enabled = !isShiny && SAV.Generation > 2;
|
||||
BTN_Shinytize.Visible = BTN_Shinytize.Enabled = !isShiny && SAV.Generation > 1;
|
||||
Label_IsShiny.Visible = isShiny && SAV.Generation > 1;
|
||||
|
||||
// Refresh Markings (for Shiny Star if applicable)
|
||||
@@ -1539,32 +1627,40 @@ private void clickStatLabel(object sender, MouseEventArgs e)
|
||||
if (!(ModifierKeys == Keys.Control || ModifierKeys == Keys.Alt))
|
||||
return;
|
||||
|
||||
if (sender == Label_SPC)
|
||||
sender = Label_SPA;
|
||||
int index = Array.IndexOf(new[] { Label_HP, Label_ATK, Label_DEF, Label_SPA, Label_SPD, Label_SPE }, sender);
|
||||
|
||||
if (ModifierKeys == Keys.Alt) // EV
|
||||
{
|
||||
var arrayEV = new[] {TB_HPEV, TB_ATKEV, TB_DEFEV, TB_SPAEV, TB_SPDEV, TB_SPEEV};
|
||||
arrayEV[index].Text = (e.Button == MouseButtons.Left
|
||||
? Math.Min(Math.Max(510 - Util.ToInt32(TB_EVTotal.Text) + Util.ToInt32(arrayEV[index].Text), 0), 252)
|
||||
: 0).ToString();
|
||||
var mt = new[] {TB_HPEV, TB_ATKEV, TB_DEFEV, TB_SPAEV, TB_SPDEV, TB_SPEEV}[index];
|
||||
if (e.Button == MouseButtons.Left) // max
|
||||
mt.Text = SAV.Generation >= 3
|
||||
? Math.Min(Math.Max(510 - Util.ToInt32(TB_EVTotal.Text) + Util.ToInt32(mt.Text), 0), 252).ToString()
|
||||
: ushort.MaxValue.ToString();
|
||||
else // min
|
||||
mt.Text = 0.ToString();
|
||||
}
|
||||
else
|
||||
new[] {TB_HPIV, TB_ATKIV, TB_DEFIV, TB_SPAIV, TB_SPDIV, TB_SPEIV}[index].Text =
|
||||
(e.Button == MouseButtons.Left ? 31 : 0).ToString();
|
||||
(e.Button == MouseButtons.Left ? SAV.MaxIV : 0).ToString();
|
||||
}
|
||||
private void clickIV(object sender, EventArgs e)
|
||||
{
|
||||
if (ModifierKeys == Keys.Control)
|
||||
((MaskedTextBox) sender).Text = 31.ToString();
|
||||
((MaskedTextBox) sender).Text = SAV.MaxIV.ToString();
|
||||
else if (ModifierKeys == Keys.Alt)
|
||||
((MaskedTextBox) sender).Text = 0.ToString();
|
||||
}
|
||||
private void clickEV(object sender, EventArgs e)
|
||||
{
|
||||
MaskedTextBox mt = (MaskedTextBox)sender;
|
||||
if (ModifierKeys == Keys.Control) // EV
|
||||
((MaskedTextBox) sender).Text = Math.Min(Math.Max(510 - Util.ToInt32(TB_EVTotal.Text) + Util.ToInt32((sender as MaskedTextBox).Text), 0), 252).ToString();
|
||||
mt.Text = SAV.Generation >= 3
|
||||
? Math.Min(Math.Max(510 - Util.ToInt32(TB_EVTotal.Text) + Util.ToInt32(mt.Text), 0), 252).ToString()
|
||||
: ushort.MaxValue.ToString();
|
||||
else if (ModifierKeys == Keys.Alt)
|
||||
((MaskedTextBox) sender).Text = 0.ToString();
|
||||
mt.Text = 0.ToString();
|
||||
}
|
||||
private void clickOT(object sender, EventArgs e)
|
||||
{
|
||||
@@ -1719,7 +1815,18 @@ private void updateIVs(object sender, EventArgs e)
|
||||
|
||||
if (SAV.Generation < 3)
|
||||
{
|
||||
TB_HPIV.Text = pkm.IV_HP.ToString("00");
|
||||
TB_HPIV.Text = pkm.IV_HP.ToString();
|
||||
TB_SPDIV.Text = TB_SPAIV.Text;
|
||||
if (SAV.Generation == 2)
|
||||
{
|
||||
Label_Gender.Text = gendersymbols[pkm.Gender];
|
||||
Label_Gender.ForeColor = pkm.Gender == 2
|
||||
? Label_Species.ForeColor
|
||||
: (pkm.Gender == 1 ? Color.Red : Color.Blue);
|
||||
CB_Form.SelectedIndex = pkm.AltForm;
|
||||
setIsShiny(null);
|
||||
getQuickFiller(dragout);
|
||||
}
|
||||
}
|
||||
|
||||
CB_HPType.SelectedValue = pkm.HPType;
|
||||
@@ -1756,6 +1863,9 @@ private void updateEVs(object sender, EventArgs e)
|
||||
else if (sender == TB_SPAEV) pkm.EV_SPA = Util.ToInt32(TB_SPAEV.Text);
|
||||
else if (sender == TB_SPDEV) pkm.EV_SPD = Util.ToInt32(TB_SPDEV.Text);
|
||||
|
||||
if (SAV.Generation < 3)
|
||||
TB_SPDEV.Text = TB_SPAEV.Text;
|
||||
|
||||
int evtotal = pkm.EVs.Sum();
|
||||
|
||||
if (evtotal > 510) // Background turns Red
|
||||
@@ -2058,8 +2168,11 @@ private void updateSpecies(object sender, EventArgs e)
|
||||
|
||||
updateLegality();
|
||||
}
|
||||
private IEnumerable<ComboItem> getLocationList(GameVersion Version, int SaveFormat, bool egg)
|
||||
private static List<ComboItem> getLocationList(GameVersion Version, int SaveFormat, bool egg)
|
||||
{
|
||||
if (SaveFormat == 2)
|
||||
return metGen2;
|
||||
|
||||
if (egg)
|
||||
{
|
||||
if (Version < GameVersion.W && SaveFormat >= 5)
|
||||
@@ -2076,33 +2189,33 @@ private IEnumerable<ComboItem> getLocationList(GameVersion Version, int SaveForm
|
||||
case GameVersion.R:
|
||||
case GameVersion.S:
|
||||
if (SaveFormat == 3)
|
||||
return metGen3.OrderByDescending(loc => loc.Value <= 87); // Ferry
|
||||
return metGen3.OrderByDescending(loc => loc.Value <= 87).ToList(); // Ferry
|
||||
break;
|
||||
case GameVersion.E:
|
||||
if (SaveFormat == 3)
|
||||
return metGen3.OrderByDescending(loc => loc.Value <= 87 || (loc.Value >= 196 && loc.Value <= 212)); // Trainer Hill
|
||||
return metGen3.OrderByDescending(loc => loc.Value <= 87 || (loc.Value >= 196 && loc.Value <= 212)).ToList(); // Trainer Hill
|
||||
break;
|
||||
case GameVersion.FR:
|
||||
case GameVersion.LG:
|
||||
if (SaveFormat == 3)
|
||||
return metGen3.OrderByDescending(loc => loc.Value > 87 && loc.Value < 197); // Celadon Dept.
|
||||
return metGen3.OrderByDescending(loc => loc.Value > 87 && loc.Value < 197).ToList(); // Celadon Dept.
|
||||
break;
|
||||
|
||||
case GameVersion.D:
|
||||
case GameVersion.P:
|
||||
if (SaveFormat == 4 || (SaveFormat >= 5 && egg))
|
||||
return metGen4.Take(4).Concat(metGen6.Skip(4).OrderByDescending(loc => loc.Value <= 111)); // Battle Park
|
||||
return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value <= 111)).ToList(); // Battle Park
|
||||
break;
|
||||
|
||||
case GameVersion.Pt:
|
||||
if (SaveFormat == 4 || (SaveFormat >= 5 && egg))
|
||||
return metGen4.Take(4).Concat(metGen6.Skip(4).OrderByDescending(loc => loc.Value <= 125)); // Rock Peak Ruins
|
||||
return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value <= 125)).ToList(); // Rock Peak Ruins
|
||||
break;
|
||||
|
||||
case GameVersion.HG:
|
||||
case GameVersion.SS:
|
||||
if (SaveFormat == 4 || (SaveFormat >= 5 && egg))
|
||||
return metGen4.Take(4).Concat(metGen6.Skip(4).OrderByDescending(loc => loc.Value > 125 && loc.Value < 234)); // Celadon Dept.
|
||||
return metGen4.Take(4).Concat(metGen4.Skip(4).OrderByDescending(loc => loc.Value > 125 && loc.Value < 234)).ToList(); // Celadon Dept.
|
||||
break;
|
||||
|
||||
case GameVersion.B:
|
||||
@@ -2111,27 +2224,27 @@ private IEnumerable<ComboItem> getLocationList(GameVersion Version, int SaveForm
|
||||
|
||||
case GameVersion.B2:
|
||||
case GameVersion.W2:
|
||||
return metGen5.Take(3).Concat(metGen5.Skip(3).OrderByDescending(loc => loc.Value <= 116)); // Abyssal Ruins
|
||||
return metGen5.Take(3).Concat(metGen5.Skip(3).OrderByDescending(loc => loc.Value <= 116)).ToList(); // Abyssal Ruins
|
||||
|
||||
case GameVersion.X:
|
||||
case GameVersion.Y:
|
||||
return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value <= 168)); // Unknown Dungeon
|
||||
return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value <= 168)).ToList(); // Unknown Dungeon
|
||||
|
||||
case GameVersion.OR:
|
||||
case GameVersion.AS:
|
||||
return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value > 168 && loc.Value <= 354)); // Secret Base
|
||||
return metGen6.Take(3).Concat(metGen6.Skip(3).OrderByDescending(loc => loc.Value > 168 && loc.Value <= 354)).ToList(); // Secret Base
|
||||
}
|
||||
|
||||
// Currently on a future game, return corresponding list for generation
|
||||
if (Version <= GameVersion.CXD && SaveFormat == 4)
|
||||
return metGen4.Where(loc => loc.Value == 0x37) // Pal Park to front
|
||||
.Concat(metGen4.Take(4))
|
||||
.Concat(metGen4.Skip(4).Where(loc => loc.Value != 0x37));
|
||||
.Concat(metGen4.Skip(4).Where(loc => loc.Value != 0x37)).ToList();
|
||||
|
||||
if (Version < GameVersion.X && SaveFormat >= 5) // PokéTransfer to front
|
||||
return metGen5.Where(loc => loc.Value == 30001)
|
||||
.Concat(metGen5.Take(3))
|
||||
.Concat(metGen5.Skip(3).Where(loc => loc.Value != 30001));
|
||||
.Concat(metGen5.Skip(3).Where(loc => loc.Value != 30001)).ToList();
|
||||
|
||||
return metGen6;
|
||||
}
|
||||
@@ -2204,7 +2317,7 @@ private void updateNatureModification(object sender, EventArgs e)
|
||||
Label[] labarray = { Label_ATK, Label_DEF, Label_SPE, Label_SPA, Label_SPD };
|
||||
// Reset Label Colors
|
||||
foreach (Label label in labarray)
|
||||
label.ForeColor = defaultControlText;
|
||||
label.ResetForeColor();
|
||||
|
||||
// Set Colored StatLabels only if Nature isn't Neutral
|
||||
NatureTip.SetToolTip(CB_Nature,
|
||||
@@ -2234,9 +2347,14 @@ private void updateNickname(object sender, EventArgs e)
|
||||
|
||||
if (SAV.Generation < 5) // All caps GenIV and previous
|
||||
nick = nick.ToUpper();
|
||||
if (SAV.Generation < 3)
|
||||
nick = nick.Replace(" ", "");
|
||||
TB_Nickname.Text = nick;
|
||||
if (SAV.Generation == 1)
|
||||
((PK1)pkm).setNotNicknamed();
|
||||
((PK1)pkm).setNotNicknamed();
|
||||
if (SAV.Generation == 2)
|
||||
((PK2)pkm).setNotNicknamed();
|
||||
|
||||
}
|
||||
}
|
||||
private void updateNicknameClick(object sender, MouseEventArgs e)
|
||||
@@ -2268,6 +2386,8 @@ private void updateIsEgg(object sender, EventArgs e)
|
||||
{
|
||||
CHK_Nicknamed.Checked = false;
|
||||
TB_Friendship.Text = "1";
|
||||
if (SAV.Generation == 2)
|
||||
pkm.IsEgg = true;
|
||||
|
||||
// If we are an egg, it won't have a met location.
|
||||
CHK_AsEgg.Checked = true;
|
||||
@@ -2281,6 +2401,9 @@ private void updateIsEgg(object sender, EventArgs e)
|
||||
if (!CHK_Nicknamed.Checked)
|
||||
updateNickname(null, null);
|
||||
|
||||
if (SAV.Generation == 2)
|
||||
pkm.IsEgg = false;
|
||||
|
||||
TB_Friendship.Text = SAV.Personal[Util.getIndex(CB_Species)].BaseFriendship.ToString();
|
||||
|
||||
if (CB_EggLocation.SelectedIndex == 0)
|
||||
@@ -2292,7 +2415,7 @@ private void updateIsEgg(object sender, EventArgs e)
|
||||
}
|
||||
// Display hatch counter if it is an egg, Display Friendship if it is not.
|
||||
Label_HatchCounter.Visible = CHK_IsEgg.Checked && SAV.Generation > 1;
|
||||
Label_Friendship.Visible = !CHK_IsEgg.Checked && SAV.Generation > 2;
|
||||
Label_Friendship.Visible = !CHK_IsEgg.Checked && SAV.Generation > 1;
|
||||
|
||||
|
||||
// Update image to (not) show egg.
|
||||
@@ -2321,7 +2444,16 @@ private void updateShinyPID(object sender, EventArgs e)
|
||||
pkm.AltForm = CB_Form.SelectedIndex;
|
||||
pkm.Version = Util.getIndex(CB_GameOrigin);
|
||||
|
||||
pkm.setShinyPID();
|
||||
if (pkm.Format > 2)
|
||||
pkm.setShinyPID();
|
||||
else
|
||||
{
|
||||
TB_ATKIV.Text = "15";
|
||||
TB_DEFIV.Text = "10";
|
||||
TB_SPEIV.Text = "10";
|
||||
TB_SPAIV.Text = "10";
|
||||
updateIVs(null, null);
|
||||
}
|
||||
TB_PID.Text = pkm.PID.ToString("X8");
|
||||
|
||||
if (pkm.GenNumber < 6 && TB_EC.Visible)
|
||||
@@ -2378,9 +2510,12 @@ private void validateComboBox(object sender)
|
||||
cb.SelectionLength = 0;
|
||||
if (cb.Text == "")
|
||||
{ cb.SelectedIndex = 0; return; }
|
||||
cb.BackColor = cb.SelectedValue == null ? Color.DarkSalmon : defaultControlWhite;
|
||||
if (cb.SelectedValue == null)
|
||||
cb.BackColor = Color.DarkSalmon;
|
||||
else
|
||||
cb.ResetBackColor();
|
||||
}
|
||||
private void validateComboBox(object sender, EventArgs e)
|
||||
private void validateComboBox(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
if (!(sender is ComboBox))
|
||||
return;
|
||||
@@ -2394,7 +2529,7 @@ private void validateComboBox2(object sender, EventArgs e)
|
||||
{
|
||||
if (!fieldsInitialized)
|
||||
return;
|
||||
validateComboBox(sender, e);
|
||||
validateComboBox(sender, null);
|
||||
if (fieldsLoaded)
|
||||
{
|
||||
if (sender == CB_Ability && SAV.Generation >= 6)
|
||||
@@ -2490,7 +2625,7 @@ private void updateStats()
|
||||
Label[] labarray = { Label_ATK, Label_DEF, Label_SPE, Label_SPA, Label_SPD };
|
||||
// Reset Label Colors
|
||||
foreach (Label label in labarray)
|
||||
label.ForeColor = defaultControlText;
|
||||
label.ResetForeColor();
|
||||
|
||||
// Set Colored StatLabels only if Nature isn't Neutral
|
||||
if (incr == decr) return;
|
||||
@@ -2548,38 +2683,30 @@ public bool verifiedPKM()
|
||||
if (ModifierKeys == (Keys.Control | Keys.Shift | Keys.Alt))
|
||||
return true; // Override
|
||||
// Make sure the PKX Fields are filled out properly (color check)
|
||||
#region ComboBoxes to verify they are set.
|
||||
ComboBox[] cba = {
|
||||
CB_Species, CB_Nature, CB_HeldItem, CB_Ability, // Main Tab
|
||||
CB_MetLocation, CB_EggLocation, CB_Ball, // Met Tab
|
||||
CB_Move1, CB_Move2, CB_Move3, CB_Move4, // Moves
|
||||
CB_RelearnMove1, CB_RelearnMove2, CB_RelearnMove3, CB_RelearnMove4 // Moves
|
||||
};
|
||||
for (int i = 0; i < cba.Length; i++)
|
||||
{
|
||||
int back = cba[i].BackColor.ToArgb();
|
||||
if (!cba[i].Visible || back == SystemColors.Control.ToArgb() || back == 0 ||
|
||||
!(back != -1 & back != defaultControlWhite.ToArgb())) continue;
|
||||
if (i < 6) // Main Tab
|
||||
tabMain.SelectedIndex = 0;
|
||||
else if (i < 9) // Met Tab
|
||||
tabMain.SelectedIndex = 1;
|
||||
else // Moves
|
||||
tabMain.SelectedIndex = 3;
|
||||
goto invalid;
|
||||
}
|
||||
#endregion
|
||||
// Further logic checking
|
||||
if (SAV.Generation >= 3 && Convert.ToUInt32(TB_EVTotal.Text) > 510 && !CHK_HackedStats.Checked)
|
||||
{ tabMain.SelectedIndex = 2; goto invalid; }
|
||||
// If no errors detected...
|
||||
if (Util.getIndex(CB_Species) != 0) return true;
|
||||
// Else
|
||||
tabMain.SelectedIndex = 0;
|
||||
|
||||
// else...
|
||||
invalid:
|
||||
{ SystemSounds.Exclamation.Play(); return false; }
|
||||
ComboBox cb = cba.FirstOrDefault(c => c.BackColor == Color.DarkSalmon);
|
||||
if (cb != null)
|
||||
{
|
||||
Control c = cb.Parent;
|
||||
while (!(c is TabPage))
|
||||
c = c.Parent;
|
||||
tabMain.SelectedTab = c as TabPage;
|
||||
}
|
||||
else if (SAV.Generation >= 3 && Convert.ToUInt32(TB_EVTotal.Text) > 510 && !CHK_HackedStats.Checked)
|
||||
tabMain.SelectedTab = Tab_Stats;
|
||||
else if (Util.getIndex(CB_Species) == 0)
|
||||
tabMain.SelectedTab = Tab_Main;
|
||||
else
|
||||
return true;
|
||||
|
||||
SystemSounds.Exclamation.Play();
|
||||
return false;
|
||||
}
|
||||
public static string[] verifyPKMtoSAV(PKM pk)
|
||||
{
|
||||
@@ -2773,7 +2900,7 @@ private void clickBoxSort(object sender, EventArgs e)
|
||||
return;
|
||||
|
||||
SAV.resetBoxes();
|
||||
CB_BoxSelect.SelectedIndex = 0;
|
||||
setPKXBoxes();
|
||||
Util.Alert("Boxes cleared!");
|
||||
}
|
||||
else if (ModifierKeys == Keys.Alt)
|
||||
@@ -2791,7 +2918,7 @@ private void clickBoxSort(object sender, EventArgs e)
|
||||
return;
|
||||
|
||||
SAV.sortBoxes();
|
||||
CB_BoxSelect.SelectedIndex = 0;
|
||||
setPKXBoxes();
|
||||
Util.Alert("Boxes sorted!");
|
||||
}
|
||||
else if (ModifierKeys == Keys.Control)
|
||||
@@ -2922,7 +3049,7 @@ private void clickDelete(object sender, EventArgs e)
|
||||
{ SAV.setStoredSlot(SAV.BlankPKM, getPKXOffset(slot)); }
|
||||
else return;
|
||||
|
||||
SlotPictureBoxes[slot].Image = null;
|
||||
getQuickFiller(SlotPictureBoxes[slot], SAV.BlankPKM);
|
||||
getSlotColor(slot, Properties.Resources.slotDel);
|
||||
}
|
||||
private void clickClone(object sender, EventArgs e)
|
||||
@@ -2959,7 +3086,7 @@ private void clickLegality(object sender, EventArgs e)
|
||||
{ SystemSounds.Asterisk.Play(); return; }
|
||||
if (typeof (PK6) != pk.GetType())
|
||||
{
|
||||
Util.Alert($"Checking legality of {pk.GetType()} files is not supported.");
|
||||
Util.Alert($"Checking legality of {pk.GetType().Name} files is not supported.");
|
||||
return;
|
||||
}
|
||||
showLegality(pk as PK6, slot < 0, ModifierKeys == Keys.Control);
|
||||
@@ -3056,6 +3183,8 @@ private void updateIsNicknamed(object sender, EventArgs e)
|
||||
|
||||
if (SAV.Generation < 5) // All caps GenIV and previous
|
||||
nick = nick.ToUpper();
|
||||
if (SAV.Generation < 3)
|
||||
nick = nick.Replace(" ", "");
|
||||
if (TB_Nickname.Text != nick)
|
||||
{
|
||||
CHK_Nicknamed.Checked = true;
|
||||
@@ -3307,7 +3436,7 @@ private void dumpBoxesToDB(string path, bool individualBoxFolders)
|
||||
Directory.CreateDirectory(Path.Combine(path, boxfolder));
|
||||
}
|
||||
if (!File.Exists(Path.Combine(Path.Combine(path, boxfolder), fileName)))
|
||||
File.WriteAllBytes(Path.Combine(Path.Combine(path, boxfolder), fileName), pk.Data.Take(SAV.SIZE_STORED).ToArray());
|
||||
File.WriteAllBytes(Path.Combine(Path.Combine(path, boxfolder), fileName), pk.DecryptedBoxData);
|
||||
}
|
||||
}
|
||||
private void loadBoxesFromDB(string path)
|
||||
@@ -3462,7 +3591,7 @@ private void B_OpenPokedex_Click(object sender, EventArgs e)
|
||||
new SAV_PokedexORAS().ShowDialog();
|
||||
else if (SAV.XY)
|
||||
new SAV_PokedexXY().ShowDialog();
|
||||
else if (SAV.RBY)
|
||||
else if (SAV.RBY || SAV.GSC)
|
||||
new SAV_SimplePokedex().ShowDialog();
|
||||
}
|
||||
private void B_OUTPasserby_Click(object sender, EventArgs e)
|
||||
@@ -3629,7 +3758,7 @@ private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
||||
getQuickFiller(pb, SAV.getStoredSlot(DragInfo.slotSourceOffset));
|
||||
pb.BackgroundImage = null;
|
||||
|
||||
if (DragInfo.slotDestinationBoxNumber == DragInfo.slotSourceBoxNumber)
|
||||
if (DragInfo.slotDestinationBoxNumber == DragInfo.slotSourceBoxNumber && DragInfo.slotDestinationSlotNumber > -1)
|
||||
SlotPictureBoxes[DragInfo.slotDestinationSlotNumber].Image = img;
|
||||
|
||||
if (result == DragDropEffects.Copy) // viewed in tabs, apply 'view' highlight
|
||||
|
||||
@@ -77,7 +77,10 @@ private PKM preparePK1()
|
||||
pk1.EV_SPE = Util.ToInt32(TB_SPEEV.Text);
|
||||
pk1.EV_SPC = Util.ToInt32(TB_SPAEV.Text);
|
||||
|
||||
pk1.Nickname = TB_Nickname.Text;
|
||||
if (CHK_Nicknamed.Checked)
|
||||
pk1.Nickname = TB_Nickname.Text;
|
||||
else
|
||||
pk1.setNotNicknamed();
|
||||
pk1.Move1 = Util.getIndex(CB_Move1);
|
||||
pk1.Move2 = Util.getIndex(CB_Move2);
|
||||
pk1.Move3 = Util.getIndex(CB_Move3);
|
||||
|
||||
146
PKHeX/MainWindow/MainPK2.cs
Normal file
@@ -0,0 +1,146 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public partial class Main
|
||||
{
|
||||
private void populateFieldsPK2()
|
||||
{
|
||||
PK2 pk2 = pkm as PK2;
|
||||
if (pk2 == null)
|
||||
return;
|
||||
|
||||
// Do first
|
||||
pk2.Stat_Level = PKX.getLevel(pk2.Species, pk2.EXP);
|
||||
if (pk2.Stat_Level == 100)
|
||||
pk2.EXP = PKX.getEXP(pk2.Stat_Level, pk2.Species);
|
||||
|
||||
CB_Species.SelectedValue = pk2.Species;
|
||||
TB_Level.Text = pk2.Stat_Level.ToString();
|
||||
TB_EXP.Text = pk2.EXP.ToString();
|
||||
CB_HeldItem.SelectedValue = pk2.HeldItem;
|
||||
CB_Form.SelectedIndex = pk2.AltForm;
|
||||
CHK_IsEgg.Checked = pk2.IsEgg;
|
||||
TB_Friendship.Text = pk2.CurrentFriendship.ToString();
|
||||
|
||||
TB_MetLevel.Text = pk2.Met_Level.ToString();
|
||||
CB_MetLocation.SelectedValue = pk2.Met_Location;
|
||||
CB_MetTimeOfDay.SelectedIndex = pk2.Met_TimeOfDay;
|
||||
|
||||
// Load rest
|
||||
TB_TID.Text = pk2.TID.ToString("00000");
|
||||
CHK_Nicknamed.Checked = pk2.IsNicknamed;
|
||||
TB_Nickname.Text = pk2.Nickname;
|
||||
TB_OT.Text = pk2.OT_Name;
|
||||
GB_OT.BackgroundImage = null;
|
||||
Label_OTGender.Text = gendersymbols[pk2.OT_Gender];
|
||||
Label_OTGender.ForeColor = pk2.OT_Gender == 1 ? Color.Red : Color.Blue;
|
||||
// Reset Label and ComboBox visibility, as well as non-data checked status.
|
||||
Label_PKRS.Visible = false;
|
||||
Label_PKRSdays.Visible = false;
|
||||
|
||||
TB_HPIV.Text = pk2.IV_HP.ToString();
|
||||
TB_ATKIV.Text = pk2.IV_ATK.ToString();
|
||||
TB_DEFIV.Text = pk2.IV_DEF.ToString();
|
||||
TB_SPEIV.Text = pk2.IV_SPE.ToString();
|
||||
TB_SPAIV.Text = pk2.IV_SPA.ToString();
|
||||
|
||||
TB_HPEV.Text = pk2.EV_HP.ToString();
|
||||
TB_ATKEV.Text = pk2.EV_ATK.ToString();
|
||||
TB_DEFEV.Text = pk2.EV_DEF.ToString();
|
||||
TB_SPEEV.Text = pk2.EV_SPE.ToString();
|
||||
TB_SPAEV.Text = pk2.EV_SPA.ToString();
|
||||
|
||||
CB_Move1.SelectedValue = pk2.Move1;
|
||||
CB_Move2.SelectedValue = pk2.Move2;
|
||||
CB_Move3.SelectedValue = pk2.Move3;
|
||||
CB_Move4.SelectedValue = pk2.Move4;
|
||||
CB_PPu1.SelectedIndex = pk2.Move1_PPUps;
|
||||
CB_PPu2.SelectedIndex = pk2.Move2_PPUps;
|
||||
CB_PPu3.SelectedIndex = pk2.Move3_PPUps;
|
||||
CB_PPu4.SelectedIndex = pk2.Move4_PPUps;
|
||||
TB_PP1.Text = pk2.Move1_PP.ToString();
|
||||
TB_PP2.Text = pk2.Move2_PP.ToString();
|
||||
TB_PP3.Text = pk2.Move3_PP.ToString();
|
||||
TB_PP4.Text = pk2.Move4_PP.ToString();
|
||||
|
||||
CB_Language.SelectedIndex = pk2.Japanese ? 0 : 1;
|
||||
|
||||
updateStats();
|
||||
setIsShiny(null);
|
||||
|
||||
Label_Gender.Text = gendersymbols[pk2.Gender];
|
||||
Label_Gender.ForeColor = pk2.Gender == 2 ? Label_Species.ForeColor : (pk2.Gender == 1 ? Color.Red : Color.Blue);
|
||||
TB_EXP.Text = pk2.EXP.ToString();
|
||||
}
|
||||
private PKM preparePK2()
|
||||
{
|
||||
PK2 pk2 = pkm as PK2;
|
||||
if (pk2 == null)
|
||||
return null;
|
||||
|
||||
pk2.Species = Util.getIndex(CB_Species);
|
||||
pk2.TID = Util.ToInt32(TB_TID.Text);
|
||||
pk2.EXP = Util.ToUInt32(TB_EXP.Text);
|
||||
pk2.HeldItem = Util.getIndex(CB_HeldItem);
|
||||
pk2.IsEgg = CHK_IsEgg.Checked;
|
||||
pk2.CurrentFriendship = Util.ToInt32(TB_Friendship.Text);
|
||||
pk2.Met_Level = Util.ToInt32(TB_MetLevel.Text);
|
||||
pk2.Met_Location = Util.getIndex(CB_MetLocation);
|
||||
pk2.Met_TimeOfDay = CB_MetTimeOfDay.SelectedIndex;
|
||||
|
||||
pk2.EV_HP = Util.ToInt32(TB_HPEV.Text);
|
||||
pk2.EV_ATK = Util.ToInt32(TB_ATKEV.Text);
|
||||
pk2.EV_DEF = Util.ToInt32(TB_DEFEV.Text);
|
||||
pk2.EV_SPE = Util.ToInt32(TB_SPEEV.Text);
|
||||
pk2.EV_SPC = Util.ToInt32(TB_SPAEV.Text);
|
||||
|
||||
if (CHK_Nicknamed.Checked)
|
||||
pk2.Nickname = TB_Nickname.Text;
|
||||
else
|
||||
pk2.setNotNicknamed();
|
||||
pk2.Move1 = Util.getIndex(CB_Move1);
|
||||
pk2.Move2 = Util.getIndex(CB_Move2);
|
||||
pk2.Move3 = Util.getIndex(CB_Move3);
|
||||
pk2.Move4 = Util.getIndex(CB_Move4);
|
||||
pk2.Move1_PP = Util.getIndex(CB_Move1) > 0 ? Util.ToInt32(TB_PP1.Text) : 0;
|
||||
pk2.Move2_PP = Util.getIndex(CB_Move2) > 0 ? Util.ToInt32(TB_PP2.Text) : 0;
|
||||
pk2.Move3_PP = Util.getIndex(CB_Move3) > 0 ? Util.ToInt32(TB_PP3.Text) : 0;
|
||||
pk2.Move4_PP = Util.getIndex(CB_Move4) > 0 ? Util.ToInt32(TB_PP4.Text) : 0;
|
||||
pk2.Move1_PPUps = Util.getIndex(CB_Move1) > 0 ? CB_PPu1.SelectedIndex : 0;
|
||||
pk2.Move2_PPUps = Util.getIndex(CB_Move2) > 0 ? CB_PPu2.SelectedIndex : 0;
|
||||
pk2.Move3_PPUps = Util.getIndex(CB_Move3) > 0 ? CB_PPu3.SelectedIndex : 0;
|
||||
pk2.Move4_PPUps = Util.getIndex(CB_Move4) > 0 ? CB_PPu4.SelectedIndex : 0;
|
||||
|
||||
pk2.IV_HP = Util.ToInt32(TB_HPIV.Text);
|
||||
pk2.IV_ATK = Util.ToInt32(TB_ATKIV.Text);
|
||||
pk2.IV_DEF = Util.ToInt32(TB_DEFIV.Text);
|
||||
pk2.IV_SPE = Util.ToInt32(TB_SPEIV.Text);
|
||||
pk2.IV_SPA = Util.ToInt32(TB_SPAIV.Text);
|
||||
|
||||
pk2.OT_Name = TB_OT.Text;
|
||||
|
||||
// Toss in Party Stats
|
||||
Array.Resize(ref pk2.Data, pk2.SIZE_PARTY);
|
||||
pk2.Stat_Level = Util.ToInt32(TB_Level.Text);
|
||||
pk2.Stat_HPCurrent = Util.ToInt32(Stat_HP.Text);
|
||||
pk2.Stat_HPMax = Util.ToInt32(Stat_HP.Text);
|
||||
pk2.Stat_ATK = Util.ToInt32(Stat_ATK.Text);
|
||||
pk2.Stat_DEF = Util.ToInt32(Stat_DEF.Text);
|
||||
pk2.Stat_SPE = Util.ToInt32(Stat_SPE.Text);
|
||||
pk2.Stat_SPA = Util.ToInt32(Stat_SPA.Text);
|
||||
pk2.Stat_SPD = Util.ToInt32(Stat_SPD.Text);
|
||||
|
||||
if (HaX)
|
||||
{
|
||||
pk2.Stat_Level = (byte)Math.Min(Convert.ToInt32(MT_Level.Text), byte.MaxValue);
|
||||
}
|
||||
|
||||
// Fix Moves if a slot is empty
|
||||
pk2.FixMoves();
|
||||
|
||||
return pk2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -137,8 +137,6 @@ private void populateFieldsPK4()
|
||||
|
||||
if (abil < 0)
|
||||
CB_Ability.SelectedIndex = 0;
|
||||
else if (abil == 2)
|
||||
CB_Ability.SelectedIndex = 2;
|
||||
else if (abils[0] == abils[1] || abils[1] == 0)
|
||||
CB_Ability.SelectedIndex = pk4.PIDAbility;
|
||||
else
|
||||
|
||||
@@ -136,6 +136,7 @@ private void populateFieldsPK5()
|
||||
TB_EXP.Text = pk5.EXP.ToString();
|
||||
Label_Gender.Text = gendersymbols[pk5.Gender];
|
||||
Label_Gender.ForeColor = pk5.Gender == 2 ? Label_Species.ForeColor : (pk5.Gender == 1 ? Color.Red : Color.Blue);
|
||||
CHK_NSparkle.Checked = pk5.NPokémon;
|
||||
|
||||
if (HaX)
|
||||
DEV_Ability.SelectedValue = pk5.Ability;
|
||||
@@ -240,6 +241,8 @@ private PKM preparePK5()
|
||||
pk5.Version = Util.getIndex(CB_GameOrigin);
|
||||
pk5.Language = Util.getIndex(CB_Language);
|
||||
|
||||
pk5.NPokémon = CHK_NSparkle.Checked;
|
||||
|
||||
// Toss in Party Stats
|
||||
Array.Resize(ref pk5.Data, pk5.SIZE_PARTY);
|
||||
pk5.Stat_Level = Util.ToInt32(TB_Level.Text);
|
||||
|
||||
BIN
PKHeX/Misc/personal_gs
Normal file
@@ -42,8 +42,10 @@ internal static MysteryGift getMysteryGift(byte[] data)
|
||||
}
|
||||
|
||||
public abstract string Extension { get; }
|
||||
public string FileName => getCardHeader() + "." + Extension;
|
||||
public virtual byte[] Data { get; set; }
|
||||
public abstract PKM convertToPKM(SaveFile SAV);
|
||||
public abstract int Format { get; }
|
||||
|
||||
public MysteryGift Clone()
|
||||
{
|
||||
@@ -64,6 +66,18 @@ public MysteryGift Clone()
|
||||
public virtual int Quantity { get { return 1; } set { } }
|
||||
public bool Empty => Data.SequenceEqual(new byte[Data.Length]);
|
||||
|
||||
public string getCardHeader() => (CardID > 0 ? $"Card #: {CardID.ToString("0000")}" : "N/A") + $" - {CardTitle.Replace('\u3000',' ').Trim()}" + Environment.NewLine;
|
||||
public string getCardHeader() => (CardID > 0 ? $"Card #: {CardID.ToString("0000")}" : "N/A") + $" - {CardTitle.Replace('\u3000',' ').Trim()}";
|
||||
|
||||
// Search Properties
|
||||
public virtual int Species { get { return -1; } set { } }
|
||||
public virtual int[] Moves => new int[0];
|
||||
public virtual bool IsShiny => false;
|
||||
public virtual bool IsEgg { get { return false; } set { } }
|
||||
public virtual int HeldItem { get { return -1; } set { } }
|
||||
public bool Gen7 => Format == 7;
|
||||
public bool Gen6 => Format == 6;
|
||||
public bool Gen5 => Format == 5;
|
||||
public bool Gen4 => Format == 4;
|
||||
public bool Gen3 => Format == 3;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,8 @@ namespace PKHeX
|
||||
public sealed class PGF : MysteryGift
|
||||
{
|
||||
internal const int Size = 0xCC;
|
||||
public override string Extension => ".pgf";
|
||||
public override string Extension => "pgf";
|
||||
public override int Format => 5;
|
||||
|
||||
public PGF(byte[] data = null)
|
||||
{
|
||||
@@ -41,12 +42,13 @@ public PGF(byte[] data = null)
|
||||
public bool RIB1_7 { get { return (RIB1 & (1 << 7)) == 1 << 7; } set { RIB1 = (byte)(RIB1 & ~(1 << 7) | (value ? 1 << 7 : 0)); } } // Empty
|
||||
|
||||
public int Pokéball { get { return Data[0x0E]; } set { Data[0x0E] = (byte)value; } }
|
||||
public int HeldItem { get { return BitConverter.ToUInt16(Data, 0x10); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x10); } }
|
||||
public override int HeldItem { get { return BitConverter.ToUInt16(Data, 0x10); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x10); } }
|
||||
public int Move1 { get { return BitConverter.ToUInt16(Data, 0x12); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x12); } }
|
||||
public int Move2 { get { return BitConverter.ToUInt16(Data, 0x14); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x14); } }
|
||||
public int Move3 { get { return BitConverter.ToUInt16(Data, 0x16); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x16); } }
|
||||
public int Move4 { get { return BitConverter.ToUInt16(Data, 0x18); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x18); } }
|
||||
public int Species { get { return BitConverter.ToUInt16(Data, 0x1A); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x1A); } }
|
||||
public override int Species { get { return BitConverter.ToUInt16(Data, 0x1A); }
|
||||
}
|
||||
public int Form { get { return Data[0x1C]; } set { Data[0x1C] = (byte)value; } }
|
||||
public int Language { get { return Data[0x1D]; } set { Data[0x1D] = (byte)value; } }
|
||||
public string Nickname
|
||||
@@ -79,7 +81,7 @@ public string Nickname
|
||||
set { Encoding.Unicode.GetBytes(value.PadRight(0x08, (char)0xFFFF)).CopyTo(Data, 0x4A); } }
|
||||
public int OTGender { get { return Data[0x5A]; } set { Data[0x5A] = (byte)value; } }
|
||||
public int Level { get { return Data[0x5B]; } set { Data[0x5C] = (byte)value; } }
|
||||
public bool IsEgg { get { return Data[0x5C] == 1; } set { Data[0x5C] = (byte)(value ? 1 : 0); } }
|
||||
public override bool IsEgg { get { return Data[0x5C] == 1; } set { Data[0x5C] = (byte)(value ? 1 : 0); } }
|
||||
// Unused 0x5D 0x5E 0x5F
|
||||
public override string CardTitle
|
||||
{
|
||||
@@ -142,16 +144,9 @@ public override int CardID
|
||||
public int[] IVs => new[] { IV_HP, IV_ATK, IV_DEF, IV_SPE, IV_SPA, IV_SPD };
|
||||
public bool IsNicknamed => Nickname.Length > 0;
|
||||
|
||||
public int[] Moves
|
||||
public override int[] Moves
|
||||
{
|
||||
get { return new[] { Move1, Move2, Move3, Move4 }; }
|
||||
set
|
||||
{
|
||||
if (value.Length > 0) Move1 = value[0];
|
||||
if (value.Length > 1) Move2 = value[1];
|
||||
if (value.Length > 2) Move3 = value[2];
|
||||
if (value.Length > 3) Move4 = value[3];
|
||||
}
|
||||
}
|
||||
public override bool IsPokémon { get { return CardType == 1; } set { if (value) CardType = 1; } }
|
||||
public override bool IsItem { get { return CardType == 2; } set { if (value) CardType = 2; } }
|
||||
|
||||
@@ -11,7 +11,8 @@ namespace PKHeX
|
||||
public sealed class PCD : MysteryGift
|
||||
{
|
||||
internal const int Size = 0x358; // 856
|
||||
public override string Extension => ".pcd";
|
||||
public override string Extension => "pcd";
|
||||
public override int Format => 4;
|
||||
|
||||
public PCD(byte[] data = null)
|
||||
{
|
||||
@@ -50,6 +51,12 @@ public override string CardTitle
|
||||
}
|
||||
}
|
||||
|
||||
public override int Species => Gift.PK.Species;
|
||||
public override int[] Moves => Gift.PK.Moves;
|
||||
public override bool IsShiny => Gift.PK.IsShiny;
|
||||
public override bool IsEgg => Gift.PK.IsEgg;
|
||||
public override int HeldItem => Gift.PK.HeldItem;
|
||||
|
||||
public override PKM convertToPKM(SaveFile SAV)
|
||||
{
|
||||
return Gift.convertToPKM(SAV);
|
||||
@@ -58,7 +65,8 @@ public override PKM convertToPKM(SaveFile SAV)
|
||||
public class PGT : MysteryGift
|
||||
{
|
||||
internal const int Size = 0x104; // 260
|
||||
public override string Extension => ".pgt";
|
||||
public override string Extension => "pgt";
|
||||
public override int Format => 4;
|
||||
|
||||
private enum GiftType
|
||||
{
|
||||
@@ -103,7 +111,7 @@ private void refreshData(byte[] data)
|
||||
public byte Slot { get { return Data[2]; } set { Data[2] = value; } }
|
||||
public byte Detail { get { return Data[3]; } set { Data[3] = value; } }
|
||||
public override int Item { get { return BitConverter.ToUInt16(Data, 0x4); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x4); } }
|
||||
private PK4 PK;
|
||||
public PK4 PK;
|
||||
private byte[] Unknown;
|
||||
private byte[] RAW;
|
||||
|
||||
@@ -118,11 +126,16 @@ public override byte[] Data
|
||||
|
||||
private GiftType PGTGiftType { get { return (GiftType)Data[0]; } set {Data[0] = (byte)value; } }
|
||||
public bool IsHatched => PGTGiftType == GiftType.Pokémon;
|
||||
public bool IsEgg => PGTGiftType == GiftType.PokémonEgg;
|
||||
public override bool IsEgg => PGTGiftType == GiftType.PokémonEgg;
|
||||
public bool IsManaphyEgg => PGTGiftType == GiftType.ManaphyEgg;
|
||||
public override bool IsItem { get { return PGTGiftType == GiftType.Item; } set { if (value) CardType = (int)GiftType.Item; } }
|
||||
public override bool IsPokémon { get { return PGTGiftType == GiftType.Pokémon || PGTGiftType == GiftType.PokémonEgg || PGTGiftType == GiftType.ManaphyEgg; } set { } }
|
||||
|
||||
public override int Species => PK.Species;
|
||||
public override int[] Moves => PK.Moves;
|
||||
public override bool IsShiny => PK.IsShiny;
|
||||
public override int HeldItem => PK.HeldItem;
|
||||
|
||||
public override PKM convertToPKM(SaveFile SAV)
|
||||
{
|
||||
if (!IsPokémon)
|
||||
|
||||
@@ -9,7 +9,8 @@ public sealed class WC6 : MysteryGift
|
||||
internal const int Size = 0x108;
|
||||
internal const int SizeFull = 0x310;
|
||||
internal const uint EonTicketConst = 0x225D73C2;
|
||||
public override string Extension => ".wc6";
|
||||
public override string Extension => "wc6";
|
||||
public override int Format => 6;
|
||||
|
||||
public WC6(byte[] data = null)
|
||||
{
|
||||
@@ -94,6 +95,7 @@ public WC6(byte[] data = null)
|
||||
|
||||
// Pokémon Properties
|
||||
public override bool IsPokémon { get { return CardType == 0; } set { if (value) CardType = 0; } }
|
||||
public override bool IsShiny { get { return PIDType == 2; } }
|
||||
public int TID {
|
||||
get { return BitConverter.ToUInt16(Data, 0x68); }
|
||||
set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x68); } }
|
||||
@@ -109,7 +111,7 @@ public WC6(byte[] data = null)
|
||||
public int Pokéball {
|
||||
get { return Data[0x76]; }
|
||||
set { Data[0x76] = (byte)value; } }
|
||||
public int HeldItem {
|
||||
public override int HeldItem {
|
||||
get { return BitConverter.ToUInt16(Data, 0x78); }
|
||||
set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x78); } }
|
||||
public int Move1 {
|
||||
@@ -124,7 +126,7 @@ public WC6(byte[] data = null)
|
||||
public int Move4 {
|
||||
get { return BitConverter.ToUInt16(Data, 0x80); }
|
||||
set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x80); } }
|
||||
public int Species {
|
||||
public override int Species {
|
||||
get { return BitConverter.ToUInt16(Data, 0x82); }
|
||||
set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x82); } }
|
||||
public int Form {
|
||||
@@ -174,7 +176,7 @@ public WC6(byte[] data = null)
|
||||
get { return Util.TrimFromZero(Encoding.Unicode.GetString(Data, 0xB6, 0x1A)); }
|
||||
set { Encoding.Unicode.GetBytes(value.PadRight(value.Length + 1, '\0')).CopyTo(Data, 0xB6); } }
|
||||
public int Level { get { return Data[0xD0]; } set { Data[0xD0] = (byte)value; } }
|
||||
public bool IsEgg { get { return Data[0xD1] == 1; } set { Data[0xD1] = (byte)(value ? 1 : 0); } }
|
||||
public override bool IsEgg { get { return Data[0xD1] == 1; } set { Data[0xD1] = (byte)(value ? 1 : 0); } }
|
||||
public uint PID {
|
||||
get { return BitConverter.ToUInt32(Data, 0xD4); }
|
||||
set { BitConverter.GetBytes(value).CopyTo(Data, 0xD4); } }
|
||||
@@ -218,16 +220,9 @@ public WC6(byte[] data = null)
|
||||
public int[] IVs => new[] { IV_HP, IV_ATK, IV_DEF, IV_SPE, IV_SPA, IV_SPD };
|
||||
public bool IsNicknamed => Nickname.Length > 0;
|
||||
|
||||
public int[] Moves
|
||||
public override int[] Moves
|
||||
{
|
||||
get { return new[] {Move1, Move2, Move3, Move4}; }
|
||||
set
|
||||
{
|
||||
if (value.Length > 0) Move1 = value[0];
|
||||
if (value.Length > 1) Move2 = value[1];
|
||||
if (value.Length > 2) Move3 = value[2];
|
||||
if (value.Length > 3) Move4 = value[3];
|
||||
}
|
||||
}
|
||||
public int[] RelearnMoves
|
||||
{
|
||||
|
||||
@@ -72,9 +72,14 @@
|
||||
<Compile Include="Legality\Checks.cs" />
|
||||
<Compile Include="Legality\Core.cs" />
|
||||
<Compile Include="Legality\Data.cs" />
|
||||
<Compile Include="Legality\Tables2.cs" />
|
||||
<Compile Include="Legality\Tables1.cs" />
|
||||
<Compile Include="Legality\Tables3.cs" />
|
||||
<Compile Include="Legality\Tables5.cs" />
|
||||
<Compile Include="Legality\Tables4.cs" />
|
||||
<Compile Include="MainWindow\MainPK2.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow\MainPK1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -101,6 +106,7 @@
|
||||
<Compile Include="PersonalInfo\PersonalInfo.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfoB2W2.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfoBW.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfoG2.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfoG1.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfoG3.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfoG4.cs" />
|
||||
@@ -108,6 +114,7 @@
|
||||
<Compile Include="PersonalInfo\PersonalInfoXY.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalTable.cs" />
|
||||
<Compile Include="PKM\PK1.cs" />
|
||||
<Compile Include="PKM\PK2.cs" />
|
||||
<Compile Include="PKM\PKM.cs" />
|
||||
<Compile Include="PKM\PKMConverter.cs" />
|
||||
<Compile Include="PKM\ShowdownSet.cs" />
|
||||
@@ -127,6 +134,7 @@
|
||||
<Compile Include="Saves\BlockInfo.cs" />
|
||||
<Compile Include="Saves\BoxWallpaper.cs" />
|
||||
<Compile Include="Saves\Inventory.cs" />
|
||||
<Compile Include="Saves\SAV2.cs" />
|
||||
<Compile Include="Saves\SAV1.cs" />
|
||||
<Compile Include="Saves\SAV3.cs" />
|
||||
<Compile Include="Saves\SAV4.cs" />
|
||||
@@ -215,6 +223,12 @@
|
||||
<Compile Include="Subforms\Save Editors\SAV_SimplePokedex.Designer.cs">
|
||||
<DependentUpon>SAV_SimplePokedex.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Subforms\SAV_MysteryGiftDB.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Subforms\SAV_MysteryGiftDB.Designer.cs">
|
||||
<DependentUpon>SAV_MysteryGiftDB.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Subforms\SAV_Database.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -375,6 +389,9 @@
|
||||
<EmbeddedResource Include="Subforms\Save Editors\SAV_SimplePokedex.resx">
|
||||
<DependentUpon>SAV_SimplePokedex.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Subforms\SAV_MysteryGiftDB.resx">
|
||||
<DependentUpon>SAV_MysteryGiftDB.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Subforms\SAV_Database.resx">
|
||||
<DependentUpon>SAV_Database.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@@ -433,6 +450,7 @@
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="Misc\personal_gs" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
@@ -442,6 +460,16 @@
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<None Include="Resources\text\gen3\text_gsc_00000_es.txt" />
|
||||
<None Include="Resources\text\gen3\text_ItemsG1_es.txt" />
|
||||
<None Include="Resources\text\gen3\text_ItemsG2_es.txt" />
|
||||
<None Include="Resources\text\gen3\text_ItemsG3_es.txt" />
|
||||
<None Include="Resources\text\gen3\text_rsefrlg_00000_es.txt" />
|
||||
<None Include="Resources\text\gen3\text_gsc_00000_zh.txt" />
|
||||
<None Include="Resources\text\gen3\text_ItemsG1_zh.txt" />
|
||||
<None Include="Resources\text\gen3\text_ItemsG2_zh.txt" />
|
||||
<None Include="Resources\text\gen3\text_ItemsG3_zh.txt" />
|
||||
<None Include="Resources\text\gen3\text_rsefrlg_00000_zh.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
|
||||
@@ -482,9 +510,11 @@
|
||||
<None Include="Resources\byte\lvlmove_xy.pkl" />
|
||||
<None Include="Resources\byte\personal_b2w2" />
|
||||
<None Include="Resources\byte\personal_bw" />
|
||||
<None Include="Resources\byte\personal_c" />
|
||||
<None Include="Resources\byte\personal_dp" />
|
||||
<None Include="Resources\byte\personal_e" />
|
||||
<None Include="Resources\byte\personal_fr" />
|
||||
<None Include="Resources\byte\personal_gs" />
|
||||
<None Include="Resources\byte\personal_hgss" />
|
||||
<None Include="Resources\byte\personal_lg" />
|
||||
<None Include="Resources\byte\personal_pt" />
|
||||
@@ -2751,6 +2781,17 @@
|
||||
<ItemGroup>
|
||||
<None Include="Resources\text\version.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\text\gen3\text_gsc_00000_en.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\text\gen3\text_ItemsG1_en.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\img\Program\gift.png" />
|
||||
<Content Include="Resources\text\gen3\text_ItemsG2_en.txt" />
|
||||
<None Include="Resources\img\Pokemon Sprites\172_1.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<Properties StartupItem="PKHeX.csproj">
|
||||
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" />
|
||||
<MonoDevelop.Ide.Workbench />
|
||||
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||
<BreakpointStore />
|
||||
</MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||
<MonoDevelop.Ide.DebuggingService.PinnedWatches />
|
||||
</Properties>
|
||||
@@ -100,9 +100,11 @@ public override bool IsNicknamed
|
||||
get
|
||||
{
|
||||
string spName = PKX.getSpeciesName(Species, Japanese ? 1 : 2).ToUpper();
|
||||
return !nick.SequenceEqual(
|
||||
spName = spName.Replace(" ", ""); // Gen I/II didn't have a space for Mr. Mime
|
||||
return !nick.SequenceEqual(
|
||||
PKX.setG1Str(spName, Japanese)
|
||||
.Concat(Enumerable.Repeat((byte) 0x50, StringLength - spName.Length - 1)));
|
||||
.Concat(Enumerable.Repeat((byte) 0x50, StringLength - spName.Length - 1))
|
||||
.Select(b => (byte)(b == 0xF2 ? 0xE8 : b)));
|
||||
}
|
||||
set { }
|
||||
}
|
||||
@@ -110,7 +112,11 @@ public override bool IsNicknamed
|
||||
public void setNotNicknamed()
|
||||
{
|
||||
string spName = PKX.getSpeciesName(Species, Japanese ? 1 : 2).ToUpper();
|
||||
nick = PKX.setG1Str(spName, Japanese).Concat(Enumerable.Repeat((byte)0x50, StringLength - spName.Length - 1)).ToArray();
|
||||
spName = spName.Replace(" ", ""); // Gen I/II didn't have a space for Mr. Mime
|
||||
nick = PKX.setG1Str(spName, Japanese)
|
||||
.Concat(Enumerable.Repeat((byte)0x50, StringLength - spName.Length - 1))
|
||||
.Select(b => (byte)(b == 0xF2 ? 0xE8 : b)) // Decimal point<->period fix
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
|
||||
@@ -120,8 +126,8 @@ public override int Species
|
||||
get { return PKX.getG1Species(Data[0]); }
|
||||
set
|
||||
{
|
||||
// Before updating catch rate, check if Special Yellow Version Pikachu
|
||||
if (!(PKX.getG1Species(Data[0]) == 25 && value == 25 && Catch_Rate == 163))
|
||||
// Before updating catch rate, check if non-standard
|
||||
if (Catch_Rate == PersonalTable.RBY[Species].CatchRate)
|
||||
Catch_Rate = PersonalTable.RBY[value].CatchRate;
|
||||
Data[0] = (byte)PKX.setG1Species(value);
|
||||
Type_A = PersonalTable.RBY[value].Types[0];
|
||||
@@ -250,20 +256,59 @@ public override bool CanHoldItem(ushort[] ValidArray)
|
||||
public override int CNT_Tough { get { return 0; } set { } }
|
||||
public override int CNT_Sheen { get { return 0; } set { } }
|
||||
#endregion
|
||||
|
||||
public PK2 convertToPK2()
|
||||
{
|
||||
PK2 pk2 = new PK2(null, Identifier, Japanese);
|
||||
pk2.Species = Species;
|
||||
Array.Copy(Data, 0x7, pk2.Data, 0x1, 0x1A);
|
||||
// https://github.com/pret/pokecrystal/blob/master/engine/link.asm#L1132
|
||||
if (!Legal.HeldItems_GSC.Contains((ushort)pk2.HeldItem))
|
||||
switch (pk2.HeldItem)
|
||||
{
|
||||
case 0x19:
|
||||
pk2.HeldItem = 0x92; // Leftovers
|
||||
break;
|
||||
case 0x2D:
|
||||
pk2.HeldItem = 0x53; // Bitter Berry
|
||||
break;
|
||||
case 0x32:
|
||||
pk2.HeldItem = 0xAE; // Leftovers
|
||||
break;
|
||||
case 0x5A:
|
||||
case 0x64:
|
||||
case 0x78:
|
||||
case 0x87:
|
||||
case 0xBE:
|
||||
case 0xC3:
|
||||
case 0xDC:
|
||||
case 0xFA:
|
||||
case 0xFF:
|
||||
pk2.HeldItem = 0xAD; // Berry
|
||||
break;
|
||||
}
|
||||
pk2.CurrentFriendship = PersonalTable.C[Species].BaseFriendship;
|
||||
// Pokerus = 0
|
||||
// Caught Data = 0
|
||||
pk2.Stat_Level = PKX.getLevel(Species, EXP);
|
||||
Array.Copy(otname, 0, pk2.otname, 0, otname.Length);
|
||||
Array.Copy(nick, 0, pk2.nick, 0, nick.Length);
|
||||
|
||||
return pk2;
|
||||
}
|
||||
}
|
||||
|
||||
public class PokemonList1
|
||||
{
|
||||
internal const int CAPACITY_DAYCARE = 1;
|
||||
internal const int CAPACITY_PARTY = 6;
|
||||
internal const int CAPACITY_STORED = 20;
|
||||
internal const int CAPACITY_STORED_JP = 30;
|
||||
private const int CAPACITY_DAYCARE = 1;
|
||||
private const int CAPACITY_PARTY = 6;
|
||||
private const int CAPACITY_STORED = 20;
|
||||
private const int CAPACITY_STORED_JP = 30;
|
||||
|
||||
private readonly bool Japanese;
|
||||
|
||||
private int StringLength => Japanese ? PK1.STRLEN_J : PK1.STRLEN_U;
|
||||
|
||||
internal static readonly byte[] EMPTY_LIST = { 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50 };
|
||||
public enum CapacityType
|
||||
{
|
||||
Daycare = CAPACITY_DAYCARE,
|
||||
@@ -340,11 +385,6 @@ public byte Count
|
||||
set { Data[0] = value > Capacity ? Capacity : value; }
|
||||
}
|
||||
|
||||
public int GetCapacity()
|
||||
{
|
||||
return Capacity;
|
||||
}
|
||||
|
||||
public readonly PK1[] Pokemon;
|
||||
|
||||
public PK1 this[int i]
|
||||
|
||||
490
PKHeX/PKM/PK2.cs
Normal file
@@ -0,0 +1,490 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public class PK2 : PKM
|
||||
{
|
||||
// Internal use only
|
||||
protected internal byte[] otname;
|
||||
protected internal byte[] nick;
|
||||
|
||||
public byte[] OT_Name_Raw => (byte[])otname.Clone();
|
||||
public byte[] Nickname_Raw => (byte[])nick.Clone();
|
||||
|
||||
public sealed override int SIZE_PARTY => PKX.SIZE_2PARTY;
|
||||
public override int SIZE_STORED => PKX.SIZE_2STORED;
|
||||
internal const int STRLEN_J = 6;
|
||||
internal const int STRLEN_U = 11;
|
||||
private int StringLength => Japanese ? STRLEN_J : STRLEN_U;
|
||||
|
||||
public override int Format => 2;
|
||||
|
||||
public bool Japanese => otname.Length == STRLEN_J;
|
||||
|
||||
public override string FileName => $"{Species.ToString("000")} - {Nickname} - {OT_Name}.{Extension}";
|
||||
|
||||
public PK2(byte[] decryptedData = null, string ident = null, bool jp = false)
|
||||
{
|
||||
Data = (byte[])(decryptedData ?? new byte[SIZE_PARTY]).Clone();
|
||||
Identifier = ident;
|
||||
if (Data.Length != SIZE_PARTY)
|
||||
Array.Resize(ref Data, SIZE_PARTY);
|
||||
int strLen = jp ? STRLEN_J : STRLEN_U;
|
||||
otname = Enumerable.Repeat((byte) 0x50, strLen).ToArray();
|
||||
nick = Enumerable.Repeat((byte) 0x50, strLen).ToArray();
|
||||
|
||||
IsEgg = false; // Egg data stored in Pokemon List.
|
||||
}
|
||||
|
||||
public override PKM Clone()
|
||||
{
|
||||
PK2 new_pk2 = new PK2(Data, Identifier, Japanese);
|
||||
Array.Copy(otname, 0, new_pk2.otname, 0, otname.Length);
|
||||
Array.Copy(nick, 0, new_pk2.nick, 0, nick.Length);
|
||||
new_pk2.IsEgg = IsEgg;
|
||||
return new_pk2;
|
||||
}
|
||||
public override string Nickname
|
||||
{
|
||||
get { return PKX.getG1Str(nick, Japanese); }
|
||||
set
|
||||
{
|
||||
byte[] strdata = PKX.setG1Str(value, Japanese);
|
||||
if (strdata.Length > StringLength)
|
||||
throw new ArgumentOutOfRangeException($"Nickname {value} too long for given PK2");
|
||||
if (nick.Any(b => b == 0) && nick[StringLength - 1] == 0x50 && Array.FindIndex(nick, b => b == 0) == strdata.Length - 1) // Handle JP Mew event with grace
|
||||
{
|
||||
int firstInd = Array.FindIndex(nick, b => b == 0);
|
||||
for (int i = firstInd; i < StringLength - 1; i++)
|
||||
if (nick[i] != 0)
|
||||
break;
|
||||
strdata = strdata.Take(strdata.Length - 1).ToArray();
|
||||
}
|
||||
strdata.CopyTo(nick, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public override string OT_Name
|
||||
{
|
||||
get { return PKX.getG1Str(otname, Japanese); }
|
||||
set
|
||||
{
|
||||
byte[] strdata = PKX.setG1Str(value, Japanese);
|
||||
if (strdata.Length > StringLength)
|
||||
throw new ArgumentOutOfRangeException($"OT Name {value} too long for given PK1");
|
||||
if (otname.Any(b => b == 0) && otname[StringLength - 1] == 0x50 && Array.FindIndex(otname, b => b == 0) == strdata.Length - 1) // Handle JP Mew event with grace
|
||||
{
|
||||
int firstInd = Array.FindIndex(otname, b => b == 0);
|
||||
for (int i = firstInd; i < StringLength - 1; i++)
|
||||
if (otname[i] != 0)
|
||||
break;
|
||||
strdata = strdata.Take(strdata.Length - 1).ToArray();
|
||||
}
|
||||
strdata.CopyTo(otname, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public override byte[] Encrypt()
|
||||
{
|
||||
// Oh god this is such total abuse of what this method is meant to do
|
||||
// Please forgive me
|
||||
return new PokemonList2(this).GetBytes();
|
||||
}
|
||||
|
||||
// Please forgive me.
|
||||
public override byte[] EncryptedPartyData => Encrypt().ToArray();
|
||||
public override byte[] EncryptedBoxData => Encrypt().ToArray();
|
||||
public override byte[] DecryptedBoxData => Encrypt().ToArray();
|
||||
public override byte[] DecryptedPartyData => Encrypt().ToArray();
|
||||
|
||||
public override bool IsNicknamed
|
||||
{
|
||||
get
|
||||
{
|
||||
string spName = PKX.getSpeciesName(Species, Japanese ? 1 : 2).ToUpper();
|
||||
spName = spName.Replace(" ", ""); // Gen I/II didn't have a space for Mr. Mime
|
||||
return !nick.SequenceEqual(
|
||||
PKX.setG1Str(spName, Japanese)
|
||||
.Concat(Enumerable.Repeat((byte) 0x50, StringLength - spName.Length - 1))
|
||||
.Select(b => (byte)(b == 0xF2 ? 0xE8 : b)));
|
||||
}
|
||||
set { }
|
||||
}
|
||||
|
||||
public void setNotNicknamed()
|
||||
{
|
||||
string spName = PKX.getSpeciesName(Species, Japanese ? 1 : 2).ToUpper();
|
||||
spName = spName.Replace(" ", ""); // Gen I/II didn't have a space for Mr. Mime
|
||||
nick = PKX.setG1Str(spName, Japanese)
|
||||
.Concat(Enumerable.Repeat((byte)0x50, StringLength - spName.Length - 1))
|
||||
.Select(b => (byte)(b == 0xF2 ? 0xE8 : b)) // Decimal point<->period fix
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
|
||||
#region Stored Attributes
|
||||
public override int Species
|
||||
{
|
||||
get { return Data[0]; }
|
||||
set
|
||||
{
|
||||
Data[0] = (byte)value;
|
||||
}
|
||||
}
|
||||
public override int HeldItem { get { return Data[0x1]; } set { Data[0x1] = (byte)value; } }
|
||||
public override int Move1 { get { return Data[2]; } set { Data[2] = (byte) value; } }
|
||||
public override int Move2 { get { return Data[3]; } set { Data[3] = (byte)value; } }
|
||||
public override int Move3 { get { return Data[4]; } set { Data[4] = (byte)value; } }
|
||||
public override int Move4 { get { return Data[5]; } set { Data[5] = (byte)value; } }
|
||||
public override int TID { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 6)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 6); } }
|
||||
public override uint EXP
|
||||
{
|
||||
get { return (Util.SwapEndianness(BitConverter.ToUInt32(Data, 8)) >> 8) & 0x00FFFFFF; }
|
||||
set { Array.Copy(BitConverter.GetBytes(Util.SwapEndianness((value << 8) & 0xFFFFFF00)), 0, Data, 8, 3); }
|
||||
}
|
||||
public override int EV_HP { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0xB)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0xB); } }
|
||||
public override int EV_ATK { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0xD)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0xD); } }
|
||||
public override int EV_DEF { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0xF)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0xF); } }
|
||||
public override int EV_SPE { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x11)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x11); } }
|
||||
public int EV_SPC { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x13)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x13); } }
|
||||
public override int EV_SPA { get { return EV_SPC; } set { EV_SPC = value; } }
|
||||
public override int EV_SPD { get { return EV_SPC; } set { } }
|
||||
public ushort DV16 { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x15)); } set { BitConverter.GetBytes(Util.SwapEndianness(value)).CopyTo(Data, 0x15); } }
|
||||
public override int IV_HP { get { return ((IV_ATK & 1) << 3) | ((IV_DEF & 1) << 2) | ((IV_SPE & 1) << 1) | ((IV_SPC & 1) << 0); } set { } }
|
||||
public override int IV_ATK { get { return (DV16 >> 12) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 12)) | (ushort)((value > 0xF ? 0xF : value) << 12)); } }
|
||||
public override int IV_DEF { get { return (DV16 >> 8) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 8)) | (ushort)((value > 0xF ? 0xF : value) << 8)); } }
|
||||
public override int IV_SPE { get { return (DV16 >> 4) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 4)) | (ushort)((value > 0xF ? 0xF : value) << 4)); } }
|
||||
public int IV_SPC { get { return (DV16 >> 0) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 0)) | (ushort)((value > 0xF ? 0xF : value) << 0)); } }
|
||||
public override int IV_SPA { get { return IV_SPC; } set { IV_SPC = value; } }
|
||||
public override int IV_SPD { get { return IV_SPC; } set { } }
|
||||
public override int Move1_PP { get { return Data[0x17] & 0x3F; } set { Data[0x17] = (byte)((Data[0x17] & 0xC0) | (value & 0x3F)); } }
|
||||
public override int Move2_PP { get { return Data[0x18] & 0x3F; } set { Data[0x18] = (byte)((Data[0x18] & 0xC0) | (value & 0x3F)); } }
|
||||
public override int Move3_PP { get { return Data[0x19] & 0x3F; } set { Data[0x19] = (byte)((Data[0x19] & 0xC0) | (value & 0x3F)); } }
|
||||
public override int Move4_PP { get { return Data[0x1A] & 0x3F; } set { Data[0x1A] = (byte)((Data[0x1A] & 0xC0) | (value & 0x3F)); } }
|
||||
public override int Move1_PPUps { get { return (Data[0x17] & 0xC0) >> 6; } set { Data[0x17] = (byte)((Data[0x17] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||
public override int Move2_PPUps { get { return (Data[0x18] & 0xC0) >> 6; } set { Data[0x18] = (byte)((Data[0x18] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||
public override int Move3_PPUps { get { return (Data[0x19] & 0xC0) >> 6; } set { Data[0x19] = (byte)((Data[0x19] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||
public override int Move4_PPUps { get { return (Data[0x1A] & 0xC0) >> 6; } set { Data[0x1A] = (byte)((Data[0x1A] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||
public override int CurrentFriendship { get { return Data[0x1B]; } set { Data[0x1B] = (byte) value; } }
|
||||
private byte PKRS { get { return Data[0x1C]; } set { Data[0x1C] = value; } }
|
||||
public override int PKRS_Days { get { return PKRS & 0xF; } set { PKRS = (byte)(PKRS & ~0xF | value); } }
|
||||
public override int PKRS_Strain { get { return PKRS >> 4; } set { PKRS = (byte)(PKRS & 0xF | value << 4); } }
|
||||
// Crystal only Caught Data
|
||||
private int CaughtData { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x1D)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x1D); } }
|
||||
public int Met_TimeOfDay { get { return (CaughtData >> 14) & 0x3; } set { CaughtData = (CaughtData & 0x3FFF) | ((value & 0x3) << 14); } }
|
||||
public override int Met_Level { get { return (CaughtData >> 8) & 0x3F; } set { CaughtData = (CaughtData & 0xC0FF) | ((value & 0x3F) << 8); } }
|
||||
public override int OT_Gender { get { return (CaughtData >> 7) & 1; } set { CaughtData = (CaughtData & 0xFFEF) | ((value & 1) << 7); } }
|
||||
public override int Met_Location { get { return CaughtData & 0x7F; } set { CaughtData = (CaughtData & 0xFF80) | (value & 0x7F); } }
|
||||
|
||||
public override int Stat_Level
|
||||
{
|
||||
get { return Data[0x1F]; }
|
||||
set { Data[0x1F] = (byte)value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Party Attributes
|
||||
public int Status_Condition { get { return Data[0x20]; } set { Data[0x20] = (byte)value; } }
|
||||
|
||||
public override int Stat_HPCurrent { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x22)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x22); } }
|
||||
public override int Stat_HPMax { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x24)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x24); } }
|
||||
public override int Stat_ATK { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x26)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x26); } }
|
||||
public override int Stat_DEF { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x28)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x28); } }
|
||||
public override int Stat_SPE { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x2A)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x2A); } }
|
||||
public override int Stat_SPA { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x2C)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x2C); } }
|
||||
public override int Stat_SPD { get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x2E)); } set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data, 0x2E); } }
|
||||
#endregion
|
||||
|
||||
public override ushort[] getStats(PersonalInfo p)
|
||||
{
|
||||
ushort[] Stats = new ushort[6];
|
||||
for (int i = 0; i < Stats.Length; i++)
|
||||
{
|
||||
ushort L = (ushort)Stat_Level;
|
||||
ushort B = (ushort)p.Stats[i];
|
||||
ushort I = (ushort)IVs[i];
|
||||
ushort E = // Fixed formula via http://www.smogon.com/ingame/guides/rby_gsc_stats
|
||||
(ushort)Math.Floor(Math.Min(255, Math.Floor(Math.Sqrt(Math.Max(0, EVs[i] - 1)) + 1)) / 4.0);
|
||||
Stats[i] = (ushort)Math.Floor((2 * (B + I) + E) * L / 100.0 + 5);
|
||||
}
|
||||
Stats[0] += (ushort)(5 + Stat_Level); // HP
|
||||
|
||||
return Stats;
|
||||
}
|
||||
|
||||
public override bool getGenderIsValid()
|
||||
{
|
||||
int gv = PersonalTable.C[Species].Gender;
|
||||
|
||||
if (gv == 255)
|
||||
return Gender == 2;
|
||||
if (gv == 254)
|
||||
return Gender == 1;
|
||||
if (gv == 0)
|
||||
return Gender == 0;
|
||||
switch (gv)
|
||||
{
|
||||
case 31:
|
||||
return IV_ATK >= 2 ? Gender == 0 : Gender == 1;
|
||||
case 63:
|
||||
return IV_ATK >= 5 ? Gender == 0 : Gender == 1;
|
||||
case 127:
|
||||
return IV_ATK >= 7 ? Gender == 0 : Gender == 1;
|
||||
case 191:
|
||||
return IV_ATK >= 12 ? Gender == 0 : Gender == 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool IsEgg { get; set; }
|
||||
|
||||
public override int Gender
|
||||
{
|
||||
get
|
||||
{
|
||||
int gv = PersonalTable.C[Species].Gender;
|
||||
if (gv == 255)
|
||||
return 2;
|
||||
if (gv == 254)
|
||||
return 1;
|
||||
if (gv == 0)
|
||||
return 0;
|
||||
switch (gv)
|
||||
{
|
||||
case 31:
|
||||
return IV_ATK >= 2 ? 0 : 1;
|
||||
case 63:
|
||||
return IV_ATK >= 5 ? 0 : 1;
|
||||
case 127:
|
||||
return IV_ATK >= 7 ? 0 : 1;
|
||||
case 191:
|
||||
return IV_ATK >= 12 ? 0 : 1;
|
||||
}
|
||||
Console.WriteLine("Unknown Gender value: " + gv);
|
||||
return 0;
|
||||
}
|
||||
set { }
|
||||
}
|
||||
|
||||
public bool hasMetData => CaughtData != 0;
|
||||
|
||||
public override bool CanHoldItem(ushort[] ValidArray)
|
||||
{
|
||||
return ValidArray.Contains((ushort)HeldItem);
|
||||
}
|
||||
|
||||
#region Future, Unused Attributes
|
||||
public override uint EncryptionConstant { get { return 0; } set { } }
|
||||
public override uint PID { get { return 0; } set { } }
|
||||
public override int Nature { get { return 0; } set { } }
|
||||
|
||||
public override int AltForm
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Species != 201) // Unown
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
uint formeVal = 0;
|
||||
formeVal |= (uint)((IV_ATK & 0x6) << 5);
|
||||
formeVal |= (uint)((IV_DEF & 0x6) << 3);
|
||||
formeVal |= (uint)((IV_SPE & 0x6) << 1);
|
||||
formeVal |= (uint)((IV_SPC & 0x6) >> 1);
|
||||
return (int)(formeVal / 10);
|
||||
}
|
||||
}
|
||||
set{ }
|
||||
}
|
||||
|
||||
public override int HPType
|
||||
{
|
||||
get { return 4 * (IV_ATK % 4) + (IV_DEF % 4); }
|
||||
set
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
public override bool IsShiny => IV_DEF == 10 && IV_SPE == 10 && IV_SPC == 10 && (new[] { 2, 3, 6, 7, 10, 11, 14, 15 }).Contains(IV_ATK);
|
||||
public override ushort Sanity { get { return 0; } set { } }
|
||||
public override bool ChecksumValid => true;
|
||||
public override ushort Checksum { get { return 0; } set { } }
|
||||
public override int Language { get { return 0; } set { } }
|
||||
public override bool FatefulEncounter { get { return false; } set { } }
|
||||
public override int TSV => 0x0000;
|
||||
public override int PSV => 0xFFFF;
|
||||
public override int Characteristic => -1;
|
||||
public override byte MarkByte { get { return 0; } protected set { } }
|
||||
public override int Ability { get { return 0; } set { } }
|
||||
public override int CurrentHandler { get { return 0; } set { } }
|
||||
public override int Egg_Location { get { return 0; } set { } }
|
||||
public override int OT_Friendship { get { return 0; } set { } }
|
||||
public override int Ball { get { return 0; } set { } }
|
||||
public override int Version { get { return 0; } set { } }
|
||||
public override int SID { get { return 0; } set { } }
|
||||
public override int CNT_Cool { get { return 0; } set { } }
|
||||
public override int CNT_Beauty { get { return 0; } set { } }
|
||||
public override int CNT_Cute { get { return 0; } set { } }
|
||||
public override int CNT_Smart { get { return 0; } set { } }
|
||||
public override int CNT_Tough { get { return 0; } set { } }
|
||||
public override int CNT_Sheen { get { return 0; } set { } }
|
||||
#endregion
|
||||
|
||||
public PK1 convertToPK1()
|
||||
{
|
||||
PK1 pk1 = new PK1(null, Identifier, Japanese);
|
||||
Array.Copy(Data, 0x1, pk1.Data, 0x7, 0x1A);
|
||||
pk1.Species = Species; // This will take care of Typing :)
|
||||
pk1.Stat_HPCurrent = Stat_HPCurrent;
|
||||
pk1.Stat_Level = Stat_Level;
|
||||
// Status = 0
|
||||
Array.Copy(otname, 0, pk1.otname, 0, otname.Length);
|
||||
Array.Copy(nick, 0, pk1.nick, 0, nick.Length);
|
||||
|
||||
int[] newMoves = pk1.Moves;
|
||||
for (int i = 0; i < 4; i++)
|
||||
if (newMoves[i] > 165) // not present in Gen 1
|
||||
newMoves[i] = 0;
|
||||
pk1.Moves = newMoves;
|
||||
pk1.FixMoves();
|
||||
|
||||
return pk1;
|
||||
}
|
||||
}
|
||||
|
||||
public class PokemonList2
|
||||
{
|
||||
private const int CAPACITY_DAYCARE = 1;
|
||||
private const int CAPACITY_PARTY = 6;
|
||||
private const int CAPACITY_STORED = 20;
|
||||
private const int CAPACITY_STORED_JP = 30;
|
||||
|
||||
private readonly bool Japanese;
|
||||
|
||||
private int StringLength => Japanese ? PK2.STRLEN_J : PK2.STRLEN_U;
|
||||
|
||||
public enum CapacityType
|
||||
{
|
||||
Daycare = CAPACITY_DAYCARE,
|
||||
Party = CAPACITY_PARTY,
|
||||
Stored = CAPACITY_STORED,
|
||||
StoredJP = CAPACITY_STORED_JP,
|
||||
Single
|
||||
}
|
||||
|
||||
public static int getEntrySize(CapacityType c)
|
||||
{
|
||||
return c == CapacityType.Single || c == CapacityType.Party
|
||||
? PKX.SIZE_2PARTY
|
||||
: PKX.SIZE_2STORED;
|
||||
}
|
||||
|
||||
public static byte getCapacity(CapacityType c)
|
||||
{
|
||||
return c == CapacityType.Single ? (byte)1 : (byte)c;
|
||||
}
|
||||
|
||||
private byte[] getEmptyList(CapacityType c, bool is_JP = false)
|
||||
{
|
||||
int cap = getCapacity(c);
|
||||
return new[] { (byte)0 }.Concat(Enumerable.Repeat((byte)0xFF, cap + 1)).Concat(Enumerable.Repeat((byte)0, getEntrySize(c) * cap)).Concat(Enumerable.Repeat((byte)0x50, (is_JP ? PK2.STRLEN_J : PK2.STRLEN_U) * 2 * cap)).ToArray();
|
||||
}
|
||||
|
||||
public PokemonList2(byte[] d, CapacityType c = CapacityType.Single, bool jp = false)
|
||||
{
|
||||
Japanese = jp;
|
||||
Data = d ?? getEmptyList(c, Japanese);
|
||||
Capacity = getCapacity(c);
|
||||
Entry_Size = getEntrySize(c);
|
||||
|
||||
if (Data.Length != DataSize)
|
||||
{
|
||||
Array.Resize(ref Data, DataSize);
|
||||
}
|
||||
|
||||
Pokemon = new PK2[Capacity];
|
||||
for (int i = 0; i < Capacity; i++)
|
||||
{
|
||||
int base_ofs = 2 + Capacity;
|
||||
byte[] dat = Data.Skip(base_ofs + Entry_Size * i).Take(Entry_Size).ToArray();
|
||||
Pokemon[i] = new PK2(dat, null, jp)
|
||||
{
|
||||
IsEgg = Data[1 + i] == 0xFD,
|
||||
otname = Data.Skip(base_ofs + Capacity*Entry_Size + StringLength*i).Take(StringLength).ToArray(),
|
||||
nick = Data.Skip(base_ofs + Capacity*Entry_Size + StringLength*Capacity + StringLength*i)
|
||||
.Take(StringLength).ToArray()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public PokemonList2(CapacityType c = CapacityType.Single, bool jp = false)
|
||||
: this(null, c, jp)
|
||||
{
|
||||
Count = 1;
|
||||
}
|
||||
|
||||
public PokemonList2(PK2 pk)
|
||||
: this(CapacityType.Single, pk.Japanese)
|
||||
{
|
||||
this[0] = pk;
|
||||
Count = 1;
|
||||
}
|
||||
|
||||
private readonly byte[] Data;
|
||||
private readonly byte Capacity;
|
||||
private readonly int Entry_Size;
|
||||
|
||||
public byte Count
|
||||
{
|
||||
get { return Data[0]; }
|
||||
set { Data[0] = value > Capacity ? Capacity : value; }
|
||||
}
|
||||
|
||||
public readonly PK2[] Pokemon;
|
||||
|
||||
public PK2 this[int i]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (i > Capacity || i < 0) throw new IndexOutOfRangeException($"Invalid PokemonList Access: {i}");
|
||||
return Pokemon[i];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value == null) return;
|
||||
Pokemon[i] = (PK2)value.Clone();
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (Pokemon.Any(pk => pk.Species == 0))
|
||||
Count = (byte)Array.FindIndex(Pokemon, pk => pk.Species == 0);
|
||||
else
|
||||
Count = Capacity;
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
Data[1 + i] = Pokemon[i].IsEgg ? (byte)0xFD : (byte)Pokemon[i].Species;
|
||||
Array.Copy(Pokemon[i].Data, 0, Data, 2 + Capacity + Entry_Size * i, Entry_Size);
|
||||
Array.Copy(Pokemon[i].OT_Name_Raw, 0, Data, 2 + Capacity + Capacity * Entry_Size + StringLength * i, StringLength);
|
||||
Array.Copy(Pokemon[i].Nickname_Raw, 0, Data, 2 + Capacity + Capacity * Entry_Size + StringLength * Capacity + StringLength * i, StringLength);
|
||||
}
|
||||
Data[1 + Count] = byte.MaxValue;
|
||||
}
|
||||
|
||||
public byte[] GetBytes()
|
||||
{
|
||||
Update();
|
||||
return Data;
|
||||
}
|
||||
|
||||
private int DataSize => Capacity * (Entry_Size + 1 + 2 * StringLength) + 2;
|
||||
|
||||
public static int GetDataLength(CapacityType c, bool jp = false)
|
||||
{
|
||||
return getCapacity(c) * (getEntrySize(c) + 1 + 2 * (jp ? PK2.STRLEN_J : PK2.STRLEN_U)) + 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,7 +81,7 @@ public PK4(byte[] decryptedData = null, string ident = null)
|
||||
public bool RibbonRecord { get { return (RIB2 & (1 << 2)) == 1 << 2; } set { RIB2 = (byte)(RIB2 & ~(1 << 2) | (value ? 1 << 2 : 0)); } }
|
||||
public bool RibbonEvent { get { return (RIB2 & (1 << 3)) == 1 << 3; } set { RIB2 = (byte)(RIB2 & ~(1 << 3) | (value ? 1 << 3 : 0)); } }
|
||||
public bool RibbonLegend { get { return (RIB2 & (1 << 4)) == 1 << 4; } set { RIB2 = (byte)(RIB2 & ~(1 << 4) | (value ? 1 << 4 : 0)); } }
|
||||
public bool RibbonWorldChampion { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } }
|
||||
public bool RibbonChampionWorld { get { return (RIB2 & (1 << 5)) == 1 << 5; } set { RIB2 = (byte)(RIB2 & ~(1 << 5) | (value ? 1 << 5 : 0)); } }
|
||||
public bool RibbonBirthday { get { return (RIB2 & (1 << 6)) == 1 << 6; } set { RIB2 = (byte)(RIB2 & ~(1 << 6) | (value ? 1 << 6 : 0)); } }
|
||||
public bool RibbonSpecial { get { return (RIB2 & (1 << 7)) == 1 << 7; } set { RIB2 = (byte)(RIB2 & ~(1 << 7) | (value ? 1 << 7 : 0)); } }
|
||||
public bool RibbonSouvenir { get { return (RIB3 & (1 << 0)) == 1 << 0; } set { RIB3 = (byte)(RIB3 & ~(1 << 0) | (value ? 1 << 0 : 0)); } }
|
||||
@@ -323,19 +323,26 @@ public override int Met_Location
|
||||
public override int PKRS_Strain { get { return PKRS >> 4; } set { PKRS = (byte)(PKRS & 0xF | (value << 4)); } }
|
||||
public override int Ball
|
||||
{
|
||||
get { return Data[HGSS ? 0x86 : 0x83]; }
|
||||
get
|
||||
{
|
||||
// Pokemon obtained in HGSS have the HGSS ball set (@0x86)
|
||||
// However, this info is not set when receiving a wondercard!
|
||||
// The PGT contains a preformatted PK4 file, which is slightly modified.
|
||||
// No HGSS balls were used, and no HGSS ball info is set.
|
||||
|
||||
// Sneaky way = return the higher of the two values.
|
||||
return Math.Max(Data[0x86], Data[0x83]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (HGSS)
|
||||
{
|
||||
Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Ball to display in DP (cap at Cherish)
|
||||
// Ball to display in DPPt
|
||||
Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Cap at Cherish Ball
|
||||
|
||||
// HGSS Exclusive Balls -- If the user wants to screw things up, let them. Any legality checking could catch hax.
|
||||
if (value > 0x10 || (HGSS && !FatefulEncounter))
|
||||
Data[0x86] = (byte)(value <= 0x18 ? value : 4); // Cap at Comp Ball
|
||||
}
|
||||
else
|
||||
{
|
||||
Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Cap at Cherish Ball
|
||||
Data[0x86] = 0; // Unused
|
||||
}
|
||||
}
|
||||
}
|
||||
public override int Met_Level { get { return Data[0x84] & ~0x80; } set { Data[0x84] = (byte)((Data[0x84] & 0x80) | value); } }
|
||||
|
||||
@@ -226,7 +226,7 @@ public byte[] Write()
|
||||
public abstract int CurrentHandler { get; set; }
|
||||
|
||||
// Derived
|
||||
public bool IsShiny => TSV == PSV;
|
||||
public virtual bool IsShiny => TSV == PSV;
|
||||
public bool Gen6 => Version >= 24 && Version <= 29;
|
||||
public bool XY => Version == (int)GameVersion.X || Version == (int)GameVersion.Y;
|
||||
public bool AO => Version == (int)GameVersion.AS || Version == (int)GameVersion.OR;
|
||||
@@ -335,7 +335,7 @@ public int[] CNTs
|
||||
get { return new[] { CNT_Cool, CNT_Beauty, CNT_Cute, CNT_Smart, CNT_Tough, CNT_Sheen }; }
|
||||
set { if (value?.Length != 6) return; CNT_Cool = value[0]; CNT_Beauty = value[1]; CNT_Cute = value[2]; CNT_Smart = value[3]; CNT_Tough = value[4]; CNT_Sheen = value[5]; }
|
||||
}
|
||||
public int HPType
|
||||
public virtual int HPType
|
||||
{
|
||||
get { return 15 * ((IV_HP & 1) + 2 * (IV_ATK & 1) + 4 * (IV_DEF & 1) + 8 * (IV_SPE & 1) + 16 * (IV_SPA & 1) + 32 * (IV_SPD & 1)) / 63; }
|
||||
set
|
||||
@@ -447,6 +447,8 @@ private int getBasePP(int move)
|
||||
int[] pptable;
|
||||
switch (Format)
|
||||
{
|
||||
case 1: pptable = Legal.MovePP_RBY; break;
|
||||
case 2: pptable = Legal.MovePP_GSC; break;
|
||||
case 3: pptable = Legal.MovePP_RS; break;
|
||||
case 4: pptable = Legal.MovePP_DP; break;
|
||||
case 5: pptable = Legal.MovePP_BW; break;
|
||||
|
||||
@@ -34,6 +34,9 @@ public static int getPKMDataFormat(byte[] data)
|
||||
case PKX.SIZE_1JLIST:
|
||||
case PKX.SIZE_1ULIST:
|
||||
return 1;
|
||||
case PKX.SIZE_2ULIST:
|
||||
case PKX.SIZE_2JLIST:
|
||||
return 2;
|
||||
case PKX.SIZE_3PARTY:
|
||||
case PKX.SIZE_3STORED:
|
||||
return 3;
|
||||
@@ -74,10 +77,15 @@ public static PKM getPKMfromBytes(byte[] data, string ident = null)
|
||||
switch (getPKMDataFormat(data))
|
||||
{
|
||||
case 1:
|
||||
var PL = new PokemonList1(data, PokemonList1.CapacityType.Single, data.Length == PKX.SIZE_1JLIST);
|
||||
var PL1 = new PokemonList1(data, PokemonList1.CapacityType.Single, data.Length == PKX.SIZE_1JLIST);
|
||||
if (ident != null)
|
||||
PL[0].Identifier = ident;
|
||||
return PL[0];
|
||||
PL1[0].Identifier = ident;
|
||||
return PL1[0];
|
||||
case 2:
|
||||
var PL2 = new PokemonList2(data, PokemonList2.CapacityType.Single, data.Length == PKX.SIZE_2JLIST);
|
||||
if (ident != null)
|
||||
PL2[0].Identifier = ident;
|
||||
return PL2[0];
|
||||
case 3:
|
||||
return new PK3(data, ident);
|
||||
case 4:
|
||||
@@ -92,16 +100,36 @@ public static PKM getPKMfromBytes(byte[] data, string ident = null)
|
||||
}
|
||||
internal static PKM convertToFormat(PKM pk, int Format, out string comment)
|
||||
{
|
||||
if (pk == null)
|
||||
if (pk == null || pk.Species == 0)
|
||||
{
|
||||
comment = "Null input. Aborting.";
|
||||
return null;
|
||||
}
|
||||
|
||||
string currentFormat = pk.Format.ToString();
|
||||
PKM pkm = pk.Clone();
|
||||
|
||||
if (pk.Format == Format)
|
||||
{
|
||||
comment = "No need to convert, current format matches requested format.";
|
||||
return pk;
|
||||
}
|
||||
if (pk.Format <= 2 && Format <= 2) // 1<->2, already checked not equal
|
||||
{
|
||||
switch (Format)
|
||||
{
|
||||
case 1:
|
||||
if (pk.Species > 151)
|
||||
{ comment = $"Cannot convert a {PKX.getSpeciesName(pk.Species, ((PK2)pk).Japanese ? 1 : 2)} to pk{Format}"; return null; }
|
||||
pkm = ((PK2)pk).convertToPK1();
|
||||
break;
|
||||
case 2:
|
||||
pkm = ((PK1)pk).convertToPK2();
|
||||
break;
|
||||
}
|
||||
comment = $"Converted from pk{pk.Format} to pk{Format}";
|
||||
return pkm;
|
||||
}
|
||||
if (pk.Format > Format)
|
||||
{
|
||||
comment = "Cannot convert a PKM backwards." + Environment.NewLine
|
||||
@@ -120,8 +148,6 @@ internal static PKM convertToFormat(PKM pk, int Format, out string comment)
|
||||
+ "Please wait for Sun/Moon to release and documentation to occur.";
|
||||
return null;
|
||||
}
|
||||
string currentFormat = pk.Format.ToString();
|
||||
PKM pkm = pk.Clone();
|
||||
if (pkm.IsEgg) // force hatch
|
||||
{
|
||||
pkm.IsEgg = false;
|
||||
|
||||
@@ -15,6 +15,11 @@ public static class PKX
|
||||
internal const int SIZE_1PARTY = 44;
|
||||
internal const int SIZE_1STORED = 33;
|
||||
|
||||
internal const int SIZE_2ULIST = 73;
|
||||
internal const int SIZE_2JLIST = 63;
|
||||
internal const int SIZE_2PARTY = 48;
|
||||
internal const int SIZE_2STORED = 32;
|
||||
|
||||
internal const int SIZE_3PARTY = 100;
|
||||
internal const int SIZE_3STORED = 80;
|
||||
internal const int SIZE_3BLOCK = 12;
|
||||
@@ -38,7 +43,15 @@ public static class PKX
|
||||
/// <returns>A boolean indicating whether or not the length is valid for a Pokemon file.</returns>
|
||||
public static bool getIsPKM(long len)
|
||||
{
|
||||
return new[] {SIZE_1JLIST, SIZE_1ULIST, SIZE_3STORED, SIZE_3PARTY, SIZE_4STORED, SIZE_4PARTY, SIZE_5PARTY, SIZE_6STORED, SIZE_6PARTY}.Contains((int)len);
|
||||
return new[]
|
||||
{
|
||||
SIZE_1JLIST, SIZE_1ULIST,
|
||||
SIZE_2ULIST, SIZE_2JLIST,
|
||||
SIZE_3STORED, SIZE_3PARTY,
|
||||
SIZE_4STORED, SIZE_4PARTY,
|
||||
SIZE_5PARTY,
|
||||
SIZE_6STORED, SIZE_6PARTY
|
||||
}.Contains((int)len);
|
||||
}
|
||||
|
||||
// C# PKX Function Library
|
||||
@@ -523,6 +536,8 @@ public static Image getSprite(int species, int form, int gender, int item, bool
|
||||
Image itemimg = (Image)Resources.ResourceManager.GetObject("item_" + item) ?? Resources.helditem;
|
||||
if ((generation == 3 || generation == 4) && 328 <= item && item <= 419) // gen3/4 TM
|
||||
itemimg = Resources.item_tm;
|
||||
if (generation == 2)
|
||||
itemimg = Resources.helditem; // Don't even try
|
||||
|
||||
// Redraw
|
||||
baseImage = Util.LayerImage(baseImage, itemimg, 22 + (15 - itemimg.Width) / 2, 15 + (15 - itemimg.Height), 1);
|
||||
@@ -1698,11 +1713,13 @@ public static ushort getG4Item(ushort g3val)
|
||||
{0xB7, "x"},
|
||||
{0xB8, "y"},
|
||||
{0xB9, "z"},
|
||||
{0xE0, "’"},
|
||||
{0xE1, "{"}, /* Pk */
|
||||
{0xE2, "}"}, /* Mn */
|
||||
{0xE3, "-"},
|
||||
{0xE6, "?"},
|
||||
{0xE7, "!"},
|
||||
{0xE8, "."}, // Alias decimal point to .
|
||||
{0xEF, "♂"},
|
||||
{0xF2, "."},
|
||||
{0xF3, "/"},
|
||||
@@ -1782,6 +1799,8 @@ public static ushort getG4Item(ushort g3val)
|
||||
{"x", 0xB7},
|
||||
{"y", 0xB8},
|
||||
{"z", 0xB9},
|
||||
{"'", 0xE0}, // Alias ' to ’ for Farfetch'd
|
||||
{"’", 0xE0},
|
||||
{"{", 0xE1}, /* Pk */
|
||||
{"}", 0xE2}, /* Mn */
|
||||
{"-", 0xE3},
|
||||
@@ -1961,7 +1980,17 @@ public static ushort getG4Item(ushort g3val)
|
||||
{"ー", 0xE3},
|
||||
{"ァ", 0xE9},
|
||||
{"♂", 0xEF},
|
||||
{"♀", 0xF5}
|
||||
{"♀", 0xF5},
|
||||
{"0", 0xF6},
|
||||
{"1", 0xF7},
|
||||
{"2", 0xF8},
|
||||
{"3", 0xF9},
|
||||
{"4", 0xFA},
|
||||
{"5", 0xFB},
|
||||
{"6", 0xFC},
|
||||
{"7", 0xFD},
|
||||
{"8", 0xFE},
|
||||
{"9", 0xFF}
|
||||
};
|
||||
|
||||
private static Dictionary<byte, string> RBY2U_J => new Dictionary<byte, string> {
|
||||
@@ -2117,29 +2146,20 @@ public static ushort getG4Item(ushort g3val)
|
||||
{0xE3, "ー"},
|
||||
{0xE9, "ァ"},
|
||||
{0xEF, "♂"},
|
||||
{0xF5, "♀"}
|
||||
{0xF5, "♀"},
|
||||
{0xF6, "0"},
|
||||
{0xF7, "1"},
|
||||
{0xF8, "2"},
|
||||
{0xF9, "3"},
|
||||
{0xFA, "4"},
|
||||
{0xFB, "5"},
|
||||
{0xFC, "6"},
|
||||
{0xFD, "7"},
|
||||
{0xFE, "8"},
|
||||
{0xFF, "9"}
|
||||
};
|
||||
#endregion
|
||||
|
||||
#region Gen 1 Item Table
|
||||
public static string[] getG1ItemList()
|
||||
{
|
||||
return new[] { "(None)", "Master Ball", "Ultra Ball", "Great Ball", "Poké Ball", "Town Map", "Bicycle", "????? (7)", "Safari Ball", "Pokédex", "Moon Stone", "Antidote", "Burn Heal", "Ice Heal", "Awakening", "Parlyz Heal", "Full Restore", "Max Potion", "Hyper Potion", "Super Potion", "Potion", "BoulderBadge", "CascadeBadge", "ThunderBadge", "RainbowBadge", "SoulBadge", "MarshBadge", "VolcanoBadge", "EarthBadge", "Escape Rope", "Repel", "Old Amber", "Fire Stone", "Thunder Stone", "Water Stone", "HP Up", "Protein", "Iron", "Carbos", "Calcium", "Rare Candy", "Dome Fossil", "Helix Fossil", "Secret Key", "????? (44)", "Bike Voucher", "X Accuracy", "Leaf Stone", "Card Key", "Nugget", "PP Up (Unused)", "Poké Doll", "Full Heal", "Revive", "Max Revive", "Guard Spec.", "Super Repel", "Max Repel", "Dire Hit", "Coin", "Fresh Water", "Soda Pop", "Lemonade", "S.S. Ticket", "Gold Teeth", "X Attack", "X Defend", "X Speed", "X Special", "Coin Case", "Oak's Parcel", "Itemfinder", "Silph Scope", "Poké Flute", "Lift Key", "Exp. All", "Old Rod", "Good Rod", "Super Rod", "PP Up", "Ether", "Max Ether", "Elixer", "Max Elixer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "HM01", "HM02", "HM03", "HM04", "HM05", "TM01", "TM02", "TM03", "TM04", "TM05", "TM06", "TM07", "TM08", "TM09", "TM10", "TM11", "TM12", "TM13", "TM14", "TM15", "TM16", "TM17", "TM18", "TM19", "TM20", "TM21", "TM22", "TM23", "TM24", "TM25", "TM26", "TM27", "TM28", "TM29", "TM30", "TM31", "TM32", "TM33", "TM34", "TM35", "TM36", "TM37", "TM38", "TM39", "TM40", "TM41", "TM42", "TM43", "TM44", "TM45", "TM46", "TM47", "TM48", "TM49", "TM50", "TM51", "TM52", "TM53", "TM54", "TM55" };
|
||||
}
|
||||
|
||||
#endregion
|
||||
public static int[] getG1LegalItems()
|
||||
{
|
||||
return Enumerable.Range(0, 7) // 0-6
|
||||
.Concat(Enumerable.Range(10, 11)) // 10-20
|
||||
.Concat(Enumerable.Range(29, 15)) // 29-43
|
||||
.Concat(Enumerable.Range(45, 5)) // 45-49
|
||||
.Concat(Enumerable.Range(51, 8)) // 51-58
|
||||
.Concat(Enumerable.Range(60, 24)) // 60-83
|
||||
.Concat(Enumerable.Range(196, 54)) // 196-249
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
public static int getG1Species(int raw_id)
|
||||
{
|
||||
int[] table = { 0x00, 0x70, 0x73, 0x20, 0x23, 0x15, 0x64, 0x22, 0x50, 0x02, 0x67, 0x6C, 0x66, 0x58, 0x5E, 0x1D, 0x1F, 0x68, 0x6F, 0x83, 0x3B, 0x97, 0x82, 0x5A, 0x48, 0x5C, 0x7B, 0x78, 0x09, 0x7F, 0x72, 0x00, 0x00, 0x3A, 0x5F, 0x16, 0x10, 0x4F, 0x40, 0x4B, 0x71, 0x43, 0x7A, 0x6A, 0x6B, 0x18, 0x2F, 0x36, 0x60, 0x4C, 0x00, 0x7E, 0x00, 0x7D, 0x52, 0x6D, 0x00, 0x38, 0x56, 0x32, 0x80, 0x00, 0x00, 0x00, 0x53, 0x30, 0x95, 0x00, 0x00, 0x00, 0x54, 0x3C, 0x7C, 0x92, 0x90, 0x91, 0x84, 0x34, 0x62, 0x00, 0x00, 0x00, 0x25, 0x26, 0x19, 0x1A, 0x00, 0x00, 0x93, 0x94, 0x8C, 0x8D, 0x74, 0x75, 0x00, 0x00, 0x1B, 0x1C, 0x8A, 0x8B, 0x27, 0x28, 0x85, 0x88, 0x87, 0x86, 0x42, 0x29, 0x17, 0x2E, 0x3D, 0x3E, 0x0D, 0x0E, 0x0F, 0x00, 0x55, 0x39, 0x33, 0x31, 0x57, 0x00, 0x00, 0x0A, 0x0B, 0x0C, 0x44, 0x00, 0x37, 0x61, 0x2A, 0x96, 0x8F, 0x81, 0x00, 0x00, 0x59, 0x00, 0x63, 0x5B, 0x00, 0x65, 0x24, 0x6E, 0x35, 0x69, 0x00, 0x5D, 0x3F, 0x41, 0x11, 0x12, 0x79, 0x01, 0x03, 0x49, 0x00, 0x76, 0x77, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x4E, 0x13, 0x14, 0x21, 0x1E, 0x4A, 0x89, 0x8E, 0x00, 0x51, 0x00, 0x00, 0x04, 0x07, 0x05, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x2C, 0x2D, 0x45, 0x46, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX
|
||||
@@ -30,6 +31,7 @@ public class ShowdownSet
|
||||
public int[] EVs;
|
||||
public int[] IVs;
|
||||
public int[] Moves;
|
||||
public readonly List<string> InvalidLines = new List<string>();
|
||||
|
||||
// Parsing Utility
|
||||
public ShowdownSet(string input = null)
|
||||
@@ -118,7 +120,10 @@ public ShowdownSet(string input = null)
|
||||
{
|
||||
string type = moveString.Remove(0, 13).Replace("[", "").Replace("]", ""); // Trim out excess data
|
||||
int hpVal = Array.IndexOf(hptypes, type); // Get HP Type
|
||||
if (hpVal >= 0) IVs = PKX.setHPIVs(hpVal, IVs); // Get IVs
|
||||
if (hpVal >= 0)
|
||||
IVs = PKX.setHPIVs(hpVal, IVs); // Get IVs
|
||||
else
|
||||
InvalidLines.Add($"Invalid Hidden Power Type: {type}");
|
||||
}
|
||||
moveString = "Hidden Power";
|
||||
}
|
||||
@@ -136,20 +141,45 @@ public ShowdownSet(string input = null)
|
||||
case "Level": { Level = Util.ToInt32(brokenline[1]); break; }
|
||||
case "Shiny": { Shiny = brokenline[1] == "Yes"; break; }
|
||||
case "Happiness": { Friendship = Util.ToInt32(brokenline[1]); break; }
|
||||
case "Nature": { Nature = Array.IndexOf(natures, brokenline[1]); break; }
|
||||
case "EVs":
|
||||
{
|
||||
// Get EV list String
|
||||
string[] evlist = brokenline[1].Replace("SAtk", "SpA").Replace("SDef", "SpD").Replace("Spd", "Spe").Split(new[] { " / ", " " }, StringSplitOptions.None);
|
||||
for (int i = 0; i < evlist.Length / 2; i++)
|
||||
EVs[Array.IndexOf(StatNames, evlist[1 + i * 2])] = (byte)Util.ToInt32(evlist[0 + 2 * i]);
|
||||
string[] evlist = brokenline[1]
|
||||
// Because people think they can type sets out...
|
||||
.Replace("SAtk", "SpA").Replace("Sp Atk", "SpA")
|
||||
.Replace("SDef", "SpD").Replace("Sp Def", "SpD")
|
||||
.Replace("Spd", "Spe").Replace("Speed", "Spe").Split(new[] { " / ", " " }, StringSplitOptions.None);
|
||||
for (int i = 0; i < evlist.Length/2; i++)
|
||||
{
|
||||
ushort EV;
|
||||
ushort.TryParse(evlist[i * 2 + 0], out EV);
|
||||
int index = Array.IndexOf(StatNames, evlist[i*2 + 1]);
|
||||
if (index > -1)
|
||||
EVs[index] = EV;
|
||||
else
|
||||
InvalidLines.Add($"Unknown EV Type input: {evlist[i*2]}");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "IVs":
|
||||
{
|
||||
// Get IV list String
|
||||
string[] ivlist = brokenline[1].Split(new[] { " / ", " " }, StringSplitOptions.None);
|
||||
for (int i = 0; i < ivlist.Length / 2; i++)
|
||||
IVs[Array.IndexOf(StatNames, ivlist[1 + i * 2])] = (byte)Util.ToInt32(ivlist[0 + 2 * i]);
|
||||
string[] ivlist = brokenline[1]
|
||||
// Because people think they can type sets out...
|
||||
.Replace("SAtk", "SpA").Replace("Sp Atk", "SpA")
|
||||
.Replace("SDef", "SpD").Replace("Sp Def", "SpD")
|
||||
.Replace("Spd", "Spe").Replace("Speed", "Spe").Split(new[] { " / ", " " }, StringSplitOptions.None);
|
||||
for (int i = 0; i < ivlist.Length/2; i++)
|
||||
{
|
||||
byte IV;
|
||||
byte.TryParse(ivlist[i*2 + 0], out IV);
|
||||
int index = Array.IndexOf(StatNames, ivlist[i*2 + 1]);
|
||||
if (index > -1)
|
||||
IVs[index] = IV;
|
||||
else
|
||||
InvalidLines.Add($"Unknown IV Type input: {ivlist[i * 2]}");
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -185,6 +215,7 @@ public ShowdownSet(string input = null)
|
||||
)
|
||||
{
|
||||
string[] tmp = spec.Split(new[] { "-" }, StringSplitOptions.None);
|
||||
if (tmp.Length < 2) return;
|
||||
Species = Array.IndexOf(species, tmp[0].Replace(" ", ""));
|
||||
Form = tmp[1].Trim();
|
||||
if (tmp.Length > 2)
|
||||
@@ -194,7 +225,13 @@ public ShowdownSet(string input = null)
|
||||
else if (brokenline[0].Contains("Nature"))
|
||||
Nature = Array.IndexOf(natures, line.Split(' ')[0]);
|
||||
else // Fallback
|
||||
Species = Array.IndexOf(species, line.Split('(')[0]);
|
||||
{
|
||||
int spec = Array.IndexOf(species, line.Split('(')[0]);
|
||||
if (spec > 0)
|
||||
Species = spec;
|
||||
else
|
||||
InvalidLines.Add(line);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -206,9 +243,9 @@ public string getText()
|
||||
return "";
|
||||
|
||||
// First Line: Name, Nickname, Gender, Item
|
||||
string result = string.Format(species[Species] != Nickname ? "{0} ({1})" : "{1}", Nickname,
|
||||
string result = string.Format(Nickname != null && species[Species] != Nickname ? "{0} ({1})" : "{1}", Nickname,
|
||||
species[Species] + ((Form ?? "") != "" ? "-" + Form?.Replace("Mega ", "Mega-") : "")) // Species (& Form if necessary)
|
||||
+ Gender + (Item != 0 ? " @ " + items[Item] : "") + Environment.NewLine;
|
||||
+ Gender + (Item > 0 ? " @ " + items[Item] : "") + Environment.NewLine;
|
||||
|
||||
// IVs
|
||||
string[] ivstr = new string[6];
|
||||
@@ -235,12 +272,14 @@ public string getText()
|
||||
result += "EVs: " + string.Join(" / ", evstr.Take(evctr)) + Environment.NewLine;
|
||||
|
||||
// Secondary Stats
|
||||
result += "Ability: " + abilities[Ability] + Environment.NewLine;
|
||||
if (Ability > -1)
|
||||
result += "Ability: " + abilities[Ability] + Environment.NewLine;
|
||||
result += "Level: " + Level + Environment.NewLine;
|
||||
if (Shiny)
|
||||
result += "Shiny: Yes" + Environment.NewLine;
|
||||
|
||||
result += natures[Nature] + " Nature" + Environment.NewLine;
|
||||
if (Nature > -1)
|
||||
result += natures[Nature] + " Nature" + Environment.NewLine;
|
||||
// Add in Moves
|
||||
string[] MoveLines = new string[Moves.Length];
|
||||
int movectr = 0;
|
||||
|
||||
80
PKHeX/PersonalInfo/PersonalInfoG2.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public class PersonalInfoG2 : PersonalInfo
|
||||
{
|
||||
protected PersonalInfoG2() { }
|
||||
public const int SIZE = 0x20;
|
||||
public PersonalInfoG2(byte[] data)
|
||||
{
|
||||
if (data.Length != SIZE)
|
||||
return;
|
||||
|
||||
Data = data;
|
||||
TMHM = getBits(Data.Skip(0x18).Take(0x8).ToArray());
|
||||
}
|
||||
public override byte[] Write()
|
||||
{
|
||||
setBits(TMHM).CopyTo(Data, 0x18);
|
||||
return Data;
|
||||
}
|
||||
|
||||
public int DEX_ID { get { return Data[0x00]; } set { Data[0x00] = (byte)value; } }
|
||||
public override int HP { get { return Data[0x01]; } set { Data[0x01] = (byte)value; } }
|
||||
public override int ATK { get { return Data[0x02]; } set { Data[0x02] = (byte)value; } }
|
||||
public override int DEF { get { return Data[0x03]; } set { Data[0x03] = (byte)value; } }
|
||||
public override int SPE { get { return Data[0x04]; } set { Data[0x04] = (byte)value; } }
|
||||
public override int SPA { get { return Data[0x05]; } set { Data[0x05] = (byte)value; } }
|
||||
public override int SPD { get { return Data[0x06]; } set { Data[0x06] = (byte)value; } }
|
||||
public override int[] Types
|
||||
{
|
||||
get { return new int[] { Data[0x07], Data[0x08] }; }
|
||||
set
|
||||
{
|
||||
if (value?.Length != 2) return;
|
||||
Data[0x07] = (byte)value[0];
|
||||
Data[0x08] = (byte)value[1];
|
||||
}
|
||||
}
|
||||
public override int CatchRate { get { return Data[0x09]; } set { Data[0x09] = (byte)value; } }
|
||||
public override int BaseEXP { get { return Data[0x0A]; } set { Data[0x0A] = (byte)value; } }
|
||||
|
||||
public override int[] Items
|
||||
{
|
||||
get { return new int[] { Data[0xB], Data[0xC] }; }
|
||||
set
|
||||
{
|
||||
if (value?.Length != 2) return;
|
||||
Data[0xB] = (byte) value[0];
|
||||
Data[0xC] = (byte) value[1];
|
||||
}
|
||||
}
|
||||
public override int Gender { get { return Data[0xD]; } set { Data[0xD] = (byte)value; } }
|
||||
public override int HatchCycles { get { return Data[0xF]; } set { Data[0xF] = (byte)value; } }
|
||||
public override int EXPGrowth { get { return Data[0x16]; } set { Data[0x16] = (byte)value; } }
|
||||
public override int[] EggGroups
|
||||
{
|
||||
get { return new[] { Data[0x17] >> 4, Data[0x17] & 0xF }; }
|
||||
set
|
||||
{
|
||||
if (value?.Length != 2) return;
|
||||
Data[0x17] = (byte)(((value[0] & 0xF) << 4) | (value[1] & 0xF));
|
||||
}
|
||||
}
|
||||
|
||||
// EV Yields are just aliases for base stats in Gen I
|
||||
public override int EV_HP { get { return HP; } set { } }
|
||||
public override int EV_ATK { get { return ATK; } set { } }
|
||||
public override int EV_DEF { get { return DEF; } set { } }
|
||||
public override int EV_SPE { get { return SPE; } set { } }
|
||||
public override int EV_SPA { get { return SPA; } set { } }
|
||||
public override int EV_SPD { get { return SPD; } set { } }
|
||||
|
||||
// Future game values, unused
|
||||
public override int[] Abilities { get { return new[] { 0, 0 }; } set { } }
|
||||
public override int BaseFriendship { get { return 70; } set { } }
|
||||
public override int EscapeRate { get { return 0; } set { } }
|
||||
public override int Color { get { return 0; } set { } }
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,8 @@ public class PersonalTable
|
||||
internal static readonly PersonalTable FR = new PersonalTable(Properties.Resources.personal_fr, GameVersion.FR);
|
||||
internal static readonly PersonalTable E = new PersonalTable(Properties.Resources.personal_e, GameVersion.E);
|
||||
internal static readonly PersonalTable RS = new PersonalTable(Properties.Resources.personal_rs, GameVersion.RS);
|
||||
internal static readonly PersonalTable C = new PersonalTable(Properties.Resources.personal_c, GameVersion.C);
|
||||
internal static readonly PersonalTable GS = new PersonalTable(Properties.Resources.personal_c, GameVersion.GS);
|
||||
internal static readonly PersonalTable RBY = new PersonalTable(Properties.Resources.personal_rby, GameVersion.RBY);
|
||||
|
||||
private static byte[][] splitBytes(byte[] data, int size)
|
||||
@@ -33,6 +35,8 @@ private PersonalTable(byte[] data, GameVersion format)
|
||||
switch (format)
|
||||
{
|
||||
case GameVersion.RBY: size = PersonalInfoG1.SIZE; break;
|
||||
case GameVersion.GS:
|
||||
case GameVersion.C: size = PersonalInfoG2.SIZE; break;
|
||||
case GameVersion.RS:
|
||||
case GameVersion.E:
|
||||
case GameVersion.FR:
|
||||
@@ -58,6 +62,11 @@ private PersonalTable(byte[] data, GameVersion format)
|
||||
for (int i = 0; i < d.Length; i++)
|
||||
d[i] = new PersonalInfoG1(entries[i]);
|
||||
break;
|
||||
case GameVersion.GS:
|
||||
case GameVersion.C:
|
||||
for (int i = 0; i < d.Length; i++)
|
||||
d[i] = new PersonalInfoG2(entries[i]);
|
||||
break;
|
||||
case GameVersion.RS:
|
||||
case GameVersion.E:
|
||||
case GameVersion.FR:
|
||||
|
||||
1090
PKHeX/Properties/Resources.Designer.cs
generated
@@ -6397,4 +6397,55 @@
|
||||
<data name="personal_rby" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\resources\byte\personal_rby;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="text_gsc_00000_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_gsc_00000_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_ItemsG1_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG1_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="personal_c" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\resources\byte\personal_c;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="personal_gs" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\resources\byte\personal_gs;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="text_ItemsG2_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\resources\text\gen3\text_itemsg2_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="_172_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\img\Pokemon Sprites\172_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="gift" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\img\Program\gift.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="text_gsc_00000_es" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_gsc_00000_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_gsc_00000_zh" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_gsc_00000_zh.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_ItemsG1_es" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG1_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_ItemsG1_zh" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG1_zh.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_ItemsG2_es" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG2_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="text_ItemsG2_zh" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG2_zh.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||
</data>
|
||||
<data name="text_ItemsG3_es" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG3_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_ItemsG3_zh" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_ItemsG3_zh.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_rsefrlg_00000_es" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_rsefrlg_00000_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
<data name="text_rsefrlg_00000_zh" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\text\gen3\text_rsefrlg_00000_zh.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
PKHeX/Resources/byte/personal_c
Normal file
BIN
PKHeX/Resources/byte/personal_gs
Normal file
|
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 291 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 257 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 286 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 1013 B |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 999 B |
|
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 1.0 KiB |
BIN
PKHeX/Resources/img/Pokemon Sprites/172_1.png
Normal file
|
After Width: | Height: | Size: 383 B |
BIN
PKHeX/Resources/img/Program/gift.png
Normal file
|
After Width: | Height: | Size: 617 B |
@@ -21,7 +21,7 @@ Menu_Open = Open...
|
||||
Menu_Save = Save PKM...
|
||||
Menu_ExportSAV = Export SAV...
|
||||
Menu_ExportMAIN = Export main
|
||||
Menu_ExportBAK = Export BAK
|
||||
Menu_ExportBAK = Export Backup
|
||||
Menu_Exit = Quit
|
||||
--
|
||||
Menu_Tools = Tools
|
||||
@@ -38,6 +38,8 @@ Menu_LoadBoxes = Load Boxes
|
||||
Menu_DumpBoxes = Dump Boxes
|
||||
Menu_Report = Box Data Report
|
||||
Menu_Database = PKM Database
|
||||
Menu_MGDatabase = Mystery Gift Database
|
||||
Menu_BatchEditor = Batch Editor
|
||||
Menu_Other = Other
|
||||
Menu_OpenSDF = Open SaveDataFiler Folder
|
||||
Menu_OpenSDB = Open SaveDataBackup Folder
|
||||
@@ -92,6 +94,7 @@ Label_EggLocation = Location:
|
||||
Label_EggDate = Date:
|
||||
--------------------Stats Tab Data----------------------
|
||||
Tab_Stats = Stats
|
||||
CHK_HackedStats = Hacked Stats
|
||||
Label_IVs = IVs
|
||||
Label_EVs = EVs
|
||||
Label_Stats = Stats
|
||||
@@ -101,6 +104,7 @@ Label_DEF = Def:
|
||||
Label_SPA = SpA:
|
||||
Label_SPD = SpD:
|
||||
Label_SPE = Spe:
|
||||
Label_SPC = SpC:
|
||||
Label_Total = Total:
|
||||
Label_HiddenPowerPrefix = Hidden Power Type:
|
||||
Label_CharacteristicPrefix = Characteristic:
|
||||
@@ -144,15 +148,18 @@ B_OpenItemPouch = Items
|
||||
B_OpenTrainerInfo = Trainer Info
|
||||
B_OUTPasserby = Passerby
|
||||
B_OpenBoxLayout = Box Layout
|
||||
B_OpenWondercards = WonderCard
|
||||
B_OpenWondercards = Mystery Gift
|
||||
B_OpenSuperTraining = Super Train
|
||||
B_OpenHallofFame = Hall of Fame
|
||||
B_OpenOPowers = O-Powers
|
||||
B_OpenEventFlags = Event Flags
|
||||
B_OpenPokedex = Pokédex
|
||||
B_OpenBerryField = Berry Field
|
||||
B_OpenPokeBlocks = Pokéblocks
|
||||
B_OpenLinkInfo = Link Data
|
||||
--
|
||||
B_OpenSecretBase = Secret Base
|
||||
B_CGearSkin = C-Gear Skin
|
||||
--------------------Tab Internals-----------------------
|
||||
L_Party = Party:
|
||||
L_BattleBox = Battle Box:
|
||||
@@ -363,6 +370,66 @@ L_Arguments = Disabled ; Never left ; OT ; Past Gen ; Memories with ; Pokémon ;
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_PokeBlockORAS = Pokéblock Editor
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Red = Red Pokéblocks:
|
||||
L_Blue = Blue Pokéblocks:
|
||||
L_Pink = Pink Pokéblocks:
|
||||
L_Green = Green Pokéblocks:
|
||||
L_Yellow = Yellow Pokéblocks:
|
||||
L_Rainbow = Rainbow Pokéblocks:
|
||||
L_Red = Red Pokéblocks +:
|
||||
L_Blue = Blue Pokéblocks +:
|
||||
L_Pink = Pink Pokéblocks +:
|
||||
L_Green = Green Pokéblocks +:
|
||||
L_Yellow = Yellow Pokéblocks +:
|
||||
L_Rainbow = Rainbow Pokéblocks +:
|
||||
B_RandomizeBerries = Randomize Berries
|
||||
B_GiveAllBlocks = Give All Blocks
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Link6 = Pokémon Link Tool
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
TAB_Main = Main
|
||||
TAB_PKM = Pokémon
|
||||
TAB_Items = Items
|
||||
L_BP = Battle Points:
|
||||
L_Pokemiles: PokéMiles
|
||||
CHK_LinkAvailable = Pokémon Link Enabled
|
||||
B_Import = Import
|
||||
B_Export = Export
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
L_Item1 = Item 1:
|
||||
L_Item2 = Item 2:
|
||||
L_Item3 = Item 3:
|
||||
L_Item4 = Item 4:
|
||||
L_Item5 = Item 5:
|
||||
L_Item6 = Item 6:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SuperTrain = Super Training Records
|
||||
- Change stuff below this line, not above.
|
||||
----------------------Buttons--------------------------
|
||||
L_Records = Records
|
||||
L_Bags = Training Bags
|
||||
L_Species = Species:
|
||||
L_Unk = L_Unk
|
||||
L_Time0 = Time:
|
||||
L_Time1 = Time1
|
||||
L_Time2 = Time2
|
||||
L_UNKNOWN = UNKNOWN
|
||||
L_Species2 = Species
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_BerryField = Berry Field Viewer
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
@@ -525,13 +592,14 @@ B_Cancel = Cancel
|
||||
- Change stuff below this line, not above.
|
||||
------------------------------------------------------
|
||||
L_goto = goto:
|
||||
GB_Owned = Owned
|
||||
CHK_P1 = Obtained
|
||||
GB_Owned = Seen
|
||||
CHK_P2 = Male
|
||||
CHK_P3 = Female
|
||||
CHK_P4 = Shiny Male
|
||||
CHK_P5 = Shiny Female
|
||||
GB_Encountered = Encountered
|
||||
GB_Owned = Owned
|
||||
CHK_P1 = Obtained
|
||||
GB_Displayed = Displayed
|
||||
CHK_P6 = Male
|
||||
CHK_P7 = Female
|
||||
CHK_P8 = Shiny Male
|
||||
@@ -606,6 +674,7 @@ Label_EncryptionConstant = Encryption Constant:
|
||||
CHK_Nicknamed = Nickname:
|
||||
Label_Species = Species:
|
||||
L_PartyNum = Party Index:
|
||||
B_Delete = Delete
|
||||
B_Close = Save
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
@@ -613,12 +682,7 @@ B_Close = Save
|
||||
! SAV_Inventory = Inventory Editor
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
GB_Pouch = Pouches
|
||||
B_DisplayBerries = Berry
|
||||
B_DisplayMedicine = Medicine
|
||||
B_DisplayTMHM = TM/HM
|
||||
B_DisplayKeyItems = Key Items
|
||||
B_DisplayItems = Items
|
||||
B_GiveAll = Give All
|
||||
B_Save = Save
|
||||
B_Cancel = Cancel
|
||||
! End
|
||||
@@ -723,14 +787,20 @@ L_PPUps = PPUps
|
||||
-------------------------------------------------------
|
||||
Tab_Multiplayer = Multiplayer
|
||||
L_MultiplayerSprite = Multiplayer Sprite:
|
||||
L_Style = Style:
|
||||
GB_Sayings = Saved Sayings
|
||||
L_Saying1 = 1:
|
||||
L_Saying2 = 2:
|
||||
L_Saying3 = 3:
|
||||
L_Saying4 = 4:
|
||||
L_Saying5 = 5:
|
||||
--
|
||||
Tab_BadgeMap = Badges/Map
|
||||
GB_Map = Map Position
|
||||
L_CurrentMap = Current Map:
|
||||
L_X = X Coordinate:
|
||||
L_Z = Z Coordinate:
|
||||
L_Y = Y Coordinate:
|
||||
L_Offset = (offset)
|
||||
--
|
||||
Tab_Appearance = Current Appearance (X/Y)
|
||||
L_Outfit = Outfit Vals
|
||||
B_GiveAccessories = Give All Accessories
|
||||
@@ -745,6 +815,8 @@ L_FacialHair = Facial Hair:
|
||||
L_Hairstyle = Hairstyle:
|
||||
L_HairColor = Hair Color:
|
||||
L_SkinColor = Skin Color:
|
||||
--
|
||||
Tab_Maison = Maison
|
||||
GB_MaisonCurrent = Maison Streaks (Current)
|
||||
L_SuperC = Super
|
||||
L_NormalC = Normal
|
||||
@@ -764,32 +836,35 @@ L_SinglesB = Singles:
|
||||
B_Save = Save
|
||||
L_Stats = Stats
|
||||
B_Cancel = Cancel
|
||||
--
|
||||
Tab_Overview = Overview
|
||||
L_Seconds = Sec:
|
||||
L_Minutes = Min:
|
||||
L_Hours = Hrs:
|
||||
L_TrainerName = Trainer Name:
|
||||
L_Language = Language:
|
||||
L_PM = PokéMiles:
|
||||
L_Region = Region:
|
||||
L_BP = BP:
|
||||
L_Country = Country:
|
||||
B_MaxCash = +
|
||||
L_3DSReg = 3DS Region:
|
||||
L_Money = $:
|
||||
L_SID = SID:
|
||||
L_TID = TID:
|
||||
L_TrainerName = Trainer Name:
|
||||
L_SID = SID:
|
||||
-
|
||||
GB_Adventure = Adventure Info
|
||||
L_Seconds = Sec:
|
||||
L_Minutes = Min:
|
||||
L_Hours = Hrs:
|
||||
L_Started = Game Started:
|
||||
L_Fame = HoF Entered:
|
||||
L_LastSaved = Last Saved:
|
||||
-
|
||||
L_PM = PokéMiles:
|
||||
L_BP = BP:
|
||||
L_Style = Style:
|
||||
L_Value = Value
|
||||
GB_Sayings = Saved Sayings
|
||||
L_Saying1 = 1:
|
||||
L_Saying2 = 2:
|
||||
L_Saying3 = 3:
|
||||
L_Saying4 = 4:
|
||||
L_Saying5 = 5:
|
||||
L_Offset = (offset)
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Wondercard = Wonder Card I/O
|
||||
! SAV_Wondercard = Mystery Gift I/O
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Details = Details:
|
||||
|
||||
@@ -38,6 +38,8 @@ Menu_LoadBoxes = Cargar Cajas
|
||||
Menu_DumpBoxes = Exportar Cajas
|
||||
Menu_Report = Informe de la caja
|
||||
Menu_Database = Base de datos de PKM
|
||||
Menu_MGDatabase = Base de datos de regalo misterioso
|
||||
Menu_BatchEditor = Editor por lotes
|
||||
Menu_Other = Otro
|
||||
Menu_OpenSDF = Abrir carpeta SaveDataFiler
|
||||
Menu_OpenSDB = Abrir carpeta SaveDataBackup
|
||||
@@ -76,6 +78,8 @@ Label_PKRSdays = d:
|
||||
Label_Country = País:
|
||||
Label_SubRegion = Subregión:
|
||||
Label_3DSRegion = Región 3DS:
|
||||
L_NSparkle = Brillo de N
|
||||
CHK_NSparkle = Activo
|
||||
---------------------Met Tab Data-----------------------
|
||||
Tab_Met = Conocido
|
||||
Label_OriginGame = Juego Original:
|
||||
@@ -92,15 +96,17 @@ Label_EggLocation = Lugar:
|
||||
Label_EggDate = Fecha:
|
||||
--------------------Stats Tab Data----------------------
|
||||
Tab_Stats = Estadísticas
|
||||
CHK_HackedStats = Estadísticas Hackeadas
|
||||
Label_IVs = IVs
|
||||
Label_EVs = EVs
|
||||
Label_Stats = Estad.
|
||||
Label_Stats = Esta.
|
||||
Label_HP = PS:
|
||||
Label_ATK = Atq:
|
||||
Label_DEF = Def:
|
||||
Label_SPA = Atq E:
|
||||
Label_SPD = Def E:
|
||||
Label_SPE = Velo:
|
||||
Label_ATK = Ataque:
|
||||
Label_DEF = Defensa:
|
||||
Label_SPA = Atq. Esp.:
|
||||
Label_SPD = Def. Esp.:
|
||||
Label_SPE = Velocidad:
|
||||
Label_SPC = Especial:
|
||||
Label_Total = Total:
|
||||
Label_HiddenPowerPrefix = Tipo del Poder Oculto:
|
||||
Label_CharacteristicPrefix = Características:
|
||||
@@ -142,34 +148,37 @@ Tab_SAV = SAV
|
||||
B_OpenPokePuffs = Pokélito
|
||||
B_OpenItemPouch = Inventario
|
||||
B_OpenTrainerInfo = Entrenador
|
||||
B_OUTPasserby = Transeúntes
|
||||
B_OpenBoxLayout = Fondos Cajas
|
||||
B_OpenWondercards = Tarjetas Misteriosas
|
||||
B_OpenBerryField = C. de Bayas
|
||||
B_OpenSuperTraining = Superentren.
|
||||
B_OpenHallofFame = Hall de la fama
|
||||
B_OpenOPowers = Poder O
|
||||
B_OpenEventFlags = Eventos
|
||||
B_OpenPokedex = Pokédex
|
||||
B_OpenSuperTraining = Superentren.
|
||||
B_OpenBerryField = C. de Bayas
|
||||
B_OpenPokeBlocks = Pokécubos
|
||||
B_OpenLinkInfo = Datos Enlace
|
||||
--
|
||||
B_OpenSecretBase = Base Secreta
|
||||
B_CGearSkin = C-Gear
|
||||
--------------------Tab Internals-----------------------
|
||||
L_Party = Equipo:
|
||||
L_BattleBox = Caja de Combate:
|
||||
L_ReadOnlyPBB = Sólo leer.
|
||||
L_ReadOnlyPBB = Sólo lectura.
|
||||
GB_Daycare = Guardería
|
||||
GB_GTS = GTS
|
||||
GB_Fused = Fusionado
|
||||
GB_Fused = Fusión
|
||||
GB_SUBE = Viejo
|
||||
DayCare_HasEgg = Huevo Disponible
|
||||
L_DaycareSeed = Seed
|
||||
L_ReadOnlyOther = Sólo leer.
|
||||
L_DaycareSeed = Semill.
|
||||
L_ReadOnlyOther = Sólo lectura.
|
||||
B_JPEG = Guardar PGL .JPEG
|
||||
B_OpenHallofFame = Hall de la fama
|
||||
B_OUTPasserby = Transeúntes
|
||||
B_VerifyCHK = Checksums
|
||||
B_SaveBoxBin = Save Box Data++
|
||||
L_GameSync = Game Sync ID:
|
||||
L_Secure1 = Secure Value 1:
|
||||
L_Secure2 = Secure Value 2:
|
||||
B_SaveBoxBin = Guardar Cajas++
|
||||
L_GameSync = ID de Sincronización:
|
||||
L_Secure1 = Valor Seguro 1:
|
||||
L_Secure2 = Valor Seguro 2:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
@@ -293,23 +302,23 @@ B_Save = Guardar
|
||||
------------------Super Training-----------------------
|
||||
CHK_SuperTraining = Superentrenamiento Normal
|
||||
CHK_SuperTrain1_HP = Nv. 1: PS
|
||||
CHK_SuperTrain1_ATK = Nv. 1: Atq
|
||||
CHK_SuperTrain1_DEF = Nv. 1: Def
|
||||
CHK_SuperTrain1_SPA = Nv. 1: AtE
|
||||
CHK_SuperTrain1_SPD = Nv. 1: DfE
|
||||
CHK_SuperTrain1_SPE = Nv. 1: Vel
|
||||
CHK_SuperTrain1_ATK = Nv. 1: Ataque
|
||||
CHK_SuperTrain1_DEF = Nv. 1: Defensa
|
||||
CHK_SuperTrain1_SPA = Nv. 1: Ataque Especial
|
||||
CHK_SuperTrain1_SPD = Nv. 1: Defensa Especial
|
||||
CHK_SuperTrain1_SPE = Nv. 1: Velocidad
|
||||
CHK_SuperTrain2_HP = Nv. 2: PS
|
||||
CHK_SuperTrain2_ATK = Nv. 2: Atq
|
||||
CHK_SuperTrain2_DEF = Nv. 2: Def
|
||||
CHK_SuperTrain2_SPA = Nv. 2: AtE
|
||||
CHK_SuperTrain2_SPD = Nv. 2: DfE
|
||||
CHK_SuperTrain2_SPE = Nv. 2: Vel
|
||||
CHK_SuperTrain2_ATK = Nv. 2: Ataque
|
||||
CHK_SuperTrain2_DEF = Nv. 2: Defensa
|
||||
CHK_SuperTrain2_SPA = Nv. 2: Ataque Especial
|
||||
CHK_SuperTrain2_SPD = Nv. 2: Defensa Especial
|
||||
CHK_SuperTrain2_SPE = Nv. 2: Velocidad
|
||||
CHK_SuperTrain3_HP = Nv. 3: PS
|
||||
CHK_SuperTrain3_ATK = Nv. 3: Atq
|
||||
CHK_SuperTrain3_DEF = Nv. 3: Def
|
||||
CHK_SuperTrain3_SPA = Nv. 3: AtE
|
||||
CHK_SuperTrain3_SPD = Nv. 3: DfE
|
||||
CHK_SuperTrain3_SPE = Nv. 3: Vel
|
||||
CHK_SuperTrain3_ATK = Nv. 3: Ataque
|
||||
CHK_SuperTrain3_DEF = Nv. 3: Defensa
|
||||
CHK_SuperTrain3_SPA = Nv. 3: Ataque Especial
|
||||
CHK_SuperTrain3_SPD = Nv. 3: Defensa Especial
|
||||
CHK_SuperTrain3_SPE = Nv. 3: Velocidad
|
||||
CHK_SecretUnlocked = Superentrenamiento Desbloqueado
|
||||
CHK_SecretComplete = Superentrenamiento Completa
|
||||
CHK_SuperTrain4_1 = Nv. 4: Dificultad tras otra
|
||||
@@ -330,20 +339,25 @@ L_Hits = Golpes restantes:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! MemoryAmie = Editor de Memorias / Amigos
|
||||
! MemoryAmie = Editor de Memorias / Poké Recreo
|
||||
- Change stuff below this line, not above.
|
||||
---------------------Bottom UI-------------------------
|
||||
BTN_Cancel = Cancelar
|
||||
BTN_Save = Guardar
|
||||
L_Handler = Manejador Actual:
|
||||
L_Handler = Dueño Actual:
|
||||
B_ClearAll = Limpiar todo
|
||||
-
|
||||
Tab_OTMemory = Memorias con: EO
|
||||
L_OT_Friendship = Amistad:
|
||||
L_OT_Affection = Cariño:
|
||||
L_OT_Affection = Afecto:
|
||||
L_OT_TextLine = Tipo Memoria:
|
||||
Tab_CTMemory = Memorias con: noEO
|
||||
L_CT_Friendship = Amistad:
|
||||
L_cT_Affection = Cariño:
|
||||
Tab_Residence = Residencia
|
||||
GB_Residence = El Pokémon ha residido en:
|
||||
L_Enjoyment = Diversión:
|
||||
L_Fullness = Saciedad:
|
||||
--
|
||||
L_Country = País
|
||||
L_Region = Región
|
||||
@@ -353,7 +367,7 @@ L_Geo2 = Anterior 2:
|
||||
L_Geo3 = Anterior 3:
|
||||
L_Geo4 = Anterior 4:
|
||||
--
|
||||
L_Arguments = Disabled ; Never left ; OT ; Past Gen ; Memories with ; Pokémon ; Area ; Item(s) ; Move ; Location ;
|
||||
L_Arguments = Deshabilitado ; Nunca dejado ; EO ; Gen Pas ; Memorias con ; Pokémon ; Área ; Objeto(s) ; Mov. ; Localización ;
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
@@ -364,12 +378,73 @@ L_Arguments = Disabled ; Never left ; OT ; Past Gen ; Memories with ; Pokémon ;
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_PokeBlockORAS = Editor de Pokécubos
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
|
||||
L_Red = Pokécubos Rojos:
|
||||
L_Blue = Pokécubos Azules:
|
||||
L_Pink = Pokécubos Rosas:
|
||||
L_Green = Pokécubos Verdes:
|
||||
L_Yellow = Pokécubos Amarillos:
|
||||
L_Rainbow = Pokécubos Arcoíris:
|
||||
L_Red = Pokécubos Rojos Plus:
|
||||
L_Blue = Pokécubos Azules Plus:
|
||||
L_Pink = Pokécubos Rosas Plus:
|
||||
L_Green = Pokécubos Verdes Plus:
|
||||
L_Yellow = Pokécubos Amarillos Plus:
|
||||
L_Rainbow = Pokécubos Arcoíris Plus:
|
||||
B_RandomizeBerries = PkCubos aleatorios
|
||||
B_GiveAllBlocks = Todos Max
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Link6 = Editor de Enlace de Datos
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
TAB_Main = Inicio
|
||||
TAB_PKM = Pokémon
|
||||
TAB_Items = Objetos
|
||||
L_BP = Ptos Batalla:
|
||||
L_Pokemiles: PokéMillas
|
||||
CHK_LinkAvailable = Habilitar Pokémon Link
|
||||
B_Import = Importar
|
||||
B_Export = Exportar
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
L_Item1 = Objeto 1:
|
||||
L_Item2 = Objeto 2:
|
||||
L_Item3 = Objeto 3:
|
||||
L_Item4 = Objeto 4:
|
||||
L_Item5 = Objeto 5:
|
||||
L_Item6 = Objeto 6:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_SuperTrain = Records de Superentrenamiento
|
||||
- Change stuff below this line, not above.
|
||||
----------------------Buttons--------------------------
|
||||
L_Records = Records
|
||||
L_Bags = Bolsas de Entrenamiento
|
||||
L_Species = Especie:
|
||||
L_Unk = L_Unk
|
||||
L_Time0 = Tiempo:
|
||||
L_Time1 = Tiempo1
|
||||
L_Time2 = Tiempo2
|
||||
L_UNKNOWN = DESCONOCIDO
|
||||
L_Species2 = Especie
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_BerryField = Visor de Campos de Bayas
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Berry = Baya:
|
||||
L_Field = Campo:
|
||||
L_Unfinished = Unfinished: Needs More Research
|
||||
L_Unfinished = Sin acabar: Necesita más investigación
|
||||
L_u1 = 1
|
||||
L_u2 = 2
|
||||
L_u3 = 3
|
||||
@@ -397,7 +472,7 @@ L_BoxName = Nombre de la caja:
|
||||
! SAV_EventFlagsORAS = Editor de Eventos (ORAS)
|
||||
- Change stuff below this line, not above.
|
||||
------------------------------------------------------
|
||||
L_Ash = Asho volcánico:
|
||||
L_Ash = Ceniza volcánica:
|
||||
GB_Misc = Misc
|
||||
flag_0288 = Multi Statuette
|
||||
flag_0287 = Rotation Statuette
|
||||
@@ -412,7 +487,7 @@ flag_0284 = Singles Statuette
|
||||
GB_Rebattle = Rebattle
|
||||
flag_2835 = (AS) Latios Capturado
|
||||
flag_0420 = (AS) Latios Derrotado
|
||||
L_SkyTower = *Sky Tower
|
||||
L_SkyTower = *Torre del Cielo
|
||||
flag_2834 = (OR) Latias Capturado
|
||||
flag_0419 = (OR) Latias Derrotado
|
||||
flag_2828 = (OR) Tornadus Capturado
|
||||
@@ -467,12 +542,12 @@ flag_2831 = (AS) Zekrom Capturado
|
||||
flag_0183 = (AS) Zekrom Derrotado
|
||||
flag_2840 = (AS) Kyogre Capturado
|
||||
flag_0647 = (AS) Kyogre Derrotado
|
||||
GB_Researcher = FlagDiff Researcher
|
||||
GB_Researcher = Investigador de FlagDiff
|
||||
L_UnSet = UnSet
|
||||
L_IsSet = IsSet
|
||||
B_LoadNew = Carg. Nuevo
|
||||
B_LoadOld = Carg. Antiguo
|
||||
GB_FlagStatus = Check Flag Status
|
||||
B_LoadOld = Carg. Antig.
|
||||
GB_FlagStatus = Comprobar Estado de Flags
|
||||
L_Flag = Flag:
|
||||
CHK_CustomFlag = Estado:
|
||||
B_Save = Guardar
|
||||
@@ -501,11 +576,11 @@ flag_0114 = Zygarde Capturado
|
||||
flag_0790 = Zygarde Derrotado
|
||||
flag_0115 = Mewtwo Capturado
|
||||
flag_0963 = Mewtwo Derrotado
|
||||
GB_Researcher = FlagDiff Researcher
|
||||
GB_Researcher = Investigador de FlagDiff
|
||||
L_UnSet = UnSet
|
||||
L_IsSet = IsSet
|
||||
B_LoadNew = Carg. Nuevo
|
||||
B_LoadOld = Carg. Antiguo
|
||||
B_LoadOld = Carg. Antig.
|
||||
flag_2239 = 2239
|
||||
flag_2238 = 2238
|
||||
flag_2237 = 2237
|
||||
@@ -515,7 +590,7 @@ flag_0004 = Flag4
|
||||
flag_0003 = Flag3
|
||||
flag_0002 = Flag2
|
||||
flag_0001 = Flag1
|
||||
GB_FlagStatus = Check Flag Status
|
||||
GB_FlagStatus = Comprobar Estado de Flags
|
||||
L_Flag = Flag:
|
||||
CHK_CustomFlag = Estado:
|
||||
B_Cancel = Cancelar
|
||||
@@ -525,7 +600,7 @@ B_Cancel = Cancelar
|
||||
! SAV_PokedexORAS = Editor de Pokédex (ORAS)
|
||||
- Change stuff below this line, not above.
|
||||
------------------------------------------------------
|
||||
L_goto = goto:
|
||||
L_goto = Ir a:
|
||||
GB_Owned = Obtenido
|
||||
CHK_P1 = Obtenido
|
||||
CHK_P2 = Macho
|
||||
@@ -533,10 +608,14 @@ CHK_P3 = Hembra
|
||||
CHK_P4 = Macho brillante
|
||||
CHK_P5 = Hembra brillante
|
||||
GB_Encountered = Encontrado
|
||||
GB_Displayed = Aparecido
|
||||
CHK_P6 = Macho
|
||||
CHK_P7 = Hembra
|
||||
CHK_P8 = Macho brillante
|
||||
CHK_P9 = Hembra brillante
|
||||
L_FormsSeen = Formas vistas
|
||||
L_FormDisplayed = Formas mostradas
|
||||
B_ModifyForms = Modificar...
|
||||
L_DexNav = Nvl. DexNav:
|
||||
GB_Language = Idiomas
|
||||
CHK_L1 = Japonés
|
||||
@@ -547,7 +626,7 @@ CHK_L5 = Alemán
|
||||
CHK_L6 = Español
|
||||
CHK_L7 = Coreano
|
||||
B_Modify = Modificar...
|
||||
B_GiveAll = Marcar todos
|
||||
B_GiveAll = Todos Max
|
||||
L_Spinda = Spinda:
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
@@ -557,7 +636,7 @@ B_Cancel = Cancelar
|
||||
! SAV_PokedexXY = Editor de Pokédex (XY)
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_goto = ir a:
|
||||
L_goto = Ir a:
|
||||
GB_Owned = Obtenido
|
||||
CHK_F1 = Extranjero (Pre)
|
||||
CHK_P1 = Nativo (Kalos)
|
||||
@@ -566,11 +645,14 @@ CHK_P2 = Macho
|
||||
CHK_P3 = Hembra
|
||||
CHK_P4 = Macho brillante
|
||||
CHK_P5 = Hembra brillante
|
||||
GB_Displayed = Mostrado
|
||||
GB_Displayed = Aparecido
|
||||
CHK_P6 = Macho
|
||||
CHK_P7 = Hembra
|
||||
CHK_P8 = Macho brillante
|
||||
CHK_P9 = Hembra brillante
|
||||
L_FormsSeen = Formas vistas
|
||||
L_FormDisplayed = Formas mostradas
|
||||
B_ModifyForms = Modificar...
|
||||
GB_Language = Idiomas
|
||||
CHK_L1 = Japonés
|
||||
CHK_L2 = Inglés
|
||||
@@ -580,7 +662,7 @@ CHK_L5 = Alemán
|
||||
CHK_L6 = Español
|
||||
CHK_L7 = Coreano
|
||||
B_Modify = Modificar...
|
||||
B_GiveAll = Marcar todos
|
||||
B_GiveAll = Todos Max
|
||||
L_Spinda = Spinda:
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
@@ -607,6 +689,7 @@ Label_EncryptionConstant = Cte. de Encriptación:
|
||||
CHK_Nicknamed = Apodo:
|
||||
Label_Species = Especie:
|
||||
L_PartyNum = N. equipo:
|
||||
B_Delete = Borrar
|
||||
B_Close = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
@@ -614,12 +697,7 @@ B_Close = Guardar
|
||||
! SAV_Inventory = Editor de Inventario
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
GB_Pouch = Pokélitos
|
||||
B_DisplayBerries = Bayas
|
||||
B_DisplayMedicine = Medicinas
|
||||
B_DisplayTMHM = MT/MO
|
||||
B_DisplayKeyItems = Objetos clave
|
||||
B_DisplayItems = Objetos
|
||||
B_GiveAll = Todos Max
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
! End
|
||||
@@ -677,7 +755,7 @@ B_Save = Guardar
|
||||
! SAV_SecretBase = Editor de Bases Secretas
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_FlagsCaptured = Flags Captur.:
|
||||
L_FlagsCaptured = Capturadas:
|
||||
B_FSave = <
|
||||
B_GiveDecor = Marcar Decoraciones
|
||||
B_Cancel = Cancelar
|
||||
@@ -688,10 +766,10 @@ L_Favorite = Favoritos:
|
||||
f_MAIN = Inicio
|
||||
L_TrName = Nombre Ent.:
|
||||
L_BaseLocation = Localización Base:
|
||||
L_Happy = Happy:
|
||||
L_Encourage = Encourage:
|
||||
L_Blackboard = Blackboard:
|
||||
L_Confetti = Confetti:
|
||||
L_Happy = Feliz:
|
||||
L_Encourage = Estimulante:
|
||||
L_Blackboard = Pizarra:
|
||||
L_Confetti = Confeti:
|
||||
L_TeamName = Nombre Eq.:
|
||||
L_TeamSlogan = Eslógan Eq.:
|
||||
--
|
||||
@@ -709,11 +787,11 @@ L_EncryptionConstant = ENC:
|
||||
L_IVs = IVs
|
||||
L_EVs = EVs
|
||||
L_HP = PS
|
||||
L_ATK = ATQ
|
||||
L_DEF = DEF
|
||||
L_SpA = AtE
|
||||
L_SpD = DfE
|
||||
L_SPE = VEL
|
||||
L_ATK = Atq.
|
||||
L_DEF = Def.
|
||||
L_SpA = AtqE.
|
||||
L_SpD = DefE.
|
||||
L_SPE = Vel.
|
||||
L_PKFriendship = Amistad:
|
||||
L_PPUps = PPs
|
||||
! End
|
||||
@@ -724,14 +802,20 @@ L_PPUps = PPs
|
||||
-------------------------------------------------------
|
||||
Tab_Multiplayer = Multijugador
|
||||
L_MultiplayerSprite = Icono Multijugador:
|
||||
L_Style = Estilo:
|
||||
GB_Sayings = Frases guardadas
|
||||
L_Saying1 = 1:
|
||||
L_Saying2 = 2:
|
||||
L_Saying3 = 3:
|
||||
L_Saying4 = 4:
|
||||
L_Saying5 = 5:
|
||||
--
|
||||
Tab_BadgeMap = Medallas/Mapa
|
||||
GB_Map = Posición en el Mapa
|
||||
L_CurrentMap = Mapa actual:
|
||||
L_X = Coordenada X:
|
||||
L_Z = Coordenada Z:
|
||||
L_Y = Coordenada Y:
|
||||
L_Offset = (offset)
|
||||
--
|
||||
Tab_Appearance = Apariencia (X/Y)
|
||||
L_Outfit = Valores Atuendos
|
||||
B_GiveAccessories = Marcar Accesorios
|
||||
@@ -746,7 +830,9 @@ L_FacialHair = Pelo Facial:
|
||||
L_Hairstyle = Estilo Pelo:
|
||||
L_HairColor = Color Pelo:
|
||||
L_SkinColor = Color Piel:
|
||||
GB_MaisonCurrent = Maison Streaks (Current)
|
||||
--
|
||||
Tab_Maison = Mansión
|
||||
GB_MaisonCurrent = Rachas Mansión (Actual)
|
||||
L_SuperC = Super
|
||||
L_NormalC = Normal
|
||||
L_MultiC = Multi:
|
||||
@@ -754,7 +840,7 @@ L_RotationC = Rotation:
|
||||
L_TriplesC = Triples:
|
||||
L_DoublesC = Dobles:
|
||||
L_SinglesC = Indiv.:
|
||||
GB_MaisonBest = Maison Streaks (Best)
|
||||
GB_MaisonBest = Rachas Mansión (Mejor)
|
||||
L_SuperB = Super
|
||||
L_NormalB = Normal
|
||||
L_MultiB = Multi:
|
||||
@@ -765,28 +851,77 @@ L_SinglesB = Indiv:
|
||||
B_Save = Guardar
|
||||
L_Stats = Estadísticas
|
||||
B_Cancel = Cancelar
|
||||
--
|
||||
Tab_Overview = Inicio
|
||||
L_Seconds = Seg:
|
||||
L_Minutes = Min:
|
||||
L_Hours = Hrs:
|
||||
L_TrainerName = Nombre Entr.:
|
||||
L_Language = Idioma:
|
||||
L_PM = PokéMillas:
|
||||
L_Region = Subregión:
|
||||
L_BP = BP:
|
||||
L_Country = País:
|
||||
B_MaxCash = +
|
||||
L_3DSReg = Región 3DS:
|
||||
L_Money = $:
|
||||
L_SID = SID:
|
||||
L_TID = TID:
|
||||
L_TrainerName = Nombre Entrena.:
|
||||
L_SID = SID:
|
||||
--
|
||||
GB_Adventure = Información de la Aventura
|
||||
L_Seconds = Seg:
|
||||
L_Minutes = Min:
|
||||
L_Hours = Hrs:
|
||||
L_Started = Comienzo:
|
||||
L_Fame = Hall Fama:
|
||||
L_LastSaved = Último:
|
||||
--
|
||||
GB_Stats = Estadísticas
|
||||
L_PM = PokéMillas:
|
||||
L_BP = BP:
|
||||
L_Style = Estilo:
|
||||
L_Value = Valor
|
||||
GB_Sayings = Saved Sayings
|
||||
L_Saying1 = 1:
|
||||
L_Saying2 = 2:
|
||||
L_Saying3 = 3:
|
||||
L_Saying4 = 4:
|
||||
L_Saying5 = 5:
|
||||
L_Offset = (offset)
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_SimpleTrainer = Editor del Entrenador
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
GB_Trainer = Nombre
|
||||
L_TrainerName = Nombre Entr.:
|
||||
B_MaxCash = +
|
||||
L_Money = $:
|
||||
L_TID = TID:
|
||||
L_SID = SID:
|
||||
GB_Adventure = Información de la Aventura
|
||||
L_Seconds = Seg:
|
||||
L_Minutes = Min:
|
||||
L_Hours = Hrs:
|
||||
L_Started = Comienzo:
|
||||
L_Fame = Hall Fama:
|
||||
GB_Badges = Medallas
|
||||
GB_Map = Posición en el Mapa
|
||||
L_CurrentMap = Mapa actual:
|
||||
L_X = Coordenada X:
|
||||
L_Z = Coordenada Z:
|
||||
L_Y = Coordenada Y:
|
||||
GB_Options = Opciones
|
||||
label1 = Tipo Son.:
|
||||
LBL_TextSpeed = Vel. Texto:
|
||||
LBL_BattleStyle = Estilo Bat.:
|
||||
CHK_BattleEffects = Usar efectos de batalla
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_SimplePokedex = Editor de Pokédex
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
label2 = Atrapados:
|
||||
Label_Seen = Vistos:
|
||||
B_SeenNone = Visto Ninguno
|
||||
B_SeenAll = Vistos Todos
|
||||
B_CaughtNone = Atrapado Ninguno
|
||||
B_CaughtAll = Atrapados Todos
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
@@ -802,6 +937,18 @@ B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_CGearSkin = Editor de la apariencia del C-Gear
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
B_ImportPNG = Importar .png
|
||||
B_ExportPNG = Exportar .png
|
||||
B_ImportCGB = Importar .cgb/.psk
|
||||
B_ExportCGB = Exportar .cgb
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
@@ -809,4 +956,4 @@ L_ProvideInfo = Por favor, proporciona esta información cuando reportes este fa
|
||||
B_CopyToClipboard = Copiar al portapapeles
|
||||
B_Continue = Continuar
|
||||
B_Abort = Abortar
|
||||
! End
|
||||
! End
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Spiky
|
||||
Picoreja
|
||||
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
|
||||
|
||||
|
||||
Unaa
|
||||
Una
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
PKHeX/Resources/text/gen3/text_ItemsG1_en.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_ItemsG1_es.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_ItemsG1_zh.txt
Normal file
255
PKHeX/Resources/text/gen3/text_ItemsG2_en.txt
Normal file
@@ -0,0 +1,255 @@
|
||||
(None)
|
||||
Master Ball
|
||||
Ultra Ball
|
||||
BrightPowder
|
||||
Great Ball
|
||||
Poké Ball
|
||||
Teru-sama (0)
|
||||
Bicycle
|
||||
Moon Stone
|
||||
Antidote
|
||||
Burn Heal
|
||||
Ice Heal
|
||||
Awakening
|
||||
Parlyz Heal
|
||||
Full Restore
|
||||
Max Potion
|
||||
Hyper Potion
|
||||
Super Potion
|
||||
Potion
|
||||
Escape Rope
|
||||
Repel
|
||||
Max Elixer
|
||||
Fire Stone
|
||||
Thunder Stone
|
||||
Water Stone
|
||||
Teru-sama (1)
|
||||
HP Up
|
||||
Protein
|
||||
Iron
|
||||
Carbos
|
||||
Lucky Punch
|
||||
Calcium
|
||||
Rare Candy
|
||||
X Accuracy
|
||||
Leaf Stone
|
||||
Metal Powder
|
||||
Nugget
|
||||
Poké Doll
|
||||
Full Heal
|
||||
Revive
|
||||
Max Revive
|
||||
Guard Spec.
|
||||
Super Repel
|
||||
Max Repel
|
||||
Dire Hit
|
||||
Teru-sama (2)
|
||||
Fresh Water
|
||||
Soda Pop
|
||||
Lemonade
|
||||
X Attack
|
||||
Teru-sama (3)
|
||||
X Defend
|
||||
X Speed
|
||||
X Special
|
||||
Coin Case
|
||||
Itemfinder
|
||||
Teru-sama (4)
|
||||
Exp Share
|
||||
Old Rod
|
||||
Good Rod
|
||||
Silver Leaf
|
||||
Super Rod
|
||||
PP Up
|
||||
Ether
|
||||
Max Ether
|
||||
Elixer
|
||||
Red Scale
|
||||
SecretPotion
|
||||
S.S. Ticket
|
||||
Mystery Egg
|
||||
Clear Bell*
|
||||
Silver Wing
|
||||
Moomoo Milk
|
||||
Quick Claw
|
||||
PSNCureBerry
|
||||
Gold Leaf
|
||||
Soft Sand
|
||||
Sharp Beak
|
||||
PRZCureBerry
|
||||
Burnt Berry
|
||||
Ice Berry
|
||||
Poison Barb
|
||||
King's Rock
|
||||
Bitter Berry
|
||||
Mint Berry
|
||||
Red Apricorn
|
||||
TinyMushroom
|
||||
Big Mushroom
|
||||
SilverPowder
|
||||
Blu Apricorn
|
||||
Teru-sama (5)
|
||||
Amulet Coin
|
||||
Ylw Apricorn
|
||||
Grn Apricorn
|
||||
Cleanse Tag
|
||||
Mystic Water
|
||||
TwistedSpoon
|
||||
Wht Apricorn
|
||||
Black Belt
|
||||
Blk Apricorn
|
||||
Teru-sama (6)
|
||||
Pnk Apricorn
|
||||
BlackGlasses
|
||||
SlowpokeTail
|
||||
Pink Bow
|
||||
Stick
|
||||
Smoke Ball
|
||||
NeverMeltIce
|
||||
Magnet
|
||||
MiracleBerry
|
||||
Pearl
|
||||
Big Pearl
|
||||
Everstone
|
||||
Spell Tag
|
||||
RageCandyBar
|
||||
GS Ball*
|
||||
Blue Card*
|
||||
Miracle Seed
|
||||
Thick Club
|
||||
Focus Band
|
||||
Teru-sama (7)
|
||||
EnergyPowder
|
||||
Energy Root
|
||||
Heal Powder
|
||||
Revival Herb
|
||||
Hard Stone
|
||||
Lucky Egg
|
||||
Card Key
|
||||
Machine Part
|
||||
Egg Ticket*
|
||||
Lost Item
|
||||
Stardust
|
||||
Star Piece
|
||||
Basement Key
|
||||
Pass
|
||||
Teru-sama (8)
|
||||
Teru-sama (9)
|
||||
Teru-sama (10)
|
||||
Charcoal
|
||||
Berry Juice
|
||||
Scope Lens
|
||||
Teru-sama (11)
|
||||
Teru-sama (12)
|
||||
Metal Coat
|
||||
Dragon Fang
|
||||
Teru-sama (13)
|
||||
Leftovers
|
||||
Teru-sama (14)
|
||||
Teru-sama (15)
|
||||
Teru-sama (16)
|
||||
MysteryBerry
|
||||
Dragon Scale
|
||||
Berserk Gene
|
||||
Teru-sama (17)
|
||||
Teru-sama (18)
|
||||
Teru-sama (19)
|
||||
Sacred Ash
|
||||
Heavy Ball
|
||||
Flower Mail
|
||||
Level Ball
|
||||
Lure Ball
|
||||
Fast Ball
|
||||
Teru-sama (20)
|
||||
Light Ball
|
||||
Friend Ball
|
||||
Moon Ball
|
||||
Love Ball
|
||||
Normal Box
|
||||
Gorgeous Box
|
||||
Sun Stone
|
||||
Polkadot Bow
|
||||
Teru-sama (21)
|
||||
Up-Grade
|
||||
Berry
|
||||
Gold Berry
|
||||
SquirtBottle
|
||||
Teru-sama (22)
|
||||
Park Ball
|
||||
Rainbow Wing
|
||||
Teru-sama (23)
|
||||
Brick Piece
|
||||
Surf Mail
|
||||
Litebluemail
|
||||
Portraitmail
|
||||
Lovely Mail
|
||||
Eon Mail
|
||||
Morph Mail
|
||||
Bluesky Mail
|
||||
Music Mail
|
||||
Mirage Mail
|
||||
Teru-sama (24)
|
||||
TM01
|
||||
TM02
|
||||
TM03
|
||||
TM04
|
||||
TM04 (Unused)
|
||||
TM05
|
||||
TM06
|
||||
TM07
|
||||
TM08
|
||||
TM09
|
||||
TM10
|
||||
TM11
|
||||
TM12
|
||||
TM13
|
||||
TM14
|
||||
TM15
|
||||
TM16
|
||||
TM17
|
||||
TM18
|
||||
TM19
|
||||
TM20
|
||||
TM21
|
||||
TM22
|
||||
TM23
|
||||
TM24
|
||||
TM25
|
||||
TM26
|
||||
TM27
|
||||
TM28
|
||||
TM28 (Unused)
|
||||
TM29
|
||||
TM30
|
||||
TM31
|
||||
TM32
|
||||
TM33
|
||||
TM34
|
||||
TM35
|
||||
TM36
|
||||
TM37
|
||||
TM38
|
||||
TM39
|
||||
TM40
|
||||
TM41
|
||||
TM42
|
||||
TM43
|
||||
TM44
|
||||
TM45
|
||||
TM46
|
||||
TM47
|
||||
TM48
|
||||
TM49
|
||||
TM50
|
||||
HM01
|
||||
HM02
|
||||
HM03
|
||||
HM04
|
||||
HM05
|
||||
HM06
|
||||
HM07
|
||||
HM08 (Unused)
|
||||
HM09 (Unused)
|
||||
HM10 (Unused)
|
||||
HM11 (Unused)
|
||||
HM12 (Unused)
|
||||
255
PKHeX/Resources/text/gen3/text_ItemsG2_es.txt
Normal file
@@ -0,0 +1,255 @@
|
||||
Ningún
|
||||
Master Ball
|
||||
Ultra Ball
|
||||
Polvo brillo
|
||||
Super Ball
|
||||
Poké Ball
|
||||
Teru-sama (0)
|
||||
Bicicleta
|
||||
Piedra Lunar
|
||||
Antídoto
|
||||
Antiquemar
|
||||
Antihielo
|
||||
Despertar
|
||||
Antiparalizador
|
||||
Restaurar Todo
|
||||
Poción Máxima
|
||||
Hiperpoción
|
||||
Superpoción
|
||||
Poción
|
||||
Cuerda Huida
|
||||
Repelente
|
||||
Elixir Máximo
|
||||
Piedra Fuego
|
||||
Piedra Trueno
|
||||
Piedra Agua
|
||||
Teru-sama (1)
|
||||
Más PS
|
||||
Proteína
|
||||
Hierro
|
||||
Carburante
|
||||
Puño suerte
|
||||
Calcio
|
||||
Caramelo Raro
|
||||
Precisión X
|
||||
Piedra Hoja
|
||||
Polvo metálico
|
||||
Pepita
|
||||
Poké Muñeco
|
||||
Cura Total
|
||||
Revivir
|
||||
Revivir Máximo
|
||||
Protec. Especial
|
||||
Superrepelente
|
||||
Repelente Máximo
|
||||
Directo
|
||||
Teru-sama (2)
|
||||
Agua Fresca
|
||||
Refresco
|
||||
Limonada
|
||||
Ataque X
|
||||
Teru-sama (3)
|
||||
Defensa X
|
||||
Velocidad X
|
||||
Especial X
|
||||
Monedero
|
||||
Buscaobjetos
|
||||
Teru-sama (4)
|
||||
Repartir Exp
|
||||
Caña Vieja
|
||||
Caña Buena
|
||||
Hoja plata
|
||||
Supercaña
|
||||
Más PP
|
||||
Éter
|
||||
Éter Máximo
|
||||
Elixir
|
||||
Escama roja
|
||||
Poción secreta
|
||||
Ticket barco
|
||||
Huevo misterioso
|
||||
Campana clara*
|
||||
Ala plateada
|
||||
Leche Mu-mu
|
||||
Garra Rápida
|
||||
Bayantídoto
|
||||
Hoja oro
|
||||
Arena Fina
|
||||
Pico Afilado
|
||||
Antiparabaya
|
||||
Antiquembaya
|
||||
Baya Hielo
|
||||
Flecha venenosa
|
||||
Roca del Rey
|
||||
Bayamarga
|
||||
Baya Menta
|
||||
Bonguri rojo
|
||||
Mini Seta
|
||||
Seta Grande
|
||||
Polvo Plata
|
||||
Bonguri azul
|
||||
Teru-sama (5)
|
||||
Moneda Amuleto
|
||||
Bonguri amarillo
|
||||
Bonguri verde
|
||||
Amuleto
|
||||
Agua Mística
|
||||
Cuchara Torcida
|
||||
Bonguri blanco
|
||||
Cinturón Negro
|
||||
Bonguri negro
|
||||
Teru-sama (6)
|
||||
Bonguri rosa
|
||||
Gafas de Sol
|
||||
Cola Slowpoke
|
||||
Lazo rosa
|
||||
Palo
|
||||
Bola humo
|
||||
Antiderretir
|
||||
Imán
|
||||
Baya Milagro
|
||||
Perla
|
||||
Perla Grande
|
||||
Piedra Eterna
|
||||
Hechizo
|
||||
Caramelo furia
|
||||
GS Ball*
|
||||
Tarjeta azul*
|
||||
Semilla milagro
|
||||
Hueso grueso
|
||||
Cinta Focus
|
||||
Teru-sama (7)
|
||||
Polvo Energía
|
||||
Raíz Energía
|
||||
Polvo Curación
|
||||
Hierba Revivir
|
||||
Piedra dura
|
||||
Huevo Suerte
|
||||
Llave magnética
|
||||
Maquinaria
|
||||
Ticket huevo*
|
||||
Objeto perdido
|
||||
Polvoestelar
|
||||
Trozo Estrella
|
||||
Llave sótano
|
||||
Pase del tren
|
||||
Teru-sama (8)
|
||||
Teru-sama (9)
|
||||
Teru-sama (10)
|
||||
Carbón
|
||||
Zumo de Baya
|
||||
Periscopio
|
||||
Teru-sama (11)
|
||||
Teru-sama (12)
|
||||
Revest. Metálico
|
||||
Colmillo Dragón
|
||||
Teru-sama (13)
|
||||
Restos
|
||||
Teru-sama (14)
|
||||
Teru-sama (15)
|
||||
Teru-sama (16)
|
||||
Baya Misterio
|
||||
Escamadragón
|
||||
Gen loco
|
||||
Teru-sama (17)
|
||||
Teru-sama (18)
|
||||
Teru-sama (19)
|
||||
Ceniza Sagrada
|
||||
Peso Ball
|
||||
Carta flor
|
||||
Nivel Ball
|
||||
Cebo Ball
|
||||
Rapid Ball
|
||||
Teru-sama (20)
|
||||
Bolaluminosa
|
||||
Amigo Ball
|
||||
Luna Ball
|
||||
Amor Ball
|
||||
Caja Normal
|
||||
Caja Grande
|
||||
Piedra Solar
|
||||
Cinta lunares
|
||||
Teru-sama (21)
|
||||
Mejora
|
||||
Baya
|
||||
Baya Dorada
|
||||
Regadera
|
||||
Teru-sama (22)
|
||||
Parque Ball
|
||||
Ala arcoíris
|
||||
Teru-sama (23)
|
||||
Ladrillo
|
||||
Carta surf
|
||||
Carta azul
|
||||
Carta retrato
|
||||
Carta amor
|
||||
Carta eón
|
||||
Carta morfosis
|
||||
Carta celeste
|
||||
Carta música
|
||||
Carta espejismo
|
||||
Teru-sama (24)
|
||||
MT01
|
||||
MT02
|
||||
MT03
|
||||
MT04
|
||||
MT04 (Sin uso)
|
||||
MT05
|
||||
MT06
|
||||
MT07
|
||||
MT08
|
||||
MT09
|
||||
MT10
|
||||
MT11
|
||||
MT12
|
||||
MT13
|
||||
MT14
|
||||
MT15
|
||||
MT16
|
||||
MT17
|
||||
MT18
|
||||
MT19
|
||||
MT20
|
||||
MT21
|
||||
MT22
|
||||
MT23
|
||||
MT24
|
||||
MT25
|
||||
MT26
|
||||
MT27
|
||||
MT28
|
||||
MT28 (Sin uso)
|
||||
MT29
|
||||
MT30
|
||||
MT31
|
||||
MT32
|
||||
MT33
|
||||
MT34
|
||||
MT35
|
||||
MT36
|
||||
MT37
|
||||
MT38
|
||||
MT39
|
||||
MT40
|
||||
MT41
|
||||
MT42
|
||||
MT43
|
||||
MT44
|
||||
MT45
|
||||
MT46
|
||||
MT47
|
||||
MT48
|
||||
MT49
|
||||
MT50
|
||||
MO01
|
||||
MO02
|
||||
MO03
|
||||
MO04
|
||||
MO05
|
||||
MO06
|
||||
MO07
|
||||
MO08 (Sin uso)
|
||||
MO09 (Sin uso)
|
||||
MO10 (Sin uso)
|
||||
MO11 (Sin uso)
|
||||
MO12 (Sin uso)
|
||||
255
PKHeX/Resources/text/gen3/text_ItemsG2_zh.txt
Normal file
@@ -0,0 +1,255 @@
|
||||
(无)
|
||||
掌门球
|
||||
高级球
|
||||
亮光之粉
|
||||
超级球
|
||||
精灵球
|
||||
卡比丘 (0)
|
||||
自行车
|
||||
月之石
|
||||
解毒剂
|
||||
灼伤药
|
||||
解冻药
|
||||
解眠药
|
||||
解麻药
|
||||
回复药水
|
||||
全满药水
|
||||
超高级药水
|
||||
超级药水
|
||||
药水
|
||||
脱离洞穴的绳子
|
||||
除虫喷雾器
|
||||
PP全补剂
|
||||
火之石
|
||||
雷之石
|
||||
水之石
|
||||
卡比丘 (1)
|
||||
HP提升剂
|
||||
攻击牛磺剂
|
||||
防御提升剂
|
||||
效果防护
|
||||
幸运之拳
|
||||
特攻增加剂
|
||||
神奇糖果
|
||||
命中加强
|
||||
叶之石
|
||||
金属粉
|
||||
金色珠
|
||||
皮皮玩偶
|
||||
万能药
|
||||
更生剂
|
||||
特级更生剂
|
||||
防御效果
|
||||
白银喷雾器
|
||||
黄金喷雾器
|
||||
要害攻击
|
||||
卡比丘 (2)
|
||||
美味之水
|
||||
塞可汽水
|
||||
综合调味乳
|
||||
力量增强
|
||||
卡比丘 (3)
|
||||
伤害预防
|
||||
速度增加
|
||||
特殊增强
|
||||
代币盒
|
||||
蓝色卡片
|
||||
卡比丘 (4)
|
||||
学习装置
|
||||
破烂钓竿
|
||||
优秀钓竿
|
||||
银叶
|
||||
超强钓竿
|
||||
PP提升剂
|
||||
PP小补剂
|
||||
PP单补剂
|
||||
PP大补剂
|
||||
红色的鳞片
|
||||
秘传之药
|
||||
船票
|
||||
神奇之蛋
|
||||
透明铃铛
|
||||
银色之翼
|
||||
摩摩牛奶
|
||||
先攻之爪
|
||||
解毒的果实
|
||||
金叶
|
||||
柔软的沙子
|
||||
尖锐的鸟嘴
|
||||
消除麻痹的果实
|
||||
烧烤的果实
|
||||
冰冻的果实
|
||||
毒针
|
||||
王者之证
|
||||
苦涩的果实
|
||||
薄荷的果实
|
||||
红色圆柑果实
|
||||
小蘑菇
|
||||
大蘑菇
|
||||
银色的粉
|
||||
蓝色圆柑果实
|
||||
卡比丘 (5)
|
||||
护身金币
|
||||
黄色圆柑果实
|
||||
绿色圆柑果实
|
||||
净身的护身符
|
||||
神秘的水滴
|
||||
弯曲的汤匙
|
||||
白色圆柑果实
|
||||
黑色带子
|
||||
黑色圆柑果实
|
||||
卡比丘 (6)
|
||||
桃色圆柑果实
|
||||
黑色的眼镜
|
||||
美味尾巴
|
||||
粉红色丝带
|
||||
大葱
|
||||
烟雾球
|
||||
融化不了的冰块
|
||||
磁铁
|
||||
奇迹的果实
|
||||
珍珠
|
||||
大珍珠
|
||||
不变之石
|
||||
诅咒护身符
|
||||
愤怒馒头
|
||||
GS球*
|
||||
蓝色卡片*
|
||||
奇迹种子
|
||||
胖骨头
|
||||
振奋精神的头布
|
||||
卡比丘 (7)
|
||||
元气之粉
|
||||
元气之根
|
||||
万能之粉
|
||||
复活草
|
||||
硬石头
|
||||
幸运蛋
|
||||
卡片钥匙
|
||||
机械的零件
|
||||
神奇宝贝蛋兑换券
|
||||
掉落的东西
|
||||
星星的沙子
|
||||
星星的碎片
|
||||
地下室钥匙
|
||||
定期月票
|
||||
卡比丘 (8)
|
||||
卡比丘 (9)
|
||||
卡比丘 (10)
|
||||
木灰
|
||||
树果汁
|
||||
对焦镜片
|
||||
卡比丘 (11)
|
||||
卡比丘 (12)
|
||||
金属涂层
|
||||
龙之牙
|
||||
卡比丘 (13)
|
||||
吃剩下的东西
|
||||
卡比丘 (14)
|
||||
卡比丘 (15)
|
||||
卡比丘 (16)
|
||||
神奇的果实
|
||||
龙之鳞片
|
||||
破坏性的遗传因子
|
||||
卡比丘 (17)
|
||||
卡比丘 (18)
|
||||
卡比丘 (19)
|
||||
神圣之灰
|
||||
重量球
|
||||
花案邮件
|
||||
等级球
|
||||
诱饵球
|
||||
速度球
|
||||
卡比丘 (20)
|
||||
电气球
|
||||
友友球
|
||||
月亮球
|
||||
爱心球
|
||||
木箱
|
||||
桐木箱
|
||||
太阳之石
|
||||
水玉色之带
|
||||
卡比丘 (21)
|
||||
升级
|
||||
树果
|
||||
黄金的果实
|
||||
杰尼龟喷壶
|
||||
卡比丘 (22)
|
||||
公园球
|
||||
彩虹之翼
|
||||
卡比丘 (23)
|
||||
砖瓦碎片
|
||||
冲浪邮件
|
||||
海洋邮件
|
||||
肖像邮件
|
||||
可爱邮件
|
||||
伊布邮件
|
||||
变身邮件
|
||||
蓝天邮件
|
||||
音符邮件
|
||||
梦幻邮件
|
||||
卡比丘 (24)
|
||||
TM01
|
||||
TM02
|
||||
TM03
|
||||
TM04
|
||||
TM04 (未使用)
|
||||
TM05
|
||||
TM06
|
||||
TM07
|
||||
TM08
|
||||
TM09
|
||||
TM10
|
||||
TM11
|
||||
TM12
|
||||
TM13
|
||||
TM14
|
||||
TM15
|
||||
TM16
|
||||
TM17
|
||||
TM18
|
||||
TM19
|
||||
TM20
|
||||
TM21
|
||||
TM22
|
||||
TM23
|
||||
TM24
|
||||
TM25
|
||||
TM26
|
||||
TM27
|
||||
TM28
|
||||
TM28 (未使用)
|
||||
TM29
|
||||
TM30
|
||||
TM31
|
||||
TM32
|
||||
TM33
|
||||
TM34
|
||||
TM35
|
||||
TM36
|
||||
TM37
|
||||
TM38
|
||||
TM39
|
||||
TM40
|
||||
TM41
|
||||
TM42
|
||||
TM43
|
||||
TM44
|
||||
TM45
|
||||
TM46
|
||||
TM47
|
||||
TM48
|
||||
TM49
|
||||
TM50
|
||||
HM01
|
||||
HM02
|
||||
HM03
|
||||
HM04
|
||||
HM05
|
||||
HM06
|
||||
HM07
|
||||
HM08 (未使用)
|
||||
HM09 (未使用)
|
||||
HM10 (未使用)
|
||||
HM11 (未使用)
|
||||
HM12 (未使用)
|
||||
BIN
PKHeX/Resources/text/gen3/text_ItemsG3_es.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_ItemsG3_zh.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_gsc_00000_en.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_gsc_00000_es.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_gsc_00000_zh.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_rsefrlg_00000_es.txt
Normal file
BIN
PKHeX/Resources/text/gen3/text_rsefrlg_00000_zh.txt
Normal file
@@ -67,22 +67,56 @@ public void setPouch(ref byte[] Data)
|
||||
public void getPouchG1(ref byte[] Data)
|
||||
{
|
||||
InventoryItem[] items = new InventoryItem[PouchDataSize];
|
||||
int numStored = Data[Offset];
|
||||
for (int i = 0; i < numStored; i++)
|
||||
if (Type == InventoryType.TMHMs)
|
||||
{
|
||||
items[i] = new InventoryItem
|
||||
int slot = 0;
|
||||
for (int i = 0; i < items.Length; i++)
|
||||
{
|
||||
Index = Data[Offset + i * 2 + 1],
|
||||
Count = Data[Offset + i * 2 + 2]
|
||||
};
|
||||
if (Data[Offset + i] != 0)
|
||||
items[slot++] = new InventoryItem
|
||||
{
|
||||
Index = LegalItems[i],
|
||||
Count = Data[Offset+i]
|
||||
};
|
||||
}
|
||||
while (slot < items.Length)
|
||||
items[slot++] = new InventoryItem
|
||||
{
|
||||
Index = 0,
|
||||
Count = 0
|
||||
};
|
||||
}
|
||||
for (int i = numStored; i < items.Length; i++)
|
||||
else
|
||||
{
|
||||
items[i] = new InventoryItem
|
||||
int numStored = Data[Offset];
|
||||
for (int i = 0; i < numStored; i++)
|
||||
{
|
||||
Index = 0,
|
||||
Count = 0
|
||||
};
|
||||
switch (Type)
|
||||
{
|
||||
case InventoryType.KeyItems:
|
||||
items[i] = new InventoryItem
|
||||
{
|
||||
Index = Data[Offset + i + 1],
|
||||
Count = 1
|
||||
};
|
||||
break;
|
||||
default:
|
||||
items[i] = new InventoryItem
|
||||
{
|
||||
Index = Data[Offset + i * 2 + 1],
|
||||
Count = Data[Offset + i * 2 + 2]
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int i = numStored; i < items.Length; i++)
|
||||
{
|
||||
items[i] = new InventoryItem
|
||||
{
|
||||
Index = 0,
|
||||
Count = 0
|
||||
};
|
||||
}
|
||||
}
|
||||
Items = items;
|
||||
|
||||
@@ -92,14 +126,33 @@ public void setPouchG1(ref byte[] Data)
|
||||
{
|
||||
if (Items.Length != PouchDataSize)
|
||||
throw new ArgumentException("Item array length does not match original pouch size.");
|
||||
|
||||
for (int i = 0; i < Items.Length; i++)
|
||||
if (Type == InventoryType.TMHMs)
|
||||
{
|
||||
Data[Offset + i * 2 + 1] = (byte)Items[i].Index;
|
||||
Data[Offset + i * 2 + 2] = (byte)Items[i].Count;
|
||||
for (int i = 0; i < Items.Length; i++)
|
||||
{
|
||||
if (LegalItems.Any(it => it == Items[i].Index))
|
||||
Data[Offset + Array.FindIndex(LegalItems, it => Items[i].Index == it)] = (byte) Items[i].Count;
|
||||
}
|
||||
}
|
||||
else if (Type == InventoryType.KeyItems)
|
||||
{
|
||||
for (int i = 0; i < Items.Length; i++)
|
||||
{
|
||||
Data[Offset + i + 1] = (byte)Items[i].Index;
|
||||
}
|
||||
Data[Offset] = (byte)Count;
|
||||
Data[Offset + 1 + Count] = 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < Items.Length; i++)
|
||||
{
|
||||
Data[Offset + i * 2 + 1] = (byte)Items[i].Index;
|
||||
Data[Offset + i * 2 + 2] = (byte)Items[i].Count;
|
||||
}
|
||||
Data[Offset] = (byte)Count;
|
||||
Data[Offset + 1 + 2 * Count] = 0xFF;
|
||||
}
|
||||
Data[Offset] = (byte) Count;
|
||||
Data[Offset + 1 + 2*Count] = 0xFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace PKHeX
|
||||
{
|
||||
public sealed class SAV1 : SaveFile
|
||||
{
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version})" +/* - {LastSavedTime}*/ "].bak";
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version}) - {PlayTimeString}].bak";
|
||||
public override string Filter => "SAV File|*.sav";
|
||||
public override string Extension => ".sav";
|
||||
|
||||
@@ -149,7 +149,7 @@ public override byte[] Write(bool DSV)
|
||||
|
||||
|
||||
// Configuration
|
||||
public override SaveFile Clone() { return new SAV1(Data.Take(Data.Length - SIZE_RESERVED).ToArray()); }
|
||||
public override SaveFile Clone() { return new SAV1(Write(DSV: false)); }
|
||||
|
||||
public override int SIZE_STORED => Japanese ? PKX.SIZE_1JLIST : PKX.SIZE_1ULIST;
|
||||
public override int SIZE_PARTY => Japanese ? PKX.SIZE_1JLIST : PKX.SIZE_1ULIST;
|
||||
@@ -167,13 +167,14 @@ public override byte[] Write(bool DSV)
|
||||
public override int MaxItemID => 255;
|
||||
public override int MaxBallID => 0;
|
||||
public override int MaxGameID => 99; // What do I set this to...?
|
||||
public override int MaxMoney => 999999;
|
||||
|
||||
public override int BoxCount => Japanese ? 8 : 12;
|
||||
public override int MaxEV => 65535;
|
||||
public override int MaxIV => 15;
|
||||
public override int Generation => 1;
|
||||
protected override int GiftCountMax => 0;
|
||||
public override int OTLength => Japanese ? 5 : 10;
|
||||
public override int OTLength => Japanese ? 5 : 7;
|
||||
public override int NickLength => Japanese ? 5 : 10;
|
||||
public override int BoxSlotCount => Japanese ? 30 : 20;
|
||||
|
||||
@@ -327,7 +328,7 @@ public uint Coin
|
||||
}
|
||||
}
|
||||
|
||||
private readonly ushort[] LegalItems = PKX.getG1LegalItems().Select(i => (ushort)i).ToArray();
|
||||
private readonly ushort[] LegalItems = Legal.Pouch_Items_RBY;
|
||||
public override InventoryPouch[] Inventory
|
||||
{
|
||||
get
|
||||
|
||||
657
PKHeX/Saves/SAV2.cs
Normal file
@@ -0,0 +1,657 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public sealed class SAV2 : SaveFile
|
||||
{
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version}) - {PlayTimeString}].bak";
|
||||
public override string Filter => "SAV File|*.sav";
|
||||
public override string Extension => ".sav";
|
||||
|
||||
public SAV2(byte[] data = null)
|
||||
{
|
||||
Data = data == null ? new byte[SaveUtil.SIZE_G2RAW_U] : (byte[])data.Clone();
|
||||
BAK = (byte[])Data.Clone();
|
||||
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
|
||||
|
||||
Version = data == null ? GameVersion.GSC : SaveUtil.getIsG2SAV(Data);
|
||||
if (Version == GameVersion.Invalid)
|
||||
return;
|
||||
|
||||
Japanese = SaveUtil.getIsG2SAVJ(Data) != GameVersion.Invalid;
|
||||
if (Japanese && Data.Length < SaveUtil.SIZE_G2RAW_J)
|
||||
Array.Resize(ref Data, SaveUtil.SIZE_G2RAW_J);
|
||||
|
||||
Box = Data.Length;
|
||||
Array.Resize(ref Data, Data.Length + SIZE_RESERVED);
|
||||
Party = getPartyOffset(0);
|
||||
|
||||
Personal = Version == GameVersion.GS ? PersonalTable.GS : PersonalTable.C;
|
||||
|
||||
getSAVOffsets();
|
||||
|
||||
LegalItems = Legal.Pouch_Items_GSC;
|
||||
LegalBalls = Legal.Pouch_Ball_GSC;
|
||||
LegalKeyItems = Version == GameVersion.C ? Legal.Pouch_Key_C : Legal.Pouch_Key_GS;
|
||||
LegalTMHMs = Legal.Pouch_TMHM_GSC;
|
||||
HeldItems = Legal.HeldItems_GSC;
|
||||
|
||||
// Stash boxes after the save file's end.
|
||||
byte[] TempBox = new byte[SIZE_STOREDBOX];
|
||||
for (int i = 0; i < BoxCount; i++)
|
||||
{
|
||||
if (i < (Japanese ? 6 : 7))
|
||||
Array.Copy(Data, 0x4000 + i * (TempBox.Length + 2), TempBox, 0, TempBox.Length);
|
||||
else
|
||||
Array.Copy(Data, 0x6000 + (i - (Japanese ? 6 : 7)) * (TempBox.Length + 2), TempBox, 0, TempBox.Length);
|
||||
PokemonList2 PL2 = new PokemonList2(TempBox, Japanese ? PokemonList2.CapacityType.StoredJP : PokemonList2.CapacityType.Stored, Japanese);
|
||||
for (int j = 0; j < PL2.Pokemon.Length; j++)
|
||||
{
|
||||
if (j < PL2.Count)
|
||||
{
|
||||
byte[] pkDat = new PokemonList2(PL2[j]).GetBytes();
|
||||
pkDat.CopyTo(Data, Data.Length - SIZE_RESERVED + i * SIZE_BOX + j * SIZE_STORED);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] pkDat = new byte[PokemonList2.GetDataLength(PokemonList2.CapacityType.Single, Japanese)];
|
||||
pkDat.CopyTo(Data, Data.Length - SIZE_RESERVED + i * SIZE_BOX + j * SIZE_STORED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Array.Copy(Data, CurrentBoxOffset, TempBox, 0, TempBox.Length);
|
||||
PokemonList2 curBoxPL = new PokemonList2(TempBox, Japanese ? PokemonList2.CapacityType.StoredJP : PokemonList2.CapacityType.Stored, Japanese);
|
||||
for (int i = 0; i < curBoxPL.Pokemon.Length; i++)
|
||||
{
|
||||
if (i < curBoxPL.Count)
|
||||
{
|
||||
byte[] pkDat = new PokemonList2(curBoxPL[i]).GetBytes();
|
||||
pkDat.CopyTo(Data, Data.Length - SIZE_RESERVED + CurrentBox * SIZE_BOX + i * SIZE_STORED);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] pkDat = new byte[PokemonList2.GetDataLength(PokemonList2.CapacityType.Single, Japanese)];
|
||||
pkDat.CopyTo(Data, Data.Length - SIZE_RESERVED + CurrentBox * SIZE_BOX + i * SIZE_STORED);
|
||||
}
|
||||
}
|
||||
|
||||
byte[] TempParty = new byte[PokemonList2.GetDataLength(PokemonList2.CapacityType.Party, Japanese)];
|
||||
Array.Copy(Data, PartyOffset, TempParty, 0, TempParty.Length);
|
||||
PokemonList2 partyList = new PokemonList2(TempParty, PokemonList2.CapacityType.Party, Japanese);
|
||||
for (int i = 0; i < partyList.Pokemon.Length; i++)
|
||||
{
|
||||
if (i < partyList.Count)
|
||||
{
|
||||
byte[] pkDat = new PokemonList2(partyList[i]).GetBytes();
|
||||
pkDat.CopyTo(Data, getPartyOffset(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] pkDat = new byte[PokemonList2.GetDataLength(PokemonList2.CapacityType.Single, Japanese)];
|
||||
pkDat.CopyTo(Data, getPartyOffset(i));
|
||||
}
|
||||
}
|
||||
|
||||
// Daycare currently undocumented for all Gen II games.
|
||||
|
||||
// Enable Pokedex editing
|
||||
PokeDex = 0;
|
||||
|
||||
if (!Exportable)
|
||||
resetBoxes();
|
||||
}
|
||||
|
||||
private const int SIZE_RESERVED = 0x8000; // unpacked box data
|
||||
public override byte[] Write(bool DSV)
|
||||
{
|
||||
for (int i = 0; i < BoxCount; i++)
|
||||
{
|
||||
PokemonList2 boxPL = new PokemonList2(Japanese ? PokemonList2.CapacityType.StoredJP : PokemonList2.CapacityType.Stored, Japanese);
|
||||
int slot = 0;
|
||||
for (int j = 0; j < boxPL.Pokemon.Length; j++)
|
||||
{
|
||||
PK2 boxPK = (PK2) getPKM(getData(getBoxOffset(i) + j*SIZE_STORED, SIZE_STORED));
|
||||
if (boxPK.Species > 0)
|
||||
boxPL[slot++] = boxPK;
|
||||
}
|
||||
if (i < (Japanese ? 6 : 7))
|
||||
boxPL.GetBytes().CopyTo(Data, 0x4000 + i * (SIZE_STOREDBOX + 2));
|
||||
else
|
||||
boxPL.GetBytes().CopyTo(Data, 0x6000 + (i - (Japanese ? 6 : 7)) * (SIZE_STOREDBOX + 2));
|
||||
if (i == CurrentBox)
|
||||
boxPL.GetBytes().CopyTo(Data, CurrentBoxOffset);
|
||||
}
|
||||
|
||||
PokemonList2 partyPL = new PokemonList2(PokemonList2.CapacityType.Party, Japanese);
|
||||
int pSlot = 0;
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
PK2 partyPK = (PK2)getPKM(getData(getPartyOffset(i), SIZE_STORED));
|
||||
if (partyPK.Species > 0)
|
||||
partyPL[pSlot++] = partyPK;
|
||||
}
|
||||
partyPL.GetBytes().CopyTo(Data, PartyOffset);
|
||||
|
||||
setChecksums();
|
||||
if (Version == GameVersion.C && !Japanese)
|
||||
{
|
||||
Array.Copy(Data, 0x2009, Data, 0x1209, 0xB7A);
|
||||
}
|
||||
if (Version == GameVersion.C && Japanese)
|
||||
{
|
||||
Array.Copy(Data, 0x2009, Data, 0x7209, 0xB32);
|
||||
}
|
||||
if (Version == GameVersion.GS && !Japanese)
|
||||
{
|
||||
Array.Copy(Data, 0x2009, Data, 0x15C7, 0x222F - 0x2009);
|
||||
Array.Copy(Data, 0x222F, Data, 0x3D69, 0x23D9 - 0x222F);
|
||||
Array.Copy(Data, 0x23D9, Data, 0x0C6B, 0x2856 - 0x23D9);
|
||||
Array.Copy(Data, 0x2856, Data, 0x7E39, 0x288A - 0x2856);
|
||||
Array.Copy(Data, 0x288A, Data, 0x10E8, 0x2D69 - 0x288A);
|
||||
}
|
||||
if (Version == GameVersion.GS && Japanese)
|
||||
{
|
||||
Array.Copy(Data, 0x2009, Data, 0x7209, 0xC83);
|
||||
}
|
||||
byte[] outData = new byte[Data.Length - SIZE_RESERVED];
|
||||
Array.Copy(Data, outData, outData.Length);
|
||||
return outData;
|
||||
}
|
||||
|
||||
private void getSAVOffsets()
|
||||
{
|
||||
OptionsOffset = 0x2000;
|
||||
Trainer1 = 0x2009;
|
||||
switch (Version)
|
||||
{
|
||||
case GameVersion.GS:
|
||||
DaylightSavingsOffset = Japanese ? 0x2029 : 0x2042;
|
||||
TimePlayedOffset = Japanese ? 0x2034 : 0x2053;
|
||||
PaletteOffset = Japanese ? 0x204C : 0x206B;
|
||||
MoneyOffset = Japanese ? 0x23BC : 0x23DB;
|
||||
JohtoBadgesOffset = Japanese ? 0x23C5 : 0x23E4;
|
||||
CurrentBoxIndexOffset = Japanese ? 0x2705 : 0x2724;
|
||||
BoxNamesOffset = Japanese ? 0x2708 : 0x2727;
|
||||
PartyOffset = Japanese ? 0x283E : 0x288A;
|
||||
PokedexCaughtOffset = Japanese ? 0x29CE : 0x2A4C;
|
||||
PokedexSeenOffset = Japanese ? 0x29EE : 0x2A6C;
|
||||
CurrentBoxOffset = Japanese ? 0x2D10 : 0x2D6C;
|
||||
GenderOffset = -1; // No gender in GSC
|
||||
break;
|
||||
case GameVersion.C:
|
||||
DaylightSavingsOffset = Japanese ? 0x2029 : 0x2042;
|
||||
TimePlayedOffset = Japanese ? 0x2034 : 0x2052;
|
||||
PaletteOffset = Japanese ? 0x204C : 0x206A;
|
||||
MoneyOffset = Japanese ? 0x23BE : 0x23DC;
|
||||
JohtoBadgesOffset = Japanese ? 0x23C7 : 0x23E5;
|
||||
CurrentBoxIndexOffset = Japanese ? 0x26E2 : 0x2700;
|
||||
BoxNamesOffset = Japanese ? 0x26E5 : 0x2703;
|
||||
PartyOffset = Japanese ? 0x281A : 0x2865;
|
||||
PokedexCaughtOffset = Japanese ? 0x29AA : 0x2A27;
|
||||
PokedexSeenOffset = Japanese ? 0x29CA : 0x2A47;
|
||||
CurrentBoxOffset = 0x2D10;
|
||||
GenderOffset = Japanese ? 0x8000 : 0x3E3D;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Configuration
|
||||
public override SaveFile Clone() { return new SAV2(Write(DSV: false)); }
|
||||
|
||||
public override int SIZE_STORED => Japanese ? PKX.SIZE_2JLIST : PKX.SIZE_2ULIST;
|
||||
public override int SIZE_PARTY => Japanese ? PKX.SIZE_2JLIST : PKX.SIZE_2ULIST;
|
||||
|
||||
public int SIZE_BOX => BoxSlotCount*SIZE_STORED;
|
||||
|
||||
public int SIZE_STOREDBOX => PokemonList2.GetDataLength(Japanese ? PokemonList2.CapacityType.StoredJP : PokemonList2.CapacityType.Stored, Japanese);
|
||||
|
||||
public override PKM BlankPKM => new PK2(null, null, Japanese);
|
||||
protected override Type PKMType => typeof(PK2);
|
||||
|
||||
public override int MaxMoveID => 251;
|
||||
public override int MaxSpeciesID => 251;
|
||||
public override int MaxAbilityID => 0;
|
||||
public override int MaxItemID => 255;
|
||||
public override int MaxBallID => 0;
|
||||
public override int MaxGameID => 99; // What do I set this to...?
|
||||
public override int MaxMoney => 999999;
|
||||
|
||||
public override int BoxCount => Japanese ? 9 : 14;
|
||||
public override int MaxEV => 65535;
|
||||
public override int MaxIV => 15;
|
||||
public override int Generation => 2;
|
||||
protected override int GiftCountMax => 0;
|
||||
public override int OTLength => Japanese ? 5 : 7;
|
||||
public override int NickLength => Japanese ? 5 : 10;
|
||||
public override int BoxSlotCount => Japanese ? 30 : 20;
|
||||
|
||||
public override bool HasParty => true;
|
||||
private int StringLength => Japanese ? PK2.STRLEN_J : PK2.STRLEN_U;
|
||||
|
||||
|
||||
// Offsets
|
||||
private int OptionsOffset { get; set; } = int.MinValue;
|
||||
private int DaylightSavingsOffset { get; set; } = int.MinValue;
|
||||
private int TimePlayedOffset { get; set; } = int.MinValue;
|
||||
private int PaletteOffset { get; set; } = int.MinValue;
|
||||
private int MoneyOffset { get; set; } = int.MinValue;
|
||||
private int JohtoBadgesOffset { get; set; } = int.MinValue;
|
||||
private int CurrentBoxIndexOffset { get; set; } = int.MinValue;
|
||||
private int BoxNamesOffset { get; set; } = int.MinValue;
|
||||
private int PartyOffset { get; set; } = int.MinValue;
|
||||
private int PokedexSeenOffset { get; set; } = int.MinValue;
|
||||
private int PokedexCaughtOffset { get; set; } = int.MinValue;
|
||||
private int CurrentBoxOffset { get; set; } = int.MinValue;
|
||||
private int GenderOffset { get; set; } = int.MinValue;
|
||||
|
||||
// Checksums
|
||||
protected override void setChecksums()
|
||||
{
|
||||
ushort accum = 0;
|
||||
for (int i = 0x2009; i <= 0x2B3A; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.C && Japanese)
|
||||
{
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x2D0D);
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x7F0D);
|
||||
}
|
||||
|
||||
for (int i = 0x2B3B; i <= 0x2B82; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.C && !Japanese)
|
||||
{
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x2D0D);
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x1F0D);
|
||||
}
|
||||
|
||||
for (int i = 0x2B83; i <= 0x2C8B; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.GS && Japanese)
|
||||
{
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x2D0D);
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x7F0D);
|
||||
}
|
||||
|
||||
for (int i = 0x2C8C; i <= 0x2D68; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.GS && !Japanese)
|
||||
{
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x2D69);
|
||||
BitConverter.GetBytes(accum).CopyTo(Data, 0x7E6D);
|
||||
}
|
||||
|
||||
}
|
||||
public override bool ChecksumsValid
|
||||
{
|
||||
get
|
||||
{
|
||||
ushort accum = 0;
|
||||
for (int i = 0x2009; i <= 0x2B3A; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.C && Japanese)
|
||||
return accum == BitConverter.ToUInt16(Data, 0x2D0D); // Japanese Crystal
|
||||
|
||||
for (int i = 0x2B3B; i <= 0x2B82; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.C && !Japanese)
|
||||
return accum == BitConverter.ToUInt16(Data, 0x2D0D); // US Crystal
|
||||
|
||||
for (int i = 0x2B83; i <= 0x2C8B; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.GS && Japanese)
|
||||
return accum == BitConverter.ToUInt16(Data, 0x2D69); // Japanese Gold/Silver
|
||||
|
||||
for (int i = 0x2C8C; i <= 0x2D68; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.GS && !Japanese)
|
||||
return accum == BitConverter.ToUInt16(Data, 0x2D69); // US Gold/Silver
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private int getChecksum()
|
||||
{
|
||||
ushort accum = 0;
|
||||
for (int i = 0x2009; i <= 0x2B3A; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.C && Japanese)
|
||||
return accum; // Japanese Crystal
|
||||
|
||||
for (int i = 0x2B3B; i <= 0x2B82; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.C && !Japanese)
|
||||
return accum; // US Crystal
|
||||
|
||||
for (int i = 0x2B83; i <= 0x2C8B; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.GS && Japanese)
|
||||
return accum; // Japanese Gold/Silver
|
||||
|
||||
for (int i = 0x2C8C; i <= 0x2D68; i++)
|
||||
accum += Data[i];
|
||||
if (Version == GameVersion.GS && !Japanese)
|
||||
return accum; // US Gold/Silver
|
||||
|
||||
return 0;
|
||||
}
|
||||
public override string ChecksumInfo => ChecksumsValid ? "Checksum valid." : "Checksum invalid";
|
||||
|
||||
// Trainer Info
|
||||
public override GameVersion Version { get; protected set; }
|
||||
|
||||
public override string OT
|
||||
{
|
||||
get { return PKX.getG1Str(Data.Skip(0x200B).Take(StringLength).ToArray(), Japanese); }
|
||||
set
|
||||
{
|
||||
byte[] strdata = PKX.setG1Str(value, Japanese);
|
||||
if (strdata.Length > StringLength)
|
||||
throw new ArgumentException("OT Name too long for given save file.");
|
||||
strdata.CopyTo(Data, 0x200B);
|
||||
}
|
||||
}
|
||||
public override int Gender
|
||||
{
|
||||
get { return Version == GameVersion.C ? Data[GenderOffset] : 0; }
|
||||
set
|
||||
{
|
||||
if (Version != GameVersion.C)
|
||||
return;
|
||||
Data[GenderOffset] = (byte) value;
|
||||
Data[PaletteOffset] = (byte) value;
|
||||
}
|
||||
}
|
||||
public override ushort TID
|
||||
{
|
||||
get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, 0x2009)); }
|
||||
set { BitConverter.GetBytes(Util.SwapEndianness(value)).CopyTo(Data, 0x2009); }
|
||||
}
|
||||
public override ushort SID
|
||||
{
|
||||
get { return 0; }
|
||||
set { }
|
||||
}
|
||||
public override int PlayedHours
|
||||
{
|
||||
get { return Util.SwapEndianness(BitConverter.ToUInt16(Data, TimePlayedOffset)); }
|
||||
set { BitConverter.GetBytes(Util.SwapEndianness((ushort)value)).CopyTo(Data,TimePlayedOffset); }
|
||||
}
|
||||
public override int PlayedMinutes
|
||||
{
|
||||
get { return Data[TimePlayedOffset+2]; }
|
||||
set { Data[TimePlayedOffset+2] = (byte)value; }
|
||||
}
|
||||
public override int PlayedSeconds
|
||||
{
|
||||
get { return Data[TimePlayedOffset + 3]; }
|
||||
set { Data[TimePlayedOffset + 3] = (byte)value; }
|
||||
}
|
||||
|
||||
public int Badges
|
||||
{
|
||||
get { return BitConverter.ToUInt16(Data, JohtoBadgesOffset); }
|
||||
set { if (value < 0) return; BitConverter.GetBytes(value).CopyTo(Data, JohtoBadgesOffset); }
|
||||
}
|
||||
private byte Options
|
||||
{
|
||||
get { return Data[0x2000]; }
|
||||
set { Data[0x2000] = value; }
|
||||
}
|
||||
public bool BattleEffects
|
||||
{
|
||||
get { return (Options & 0x80) == 0; }
|
||||
set { Options = (byte)((Options & 0x7F) | (value ? 0 : 0x80)); }
|
||||
}
|
||||
public bool BattleStyleSwitch
|
||||
{
|
||||
get { return (Options & 0x40) == 0; }
|
||||
set { Options = (byte)((Options & 0xBF) | (value ? 0 : 0x40)); }
|
||||
}
|
||||
public int Sound
|
||||
{
|
||||
get { return (Options & 0x30) >> 4; }
|
||||
set
|
||||
{
|
||||
var new_sound = value;
|
||||
if (new_sound > 0)
|
||||
new_sound = 2; // Stereo
|
||||
if (new_sound < 0)
|
||||
new_sound = 0; // Mono
|
||||
Options = (byte)((Options & 0xCF) | (new_sound << 4));
|
||||
}
|
||||
}
|
||||
public int TextSpeed
|
||||
{
|
||||
get { return Options & 0x7; }
|
||||
set
|
||||
{
|
||||
var new_speed = value;
|
||||
if (new_speed > 7)
|
||||
new_speed = 7;
|
||||
if (new_speed < 0)
|
||||
new_speed = 0;
|
||||
Options = (byte)((Options & 0xF8) | new_speed);
|
||||
}
|
||||
}
|
||||
public override uint Money
|
||||
{
|
||||
get { return Util.SwapEndianness(BitConverter.ToUInt32(Data, MoneyOffset)) >> 8; }
|
||||
set
|
||||
{
|
||||
BitConverter.GetBytes(Util.SwapEndianness(value > 999999 ? 999999 : value)).Skip(1).ToArray().CopyTo(Data, MoneyOffset);
|
||||
}
|
||||
}
|
||||
public uint Coin
|
||||
{
|
||||
get
|
||||
{
|
||||
return Util.SwapEndianness(BitConverter.ToUInt16(Data, MoneyOffset+7));
|
||||
}
|
||||
set
|
||||
{
|
||||
BitConverter.GetBytes(Util.SwapEndianness(value > 9999 ? 9999 : value)).ToArray().CopyTo(Data, MoneyOffset + 7);
|
||||
}
|
||||
}
|
||||
|
||||
private readonly ushort[] LegalItems, LegalKeyItems, LegalBalls, LegalTMHMs;
|
||||
public override InventoryPouch[] Inventory
|
||||
{
|
||||
get
|
||||
{
|
||||
InventoryPouch[] pouch;
|
||||
if (Version == GameVersion.C)
|
||||
{
|
||||
pouch = new[]
|
||||
{
|
||||
new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 1, Japanese ? 0x23C9 : 0x23E7, 57),
|
||||
new InventoryPouch(InventoryType.Items, LegalItems, 99, Japanese ? 0x2402 : 0x2420, 20),
|
||||
new InventoryPouch(InventoryType.KeyItems, LegalKeyItems, 1, Japanese ? 0x242C : 0x244A, 26),
|
||||
new InventoryPouch(InventoryType.Balls, LegalBalls, 99, Japanese ? 0x2447 : 0x2465, 12),
|
||||
new InventoryPouch(InventoryType.MailItems, LegalItems.Concat(LegalKeyItems).Concat(LegalBalls).Concat(LegalTMHMs).ToArray(), 99, Japanese ? 0x2461 : 0x247F, 50)
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
pouch = new[]
|
||||
{
|
||||
new InventoryPouch(InventoryType.TMHMs, LegalTMHMs, 1, Japanese ? 0x23C7 : 0x23E6, 57),
|
||||
new InventoryPouch(InventoryType.Items, LegalItems, 99, Japanese ? 0x2400 : 0x241F, 20),
|
||||
new InventoryPouch(InventoryType.KeyItems, LegalKeyItems, 99, Japanese ? 0x242A : 0x2449, 26),
|
||||
new InventoryPouch(InventoryType.Balls, LegalBalls, 99, Japanese ? 0x2445 : 0x2464, 12),
|
||||
new InventoryPouch(InventoryType.MailItems, LegalItems.Concat(LegalKeyItems).Concat(LegalBalls).Concat(LegalTMHMs).ToArray(), 99, Japanese ? 0x245F : 0x247E, 50)
|
||||
};
|
||||
}
|
||||
foreach (var p in pouch)
|
||||
{
|
||||
p.getPouchG1(ref Data);
|
||||
}
|
||||
return pouch;
|
||||
}
|
||||
set
|
||||
{
|
||||
foreach (var p in value)
|
||||
{
|
||||
int ofs = 0;
|
||||
for (int i = 0; i < p.Count; i++)
|
||||
{
|
||||
while (p.Items[ofs].Count == 0)
|
||||
ofs++;
|
||||
p.Items[i] = p.Items[ofs++];
|
||||
}
|
||||
while (ofs < p.Items.Length)
|
||||
p.Items[ofs++] = new InventoryItem { Count = 0, Index = 0 };
|
||||
p.setPouchG1(ref Data);
|
||||
}
|
||||
}
|
||||
}
|
||||
public override int getDaycareSlotOffset(int loc, int slot)
|
||||
{
|
||||
return Daycare;
|
||||
}
|
||||
public override ulong? getDaycareRNGSeed(int loc)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public override uint? getDaycareEXP(int loc, int slot)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public override bool? getDaycareOccupied(int loc, int slot)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public override void setDaycareEXP(int loc, int slot, uint EXP)
|
||||
{
|
||||
|
||||
}
|
||||
public override void setDaycareOccupied(int loc, int slot, bool occupied)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Storage
|
||||
public override int PartyCount
|
||||
{
|
||||
get { return Data[PartyOffset]; }
|
||||
protected set
|
||||
{
|
||||
Data[PartyOffset] = (byte)value;
|
||||
}
|
||||
}
|
||||
public override int getBoxOffset(int box)
|
||||
{
|
||||
return Data.Length - SIZE_RESERVED + box * SIZE_BOX;
|
||||
}
|
||||
public override int getPartyOffset(int slot)
|
||||
{
|
||||
return Data.Length - SIZE_RESERVED + BoxCount * SIZE_BOX + slot * SIZE_STORED;
|
||||
}
|
||||
public override int CurrentBox
|
||||
{
|
||||
get { return Data[CurrentBoxIndexOffset] & 0x7F; }
|
||||
set { Data[CurrentBoxIndexOffset] = (byte)((Data[Japanese ? 0x2842 : 0x284C] & 0x80) | (value & 0x7F)); }
|
||||
}
|
||||
public override int getBoxWallpaper(int box)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
public override string getBoxName(int box)
|
||||
{
|
||||
return PKX.getG1Str(Data.Skip(BoxNamesOffset + box*9).Take(9).ToArray(), Japanese);
|
||||
}
|
||||
public override void setBoxName(int box, string value)
|
||||
{
|
||||
// Don't allow for custom box names
|
||||
}
|
||||
|
||||
public override PKM getPKM(byte[] data)
|
||||
{
|
||||
if (data.Length == SIZE_STORED)
|
||||
return new PokemonList2(data, PokemonList2.CapacityType.Single, Japanese)[0];
|
||||
return new PK2(data);
|
||||
}
|
||||
public override byte[] decryptPKM(byte[] data)
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
// Pokédex
|
||||
public override bool getSeen(PKM pkm)
|
||||
{
|
||||
if (pkm.Species == 0)
|
||||
return false;
|
||||
if (pkm.Species > MaxSpeciesID)
|
||||
return false;
|
||||
if (Version == GameVersion.Unknown)
|
||||
return false;
|
||||
|
||||
int bit = pkm.Species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
// Get the Seen Flag
|
||||
return (Data[PokedexSeenOffset + ofs] & bitval) != 0;
|
||||
}
|
||||
public override bool getCaught(PKM pkm)
|
||||
{
|
||||
if (pkm.Species == 0)
|
||||
return false;
|
||||
if (pkm.Species > MaxSpeciesID)
|
||||
return false;
|
||||
if (Version == GameVersion.Unknown)
|
||||
return false;
|
||||
|
||||
int bit = pkm.Species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
// Get the Caught Flag
|
||||
return (Data[PokedexCaughtOffset + ofs] & bitval) != 0;
|
||||
}
|
||||
protected internal override void setSeen(PKM pkm, bool seen = true)
|
||||
{
|
||||
if (pkm.Species == 0)
|
||||
return;
|
||||
if (pkm.Species > MaxSpeciesID)
|
||||
return;
|
||||
if (Version == GameVersion.Unknown)
|
||||
return;
|
||||
|
||||
int bit = pkm.Species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
// Set the Seen Flag
|
||||
Data[PokedexSeenOffset + ofs] &= (byte)(~bitval);
|
||||
if (seen)
|
||||
Data[PokedexSeenOffset + ofs] |= bitval;
|
||||
}
|
||||
protected internal override void setCaught(PKM pkm, bool caught = true)
|
||||
{
|
||||
if (pkm.Species == 0)
|
||||
return;
|
||||
if (pkm.Species > MaxSpeciesID)
|
||||
return;
|
||||
if (Version == GameVersion.Unknown)
|
||||
return;
|
||||
|
||||
int bit = pkm.Species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
// Set the Captured Flag
|
||||
Data[PokedexCaughtOffset + ofs] &= (byte)(~bitval);
|
||||
if (caught)
|
||||
{
|
||||
Data[PokedexCaughtOffset + ofs] |= bitval;
|
||||
if (pkm.Species == 201) // Unown
|
||||
{
|
||||
// Give all Unown caught to prevent a crash on pokedex view
|
||||
for (int i = 1; i <= 26; i++)
|
||||
{
|
||||
Data[PokedexSeenOffset + 0x1F + i] = (byte)(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace PKHeX
|
||||
{
|
||||
public sealed class SAV3 : SaveFile
|
||||
{
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version})" +/* - {LastSavedTime}*/ "].bak";
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version}) - {PlayTimeString}].bak";
|
||||
public override string Filter => "SAV File|*.sav";
|
||||
public override string Extension => ".sav";
|
||||
|
||||
@@ -152,7 +152,7 @@ public override byte[] Write(bool DSV)
|
||||
private readonly int[] BlockOfs;
|
||||
|
||||
// Configuration
|
||||
public override SaveFile Clone() { return new SAV3(Data.Take(Box).ToArray(), Version); }
|
||||
public override SaveFile Clone() { return new SAV3(Write(DSV:false), Version); }
|
||||
|
||||
public override int SIZE_STORED => PKX.SIZE_3STORED;
|
||||
public override int SIZE_PARTY => PKX.SIZE_3PARTY;
|
||||
@@ -172,6 +172,7 @@ public override byte[] Write(bool DSV)
|
||||
protected override int GiftCountMax => 1;
|
||||
public override int OTLength => 8;
|
||||
public override int NickLength => 10;
|
||||
public override int MaxMoney => 999999;
|
||||
|
||||
public override bool HasParty => true;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace PKHeX
|
||||
{
|
||||
public sealed class SAV4 : SaveFile
|
||||
{
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version})" +/* - {LastSavedTime}*/ "].bak";
|
||||
public override string BAKName => $"{FileName} [{OT} ({Version}) - {PlayTimeString}].bak";
|
||||
public override string Filter => (Footer.Length > 0 ? "DeSmuME DSV|*.dsv|" : "") + "SAV File|*.sav";
|
||||
public override string Extension => ".sav";
|
||||
public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
|
||||
@@ -53,6 +53,7 @@ public SAV4(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
|
||||
protected override int GiftCountMax => 11;
|
||||
public override int OTLength => 8;
|
||||
public override int NickLength => 10;
|
||||
public override int MaxMoney => 999999;
|
||||
|
||||
public override int MaxMoveID => 467;
|
||||
public override int MaxSpeciesID => 493;
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace PKHeX
|
||||
public sealed class SAV5 : SaveFile
|
||||
{
|
||||
// Save Data Attributes
|
||||
public override string BAKName => $"{FileName} [{OT} ({(GameVersion)Game})" +/* - {LastSavedTime}*/ "].bak";
|
||||
public override string BAKName => $"{FileName} [{OT} ({(GameVersion)Game}) - {PlayTimeString}].bak";
|
||||
public override string Filter => (Footer.Length > 0 ? "DeSmuME DSV|*.dsv|" : "") + "SAV File|*.sav";
|
||||
public override string Extension => ".sav";
|
||||
public SAV5(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
|
||||
|
||||
@@ -20,6 +20,7 @@ public abstract class SaveFile
|
||||
public abstract string Filter { get; }
|
||||
public byte[] Footer { protected get; set; } = new byte[0]; // .dsv
|
||||
public bool Japanese { protected get; set; }
|
||||
public string PlayTimeString => $"{PlayedHours}ː{PlayedMinutes.ToString("00")}ː{PlayedSeconds.ToString("00")}"; // not :
|
||||
|
||||
public bool GetJapanese => Japanese;
|
||||
|
||||
@@ -63,6 +64,8 @@ public virtual byte[] Write(bool DSV)
|
||||
public bool RS => Version == GameVersion.RS;
|
||||
public bool RBY => Version == GameVersion.RBY;
|
||||
|
||||
public bool GSC => Version == GameVersion.GS || Version == GameVersion.C;
|
||||
|
||||
public virtual int MaxMoveID => int.MaxValue;
|
||||
public virtual int MaxSpeciesID => int.MaxValue;
|
||||
public virtual int MaxAbilityID => int.MaxValue;
|
||||
@@ -102,6 +105,7 @@ public virtual byte[] Write(bool DSV)
|
||||
public virtual int DaycareSeedSize { get; } = 0;
|
||||
public abstract int OTLength { get; }
|
||||
public abstract int NickLength { get; }
|
||||
public virtual int MaxMoney { get; } = 9999999;
|
||||
|
||||
// Offsets
|
||||
protected int Box { get; set; } = int.MinValue;
|
||||
@@ -324,7 +328,7 @@ public virtual MysteryGiftAlbum GiftAlbum
|
||||
public abstract int getDaycareSlotOffset(int loc, int slot);
|
||||
public abstract uint? getDaycareEXP(int loc, int slot);
|
||||
public virtual ulong? getDaycareRNGSeed(int loc) { return null; }
|
||||
public virtual bool? getDaycareHasEgg(int loc) { return false; }
|
||||
public virtual bool? getDaycareHasEgg(int loc) { return null; }
|
||||
public abstract bool? getDaycareOccupied(int loc, int slot);
|
||||
|
||||
public abstract void setDaycareEXP(int loc, int slot, uint EXP);
|
||||
@@ -463,7 +467,7 @@ public bool setPCBin(byte[] data)
|
||||
|
||||
PKM[] pkms = BoxData;
|
||||
for (int i = 0; i < pkms.Length; i++)
|
||||
pkms[i].Data = decryptPKM(pkdata[i]);
|
||||
pkms[i] = getPKM(decryptPKM(pkdata[i]));
|
||||
BoxData = pkms;
|
||||
return true;
|
||||
}
|
||||
@@ -481,7 +485,7 @@ public bool setBoxBin(byte[] data, int box)
|
||||
|
||||
PKM[] pkms = BoxData;
|
||||
for (int i = 0; i < BoxSlotCount; i++)
|
||||
pkms[box*BoxSlotCount + i].Data = decryptPKM(pkdata[i]);
|
||||
pkms[box*BoxSlotCount + i] = getPKM(decryptPKM(pkdata[i]));
|
||||
BoxData = pkms;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@ namespace PKHeX
|
||||
{
|
||||
public enum GameVersion
|
||||
{
|
||||
/* I don't want to assign Gen I/II... */
|
||||
GS = -4,
|
||||
C = -3,
|
||||
Invalid = -2,
|
||||
Any = -1,
|
||||
Unknown = 0,
|
||||
@@ -45,6 +48,11 @@ public static class SaveUtil
|
||||
internal const int SIZE_G4RAW = 0x80000;
|
||||
internal const int SIZE_G3RAW = 0x20000;
|
||||
internal const int SIZE_G3RAWHALF = 0x10000;
|
||||
internal const int SIZE_G2RAW_U = 0x8000;
|
||||
internal const int SIZE_G2BAT_U = 0x802C;
|
||||
internal const int SIZE_G2EMU = 0x8030;
|
||||
internal const int SIZE_G2RAW_J = 0x10000;
|
||||
internal const int SIZE_G2BAT_J = 0x1002C;
|
||||
internal const int SIZE_G1RAW = 0x8000;
|
||||
internal const int SIZE_G1BAT = 0x802C;
|
||||
|
||||
@@ -57,6 +65,8 @@ public static int getSAVGeneration(byte[] data)
|
||||
{
|
||||
if (getIsG1SAV(data) != GameVersion.Invalid)
|
||||
return 1;
|
||||
if (getIsG2SAV(data) != GameVersion.Invalid)
|
||||
return 2;
|
||||
if (getIsG3SAV(data) != GameVersion.Invalid)
|
||||
return 3;
|
||||
if (getIsG4SAV(data) != GameVersion.Invalid)
|
||||
@@ -108,6 +118,71 @@ public static bool getIsG1SAVJ(byte[] data)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/// <summary>Determines the type of 2nd gen save</summary>
|
||||
/// <param name="data">Save data of which to determine the type</param>
|
||||
/// <returns>Version Identifier or Invalid if type cannot be determined.</returns>
|
||||
public static GameVersion getIsG2SAV(byte[] data)
|
||||
{
|
||||
if (data.Length != SIZE_G2RAW_U && data.Length != SIZE_G2BAT_U && data.Length != SIZE_G2RAW_J && data.Length != SIZE_G2BAT_J && data.Length != SIZE_G2EMU)
|
||||
return GameVersion.Invalid;
|
||||
|
||||
// Check if it's not an american save or a japanese save
|
||||
if (getIsG2SAVU(data) != GameVersion.Invalid)
|
||||
return getIsG2SAVU(data);
|
||||
if (getIsG2SAVJ(data) != GameVersion.Invalid)
|
||||
return getIsG2SAVJ(data);
|
||||
return GameVersion.Invalid;
|
||||
}
|
||||
/// <summary>Determines if 2nd gen save is non-japanese</summary>
|
||||
/// <param name="data">Save data of which to determine the region</param>
|
||||
/// <returns>True if a valid non-japanese save, False otherwise.</returns>
|
||||
public static GameVersion getIsG2SAVU(byte[] data)
|
||||
{
|
||||
bool gs = true;
|
||||
bool c = true;
|
||||
foreach (int ofs in new[] { 0x288A, 0x2D6C })
|
||||
{
|
||||
byte num_entries = data[ofs];
|
||||
if (num_entries > 20 || data[ofs + 1 + num_entries] != 0xFF)
|
||||
gs = false;
|
||||
}
|
||||
foreach (int ofs in new[] { 0x2865, 0x2D10 })
|
||||
{
|
||||
byte num_entries = data[ofs];
|
||||
if (num_entries > 20 || data[ofs + 1 + num_entries] != 0xFF)
|
||||
c = false;
|
||||
}
|
||||
if (gs)
|
||||
return GameVersion.GS;
|
||||
if (c)
|
||||
return GameVersion.C;
|
||||
return GameVersion.Invalid;
|
||||
}
|
||||
/// <summary>Determines if 2nd gen save is japanese</summary>
|
||||
/// <param name="data">Save data of which to determine the region</param>
|
||||
/// <returns>True if a valid japanese save, False otherwise.</returns>
|
||||
public static GameVersion getIsG2SAVJ(byte[] data)
|
||||
{
|
||||
bool gs = true;
|
||||
bool c = true;
|
||||
foreach (int ofs in new[] { 0x283E, 0x2D10 })
|
||||
{
|
||||
byte num_entries = data[ofs];
|
||||
if (num_entries > 30 || data[ofs + 1 + num_entries] != 0xFF)
|
||||
gs = false;
|
||||
}
|
||||
foreach (int ofs in new[] { 0x281A, 0x2D10 })
|
||||
{
|
||||
byte num_entries = data[ofs];
|
||||
if (num_entries > 30 || data[ofs + 1 + num_entries] != 0xFF)
|
||||
c = false;
|
||||
}
|
||||
if (gs)
|
||||
return GameVersion.GS;
|
||||
if (c)
|
||||
return GameVersion.C;
|
||||
return GameVersion.Invalid;
|
||||
}
|
||||
/// <summary>Determines the type of 3th gen save</summary>
|
||||
/// <param name="data">Save data of which to determine the type</param>
|
||||
/// <returns>Version Identifier or Invalid if type cannot be determined.</returns>
|
||||
@@ -218,6 +293,10 @@ public static GameVersion getVersionGroup(GameVersion Version)
|
||||
case GameVersion.RBY:
|
||||
return GameVersion.RBY;
|
||||
|
||||
case GameVersion.GS:
|
||||
case GameVersion.C:
|
||||
return GameVersion.GSC;
|
||||
|
||||
case GameVersion.R:
|
||||
case GameVersion.S:
|
||||
return GameVersion.RS;
|
||||
@@ -270,6 +349,8 @@ public static SaveFile getVariantSAV(byte[] data)
|
||||
{
|
||||
case 1:
|
||||
return new SAV1(data);
|
||||
case 2:
|
||||
return new SAV2(data);
|
||||
case 3:
|
||||
return new SAV3(data);
|
||||
case 4:
|
||||
|
||||
@@ -134,12 +134,14 @@ public RegimenInfo(string name, bool completedRegimen)
|
||||
|
||||
private void B_All_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CHK_SecretUnlocked.Checked) // only give dist if Secret is Unlocked (None -> All -> All*)
|
||||
foreach (var c in TLP_DistSuperTrain.Controls.OfType<CheckBox>())
|
||||
c.Checked = true;
|
||||
|
||||
CHK_SecretUnlocked.Checked = true;
|
||||
CHK_SecretComplete.Checked = true;
|
||||
foreach (var c in TLP_SuperTrain.Controls.OfType<CheckBox>())
|
||||
c.Checked = true;
|
||||
foreach (var c in TLP_DistSuperTrain.Controls.OfType<CheckBox>())
|
||||
c.Checked = true;
|
||||
}
|
||||
private void B_None_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
4
PKHeX/Subforms/SAV_Database.Designer.cs
generated
@@ -1768,7 +1768,9 @@ private void InitializeComponent()
|
||||
".pk6",
|
||||
".pk5",
|
||||
".pk4",
|
||||
".pk3"});
|
||||
".pk3",
|
||||
".pk2",
|
||||
".pk1"});
|
||||
this.CB_Format.Location = new System.Drawing.Point(54, 0);
|
||||
this.CB_Format.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.CB_Format.Name = "CB_Format";
|
||||
|
||||
@@ -525,8 +525,11 @@ private void setResults(List<PKM> res)
|
||||
private void FillPKXBoxes(int start)
|
||||
{
|
||||
if (Results == null)
|
||||
{
|
||||
for (int i = 0; i < RES_MAX; i++)
|
||||
PKXBOXES[i].Image = null;
|
||||
return;
|
||||
}
|
||||
PKM[] data = Results.Skip(start * RES_MIN).Take(RES_MAX).ToArray();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
PKXBOXES[i].Image = data[i].Sprite;
|
||||
@@ -591,7 +594,8 @@ private void changeFormatFilter(object sender, EventArgs e)
|
||||
else
|
||||
{
|
||||
CB_Format.Visible = true;
|
||||
CB_Format.SelectedIndex = MAXFORMAT - Main.SAV.Generation + 1; // SAV generation (offset by 1 for "Any")
|
||||
int index = MAXFORMAT - Main.SAV.Generation + 1;
|
||||
CB_Format.SelectedIndex = index < CB_Format.Items.Count ? index : 0; // SAV generation (offset by 1 for "Any")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1668
PKHeX/Subforms/SAV_MysteryGiftDB.Designer.cs
generated
Normal file
354
PKHeX/Subforms/SAV_MysteryGiftDB.cs
Normal file
@@ -0,0 +1,354 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public partial class SAV_MysteryGiftDB : Form
|
||||
{
|
||||
public SAV_MysteryGiftDB(Main f1)
|
||||
{
|
||||
m_parent = f1;
|
||||
InitializeComponent();
|
||||
|
||||
// Preset Filters to only show PKM available for loaded save
|
||||
CB_FormatComparator.SelectedIndex = 3; // <=
|
||||
|
||||
PKXBOXES = new[]
|
||||
{
|
||||
bpkx1, bpkx2, bpkx3, bpkx4, bpkx5, bpkx6,
|
||||
bpkx7, bpkx8, bpkx9, bpkx10,bpkx11,bpkx12,
|
||||
bpkx13,bpkx14,bpkx15,bpkx16,bpkx17,bpkx18,
|
||||
bpkx19,bpkx20,bpkx21,bpkx22,bpkx23,bpkx24,
|
||||
bpkx25,bpkx26,bpkx27,bpkx28,bpkx29,bpkx30,
|
||||
|
||||
bpkx31,bpkx32,bpkx33,bpkx34,bpkx35,bpkx36,
|
||||
bpkx37,bpkx38,bpkx39,bpkx40,bpkx41,bpkx42,
|
||||
bpkx43,bpkx44,bpkx45,bpkx46,bpkx47,bpkx48,
|
||||
bpkx49,bpkx50,bpkx51,bpkx52,bpkx53,bpkx54,
|
||||
bpkx55,bpkx56,bpkx57,bpkx58,bpkx59,bpkx60,
|
||||
bpkx61,bpkx62,bpkx63,bpkx64,bpkx65,bpkx66,
|
||||
};
|
||||
|
||||
// Enable Scrolling when hovered over
|
||||
PAN_Box.MouseHover += (sender, args) =>
|
||||
{
|
||||
if (ActiveForm == this)
|
||||
SCR_Box.Focus();
|
||||
};
|
||||
foreach (var slot in PKXBOXES)
|
||||
{
|
||||
slot.MouseEnter += (sender, args) =>
|
||||
{
|
||||
if (ActiveForm == this)
|
||||
SCR_Box.Focus();
|
||||
};
|
||||
// Enable Click
|
||||
slot.MouseClick += (sender, args) =>
|
||||
{
|
||||
if (ModifierKeys == Keys.Control)
|
||||
clickView(sender, args);
|
||||
};
|
||||
}
|
||||
|
||||
Counter = L_Count.Text;
|
||||
Viewed = L_Viewed.Text;
|
||||
L_Viewed.Text = ""; // invis for now
|
||||
populateComboBoxes();
|
||||
|
||||
ContextMenuStrip mnu = new ContextMenuStrip();
|
||||
ToolStripMenuItem mnuView = new ToolStripMenuItem("View");
|
||||
|
||||
// Assign event handlers
|
||||
mnuView.Click += clickView;
|
||||
|
||||
// Add to main context menu
|
||||
mnu.Items.AddRange(new ToolStripItem[] { mnuView });
|
||||
|
||||
// Assign to datagridview
|
||||
foreach (PictureBox p in PKXBOXES)
|
||||
p.ContextMenuStrip = mnu;
|
||||
|
||||
// Load Data
|
||||
RawDB = new List<MysteryGift>();
|
||||
RawDB.AddRange(Legal.WC6DB);
|
||||
|
||||
if (Directory.Exists(DatabasePath))
|
||||
foreach (string file in Directory.GetFiles(DatabasePath, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
FileInfo fi = new FileInfo(file);
|
||||
if (!MysteryGift.getIsMysteryGift(fi.Length)) continue;
|
||||
var mg = MysteryGift.getMysteryGift(File.ReadAllBytes(file), fi.Extension);
|
||||
if (mg != null)
|
||||
RawDB.Add(mg);
|
||||
}
|
||||
|
||||
RawDB = new List<MysteryGift>(RawDB.Where(mg => !mg.IsItem && mg.IsPokémon && mg.Species > 0).Distinct().OrderBy(mg => mg.Species));
|
||||
foreach (var mg in RawDB)
|
||||
mg.GiftUsed = false;
|
||||
setResults(RawDB);
|
||||
|
||||
Menu_SearchSettings.DropDown.Closing += (sender, e) =>
|
||||
{
|
||||
if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked)
|
||||
e.Cancel = true;
|
||||
};
|
||||
CenterToParent();
|
||||
}
|
||||
private readonly Main m_parent;
|
||||
private readonly PictureBox[] PKXBOXES;
|
||||
private readonly string DatabasePath = Main.WC6DatabasePath;
|
||||
private List<MysteryGift> Results;
|
||||
private readonly List<MysteryGift> RawDB;
|
||||
private int slotSelected = -1; // = null;
|
||||
private Image slotColor;
|
||||
private const int RES_MAX = 66;
|
||||
private const int RES_MIN = 6;
|
||||
private readonly string Counter;
|
||||
private readonly string Viewed;
|
||||
private const int MAXFORMAT = 6;
|
||||
|
||||
// Important Events
|
||||
private void clickView(object sender, EventArgs e)
|
||||
{
|
||||
sender = ((sender as ToolStripItem)?.Owner as ContextMenuStrip)?.SourceControl ?? sender as PictureBox;
|
||||
int index = Array.IndexOf(PKXBOXES, sender);
|
||||
|
||||
var dataArr = Results.Skip(SCR_Box.Value * RES_MIN).Take(RES_MAX).ToArray();
|
||||
if (index >= dataArr.Length)
|
||||
System.Media.SystemSounds.Exclamation.Play();
|
||||
else
|
||||
{
|
||||
m_parent.populateFields(dataArr[index].convertToPKM(Main.SAV), false);
|
||||
slotSelected = index + SCR_Box.Value * RES_MIN;
|
||||
slotColor = Properties.Resources.slotView;
|
||||
FillPKXBoxes(SCR_Box.Value);
|
||||
L_Viewed.Text = string.Format(Viewed, dataArr[index].FileName);
|
||||
}
|
||||
}
|
||||
private void populateComboBoxes()
|
||||
{
|
||||
// Set the Text
|
||||
CB_HeldItem.DisplayMember =
|
||||
CB_Species.DisplayMember = "Text";
|
||||
|
||||
// Set the Value
|
||||
CB_HeldItem.ValueMember =
|
||||
CB_Species.ValueMember = "Value";
|
||||
|
||||
var Any = new ComboItem {Text = "Any", Value = -1};
|
||||
|
||||
var DS_Species = new List<ComboItem>(Main.SpeciesDataSource);
|
||||
DS_Species.RemoveAt(0); DS_Species.Insert(0, Any); CB_Species.DataSource = DS_Species;
|
||||
|
||||
var DS_Item = new List<ComboItem>(Main.ItemDataSource);
|
||||
DS_Item.Insert(0, Any); CB_HeldItem.DataSource = DS_Item;
|
||||
|
||||
// Set the Move ComboBoxes too..
|
||||
var DS_Move = new List<ComboItem>(Main.MoveDataSource);
|
||||
DS_Move.RemoveAt(0); DS_Move.Insert(0, Any);
|
||||
{
|
||||
foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 })
|
||||
{
|
||||
cb.DisplayMember = "Text"; cb.ValueMember = "Value";
|
||||
cb.DataSource = new BindingSource(DS_Move, null);
|
||||
}
|
||||
}
|
||||
|
||||
// Trigger a Reset
|
||||
resetFilters(null, null);
|
||||
}
|
||||
private void resetFilters(object sender, EventArgs e)
|
||||
{
|
||||
CHK_Shiny.Checked = CHK_IsEgg.Checked = true;
|
||||
CHK_Shiny.CheckState = CHK_IsEgg.CheckState = CheckState.Indeterminate;
|
||||
CB_HeldItem.SelectedIndex = 0;
|
||||
CB_Species.SelectedIndex = 0;
|
||||
|
||||
CB_Move1.SelectedIndex = CB_Move2.SelectedIndex = CB_Move3.SelectedIndex = CB_Move4.SelectedIndex = 0;
|
||||
RTB_Instructions.Clear();
|
||||
|
||||
if (sender != null)
|
||||
System.Media.SystemSounds.Asterisk.Play();
|
||||
}
|
||||
|
||||
// IO Usage
|
||||
private void openDB(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(DatabasePath))
|
||||
Process.Start("explorer.exe", DatabasePath);
|
||||
}
|
||||
private void Menu_Export_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Results == null || Results.Count == 0)
|
||||
{ Util.Alert("No results to export."); return; }
|
||||
|
||||
if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, "Export to a folder?"))
|
||||
return;
|
||||
|
||||
FolderBrowserDialog fbd = new FolderBrowserDialog();
|
||||
if (DialogResult.OK != fbd.ShowDialog())
|
||||
return;
|
||||
|
||||
string path = fbd.SelectedPath;
|
||||
if (!Directory.Exists(path)) // just in case...
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
foreach (var gift in Results)
|
||||
File.WriteAllBytes(Path.Combine(path, Util.CleanFileName(gift.FileName)), gift.Data);
|
||||
}
|
||||
|
||||
// View Updates
|
||||
private void B_Search_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Populate Search Query Result
|
||||
IEnumerable<MysteryGift> res = RawDB;
|
||||
|
||||
int format = MAXFORMAT + 1 - CB_Format.SelectedIndex;
|
||||
|
||||
switch (CB_FormatComparator.SelectedIndex)
|
||||
{
|
||||
case 0: /* Do nothing */ break;
|
||||
case 1: res = res.Where(mg => mg.Format >= format); break;
|
||||
case 2: res = res.Where(mg => mg.Format == format); break;
|
||||
case 3: res = res.Where(mg => mg.Format <= format); break;
|
||||
}
|
||||
|
||||
// Primary Searchables
|
||||
int species = Util.getIndex(CB_Species);
|
||||
int item = Util.getIndex(CB_HeldItem);
|
||||
if (species != -1) res = res.Where(pk => pk.Species == species);
|
||||
if (item != -1) res = res.Where(pk => pk.HeldItem == item);
|
||||
|
||||
// Secondary Searchables
|
||||
int move1 = Util.getIndex(CB_Move1);
|
||||
int move2 = Util.getIndex(CB_Move2);
|
||||
int move3 = Util.getIndex(CB_Move3);
|
||||
int move4 = Util.getIndex(CB_Move4);
|
||||
if (move1 != -1) res = res.Where(pk => pk.Moves.Contains(move1));
|
||||
if (move2 != -1) res = res.Where(pk => pk.Moves.Contains(move2));
|
||||
if (move3 != -1) res = res.Where(pk => pk.Moves.Contains(move3));
|
||||
if (move4 != -1) res = res.Where(pk => pk.Moves.Contains(move4));
|
||||
if (CHK_Shiny.CheckState == CheckState.Checked) res = res.Where(pk => pk.IsShiny);
|
||||
if (CHK_Shiny.CheckState == CheckState.Unchecked) res = res.Where(pk => !pk.IsShiny);
|
||||
if (CHK_IsEgg.CheckState == CheckState.Checked) res = res.Where(pk => pk.IsEgg);
|
||||
if (CHK_IsEgg.CheckState == CheckState.Unchecked) res = res.Where(pk => !pk.IsEgg);
|
||||
|
||||
slotSelected = -1; // reset the slot last viewed
|
||||
|
||||
if (RTB_Instructions.Lines.Any(line => line.Length > 0))
|
||||
{
|
||||
var raw =
|
||||
RTB_Instructions.Lines
|
||||
.Where(line => !string.IsNullOrWhiteSpace(line))
|
||||
.Where(line => new[] { '!', '=' }.Contains(line[0]));
|
||||
|
||||
var filters = (from line in raw
|
||||
let eval = line[0] == '='
|
||||
let split = line.Substring(1).Split('=')
|
||||
where split.Length == 2 && !string.IsNullOrWhiteSpace(split[0])
|
||||
select new BatchEditor.StringInstruction { PropertyName = split[0], PropertyValue = split[1], Evaluator = eval }).ToArray();
|
||||
|
||||
if (filters.Any(z => string.IsNullOrWhiteSpace(z.PropertyValue)))
|
||||
{ Util.Error("Empty Filter Value detected."); return; }
|
||||
|
||||
res = res.Where(gift => // Compare across all filters
|
||||
{
|
||||
foreach (var cmd in filters)
|
||||
{
|
||||
if (!gift.GetType().HasProperty(cmd.PropertyName))
|
||||
return false;
|
||||
try { if (ReflectUtil.GetValueEquals(gift, cmd.PropertyName, cmd.PropertyValue) == cmd.Evaluator) continue; }
|
||||
catch { Console.WriteLine($"Unable to compare {cmd.PropertyName} to {cmd.PropertyValue}."); }
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
var results = res.ToArray();
|
||||
if (results.Length == 0)
|
||||
{
|
||||
Util.Alert("No results found!");
|
||||
}
|
||||
setResults(new List<MysteryGift>(results)); // updates Count Label as well.
|
||||
System.Media.SystemSounds.Asterisk.Play();
|
||||
}
|
||||
private void updateScroll(object sender, ScrollEventArgs e)
|
||||
{
|
||||
if (e.OldValue != e.NewValue)
|
||||
FillPKXBoxes(e.NewValue);
|
||||
}
|
||||
private void setResults(List<MysteryGift> res)
|
||||
{
|
||||
Results = new List<MysteryGift>(res);
|
||||
|
||||
SCR_Box.Maximum = (int)Math.Ceiling((decimal)Results.Count / RES_MIN);
|
||||
if (SCR_Box.Maximum > 0) SCR_Box.Maximum -= 1;
|
||||
|
||||
SCR_Box.Value = 0;
|
||||
FillPKXBoxes(0);
|
||||
|
||||
L_Count.Text = string.Format(Counter, Results.Count);
|
||||
}
|
||||
private void FillPKXBoxes(int start)
|
||||
{
|
||||
if (Results == null)
|
||||
{
|
||||
for (int i = 0; i < RES_MAX; i++)
|
||||
PKXBOXES[i].Image = null;
|
||||
return;
|
||||
}
|
||||
var data = Results.Skip(start * RES_MIN).Take(RES_MAX).ToArray();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
PKXBOXES[i].Image = SAV_Wondercard.getSprite(data[i]);
|
||||
for (int i = data.Length; i < RES_MAX; i++)
|
||||
PKXBOXES[i].Image = null;
|
||||
|
||||
for (int i = 0; i < RES_MAX; i++)
|
||||
PKXBOXES[i].BackgroundImage = Properties.Resources.slotTrans;
|
||||
if (slotSelected != -1 && slotSelected >= RES_MIN * start && slotSelected < RES_MIN * start + RES_MAX)
|
||||
PKXBOXES[slotSelected - start * RES_MIN].BackgroundImage = slotColor ?? Properties.Resources.slotView;
|
||||
}
|
||||
|
||||
private void Menu_SearchAdvanced_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Menu_SearchAdvanced.Checked)
|
||||
{ Size = MinimumSize; RTB_Instructions.Clear(); }
|
||||
else Size = MaximumSize;
|
||||
}
|
||||
|
||||
private void Menu_Exit_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
protected override void OnMouseWheel(MouseEventArgs e)
|
||||
{
|
||||
if (!PAN_Box.RectangleToScreen(PAN_Box.ClientRectangle).Contains(MousePosition))
|
||||
return;
|
||||
int oldval = SCR_Box.Value;
|
||||
int newval = oldval + (e.Delta < 0 ? 1 : -1);
|
||||
if (newval >= SCR_Box.Minimum && SCR_Box.Maximum >= newval)
|
||||
FillPKXBoxes(SCR_Box.Value = newval);
|
||||
}
|
||||
|
||||
private void changeFormatFilter(object sender, EventArgs e)
|
||||
{
|
||||
if (CB_FormatComparator.SelectedIndex == 0)
|
||||
{
|
||||
CB_Format.Visible = false; // !any
|
||||
CB_Format.SelectedIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
CB_Format.Visible = true;
|
||||
int index = MAXFORMAT - Main.SAV.Generation + 1;
|
||||
CB_Format.SelectedIndex = index < CB_Format.Items.Count ? index : 0; // SAV generation (offset by 1 for "Any")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
420
PKHeX/Subforms/SAV_MysteryGiftDB.resx
Normal file
@@ -0,0 +1,420 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="bpkx30.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx29.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx28.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx27.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx26.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx25.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx24.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx23.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx22.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx21.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx20.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx19.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx18.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx17.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx16.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx15.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx14.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx13.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx12.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx11.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx10.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx9.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx8.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx7.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx6.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx60.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx59.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx58.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx57.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx56.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx55.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx54.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx53.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx52.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx51.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx50.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx49.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx48.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx47.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx46.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx45.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx44.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx43.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx42.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx41.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx40.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx39.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx38.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx37.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx36.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx35.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx34.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx33.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx32.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx31.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="menuStrip1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx66.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx65.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx64.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx63.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx62.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="bpkx61.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq
|
||||
KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+
|
||||
vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li
|
||||
4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg
|
||||
4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly
|
||||
8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz
|
||||
8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v//
|
||||
//+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P
|
||||
Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA
|
||||
Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK
|
||||
k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF
|
||||
Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P
|
||||
aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N
|
||||
pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT
|
||||
vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV
|
||||
yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ
|
||||
yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq
|
||||
rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
|
||||
AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY
|
||||
GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e
|
||||
HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq
|
||||
quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq
|
||||
quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY
|
||||
2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY
|
||||
2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra
|
||||
2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
|
||||
3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna
|
||||
2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
|
||||
4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ
|
||||
WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li
|
||||
4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA
|
||||
AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk
|
||||
5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb
|
||||
2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl
|
||||
5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh
|
||||
4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm
|
||||
5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk
|
||||
4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn
|
||||
5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn
|
||||
5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn
|
||||
5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq
|
||||
6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn
|
||||
5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA
|
||||
AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl
|
||||
5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR
|
||||
0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA
|
||||
AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk
|
||||
5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG
|
||||
RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn
|
||||
5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||
AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||
AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||
AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC
|
||||
LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC
|
||||
K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ
|
||||
rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK
|
||||
s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL
|
||||
p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC
|
||||
Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK
|
||||
ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||
AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE
|
||||
UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA
|
||||
AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA
|
||||
AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER
|
||||
w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL
|
||||
pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER
|
||||
wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P
|
||||
tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT
|
||||
wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER
|
||||
vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV
|
||||
wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV
|
||||
wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV
|
||||
xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW
|
||||
yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV
|
||||
x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
|
||||
zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl
|
||||
eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX
|
||||
zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA
|
||||
AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ
|
||||
zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws
|
||||
p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb
|
||||
ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB//////
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -48,11 +48,18 @@ private void Setup()
|
||||
dgv.Columns.Add(dgvIndex);
|
||||
dgv.Columns.Add(dgvPuff);
|
||||
|
||||
dgv.Rows.Add(100);
|
||||
for (int i = 0; i < 100; i++)
|
||||
var Puffs = SAV.Puffs;
|
||||
dgv.Rows.Add(Puffs.Length);
|
||||
for (int i = 0; i < Puffs.Length; i++)
|
||||
{
|
||||
dgv.Rows[i].Cells[0].Value = (i + 1).ToString();
|
||||
dgv.Rows[i].Cells[1].Value = pfa[SAV.Data[SAV.Puff + i]];
|
||||
int puffval = Puffs[i];
|
||||
if (puffval >= pfa.Length)
|
||||
{
|
||||
Util.Error($"Invalid Puff Index: {i}", $"Expected < ${pfa.Length}");
|
||||
puffval = 0;
|
||||
}
|
||||
dgv.Rows[i].Cells[1].Value = pfa[puffval];
|
||||
}
|
||||
MT_CNT.Text = SAV.PuffCount.ToString();
|
||||
}
|
||||
|
||||
@@ -396,12 +396,12 @@ private void InitializeComponent()
|
||||
//
|
||||
// L_PKFriendship
|
||||
//
|
||||
this.L_PKFriendship.AutoSize = true;
|
||||
this.L_PKFriendship.Location = new System.Drawing.Point(265, 166);
|
||||
this.L_PKFriendship.Location = new System.Drawing.Point(245, 163);
|
||||
this.L_PKFriendship.Name = "L_PKFriendship";
|
||||
this.L_PKFriendship.Size = new System.Drawing.Size(55, 13);
|
||||
this.L_PKFriendship.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_PKFriendship.TabIndex = 82;
|
||||
this.L_PKFriendship.Text = "Friendship";
|
||||
this.L_PKFriendship.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// CB_Ball
|
||||
//
|
||||
@@ -451,7 +451,7 @@ private void InitializeComponent()
|
||||
this.CHK_Shiny.AutoSize = true;
|
||||
this.CHK_Shiny.Location = new System.Drawing.Point(146, 92);
|
||||
this.CHK_Shiny.Name = "CHK_Shiny";
|
||||
this.CHK_Shiny.Size = new System.Drawing.Size(38, 17);
|
||||
this.CHK_Shiny.Size = new System.Drawing.Size(35, 17);
|
||||
this.CHK_Shiny.TabIndex = 77;
|
||||
this.CHK_Shiny.Text = "☆";
|
||||
this.CHK_Shiny.UseVisualStyleBackColor = true;
|
||||
@@ -514,7 +514,7 @@ private void InitializeComponent()
|
||||
this.CB_Move4.FormattingEnabled = true;
|
||||
this.CB_Move4.Location = new System.Drawing.Point(15, 225);
|
||||
this.CB_Move4.Name = "CB_Move4";
|
||||
this.CB_Move4.Size = new System.Drawing.Size(121, 21);
|
||||
this.CB_Move4.Size = new System.Drawing.Size(122, 21);
|
||||
this.CB_Move4.TabIndex = 74;
|
||||
//
|
||||
// CB_PPu1
|
||||
@@ -538,7 +538,7 @@ private void InitializeComponent()
|
||||
this.CB_Move3.FormattingEnabled = true;
|
||||
this.CB_Move3.Location = new System.Drawing.Point(15, 203);
|
||||
this.CB_Move3.Name = "CB_Move3";
|
||||
this.CB_Move3.Size = new System.Drawing.Size(121, 21);
|
||||
this.CB_Move3.Size = new System.Drawing.Size(122, 21);
|
||||
this.CB_Move3.TabIndex = 72;
|
||||
//
|
||||
// CB_Move2
|
||||
@@ -548,7 +548,7 @@ private void InitializeComponent()
|
||||
this.CB_Move2.FormattingEnabled = true;
|
||||
this.CB_Move2.Location = new System.Drawing.Point(15, 181);
|
||||
this.CB_Move2.Name = "CB_Move2";
|
||||
this.CB_Move2.Size = new System.Drawing.Size(121, 21);
|
||||
this.CB_Move2.Size = new System.Drawing.Size(122, 21);
|
||||
this.CB_Move2.TabIndex = 70;
|
||||
//
|
||||
// CB_Move1
|
||||
@@ -558,21 +558,21 @@ private void InitializeComponent()
|
||||
this.CB_Move1.FormattingEnabled = true;
|
||||
this.CB_Move1.Location = new System.Drawing.Point(15, 159);
|
||||
this.CB_Move1.Name = "CB_Move1";
|
||||
this.CB_Move1.Size = new System.Drawing.Size(121, 21);
|
||||
this.CB_Move1.Size = new System.Drawing.Size(122, 21);
|
||||
this.CB_Move1.TabIndex = 68;
|
||||
//
|
||||
// L_Participant
|
||||
//
|
||||
this.L_Participant.AutoSize = true;
|
||||
this.L_Participant.Location = new System.Drawing.Point(12, 19);
|
||||
this.L_Participant.Location = new System.Drawing.Point(15, 19);
|
||||
this.L_Participant.Name = "L_Participant";
|
||||
this.L_Participant.Size = new System.Drawing.Size(60, 13);
|
||||
this.L_Participant.Size = new System.Drawing.Size(78, 20);
|
||||
this.L_Participant.TabIndex = 67;
|
||||
this.L_Participant.Text = "Participant:";
|
||||
this.L_Participant.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// NUD_FPKM
|
||||
//
|
||||
this.NUD_FPKM.Location = new System.Drawing.Point(78, 17);
|
||||
this.NUD_FPKM.Location = new System.Drawing.Point(99, 21);
|
||||
this.NUD_FPKM.Maximum = new decimal(new int[] {
|
||||
3,
|
||||
0,
|
||||
@@ -584,7 +584,7 @@ private void InitializeComponent()
|
||||
0,
|
||||
0});
|
||||
this.NUD_FPKM.Name = "NUD_FPKM";
|
||||
this.NUD_FPKM.Size = new System.Drawing.Size(35, 20);
|
||||
this.NUD_FPKM.Size = new System.Drawing.Size(38, 20);
|
||||
this.NUD_FPKM.TabIndex = 66;
|
||||
this.NUD_FPKM.Value = new decimal(new int[] {
|
||||
1,
|
||||
@@ -627,18 +627,18 @@ private void InitializeComponent()
|
||||
//
|
||||
// L_EncryptionConstant
|
||||
//
|
||||
this.L_EncryptionConstant.AutoSize = true;
|
||||
this.L_EncryptionConstant.Location = new System.Drawing.Point(12, 47);
|
||||
this.L_EncryptionConstant.Location = new System.Drawing.Point(15, 44);
|
||||
this.L_EncryptionConstant.Name = "L_EncryptionConstant";
|
||||
this.L_EncryptionConstant.Size = new System.Drawing.Size(32, 13);
|
||||
this.L_EncryptionConstant.Size = new System.Drawing.Size(56, 21);
|
||||
this.L_EncryptionConstant.TabIndex = 62;
|
||||
this.L_EncryptionConstant.Text = "ENC:";
|
||||
this.L_EncryptionConstant.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// TB_EC
|
||||
//
|
||||
this.TB_EC.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.TB_EC.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_EC.Location = new System.Drawing.Point(53, 45);
|
||||
this.TB_EC.Location = new System.Drawing.Point(77, 44);
|
||||
this.TB_EC.MaxLength = 8;
|
||||
this.TB_EC.Name = "TB_EC";
|
||||
this.TB_EC.Size = new System.Drawing.Size(60, 20);
|
||||
@@ -668,62 +668,62 @@ private void InitializeComponent()
|
||||
// L_SPE
|
||||
//
|
||||
this.L_SPE.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_SPE.AutoSize = true;
|
||||
this.L_SPE.Location = new System.Drawing.Point(235, 140);
|
||||
this.L_SPE.Location = new System.Drawing.Point(209, 138);
|
||||
this.L_SPE.Name = "L_SPE";
|
||||
this.L_SPE.Size = new System.Drawing.Size(28, 13);
|
||||
this.L_SPE.Size = new System.Drawing.Size(50, 21);
|
||||
this.L_SPE.TabIndex = 13;
|
||||
this.L_SPE.Text = "SPE";
|
||||
this.L_SPE.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_SpD
|
||||
//
|
||||
this.L_SpD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_SpD.AutoSize = true;
|
||||
this.L_SpD.Location = new System.Drawing.Point(235, 118);
|
||||
this.L_SpD.Location = new System.Drawing.Point(209, 116);
|
||||
this.L_SpD.Name = "L_SpD";
|
||||
this.L_SpD.Size = new System.Drawing.Size(28, 13);
|
||||
this.L_SpD.Size = new System.Drawing.Size(50, 21);
|
||||
this.L_SpD.TabIndex = 12;
|
||||
this.L_SpD.Text = "SpD";
|
||||
this.L_SpD.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_SpA
|
||||
//
|
||||
this.L_SpA.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_SpA.AutoSize = true;
|
||||
this.L_SpA.Location = new System.Drawing.Point(236, 96);
|
||||
this.L_SpA.Location = new System.Drawing.Point(209, 94);
|
||||
this.L_SpA.Name = "L_SpA";
|
||||
this.L_SpA.Size = new System.Drawing.Size(27, 13);
|
||||
this.L_SpA.Size = new System.Drawing.Size(50, 21);
|
||||
this.L_SpA.TabIndex = 11;
|
||||
this.L_SpA.Text = "SpA";
|
||||
this.L_SpA.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_DEF
|
||||
//
|
||||
this.L_DEF.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_DEF.AutoSize = true;
|
||||
this.L_DEF.Location = new System.Drawing.Point(235, 74);
|
||||
this.L_DEF.Location = new System.Drawing.Point(209, 72);
|
||||
this.L_DEF.Name = "L_DEF";
|
||||
this.L_DEF.Size = new System.Drawing.Size(28, 13);
|
||||
this.L_DEF.Size = new System.Drawing.Size(50, 21);
|
||||
this.L_DEF.TabIndex = 4;
|
||||
this.L_DEF.Text = "DEF";
|
||||
this.L_DEF.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_ATK
|
||||
//
|
||||
this.L_ATK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_ATK.AutoSize = true;
|
||||
this.L_ATK.Location = new System.Drawing.Point(235, 52);
|
||||
this.L_ATK.Location = new System.Drawing.Point(209, 50);
|
||||
this.L_ATK.Name = "L_ATK";
|
||||
this.L_ATK.Size = new System.Drawing.Size(28, 13);
|
||||
this.L_ATK.Size = new System.Drawing.Size(50, 21);
|
||||
this.L_ATK.TabIndex = 3;
|
||||
this.L_ATK.Text = "ATK";
|
||||
this.L_ATK.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_HP
|
||||
//
|
||||
this.L_HP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_HP.AutoSize = true;
|
||||
this.L_HP.Location = new System.Drawing.Point(241, 30);
|
||||
this.L_HP.Location = new System.Drawing.Point(209, 28);
|
||||
this.L_HP.Name = "L_HP";
|
||||
this.L_HP.Size = new System.Drawing.Size(22, 13);
|
||||
this.L_HP.Size = new System.Drawing.Size(50, 21);
|
||||
this.L_HP.TabIndex = 2;
|
||||
this.L_HP.Text = "HP";
|
||||
this.L_HP.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// f_MAIN
|
||||
//
|
||||
@@ -754,7 +754,7 @@ private void InitializeComponent()
|
||||
//
|
||||
// NUD_FBaseLocation
|
||||
//
|
||||
this.NUD_FBaseLocation.Location = new System.Drawing.Point(128, 35);
|
||||
this.NUD_FBaseLocation.Location = new System.Drawing.Point(159, 5);
|
||||
this.NUD_FBaseLocation.Maximum = new decimal(new int[] {
|
||||
85,
|
||||
0,
|
||||
@@ -778,7 +778,7 @@ private void InitializeComponent()
|
||||
//
|
||||
this.TB_FT2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TB_FT2.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FT2.Location = new System.Drawing.Point(240, 132);
|
||||
this.TB_FT2.Location = new System.Drawing.Point(92, 101);
|
||||
this.TB_FT2.MaxLength = 16;
|
||||
this.TB_FT2.Name = "TB_FT2";
|
||||
this.TB_FT2.Size = new System.Drawing.Size(124, 20);
|
||||
@@ -788,7 +788,7 @@ private void InitializeComponent()
|
||||
//
|
||||
this.TB_FT1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TB_FT1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FT1.Location = new System.Drawing.Point(240, 110);
|
||||
this.TB_FT1.Location = new System.Drawing.Point(92, 80);
|
||||
this.TB_FT1.MaxLength = 16;
|
||||
this.TB_FT1.Name = "TB_FT1";
|
||||
this.TB_FT1.Size = new System.Drawing.Size(124, 20);
|
||||
@@ -797,10 +797,9 @@ private void InitializeComponent()
|
||||
// L_TeamSlogan
|
||||
//
|
||||
this.L_TeamSlogan.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_TeamSlogan.AutoSize = true;
|
||||
this.L_TeamSlogan.Location = new System.Drawing.Point(166, 135);
|
||||
this.L_TeamSlogan.Location = new System.Drawing.Point(11, 100);
|
||||
this.L_TeamSlogan.Name = "L_TeamSlogan";
|
||||
this.L_TeamSlogan.Size = new System.Drawing.Size(73, 13);
|
||||
this.L_TeamSlogan.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_TeamSlogan.TabIndex = 17;
|
||||
this.L_TeamSlogan.Text = "Team Slogan:";
|
||||
this.L_TeamSlogan.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -808,10 +807,9 @@ private void InitializeComponent()
|
||||
// L_TeamName
|
||||
//
|
||||
this.L_TeamName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_TeamName.AutoSize = true;
|
||||
this.L_TeamName.Location = new System.Drawing.Point(171, 113);
|
||||
this.L_TeamName.Location = new System.Drawing.Point(11, 79);
|
||||
this.L_TeamName.Name = "L_TeamName";
|
||||
this.L_TeamName.Size = new System.Drawing.Size(68, 13);
|
||||
this.L_TeamName.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_TeamName.TabIndex = 16;
|
||||
this.L_TeamName.Text = "Team Name:";
|
||||
this.L_TeamName.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -830,85 +828,85 @@ private void InitializeComponent()
|
||||
this.GB_Object.Controls.Add(this.NUD_FObjType);
|
||||
this.GB_Object.Controls.Add(this.L_Index);
|
||||
this.GB_Object.Controls.Add(this.NUD_FObject);
|
||||
this.GB_Object.Location = new System.Drawing.Point(6, 158);
|
||||
this.GB_Object.Location = new System.Drawing.Point(222, 56);
|
||||
this.GB_Object.Name = "GB_Object";
|
||||
this.GB_Object.Size = new System.Drawing.Size(357, 103);
|
||||
this.GB_Object.Size = new System.Drawing.Size(142, 154);
|
||||
this.GB_Object.TabIndex = 13;
|
||||
this.GB_Object.TabStop = false;
|
||||
this.GB_Object.Text = "Object Layout";
|
||||
//
|
||||
// L_Y
|
||||
//
|
||||
this.L_Y.AutoSize = true;
|
||||
this.L_Y.Location = new System.Drawing.Point(231, 48);
|
||||
this.L_Y.Location = new System.Drawing.Point(10, 117);
|
||||
this.L_Y.Name = "L_Y";
|
||||
this.L_Y.Size = new System.Drawing.Size(71, 13);
|
||||
this.L_Y.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Y.TabIndex = 9;
|
||||
this.L_Y.Text = "Y Coordinate:";
|
||||
this.L_Y.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_X
|
||||
//
|
||||
this.L_X.AutoSize = true;
|
||||
this.L_X.Location = new System.Drawing.Point(231, 22);
|
||||
this.L_X.Location = new System.Drawing.Point(10, 96);
|
||||
this.L_X.Name = "L_X";
|
||||
this.L_X.Size = new System.Drawing.Size(71, 13);
|
||||
this.L_X.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_X.TabIndex = 8;
|
||||
this.L_X.Text = "X Coordinate:";
|
||||
this.L_X.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// NUD_FX
|
||||
//
|
||||
this.NUD_FX.Location = new System.Drawing.Point(308, 20);
|
||||
this.NUD_FX.Location = new System.Drawing.Point(87, 98);
|
||||
this.NUD_FX.Maximum = new decimal(new int[] {
|
||||
40,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.NUD_FX.Name = "NUD_FX";
|
||||
this.NUD_FX.Size = new System.Drawing.Size(36, 20);
|
||||
this.NUD_FX.Size = new System.Drawing.Size(40, 20);
|
||||
this.NUD_FX.TabIndex = 7;
|
||||
this.NUD_FX.ValueChanged += new System.EventHandler(this.changeObjectQuality);
|
||||
//
|
||||
// NUD_FY
|
||||
//
|
||||
this.NUD_FY.Location = new System.Drawing.Point(308, 46);
|
||||
this.NUD_FY.Location = new System.Drawing.Point(87, 119);
|
||||
this.NUD_FY.Maximum = new decimal(new int[] {
|
||||
40,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.NUD_FY.Name = "NUD_FY";
|
||||
this.NUD_FY.Size = new System.Drawing.Size(36, 20);
|
||||
this.NUD_FY.Size = new System.Drawing.Size(40, 20);
|
||||
this.NUD_FY.TabIndex = 6;
|
||||
this.NUD_FY.ValueChanged += new System.EventHandler(this.changeObjectQuality);
|
||||
//
|
||||
// L_Rotation
|
||||
//
|
||||
this.L_Rotation.AutoSize = true;
|
||||
this.L_Rotation.Location = new System.Drawing.Point(6, 74);
|
||||
this.L_Rotation.Location = new System.Drawing.Point(10, 70);
|
||||
this.L_Rotation.Name = "L_Rotation";
|
||||
this.L_Rotation.Size = new System.Drawing.Size(68, 13);
|
||||
this.L_Rotation.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Rotation.TabIndex = 5;
|
||||
this.L_Rotation.Text = "Rotation Val:";
|
||||
this.L_Rotation.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_Decoration
|
||||
//
|
||||
this.L_Decoration.AutoSize = true;
|
||||
this.L_Decoration.Location = new System.Drawing.Point(12, 48);
|
||||
this.L_Decoration.Location = new System.Drawing.Point(10, 49);
|
||||
this.L_Decoration.Name = "L_Decoration";
|
||||
this.L_Decoration.Size = new System.Drawing.Size(62, 13);
|
||||
this.L_Decoration.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Decoration.TabIndex = 4;
|
||||
this.L_Decoration.Text = "Decoration:";
|
||||
this.L_Decoration.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// NUD_FRot
|
||||
//
|
||||
this.NUD_FRot.Location = new System.Drawing.Point(76, 72);
|
||||
this.NUD_FRot.Location = new System.Drawing.Point(87, 72);
|
||||
this.NUD_FRot.Maximum = new decimal(new int[] {
|
||||
7,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.NUD_FRot.Name = "NUD_FRot";
|
||||
this.NUD_FRot.Size = new System.Drawing.Size(36, 20);
|
||||
this.NUD_FRot.Size = new System.Drawing.Size(40, 20);
|
||||
this.NUD_FRot.TabIndex = 3;
|
||||
this.NUD_FRot.Value = new decimal(new int[] {
|
||||
1,
|
||||
@@ -919,7 +917,7 @@ private void InitializeComponent()
|
||||
//
|
||||
// NUD_FObjType
|
||||
//
|
||||
this.NUD_FObjType.Location = new System.Drawing.Point(76, 46);
|
||||
this.NUD_FObjType.Location = new System.Drawing.Point(87, 51);
|
||||
this.NUD_FObjType.Maximum = new decimal(new int[] {
|
||||
173,
|
||||
0,
|
||||
@@ -931,7 +929,7 @@ private void InitializeComponent()
|
||||
0,
|
||||
-2147483648});
|
||||
this.NUD_FObjType.Name = "NUD_FObjType";
|
||||
this.NUD_FObjType.Size = new System.Drawing.Size(38, 20);
|
||||
this.NUD_FObjType.Size = new System.Drawing.Size(40, 20);
|
||||
this.NUD_FObjType.TabIndex = 2;
|
||||
this.NUD_FObjType.Value = new decimal(new int[] {
|
||||
1,
|
||||
@@ -942,16 +940,16 @@ private void InitializeComponent()
|
||||
//
|
||||
// L_Index
|
||||
//
|
||||
this.L_Index.AutoSize = true;
|
||||
this.L_Index.Location = new System.Drawing.Point(38, 22);
|
||||
this.L_Index.Location = new System.Drawing.Point(10, 23);
|
||||
this.L_Index.Name = "L_Index";
|
||||
this.L_Index.Size = new System.Drawing.Size(36, 13);
|
||||
this.L_Index.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Index.TabIndex = 1;
|
||||
this.L_Index.Text = "Index:";
|
||||
this.L_Index.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// NUD_FObject
|
||||
//
|
||||
this.NUD_FObject.Location = new System.Drawing.Point(76, 20);
|
||||
this.NUD_FObject.Location = new System.Drawing.Point(87, 25);
|
||||
this.NUD_FObject.Maximum = new decimal(new int[] {
|
||||
25,
|
||||
0,
|
||||
@@ -963,7 +961,7 @@ private void InitializeComponent()
|
||||
0,
|
||||
0});
|
||||
this.NUD_FObject.Name = "NUD_FObject";
|
||||
this.NUD_FObject.Size = new System.Drawing.Size(36, 20);
|
||||
this.NUD_FObject.Size = new System.Drawing.Size(40, 20);
|
||||
this.NUD_FObject.TabIndex = 0;
|
||||
this.NUD_FObject.Value = new decimal(new int[] {
|
||||
1,
|
||||
@@ -974,18 +972,18 @@ private void InitializeComponent()
|
||||
//
|
||||
// L_BaseLocation
|
||||
//
|
||||
this.L_BaseLocation.AutoSize = true;
|
||||
this.L_BaseLocation.Location = new System.Drawing.Point(6, 35);
|
||||
this.L_BaseLocation.Location = new System.Drawing.Point(3, 3);
|
||||
this.L_BaseLocation.Name = "L_BaseLocation";
|
||||
this.L_BaseLocation.Size = new System.Drawing.Size(112, 13);
|
||||
this.L_BaseLocation.Size = new System.Drawing.Size(150, 21);
|
||||
this.L_BaseLocation.TabIndex = 11;
|
||||
this.L_BaseLocation.Text = "Secret Base Location:";
|
||||
this.L_BaseLocation.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// TB_FSay4
|
||||
//
|
||||
this.TB_FSay4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TB_FSay4.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FSay4.Location = new System.Drawing.Point(240, 72);
|
||||
this.TB_FSay4.Location = new System.Drawing.Point(92, 190);
|
||||
this.TB_FSay4.MaxLength = 16;
|
||||
this.TB_FSay4.Name = "TB_FSay4";
|
||||
this.TB_FSay4.Size = new System.Drawing.Size(124, 20);
|
||||
@@ -995,7 +993,7 @@ private void InitializeComponent()
|
||||
//
|
||||
this.TB_FSay3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TB_FSay3.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FSay3.Location = new System.Drawing.Point(240, 50);
|
||||
this.TB_FSay3.Location = new System.Drawing.Point(92, 169);
|
||||
this.TB_FSay3.MaxLength = 16;
|
||||
this.TB_FSay3.Name = "TB_FSay3";
|
||||
this.TB_FSay3.Size = new System.Drawing.Size(124, 20);
|
||||
@@ -1005,7 +1003,7 @@ private void InitializeComponent()
|
||||
//
|
||||
this.TB_FSay2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TB_FSay2.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FSay2.Location = new System.Drawing.Point(240, 28);
|
||||
this.TB_FSay2.Location = new System.Drawing.Point(92, 148);
|
||||
this.TB_FSay2.MaxLength = 16;
|
||||
this.TB_FSay2.Name = "TB_FSay2";
|
||||
this.TB_FSay2.Size = new System.Drawing.Size(124, 20);
|
||||
@@ -1015,7 +1013,7 @@ private void InitializeComponent()
|
||||
//
|
||||
this.TB_FSay1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TB_FSay1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FSay1.Location = new System.Drawing.Point(240, 6);
|
||||
this.TB_FSay1.Location = new System.Drawing.Point(92, 127);
|
||||
this.TB_FSay1.MaxLength = 16;
|
||||
this.TB_FSay1.Name = "TB_FSay1";
|
||||
this.TB_FSay1.Size = new System.Drawing.Size(124, 20);
|
||||
@@ -1024,7 +1022,7 @@ private void InitializeComponent()
|
||||
// TB_FOT
|
||||
//
|
||||
this.TB_FOT.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.TB_FOT.Location = new System.Drawing.Point(80, 7);
|
||||
this.TB_FOT.Location = new System.Drawing.Point(123, 54);
|
||||
this.TB_FOT.MaxLength = 12;
|
||||
this.TB_FOT.Name = "TB_FOT";
|
||||
this.TB_FOT.Size = new System.Drawing.Size(93, 20);
|
||||
@@ -1032,20 +1030,19 @@ private void InitializeComponent()
|
||||
//
|
||||
// L_TrName
|
||||
//
|
||||
this.L_TrName.AutoSize = true;
|
||||
this.L_TrName.Location = new System.Drawing.Point(6, 9);
|
||||
this.L_TrName.Location = new System.Drawing.Point(9, 53);
|
||||
this.L_TrName.Name = "L_TrName";
|
||||
this.L_TrName.Size = new System.Drawing.Size(74, 13);
|
||||
this.L_TrName.Size = new System.Drawing.Size(108, 21);
|
||||
this.L_TrName.TabIndex = 9;
|
||||
this.L_TrName.Text = "Trainer Name:";
|
||||
this.L_TrName.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_Confetti
|
||||
//
|
||||
this.L_Confetti.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_Confetti.AutoSize = true;
|
||||
this.L_Confetti.Location = new System.Drawing.Point(193, 75);
|
||||
this.L_Confetti.Location = new System.Drawing.Point(11, 189);
|
||||
this.L_Confetti.Name = "L_Confetti";
|
||||
this.L_Confetti.Size = new System.Drawing.Size(46, 13);
|
||||
this.L_Confetti.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Confetti.TabIndex = 8;
|
||||
this.L_Confetti.Text = "Confetti:";
|
||||
this.L_Confetti.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -1053,10 +1050,9 @@ private void InitializeComponent()
|
||||
// L_Blackboard
|
||||
//
|
||||
this.L_Blackboard.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_Blackboard.AutoSize = true;
|
||||
this.L_Blackboard.Location = new System.Drawing.Point(175, 53);
|
||||
this.L_Blackboard.Location = new System.Drawing.Point(11, 168);
|
||||
this.L_Blackboard.Name = "L_Blackboard";
|
||||
this.L_Blackboard.Size = new System.Drawing.Size(64, 13);
|
||||
this.L_Blackboard.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Blackboard.TabIndex = 7;
|
||||
this.L_Blackboard.Text = "Blackboard:";
|
||||
this.L_Blackboard.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -1064,10 +1060,9 @@ private void InitializeComponent()
|
||||
// L_Encourage
|
||||
//
|
||||
this.L_Encourage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_Encourage.AutoSize = true;
|
||||
this.L_Encourage.Location = new System.Drawing.Point(177, 32);
|
||||
this.L_Encourage.Location = new System.Drawing.Point(11, 147);
|
||||
this.L_Encourage.Name = "L_Encourage";
|
||||
this.L_Encourage.Size = new System.Drawing.Size(62, 13);
|
||||
this.L_Encourage.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Encourage.TabIndex = 6;
|
||||
this.L_Encourage.Text = "Encourage:";
|
||||
this.L_Encourage.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -1075,10 +1070,9 @@ private void InitializeComponent()
|
||||
// L_Happy
|
||||
//
|
||||
this.L_Happy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_Happy.AutoSize = true;
|
||||
this.L_Happy.Location = new System.Drawing.Point(198, 9);
|
||||
this.L_Happy.Location = new System.Drawing.Point(11, 126);
|
||||
this.L_Happy.Name = "L_Happy";
|
||||
this.L_Happy.Size = new System.Drawing.Size(41, 13);
|
||||
this.L_Happy.Size = new System.Drawing.Size(75, 21);
|
||||
this.L_Happy.TabIndex = 5;
|
||||
this.L_Happy.Text = "Happy:";
|
||||
this.L_Happy.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -1098,7 +1092,7 @@ private void InitializeComponent()
|
||||
// B_GiveDecor
|
||||
//
|
||||
this.B_GiveDecor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_GiveDecor.Location = new System.Drawing.Point(144, 302);
|
||||
this.B_GiveDecor.Location = new System.Drawing.Point(162, 302);
|
||||
this.B_GiveDecor.Name = "B_GiveDecor";
|
||||
this.B_GiveDecor.Size = new System.Drawing.Size(112, 23);
|
||||
this.B_GiveDecor.TabIndex = 19;
|
||||
@@ -1118,7 +1112,7 @@ private void InitializeComponent()
|
||||
//
|
||||
// MT_Flags
|
||||
//
|
||||
this.MT_Flags.Location = new System.Drawing.Point(93, 304);
|
||||
this.MT_Flags.Location = new System.Drawing.Point(111, 304);
|
||||
this.MT_Flags.Mask = "00000";
|
||||
this.MT_Flags.Name = "MT_Flags";
|
||||
this.MT_Flags.Size = new System.Drawing.Size(39, 20);
|
||||
@@ -1127,12 +1121,12 @@ private void InitializeComponent()
|
||||
//
|
||||
// L_FlagsCaptured
|
||||
//
|
||||
this.L_FlagsCaptured.AutoSize = true;
|
||||
this.L_FlagsCaptured.Location = new System.Drawing.Point(9, 307);
|
||||
this.L_FlagsCaptured.Name = "L_FlagsCaptured";
|
||||
this.L_FlagsCaptured.Size = new System.Drawing.Size(84, 13);
|
||||
this.L_FlagsCaptured.Size = new System.Drawing.Size(100, 13);
|
||||
this.L_FlagsCaptured.TabIndex = 22;
|
||||
this.L_FlagsCaptured.Text = "Flags Captured: ";
|
||||
this.L_FlagsCaptured.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// B_FDelete
|
||||
//
|
||||
@@ -1175,7 +1169,6 @@ private void InitializeComponent()
|
||||
this.f_MAIN.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUD_FBaseLocation)).EndInit();
|
||||
this.GB_Object.ResumeLayout(false);
|
||||
this.GB_Object.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUD_FX)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUD_FY)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUD_FRot)).EndInit();
|
||||
|
||||
@@ -44,7 +44,7 @@ private void InitializeComponent()
|
||||
this.TB_Unk = new System.Windows.Forms.MaskedTextBox();
|
||||
this.L_Unk = new System.Windows.Forms.Label();
|
||||
this.L_Species = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.L_Time0 = new System.Windows.Forms.Label();
|
||||
this.L_Records = new System.Windows.Forms.Label();
|
||||
this.L_Bags = new System.Windows.Forms.Label();
|
||||
this.L_UNKNOWN = new System.Windows.Forms.Label();
|
||||
@@ -207,6 +207,8 @@ private void InitializeComponent()
|
||||
// CB_Species
|
||||
//
|
||||
this.CB_Species.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CB_Species.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
|
||||
this.CB_Species.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this.CB_Species.FormattingEnabled = true;
|
||||
this.CB_Species.Location = new System.Drawing.Point(176, 38);
|
||||
this.CB_Species.Name = "CB_Species";
|
||||
@@ -243,15 +245,15 @@ private void InitializeComponent()
|
||||
this.L_Species.TabIndex = 129;
|
||||
this.L_Species.Text = "Species:";
|
||||
//
|
||||
// label4
|
||||
// L_Time0
|
||||
//
|
||||
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(178, 99);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(33, 13);
|
||||
this.label4.TabIndex = 130;
|
||||
this.label4.Text = "Time:";
|
||||
this.L_Time0.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_Time0.AutoSize = true;
|
||||
this.L_Time0.Location = new System.Drawing.Point(178, 99);
|
||||
this.L_Time0.Name = "L_Time0";
|
||||
this.L_Time0.Size = new System.Drawing.Size(33, 13);
|
||||
this.L_Time0.TabIndex = 130;
|
||||
this.L_Time0.Text = "Time:";
|
||||
//
|
||||
// L_Records
|
||||
//
|
||||
@@ -290,7 +292,7 @@ private void InitializeComponent()
|
||||
this.Controls.Add(this.L_UNKNOWN);
|
||||
this.Controls.Add(this.L_Bags);
|
||||
this.Controls.Add(this.L_Records);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.L_Time0);
|
||||
this.Controls.Add(this.L_Species);
|
||||
this.Controls.Add(this.L_Unk);
|
||||
this.Controls.Add(this.TB_Unk);
|
||||
@@ -337,7 +339,7 @@ private void InitializeComponent()
|
||||
private System.Windows.Forms.MaskedTextBox TB_Unk;
|
||||
private System.Windows.Forms.Label L_Unk;
|
||||
private System.Windows.Forms.Label L_Species;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label L_Time0;
|
||||
private System.Windows.Forms.Label L_Records;
|
||||
private System.Windows.Forms.Label L_Bags;
|
||||
private System.Windows.Forms.Label L_UNKNOWN;
|
||||
|
||||
174
PKHeX/Subforms/Save Editors/Gen6/SAV_Trainer.Designer.cs
generated
@@ -179,8 +179,11 @@ private void InitializeComponent()
|
||||
this.MT_Stat = new System.Windows.Forms.MaskedTextBox();
|
||||
this.TC_Editor = new System.Windows.Forms.TabControl();
|
||||
this.Tab_Overview = new System.Windows.Forms.TabPage();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.GB_Stats = new System.Windows.Forms.GroupBox();
|
||||
this.GB_Adventure = new System.Windows.Forms.GroupBox();
|
||||
this.L_Fame = new System.Windows.Forms.Label();
|
||||
this.CAL_HoFDate = new System.Windows.Forms.DateTimePicker();
|
||||
this.CAL_HoFTime = new System.Windows.Forms.DateTimePicker();
|
||||
this.L_Started = new System.Windows.Forms.Label();
|
||||
this.CAL_AdventureStartDate = new System.Windows.Forms.DateTimePicker();
|
||||
this.CAL_AdventureStartTime = new System.Windows.Forms.DateTimePicker();
|
||||
@@ -199,9 +202,6 @@ private void InitializeComponent()
|
||||
this.Tab_Multiplayer = new System.Windows.Forms.TabPage();
|
||||
this.Tab_Maison = new System.Windows.Forms.TabPage();
|
||||
this.Tab_Appearance = new System.Windows.Forms.TabPage();
|
||||
this.L_Fame = new System.Windows.Forms.Label();
|
||||
this.CAL_HoFDate = new System.Windows.Forms.DateTimePicker();
|
||||
this.CAL_HoFTime = new System.Windows.Forms.DateTimePicker();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PB_Badge8)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PB_Badge6)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PB_Badge4)).BeginInit();
|
||||
@@ -216,8 +216,8 @@ private void InitializeComponent()
|
||||
((System.ComponentModel.ISupportInitialize)(this.PB_Sprite)).BeginInit();
|
||||
this.TC_Editor.SuspendLayout();
|
||||
this.Tab_Overview.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.GB_Stats.SuspendLayout();
|
||||
this.GB_Adventure.SuspendLayout();
|
||||
this.Tab_BadgeMap.SuspendLayout();
|
||||
this.GB_Map.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.NUD_Z)).BeginInit();
|
||||
@@ -1777,8 +1777,8 @@ private void InitializeComponent()
|
||||
//
|
||||
// Tab_Overview
|
||||
//
|
||||
this.Tab_Overview.Controls.Add(this.groupBox1);
|
||||
this.Tab_Overview.Controls.Add(this.groupBox2);
|
||||
this.Tab_Overview.Controls.Add(this.GB_Stats);
|
||||
this.Tab_Overview.Controls.Add(this.GB_Adventure);
|
||||
this.Tab_Overview.Controls.Add(this.CB_Vivillon);
|
||||
this.Tab_Overview.Controls.Add(this.L_Vivillon);
|
||||
this.Tab_Overview.Controls.Add(this.TB_OTName);
|
||||
@@ -1808,48 +1808,81 @@ private void InitializeComponent()
|
||||
this.Tab_Overview.Text = "Overview";
|
||||
this.Tab_Overview.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
// GB_Stats
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.TB_BP);
|
||||
this.groupBox1.Controls.Add(this.TB_PM);
|
||||
this.groupBox1.Controls.Add(this.L_PM);
|
||||
this.groupBox1.Controls.Add(this.TB_Style);
|
||||
this.groupBox1.Controls.Add(this.L_Offset);
|
||||
this.groupBox1.Controls.Add(this.L_BP);
|
||||
this.groupBox1.Controls.Add(this.L_Value);
|
||||
this.groupBox1.Controls.Add(this.L_Style);
|
||||
this.groupBox1.Controls.Add(this.MT_Stat);
|
||||
this.groupBox1.Controls.Add(this.CB_Stats);
|
||||
this.groupBox1.Location = new System.Drawing.Point(209, 99);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(171, 151);
|
||||
this.groupBox1.TabIndex = 55;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Stats";
|
||||
this.GB_Stats.Controls.Add(this.TB_BP);
|
||||
this.GB_Stats.Controls.Add(this.TB_PM);
|
||||
this.GB_Stats.Controls.Add(this.L_PM);
|
||||
this.GB_Stats.Controls.Add(this.TB_Style);
|
||||
this.GB_Stats.Controls.Add(this.L_Offset);
|
||||
this.GB_Stats.Controls.Add(this.L_BP);
|
||||
this.GB_Stats.Controls.Add(this.L_Value);
|
||||
this.GB_Stats.Controls.Add(this.L_Style);
|
||||
this.GB_Stats.Controls.Add(this.MT_Stat);
|
||||
this.GB_Stats.Controls.Add(this.CB_Stats);
|
||||
this.GB_Stats.Location = new System.Drawing.Point(209, 99);
|
||||
this.GB_Stats.Name = "GB_Stats";
|
||||
this.GB_Stats.Size = new System.Drawing.Size(171, 151);
|
||||
this.GB_Stats.TabIndex = 55;
|
||||
this.GB_Stats.TabStop = false;
|
||||
this.GB_Stats.Text = "Stats";
|
||||
//
|
||||
// groupBox2
|
||||
// GB_Adventure
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.L_Fame);
|
||||
this.groupBox2.Controls.Add(this.CAL_HoFDate);
|
||||
this.groupBox2.Controls.Add(this.CAL_HoFTime);
|
||||
this.groupBox2.Controls.Add(this.L_Started);
|
||||
this.groupBox2.Controls.Add(this.CAL_AdventureStartDate);
|
||||
this.groupBox2.Controls.Add(this.CAL_LastSavedDate);
|
||||
this.groupBox2.Controls.Add(this.L_LastSaved);
|
||||
this.groupBox2.Controls.Add(this.MT_Seconds);
|
||||
this.groupBox2.Controls.Add(this.MT_Hours);
|
||||
this.groupBox2.Controls.Add(this.L_Seconds);
|
||||
this.groupBox2.Controls.Add(this.L_Hours);
|
||||
this.groupBox2.Controls.Add(this.MT_Minutes);
|
||||
this.groupBox2.Controls.Add(this.L_Minutes);
|
||||
this.groupBox2.Controls.Add(this.CAL_AdventureStartTime);
|
||||
this.groupBox2.Controls.Add(this.CAL_LastSavedTime);
|
||||
this.groupBox2.Location = new System.Drawing.Point(3, 99);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(200, 151);
|
||||
this.groupBox2.TabIndex = 56;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Adventure Info";
|
||||
this.GB_Adventure.Controls.Add(this.L_Fame);
|
||||
this.GB_Adventure.Controls.Add(this.CAL_HoFDate);
|
||||
this.GB_Adventure.Controls.Add(this.CAL_HoFTime);
|
||||
this.GB_Adventure.Controls.Add(this.L_Started);
|
||||
this.GB_Adventure.Controls.Add(this.CAL_AdventureStartDate);
|
||||
this.GB_Adventure.Controls.Add(this.CAL_LastSavedDate);
|
||||
this.GB_Adventure.Controls.Add(this.L_LastSaved);
|
||||
this.GB_Adventure.Controls.Add(this.MT_Seconds);
|
||||
this.GB_Adventure.Controls.Add(this.MT_Hours);
|
||||
this.GB_Adventure.Controls.Add(this.L_Seconds);
|
||||
this.GB_Adventure.Controls.Add(this.L_Hours);
|
||||
this.GB_Adventure.Controls.Add(this.MT_Minutes);
|
||||
this.GB_Adventure.Controls.Add(this.L_Minutes);
|
||||
this.GB_Adventure.Controls.Add(this.CAL_AdventureStartTime);
|
||||
this.GB_Adventure.Controls.Add(this.CAL_LastSavedTime);
|
||||
this.GB_Adventure.Location = new System.Drawing.Point(3, 99);
|
||||
this.GB_Adventure.Name = "GB_Adventure";
|
||||
this.GB_Adventure.Size = new System.Drawing.Size(200, 151);
|
||||
this.GB_Adventure.TabIndex = 56;
|
||||
this.GB_Adventure.TabStop = false;
|
||||
this.GB_Adventure.Text = "Adventure Info";
|
||||
//
|
||||
// L_Fame
|
||||
//
|
||||
this.L_Fame.Location = new System.Drawing.Point(3, 72);
|
||||
this.L_Fame.Name = "L_Fame";
|
||||
this.L_Fame.Size = new System.Drawing.Size(80, 20);
|
||||
this.L_Fame.TabIndex = 40;
|
||||
this.L_Fame.Text = "HoF Entered:";
|
||||
this.L_Fame.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// CAL_HoFDate
|
||||
//
|
||||
this.CAL_HoFDate.Format = System.Windows.Forms.DateTimePickerFormat.Short;
|
||||
this.CAL_HoFDate.Location = new System.Drawing.Point(89, 72);
|
||||
this.CAL_HoFDate.MaxDate = new System.DateTime(2050, 12, 31, 0, 0, 0, 0);
|
||||
this.CAL_HoFDate.MinDate = new System.DateTime(2000, 1, 1, 0, 0, 0, 0);
|
||||
this.CAL_HoFDate.Name = "CAL_HoFDate";
|
||||
this.CAL_HoFDate.Size = new System.Drawing.Size(99, 20);
|
||||
this.CAL_HoFDate.TabIndex = 39;
|
||||
this.CAL_HoFDate.Value = new System.DateTime(2000, 1, 1, 0, 0, 0, 0);
|
||||
//
|
||||
// CAL_HoFTime
|
||||
//
|
||||
this.CAL_HoFTime.CustomFormat = "hh:mm tt";
|
||||
this.CAL_HoFTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
|
||||
this.CAL_HoFTime.Location = new System.Drawing.Point(115, 91);
|
||||
this.CAL_HoFTime.MaxDate = new System.DateTime(2050, 12, 31, 0, 0, 0, 0);
|
||||
this.CAL_HoFTime.MinDate = new System.DateTime(2000, 1, 1, 0, 0, 0, 0);
|
||||
this.CAL_HoFTime.Name = "CAL_HoFTime";
|
||||
this.CAL_HoFTime.ShowUpDown = true;
|
||||
this.CAL_HoFTime.Size = new System.Drawing.Size(73, 20);
|
||||
this.CAL_HoFTime.TabIndex = 38;
|
||||
this.CAL_HoFTime.Value = new System.DateTime(2001, 1, 1, 0, 0, 0, 0);
|
||||
//
|
||||
// L_Started
|
||||
//
|
||||
@@ -2119,39 +2152,6 @@ private void InitializeComponent()
|
||||
this.Tab_Appearance.Text = "Appearance";
|
||||
this.Tab_Appearance.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// L_Fame
|
||||
//
|
||||
this.L_Fame.Location = new System.Drawing.Point(3, 72);
|
||||
this.L_Fame.Name = "L_Fame";
|
||||
this.L_Fame.Size = new System.Drawing.Size(80, 20);
|
||||
this.L_Fame.TabIndex = 40;
|
||||
this.L_Fame.Text = "HoF Entered:";
|
||||
this.L_Fame.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// CAL_HoFDate
|
||||
//
|
||||
this.CAL_HoFDate.Format = System.Windows.Forms.DateTimePickerFormat.Short;
|
||||
this.CAL_HoFDate.Location = new System.Drawing.Point(89, 72);
|
||||
this.CAL_HoFDate.MaxDate = new System.DateTime(2050, 12, 31, 0, 0, 0, 0);
|
||||
this.CAL_HoFDate.MinDate = new System.DateTime(2000, 1, 1, 0, 0, 0, 0);
|
||||
this.CAL_HoFDate.Name = "CAL_HoFDate";
|
||||
this.CAL_HoFDate.Size = new System.Drawing.Size(99, 20);
|
||||
this.CAL_HoFDate.TabIndex = 39;
|
||||
this.CAL_HoFDate.Value = new System.DateTime(2000, 1, 1, 0, 0, 0, 0);
|
||||
//
|
||||
// CAL_HoFTime
|
||||
//
|
||||
this.CAL_HoFTime.CustomFormat = "hh:mm tt";
|
||||
this.CAL_HoFTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
|
||||
this.CAL_HoFTime.Location = new System.Drawing.Point(115, 91);
|
||||
this.CAL_HoFTime.MaxDate = new System.DateTime(2050, 12, 31, 0, 0, 0, 0);
|
||||
this.CAL_HoFTime.MinDate = new System.DateTime(2000, 1, 1, 0, 0, 0, 0);
|
||||
this.CAL_HoFTime.Name = "CAL_HoFTime";
|
||||
this.CAL_HoFTime.ShowUpDown = true;
|
||||
this.CAL_HoFTime.Size = new System.Drawing.Size(73, 20);
|
||||
this.CAL_HoFTime.TabIndex = 38;
|
||||
this.CAL_HoFTime.Value = new System.DateTime(2001, 1, 1, 0, 0, 0, 0);
|
||||
//
|
||||
// SAV_Trainer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@@ -2185,10 +2185,10 @@ private void InitializeComponent()
|
||||
this.TC_Editor.ResumeLayout(false);
|
||||
this.Tab_Overview.ResumeLayout(false);
|
||||
this.Tab_Overview.PerformLayout();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.GB_Stats.ResumeLayout(false);
|
||||
this.GB_Stats.PerformLayout();
|
||||
this.GB_Adventure.ResumeLayout(false);
|
||||
this.GB_Adventure.PerformLayout();
|
||||
this.Tab_BadgeMap.ResumeLayout(false);
|
||||
this.Tab_BadgeMap.PerformLayout();
|
||||
this.GB_Map.ResumeLayout(false);
|
||||
@@ -2371,8 +2371,8 @@ private void InitializeComponent()
|
||||
private System.Windows.Forms.NumericUpDown NUD_M;
|
||||
private System.Windows.Forms.NumericUpDown NUD_Z;
|
||||
private System.Windows.Forms.GroupBox GB_Map;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.GroupBox GB_Adventure;
|
||||
private System.Windows.Forms.GroupBox GB_Stats;
|
||||
private System.Windows.Forms.DateTimePicker CAL_AdventureStartDate;
|
||||
private System.Windows.Forms.DateTimePicker CAL_AdventureStartTime;
|
||||
private System.Windows.Forms.Label L_Started;
|
||||
|
||||
@@ -42,6 +42,9 @@ public SAV_BoxViewer(Main p)
|
||||
pb.DragEnter += pbBoxSlot_DragEnter;
|
||||
pb.QueryContinueDrag += pbBoxSlot_QueryContinueDrag;
|
||||
}
|
||||
for (int i = SAV.BoxSlotCount; i < SlotPictureBoxes.Length; i++)
|
||||
SlotPictureBoxes[i].Visible = false;
|
||||
|
||||
try
|
||||
{
|
||||
CB_BoxSelect.Items.Clear();
|
||||
@@ -87,7 +90,7 @@ private void setPKXBoxes()
|
||||
int boxbgval = SAV.getBoxWallpaper(CB_BoxSelect.SelectedIndex);
|
||||
PAN_Box.BackgroundImage = BoxWallpaper.getWallpaper(SAV, boxbgval);
|
||||
|
||||
for (int i = 0; i < SlotPictureBoxes.Length; i++)
|
||||
for (int i = 0; i < SAV.BoxSlotCount; i++)
|
||||
getSlotFiller(boxoffset + SAV.SIZE_STORED*i, SlotPictureBoxes[i]);
|
||||
}
|
||||
private void getSlotFiller(int offset, PictureBox pb)
|
||||
|
||||
@@ -49,9 +49,10 @@ private void InitializeComponent()
|
||||
this.B_LoadNew = new System.Windows.Forms.Button();
|
||||
this.B_LoadOld = new System.Windows.Forms.Button();
|
||||
this.GB_Flags = new System.Windows.Forms.GroupBox();
|
||||
this.TLP_Flags = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.GB_Constants = new System.Windows.Forms.GroupBox();
|
||||
this.TLP_Const = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.TLP_Flags = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.L_EventFlagWarn = new System.Windows.Forms.Label();
|
||||
this.GB_FlagStatus.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nud)).BeginInit();
|
||||
this.GB_Researcher.SuspendLayout();
|
||||
@@ -271,21 +272,38 @@ private void InitializeComponent()
|
||||
this.GB_Flags.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.GB_Flags.Controls.Add(this.TLP_Flags);
|
||||
this.GB_Flags.Location = new System.Drawing.Point(12, 12);
|
||||
this.GB_Flags.Location = new System.Drawing.Point(12, 24);
|
||||
this.GB_Flags.Name = "GB_Flags";
|
||||
this.GB_Flags.Size = new System.Drawing.Size(212, 210);
|
||||
this.GB_Flags.Size = new System.Drawing.Size(212, 198);
|
||||
this.GB_Flags.TabIndex = 39;
|
||||
this.GB_Flags.TabStop = false;
|
||||
this.GB_Flags.Text = "Event Flags";
|
||||
//
|
||||
// TLP_Flags
|
||||
//
|
||||
this.TLP_Flags.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TLP_Flags.AutoScroll = true;
|
||||
this.TLP_Flags.ColumnCount = 2;
|
||||
this.TLP_Flags.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.TLP_Flags.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.TLP_Flags.Location = new System.Drawing.Point(6, 19);
|
||||
this.TLP_Flags.Name = "TLP_Flags";
|
||||
this.TLP_Flags.RowCount = 2;
|
||||
this.TLP_Flags.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.TLP_Flags.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.TLP_Flags.Size = new System.Drawing.Size(200, 172);
|
||||
this.TLP_Flags.TabIndex = 0;
|
||||
//
|
||||
// GB_Constants
|
||||
//
|
||||
this.GB_Constants.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.GB_Constants.Controls.Add(this.TLP_Const);
|
||||
this.GB_Constants.Location = new System.Drawing.Point(235, 12);
|
||||
this.GB_Constants.Location = new System.Drawing.Point(235, 24);
|
||||
this.GB_Constants.Name = "GB_Constants";
|
||||
this.GB_Constants.Size = new System.Drawing.Size(212, 210);
|
||||
this.GB_Constants.Size = new System.Drawing.Size(212, 198);
|
||||
this.GB_Constants.TabIndex = 40;
|
||||
this.GB_Constants.TabStop = false;
|
||||
this.GB_Constants.Text = "Event Constants";
|
||||
@@ -303,31 +321,28 @@ private void InitializeComponent()
|
||||
this.TLP_Const.Name = "TLP_Const";
|
||||
this.TLP_Const.RowCount = 1;
|
||||
this.TLP_Const.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.TLP_Const.Size = new System.Drawing.Size(200, 184);
|
||||
this.TLP_Const.Size = new System.Drawing.Size(200, 172);
|
||||
this.TLP_Const.TabIndex = 0;
|
||||
//
|
||||
// TLP_Flags
|
||||
// L_EventFlagWarn
|
||||
//
|
||||
this.TLP_Flags.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
this.L_EventFlagWarn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.TLP_Flags.AutoScroll = true;
|
||||
this.TLP_Flags.ColumnCount = 2;
|
||||
this.TLP_Flags.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.TLP_Flags.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.TLP_Flags.Location = new System.Drawing.Point(6, 19);
|
||||
this.TLP_Flags.Name = "TLP_Flags";
|
||||
this.TLP_Flags.RowCount = 2;
|
||||
this.TLP_Flags.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.TLP_Flags.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.TLP_Flags.Size = new System.Drawing.Size(200, 184);
|
||||
this.TLP_Flags.TabIndex = 0;
|
||||
this.L_EventFlagWarn.ForeColor = System.Drawing.Color.Red;
|
||||
this.L_EventFlagWarn.Location = new System.Drawing.Point(12, 1);
|
||||
this.L_EventFlagWarn.Name = "L_EventFlagWarn";
|
||||
this.L_EventFlagWarn.Size = new System.Drawing.Size(435, 20);
|
||||
this.L_EventFlagWarn.TabIndex = 41;
|
||||
this.L_EventFlagWarn.Text = "Altering Event Flags may impact other story events. Save file backups are recomme" +
|
||||
"nded.";
|
||||
this.L_EventFlagWarn.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// SAV_EventFlags
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(454, 351);
|
||||
this.Controls.Add(this.L_EventFlagWarn);
|
||||
this.Controls.Add(this.GB_Constants);
|
||||
this.Controls.Add(this.GB_Flags);
|
||||
this.Controls.Add(this.GB_Researcher);
|
||||
@@ -378,5 +393,6 @@ private void InitializeComponent()
|
||||
private System.Windows.Forms.GroupBox GB_Constants;
|
||||
private System.Windows.Forms.TableLayoutPanel TLP_Const;
|
||||
private System.Windows.Forms.TableLayoutPanel TLP_Flags;
|
||||
private System.Windows.Forms.Label L_EventFlagWarn;
|
||||
}
|
||||
}
|
||||
@@ -218,7 +218,7 @@ private void changeCustomFlag(object sender, EventArgs e)
|
||||
else
|
||||
{
|
||||
c_CustomFlag.Enabled = true;
|
||||
nud.BackColor = Main.defaultControlWhite;
|
||||
nud.ResetBackColor();
|
||||
c_CustomFlag.Checked = flags[flag];
|
||||
}
|
||||
}
|
||||
@@ -301,7 +301,7 @@ private void diffSaves()
|
||||
SaveFile s1 = SaveUtil.getVariantSAV(File.ReadAllBytes(TB_OldSAV.Text));
|
||||
SaveFile s2 = SaveUtil.getVariantSAV(File.ReadAllBytes(TB_NewSAV.Text));
|
||||
|
||||
if (s1.GetType() != s2.GetType()) { Util.Alert("Save types are different.", $"S1: {s1.GetType()}", $"S2: {s2.GetType()}"); return; }
|
||||
if (s1.GetType() != s2.GetType()) { Util.Alert("Save types are different.", $"S1: {s1.GetType().Name}", $"S2: {s2.GetType().Name}"); return; }
|
||||
if (s1.Version != s2.Version) { Util.Alert("Save versions are different.", $"S1: {s1.Version}", $"S2: {s2.Version}"); return; }
|
||||
|
||||
string tbIsSet = "";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -13,11 +14,16 @@ public SAV_Inventory()
|
||||
switch (SAV.Generation)
|
||||
{
|
||||
case 1:
|
||||
itemlist = PKX.getG1ItemList();
|
||||
itemlist = Main.g1items;
|
||||
B_GiveAll.Visible = false; // Can't give all, not enough room
|
||||
break;
|
||||
case 2:
|
||||
itemlist = Main.g2items;
|
||||
B_GiveAll.Visible = false;
|
||||
break;
|
||||
case 3:
|
||||
itemlist = Main.g3items;
|
||||
B_GiveAll.Visible = false;
|
||||
break;
|
||||
default:
|
||||
itemlist = Main.itemlist;
|
||||
@@ -47,6 +53,8 @@ private void B_Save_Click(object sender, EventArgs e)
|
||||
|
||||
private void getBags()
|
||||
{
|
||||
tabControl1.SizeMode = TabSizeMode.Fixed;
|
||||
tabControl1.ItemSize = new Size(IL_Pouch.Images[0].Width + 4, 0);
|
||||
for (int i = 0; i < Pouches.Length; i++)
|
||||
{
|
||||
// Add Tab
|
||||
@@ -167,7 +175,7 @@ private void packBags()
|
||||
itemcnt++; // No 0 count of items
|
||||
else if (itemcnt > 995)
|
||||
itemcnt = 995; // cap out
|
||||
else if (itemcnt > 99 && SAV.Generation < 3)
|
||||
else if (itemcnt > 99 && SAV.Generation <= 3)
|
||||
itemcnt = 99;
|
||||
|
||||
if (itemindex == 0) // Compression of Empty Slots
|
||||
|
||||
@@ -124,9 +124,9 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADE
|
||||
IwAAAk1TRnQBSQFMAgEBCAEAARgBAAEIAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABgAMAAWADAAEBAQABCAYAATAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABc
|
||||
DwAAAk1TRnQBSQFMAgEBCAEAARgBAAEIAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABYAMAAUgDAAEBAQABCAYAARsYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
|
||||
@@ -154,130 +154,43 @@
|
||||
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
|
||||
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
|
||||
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8A/wD/AP8A
|
||||
/wD/AP8A/wD/AP8A/wD/AP8AFAAT9BMADfQbAAf0CAAg9AMAAfQE/wn0BP8B9BMAAfQL/wH0GwAB9AL/
|
||||
AfQC/wH0CAAe/wL0AQAD9AH/AvQCGQEJAtwB1QLcAQkBGQHzA/8D9A0ABPQB8wEZCdwBGQHzBPQHAAn0
|
||||
AwAG9AEJAdUB3QH/AfQIAAH/ARkb3AEZAvQBAAH0Av8B9AIZAQkB3AHbAtQBzQLUAdsBCQEZA/QC/wH0
|
||||
DQAB9AP/ARkB3AHUB80B1AHcARkD/wH0BwAB9Af/AfQDAAH0A/8B9AEZAdUBzQHcAf8B9AgAAf8B3BnN
|
||||
AtQB3AL0AQAB9AH/AhkB3ALVA9QDzQLUAtUB3AEJAhkB/wH0CwAC9AHzARkC3AHVAtQHzQLUAdUC3AEZ
|
||||
AfMC9AUAAfQB/wH1BPQB/wX0Af8C9AHcAdUB1AHNAdwB/wH0CAAB/wHcAc0a1AHcAvQBAAL0ARkB3AHU
|
||||
C80C1AHbAdwBGQL0CwAB9AH/ARkB3AHUD80B1AHcARkB/wH0BQAB9AH/AfQEGQH0Bf8B9AIZAdUDzQHc
|
||||
Af8B9AgAAf8B3AHNAdQB2xXcAdsB2gHUAdwD9ALzAQkB2wHUDM0C1AHcAQkB8wP0BwAC9AHzARkB3ALU
|
||||
D80C1AHcARkB8wL0AwAB9AH/ARkB3AHbAdUB3AEJARkD8wEZAQkB3AHVAdQDzQHcAf8B9AgAAf8B3AHN
|
||||
AdQB2xXcAdsB2gHUAdwD9ALzAdwC1A3NAdQB1QEJAfMB9AH/AfQHAAH0Af8BGQHcAdQTzQHUAdwBGQH/
|
||||
AfQDAAL0AdwC1AHNAdQB2wHcA90B3AHbAdQFzQHcAf8B9AgAAf8B3AHNAdQB2xXcAdsB2gHUAdwC9AH/
|
||||
ARkBCQHVAdQOzQLUAdwBGQHzAf8B9AcAAfQB/wHcAtQTzQLUAdwB/wH0AwAC9AEZAdwB1QTUA9UD1AXN
|
||||
AdwB/wn0Af8B3AHNAdQB2xXcAdsB2gHUAdwC9AH/ARkB2wHUD80C1AHbAdwBGQL0BwAB9AH/AdwXzQHc
|
||||
Af8B9AUAAfQB/wHcAtQNzQHcAv8I9AH/AdwBzQHUAdsV3AHbAdoB1AHcAvQB/wHcAtQEzQHUC80C1AHb
|
||||
AQkC9AYAAfQB8wEZAdUHzQLUAdUD3AHVAtQHzQHVARkB8wL0AwAB9AH/AQkB2wHUBM0H1ALNAdUIGQH/
|
||||
AfQB/wHcAc0B1AHbFdwB2wHaAdQB3AL0Af8B3AXNA9QLzQLUAdwC9AYAAf8BGQHcAdQHzQHUAdwBGQP/
|
||||
ARkB3AHUB80B1AHcARkB/wH0AwAC9AEZAQkB1QPNCdQBzQHUB9wBGQH/AfQB/wHcAc0B1AHbFdwB2wHa
|
||||
AdQB3AL0Af8B3AHUAs0BzgHUAdUB2wHVA9QHzQLUAdoB3AL0BgAB/wHcAtQFzQLUAdwBGQXcARkB3ALU
|
||||
Bc0C1AHcAf8B9AMAAvQB8wEZAdwB1AHOAc0E1AHVA9sB1AHNBtQB1QHcAd0B/wH0Af8B3AHNAdQB2xXc
|
||||
AdsB2gHUAdwC9AH/AdwC1AHNAdQB1QHcAQkB3AHbAdoC1AXNAtQB2gHbAQkC9AYAAf8B3AfNAdQB3AEZ
|
||||
Af8B3APNAdwB/wEZAdwB1AfNAdwB/wH0BQAB9AH/AQkB1QHUAc0B1APVBNwB1AfNAdQB1QEJAvQB/wHc
|
||||
Ac0B1AHbFdwB2wHaAdQB3AL0Af8BGQHcAdQBzgHUAdUB3AEZAtwB2wLUBc0C1AHbAdwBGQL0BgAB/wHc
|
||||
B9QB3AEZAtwB1APNAdQC3AEZAdwH1AHcAf8B9AMABPQB3AHbAdQBzQTUAdsD3AHUBM0D1AHbAQkBGQL0
|
||||
Af8B3AHNAdQB2wfcAdsB1QPUAdUB2wfcAdsB2gHUAdwD9AIZAdYBzgHUAdUB3AEZAQkB3AHbAtQFzQLU
|
||||
AdwCGQL0BgAB/wEZB9wBGQH/AdwHzQHcAf8BGQfcARkB/wH0AwAC9AIZAdwB2wHUAc0E1AHbA9wB1APN
|
||||
AtQB2gHbAQkC9AIAAf8B3AHNAdQB2wbcAdsC1APNAtQB2wbcAdsB2gHUAdwE9AEZAdwD1AHVAtwB2wLU
|
||||
Bc0C1AHbAdwBGQP0BgAB/wH0BxkB9AH/AdwHzQHcAf8B9AcZAfQB/wH0AQAC9AEZAQkC3AHVAtQBzQHU
|
||||
B9sB1AHNAtQB1QLcAQkBGQL0AgAB/wHcAc0B1AHbBdwB2wHVB9QB1QHbBdwB2wHaAdQB3AL0AQAC9AEJ
|
||||
AdsB1AHNAdQB1QPUBc0C1AHbAdwBGQL0CAAL/wHcB80B3Av/AfQBAAL0AQkB1QPUA80B1APcAdsE1AHN
|
||||
AdQB3AEJAhkC9AQAAf8B3AHNAdQB2wTcAdsC1AHVBdwB1QLUAdsE3AHbAdoB1AHcAvQBAAL0ARkB3AHb
|
||||
AdQB1QHbA9QCzQPUAdUB2wHcARkB8wL0AQAH9AH/ARkI3AEZAtwB1APNAdQC3AEZCNwBGQH/AvQBGQEJ
|
||||
AdUD1ATNAdQD3AHbBNQBzQHUAdwBCQT0BAAB/wHcAc0B1AHbA9wC2wHaAdsH3AHVAdQB1QHbA9wB2wHa
|
||||
AdQB3AL0AQAC9AIZAQkC3AHbAdoC1AHNAtQB2gHbAdwBCQHxAvMC9AEAAfQC/wT0Af8B3AfNAdQB3AEZ
|
||||
Af8B3APNAdwB/wEZAdwB1AfNAdwB/wL0AQkB1QHUB80B1ATcA9UB1AHNAdQB1QEJAf8B9AYAAf8B3AHN
|
||||
AdQB2wLcAdsB1AHaAdsJ3AHVAtQB2wLcAdsB2gHUAdwC9AEAA/QDGQIJAdwB2wPUAdsB3AEJAhkB8wb0
|
||||
Af8B9AEZA/QB/wHcAtQFzQLUAdwBGQXcARkB3ALUBc0C1AHcAf8B9AH/Ad0B3AbVAc4BzQHUA9sB1QTU
|
||||
Ac0BzgHUAdwBGQHzAvQEAAH/AdwBzQHUBNsB2gHbC9wB2wHaBNsB2gHUAdwC9AMABPQC8wEZAtwB2wLc
|
||||
ARkC8wH0Av8B9AEAAfQC/wH0AxkC9AH/ARkB3AHUB80B1AHcARkD/wEZAdwB1AfNAdQB3AEZAf8B9AH/
|
||||
ARkHCQHVAc0J1APNAdUBCQEZAvQEAAH/AdwBzQHUAdsB2gHUAdoB2w3cAdsB2gHUAdoB2wHaAdQB3AL0
|
||||
AwAE9ALzAQkB3AHbAdoB2wHcAQkC8wL0Af8B9ALzARkBCQPcARkD9AHzARkB1QfNAtQB1QPcAdUC1AfN
|
||||
AdUBGQHzAvQB/wHzBxkB1QLNB9QEzQHUAdsBCQH/AfQEAAH/AdwBzQPUAdoB2w/cAdsB2gTUAdwC9AcA
|
||||
AvQBCQHVAtQB2gHbAdwCGQP0AvMB8QEJAdsD1AHcAvQBAAH0Af8B3BfNAdwB/wH0AgAH9AL/AdwNzQLU
|
||||
AdwB/wH0BAAB/wHcA80B1AHbEdwB2wHUAc0C1AHcAvQHAAL0Ad0B3AHVA9QB1QfcAtUD1AHbAQkC9AEA
|
||||
AfQB/wHcAtQTzQLUAdwB/wH0AgAI9AH/AdwFzQPUA9UE1AHVAdwBGQL0AgAB/wHcAc0C1AHbE9wB2wPU
|
||||
AdwC9AcAAvQBGQHcAdsC1AHNCdQDzQHUAdwBGQL0AQAB9AH/ARkB3AHUE80B1AHcARkB/wH0CQAB9AH/
|
||||
AdwFzQHUAdsB3AMZAdwB2wHUAc0C1AHcAvQCAAH/AdwBzQHUAdsV3AHbAdoB1AHcAvQHAAH0Af8CGQHc
|
||||
AdsO1AHcAhkB/wH0AQAC9AHzARkB3ALUD80C1AHcARkB8wL0CQAB9AH/AdwDzQHUAdUB3AEJARkD9AEZ
|
||||
AQkB3AHVAdsB3AEZAf8B9AIAAf8B3AHNAdQB2xXcAdsB2gHUAdwC9AcAAfQC/wH0ARkB3AHbAtQHzQLU
|
||||
AdsB3AEZAfQC/wH0AwAB9AH/ARkB3AHUD80B1AHcARkB/wH0CwAB9AH/AdwDzQHVAhkB9AX/AfQEGQH0
|
||||
Af8B9AIAAf8B3AHNAdQB2xXcAdsB2gHUAdwC9AcAA/QB/wIZAQkB3AHbAtQEzQHUAdUB3AEJAhkB/wP0
|
||||
AwAC9AHzARkC3AHVAtQHzQLUAdUC3AEZAfMC9AsAAfQB/wHcAc0B1AHVAQkC9AH/BfQB/wT0AfUB/wH0
|
||||
AgAB/wHcAc0a1AHcAvQJAAH0Av8D9AEJAdsB1APNAtQB3AP0Av8B9AcAAfQD/wEZAdwB1AfNAdQB3AEZ
|
||||
A/8B9A0AAfQB/wHcAc0B1QH0BP8B9AMAAfQH/wH0AgAB/wHcGc0C1AHcAvQJAAb0ARkBCQbcARkG9AcA
|
||||
BPQB8wEZCdwBGQHzBPQNAAH0Af8BGQHcAd0G9AMACfQCAAH/ARkb3AEZAvQPAAL0Bf8C9BEAAfQL/wH0
|
||||
EQAB9AP/AfQUAB7/AvQHABH0DQAJ9B0ACfQMACD0BwAC9A3/AvQNAAH0B/8B9B0AAfQH/wH0DAAe/wL0
|
||||
AwAF9AIZAQkJ3AMZBfQFAAT0AfMBGQXcARkB8wT0FQAE9AEZB9wBGQT0CAAB/wEZGNwCGQT0AwAC9AL/
|
||||
AfQBGQHcAdUB1AfNAdQB2wHcARkB9AL/AvQFAAH0A/8BGQHcAdQDzQHUAdwBGQP/AfQVAAH0A/8B3AfN
|
||||
AdwD/wH0CAAB/wHcAtQVzQHUAdsB3AIZAvQBAAL0AfMBGQEJAtwB1QLUAc4HzQPUAdUC3AEJARkB8wL0
|
||||
AwAB9AH/ARkB3AHVAtQDzQLUAdUB3AEZAf8B9BMAAvQBGQPcAdUB1AHVA9wB1QHUAdUD3AEZAvQGAAH/
|
||||
AdwC1BXNAdQB2wHcAhkC9AEAAvQBGQEJAdsC1A/NAtQB2wEJARkC9AMAAfQB/wHcC80B3AH/AfQTAAH0
|
||||
Af8B3APNAdQB3AEZA/8BGQHcAdQDzQHcAf8B9AYAAf8B3ALUFc0B1AHbAdwCGQL0AQAC9AEJAdsC1BHN
|
||||
AdQB1QHcAd0C9AIAAfQB8wEZAdUDzQHUA9wB1APNAdUBGQHzAvQPAAL0ARkB3AHVAdQB1QLcARkB9AP/
|
||||
ARkB3AHbA9QB1QHcARkC9AQAAf8B3ALUFc0B1AHbAdwCGQL0AQAC9AHcAtQTzQHUAdUBCQL0AgAB/wEZ
|
||||
AdwB1APNAdwD/wHcA80B1AHcARkB/wH0DwAB9AH/AdwBzQHUAdwBGQf/ARkF3AHUAc0B3AH/AfQEAAH/
|
||||
AdwC1BXNAdQB2wHcAhkD9AHzARkB2wLUE80C1AHcARkB8wL0Af8B3ALUAc0B1AHcARkD9AEZAdwB1AHN
|
||||
AtQB3AH/AfQNAAL0ARkB3AHVAdQB3AEZAfQF/wH0ARkBCQXcAdsB1AHVAdwBGQL0AgAB/wHcAtQVzQHU
|
||||
AdsB3AIZAvQB/wEZAdwB2wLUE80C1AHbAQkBGQL0Af8B3APNAdwB/wH0AwAB9AH/AdwDzQHcAf8B9A0A
|
||||
AfQB/wHcAc0B1AHcARkH/wEZCdwB1AHNAdwB/wH0AgAB/wHcAtQVzQHUAdsB3AIZAvQB/wEJAdsC1BXN
|
||||
AtQB2wEJAvQB/wHcA80B3AH/AfQDAAH0Af8B3APNAdwB/wH0DQAB9AH/AdwBzQHVARkB9Af/ARkJ3AHU
|
||||
Ac0B3AH/AfQCAAH/AdwC1BXNAdQB2wHcAhkC9AH/AdwC1BfNAtQB3AL0Af8B3APNAdwB/wH0AwAB9AH/
|
||||
AdwDzQHcAf8B9A0AAfQB/wHcAc0B3An/ARkJ3AHUAc0B3AH/AfQCAAH/AdwC1BXNAdQB2wHcAhkC9AH/
|
||||
AdwC1BfNAtQB3AL0Af8B3ALUAc0B1AHcARkD9AEZAdwB1AHNAtQB3AH/AfQMAAH0ARkB3AHVAdQB3AX/
|
||||
AfQBGQLcAdUB1AHbB9wB2wHUAdUB3AEZAvQB/wEJAdsB1RXUAdsC3AIZAvQB/wHcAtQXzQLUAdwC9AH/
|
||||
ARkB3AHUA80B3AP/AdwDzQHUAdwBGQH/AfQMAAH/AdwBzQHUAdwBGQX/ARkB3AHUA80B1AncAdQBzQHc
|
||||
Af8B9AH/ARkBCRjcAQkCGQL0Af8BCQHbAtQVzQLUAdsBCQP0AfMBGQHVA80B1APcAdQDzQHVARkB8wL0
|
||||
AQAD9AgAAf8B3AHNAdUBGQH0Bf8B3AHUAdwDCQHcAdQB2wPcAQkDGQHVAc0B3AH/AfQB/wEZAQkY3AEJ
|
||||
AhkC9AH/ARkB3AHbAtQTzQLUAdsBCQEZAvQBAAH0Af8B3AvNAdwB/wH0AwAB9AH/AfQIAAH/AdwBzQHc
|
||||
B/8B3AHNAQkDAAEJAc0B1APcARkD/wHcAc0B3AH/AfQB/wEZAQkY3AEJAhkD9AHzARkB2wLUE80C1AHc
|
||||
ARkB8wL0AQAB9AH/ARkB3AHVAtQFzQLUAdwB/wH0AQAC9AHzARkB8wL0BgAB/wHcAc0B3AP/AfQDGQHV
|
||||
Ac0BCQMAAQkBzQHVAxkB9AP/AdwBzQHcAf8B9AH/AQkB2wHVFdQB2wLcAhkC9AEAAvQB3ALUE80B1AHV
|
||||
AQkC9AMAAfQD/wEZAdwB1AXNAdQB3AEZAf8B9AEAAfQB/wEZAdwBGQH/AfQGAAH/AdwBzQHcA/8BGQPc
|
||||
AdQBzQEJAwABCQHNAdwH/wHcAc0B3AH/AfQB/wHcAtQVzQHUAdsB3AIZAvQBAAL0AQkB2wLUEc0B1AHV
|
||||
AdwB3QL0AwAE9AHzARkE3AHUAc0C1AHcARkB8wH0AfMBGQHcAdQB1QHcARkC9AQAAf8B3AHNAdUDGQEJ
|
||||
A9wB2wHUAdwDCQHcAdQB3AX/AfQBGQHVAc0B3AH/AfQB/wHcAtQVzQHUAdsB3AIZAvQBAAL0ARkBCQHb
|
||||
AtQPzQLUAdsBCQEZAvQHAAH0Bf8B3APNAdQB3AEZAf8BGQHcAdQDzQHcAf8B9AQAAf8B3AHNAdQJ3AHU
|
||||
A80B1AHcARkF/wEZAdwB1AHNAdwB/wH0Af8B3ALUFc0B1AHbAdwCGQL0AQAC9AHzARkBCQLcAtUL1ALV
|
||||
AtwBCQEZAfMC9AcABvQBGQHcAdQBzQLUAdwBGQHcAtQBzQHUAtwBGQHzAvQCAAH0ARkB3AHVAdQB2wfc
|
||||
AdsB1AHVAtwBGQH0Bf8B3AHUAdUB3AEZAvQB/wHcAtQVzQHUAdsB3AIZAvQDAAL0Av8B9AEZAQkL3AEJ
|
||||
ARkB9AL/AvQPAAH0Af8B3APNAdQB3AHUA80B3AH/ARkB3AEZAf8B9AMAAfQB/wHcAc0B1AncARkJ/wHc
|
||||
Ac0B3AH/AfQCAAH/AdwC1BXNAdQB2wHcAhkC9AMAA/QB/wH0ARkC3AHVB9QB2wLcARkB9AH/A/QPAAL0
|
||||
ARkB3AHUAc0D1AHNAdQC3AEZAdwB1AHVAdwBGQL0AQAB9AH/AdwBzQHUCdwBGQf/AfQBGQHVAc0B3AH/
|
||||
AfQCAAH/ARkC3ALVE9QB2wHcARkE9AUAAvQCGQHcAdUB1AfNAdQB2wHcAhkC9BMAAfQB/wHcBc0B3AH/
|
||||
ARkB3AHUA80B3AH/AfQBAAH0Af8B3AHNAdQJ3AEZB/8BGQHcAdQBzQHcAf8B9AIAA/8B9AEZAQkT3AEJ
|
||||
ARkB9AL/AvQDAAL0AfMBGQLcAdUB1AHOB80C1AHVAdwCGQP0EQAC9AEZAdwB1APNAdUBGQHcAtQBzQHU
|
||||
AdwBGQL0AQAC9AEZAdwB1QHUAdsF3AEJARkB9AX/AfQBGQHcAdQB1QHcARkC9AIAAvQB/wEZAdwB2w/U
|
||||
AdUB2wLcAQkBGQH0Af8D9AMAAvQBGQEJAdsC1AvNAdQB1QHcAhkC9BMAAfQB/wHcA80B1AHcAdQDzQHc
|
||||
Af8B9AUAAfQB/wHcAc0B1AXcARkH/wEZAdwB1AHNAdwB/wH0BQAC9AEJAdsB1A/NAtQB2wHcAQkCGQL0
|
||||
AwAC9AHzARkBCQHbAtQMzQHOAdQB1QLcARkB8wL0EQAC9AEZAdwB1AHNA9QBzQHUAdwBGQL0BQAC9AEZ
|
||||
AdwB1QPUAdsB3AEZA/8B9AEZAtwB1QHUAdUB3AEZAvQFAAL0AQkB2wHUD80C1AHbAdwBCQIZAvQDAAL0
|
||||
ARkBCQHbAtQPzQLUAdsBCQEZAvQTAAH0Af8B3AXNAdwB/wH0CQAB9AH/AdwDzQHUAdwBGQP/ARkB3AHU
|
||||
A80B3AH/AfQHAAL0AQkB2wHUD80C1AHbAdwBCQIZAvQDAAL0ARkBCQHbAtQPzQLUAdsBCQEZAvQTAAL0
|
||||
ARkB3AHUAc0B1AHcARkC9AkAAvQBGQPcAdUB1AHVA9wB1QHUAdUD3AEZAvQHAAL0AQkB2wHUD80C1AHb
|
||||
AdwBCQIZAvQDAAL0ARkBCQHbAtQPzQLUAdsBCQEZAvQVAAH0Af8B3AHNAdwB/wH0DQAB9AP/AdwHzQHc
|
||||
A/8B9AkAAvQBCQHbAdQPzQLUAdsB3AEJAhkC9AMAAvQB8wEZAQkT3AEJARkB8wL0FQAC9AEZAdwBGQL0
|
||||
DQAE9AEZB9wBGQT0CQAC9AIZEtwBCQIZBPQFAAL0Ff8C9BkAAfQB/wH0EwAB9Af/AfQNAAL0Gf8C9AIA
|
||||
AUIBTQE+BwABPgMAASgDAAGAAwABYAMAAQEBAAEBBgABBhYAA///AP8AAwAB4AEAAQMC/wGAAQMD/wGA
|
||||
Af8EAAHgAQABAwL/AYABAwP/AYAB/wQAAYACAAH/AfgCAAE/AYABOAEAAf8EAAGAAgAB/wH4AgABPwGA
|
||||
ATgBAAH/BAABgAIAAf8B4AIAAQ8BgAIAAf8EAAGAAgAB/wHgAgABDwGAAgAB/wcAAT8BgAIAAQMBgAIA
|
||||
Af8HAAE/AYACAAEDAYACAAH/BwABPwGAAgABAwGACgABPwGAAgABAwHgCgABPwQAAeAKAAE/BAAB4AoA
|
||||
AT8EAAHgCgABPwQAAfgKAAE/BAAB4AoAAT8EAAHgAgABAwcAAT8EAAGAAgABAwQAAYACAAH/BAABgAIA
|
||||
AQ8EAAGAAgABgAcAAQ8EAAGAAgABgAcAAT8EAAGACgABDwQAAeABAAECCAABDwQAAeAKAAEPBAAB/gMA
|
||||
AYACAAEDAwABDwQAAf4DAAGAAgABAwMAAQMEAAH+AwABgAIAAQMB/gIAAQMEAAH+AwABgAIAAQMB/gIA
|
||||
AQMEAAH+AwAB4AIAAQ8B/gIAAQMEAAH+AwAB4AIAAQ8B/gIAAQMEAAH/AYABAAEDAfgCAAE/Af4BAAE4
|
||||
AQMEAAH/AYABAAEDAfgCAAE/Af4BAAE4AQMEAAH/Af4BAAL/AYABAwH/Af4BDwL/BAAB/gIAAf8B+AED
|
||||
A/8B4AEPAf8EAAH+AgAB/wH4AQMD/wHgAQ8B/wQAAeACAAEPAYABAAE/Af8B/gIAAf8EAAHgAgABDwGA
|
||||
AQABPwH/Af4CAAH/BAABgAIAAQMBgAEAAT8B/wH4AgABPwQAAYACAAEDAYABAAE/Af8B+AIAAT8EAAGA
|
||||
AgABAwIAAQ8B/wHgAgABDwQAAYACAAEDAgABDwH/AeACAAEPCgABDwH/AYACAAEDCQAB4AEPAf8BgAIA
|
||||
AQMJAAHgAQ8B/wGAAgABAwkAAeABDwH/AYACAAEDCgABDwH/DgABDwH/DgABCAH/DAABgAEAATgB/wEA
|
||||
AQMBgAkAAYABAAEgAT8BAAEDAYAFAAGAAgABAwGAAQABIAE/AQABAwGABQABgAIAAQMBgAIAAQ8IAAGA
|
||||
AgABAwH4AgABDwgAAYACAAEDAfgCAAEDCAAB4AIAAQ8B/wHgAQABAwGAAgABAwQAAeACAAEPAf8B4AIA
|
||||
AYACAAEDBAAB+AIAAT8B/wH4AgABgAIAAQMEAAHgAgABDwH/AfgCAAGAAgABAwQAAeACAAEPAf8B/gEA
|
||||
AQMB4AIAAQ8BgAIAAQMBgAIAAQMB/wH+AQABAwHgAgABDwGAAgABAwGAAgABAwL/AYABDwH4AgABPwGA
|
||||
AgABAwGAAgABAwL/AYABDwH4AgABPwGAAgABAwGAAgABAwL/AeABPwH+AgAB/wGAAgABAwGAAgABAwL/
|
||||
AeABPwH+AgAB/wGAAgABAwHgAgABDwL/AfgC/wHgAQ8B/wGAAgABAws=
|
||||
/wD/AAwAFHEEABRLBAAUrAQAFJADABZxAgAWSwIAFqwCABaQAQAYcRhLGKwYkBhxGEsYrBiQCXEE/wtx
|
||||
CUsG/wlLDqwC/wisBZAP/wSQB3EC/wHcAs0B3AL/CXEHSwL/AdwEzQHcAv8HSw2sAf8BzQH/CKwFkAH/
|
||||
Dc0B/wSQBnEB/wHcBs0B3AH/CHEGSwH/AdwIzQHcAf8GSwWsBP8CrAL/As0B/wisBZAB/wHNC9wBzQH/
|
||||
BJAGcQH/CM0B/whxBUsB/wHcCs0B3AH/BUsFrAH/As0B3AL/AdwDzQH/CKwFkAH/Ac0L3AHNAf8EkAVx
|
||||
Af8B3AjNAdwB/wdxBUsB/wzNAf8FSwasAf8IzQH/CKwFkAH/Ac0L3AHNAf8EkAVxAf8KzQH/B3EESwH/
|
||||
AdwEzQHcAv8B3ATNAdwB/wRLBqwB/wHcB80F/wSsBZAB/wHNC9wBzQH/BJAFTwH/A80B3AbNAf8HTwRS
|
||||
Af8EzQHcAf8CzQH/AdwEzQH/BFIHrQH/As0E3AXNAf8ErQWWAf8BzQvcAc0B/wSWBU8B/wHcAc0C/wHc
|
||||
BM0B3AH/B08EUgH/BNwB/wTNAf8E3AH/BFIHrQL/A80C3ATNAf8FrQWWAf8BzQTcA80E3AHNAf8ElgZV
|
||||
Af8CzQH/Bc0B/whVBFkG/wTNBv8EWQbVAf8B3ALNBNwCzQHcAf8G1QW5Af8BzQPcAc0D3AHNA9wBzQH/
|
||||
BLkGVQH/AdwGzQHcAf8IVQRZAf8EzQHcAf8CzQH/AdwEzQH/BFkF1QH/BM0C3APNAv8H1QW5Af8BzQLc
|
||||
Ac0F3AHNAtwBzQH/BLkHVQL/AdwCzQHcAv8DVQL/BFUEWQH/AdwEzQHcAv8B3ATNAdwB/wRZBNUB/wXN
|
||||
BNwCzQH/B9UFuQH/Ac0B3AHNB9wBzQHcAc0B/wS5CVUB/wLcAf8EVQH/AdwB/wRVBVkB/wzNAf8FWQTV
|
||||
Bf8HzQHcAf8G1QW5Af8CzQncAs0B/wS5CVUB/wLNAdwD/wHcAs0B/wRVBVkB/wHcCs0B3AH/BVkI1QH/
|
||||
CM0B/wbVBbkB/wHNC9wBzQH/BLkJVQH/AdwHzQHcAf8EVQZZAf8B3AjNAdwB/wZZCNUB/wPNAdwC/wHc
|
||||
As0B/wXVBbkB/wHNC9wBzQH/BLkKVQH/AdwFzQHcAf8FVQdZAv8B3ATNAdwC/wdZCNUB/wLNAv8C1QT/
|
||||
BdUFuQH/Dc0B/wS5C1UC/wPNAv8GVQlZBv8JWQjVAf8BzQH/DdUFuQ//BLkNVQP/CFUYWQjVAv8O1Ri5
|
||||
GFUYWRjVGLkBABZVAgAWWQIAFtUCABa5AwAUVQQAFFkEABTVBAAUuQQAFI0EABSoBAAUUAQAFEsDABaN
|
||||
AgAWqAIAFlACABZLAQAYjRioGFAYSxiNGKgYUBhLCY0G/wmNB6gE/w2oClAE/wpQBksM/wZLB40C/wHc
|
||||
BM0B3AL/B40FqAL/AdwCzQHcAv8LqAhQAv8EzQL/CFAGSwH/Cc0B3AH/BksGjQH/AdwIzQHcAf8GjQWo
|
||||
Af8GzQH/C6gHUAH/As0B3AL/AdwCzQH/B1AGSwH/Cc0B3AH/BksGjQH/Cs0B/waNBKgB/wHcAs0C/wLN
|
||||
AdwB/wqoBlAB/wHNAdwE/wPcAc0B/wZQBksB/wnNAdwB/wZLBY0B/wHcCs0B3AH/BY0EqAH/As0B/wKo
|
||||
Af8CzQH/CqgFUAH/Ac0B3AT/BdwBzQH/BVAGSwH/Cc0B3AH/BksFjQH/DM0B/wWNBKgB/wLNAf8CqAH/
|
||||
As0B/wqoBVAB/wHNBf8F3AHNAf8FUAZLAf8JzQHcAf8GSwWOAf8MzQH/BY4EygH/AdwCzQL/As0B3AH/
|
||||
CsoEVwH/Ac0B3AP/AdwCzQXcAc0B/wRXBkwB/wrcAf8GTAWOAf8B3ArNAdwB/wWOBcoB/wbNAf8CygH/
|
||||
CMoEVwH/Ac0E/wHNAlcBzQLcAv8BzQH/BFcGTAH/CtwB/wZMBrcB/wrNAf8GtwXQAv8B3APNAdwB/wHQ
|
||||
Af8B3AH/B9AEXAH/Ac0C/wLcAc0CXAHNBP8BzQH/BFwGTQH/Cc0B3AH/Bk0GtwH/AdwIzQHcAf8GtwfQ
|
||||
A/8CzQHcAf8B3ALNAf8G0ARcAf8BzQXcAs0B3AP/AdwBzQH/BFwGTQH/Cc0B3AH/Bk0HtwL/BtwC/we3
|
||||
CtAB/wLNAdwCzQH/AdwB/wXQBVwB/wHNBdwF/wHNAf8FXAZNAf8JzQHcAf8GTQi3Af8B3ATNAdwB/wi3
|
||||
C9AB/wPNAf8B3ALNAf8E0AVcAf8BzQXcBP8B3AHNAf8FXAZNAv8I3AL/Bk0HtwH/AdwGzQHcAf8HtwzQ
|
||||
Af8CzQHcAs0B/wXQBlwB/wHNA9wE/wHcAc0B/wZcB00B/wfNAdwB/wdNBrcB/wHcCM0B3AH/BrcN0AH/
|
||||
A80B/wbQB1wB/wLNAdwC/wHcAs0B/wdcB00B/wfNAdwB/wdNBrcB/wHcCM0B3AH/BrcO0AH/Ac0B/wfQ
|
||||
CFwC/wTNAv8IXAdNAf8HzQHcAf8HTQe3Cv8Htw/QAf8I0ApcBP8KXAdNCv8HTRi3GNAYXBhNGLcY0Bhc
|
||||
GE0BABa3AgAW0AIAFlwCABZNAwAUtwQAFNAEABRcBAAUTQIAAUIBTQE+BwABPgMAASgDAAFgAwABSAMA
|
||||
AQEBAAEBBQABYAEDFgAD//8AIgABwAEAAQMBwAEAAQMBwAEAAQMBwAEAAQMBgAEAAQEBgAEAAQEBgAEA
|
||||
AQEBgAEAAQHwAAGAAQABAQGAAQABAQGAAQABAQGAAQABAQHAAQABAwHAAQABAwHAAQABAwHAAQABAwHA
|
||||
AQABAwHAAQABAwHAAQABAwHAAQABAwGAAQABAQGAAQABAQGAAQABAQGAAQABAfAAAYABAAEBAYABAAEB
|
||||
AYABAAEBAYABAAEBAcABAAEDAcABAAEDAcABAAEDAcABAAEDCw==
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
|
||||
@@ -13,7 +13,8 @@ public SAV_SimpleTrainer()
|
||||
|
||||
cba = new[] {CHK_1, CHK_2, CHK_3, CHK_4, CHK_5, CHK_6, CHK_7, CHK_8};
|
||||
TB_OTName.MaxLength = SAV.OTLength;
|
||||
B_MaxCash.Click += (sender, e) => MT_Money.Text = "9,999,999";
|
||||
B_MaxCash.Click += (sender, e) => MT_Money.Text = SAV.MaxMoney.ToString();
|
||||
MT_Money.Mask = "00000000000".Substring(0, SAV.MaxMoney.ToString().Length);
|
||||
B_MaxCoins.Click += (sender, e) => MT_Coins.Text = "9999";
|
||||
|
||||
CB_Gender.Items.Clear();
|
||||
@@ -55,6 +56,28 @@ public SAV_SimpleTrainer()
|
||||
CB_TextSpeed.SelectedIndex = sav1.TextSpeed;
|
||||
}
|
||||
|
||||
if (SAV is SAV2)
|
||||
{
|
||||
SAV2 sav2 = (SAV2)SAV;
|
||||
MT_Coins.Text = sav2.Coin.ToString();
|
||||
|
||||
L_Started.Visible = L_Fame.Visible = false;
|
||||
CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false;
|
||||
CAL_AdventureStartTime.Visible = CAL_HoFTime.Visible = false;
|
||||
GB_Map.Visible = false;
|
||||
GB_Options.Visible = true;
|
||||
CB_BattleStyle.Items.AddRange(new[] { "Switch", "Set" });
|
||||
CB_SoundType.Items.AddRange(new[] { "Mono", "Stereo" });
|
||||
CB_TextSpeed.Items.AddRange(new[] { "0 (Instant)", "1 (Fast)", "2", "3 (Normal)", "4", "5 (Slow)", "6", "7" });
|
||||
|
||||
CHK_BattleEffects.Checked = sav2.BattleEffects;
|
||||
CB_BattleStyle.SelectedIndex = sav2.BattleStyleSwitch ? 0 : 1;
|
||||
CB_SoundType.SelectedIndex = sav2.Sound > 0 ? 1 : 0;
|
||||
CB_TextSpeed.SelectedIndex = sav2.TextSpeed;
|
||||
badgeval = sav2.Badges;
|
||||
cba = new[] { CHK_1, CHK_2, CHK_3, CHK_4, CHK_6, CHK_5, CHK_7, CHK_8, CHK_H1, CHK_H2, CHK_H3, CHK_H4, CHK_H5, CHK_H6, CHK_H7, CHK_H8 };
|
||||
}
|
||||
|
||||
if (SAV is SAV3)
|
||||
{
|
||||
GB_Map.Visible = false;
|
||||
@@ -143,6 +166,18 @@ private void B_Save_Click(object sender, EventArgs e)
|
||||
sav1.TextSpeed = CB_TextSpeed.SelectedIndex;
|
||||
}
|
||||
|
||||
if (SAV is SAV2)
|
||||
{
|
||||
SAV2 sav2 = (SAV2)SAV;
|
||||
sav2.Coin = (ushort)Util.ToUInt32(MT_Coins.Text);
|
||||
sav2.Badges = badgeval & 0xFFFF;
|
||||
|
||||
sav2.BattleEffects = CHK_BattleEffects.Checked;
|
||||
sav2.BattleStyleSwitch = CB_BattleStyle.SelectedIndex == 0;
|
||||
sav2.Sound = CB_SoundType.SelectedIndex > 0 ? 2 : 0;
|
||||
sav2.TextSpeed = CB_TextSpeed.SelectedIndex;
|
||||
}
|
||||
|
||||
if (SAV is SAV4)
|
||||
{
|
||||
SAV4 s = (SAV4)SAV;
|
||||
|
||||
@@ -468,7 +468,7 @@ private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)
|
||||
}
|
||||
private int wc_slot = -1;
|
||||
|
||||
private static Image getSprite(MysteryGift gift)
|
||||
internal static Image getSprite(MysteryGift gift)
|
||||
{
|
||||
Image img;
|
||||
if (gift.IsPokémon)
|
||||
@@ -487,7 +487,7 @@ private static string getDescription(MysteryGift gift)
|
||||
if (gift.Empty)
|
||||
return "Empty Slot. No data!";
|
||||
|
||||
string s = gift.getCardHeader();
|
||||
string s = gift.getCardHeader() + Environment.NewLine;
|
||||
if (gift.IsItem)
|
||||
{
|
||||
s += "Item: " + Main.itemlist[gift.Item] + Environment.NewLine + "Quantity: " + gift.Quantity;
|
||||
|
||||
@@ -30,7 +30,7 @@ internal static uint SwapEndianness(uint val)
|
||||
/// </summary>
|
||||
/// <param name="val">Value to swap endianness of.</param>
|
||||
/// <returns>The endianness-swapped value.</returns>
|
||||
internal static int SwapEndianness(short val)
|
||||
internal static short SwapEndianness(short val)
|
||||
{
|
||||
return (short)SwapEndianness((ushort)val);
|
||||
}
|
||||
|
||||
@@ -55,6 +55,13 @@ public static string[] getStringList(string f, string l)
|
||||
rawlist[i] = rawlist[i].Trim();
|
||||
return rawlist;
|
||||
}
|
||||
public static string[] getStringListFallback(string f, string l, string fallback)
|
||||
{
|
||||
string[] text = getStringList(f, l);
|
||||
if (text.Length == 0)
|
||||
text = getStringList(f, fallback);
|
||||
return text;
|
||||
}
|
||||
internal static string[] getNulledStringArray(string[] SimpleStringList)
|
||||
{
|
||||
try
|
||||
|
||||