Meowstic/Magearna dex edit/set

Also fixes tatsugiri form set when giving all
This commit is contained in:
Kurt 2025-12-12 12:50:07 -06:00
parent c148da9ab4
commit aee2d1a556
3 changed files with 46 additions and 16 deletions

View File

@ -950,7 +950,7 @@ private static string[] GetFormsZygarde(IReadOnlyList<string> forms, string[] re
return result;
}
public static MegaFormNames GetMegaFormNames(ReadOnlySpan<string> forms) => new()
public static MegaFormNames GetMegaFormNames(ReadOnlySpan<string> forms, IReadOnlyList<string> gender, IReadOnlyList<string> types) => new()
{
Regular = forms[Mega],
X = forms[MegaX],
@ -960,6 +960,12 @@ public static MegaFormNames GetMegaFormNames(ReadOnlySpan<string> forms) => new(
Tatsu0 = $"{forms[Curly]}-{forms[Mega]}",
Tatsu1 = $"{forms[Droopy]}-{forms[Mega]}",
Tatsu2 = $"{forms[Stretchy]}-{forms[Mega]}",
MeowsticM = $"{gender[000]}-{forms[Mega]}",
MeowsticF = $"{gender[001]}-{forms[Mega]}",
Magearna0 = $"{types[000]}-{forms[Mega]}",
Magearna1 = $"{forms[1062]}-{forms[Mega]}",
};
private const int Mega = 804;
@ -1139,4 +1145,8 @@ public sealed record MegaFormNames
public required string Tatsu0 { get; init; }
public required string Tatsu1 { get; init; }
public required string Tatsu2 { get; init; }
public required string MeowsticM { get; init; }
public required string MeowsticF { get; init; }
public required string Magearna0 { get; init; }
public required string Magearna1 { get; init; }
}

View File

