Add more savegame specific safeguards for pk6set

This commit is contained in:
Kaphotics
2016-04-24 12:40:46 -07:00
parent c2981510a9
commit d3b5968efd
2 changed files with 17 additions and 6 deletions

View File

@@ -9,7 +9,7 @@ public static partial class Legal
internal static WC6[] WC6DB;
// PKHeX master personal.dat
internal static readonly PersonalInfo[] PersonalAO = PersonalInfo.getArray(Properties.Resources.personal_ao, PersonalInfo.SizeAO);
private static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY);
internal static readonly PersonalInfo[] PersonalXY = PersonalInfo.getArray(Properties.Resources.personal_xy, PersonalInfo.SizeXY);
private static readonly EggMoves[] EggMoveXY = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_xy, "xy"));
private static readonly Learnset[] LevelUpXY = Learnset.getArray(Data.unpackMini(Properties.Resources.lvlmove_xy, "xy"));
private static readonly EggMoves[] EggMoveAO = EggMoves.getArray(Data.unpackMini(Properties.Resources.eggmove_ao, "ao"));

View File

@@ -2747,20 +2747,31 @@ private void clickSet(object sender, EventArgs e)
int offset = getPKXOffset(slot);
PK6 pk = preparepkx();
if (!SAV.ORAS)
string err = "";
if (SAV.XY)
{
// User Protection
string err = "";
if (pk.Moves.Any(m => m > 617))
err = "Move does not exist in X/Y.";
else if (pk.Ability > 188)
err = "Ability does not exist in X/Y.";
else if (pk.HeldItem > 717)
err = "Item does not exist in X/Y.";
if (err != "" && Util.Prompt(MessageBoxButtons.YesNo, err, "Continue?") != DialogResult.Yes)
return;
else if (pk.Species > 721)
err = "Species does not exist in X/Y.";
else if (pk.AltForm > Legal.PersonalXY[pk.Species].FormeCount - 1)
err = "Form does not exist in X/Y.";
}
else if (SAV.ORAS)
{
if (pk.Species > 721)
err = "Species does not exist in OR/AS.";
else if (pk.AltForm > Legal.PersonalAO[pk.Species].FormeCount - 1)
err = "Form does not exist in OR/AS.";
}
if (!string.IsNullOrEmpty(err) && Util.Prompt(MessageBoxButtons.YesNo, err, "Continue?") != DialogResult.Yes)
return;
if (slot >= 30 && slot < 36) // Party
SAV.setPK6Party(pk, offset);
else if (slot < 30 || (slot >= 36 && slot < 42 && DEV_Ability.Enabled))