mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-14 17:25:14 -05:00
Refactoring
No functional change besides changing the default save to sav7. Main changes are moving the string data fetching out of the winforms-specific Main.cs
This commit is contained in:
389
PKHeX/Game/GameInfo.cs
Normal file
389
PKHeX/Game/GameInfo.cs
Normal file
@@ -0,0 +1,389 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public static class GameInfo
|
||||
{
|
||||
private static readonly string[] ptransp = { "ポケシフター", "Poké Transfer", "Poké Fret", "Pokétrasporto", "Poképorter", "Pokétransfer", "포케시프터", "ポケシフター" };
|
||||
public static readonly string[] lang_val = { "ja", "en", "fr", "it", "de", "es", "ko", "zh", "pt" };
|
||||
private const string DefaultLanguage = "en";
|
||||
private static readonly GameStrings[] Languages = new GameStrings[lang_val.Length];
|
||||
|
||||
// Lazy fetch implementation
|
||||
public static GameStrings getStrings(string lang)
|
||||
{
|
||||
int l = Array.IndexOf(lang_val, lang);
|
||||
if (l < 0)
|
||||
l = 1;
|
||||
return getIndex(l);
|
||||
}
|
||||
private static GameStrings getIndex(int index)
|
||||
{
|
||||
return Languages[index] ?? (Languages[index] = new GameStrings(lang_val[index]));
|
||||
}
|
||||
|
||||
private static string getTransporterName(string Language)
|
||||
{
|
||||
int lang = Array.IndexOf(lang_val, Language);
|
||||
if (lang < 0 || lang >= ptransp.Length)
|
||||
lang = Array.IndexOf(lang_val, DefaultLanguage);
|
||||
|
||||
return ptransp[lang < 0 ? 1 : lang];
|
||||
}
|
||||
|
||||
// String providing
|
||||
public class GameStrings
|
||||
{
|
||||
// PKM Info
|
||||
public readonly string[] specieslist, movelist, itemlist, abilitylist, types, natures, forms,
|
||||
memories, genloc, trainingbags, trainingstage, characteristics,
|
||||
encountertypelist, gamelanguages, balllist, gamelist, pokeblocks,
|
||||
g3coloitems, g3xditems, g3items, g2items, g1items;
|
||||
|
||||
// Met Locations
|
||||
public readonly string[] metGSC_00000, metRSEFRLG_00000, metCXD_00000;
|
||||
public readonly string[] metHGSS_00000, metHGSS_02000, metHGSS_03000;
|
||||
public readonly string[] metBW2_00000, metBW2_30000, metBW2_40000, metBW2_60000;
|
||||
public readonly string[] metXY_00000, metXY_30000, metXY_40000, metXY_60000;
|
||||
public readonly string[] metSM_00000, metSM_30000, metSM_40000, metSM_60000;
|
||||
|
||||
// Misc
|
||||
public readonly string[] wallpapernames, puffs;
|
||||
public readonly string eggname;
|
||||
private readonly string Language;
|
||||
|
||||
public GameStrings(string l)
|
||||
{
|
||||
Language = l;
|
||||
// Past Generation strings
|
||||
g3items = get("ItemsG3");
|
||||
// XD and Colosseum
|
||||
{
|
||||
g3coloitems = (string[])g3items.Clone();
|
||||
string[] tmp = get("ItemsG3Colosseum");
|
||||
Array.Resize(ref g3coloitems, 500 + tmp.Length);
|
||||
for (int i = g3items.Length; i < g3coloitems.Length; i++)
|
||||
g3coloitems[i] = $"UNUSED {i}";
|
||||
Array.Copy(tmp, 0, g3coloitems, g3coloitems.Length - tmp.Length, tmp.Length);
|
||||
|
||||
g3xditems = (string[])g3items.Clone();
|
||||
string[] tmp2 = get("ItemsG3XD");
|
||||
Array.Resize(ref g3xditems, 500 + tmp2.Length);
|
||||
for (int i = g3items.Length; i < g3xditems.Length; i++)
|
||||
g3xditems[i] = $"UNUSED {i}";
|
||||
Array.Copy(tmp2, 0, g3xditems, g3xditems.Length - tmp2.Length, tmp2.Length);
|
||||
}
|
||||
g2items = get("ItemsG2");
|
||||
g1items = get("ItemsG1");
|
||||
metRSEFRLG_00000 = get("rsefrlg_00000");
|
||||
metGSC_00000 = get("gsc_00000");
|
||||
|
||||
metCXD_00000 = get("cxd_00000");
|
||||
// Sanitize a little
|
||||
var metSanitize = (string[])metCXD_00000.Clone();
|
||||
for (int i = 0; i < metSanitize.Length; i++)
|
||||
if (metCXD_00000.Count(r => r == metSanitize[i]) > 1)
|
||||
metSanitize[i] += $" [{i.ToString("000")}]";
|
||||
metCXD_00000 = metSanitize;
|
||||
|
||||
// Current Generation strings
|
||||
natures = Util.getNaturesList(l);
|
||||
types = get("types");
|
||||
abilitylist = get("abilities");
|
||||
movelist = get("moves");
|
||||
itemlist = get("items");
|
||||
characteristics = get("character");
|
||||
specieslist = get("species");
|
||||
wallpapernames = get("wallpaper");
|
||||
encountertypelist = get("encountertype");
|
||||
gamelist = get("games");
|
||||
gamelanguages = Util.getNulledStringArray(Util.getStringList("languages"));
|
||||
|
||||
balllist = new string[Legal.Items_Ball.Length];
|
||||
for (int i = 0; i < balllist.Length; i++)
|
||||
balllist[i] = itemlist[Legal.Items_Ball[i]];
|
||||
|
||||
pokeblocks = get("pokeblock");
|
||||
forms = get("forms");
|
||||
memories = get("memories");
|
||||
genloc = get("genloc");
|
||||
trainingbags = get("trainingbag");
|
||||
trainingstage = get("supertraining");
|
||||
puffs = get("puff");
|
||||
|
||||
eggname = specieslist[0];
|
||||
metHGSS_00000 = get("hgss_00000");
|
||||
metHGSS_02000 = get("hgss_02000");
|
||||
metHGSS_03000 = get("hgss_03000");
|
||||
metBW2_00000 = get("bw2_00000");
|
||||
metBW2_30000 = get("bw2_30000");
|
||||
metBW2_40000 = get("bw2_40000");
|
||||
metBW2_60000 = get("bw2_60000");
|
||||
metXY_00000 = get("xy_00000");
|
||||
metXY_30000 = get("xy_30000");
|
||||
metXY_40000 = get("xy_40000");
|
||||
metXY_60000 = get("xy_60000");
|
||||
metSM_00000 = get("sm_00000");
|
||||
metSM_30000 = get("sm_30000");
|
||||
metSM_40000 = get("sm_40000");
|
||||
metSM_60000 = get("sm_60000");
|
||||
|
||||
Sanitize();
|
||||
}
|
||||
|
||||
private void Sanitize()
|
||||
{
|
||||
// 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
|
||||
itemlist[734] += " (OR/AS)"; // Storage Key
|
||||
itemlist[478] += " (HG/SS)"; // Basement Key
|
||||
itemlist[478] += " (OR/AS)"; // Basement Key
|
||||
itemlist[621] += " (M)"; // Xtransceiver
|
||||
itemlist[626] += " (F)"; // Xtransceiver
|
||||
itemlist[629] += " (2)"; // DNA Splicers
|
||||
itemlist[637] += " (2)"; // Dropped Item
|
||||
itemlist[707] += " (2)"; // Travel Trunk
|
||||
itemlist[713] += " (2)"; // Alt Bike
|
||||
itemlist[714] += " (2)"; // Holo Caster
|
||||
itemlist[729] += " (1)"; // Meteorite
|
||||
itemlist[740] += " (2)"; // Contest Costume
|
||||
itemlist[751] += " (2)"; // Meteorite
|
||||
itemlist[771] += " (3)"; // Meteorite
|
||||
itemlist[772] += " (4)"; // Meteorite
|
||||
|
||||
// Replace the Egg Name with ---; egg name already stored to eggname
|
||||
specieslist[0] = "---";
|
||||
|
||||
// Get the met locations... for all of the games...
|
||||
|
||||
// Fix up some of the Location strings to make them more descriptive:
|
||||
metHGSS_02000[1] += " (NPC)"; // Anything from an NPC
|
||||
metHGSS_02000[2] += " (" + eggname + ")"; // Egg From Link Trade
|
||||
metBW2_00000[36] = metBW2_00000[84] + "/" + metBW2_00000[36]; // Cold Storage in BW = PWT in BW2
|
||||
|
||||
// BW2 Entries from 76 to 105 are for Entralink in BW
|
||||
for (int i = 76; i < 106; i++)
|
||||
metBW2_00000[i] = metBW2_00000[i] + "●";
|
||||
|
||||
// Localize the Poketransfer to the language (30001)
|
||||
metBW2_30000[1 - 1] = getTransporterName(Language); // Default to English
|
||||
metBW2_30000[2 - 1] += " (NPC)"; // Anything from an NPC
|
||||
metBW2_30000[3 - 1] += $" ({eggname})"; // Link Trade (Egg)
|
||||
|
||||
// Zorua/Zoroark events
|
||||
metBW2_30000[10 - 1] = specieslist[251] + " (" + specieslist[570] + " 1)"; // Celebi's Zorua Event
|
||||
metBW2_30000[11 - 1] = specieslist[251] + " (" + specieslist[570] + " 2)"; // Celebi's Zorua Event
|
||||
metBW2_30000[12 - 1] = specieslist[571] + " (" + "1)"; // Zoroark
|
||||
metBW2_30000[13 - 1] = specieslist[571] + " (" + "2)"; // Zoroark
|
||||
|
||||
metBW2_60000[3 - 1] += " (" + eggname + ")"; // Egg Treasure Hunter/Breeder, whatever...
|
||||
|
||||
metXY_00000[104] += " (X/Y)"; // Victory Road
|
||||
metXY_00000[106] += " (X/Y)"; // Pokémon League
|
||||
metXY_00000[202] += " (OR/AS)"; // Pokémon League
|
||||
metXY_00000[298] += " (OR/AS)"; // Victory Road
|
||||
metXY_30000[0] += " (NPC)"; // Anything from an NPC
|
||||
metXY_30000[1] += " (" + eggname + ")"; // Egg From Link Trade
|
||||
|
||||
// Set the first entry of a met location to "" (nothing)
|
||||
// Fix (None) tags
|
||||
abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = "(" + itemlist[0] + ")";
|
||||
}
|
||||
private string[] get(string ident)
|
||||
{
|
||||
string[] data = Util.getStringList(ident, Language);
|
||||
if (data == null || data.Length == 0)
|
||||
data = Util.getStringList(ident, DefaultLanguage);
|
||||
return data;
|
||||
}
|
||||
|
||||
public string[] getItemStrings(int generation, GameVersion game)
|
||||
{
|
||||
switch (generation)
|
||||
{
|
||||
case 0:
|
||||
return new string[0];
|
||||
case 1:
|
||||
return g1items;
|
||||
case 2:
|
||||
return g2items;
|
||||
case 3:
|
||||
switch (game)
|
||||
{
|
||||
case GameVersion.COLO:
|
||||
return g3coloitems;
|
||||
case GameVersion.XD:
|
||||
return g3xditems;
|
||||
default:
|
||||
return g3items;
|
||||
}
|
||||
default:
|
||||
return itemlist;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// DataSource providing
|
||||
public static List<ComboItem> MoveDataSource, ItemDataSource, SpeciesDataSource, BallDataSource, NatureDataSource, AbilityDataSource, VersionDataSource;
|
||||
private static List<ComboItem> metGen2, metGen3, metGen3CXD, metGen4, metGen5, metGen6;
|
||||
public static void InitializeDataSources(GameStrings s)
|
||||
{
|
||||
int[] ball_nums = { 7, 576, 13, 492, 497, 14, 495, 493, 496, 494, 11, 498, 8, 6, 12, 15, 9, 5, 499, 10, 1, 16 };
|
||||
int[] ball_vals = { 7, 25, 13, 17, 22, 14, 20, 18, 21, 19, 11, 23, 8, 6, 12, 15, 9, 5, 24, 10, 1, 16 };
|
||||
BallDataSource = Util.getVariedCBList(s.itemlist, ball_nums, ball_vals);
|
||||
SpeciesDataSource = Util.getCBList(s.specieslist, null);
|
||||
NatureDataSource = Util.getCBList(s.natures, null);
|
||||
AbilityDataSource = Util.getCBList(s.abilitylist, null);
|
||||
VersionDataSource = Util.getCBList(s.gamelist, Legal.Games_7sm, Legal.Games_6oras, Legal.Games_6xy, Legal.Games_5, Legal.Games_4, Legal.Games_4e, Legal.Games_4r, Legal.Games_3, Legal.Games_3e, Legal.Games_3r, Legal.Games_3s);
|
||||
|
||||
MoveDataSource = Util.getCBList(s.movelist, null);
|
||||
#region Met Locations
|
||||
// Gen 2
|
||||
{
|
||||
var met_list = Util.getCBList(s.metGSC_00000, Enumerable.Range(0, 0x5F).ToArray());
|
||||
met_list = Util.getOffsetCBList(met_list, s.metGSC_00000, 00000, new[] { 0x7E, 0x7F });
|
||||
metGen2 = met_list;
|
||||
}
|
||||
// Gen 3
|
||||
{
|
||||
var met_list = Util.getCBList(s.metRSEFRLG_00000, Enumerable.Range(0, 213).ToArray());
|
||||
met_list = Util.getOffsetCBList(met_list, s.metRSEFRLG_00000, 00000, new[] { 253, 254, 255 });
|
||||
metGen3 = met_list;
|
||||
|
||||
var cxd_list = Util.getCBList(s.metCXD_00000, Enumerable.Range(0, s.metCXD_00000.Length).ToArray()).Where(c => c.Text.Length > 0).ToList();
|
||||
metGen3CXD = cxd_list;
|
||||
}
|
||||
// Gen 4
|
||||
{
|
||||
var met_list = Util.getCBList(s.metHGSS_00000, new[] { 0 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metHGSS_02000, 2000, new[] { 2000 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metHGSS_02000, 2000, new[] { 2002 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metHGSS_03000, 3000, new[] { 3001 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metHGSS_00000, 0000, Legal.Met_HGSS_0);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metHGSS_02000, 2000, Legal.Met_HGSS_2);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metHGSS_03000, 3000, Legal.Met_HGSS_3);
|
||||
metGen4 = met_list;
|
||||
}
|
||||
// Gen 5
|
||||
{
|
||||
var met_list = Util.getCBList(s.metBW2_00000, new[] { 0 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metBW2_60000, 60001, new[] { 60002 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metBW2_30000, 30001, new[] { 30003 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metBW2_00000, 00000, Legal.Met_BW2_0);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metBW2_30000, 30001, Legal.Met_BW2_3);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metBW2_40000, 40001, Legal.Met_BW2_4);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metBW2_60000, 60001, Legal.Met_BW2_6);
|
||||
metGen5 = met_list;
|
||||
}
|
||||
// Gen 6
|
||||
{
|
||||
var met_list = Util.getCBList(s.metXY_00000, new[] { 0 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metXY_60000, 60001, new[] { 60002 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metXY_30000, 30001, new[] { 30002 });
|
||||
met_list = Util.getOffsetCBList(met_list, s.metXY_00000, 00000, Legal.Met_XY_0);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metXY_30000, 30001, Legal.Met_XY_3);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metXY_40000, 40001, Legal.Met_XY_4);
|
||||
met_list = Util.getOffsetCBList(met_list, s.metXY_60000, 60001, Legal.Met_XY_6);
|
||||
metGen6 = met_list;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
public static void setItemDataSource(bool HaX, int MaxItemID, IEnumerable<ushort> allowed, int generation, GameVersion game, GameStrings s)
|
||||
{
|
||||
string[] items = s.getItemStrings(generation, game);
|
||||
ItemDataSource = Util.getCBList(items, (HaX ? Enumerable.Range(0, MaxItemID) : allowed.Select(i => (int) i)).ToArray());
|
||||
}
|
||||
public static List<ComboItem> getLocationList(GameVersion Version, int SaveFormat, bool egg)
|
||||
{
|
||||
if (SaveFormat == 2)
|
||||
return metGen2;
|
||||
|
||||
if (egg)
|
||||
{
|
||||
if (Version < GameVersion.W && SaveFormat >= 5)
|
||||
return metGen4;
|
||||
}
|
||||
|
||||
switch (Version)
|
||||
{
|
||||
case GameVersion.CXD:
|
||||
if (SaveFormat == 3)
|
||||
return metGen3CXD;
|
||||
break;
|
||||
|
||||
case GameVersion.R:
|
||||
case GameVersion.S:
|
||||
if (SaveFormat == 3)
|
||||
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)).ToList(); // Trainer Hill
|
||||
break;
|
||||
case GameVersion.FR:
|
||||
case GameVersion.LG:
|
||||
if (SaveFormat == 3)
|
||||
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(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(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(metGen4.Skip(4).OrderByDescending(loc => loc.Value > 125 && loc.Value < 234)).ToList(); // Celadon Dept.
|
||||
break;
|
||||
|
||||
case GameVersion.B:
|
||||
case GameVersion.W:
|
||||
return metGen5;
|
||||
|
||||
case GameVersion.B2:
|
||||
case GameVersion.W2:
|
||||
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)).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)).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)).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)).ToList();
|
||||
|
||||
return metGen6;
|
||||
}
|
||||
}
|
||||
}
|
||||
69
PKHeX/Game/GameUtil.cs
Normal file
69
PKHeX/Game/GameUtil.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
namespace PKHeX
|
||||
{
|
||||
public static class GameUtil
|
||||
{
|
||||
/// <summary>Determines the Version Grouping of an input Version ID</summary>
|
||||
/// <param name="Version">Version of which to determine the group</param>
|
||||
/// <returns>Version Group Identifier or Invalid if type cannot be determined.</returns>
|
||||
public static GameVersion getMetLocationVersionGroup(GameVersion Version)
|
||||
{
|
||||
switch (Version)
|
||||
{
|
||||
case GameVersion.CXD:
|
||||
return GameVersion.CXD;
|
||||
|
||||
case GameVersion.RBY:
|
||||
return GameVersion.RBY;
|
||||
|
||||
case GameVersion.GS:
|
||||
case GameVersion.C:
|
||||
return GameVersion.GSC;
|
||||
|
||||
case GameVersion.R:
|
||||
case GameVersion.S:
|
||||
return GameVersion.RS;
|
||||
|
||||
case GameVersion.E:
|
||||
return GameVersion.E;
|
||||
|
||||
case GameVersion.FR:
|
||||
case GameVersion.LG:
|
||||
return GameVersion.FR;
|
||||
|
||||
case GameVersion.D:
|
||||
case GameVersion.P:
|
||||
return GameVersion.DP;
|
||||
|
||||
case GameVersion.Pt:
|
||||
return GameVersion.Pt;
|
||||
|
||||
case GameVersion.HG:
|
||||
case GameVersion.SS:
|
||||
return GameVersion.HGSS;
|
||||
|
||||
case GameVersion.B:
|
||||
case GameVersion.W:
|
||||
return GameVersion.BW;
|
||||
|
||||
case GameVersion.B2:
|
||||
case GameVersion.W2:
|
||||
return GameVersion.B2W2;
|
||||
|
||||
case GameVersion.X:
|
||||
case GameVersion.Y:
|
||||
return GameVersion.XY;
|
||||
|
||||
case GameVersion.OR:
|
||||
case GameVersion.AS:
|
||||
return GameVersion.ORAS;
|
||||
|
||||
case GameVersion.SN:
|
||||
case GameVersion.MN:
|
||||
return GameVersion.SM;
|
||||
|
||||
default:
|
||||
return GameVersion.Invalid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
PKHeX/Game/GameVersion.cs
Normal file
42
PKHeX/Game/GameVersion.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
namespace PKHeX
|
||||
{
|
||||
public enum GameVersion
|
||||
{
|
||||
// Not actually stored values, but assigned as properties.
|
||||
XD = -11,
|
||||
COLO = -10,
|
||||
BATREV = -7,
|
||||
RSBOX = -5,
|
||||
GS = -4,
|
||||
C = -3,
|
||||
|
||||
// Indicators
|
||||
Invalid = -2,
|
||||
Any = -1,
|
||||
Unknown = 0,
|
||||
|
||||
// Version IDs, also stored in PKM structure
|
||||
/*Gen3*/ S = 1, R = 2, E = 3, FR = 4, LG = 5, CXD = 15,
|
||||
/*Gen4*/ D = 10, P = 11, Pt = 12, HG = 7, SS = 8,
|
||||
/*Gen5*/ W = 20, B = 21, W2 = 22, B2 = 23,
|
||||
/*Gen6*/ X = 24, Y = 25, AS = 26, OR = 27,
|
||||
/*Gen7*/ SN = 30, MN = 31,
|
||||
|
||||
// Game Groupings (SaveFile type)
|
||||
RBY = 98,
|
||||
GSC = 99,
|
||||
RS = 100,
|
||||
FRLG = 101,
|
||||
DP = 102,
|
||||
HGSS = 103,
|
||||
BW = 104,
|
||||
B2W2 = 105,
|
||||
XY = 106,
|
||||
ORASDEMO = 107,
|
||||
ORAS = 108,
|
||||
SM = 109,
|
||||
|
||||
// Extra Game Groupings (Generation)
|
||||
Gen1, Gen2, Gen3, Gen4, Gen5, Gen6, Gen7
|
||||
}
|
||||
}
|
||||
4
PKHeX/MainWindow/Main.Designer.cs
generated
4
PKHeX/MainWindow/Main.Designer.cs
generated
@@ -3732,7 +3732,7 @@ public void InitializeComponent()
|
||||
this.Menu_ShowdownImportPKM.ShowShortcutKeys = false;
|
||||
this.Menu_ShowdownImportPKM.Size = new System.Drawing.Size(231, 22);
|
||||
this.Menu_ShowdownImportPKM.Text = "Import Set from Clipboard";
|
||||
this.Menu_ShowdownImportPKM.Click += new System.EventHandler(this.clickShowdownImportPK6);
|
||||
this.Menu_ShowdownImportPKM.Click += new System.EventHandler(this.clickShowdownImportPKM);
|
||||
//
|
||||
// Menu_ShowdownExportPKM
|
||||
//
|
||||
@@ -3743,7 +3743,7 @@ public void InitializeComponent()
|
||||
this.Menu_ShowdownExportPKM.ShowShortcutKeys = false;
|
||||
this.Menu_ShowdownExportPKM.Size = new System.Drawing.Size(231, 22);
|
||||
this.Menu_ShowdownExportPKM.Text = "Export Set to Clipboard";
|
||||
this.Menu_ShowdownExportPKM.Click += new System.EventHandler(this.clickShowdownExportPK6);
|
||||
this.Menu_ShowdownExportPKM.Click += new System.EventHandler(this.clickShowdownExportPKM);
|
||||
//
|
||||
// Menu_ShowdownExportParty
|
||||
//
|
||||
|
||||
@@ -47,8 +47,8 @@ public Main()
|
||||
}).Start();
|
||||
|
||||
CB_ExtraBytes.SelectedIndex = 0;
|
||||
getFieldsfromPKM = populateFieldsPK6;
|
||||
getPKMfromFields = preparePK6;
|
||||
getFieldsfromPKM = populateFieldsPK7;
|
||||
getPKMfromFields = preparePK7;
|
||||
|
||||
// Set up form properties and arrays.
|
||||
SlotPictureBoxes = new[] {
|
||||
@@ -141,7 +141,7 @@ public Main()
|
||||
// Select Language
|
||||
string l = Properties.Settings.Default.Language;
|
||||
if (l.Length != 2) l = "en";
|
||||
int lang = Array.IndexOf(lang_val, l);
|
||||
int lang = Array.IndexOf(GameInfo.lang_val, l);
|
||||
CB_MainLanguage.SelectedIndex = lang < 0 ? 1 : lang;
|
||||
|
||||
// Version Check
|
||||
@@ -158,6 +158,7 @@ public Main()
|
||||
|
||||
InitializeFields();
|
||||
formInitialized = true;
|
||||
|
||||
#endregion
|
||||
#region Load Initial File(s)
|
||||
if (args.Length > 1) // Load the arguments
|
||||
@@ -201,32 +202,20 @@ 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 string eggname = "";
|
||||
public static SaveFile SAV = new SAV7 { Game = (int)GameVersion.AS, OT = "PKHeX", TID = 12345, SID = 54321, Language = 2, Country = 49, SubRegion = 7, ConsoleRegion = 1 }; // Save File
|
||||
public static GameInfo.GameStrings GameStrings;
|
||||
private LegalityAnalysis Legality = new LegalityAnalysis(new PK3());
|
||||
|
||||
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,
|
||||
g3coloitems, g3xditems, g3items, g2items, g1items = { };
|
||||
public static string[] metGSC_00000, metRSEFRLG_00000, metCXD_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 = { };
|
||||
public static string[] wallpapernames, puffs = { };
|
||||
public static bool unicode;
|
||||
public static List<ComboItem> MoveDataSource, ItemDataSource, SpeciesDataSource, BallDataSource, NatureDataSource, AbilityDataSource, VersionDataSource;
|
||||
private static List<ComboItem> metGen2, metGen3, metGen3CXD, metGen4, metGen5, metGen6;
|
||||
|
||||
public static volatile bool formInitialized, fieldsInitialized, fieldsLoaded;
|
||||
private static int colorizedbox = -1;
|
||||
private static Image colorizedcolor;
|
||||
private static int colorizedslot;
|
||||
public static bool HaX;
|
||||
private LegalityAnalysis Legality = new LegalityAnalysis(new PK3());
|
||||
private static readonly Image mixedHighlight = Util.ChangeOpacity(Properties.Resources.slotSet, 0.5);
|
||||
private static readonly string[] lang_val = { "ja", "en", "fr", "it", "de", "es", "ko", "zh", "pt" };
|
||||
private static readonly string[] main_langlist =
|
||||
{
|
||||
"日本語", // JPN
|
||||
@@ -452,7 +441,7 @@ private void manMenuBatchEditor(object sender, EventArgs e)
|
||||
updateBoxViewers();
|
||||
}
|
||||
// Misc Options
|
||||
private void clickShowdownImportPK6(object sender, EventArgs e)
|
||||
private void clickShowdownImportPKM(object sender, EventArgs e)
|
||||
{
|
||||
if (!formInitialized)
|
||||
return;
|
||||
@@ -539,7 +528,7 @@ private void clickShowdownImportPK6(object sender, EventArgs e)
|
||||
pkm = preparePKM();
|
||||
updateLegality();
|
||||
}
|
||||
private void clickShowdownExportPK6(object sender, EventArgs e)
|
||||
private void clickShowdownExportPKM(object sender, EventArgs e)
|
||||
{
|
||||
if (!formInitialized)
|
||||
return;
|
||||
@@ -1173,7 +1162,7 @@ private void openSAV(SaveFile sav, string path)
|
||||
if (SAV.Generation == 2)
|
||||
updateOriginGame(null, null);
|
||||
|
||||
// Refresh PK#->PK6 conversion info
|
||||
// Refresh PK* conversion info
|
||||
PKMConverter.updateConfig(SAV.SubRegion, SAV.Country, SAV.ConsoleRegion, SAV.OT, SAV.Gender);
|
||||
|
||||
if (WindowTranslationRequired) // force update -- re-added controls may be untranslated
|
||||
@@ -1239,154 +1228,16 @@ private void changeMainLanguage(object sender, EventArgs e)
|
||||
private void InitializeStrings()
|
||||
{
|
||||
if (CB_MainLanguage.SelectedIndex < 8)
|
||||
curlanguage = lang_val[CB_MainLanguage.SelectedIndex];
|
||||
|
||||
curlanguage = GameInfo.lang_val[CB_MainLanguage.SelectedIndex];
|
||||
|
||||
string l = curlanguage;
|
||||
|
||||
// Past Generation strings
|
||||
g3items = Util.getStringListFallback("ItemsG3", l, "en");
|
||||
// XD and Colosseum
|
||||
{
|
||||
g3coloitems = (string[])g3items.Clone();
|
||||
string[] tmp = Util.getStringListFallback("ItemsG3Colosseum", l, "en");
|
||||
Array.Resize(ref g3coloitems, 500 + tmp.Length);
|
||||
for (int i = g3items.Length; i < g3coloitems.Length; i++)
|
||||
g3coloitems[i] = $"UNUSED {i}";
|
||||
Array.Copy(tmp, 0, g3coloitems, g3coloitems.Length - tmp.Length, tmp.Length);
|
||||
|
||||
g3xditems = (string[])g3items.Clone();
|
||||
string[] tmp2 = Util.getStringListFallback("ItemsG3XD", l, "en");
|
||||
Array.Resize(ref g3xditems, 500 + tmp2.Length);
|
||||
for (int i = g3items.Length; i < g3xditems.Length; i++)
|
||||
g3xditems[i] = $"UNUSED {i}";
|
||||
Array.Copy(tmp2, 0, g3xditems, g3xditems.Length - tmp2.Length, tmp2.Length);
|
||||
}
|
||||
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");
|
||||
|
||||
metCXD_00000 = Util.getStringListFallback("cxd_00000", l, "en");
|
||||
// Sanitize a little
|
||||
var metSanitize = (string[])metCXD_00000.Clone();
|
||||
for (int i = 0; i < metSanitize.Length; i++)
|
||||
if (metCXD_00000.Count(r => r == metSanitize[i]) > 1)
|
||||
metSanitize[i] += $" [{i.ToString("000")}]";
|
||||
metCXD_00000 = metSanitize;
|
||||
|
||||
// Current Generation strings
|
||||
natures = Util.getNaturesList(l);
|
||||
types = Util.getTypesList(l);
|
||||
abilitylist = Util.getAbilitiesList(l);
|
||||
movelist = Util.getMovesList(l);
|
||||
itemlist = Util.getItemsList(l);
|
||||
characteristics = Util.getCharacteristicsList(l);
|
||||
specieslist = Util.getSpeciesList(l);
|
||||
wallpapernames = Util.getStringList("wallpaper", l);
|
||||
encountertypelist = Util.getStringList("encountertype", l);
|
||||
gamelist = Util.getStringList("games", l);
|
||||
gamelanguages = Util.getNulledStringArray(Util.getStringList("languages"));
|
||||
|
||||
balllist = new string[Legal.Items_Ball.Length];
|
||||
for (int i = 0; i < balllist.Length; i++)
|
||||
balllist[i] = itemlist[Legal.Items_Ball[i]];
|
||||
|
||||
if (l != "pt" || (l == "pt" && !fieldsInitialized)) // load initial binaries
|
||||
{
|
||||
pokeblocks = Util.getStringList("pokeblock", l);
|
||||
forms = Util.getFormsList(l);
|
||||
memories = Util.getStringList("memories", l);
|
||||
genloc = Util.getStringList("genloc", l);
|
||||
trainingbags = Util.getStringList("trainingbag", l);
|
||||
trainingstage = Util.getStringList("supertraining", l);
|
||||
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
|
||||
itemlist[734] += " (OR/AS)"; // Storage Key
|
||||
itemlist[478] += " (HG/SS)"; // Basement Key
|
||||
itemlist[478] += " (OR/AS)"; // Basement Key
|
||||
itemlist[621] += " (M)"; // Xtransceiver
|
||||
itemlist[626] += " (F)"; // Xtransceiver
|
||||
itemlist[629] += " (2)"; // DNA Splicers
|
||||
itemlist[637] += " (2)"; // Dropped Item
|
||||
itemlist[707] += " (2)"; // Travel Trunk
|
||||
itemlist[713] += " (2)"; // Alt Bike
|
||||
itemlist[714] += " (2)"; // Holo Caster
|
||||
itemlist[729] += " (1)"; // Meteorite
|
||||
itemlist[740] += " (2)"; // Contest Costume
|
||||
itemlist[751] += " (2)"; // Meteorite
|
||||
itemlist[771] += " (3)"; // Meteorite
|
||||
itemlist[772] += " (4)"; // Meteorite
|
||||
|
||||
// Get the Egg Name and then replace it with --- for the comboboxes.
|
||||
eggname = specieslist[0];
|
||||
specieslist[0] = "---";
|
||||
|
||||
// Get the met locations... for all of the games...
|
||||
metHGSS_00000 = Util.getStringList("hgss_00000", l);
|
||||
metHGSS_02000 = Util.getStringList("hgss_02000", l);
|
||||
metHGSS_03000 = Util.getStringList("hgss_03000", l);
|
||||
|
||||
metBW2_00000 = Util.getStringList("bw2_00000", l);
|
||||
metBW2_30000 = Util.getStringList("bw2_30000", l);
|
||||
metBW2_40000 = Util.getStringList("bw2_40000", l);
|
||||
metBW2_60000 = Util.getStringList("bw2_60000", l);
|
||||
|
||||
metXY_00000 = Util.getStringList("xy_00000", l);
|
||||
metXY_30000 = Util.getStringList("xy_30000", l);
|
||||
metXY_40000 = Util.getStringList("xy_40000", l);
|
||||
metXY_60000 = Util.getStringList("xy_60000", l);
|
||||
|
||||
// Fix up some of the Location strings to make them more descriptive:
|
||||
metHGSS_02000[1] += " (NPC)"; // Anything from an NPC
|
||||
metHGSS_02000[2] += " (" + eggname + ")"; // Egg From Link Trade
|
||||
metBW2_00000[36] = metBW2_00000[84] + "/" + metBW2_00000[36]; // Cold Storage in BW = PWT in BW2
|
||||
|
||||
// BW2 Entries from 76 to 105 are for Entralink in BW
|
||||
for (int i = 76; i < 106; i++)
|
||||
metBW2_00000[i] = metBW2_00000[i] + "●";
|
||||
|
||||
// Localize the Poketransfer to the language (30001)
|
||||
string[] ptransp = { "ポケシフター", "Poké Transfer", "Poké Fret", "Pokétrasporto", "Poképorter", "Pokétransfer", "포케시프터", "ポケシフター" };
|
||||
metBW2_30000[1 - 1] = ptransp[Array.IndexOf(lang_val, curlanguage)];
|
||||
metBW2_30000[2 - 1] += " (NPC)"; // Anything from an NPC
|
||||
metBW2_30000[3 - 1] += " (" + eggname + ")"; // Egg From Link Trade
|
||||
|
||||
// Zorua/Zoroark events
|
||||
metBW2_30000[10 - 1] = specieslist[251] + " (" + specieslist[570] + " 1)"; // Celebi's Zorua Event
|
||||
metBW2_30000[11 - 1] = specieslist[251] + " (" + specieslist[570] + " 2)"; // Celebi's Zorua Event
|
||||
metBW2_30000[12 - 1] = specieslist[571] + " (" + "1)"; // Zoroark
|
||||
metBW2_30000[13 - 1] = specieslist[571] + " (" + "2)"; // Zoroark
|
||||
|
||||
metBW2_60000[3 - 1] += " (" + eggname + ")"; // Egg Treasure Hunter/Breeder, whatever...
|
||||
|
||||
metXY_00000[104] += " (X/Y)"; // Victory Road
|
||||
metXY_00000[106] += " (X/Y)"; // Pokémon League
|
||||
metXY_00000[202] += " (OR/AS)"; // Pokémon League
|
||||
metXY_00000[298] += " (OR/AS)"; // Victory Road
|
||||
metXY_30000[0] += " (NPC)"; // Anything from an NPC
|
||||
metXY_30000[1] += " (" + eggname + ")"; // Egg From Link Trade
|
||||
|
||||
// Set the first entry of a met location to "" (nothing)
|
||||
// Fix (None) tags
|
||||
abilitylist[0] = itemlist[0] = movelist[0] = metXY_00000[0] = metBW2_00000[0] = metHGSS_00000[0] = "(" + itemlist[0] + ")";
|
||||
GameStrings = GameInfo.getStrings(l);
|
||||
|
||||
// Force an update to the met locations
|
||||
origintrack = GameVersion.Unknown;
|
||||
|
||||
// Update Legality Analysis strings
|
||||
LegalityAnalysis.movelist = movelist;
|
||||
LegalityAnalysis.movelist = GameStrings.movelist;
|
||||
|
||||
if (fieldsInitialized)
|
||||
updateIVs(null, null); // Prompt an update for the characteristics
|
||||
@@ -1409,7 +1260,7 @@ private void InitializeFields()
|
||||
TB_TID.Text = 12345.ToString();
|
||||
TB_SID.Text = 54321.ToString();
|
||||
CB_GameOrigin.SelectedIndex = 0;
|
||||
int curlang = Array.IndexOf(lang_val, curlanguage);
|
||||
int curlang = Array.IndexOf(GameInfo.lang_val, curlanguage);
|
||||
CB_Language.SelectedIndex = curlang > CB_Language.Items.Count - 1 ? 1 : curlang;
|
||||
CB_BoxSelect.SelectedIndex = 0;
|
||||
CB_Ball.SelectedIndex = 0;
|
||||
@@ -1430,101 +1281,28 @@ private void InitializeLanguage()
|
||||
setCountrySubRegion(CB_Country, "countries");
|
||||
CB_3DSReg.DataSource = Util.getUnsortedCBList("regions3ds");
|
||||
CB_Language.DataSource = Util.getUnsortedCBList("languages");
|
||||
int[] ball_nums = { 7, 576, 13, 492, 497, 14, 495, 493, 496, 494, 11, 498, 8, 6, 12, 15, 9, 5, 499, 10, 1, 16 };
|
||||
int[] ball_vals = { 7, 25, 13, 17, 22, 14, 20, 18, 21, 19, 11, 23, 8, 6, 12, 15, 9, 5, 24, 10, 1, 16 };
|
||||
BallDataSource = Util.getVariedCBList(itemlist, ball_nums, ball_vals);
|
||||
SpeciesDataSource = Util.getCBList(specieslist, null);
|
||||
NatureDataSource = Util.getCBList(natures, null);
|
||||
AbilityDataSource = Util.getCBList(abilitylist, null);
|
||||
VersionDataSource = Util.getCBList(gamelist, Legal.Games_7sm, Legal.Games_6oras, Legal.Games_6xy, Legal.Games_5, Legal.Games_4, Legal.Games_4e, Legal.Games_4r, Legal.Games_3, Legal.Games_3e, Legal.Games_3r, Legal.Games_3s);
|
||||
|
||||
MoveDataSource = Util.getCBList(movelist, null);
|
||||
GameInfo.InitializeDataSources(GameStrings);
|
||||
|
||||
#region Met Locations
|
||||
// Gen 2
|
||||
{
|
||||
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
|
||||
{
|
||||
var met_list = Util.getCBList(metRSEFRLG_00000, Enumerable.Range(0, 213).ToArray());
|
||||
met_list = Util.getOffsetCBList(met_list, metRSEFRLG_00000, 00000, new[] { 253, 254, 255 });
|
||||
metGen3 = met_list;
|
||||
|
||||
var cxd_list = Util.getCBList(metCXD_00000, Enumerable.Range(0, metCXD_00000.Length).ToArray()).Where(c => c.Text.Length > 0).ToList();
|
||||
metGen3CXD = cxd_list;
|
||||
}
|
||||
// Gen 4
|
||||
{
|
||||
var met_list = Util.getCBList(metHGSS_00000, new[] { 0 });
|
||||
met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2000 });
|
||||
met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, new[] { 2002 });
|
||||
met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, new[] { 3001 });
|
||||
met_list = Util.getOffsetCBList(met_list, metHGSS_00000, 0000, Legal.Met_HGSS_0);
|
||||
met_list = Util.getOffsetCBList(met_list, metHGSS_02000, 2000, Legal.Met_HGSS_2);
|
||||
met_list = Util.getOffsetCBList(met_list, metHGSS_03000, 3000, Legal.Met_HGSS_3);
|
||||
metGen4 = met_list;
|
||||
}
|
||||
// Gen 5
|
||||
{
|
||||
var met_list = Util.getCBList(metBW2_00000, new[] { 0 });
|
||||
met_list = Util.getOffsetCBList(met_list, metBW2_60000, 60001, new[] { 60002 });
|
||||
met_list = Util.getOffsetCBList(met_list, metBW2_30000, 30001, new[] { 30003 });
|
||||
met_list = Util.getOffsetCBList(met_list, metBW2_00000, 00000, Legal.Met_BW2_0);
|
||||
met_list = Util.getOffsetCBList(met_list, metBW2_30000, 30001, Legal.Met_BW2_3);
|
||||
met_list = Util.getOffsetCBList(met_list, metBW2_40000, 40001, Legal.Met_BW2_4);
|
||||
met_list = Util.getOffsetCBList(met_list, metBW2_60000, 60001, Legal.Met_BW2_6);
|
||||
metGen5 = met_list;
|
||||
}
|
||||
// Gen 6
|
||||
{
|
||||
var met_list = Util.getCBList(metXY_00000, new[] { 0 });
|
||||
met_list = Util.getOffsetCBList(met_list, metXY_60000, 60001, new[] { 60002 });
|
||||
met_list = Util.getOffsetCBList(met_list, metXY_30000, 30001, new[] { 30002 });
|
||||
met_list = Util.getOffsetCBList(met_list, metXY_00000, 00000, Legal.Met_XY_0);
|
||||
met_list = Util.getOffsetCBList(met_list, metXY_30000, 30001, Legal.Met_XY_3);
|
||||
met_list = Util.getOffsetCBList(met_list, metXY_40000, 40001, Legal.Met_XY_4);
|
||||
met_list = Util.getOffsetCBList(met_list, metXY_60000, 60001, Legal.Met_XY_6);
|
||||
metGen6 = met_list;
|
||||
}
|
||||
#endregion
|
||||
|
||||
CB_EncounterType.DataSource = Util.getCBList(encountertypelist, new[] { 0 }, Legal.Gen4EncounterTypes);
|
||||
CB_HPType.DataSource = Util.getCBList(types.Skip(1).Take(16).ToArray(), null);
|
||||
CB_Nature.DataSource = new BindingSource(NatureDataSource, null);
|
||||
CB_EncounterType.DataSource = Util.getCBList(GameStrings.encountertypelist, new[] { 0 }, Legal.Gen4EncounterTypes);
|
||||
CB_HPType.DataSource = Util.getCBList(GameStrings.types.Skip(1).Take(16).ToArray(), null);
|
||||
CB_Nature.DataSource = new BindingSource(GameInfo.NatureDataSource, null);
|
||||
|
||||
populateFilteredDataSources();
|
||||
}
|
||||
private void populateFilteredDataSources()
|
||||
{
|
||||
GameInfo.setItemDataSource(HaX, SAV.MaxItemID, SAV.HeldItems, SAV.Generation, SAV.Version, GameStrings);
|
||||
if (SAV.Generation > 1)
|
||||
{
|
||||
string[] items = itemlist;
|
||||
if (SAV.Generation == 3)
|
||||
{
|
||||
switch (SAV.Version)
|
||||
{
|
||||
case GameVersion.COLO: items = g3coloitems; break;
|
||||
case GameVersion.XD: items = g3xditems; break;
|
||||
default: items = g3items; break;
|
||||
}
|
||||
}
|
||||
if (SAV.Generation == 2)
|
||||
items = g2items;
|
||||
CB_HeldItem.DataSource = new BindingSource(GameInfo.ItemDataSource.Where(i => i.Value <= SAV.MaxItemID).ToList(), null);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
CB_Ball.DataSource = new BindingSource(BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
DEV_Ability.DataSource = new BindingSource(AbilityDataSource.Where(a => a.Value <= SAV.MaxAbilityID).ToList(), null);
|
||||
CB_GameOrigin.DataSource = new BindingSource(VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15).ToList(), null);
|
||||
CB_Ball.DataSource = new BindingSource(GameInfo.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
DEV_Ability.DataSource = new BindingSource(GameInfo.AbilityDataSource.Where(a => a.Value <= SAV.MaxAbilityID).ToList(), null);
|
||||
CB_GameOrigin.DataSource = new BindingSource(GameInfo.VersionDataSource.Where(g => g.Value <= SAV.MaxGameID || SAV.Generation >= 3 && g.Value == 15).ToList(), null);
|
||||
|
||||
// Set the Move ComboBoxes too..
|
||||
var moves = MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList();
|
||||
var moves = GameInfo.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList();
|
||||
foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4, CB_RelearnMove1, CB_RelearnMove2, CB_RelearnMove3, CB_RelearnMove4 })
|
||||
{
|
||||
cb.DisplayMember = "Text"; cb.ValueMember = "Value";
|
||||
@@ -1623,7 +1401,7 @@ private void setForms()
|
||||
if (!hasForms)
|
||||
return;
|
||||
|
||||
CB_Form.DataSource = PKX.getFormList(species, types, forms, gendersymbols, SAV.Generation).ToList();
|
||||
CB_Form.DataSource = PKX.getFormList(species, GameStrings.types, GameStrings.forms, gendersymbols, SAV.Generation).ToList();
|
||||
}
|
||||
private void setAbilityList()
|
||||
{
|
||||
@@ -1639,9 +1417,9 @@ private void setAbilityList()
|
||||
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();
|
||||
List<string> ability_list = abils.Where(a => a != 0).Select((t, i) => GameStrings.abilitylist[t] + abilIdentifier[i]).ToList();
|
||||
if (!ability_list.Any())
|
||||
ability_list.Add(abilitylist[0] + abilIdentifier[0]);
|
||||
ability_list.Add(GameStrings.abilitylist[0] + abilIdentifier[0]);
|
||||
|
||||
int abil = CB_Ability.SelectedIndex;
|
||||
CB_Ability.DataSource = ability_list;
|
||||
@@ -1881,7 +1659,7 @@ private void clickMoves(object sender, EventArgs e)
|
||||
{
|
||||
updateLegality();
|
||||
int[] m = Legality.getSuggestedRelearn();
|
||||
string r = string.Join(Environment.NewLine, m.Select(v => v >= movelist.Length ? "ERROR" : movelist[v]));
|
||||
string r = string.Join(Environment.NewLine, m.Select(v => v >= GameStrings.movelist.Length ? "ERROR" : GameStrings.movelist[v]));
|
||||
if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, "Apply suggested relearn moves?", r))
|
||||
return;
|
||||
|
||||
@@ -2001,7 +1779,7 @@ private void updateIVs(object sender, EventArgs e)
|
||||
int characteristic = pkm.Characteristic;
|
||||
L_Characteristic.Visible = Label_CharacteristicPrefix.Visible = characteristic > -1;
|
||||
if (characteristic > -1)
|
||||
L_Characteristic.Text = characteristics[pkm.Characteristic];
|
||||
L_Characteristic.Text = GameStrings.characteristics[pkm.Characteristic];
|
||||
updateStats();
|
||||
}
|
||||
private void updateEVs(object sender, EventArgs e)
|
||||
@@ -2322,101 +2100,21 @@ private void updateSpecies(object sender, EventArgs e)
|
||||
|
||||
updateLegality();
|
||||
}
|
||||
private static List<ComboItem> getLocationList(GameVersion Version, int SaveFormat, bool egg)
|
||||
{
|
||||
if (SaveFormat == 2)
|
||||
return metGen2;
|
||||
|
||||
if (egg)
|
||||
{
|
||||
if (Version < GameVersion.W && SaveFormat >= 5)
|
||||
return metGen4;
|
||||
}
|
||||
|
||||
switch (Version)
|
||||
{
|
||||
case GameVersion.CXD:
|
||||
if (SaveFormat == 3)
|
||||
return metGen3CXD;
|
||||
break;
|
||||
|
||||
case GameVersion.R:
|
||||
case GameVersion.S:
|
||||
if (SaveFormat == 3)
|
||||
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)).ToList(); // Trainer Hill
|
||||
break;
|
||||
case GameVersion.FR:
|
||||
case GameVersion.LG:
|
||||
if (SaveFormat == 3)
|
||||
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(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(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(metGen4.Skip(4).OrderByDescending(loc => loc.Value > 125 && loc.Value < 234)).ToList(); // Celadon Dept.
|
||||
break;
|
||||
|
||||
case GameVersion.B:
|
||||
case GameVersion.W:
|
||||
return metGen5;
|
||||
|
||||
case GameVersion.B2:
|
||||
case GameVersion.W2:
|
||||
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)).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)).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)).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)).ToList();
|
||||
|
||||
return metGen6;
|
||||
}
|
||||
private void updateOriginGame(object sender, EventArgs e)
|
||||
{
|
||||
GameVersion Version = (GameVersion)Util.getIndex(CB_GameOrigin);
|
||||
|
||||
// check if differs
|
||||
GameVersion newTrack = SaveUtil.getMetLocationVersionGroup(Version);
|
||||
GameVersion newTrack = GameUtil.getMetLocationVersionGroup(Version);
|
||||
if (newTrack != origintrack)
|
||||
{
|
||||
var met_list = getLocationList(Version, SAV.Generation, egg:false);
|
||||
var met_list = GameInfo.getLocationList(Version, SAV.Generation, egg:false);
|
||||
CB_MetLocation.DisplayMember = "Text";
|
||||
CB_MetLocation.ValueMember = "Value";
|
||||
CB_MetLocation.DataSource = new BindingSource(met_list, null);
|
||||
CB_MetLocation.SelectedIndex = 0; // transporter or pal park for past gen pkm
|
||||
|
||||
var egg_list = getLocationList(Version, SAV.Generation, egg:true);
|
||||
var egg_list = GameInfo.getLocationList(Version, SAV.Generation, egg:true);
|
||||
CB_EggLocation.DisplayMember = "Text";
|
||||
CB_EggLocation.ValueMember = "Value";
|
||||
CB_EggLocation.DataSource = new BindingSource(egg_list, null);
|
||||
@@ -2488,9 +2186,9 @@ private void updateNatureModification(object sender, EventArgs e)
|
||||
private void updateNickname(object sender, EventArgs e)
|
||||
{
|
||||
if (fieldsInitialized && ModifierKeys == Keys.Control && sender != null) // Import Showdown
|
||||
{ clickShowdownImportPK6(sender, e); return; }
|
||||
{ clickShowdownImportPKM(sender, e); return; }
|
||||
if (fieldsInitialized && ModifierKeys == Keys.Alt && sender != null) // Export Showdown
|
||||
{ clickShowdownExportPK6(sender, e); return; }
|
||||
{ clickShowdownExportPKM(sender, e); return; }
|
||||
if (!fieldsInitialized || CHK_Nicknamed.Checked)
|
||||
return;
|
||||
|
||||
@@ -2922,28 +2620,28 @@ public static string[] verifyPKMtoSAV(PKM pk)
|
||||
{
|
||||
ushort held = (ushort)pk.HeldItem;
|
||||
|
||||
if (held > itemlist.Length)
|
||||
if (held > GameStrings.itemlist.Length)
|
||||
errata.Add($"Item Index beyond range: {held}");
|
||||
else if (held > SAV.MaxItemID)
|
||||
errata.Add($"Game can't obtain item: {itemlist[held]}");
|
||||
errata.Add($"Game can't obtain item: {GameStrings.itemlist[held]}");
|
||||
else if (!pk.CanHoldItem(SAV.HeldItems))
|
||||
errata.Add($"Game can't hold item: {itemlist[held]}");
|
||||
errata.Add($"Game can't hold item: {GameStrings.itemlist[held]}");
|
||||
}
|
||||
|
||||
if (pk.Species > specieslist.Length)
|
||||
if (pk.Species > GameStrings.specieslist.Length)
|
||||
errata.Add($"Species Index beyond range: {pk.HeldItem}");
|
||||
else if (SAV.MaxSpeciesID < pk.Species)
|
||||
errata.Add($"Game can't obtain species: {specieslist[pk.Species]}");
|
||||
errata.Add($"Game can't obtain species: {GameStrings.specieslist[pk.Species]}");
|
||||
|
||||
if (pk.Moves.Any(m => m > movelist.Length))
|
||||
errata.Add($"Item Index beyond range: {string.Join(", ", pk.Moves.Where(m => m > movelist.Length).Select(m => m.ToString()))}");
|
||||
if (pk.Moves.Any(m => m > GameStrings.movelist.Length))
|
||||
errata.Add($"Item Index beyond range: {string.Join(", ", pk.Moves.Where(m => m > GameStrings.movelist.Length).Select(m => m.ToString()))}");
|
||||
else if (pk.Moves.Any(m => m > SAV.MaxMoveID))
|
||||
errata.Add($"Game can't have move: {string.Join(", ", pk.Moves.Where(m => m > SAV.MaxMoveID).Select(m => movelist[m]))}");
|
||||
errata.Add($"Game can't have move: {string.Join(", ", pk.Moves.Where(m => m > SAV.MaxMoveID).Select(m => GameStrings.movelist[m]))}");
|
||||
|
||||
if (pk.Ability > abilitylist.Length)
|
||||
if (pk.Ability > GameStrings.abilitylist.Length)
|
||||
errata.Add($"Ability Index beyond range: {pk.Ability}");
|
||||
else if (pk.Ability > SAV.MaxAbilityID)
|
||||
errata.Add($"Game can't have ability: {abilitylist[pk.Ability]}");
|
||||
errata.Add($"Game can't have ability: {GameStrings.abilitylist[pk.Ability]}");
|
||||
|
||||
return errata.ToArray();
|
||||
}
|
||||
@@ -3948,7 +3646,7 @@ private void B_OUTPasserby_Click(object sender, EventArgs e)
|
||||
// ulong outfit = BitConverter.ToUInt64(savefile, r_offset + 0x5C);
|
||||
int favpkm = BitConverter.ToUInt16(SAV.Data, r_offset + 0x9C) & 0x7FF;
|
||||
string gamename;
|
||||
try { gamename = gamelist[game]; }
|
||||
try { gamename = GameStrings.gamelist[game]; }
|
||||
catch { gamename = "UNKNOWN GAME"; }
|
||||
|
||||
string[] cr = PKX.getCountryRegionText(country, region, curlanguage);
|
||||
@@ -3958,7 +3656,7 @@ private void B_OUTPasserby_Click(object sender, EventArgs e)
|
||||
"Game: " + gamename + Environment.NewLine +
|
||||
"Country: " + cr[0] + Environment.NewLine +
|
||||
"Region: " + cr[1] + Environment.NewLine +
|
||||
"Favorite: " + specieslist[favpkm];
|
||||
"Favorite: " + GameStrings.specieslist[favpkm];
|
||||
|
||||
r_offset += 0xC8; // Advance to next entry
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace PKHeX
|
||||
{
|
||||
public partial class Main
|
||||
{
|
||||
// Main Series
|
||||
private void populateFieldsPK4()
|
||||
{
|
||||
PK4 pk4 = pkm as PK4;
|
||||
@@ -154,7 +155,7 @@ private PKM preparePK4()
|
||||
pk4.SID = Util.ToInt32(TB_SID.Text);
|
||||
pk4.EXP = Util.ToUInt32(TB_EXP.Text);
|
||||
pk4.PID = Util.getHEXval(TB_PID.Text);
|
||||
pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk4.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
|
||||
pk4.FatefulEncounter = CHK_Fateful.Checked;
|
||||
pk4.Gender = PKX.getGender(Label_Gender.Text);
|
||||
@@ -250,6 +251,7 @@ private PKM preparePK4()
|
||||
return pk4;
|
||||
}
|
||||
|
||||
// Battle Revolution
|
||||
private void populateFieldsBK4()
|
||||
{
|
||||
BK4 pk4 = pkm as BK4;
|
||||
@@ -400,7 +402,7 @@ private PKM prepareBK4()
|
||||
pk4.SID = Util.ToInt32(TB_SID.Text);
|
||||
pk4.EXP = Util.ToUInt32(TB_EXP.Text);
|
||||
pk4.PID = Util.getHEXval(TB_PID.Text);
|
||||
pk4.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk4.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
|
||||
pk4.FatefulEncounter = CHK_Fateful.Checked;
|
||||
pk4.Gender = PKX.getGender(Label_Gender.Text);
|
||||
@@ -496,6 +498,4 @@ private PKM prepareBK4()
|
||||
return pk4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ private PKM preparePK5()
|
||||
}
|
||||
else
|
||||
{
|
||||
pk5.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk5.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk5.HiddenAbility = CB_Ability.SelectedIndex > 1; // not 0 or 1
|
||||
}
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ private PKM preparePK6()
|
||||
pk6.TID = Util.ToInt32(TB_TID.Text);
|
||||
pk6.SID = Util.ToInt32(TB_SID.Text);
|
||||
pk6.EXP = Util.ToUInt32(TB_EXP.Text);
|
||||
pk6.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk6.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk6.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number
|
||||
// pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag)
|
||||
pk6.PID = Util.getHEXval(TB_PID.Text);
|
||||
|
||||
@@ -197,7 +197,7 @@ private PKM preparePK7()
|
||||
pk7.TID = Util.ToInt32(TB_TID.Text);
|
||||
pk7.SID = Util.ToInt32(TB_SID.Text);
|
||||
pk7.EXP = Util.ToUInt32(TB_EXP.Text);
|
||||
pk7.Ability = (byte)Array.IndexOf(abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk7.Ability = (byte)Array.IndexOf(GameStrings.abilitylist, CB_Ability.Text.Remove(CB_Ability.Text.Length - 4));
|
||||
pk7.AbilityNumber = Util.ToInt32(TB_AbilityNumber.Text); // Number
|
||||
// pkx[0x16], pkx[0x17] are handled by the Medals UI (Hits & Training Bag)
|
||||
pk7.PID = Util.getHEXval(TB_PID.Text);
|
||||
|
||||
Binary file not shown.
@@ -82,6 +82,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Web" />
|
||||
@@ -96,6 +97,8 @@
|
||||
<Reference Include="System.Deployment" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Game\GameUtil.cs" />
|
||||
<Compile Include="Game\GameVersion.cs" />
|
||||
<Compile Include="Legality\Analysis.cs" />
|
||||
<Compile Include="Legality\Checks.cs" />
|
||||
<Compile Include="Legality\Core.cs" />
|
||||
@@ -107,6 +110,7 @@
|
||||
<Compile Include="Legality\Tables7.cs" />
|
||||
<Compile Include="Legality\Tables5.cs" />
|
||||
<Compile Include="Legality\Tables4.cs" />
|
||||
<Compile Include="Game\GameInfo.cs" />
|
||||
<Compile Include="MainWindow\MainPK7.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -393,7 +397,7 @@
|
||||
<Compile Include="Misc\SplashScreen.Designer.cs">
|
||||
<DependentUpon>SplashScreen.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Misc\ComboItem.cs" />
|
||||
<Compile Include="Game\ComboItem.cs" />
|
||||
<Compile Include="Util\BigEndian.cs" />
|
||||
<Compile Include="Util\DataUtil.cs" />
|
||||
<Compile Include="Util\DateUtil.cs" />
|
||||
@@ -514,7 +518,6 @@
|
||||
<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>
|
||||
|
||||
@@ -316,41 +316,46 @@ public static string[] getCountryRegionText(int country, int region, string lang
|
||||
|
||||
public static string getLocation(PKM pk, bool eggmet)
|
||||
{
|
||||
if (pk.Format <= 2)
|
||||
return "";
|
||||
|
||||
int locval = eggmet ? pk.Egg_Location : pk.Met_Location;
|
||||
|
||||
if (pk.Format == 3)
|
||||
return Main.metRSEFRLG_00000[locval%0x100];
|
||||
if (pk.Version < 0x10 && (eggmet || pk.Format < 5))
|
||||
return Main.GameStrings.metRSEFRLG_00000[locval%0x100];
|
||||
if (pk.Gen4 && (eggmet || pk.Format == 4))
|
||||
{
|
||||
if (locval < 2000) return Main.metHGSS_00000[locval];
|
||||
if (locval < 3000) return Main.metHGSS_02000[locval % 2000];
|
||||
return Main.metHGSS_03000[locval % 3000];
|
||||
if (locval < 2000) return Main.GameStrings.metHGSS_00000[locval];
|
||||
if (locval < 3000) return Main.GameStrings.metHGSS_02000[locval % 2000];
|
||||
return Main.GameStrings.metHGSS_03000[locval % 3000];
|
||||
}
|
||||
if (pk.Version < 24)
|
||||
if (pk.Gen5 || pk.Format <= 5)
|
||||
{
|
||||
if (locval < 30000) return Main.metBW2_00000[locval];
|
||||
if (locval < 40000) return Main.metBW2_30000[locval % 10000 - 1];
|
||||
if (locval < 60000) return Main.metBW2_40000[locval % 10000 - 1];
|
||||
return Main.metBW2_60000[locval % 10000 - 1];
|
||||
if (locval < 30000) return Main.GameStrings.metBW2_00000[locval];
|
||||
if (locval < 40000) return Main.GameStrings.metBW2_30000[locval % 10000 - 1];
|
||||
if (locval < 60000) return Main.GameStrings.metBW2_40000[locval % 10000 - 1];
|
||||
return Main.GameStrings.metBW2_60000[locval % 10000 - 1];
|
||||
}
|
||||
if (pk.Version > 23)
|
||||
if (pk.Gen6 || pk.Format <= 6)
|
||||
{
|
||||
if (locval < 30000) return Main.metXY_00000[locval];
|
||||
if (locval < 40000) return Main.metXY_30000[locval % 10000 - 1];
|
||||
if (locval < 60000) return Main.metXY_40000[locval % 10000 - 1];
|
||||
return Main.metXY_60000[locval % 10000 - 1];
|
||||
if (locval < 30000) return Main.GameStrings.metXY_00000[locval];
|
||||
if (locval < 40000) return Main.GameStrings.metXY_30000[locval % 10000 - 1];
|
||||
if (locval < 60000) return Main.GameStrings.metXY_40000[locval % 10000 - 1];
|
||||
return Main.GameStrings.metXY_60000[locval % 10000 - 1];
|
||||
}
|
||||
return null; // Shouldn't happen.
|
||||
}
|
||||
public static string[] getQRText(PKM pkm)
|
||||
{
|
||||
var s = Main.GameStrings;
|
||||
string[] response = new string[3];
|
||||
// Summarize
|
||||
string filename = pkm.Nickname;
|
||||
if (pkm.Nickname != Main.specieslist[pkm.Species] && Main.specieslist[pkm.Species] != null)
|
||||
filename += $" ({Main.specieslist[pkm.Species]})";
|
||||
response[0] = $"{filename} [{Main.abilitylist[pkm.Ability]}] lv{pkm.Stat_Level} @ {Main.itemlist[pkm.HeldItem]} -- {Main.natures[pkm.Nature]}";
|
||||
response[1] = $"{Main.movelist[pkm.Move1]} / {Main.movelist[pkm.Move2]} / {Main.movelist[pkm.Move3]} / {Main.movelist[pkm.Move4]}";
|
||||
response[2] = String.Format(
|
||||
if (pkm.Nickname != s.specieslist[pkm.Species] && s.specieslist[pkm.Species] != null)
|
||||
filename += $" ({s.specieslist[pkm.Species]})";
|
||||
response[0] = $"{filename} [{s.abilitylist[pkm.Ability]}] lv{pkm.Stat_Level} @ {s.itemlist[pkm.HeldItem]} -- {s.natures[pkm.Nature]}";
|
||||
response[1] = $"{s.movelist[pkm.Move1]} / {s.movelist[pkm.Move2]} / {s.movelist[pkm.Move3]} / {s.movelist[pkm.Move4]}";
|
||||
response[2] = string.Format(
|
||||
"IVs:{0}{1}{2}{3}{4}{5}"
|
||||
+ Environment.NewLine + Environment.NewLine +
|
||||
"EVs:{6}{7}{8}{9}{10}{11}",
|
||||
|
||||
@@ -125,7 +125,7 @@ private void loadFields()
|
||||
RTB_OT.Visible = CB_OTQual.Enabled = CB_OTMemory.Enabled = CB_OTFeel.Enabled = CB_OTVar.Enabled = M_OT_Affection.Enabled = enable;
|
||||
}
|
||||
else
|
||||
GB_M_OT.Text = GB_M_CT.Text = $"N/A: {Main.eggname}";
|
||||
GB_M_OT.Text = GB_M_CT.Text = $"N/A: {Main.GameStrings.eggname}";
|
||||
|
||||
init = true;
|
||||
|
||||
@@ -184,12 +184,12 @@ private void B_Cancel_Click(object sender, EventArgs e)
|
||||
private void getLangStrings()
|
||||
{
|
||||
// Memory Chooser
|
||||
int memorycount = Main.memories.Length - 38;
|
||||
int memorycount = Main.GameStrings.memories.Length - 38;
|
||||
string[] memories = new string[memorycount];
|
||||
int[] allowed = new int[memorycount];
|
||||
for (int i = 0; i < memorycount; i++)
|
||||
{
|
||||
memories[i] = Main.memories[38 + i];
|
||||
memories[i] = Main.GameStrings.memories[38 + i];
|
||||
allowed[i] = i + 1;
|
||||
}
|
||||
Array.Resize(ref allowed, allowed.Length - 1);
|
||||
@@ -209,8 +209,8 @@ private void getLangStrings()
|
||||
CB_OTQual.Items.Clear();
|
||||
for (int i = 0; i < 7; i++)
|
||||
{
|
||||
CB_CTQual.Items.Add(Main.memories[2 + i]);
|
||||
CB_OTQual.Items.Add(Main.memories[2 + i]);
|
||||
CB_CTQual.Items.Add(Main.GameStrings.memories[2 + i]);
|
||||
CB_OTQual.Items.Add(Main.GameStrings.memories[2 + i]);
|
||||
}
|
||||
|
||||
// Feeling Chooser
|
||||
@@ -218,8 +218,8 @@ private void getLangStrings()
|
||||
CB_OTFeel.Items.Clear();
|
||||
for (int i = 0; i < 24; i++)
|
||||
{
|
||||
CB_CTFeel.Items.Add(Main.memories[10 + i]);
|
||||
CB_OTFeel.Items.Add(Main.memories[10 + i]);
|
||||
CB_CTFeel.Items.Add(Main.GameStrings.memories[10 + i]);
|
||||
CB_OTFeel.Items.Add(Main.GameStrings.memories[10 + i]);
|
||||
}
|
||||
}
|
||||
private void getMemoryArguments(string ARG, ComboBox sender)
|
||||
@@ -235,11 +235,11 @@ private void getMemoryArguments(string ARG, ComboBox sender)
|
||||
vs = "";
|
||||
break;
|
||||
case "PKM":
|
||||
argvals = Util.getCBList(Main.specieslist, null);
|
||||
argvals = Util.getCBList(Main.GameStrings.specieslist, null);
|
||||
vs = vartypes[0];
|
||||
break;
|
||||
case "GENLOC":
|
||||
argvals = Util.getCBList(Main.genloc, null);
|
||||
argvals = Util.getCBList(Main.GameStrings.genloc, null);
|
||||
vs = vartypes[1];
|
||||
break;
|
||||
case "ITEM":
|
||||
@@ -265,18 +265,18 @@ private void getMemoryArguments(string ARG, ComboBox sender)
|
||||
/* ORAS */
|
||||
718,719,720,737,738,739,740,741,742,752,753,754,755,756,757,758,759,760,761,762,763,764,765,767,768, 769,770,775
|
||||
};
|
||||
var item_list = Util.getCBList(Main.itemlist, items_allowed);
|
||||
var item_list = Util.getCBList(Main.GameStrings.itemlist, items_allowed);
|
||||
#endregion
|
||||
argvals = item_list;
|
||||
vs = vartypes[2];
|
||||
}
|
||||
break;
|
||||
case "MOVE":
|
||||
argvals = Util.getCBList(Main.movelist, null);
|
||||
argvals = Util.getCBList(Main.GameStrings.movelist, null);
|
||||
vs = vartypes[3];
|
||||
break;
|
||||
case "LOCATION":
|
||||
argvals = Util.getCBList(Main.metXY_00000, Legal.Met_XY_0);
|
||||
argvals = Util.getCBList(Main.GameStrings.metXY_00000, Legal.Met_XY_0);
|
||||
vs = vartypes[4];
|
||||
break;
|
||||
}
|
||||
@@ -307,10 +307,10 @@ private string getMemoryString(ComboBox m, ComboBox arg, ComboBox q, ComboBox f,
|
||||
|
||||
bool enabled = false;
|
||||
if (mem == 0)
|
||||
result = Main.memories[38];
|
||||
result = Main.GameStrings.memories[38];
|
||||
else
|
||||
{
|
||||
result = string.Format(Main.memories[mem + 38], nn, tr, a, f.Text, q.Text);
|
||||
result = string.Format(Main.GameStrings.memories[mem + 38], nn, tr, a, f.Text, q.Text);
|
||||
enabled = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ public SuperTrainingEditor()
|
||||
|
||||
CB_Bag.Items.Clear();
|
||||
CB_Bag.Items.Add("---");
|
||||
for (int i = 1; i < Main.trainingbags.Length - 1; i++)
|
||||
CB_Bag.Items.Add(Main.trainingbags[i]);
|
||||
for (int i = 1; i < Main.GameStrings.trainingbags.Length - 1; i++)
|
||||
CB_Bag.Items.Add(Main.GameStrings.trainingbags[i]);
|
||||
|
||||
if (pkm is PK6)
|
||||
{
|
||||
|
||||
@@ -242,27 +242,27 @@ private void populateComboBoxes()
|
||||
|
||||
var Any = new ComboItem {Text = "Any", Value = -1};
|
||||
|
||||
var DS_Species = new List<ComboItem>(Main.SpeciesDataSource);
|
||||
var DS_Species = new List<ComboItem>(GameInfo.SpeciesDataSource);
|
||||
DS_Species.RemoveAt(0); DS_Species.Insert(0, Any); CB_Species.DataSource = DS_Species;
|
||||
|
||||
var DS_Item = new List<ComboItem>(Main.ItemDataSource);
|
||||
var DS_Item = new List<ComboItem>(GameInfo.ItemDataSource);
|
||||
DS_Item.Insert(0, Any); CB_HeldItem.DataSource = DS_Item;
|
||||
|
||||
var DS_Nature = new List<ComboItem>(Main.NatureDataSource);
|
||||
var DS_Nature = new List<ComboItem>(GameInfo.NatureDataSource);
|
||||
DS_Nature.Insert(0, Any); CB_Nature.DataSource = DS_Nature;
|
||||
|
||||
var DS_Ability = new List<ComboItem>(Main.AbilityDataSource);
|
||||
var DS_Ability = new List<ComboItem>(GameInfo.AbilityDataSource);
|
||||
DS_Ability.Insert(0, Any); CB_Ability.DataSource = DS_Ability;
|
||||
|
||||
var DS_Version = new List<ComboItem>(Main.VersionDataSource);
|
||||
var DS_Version = new List<ComboItem>(GameInfo.VersionDataSource);
|
||||
DS_Version.Insert(0, Any); CB_GameOrigin.DataSource = DS_Version;
|
||||
|
||||
string[] hptypes = new string[Main.types.Length - 2]; Array.Copy(Main.types, 1, hptypes, 0, hptypes.Length);
|
||||
string[] hptypes = new string[Main.GameStrings.types.Length - 2]; Array.Copy(Main.GameStrings.types, 1, hptypes, 0, hptypes.Length);
|
||||
var DS_Type = Util.getCBList(hptypes, null);
|
||||
DS_Type.Insert(0, Any); CB_HPType.DataSource = DS_Type;
|
||||
|
||||
// Set the Move ComboBoxes too..
|
||||
var DS_Move = new List<ComboItem>(Main.MoveDataSource);
|
||||
var DS_Move = new List<ComboItem>(GameInfo.MoveDataSource);
|
||||
DS_Move.RemoveAt(0); DS_Move.Insert(0, Any);
|
||||
{
|
||||
foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 })
|
||||
|
||||
@@ -143,17 +143,17 @@ private void populateComboBoxes()
|
||||
|
||||
var Any = new ComboItem {Text = "Any", Value = -1};
|
||||
|
||||
var DS_Species = new List<ComboItem>(Main.SpeciesDataSource);
|
||||
var DS_Species = new List<ComboItem>(GameInfo.SpeciesDataSource);
|
||||
DS_Species.RemoveAt(0);
|
||||
var filteredSpecies = DS_Species.Where(spec => RawDB.Any(mg => mg.Species == spec.Value)).ToList();
|
||||
filteredSpecies.Insert(0, Any);
|
||||
CB_Species.DataSource = filteredSpecies;
|
||||
|
||||
var DS_Item = new List<ComboItem>(Main.ItemDataSource);
|
||||
var DS_Item = new List<ComboItem>(GameInfo.ItemDataSource);
|
||||
DS_Item.Insert(0, Any); CB_HeldItem.DataSource = DS_Item;
|
||||
|
||||
// Set the Move ComboBoxes too..
|
||||
var DS_Move = new List<ComboItem>(Main.MoveDataSource);
|
||||
var DS_Move = new List<ComboItem>(GameInfo.MoveDataSource);
|
||||
DS_Move.RemoveAt(0); DS_Move.Insert(0, Any);
|
||||
{
|
||||
foreach (ComboBox cb in new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 })
|
||||
|
||||
@@ -14,7 +14,7 @@ public SAV_BoxLayout(int box)
|
||||
|
||||
// Repopulate Wallpaper names
|
||||
CB_BG.Items.Clear();
|
||||
foreach (string wallpaper in Main.wallpapernames)
|
||||
foreach (string wallpaper in Main.GameStrings.wallpapernames)
|
||||
CB_BG.Items.Add(wallpaper);
|
||||
|
||||
// Go
|
||||
|
||||
@@ -67,12 +67,12 @@ private void Setup()
|
||||
|
||||
CB_Species.DisplayMember = "Text";
|
||||
CB_Species.ValueMember = "Value";
|
||||
CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Skip(1).Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
|
||||
CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text";
|
||||
CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value";
|
||||
|
||||
var MoveList = Main.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList();
|
||||
var MoveList = GameInfo.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList();
|
||||
CB_Move1.DataSource = new BindingSource(MoveList, null);
|
||||
CB_Move2.DataSource = new BindingSource(MoveList, null);
|
||||
CB_Move3.DataSource = new BindingSource(MoveList, null);
|
||||
@@ -80,7 +80,7 @@ private void Setup()
|
||||
|
||||
CB_HeldItem.DisplayMember = "Text";
|
||||
CB_HeldItem.ValueMember = "Value";
|
||||
CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource, null);
|
||||
CB_HeldItem.DataSource = new BindingSource(GameInfo.ItemDataSource, null);
|
||||
}
|
||||
|
||||
private void B_Cancel_Click(object sender, EventArgs e)
|
||||
@@ -154,15 +154,16 @@ private void displayEntry(object sender, EventArgs e)
|
||||
string genderstr=gendersymbols[gender];
|
||||
string shinystr = shiny == 1 ? "Yes" : "No";
|
||||
|
||||
string[] movelist = Main.GameStrings.movelist;
|
||||
s += "Name: " + nickname;
|
||||
s += " (" + Main.specieslist[species] + " - " + genderstr + ")" + Environment.NewLine;
|
||||
s += " (" + Main.GameStrings.specieslist[species] + " - " + genderstr + ")" + Environment.NewLine;
|
||||
s += "Level: " + level + Environment.NewLine;
|
||||
s += "Shiny: " + shinystr + Environment.NewLine;
|
||||
s += "Held Item: " + Main.itemlist[helditem] + Environment.NewLine;
|
||||
s += "Move 1: " + Main.movelist[move1] + Environment.NewLine;
|
||||
s += "Move 2: " + Main.movelist[move2] + Environment.NewLine;
|
||||
s += "Move 3: " + Main.movelist[move3] + Environment.NewLine;
|
||||
s += "Move 4: " + Main.movelist[move4] + Environment.NewLine;
|
||||
s += "Held Item: " + Main.GameStrings.itemlist[helditem] + Environment.NewLine;
|
||||
s += "Move 1: " + movelist[move1] + Environment.NewLine;
|
||||
s += "Move 2: " + movelist[move2] + Environment.NewLine;
|
||||
s += "Move 3: " + movelist[move3] + Environment.NewLine;
|
||||
s += "Move 4: " + movelist[move4] + Environment.NewLine;
|
||||
s += "OT: " + OTname + " (" + TID + "/" + SID + ")" + Environment.NewLine;
|
||||
s += Environment.NewLine;
|
||||
|
||||
@@ -326,7 +327,7 @@ private void setForms()
|
||||
|
||||
CB_Form.DisplayMember = "Text";
|
||||
CB_Form.ValueMember = "Value";
|
||||
CB_Form.DataSource = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols).ToList();
|
||||
CB_Form.DataSource = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols).ToList();
|
||||
}
|
||||
private void updateSpecies(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ public SAV_Link6()
|
||||
{
|
||||
cb.DisplayMember = "Text";
|
||||
cb.ValueMember = "Value";
|
||||
cb.DataSource = new BindingSource(Main.ItemDataSource.Where(item => item.Value <= SAV.MaxItemID).ToArray(), null);
|
||||
cb.DataSource = new BindingSource(GameInfo.ItemDataSource.Where(item => item.Value <= SAV.MaxItemID).ToArray(), null);
|
||||
}
|
||||
Util.TranslateInterface(this, Main.curlanguage);
|
||||
byte[] data = SAV.LinkBlock;
|
||||
@@ -99,12 +99,12 @@ private void loadLinkData(byte[] data)
|
||||
NUD_Item6.Value = LinkInfo.Quantity_6;
|
||||
|
||||
// Pokemon slots
|
||||
TB_PKM1.Text = Main.specieslist[LinkInfo.Pokes[0].Species];
|
||||
TB_PKM2.Text = Main.specieslist[LinkInfo.Pokes[1].Species];
|
||||
TB_PKM3.Text = Main.specieslist[LinkInfo.Pokes[2].Species];
|
||||
TB_PKM4.Text = Main.specieslist[LinkInfo.Pokes[3].Species];
|
||||
TB_PKM5.Text = Main.specieslist[LinkInfo.Pokes[4].Species];
|
||||
TB_PKM6.Text = Main.specieslist[LinkInfo.Pokes[5].Species];
|
||||
TB_PKM1.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[0].Species];
|
||||
TB_PKM2.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[1].Species];
|
||||
TB_PKM3.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[2].Species];
|
||||
TB_PKM4.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[3].Species];
|
||||
TB_PKM5.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[4].Species];
|
||||
TB_PKM6.Text = Main.GameStrings.specieslist[LinkInfo.Pokes[5].Species];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public SAV_PokeBlockORAS()
|
||||
|
||||
for (int i = 0; i < lbl_spec.Length; i++)
|
||||
{
|
||||
lbl_spec[i].Text = $"{Main.pokeblocks[94 + i]}:";
|
||||
lbl_spec[i].Text = $"{Main.GameStrings.pokeblocks[94 + i]}:";
|
||||
nup_spec[i].Value = BitConverter.ToUInt32(SAV.Data, SAV.Contest + i * 4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,10 +23,10 @@ public SAV_PokedexORAS()
|
||||
// Fill List
|
||||
CB_Species.DisplayMember = "Text";
|
||||
CB_Species.ValueMember = "Value";
|
||||
CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Skip(1).ToList(), null);
|
||||
|
||||
for (int i = 1; i < SAV.MaxSpeciesID + 1; i++)
|
||||
LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]);
|
||||
LB_Species.Items.Add(i.ToString("000") + " - " + Main.GameStrings.specieslist[i]);
|
||||
|
||||
getData();
|
||||
editing = false;
|
||||
@@ -131,7 +131,7 @@ private void getEntry()
|
||||
int f = SaveUtil.getDexFormIndexORAS(species, fc);
|
||||
if (f < 0)
|
||||
return;
|
||||
string[] forms = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols);
|
||||
string[] forms = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols);
|
||||
if (forms.Length < 1)
|
||||
return;
|
||||
|
||||
|
||||
@@ -23,10 +23,10 @@ public SAV_PokedexXY()
|
||||
// Fill List
|
||||
CB_Species.DisplayMember = "Text";
|
||||
CB_Species.ValueMember = "Value";
|
||||
CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Skip(1).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Skip(1).ToList(), null);
|
||||
|
||||
for (int i = 1; i < SAV.MaxSpeciesID + 1; i++)
|
||||
LB_Species.Items.Add(i.ToString("000") + " - " + Main.specieslist[i]);
|
||||
LB_Species.Items.Add(i.ToString("000") + " - " + Main.GameStrings.specieslist[i]);
|
||||
|
||||
getData();
|
||||
editing = false;
|
||||
@@ -132,7 +132,7 @@ private void getEntry()
|
||||
int f = SaveUtil.getDexFormIndexXY(species, fc);
|
||||
if (f < 0)
|
||||
return;
|
||||
string[] forms = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols);
|
||||
string[] forms = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols);
|
||||
if (forms.Length < 1)
|
||||
return;
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ public SAV_Pokepuff()
|
||||
InitializeComponent();
|
||||
Util.TranslateInterface(this, Main.curlanguage);
|
||||
|
||||
pfa = Main.puffs;
|
||||
pfa = Main.GameStrings.puffs;
|
||||
pfa[0] = "---";
|
||||
Setup();
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public SAV_SecretBase()
|
||||
{
|
||||
InitializeComponent();
|
||||
Util.TranslateInterface(this, Main.curlanguage);
|
||||
abilitylist = Main.abilitylist;
|
||||
abilitylist = Main.GameStrings.abilitylist;
|
||||
|
||||
setupComboBoxes();
|
||||
popFavorite();
|
||||
@@ -35,16 +35,16 @@ private void setupComboBoxes()
|
||||
CB_Ball.DisplayMember = CB_HeldItem.DisplayMember = CB_Species.DisplayMember = CB_Nature.DisplayMember = "Text";
|
||||
CB_Ball.ValueMember = CB_HeldItem.ValueMember = CB_Species.ValueMember = CB_Nature.ValueMember = "Value";
|
||||
|
||||
CB_Ball.DataSource = new BindingSource(Main.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null);
|
||||
CB_HeldItem.DataSource = new BindingSource(Main.ItemDataSource.Where(i => i.Value < SAV.MaxItemID).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
CB_Nature.DataSource = new BindingSource(Main.NatureDataSource, null);
|
||||
CB_Ball.DataSource = new BindingSource(GameInfo.BallDataSource.Where(b => b.Value <= SAV.MaxBallID).ToList(), null);
|
||||
CB_HeldItem.DataSource = new BindingSource(GameInfo.ItemDataSource.Where(i => i.Value < SAV.MaxItemID).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
CB_Nature.DataSource = new BindingSource(GameInfo.NatureDataSource, null);
|
||||
|
||||
|
||||
CB_Move1.DisplayMember = CB_Move2.DisplayMember = CB_Move3.DisplayMember = CB_Move4.DisplayMember = "Text";
|
||||
CB_Move1.ValueMember = CB_Move2.ValueMember = CB_Move3.ValueMember = CB_Move4.ValueMember = "Value";
|
||||
|
||||
var MoveList = Main.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList();
|
||||
var MoveList = GameInfo.MoveDataSource.Where(m => m.Value <= SAV.MaxMoveID).ToList();
|
||||
CB_Move1.DataSource = new BindingSource(MoveList, null);
|
||||
CB_Move2.DataSource = new BindingSource(MoveList, null);
|
||||
CB_Move3.DataSource = new BindingSource(MoveList, null);
|
||||
@@ -434,7 +434,7 @@ private void setForms()
|
||||
|
||||
CB_Form.DisplayMember = "Text";
|
||||
CB_Form.ValueMember = "Value";
|
||||
CB_Form.DataSource = PKX.getFormList(species, Main.types, Main.forms, Main.gendersymbols).ToList();
|
||||
CB_Form.DataSource = PKX.getFormList(species, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols).ToList();
|
||||
}
|
||||
|
||||
private void updateSpecies(object sender, EventArgs e)
|
||||
|
||||
@@ -8,14 +8,14 @@ public partial class SAV_SuperTrain : Form
|
||||
{
|
||||
public SAV_SuperTrain()
|
||||
{
|
||||
trba = Main.trainingbags;
|
||||
trba = Main.GameStrings.trainingbags;
|
||||
trba[0] = "---";
|
||||
offsetTime = SAV.SuperTrain + 0x08;
|
||||
offsetSpec = SAV.SuperTrain + 0x188;
|
||||
offsetVal = SAV.SuperTrain + 0x18A;
|
||||
InitializeComponent();
|
||||
Util.TranslateInterface(this, Main.curlanguage);
|
||||
string[] stages = Main.trainingstage;
|
||||
string[] stages = Main.GameStrings.trainingstage;
|
||||
listBox1.Items.Clear();
|
||||
for (int i = 0; i < 30; i++)
|
||||
listBox1.Items.Add((i + 1).ToString("00") + " - " + stages[i + 2]);
|
||||
@@ -35,11 +35,11 @@ private void setup()
|
||||
{
|
||||
CB_Species.DisplayMember = "Text";
|
||||
CB_Species.ValueMember = "Value";
|
||||
CB_Species.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
|
||||
CB_S2.DisplayMember = "Text";
|
||||
CB_S2.ValueMember = "Value";
|
||||
CB_S2.DataSource = new BindingSource(Main.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
CB_S2.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(s => s.Value <= SAV.MaxSpeciesID).ToList(), null);
|
||||
}
|
||||
listBox1.SelectedIndex = 0;
|
||||
fillTrainingBags();
|
||||
|
||||
@@ -329,10 +329,10 @@ private void getComboBoxes()
|
||||
CB_MultiplayerSprite.ValueMember = "Value";
|
||||
CB_MultiplayerSprite.DataSource = oras_sprite_list;
|
||||
|
||||
L_Vivillon.Text = Main.specieslist[666] + ":";
|
||||
L_Vivillon.Text = Main.GameStrings.specieslist[666] + ":";
|
||||
CB_Vivillon.DisplayMember = "Text";
|
||||
CB_Vivillon.ValueMember = "Value";
|
||||
CB_Vivillon.DataSource = PKX.getFormList(666, Main.types, Main.forms, Main.gendersymbols).ToList();
|
||||
CB_Vivillon.DataSource = PKX.getFormList(666, Main.GameStrings.types, Main.GameStrings.forms, Main.gendersymbols).ToList();
|
||||
}
|
||||
private void getBadges()
|
||||
{
|
||||
|
||||
@@ -11,29 +11,10 @@ public SAV_Inventory()
|
||||
{
|
||||
InitializeComponent();
|
||||
Util.TranslateInterface(this, Main.curlanguage);
|
||||
switch (SAV.Generation)
|
||||
{
|
||||
case 1:
|
||||
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:
|
||||
switch (SAV.Version)
|
||||
{
|
||||
case GameVersion.XD: itemlist = Main.g3xditems; break;
|
||||
case GameVersion.COLO: itemlist = Main.g3coloitems; break;
|
||||
default: itemlist = Main.g3items; break;
|
||||
}
|
||||
B_GiveAll.Visible = false;
|
||||
break;
|
||||
default:
|
||||
itemlist = Main.itemlist;
|
||||
break;
|
||||
}
|
||||
if (SAV.Generation <= 3)
|
||||
B_GiveAll.Visible = false;
|
||||
itemlist = Main.GameStrings.getItemStrings(SAV.Generation, SAV.Version);
|
||||
|
||||
for (int i = 0; i < itemlist.Length; i++)
|
||||
if (itemlist[i] == "")
|
||||
itemlist[i] = $"(Item #{i.ToString("000")})";
|
||||
|
||||
@@ -482,7 +482,7 @@ private static string getDescription(MysteryGift gift)
|
||||
string s = gift.getCardHeader() + Environment.NewLine;
|
||||
if (gift.IsItem)
|
||||
{
|
||||
s += "Item: " + Main.itemlist[gift.Item] + Environment.NewLine + "Quantity: " + gift.Quantity;
|
||||
s += "Item: " + Main.GameStrings.itemlist[gift.Item] + Environment.NewLine + "Quantity: " + gift.Quantity;
|
||||
return s;
|
||||
}
|
||||
if (gift.IsPokémon)
|
||||
@@ -491,9 +491,9 @@ private static string getDescription(MysteryGift gift)
|
||||
|
||||
try
|
||||
{
|
||||
s += $"{Main.specieslist[pk.Species]} @ {Main.itemlist[pk.HeldItem]} --- ";
|
||||
s += (pk.IsEgg ? Main.eggname : $"{pk.OT_Name} - {pk.TID.ToString("00000")}/{pk.SID.ToString("00000")}") + Environment.NewLine;
|
||||
s += $"{Main.movelist[pk.Move1]} / {Main.movelist[pk.Move2]} / {Main.movelist[pk.Move3]} / {Main.movelist[pk.Move4]}" + Environment.NewLine;
|
||||
s += $"{Main.GameStrings.specieslist[pk.Species]} @ {Main.GameStrings.itemlist[pk.HeldItem]} --- ";
|
||||
s += (pk.IsEgg ? Main.GameStrings.eggname : $"{pk.OT_Name} - {pk.TID.ToString("00000")}/{pk.SID.ToString("00000")}") + Environment.NewLine;
|
||||
s += $"{Main.GameStrings.movelist[pk.Move1]} / {Main.GameStrings.movelist[pk.Move2]} / {Main.GameStrings.movelist[pk.Move3]} / {Main.GameStrings.movelist[pk.Move4]}" + Environment.NewLine;
|
||||
}
|
||||
catch { s += "Unable to create gift description."; }
|
||||
return s;
|
||||
|
||||
@@ -19,23 +19,23 @@ public class Preview
|
||||
public string Position => pkm.Identifier;
|
||||
public Image Sprite => pkm.Sprite;
|
||||
public string Nickname => pkm.Nickname;
|
||||
public string Species => Main.specieslist[pkm.Species];
|
||||
public string Nature => Main.natures[pkm.Nature];
|
||||
public string Species => Main.GameStrings.specieslist[pkm.Species];
|
||||
public string Nature => Main.GameStrings.natures[pkm.Nature];
|
||||
public string Gender => Main.gendersymbols[pkm.Gender];
|
||||
public string ESV => pkm.PSV.ToString("0000");
|
||||
public string HP_Type => Main.types[pkm.HPType+1];
|
||||
public string Ability => Main.abilitylist[pkm.Ability];
|
||||
public string Move1 => Main.movelist[pkm.Move1];
|
||||
public string Move2 => Main.movelist[pkm.Move2];
|
||||
public string Move3 => Main.movelist[pkm.Move3];
|
||||
public string Move4 => Main.movelist[pkm.Move4];
|
||||
public string HeldItem => Main.itemlist[pkm.HeldItem];
|
||||
public string HP_Type => Main.GameStrings.types[pkm.HPType+1];
|
||||
public string Ability => Main.GameStrings.abilitylist[pkm.Ability];
|
||||
public string Move1 => Main.GameStrings.movelist[pkm.Move1];
|
||||
public string Move2 => Main.GameStrings.movelist[pkm.Move2];
|
||||
public string Move3 => Main.GameStrings.movelist[pkm.Move3];
|
||||
public string Move4 => Main.GameStrings.movelist[pkm.Move4];
|
||||
public string HeldItem => Main.GameStrings.itemlist[pkm.HeldItem];
|
||||
public string MetLoc => PKX.getLocation(pkm, eggmet: false);
|
||||
public string EggLoc => PKX.getLocation(pkm, eggmet: true);
|
||||
public string Ball => Main.balllist[pkm.Ball];
|
||||
public string Ball => Main.GameStrings.balllist[pkm.Ball];
|
||||
public string OT => pkm.OT_Name;
|
||||
public string Version => Main.gamelist[pkm.Version];
|
||||
public string OTLang => Main.gamelanguages[pkm.Language] ?? $"UNK {pkm.Language}";
|
||||
public string Version => Main.GameStrings.gamelist[pkm.Version];
|
||||
public string OTLang => Main.GameStrings.gamelanguages[pkm.Language] ?? $"UNK {pkm.Language}";
|
||||
public string CountryID => pkm.Format > 5 ? ((PK6) pkm).Country.ToString() : "N/A";
|
||||
public string RegionID => pkm.Format > 5 ? ((PK6) pkm).Region.ToString() : "N/A";
|
||||
public string DSRegionID => pkm.Format > 5 ? ((PK6) pkm).ConsoleRegion.ToString() : "N/A";
|
||||
@@ -91,10 +91,10 @@ public class Preview
|
||||
public int Move2_PPUp => pkm.Move2_PPUps;
|
||||
public int Move3_PPUp => pkm.Move3_PPUps;
|
||||
public int Move4_PPUp => pkm.Move4_PPUps;
|
||||
public string Relearn1 => Main.movelist[pkm.RelearnMove1];
|
||||
public string Relearn2 => Main.movelist[pkm.RelearnMove2];
|
||||
public string Relearn3 => Main.movelist[pkm.RelearnMove3];
|
||||
public string Relearn4 => Main.movelist[pkm.RelearnMove4];
|
||||
public string Relearn1 => Main.GameStrings.movelist[pkm.RelearnMove1];
|
||||
public string Relearn2 => Main.GameStrings.movelist[pkm.RelearnMove2];
|
||||
public string Relearn3 => Main.GameStrings.movelist[pkm.RelearnMove3];
|
||||
public string Relearn4 => Main.GameStrings.movelist[pkm.RelearnMove4];
|
||||
public ushort Checksum => pkm.Checksum;
|
||||
public int mFriendship => pkm.OT_Friendship;
|
||||
public int OT_Affection => pkm.OT_Affection;
|
||||
|
||||
Reference in New Issue
Block a user