@ -1,3 +1,5 @@
using System;
namespace PKHeX.Core;
public sealed class Zukan9a(SAV9ZA sav, SCBlock block) : ZukanBase<SAV9ZA>(sav, block.Raw)
@ -39,8 +41,13 @@ private void Register(PKM pk, ushort species, byte form)
entry.SetIsFormCaught(form, true);
if (FormInfo.IsMegaForm(species, form))
entry.SetIsSeenMega(0, true);
if (IsMegaFormXY(species, SAV.SaveRevision))
if (IsMegaFormXY(species, SAV.SaveRevision) || IsMegaFormZA(species, SAV.SaveRevision))
entry.SetIsSeenMega(1, true);
else if (species is (int)Species.Magearna or (int)Species.Meowstic)
entry.SetIsSeenMega(1, true);
else if (species == (int)Species.Tatsugiri)
entry.SetIsSeenMega(form < 3 ? form : (byte)Math.Clamp(form - 3, 0, 3), true);
entry.SetLanguageFlag(pk.Language, true);
var isShiny = pk.IsShiny;
@ -218,10 +225,13 @@ private void SeenAll(ushort species, PersonalInfo9ZA pi, bool value = true, bool
entry.SetIsSeenAlpha(value);
if (FormInfo.IsMegaForm(species, form))
entry.SetIsSeenMega(0, value);
if (IsMegaFormXY(species, SAV.SaveRevision) || IsMegaFormZA(species, SAV.SaveRevision))
entry.SetIsSeenMega(1, value);
else if (species is (int)Species.Tatsugiri or (int)Species.Magearna)
entry.SetIsSeenMega(form, value);
else if (species is (int)Species.Magearna or (int)Species.Meowstic)
entry.SetIsSeenMega(1, value);
else if (species == (int)Species.Tatsugiri)
entry.SetIsSeenMega(form < 3 ? form : (byte)Math.Clamp(form - 3, 0, 3), true);
if (value)
{

View File

@ -40,7 +40,8 @@ public SAV_Pokedex9a(SAV9ZA sav)
// Fill List
var filtered = GameInfo.FilteredSources;
MegaNames = FormConverter.GetMegaFormNames(filtered.Source.Strings.forms);
var strings = filtered.Source.Strings;
MegaNames = FormConverter.GetMegaFormNames(strings.forms, Main.GenderSymbols, strings.Types);
int maxSpecies = sav.MaxSpeciesID; // no DLC species
CB_Species.InitializeBinding();
@ -152,10 +153,11 @@ private void GetEntry(ushort species)
CHK_SeenGenderless.Checked = entry.GetIsGenderSeen(2);
CHK_SeenAlpha.Checked = entry.GetIsSeenAlpha();
CHK_SeenMega0.Checked = entry.GetIsSeenMega(0);
CHK_SeenMega1.Checked = entry.GetIsSeenMega(1);
CHK_SeenMega2.Checked = entry.GetIsSeenMega(2);
if (Zukan9a.IsMegaFormXY(species, SAV.SaveRevision))
{
CHK_SeenMega0.Checked = entry.GetIsSeenMega(0);
CHK_SeenMega1.Checked = entry.GetIsSeenMega(1);
CHK_SeenMega2.Visible = false;
CHK_SeenMega0.Text = MegaNames.X;
@ -165,8 +167,6 @@ private void GetEntry(ushort species)
}
else if (Zukan9a.IsMegaFormZA(species, SAV.SaveRevision))
{
CHK_SeenMega0.Checked = entry.GetIsSeenMega(0);
CHK_SeenMega1.Checked = entry.GetIsSeenMega(1);
CHK_SeenMega2.Visible = false;
CHK_SeenMega0.Text = MegaNames.Regular;
@ -174,12 +174,24 @@ private void GetEntry(ushort species)
CHK_SeenMega0.Visible = true;
CHK_SeenMega1.Visible = true;
}
else if (species is (int)Species.Meowstic)
{
CHK_SeenMega0.Text = MegaNames.MeowsticM;
CHK_SeenMega1.Text = MegaNames.MeowsticF;
CHK_SeenMega0.Visible = true;
CHK_SeenMega1.Visible = true;
CHK_SeenMega2.Visible = false;
}
else if (species is (int)Species.Magearna)
{
CHK_SeenMega0.Text = MegaNames.Magearna0;
CHK_SeenMega1.Text = MegaNames.Magearna1;
CHK_SeenMega0.Visible = true;
CHK_SeenMega1.Visible = true;
CHK_SeenMega2.Visible = false;
}
else if (species is (int)Species.Tatsugiri)
{
CHK_SeenMega0.Checked = entry.GetIsSeenMega(0);
CHK_SeenMega1.Checked = entry.GetIsSeenMega(1);
CHK_SeenMega2.Checked = entry.GetIsSeenMega(2);
CHK_SeenMega0.Text = MegaNames.Tatsu0;
CHK_SeenMega1.Text = MegaNames.Tatsu1;
CHK_SeenMega2.Text = MegaNames.Tatsu2;
@ -189,8 +201,6 @@ private void GetEntry(ushort species)
}
else
{
CHK_SeenMega0.Checked = entry.GetIsSeenMega(0);
CHK_SeenMega0.Text = MegaNames.Regular;
CHK_SeenMega0.Visible = true;
CHK_SeenMega1.Visible = false;
@ -252,7 +262,7 @@ private void SetEntry(ushort species)
entry.SetIsGenderSeen(2, CHK_SeenGenderless.Checked);
entry.SetIsSeenAlpha(CHK_SeenAlpha.Checked);
if (Zukan9a.IsMegaFormXY(species, SAV.SaveRevision) || Zukan9a.IsMegaFormZA(species, SAV.SaveRevision))
if (Zukan9a.IsMegaFormXY(species, SAV.SaveRevision) || Zukan9a.IsMegaFormZA(species, SAV.SaveRevision) || species is (int)Species.Magearna or (int)Species.Meowstic)
{
entry.SetIsSeenMega(0, CHK_SeenMega0.Checked);
entry.SetIsSeenMega(1, CHK_SeenMega1.Checked);