B2W2: extract medal editor, add habitat list

A bit more coherent to see a list of medals rather than one at a time.
Add a few more properties, along with the Habitat List.

Remove maximize box from Join Avenue editor, consistent with other editors.
This commit is contained in:
Kurt
2026-05-24 00:13:08 -05:00
parent 10a141889f
commit 2fb38b368a
20 changed files with 1820 additions and 232 deletions

View File

@@ -3,10 +3,10 @@
namespace PKHeX.Core;
public sealed class Medal5(Memory<byte> Data)
public struct Medal5(Memory<byte> Data)
{
public const int SIZE = 4;
private Span<byte> Span => Data.Span;
private readonly Span<byte> Span => Data.Span;
// Structure:
// ushort Date:7
@@ -23,53 +23,53 @@ public sealed class Medal5(Memory<byte> Data)
public ushort RawDate
{
get => ReadUInt16LittleEndian(Span);
readonly get => ReadUInt16LittleEndian(Span);
set => WriteUInt16LittleEndian(Span, value);
}
public int Year
{
get => (RawDate & 0x007F) + EpochYear;
readonly get => (RawDate & 0x007F) + EpochYear;
set => RawDate = (ushort)((RawDate & 0xFF80) | ((value - EpochYear) & 0x007F));
}
public int Month
{
get => (RawDate & 0x0780) >> 7;
readonly get => (RawDate & 0x0780) >> 7;
set => RawDate = (ushort)((RawDate & 0xF87F) | ((value & 0x0F) << 7));
}
public int Day
{
get => RawDate >> 11;
readonly get => RawDate >> 11;
set => RawDate = (ushort)((RawDate & 0x07FF) | ((value & 0x1F) << 11));
}
public Medal5State State
public MedalState5 State
{
get => (Medal5State)(Span[2] & 0b0111);
readonly get => (MedalState5)(Span[2] & 0b0111);
set => Span[2] = (byte)((Span[2] & 0b1000) | ((int)value & 0b0111));
}
public bool IsUnread
{
get => FlagUtil.GetFlag(Span, 2, 3);
readonly get => FlagUtil.GetFlag(Span, 2, 3);
set => FlagUtil.SetFlag(Span, 2, 3, value);
}
public bool CanHaveDate => State switch
{
Medal5State.HintObtained => true,
Medal5State.Obtained => true,
Medal5State.ObtainReady => HasDate,
MedalState5.HintObtained => true,
MedalState5.Obtained => true,
MedalState5.ObtainReady => HasDate,
_ => false,
};
public bool HasDate => RawDate != 0;
public bool IsObtained => State == Medal5State.Obtained;
public readonly bool HasDate => RawDate != 0;
public readonly bool IsObtained => State == MedalState5.Obtained;
public void Clear() => Span.Clear();
public DateOnly Date { get => GetDate(RawDate); set => RawDate = GetDate(value); }
public DateOnly Date { readonly get => GetDate(RawDate); set => RawDate = GetDate(value); }
private static ushort GetDate(DateOnly date)
{
@@ -90,12 +90,12 @@ public static DateOnly GetDate(ushort date)
public void Obtain(DateOnly time, bool unread = true)
{
RawDate = GetDate(time);
State = Medal5State.Obtained;
State = MedalState5.Obtained;
IsUnread = unread;
}
}
public enum Medal5State
public enum MedalState5
{
Unobtained = 0,
HintReady = 1,

View File

@@ -1,32 +1,49 @@
using System;
using static System.Buffers.Binary.BinaryPrimitives;
namespace PKHeX.Core;
public sealed class MedalList5(SAV5B2W2 SAV, Memory<byte> raw) : SaveBlock<SAV5B2W2>(SAV, raw)
{
private const int MAX_MEDALS = 255;
// amount of medals needed to reach a specific rank
public const int RankRookie = 50;
public const int RankElite = 100;
public const int RankMaster = 150;
public const int RankLegend = 200;
private const int MAX_MEDALS = 255; // Top Medalist
public static Medal5[] GetMedals(Memory<byte> memory)
public static Medal5[] GetMedals(Memory<byte> raw)
{
var count = memory.Length / Medal5.SIZE;
var count = Math.Min(MAX_MEDALS, raw.Length / Medal5.SIZE);
var result = new Medal5[count];
for (int i = 0; i < result.Length; i++)
result[i] = GetMedal(memory, i);
result[i] = GetMedal(raw, i);
return result;
}
public static Medal5 GetMedal(Memory<byte> memory, int index)
public static Medal5 GetMedal(Memory<byte> raw, int index)
{
ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual<uint>((uint)index, MAX_MEDALS);
return new Medal5(memory.Slice(index * Medal5.SIZE, Medal5.SIZE));
return new Medal5(raw.Slice(index * Medal5.SIZE, Medal5.SIZE));
}
public Medal5 this[int index] => GetMedal(Raw, index);
public void ObtainAll(DateOnly date, bool unread = true)
public void ObtainAll(DateOnly date, bool unread = true, bool skipAlreadyObtained = true)
{
for (int i = 0; i < MAX_MEDALS; i++)
this[i].Obtain(date, unread);
{
var medal = this[i];
if (skipAlreadyObtained && medal.IsObtained)
continue;
medal.Obtain(date, unread);
}
}
public void GiveAll(DateOnly date, bool unread = true)
{
ObtainAll(date, unread);
Rank = CalculateRank(MAX_MEDALS);
}
public static MedalType5 GetMedalType(int index) => (uint)index switch
@@ -38,6 +55,166 @@ public void ObtainAll(DateOnly date, bool unread = true)
< MAX_MEDALS => MedalType5.Challenge,
_ => throw new ArgumentOutOfRangeException(nameof(index)),
};
public const int LengthAllMedals = MAX_MEDALS * Medal5.SIZE;
public Span<byte> AllMedals => Data[..LengthAllMedals];
public const byte PinnedMedalNone = MAX_MEDALS;
public byte PinnedMedal
{
get => Data[0x3FC];
set => Data[0x3FC] = value;
}
public MedalRank5 Rank
{
get => (MedalRank5)Data[0x3FD];
set => Data[0x3FD] = (byte)value;
}
public bool IsTutorialComplete
{
get => Data[0x3FE] != 0;
set => Data[0x3FE] = (byte)(value ? 1 : 0);
}
// 3FF unused
public HabitatList5 HabitatList => new(Raw.Slice(0x400, HabitatList5.SIZE));
// 2 bytes alignment, total length 0x498
public static MedalRank5 CalculateRank(int count) => count switch
{
< RankRookie => MedalRank5.None,
< RankElite => MedalRank5.Rookie,
< RankMaster => MedalRank5.Elite,
< RankLegend => MedalRank5.Master,
_ => MedalRank5.Legend,
};
public MedalRank5 CalculateRank()
{
var count = GetCountObtained();
return CalculateRank(count);
}
public int GetCountObtained()
{
int count = 0;
for (int i = 0; i < MAX_MEDALS; i++)
{
if (this[i].IsObtained)
count++;
}
return count;
}
}
public sealed class HabitatList5(Memory<byte> raw)
{
public const int SIZE = 0x96; // starts with some unused data
public const int HabitatCount = 90;
private Span<byte> Data => raw.Span;
public Span<byte> Unused => Data[..0x36];
public HabitatStatus5 GetHabitat(int index)
{
ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(index, HabitatCount);
return new(raw.Slice(0x36 + (index * HabitatStatus5.SIZE), HabitatStatus5.SIZE));
}
public ushort Unknown90
{
get => ReadUInt16LittleEndian(Data[0x90..]);
set => WriteUInt16LittleEndian(Data[0x90..], value);
}
public byte Unknown92 { get => Data[0x92]; set => Data[0x92] = value; }
public HabitatEncounterType5 LastEncounterType
{
get => (HabitatEncounterType5)Data[0x93];
set => Data[0x93] = (byte)value;
}
public bool IsTutorialViewed { get => Data[0x94] != 0; set => Data[0x94] = (byte)(value ? 1 : 0); }
public bool IsTutorialCompleteCapture { get => Data[0x95] != 0; set => Data[0x95] = (byte)(value ? 1 : 0); }
public void CompleteAll()
{
for (int i = 0; i < HabitatCount; i++)
GetHabitat(i).SetComplete();
}
}
public struct HabitatStatus5(Memory<byte> data)
{
// a fun single-byte struct.
// not sure if it's worthwhile figuring out how to make this less heavy...
// feels great storing (byte*,int) to represent a single byte value, maybe as a ref byte, but for now this is fine.
public const int SIZE = 1;
private readonly Span<byte> Data => data.Span;
public byte Value
{
readonly get => Data[0];
set => Data[0] = value;
}
public HabitatCompletion5 Grass
{
readonly get => (HabitatCompletion5)(Data[0] & 0b0000_0011);
set => Data[0] = (byte)((Data[0] & ~0b0000_0011) | ((byte)value & 0b11));
}
public HabitatCompletion5 Surf
{
readonly get => (HabitatCompletion5)((Data[0] >> 2) & 0b11);
set => Data[0] = (byte)((Data[0] & ~0b0000_1100) | (((byte)value & 0b11) << 2));
}
public HabitatCompletion5 Fish
{
readonly get => (HabitatCompletion5)((Data[0] >> 4) & 0b11);
set => Data[0] = (byte)((Data[0] & ~0b0011_0000) | (((byte)value & 0b11) << 4));
}
public bool IsComplete
{
readonly get => FlagUtil.GetFlag(Data, 0, 6);
set => FlagUtil.SetFlag(Data, 0, 6, value);
}
public HabitatCompletion5 GetStatus(HabitatEncounterType5 type) => type switch
{
HabitatEncounterType5.Grass => Grass,
HabitatEncounterType5.Surf => Surf,
HabitatEncounterType5.Fish => Fish,
_ => throw new ArgumentOutOfRangeException(nameof(type)),
};
public void SetStatus(HabitatEncounterType5 type, HabitatCompletion5 value)
{
switch (type)
{
case HabitatEncounterType5.Grass:
Grass = value;
break;
case HabitatEncounterType5.Surf:
Surf = value;
break;
case HabitatEncounterType5.Fish:
Fish = value;
break;
default:
throw new ArgumentOutOfRangeException(nameof(type));
}
}
public void SetComplete() => Value = 0b_1_11_11_11; // sets all 3 habitats to complete and the IsComplete flag to true
public void Clear() => Value = 0;
}
public enum MedalType5
@@ -48,3 +225,39 @@ public enum MedalType5
Entertainment,
Challenge,
}
public enum MedalRank5 : byte
{
None = 0,
Rookie = 1,
Elite = 2,
Master = 3,
Legend = 4,
// nothing above 200
}
public enum HabitatCompletion5 : byte
{
None = 0,
Seen = 1,
Caught = 2,
Complete = 3,
}
public enum HabitatEncounterType5 : byte
{
/// <summary>
/// <see cref="SlotType5.Grass"/>
/// </summary>
Grass = 0,
/// <summary>
/// <see cref="SlotType5.Surf"/>
/// </summary>
Surf = 1,
/// <summary>
/// <see cref="SlotType5.Super_Rod"/>
/// </summary>
Fish = 2,
}

View File

@@ -87,6 +87,7 @@ private void InitializeComponent()
B_OpenGeonetEditor = new System.Windows.Forms.Button();
B_OpenUnityTowerEditor = new System.Windows.Forms.Button();
B_OpenJoinAvenueEditor = new System.Windows.Forms.Button();
B_OpenMedalsEditor = new System.Windows.Forms.Button();
B_OpenChatterEditor = new System.Windows.Forms.Button();
B_Roamer = new System.Windows.Forms.Button();
B_FestivalPlaza = new System.Windows.Forms.Button();
@@ -442,6 +443,7 @@ private void InitializeComponent()
FLP_SAVtools.Controls.Add(B_OpenGeonetEditor);
FLP_SAVtools.Controls.Add(B_OpenUnityTowerEditor);
FLP_SAVtools.Controls.Add(B_OpenJoinAvenueEditor);
FLP_SAVtools.Controls.Add(B_OpenMedalsEditor);
FLP_SAVtools.Controls.Add(B_OpenChatterEditor);
FLP_SAVtools.Controls.Add(B_Roamer);
FLP_SAVtools.Controls.Add(B_FestivalPlaza);
@@ -776,6 +778,17 @@ private void InitializeComponent()
B_OpenChatterEditor.UseVisualStyleBackColor = true;
B_OpenChatterEditor.Click += B_OpenChatterEditor_Click;
//
// B_OpenMedalsEditor
//
B_OpenMedalsEditor.Location = new System.Drawing.Point(316, 364);
B_OpenMedalsEditor.Margin = new System.Windows.Forms.Padding(4);
B_OpenMedalsEditor.Name = "B_OpenMedalsEditor";
B_OpenMedalsEditor.Size = new System.Drawing.Size(96, 32);
B_OpenMedalsEditor.TabIndex = 1;
B_OpenMedalsEditor.Text = "Medals";
B_OpenMedalsEditor.UseVisualStyleBackColor = true;
B_OpenMedalsEditor.Click += B_OpenMedalsEditor_Click;
//
// B_Roamer
//
B_Roamer.Location = new System.Drawing.Point(4, 284);
@@ -1118,6 +1131,7 @@ private void InitializeComponent()
private System.Windows.Forms.Button B_OpenGeonetEditor;
private System.Windows.Forms.Button B_OpenUnityTowerEditor;
private System.Windows.Forms.Button B_OpenJoinAvenueEditor;
private System.Windows.Forms.Button B_OpenMedalsEditor;
private System.Windows.Forms.Button B_OpenChatterEditor;
private System.Windows.Forms.Button B_Roamer;
private System.Windows.Forms.Button B_FestivalPlaza;

View File

@@ -646,6 +646,7 @@ private static void OpenDialog(Form f)
private void B_OpenGeonetEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Geonet4((SAV4)SAV));
private void B_OpenUnityTowerEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_UnityTower((SAV5)SAV));
private void B_OpenJoinAvenueEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_JoinAvenue((SAV5B2W2)SAV));
private void B_OpenMedalsEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Medals5((SAV5B2W2)SAV));
private void B_OpenChatterEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Chatter(SAV));
private void B_OpenGear_Click(object sender, EventArgs e) => OpenDialog(new SAV_Gear((SAV4BR)SAV));
private void B_Donuts_Click(object sender, EventArgs e) => OpenDialog(new SAV_Donut9a((SAV9ZA)SAV));
@@ -1312,6 +1313,7 @@ private void ToggleViewSubEditors(SaveFile sav)
B_OpenGeonetEditor.Visible = sav is SAV4;
B_OpenUnityTowerEditor.Visible = sav is SAV5;
B_OpenJoinAvenueEditor.Visible = sav is SAV5B2W2;
B_OpenMedalsEditor.Visible = sav is SAV5B2W2;
B_OpenChatterEditor.Visible = sav is SAV4 or SAV5;
B_OpenBattlePass.Visible = B_OpenGear.Visible = sav is SAV4BR;
B_OpenSealStickers.Visible = B_Poffins.Visible = sav is SAV8BS;

View File

@@ -39,6 +39,7 @@ SAV_Inventory=Inventar-Editor
SAV_JoinAvenue=Einklangspassage
SAV_Link6=Pokémon-Link-Tool
SAV_MailBox=Briefbox-Editor
SAV_Medals5=Medaillen
SAV_Misc2=Sonstiges
SAV_Misc3=Sonstiges
SAV_Misc4=Sonstiges
@@ -235,6 +236,13 @@ GearCategory.Hands=Hände
GearCategory.Head=Kopf
GearCategory.Shoes=Schuhe
GearCategory.Top=Oberteil
HabitatCompletion5.Caught=Gefangen
HabitatCompletion5.Complete=Abgeschlossen
HabitatCompletion5.None=Keine
HabitatCompletion5.Seen=Gesehen
HabitatEncounterType5.Fish=Angeln
HabitatEncounterType5.Grass=Gras
HabitatEncounterType5.Surf=Surfen
JoinAvenueCeilingColor5.Blue=Blau
JoinAvenueCeilingColor5.Green=Grün
JoinAvenueCeilingColor5.Orange=Orange
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Honigbaum
Main.B_OpenItemPouch=Items
Main.B_OpenJoinAvenueEditor=Einklangspassage
Main.B_OpenLinkInfo=Pokémon-Link
Main.B_OpenMedalsEditor=Medaillen
Main.B_OpenMiscEditor=Sonstiges
Main.B_OpenOPowers=O-Kräfte
Main.B_OpenPokeBeans=Pokébohnen
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=OT/Sonstiges
Main.Tab_PartyBattle=Team
Main.Tab_SAV=SAV
Main.Tab_Stats=Werte
MedalRank5.Elite=Elite
MedalRank5.Legend=Legende
MedalRank5.Master=Meister
MedalRank5.None=Kein Rang
MedalRank5.Rookie=Anfänger
MedalState5.HintObtained=Hinweis erhalten
MedalState5.HintReady=Hinweis verfügbar
MedalState5.Obtained=Erhalten
MedalState5.ObtainReady=Bereit zum Erhalt
MedalState5.Unobtained=Nicht erhalten
MemoryAmie.B_ClearAll=Alle leeren
MemoryAmie.BTN_Cancel=Abbrechen
MemoryAmie.BTN_Save=Speichern
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bisasam:
SAV_MailBox.L_PKM4=Bisasam:
SAV_MailBox.L_PKM5=Bisasam:
SAV_MailBox.L_PKM6=Bisasam:
SAV_Medals5.B_Cancel=Abbrechen
SAV_Medals5.B_ExportAll=Alles exportieren
SAV_Medals5.B_GiveAll=Alle vergeben
SAV_Medals5.B_HabitatClear=Löschen
SAV_Medals5.B_HabitatSetComplete=Als abgeschlossen markieren
SAV_Medals5.B_ImportAll=Alles importieren
SAV_Medals5.B_Save=Speichern
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Fang-Tutorial abgeschlossen
SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial gesehen
SAV_Medals5.CHK_TutorialComplete=Tutorial abgeschlossen
SAV_Medals5.DGV_HabitatCompleteColumn=Abgeschlossen
SAV_Medals5.DGV_HabitatFishColumn=Angeln
SAV_Medals5.DGV_HabitatGrassColumn=Gras
SAV_Medals5.DGV_HabitatIndexColumn=Index
SAV_Medals5.DGV_HabitatSurfColumn=Surfen
SAV_Medals5.DGV_MedalDateColumn=Datum
SAV_Medals5.DGV_MedalIndexColumn=Index
SAV_Medals5.DGV_MedalNameColumn=Name
SAV_Medals5.DGV_MedalStateColumn=Status
SAV_Medals5.DGV_MedalTypeColumn=Typ
SAV_Medals5.DGV_MedalUnreadColumn=Ungelesen
SAV_Medals5.L_LastEncounterType=Letzte Begegnungsart:
SAV_Medals5.L_PinnedMedal=Angeheftete Medaille:
SAV_Medals5.L_Rank=Rang:
SAV_Medals5.Tab_Habitat=Habitatsliste
SAV_Medals5.Tab_Medals=Medaillen
SAV_Misc2.B_Cancel=Abbrechen
SAV_Misc2.B_Save=Speichern
SAV_Misc2.B_VirtualConsoleGSBall=GS-Ball-Event aktivieren (Virtual Console)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Abbrechen
SAV_Misc5.B_DumpFC=Daten exportieren
SAV_Misc5.B_FunfestMissions=Alle freischalten
SAV_Misc5.B_ImportFC=Daten importieren
SAV_Misc5.B_ObtainAllMedals=Alle Medaillen erhalten
SAV_Misc5.B_RandForest=Alle Areale zufällig
SAV_Misc5.B_Save=Speichern
SAV_Misc5.B_UnlockAllProps=Alle Accessoires freischalten
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doppel
SAV_Misc5.CHK_FMNew=NEU
SAV_Misc5.CHK_Invisible=Unsichtbar
SAV_Misc5.CHK_LibertyPass=Aktiviere Gartenpass
SAV_Misc5.CHK_MedalUnread=Ungelesen
SAV_Misc5.CHK_MultiFriendsSet=Freunde
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=Erhalten
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=WeißerWald/SchwarzeStadt
SAV_Misc5.TAB_Entralink=Kontaktebene
SAV_Misc5.TAB_Forest=Hain
SAV_Misc5.TAB_Main=Verschiedenes
SAV_Misc5.TAB_Medals=Medaillen
SAV_Misc5.TAB_Muscial=Musical
SAV_Misc5.TAB_Subway=Metro
SAV_Misc8b.B_Arceus=Arceus Event freischalten

View File

@@ -39,6 +39,7 @@ SAV_Inventory=Inventory Editor
SAV_JoinAvenue=Join Avenue
SAV_Link6=Pokémon Link Tool
SAV_MailBox=MailBox Editor
SAV_Medals5=Medals
SAV_Misc2=Misc Editor
SAV_Misc3=Misc Editor
SAV_Misc4=Misc Editor
@@ -235,6 +236,13 @@ GearCategory.Hands=Hands
GearCategory.Head=Head
GearCategory.Shoes=Shoes
GearCategory.Top=Top
HabitatCompletion5.Caught=Caught
HabitatCompletion5.Complete=Complete
HabitatCompletion5.None=None
HabitatCompletion5.Seen=Seen
HabitatEncounterType5.Fish=Fish
HabitatEncounterType5.Grass=Grass
HabitatEncounterType5.Surf=Surf
JoinAvenueCeilingColor5.Blue=Blue
JoinAvenueCeilingColor5.Green=Green
JoinAvenueCeilingColor5.Orange=Orange
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Honey Tree
Main.B_OpenItemPouch=Items
Main.B_OpenJoinAvenueEditor=Join Avenue
Main.B_OpenLinkInfo=Link Data
Main.B_OpenMedalsEditor=Medals
Main.B_OpenMiscEditor=Misc Edits
Main.B_OpenOPowers=O-Powers
Main.B_OpenPokeBeans=Poké Beans
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=OT/Misc
Main.Tab_PartyBattle=Party
Main.Tab_SAV=SAV
Main.Tab_Stats=Stats
MedalRank5.Elite=Elite
MedalRank5.Legend=Legend
MedalRank5.Master=Master
MedalRank5.None=None
MedalRank5.Rookie=Rookie
MedalState5.HintObtained=HintObtained
MedalState5.HintReady=HintReady
MedalState5.Obtained=Obtained
MedalState5.ObtainReady=ObtainReady
MedalState5.Unobtained=Unobtained
MemoryAmie.B_ClearAll=Clear All
MemoryAmie.BTN_Cancel=Cancel
MemoryAmie.BTN_Save=Save
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur:
SAV_MailBox.L_PKM4=Bulbasaur:
SAV_MailBox.L_PKM5=Bulbasaur:
SAV_MailBox.L_PKM6=Bulbasaur:
SAV_Medals5.B_Cancel=Cancel
SAV_Medals5.B_ExportAll=Export All
SAV_Medals5.B_GiveAll=Give All
SAV_Medals5.B_HabitatClear=Clear
SAV_Medals5.B_HabitatSetComplete=Set Complete
SAV_Medals5.B_ImportAll=Import All
SAV_Medals5.B_Save=Save
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial Capture Done
SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial Viewed
SAV_Medals5.CHK_TutorialComplete=Tutorial Complete
SAV_Medals5.DGV_HabitatCompleteColumn=Complete
SAV_Medals5.DGV_HabitatFishColumn=Fish
SAV_Medals5.DGV_HabitatGrassColumn=Grass
SAV_Medals5.DGV_HabitatIndexColumn=Index
SAV_Medals5.DGV_HabitatSurfColumn=Surf
SAV_Medals5.DGV_MedalDateColumn=Date
SAV_Medals5.DGV_MedalIndexColumn=Index
SAV_Medals5.DGV_MedalNameColumn=Name
SAV_Medals5.DGV_MedalStateColumn=State
SAV_Medals5.DGV_MedalTypeColumn=Type
SAV_Medals5.DGV_MedalUnreadColumn=IsUnread
SAV_Medals5.L_LastEncounterType=Last Encounter Type:
SAV_Medals5.L_PinnedMedal=Pinned Medal:
SAV_Medals5.L_Rank=Rank:
SAV_Medals5.Tab_Habitat=Habitat
SAV_Medals5.Tab_Medals=Medals
SAV_Misc2.B_Cancel=Cancel
SAV_Misc2.B_Save=Save
SAV_Misc2.B_VirtualConsoleGSBall=Enable GS Ball Event (Virtual Console)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Cancel
SAV_Misc5.B_DumpFC=Dump Data
SAV_Misc5.B_FunfestMissions=Unlock All (w/o No.0)
SAV_Misc5.B_ImportFC=Import Data
SAV_Misc5.B_ObtainAllMedals=Obtain All Medals
SAV_Misc5.B_RandForest=Randomize All Areas
SAV_Misc5.B_Save=Save
SAV_Misc5.B_UnlockAllProps=Unlock All Props
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Double
SAV_Misc5.CHK_FMNew=NEW
SAV_Misc5.CHK_Invisible=Invisible
SAV_Misc5.CHK_LibertyPass=Activate LibertyPass
SAV_Misc5.CHK_MedalUnread=Unread
SAV_Misc5.CHK_MultiFriendsSet=Friends
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=Obtained
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity
SAV_Misc5.TAB_Entralink=Entralink
SAV_Misc5.TAB_Forest=Forest
SAV_Misc5.TAB_Main=Main
SAV_Misc5.TAB_Medals=Medals
SAV_Misc5.TAB_Muscial=Musical
SAV_Misc5.TAB_Subway=Subway
SAV_Misc8b.B_Arceus=Unlock Arceus Event

View File

@@ -39,6 +39,7 @@ SAV_Inventory=Editor de Inventario
SAV_JoinAvenue=Pasaje Unión
SAV_Link6=Editor del Nexo Pokémon
SAV_MailBox=Editor de Buzón
SAV_Medals5=Medallas
SAV_Misc2=Editor Misceláneo
SAV_Misc3=Editor de Datos del Entrenador
SAV_Misc4=Editor de Datos del Entrenador
@@ -235,6 +236,13 @@ GearCategory.Hands=Manos
GearCategory.Head=Gorras
GearCategory.Shoes=Calzado
GearCategory.Top=Prendas
HabitatCompletion5.Caught=Atrapado
HabitatCompletion5.Complete=Completo
HabitatCompletion5.None=Ninguno
HabitatCompletion5.Seen=Visto
HabitatEncounterType5.Fish=Pesca
HabitatEncounterType5.Grass=Hierba
HabitatEncounterType5.Surf=Surf
JoinAvenueCeilingColor5.Blue=Azul
JoinAvenueCeilingColor5.Green=Verde
JoinAvenueCeilingColor5.Orange=Naranja
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Árbol de Miel
Main.B_OpenItemPouch=Inventario
Main.B_OpenJoinAvenueEditor=Pasaje Unión
Main.B_OpenLinkInfo=Datos Nexo
Main.B_OpenMedalsEditor=Medallas
Main.B_OpenMiscEditor=Misceláneo
Main.B_OpenOPowers=Poder O
Main.B_OpenPokeBeans=Pokéhabas
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=EO/Misc
Main.Tab_PartyBattle=Equipo
Main.Tab_SAV=SAV
Main.Tab_Stats=Estadísticas
MedalRank5.Elite=Élite
MedalRank5.Legend=Leyenda
MedalRank5.Master=Maestro
MedalRank5.None=Ninguno
MedalRank5.Rookie=Novato
MedalState5.HintObtained=Pista obtenida
MedalState5.HintReady=Pista disponible
MedalState5.Obtained=Obtenida
MedalState5.ObtainReady=Lista para obtener
MedalState5.Unobtained=No obtenida
MemoryAmie.B_ClearAll=Limpiar todo
MemoryAmie.BTN_Cancel=Cancelar
MemoryAmie.BTN_Save=Guardar
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur:
SAV_MailBox.L_PKM4=Bulbasaur:
SAV_MailBox.L_PKM5=Bulbasaur:
SAV_MailBox.L_PKM6=Bulbasaur:
SAV_Medals5.B_Cancel=Cancelar
SAV_Medals5.B_ExportAll=Exportar todo
SAV_Medals5.B_GiveAll=Dar todas
SAV_Medals5.B_HabitatClear=Limpiar
SAV_Medals5.B_HabitatSetComplete=Marcar como completo
SAV_Medals5.B_ImportAll=Importar todo
SAV_Medals5.B_Save=Guardar
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial de captura completado
SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial visto
SAV_Medals5.CHK_TutorialComplete=Tutorial completado
SAV_Medals5.DGV_HabitatCompleteColumn=Completo
SAV_Medals5.DGV_HabitatFishColumn=Pesca
SAV_Medals5.DGV_HabitatGrassColumn=Hierba
SAV_Medals5.DGV_HabitatIndexColumn=Índice
SAV_Medals5.DGV_HabitatSurfColumn=Surf
SAV_Medals5.DGV_MedalDateColumn=Fecha
SAV_Medals5.DGV_MedalIndexColumn=Índice
SAV_Medals5.DGV_MedalNameColumn=Nombre
SAV_Medals5.DGV_MedalStateColumn=Estado
SAV_Medals5.DGV_MedalTypeColumn=Tipo
SAV_Medals5.DGV_MedalUnreadColumn=No leída
SAV_Medals5.L_LastEncounterType=Último tipo de encuentro:
SAV_Medals5.L_PinnedMedal=Medalla fijada:
SAV_Medals5.L_Rank=Rango:
SAV_Medals5.Tab_Habitat=Lista de hábitats
SAV_Medals5.Tab_Medals=Medallas
SAV_Misc2.B_Cancel=Cancelar
SAV_Misc2.B_Save=Guardar
SAV_Misc2.B_VirtualConsoleGSBall=Activar Evento GS Ball (Virtual Console)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Cancelar
SAV_Misc5.B_DumpFC=Exportar datos
SAV_Misc5.B_FunfestMissions=Desbloquear todo (sin n.º0)
SAV_Misc5.B_ImportFC=Importar datos
SAV_Misc5.B_ObtainAllMedals=Obtener todas las medallas
SAV_Misc5.B_RandForest=Aleatorizar todas las áreas
SAV_Misc5.B_Save=Guardar
SAV_Misc5.B_UnlockAllProps=Desbloq. complementos
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doblr
SAV_Misc5.CHK_FMNew=NUEVO
SAV_Misc5.CHK_Invisible=Invisible
SAV_Misc5.CHK_LibertyPass=Activar Ticket Libertad
SAV_Misc5.CHK_MedalUnread=Sin leer
SAV_Misc5.CHK_MultiFriendsSet=Amigos
SAV_Misc5.CHK_MultiNPCSet=PNJ
SAV_Misc5.CHK_PropObtained=Obtenido
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=Bosque Blanco/Ciudad Negra
SAV_Misc5.TAB_Entralink=Zona Nexo
SAV_Misc5.TAB_Forest=Bosque
SAV_Misc5.TAB_Main=Inicio
SAV_Misc5.TAB_Medals=Medallas
SAV_Misc5.TAB_Muscial=Musical
SAV_Misc5.TAB_Subway=Subterráneo
SAV_Misc8b.B_Arceus=Desbloquear evento de Arceus

View File

@@ -39,6 +39,7 @@ SAV_Inventory=Editor de Inventario
SAV_JoinAvenue=Galería Unión
SAV_Link6=Editor del Nexo Pokémon
SAV_MailBox=Editor de Buzón
SAV_Medals5=Medallas
SAV_Misc2=Editor de Varios
SAV_Misc3=Editor de Datos del Entrenador
SAV_Misc4=Editor de Datos del Entrenador
@@ -235,6 +236,13 @@ GearCategory.Hands=Manos
GearCategory.Head=Gorras
GearCategory.Shoes=Calzado
GearCategory.Top=Prendas
HabitatCompletion5.Caught=Atrapado
HabitatCompletion5.Complete=Completo
HabitatCompletion5.None=Ninguno
HabitatCompletion5.Seen=Visto
HabitatEncounterType5.Fish=Pesca
HabitatEncounterType5.Grass=Hierba
HabitatEncounterType5.Surf=Surf
JoinAvenueCeilingColor5.Blue=Azul
JoinAvenueCeilingColor5.Green=Verde
JoinAvenueCeilingColor5.Orange=Naranja
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Árbol de Miel
Main.B_OpenItemPouch=Inventario
Main.B_OpenJoinAvenueEditor=Galería Unión
Main.B_OpenLinkInfo=Datos Nexo
Main.B_OpenMedalsEditor=Medallas
Main.B_OpenMiscEditor=Varios
Main.B_OpenOPowers=Poder O
Main.B_OpenPokeBeans=Pokéhabas
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=EO/Varios
Main.Tab_PartyBattle=Equipo
Main.Tab_SAV=SAV
Main.Tab_Stats=Estadísticas
MedalRank5.Elite=Élite
MedalRank5.Legend=Leyenda
MedalRank5.Master=Maestro
MedalRank5.None=Ninguno
MedalRank5.Rookie=Novato
MedalState5.HintObtained=Pista obtenida
MedalState5.HintReady=Pista disponible
MedalState5.Obtained=Obtenida
MedalState5.ObtainReady=Lista para obtener
MedalState5.Unobtained=No obtenida
MemoryAmie.B_ClearAll=Limpiar todo
MemoryAmie.BTN_Cancel=Cancelar
MemoryAmie.BTN_Save=Guardar
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur:
SAV_MailBox.L_PKM4=Bulbasaur:
SAV_MailBox.L_PKM5=Bulbasaur:
SAV_MailBox.L_PKM6=Bulbasaur:
SAV_Medals5.B_Cancel=Cancelar
SAV_Medals5.B_ExportAll=Exportar todo
SAV_Medals5.B_GiveAll=Dar todas
SAV_Medals5.B_HabitatClear=Limpiar
SAV_Medals5.B_HabitatSetComplete=Marcar como completo
SAV_Medals5.B_ImportAll=Importar todo
SAV_Medals5.B_Save=Guardar
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial de captura completado
SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial visto
SAV_Medals5.CHK_TutorialComplete=Tutorial completado
SAV_Medals5.DGV_HabitatCompleteColumn=Completo
SAV_Medals5.DGV_HabitatFishColumn=Pesca
SAV_Medals5.DGV_HabitatGrassColumn=Hierba
SAV_Medals5.DGV_HabitatIndexColumn=Índice
SAV_Medals5.DGV_HabitatSurfColumn=Surf
SAV_Medals5.DGV_MedalDateColumn=Fecha
SAV_Medals5.DGV_MedalIndexColumn=Índice
SAV_Medals5.DGV_MedalNameColumn=Nombre
SAV_Medals5.DGV_MedalStateColumn=Estado
SAV_Medals5.DGV_MedalTypeColumn=Tipo
SAV_Medals5.DGV_MedalUnreadColumn=No leída
SAV_Medals5.L_LastEncounterType=Último tipo de encuentro:
SAV_Medals5.L_PinnedMedal=Medalla fijada:
SAV_Medals5.L_Rank=Rango:
SAV_Medals5.Tab_Habitat=Lista de hábitats
SAV_Medals5.Tab_Medals=Medallas
SAV_Misc2.B_Cancel=Cancelar
SAV_Misc2.B_Save=Guardar
SAV_Misc2.B_VirtualConsoleGSBall=Activar Evento GS Ball (Virtual Console)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Cancelar
SAV_Misc5.B_DumpFC=Exportar datos
SAV_Misc5.B_FunfestMissions=Desbloquear todo (sin n.º0)
SAV_Misc5.B_ImportFC=Importar datos
SAV_Misc5.B_ObtainAllMedals=Obtener todas las medallas
SAV_Misc5.B_RandForest=Aleatorizar todas las áreas
SAV_Misc5.B_Save=Guardar
SAV_Misc5.B_UnlockAllProps=Desbloq. complementos
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doblr
SAV_Misc5.CHK_FMNew=NUEVO
SAV_Misc5.CHK_Invisible=Invisible
SAV_Misc5.CHK_LibertyPass=Activar Ticket Libertad
SAV_Misc5.CHK_MedalUnread=Sin leer
SAV_Misc5.CHK_MultiFriendsSet=Amigos
SAV_Misc5.CHK_MultiNPCSet=PNJ
SAV_Misc5.CHK_PropObtained=Obtenido
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=Bosque Blanco/Ciudad Negra
SAV_Misc5.TAB_Entralink=Zona Nexo
SAV_Misc5.TAB_Forest=Bosque
SAV_Misc5.TAB_Main=Inicio
SAV_Misc5.TAB_Medals=Medallas
SAV_Misc5.TAB_Muscial=Musical
SAV_Misc5.TAB_Subway=Metro
SAV_Misc8b.B_Arceus=Desbloquear evento de Arceus

View File

@@ -39,6 +39,7 @@ SAV_Inventory=Éditeur de l'inventaire
SAV_JoinAvenue=Galerie Concorde
SAV_Link6=Outil Poké Lien
SAV_MailBox=Éditeur de boîtes aux lettres
SAV_Medals5=Médailles
SAV_Misc2=Éditeur divers
SAV_Misc3=Éditeur divers
SAV_Misc4=Éditeur divers
@@ -235,6 +236,13 @@ GearCategory.Hands=Mains
GearCategory.Head=Tête
GearCategory.Shoes=Chaussures
GearCategory.Top=Haut
HabitatCompletion5.Caught=Attrapé
HabitatCompletion5.Complete=Complet
HabitatCompletion5.None=Aucun
HabitatCompletion5.Seen=Vu
HabitatEncounterType5.Fish=Pêche
HabitatEncounterType5.Grass=Herbe
HabitatEncounterType5.Surf=Surf
JoinAvenueCeilingColor5.Blue=Bleu
JoinAvenueCeilingColor5.Green=Vert
JoinAvenueCeilingColor5.Orange=Orange
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Arbres à miel
Main.B_OpenItemPouch=Objets
Main.B_OpenJoinAvenueEditor=Galerie Concorde
Main.B_OpenLinkInfo=Poké Lien
Main.B_OpenMedalsEditor=Médailles
Main.B_OpenMiscEditor=Éditeur divers
Main.B_OpenOPowers=O-Auras
Main.B_OpenPokeBeans=Poké Fèves
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=DO/Divers
Main.Tab_PartyBattle=Équipe
Main.Tab_SAV=SAV
Main.Tab_Stats=Stats
MedalRank5.Elite=Élite
MedalRank5.Legend=Légende
MedalRank5.Master=Maître
MedalRank5.None=Aucun
MedalRank5.Rookie=Débutant
MedalState5.HintObtained=Indice obtenu
MedalState5.HintReady=Indice disponible
MedalState5.Obtained=Obtenue
MedalState5.ObtainReady=Prête à obtenir
MedalState5.Unobtained=Non obtenue
MemoryAmie.B_ClearAll=Tout vider
MemoryAmie.BTN_Cancel=Annuler
MemoryAmie.BTN_Save=Sauver
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbizarre :
SAV_MailBox.L_PKM4=Bulbizarre :
SAV_MailBox.L_PKM5=Bulbizarre :
SAV_MailBox.L_PKM6=Bulbizarre :
SAV_Medals5.B_Cancel=Annuler
SAV_Medals5.B_ExportAll=Tout exporter
SAV_Medals5.B_GiveAll=Tout attribuer
SAV_Medals5.B_HabitatClear=Effacer
SAV_Medals5.B_HabitatSetComplete=Marquer complet
SAV_Medals5.B_ImportAll=Tout importer
SAV_Medals5.B_Save=Enregistrer
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutoriel de capture terminé
SAV_Medals5.CHK_HabitatTutorialViewed=Tutoriel vu
SAV_Medals5.CHK_TutorialComplete=Tutoriel terminé
SAV_Medals5.DGV_HabitatCompleteColumn=Complet
SAV_Medals5.DGV_HabitatFishColumn=Pêche
SAV_Medals5.DGV_HabitatGrassColumn=Herbe
SAV_Medals5.DGV_HabitatIndexColumn=Index
SAV_Medals5.DGV_HabitatSurfColumn=Surf
SAV_Medals5.DGV_MedalDateColumn=Date
SAV_Medals5.DGV_MedalIndexColumn=Index
SAV_Medals5.DGV_MedalNameColumn=Nom
SAV_Medals5.DGV_MedalStateColumn=État
SAV_Medals5.DGV_MedalTypeColumn=Type
SAV_Medals5.DGV_MedalUnreadColumn=Non lue
SAV_Medals5.L_LastEncounterType=Dernier type de rencontre :
SAV_Medals5.L_PinnedMedal=Médaille épinglée :
SAV_Medals5.L_Rank=Rang :
SAV_Medals5.Tab_Habitat=Liste des habitats
SAV_Medals5.Tab_Medals=Médailles
SAV_Misc2.B_Cancel=Annuler
SAV_Misc2.B_Save=Sauvegarder
SAV_Misc2.B_VirtualConsoleGSBall=Activer évènement GS Ball (Console Virtuelle)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Annuler
SAV_Misc5.B_DumpFC=Exporter données
SAV_Misc5.B_FunfestMissions=Tout débloquer (sauf no. 0)
SAV_Misc5.B_ImportFC=Importer données
SAV_Misc5.B_ObtainAllMedals=Obtenir toutes les médailles
SAV_Misc5.B_RandForest=Randomiser toutes les zones
SAV_Misc5.B_Save=Sauvegarder
SAV_Misc5.B_UnlockAllProps=Tout donner
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Duo
SAV_Misc5.CHK_FMNew=NOUV.
SAV_Misc5.CHK_Invisible=Invisible
SAV_Misc5.CHK_LibertyPass=Activer le Pass Liberté
SAV_Misc5.CHK_MedalUnread=Non vue
SAV_Misc5.CHK_MultiFriendsSet=Ami
SAV_Misc5.CHK_MultiNPCSet=PNJ
SAV_Misc5.CHK_PropObtained=Obtenu
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=ForêtB/VilleN
SAV_Misc5.TAB_Entralink=Heylink
SAV_Misc5.TAB_Forest=Forêt
SAV_Misc5.TAB_Main=Principal
SAV_Misc5.TAB_Medals=Médailles
SAV_Misc5.TAB_Muscial=Music-Hall
SAV_Misc5.TAB_Subway=Métro
SAV_Misc8b.B_Arceus=Débloquer l'évènement d'Arceus

View File

@@ -39,6 +39,7 @@ SAV_Inventory=Editor Inventario
SAV_JoinAvenue=Galleria Solidarietà
SAV_Link6=Strumenti Link
SAV_MailBox=Editor Messaggi
SAV_Medals5=Premi
SAV_Misc2=Editor Varie
SAV_Misc3=Editor Dati Allenatore
SAV_Misc4=Editor Varie
@@ -235,6 +236,13 @@ GearCategory.Hands=Mani
GearCategory.Head=Testa
GearCategory.Shoes=Scarpe
GearCategory.Top=Sopra
HabitatCompletion5.Caught=Catturato
HabitatCompletion5.Complete=Completo
HabitatCompletion5.None=Nessuno
HabitatCompletion5.Seen=Visto
HabitatEncounterType5.Fish=Pesca
HabitatEncounterType5.Grass=Erba
HabitatEncounterType5.Surf=Surf
JoinAvenueCeilingColor5.Blue=Blu
JoinAvenueCeilingColor5.Green=Verde
JoinAvenueCeilingColor5.Orange=Arancione
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Alberi di Miele
Main.B_OpenItemPouch=Strumenti
Main.B_OpenJoinAvenueEditor=Galleria Solidarietà
Main.B_OpenLinkInfo=Dati Link
Main.B_OpenMedalsEditor=Premi
Main.B_OpenMiscEditor=Mod. Varie
Main.B_OpenOPowers=Poteri O
Main.B_OpenPokeBeans=Pokégioli
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=AO/Varie
Main.Tab_PartyBattle=Squadra
Main.Tab_SAV=SAV
Main.Tab_Stats=Statistiche
MedalRank5.Elite=Élite
MedalRank5.Legend=Leggenda
MedalRank5.Master=Maestro
MedalRank5.None=Nessuno
MedalRank5.Rookie=Principiante
MedalState5.HintObtained=Indizio ottenuto
MedalState5.HintReady=Indizio disponibile
MedalState5.Obtained=Ottenuto
MedalState5.ObtainReady=Pronto da ottenere
MedalState5.Unobtained=Non ottenuto
MemoryAmie.B_ClearAll=Ripulisci
MemoryAmie.BTN_Cancel=Annulla
MemoryAmie.BTN_Save=Salva
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur:
SAV_MailBox.L_PKM4=Bulbasaur:
SAV_MailBox.L_PKM5=Bulbasaur:
SAV_MailBox.L_PKM6=Bulbasaur:
SAV_Medals5.B_Cancel=Annulla
SAV_Medals5.B_ExportAll=Esporta tutto
SAV_Medals5.B_GiveAll=Assegna tutti
SAV_Medals5.B_HabitatClear=Cancella
SAV_Medals5.B_HabitatSetComplete=Segna completo
SAV_Medals5.B_ImportAll=Importa tutto
SAV_Medals5.B_Save=Salva
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial di cattura completato
SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial visto
SAV_Medals5.CHK_TutorialComplete=Tutorial completato
SAV_Medals5.DGV_HabitatCompleteColumn=Completo
SAV_Medals5.DGV_HabitatFishColumn=Pesca
SAV_Medals5.DGV_HabitatGrassColumn=Erba
SAV_Medals5.DGV_HabitatIndexColumn=Indice
SAV_Medals5.DGV_HabitatSurfColumn=Surf
SAV_Medals5.DGV_MedalDateColumn=Data
SAV_Medals5.DGV_MedalIndexColumn=Indice
SAV_Medals5.DGV_MedalNameColumn=Nome
SAV_Medals5.DGV_MedalStateColumn=Stato
SAV_Medals5.DGV_MedalTypeColumn=Tipo
SAV_Medals5.DGV_MedalUnreadColumn=Non letto
SAV_Medals5.L_LastEncounterType=Ultimo tipo d'incontro:
SAV_Medals5.L_PinnedMedal=Premio fissato:
SAV_Medals5.L_Rank=Grado:
SAV_Medals5.Tab_Habitat=Lista zone
SAV_Medals5.Tab_Medals=Premi
SAV_Misc2.B_Cancel=Annulla
SAV_Misc2.B_Save=Salva
SAV_Misc2.B_VirtualConsoleGSBall=Attiva evento Celebi (Virtual Console)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Annulla
SAV_Misc5.B_DumpFC=Dump Data
SAV_Misc5.B_FunfestMissions=Sblocca Tutto (w/o No.0)
SAV_Misc5.B_ImportFC=Import Data
SAV_Misc5.B_ObtainAllMedals=Ottieni tutti i premi
SAV_Misc5.B_RandForest=Casualizza Tutti gli Alberi
SAV_Misc5.B_Save=Salva
SAV_Misc5.B_UnlockAllProps=Sblocca tutti i gadget
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doppie
SAV_Misc5.CHK_FMNew=Nuovo
SAV_Misc5.CHK_Invisible=Invisibile
SAV_Misc5.CHK_LibertyPass=Attiva LiberTicket
SAV_Misc5.CHK_MedalUnread=Non letti
SAV_Misc5.CHK_MultiFriendsSet=Amici
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=Ottenuto
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=ForestaBianca/CittàNera
SAV_Misc5.TAB_Entralink=Intramondo
SAV_Misc5.TAB_Forest=Bosco
SAV_Misc5.TAB_Main=Principale
SAV_Misc5.TAB_Medals=Premi
SAV_Misc5.TAB_Muscial=Musical
SAV_Misc5.TAB_Subway=Metrò
SAV_Misc8b.B_Arceus=Sblocca l'Evento di Arceus

View File

@@ -39,6 +39,7 @@ SAV_Inventory=アイテム
SAV_JoinAvenue=ジョインアベニュー
SAV_Link6=ポケモンリンク
SAV_MailBox=メールボックス
SAV_Medals5=メダル
SAV_Misc2=その他
SAV_Misc3=その他
SAV_Misc4=その他
@@ -235,6 +236,13 @@ GearCategory.Hands=うで
GearCategory.Head=あたま
GearCategory.Shoes=くつ
GearCategory.Top=トップ
HabitatCompletion5.Caught=捕まえた
HabitatCompletion5.Complete=コンプリート
HabitatCompletion5.None=なし
HabitatCompletion5.Seen=見つけた
HabitatEncounterType5.Fish=釣り
HabitatEncounterType5.Grass=草むら
HabitatEncounterType5.Surf=なみのり
JoinAvenueCeilingColor5.Blue=青
JoinAvenueCeilingColor5.Green=緑
JoinAvenueCeilingColor5.Orange=オレンジ
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=ミツの木
Main.B_OpenItemPouch=アイテム
Main.B_OpenJoinAvenueEditor=ジョインアベニュー
Main.B_OpenLinkInfo=ポケモンリンク
Main.B_OpenMedalsEditor=メダル
Main.B_OpenMiscEditor=その他
Main.B_OpenOPowers= Oパワー
Main.B_OpenPokeBeans=ポケマメ
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=親など
Main.Tab_PartyBattle=手持ちポケモン
Main.Tab_SAV=セーブ
Main.Tab_Stats=ステータス
MedalRank5.Elite=エリートメダリスト
MedalRank5.Legend=レジェンドメダリスト
MedalRank5.Master=マスターメダリスト
MedalRank5.None=なし
MedalRank5.Rookie=ルーキーメダリスト
MedalState5.HintObtained=ヒント取得済み
MedalState5.HintReady=ヒントあり
MedalState5.Obtained=獲得済み
MedalState5.ObtainReady=獲得可能
MedalState5.Unobtained=未獲得
MemoryAmie.B_ClearAll=全て消去
MemoryAmie.BTN_Cancel=キャンセル
MemoryAmie.BTN_Save=保存
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=フシギダネ
SAV_MailBox.L_PKM4=フシギダネ
SAV_MailBox.L_PKM5=フシギダネ
SAV_MailBox.L_PKM6=フシギダネ
SAV_Medals5.B_Cancel=キャンセル
SAV_Medals5.B_ExportAll=すべてエクスポート
SAV_Medals5.B_GiveAll=すべて付与
SAV_Medals5.B_HabitatClear=クリア
SAV_Medals5.B_HabitatSetComplete=コンプリートにする
SAV_Medals5.B_ImportAll=すべてインポート
SAV_Medals5.B_Save=保存
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=捕獲チュートリアル完了
SAV_Medals5.CHK_HabitatTutorialViewed=チュートリアル閲覧済み
SAV_Medals5.CHK_TutorialComplete=チュートリアル完了
SAV_Medals5.DGV_HabitatCompleteColumn=コンプリート
SAV_Medals5.DGV_HabitatFishColumn=釣り
SAV_Medals5.DGV_HabitatGrassColumn=草むら
SAV_Medals5.DGV_HabitatIndexColumn=番号
SAV_Medals5.DGV_HabitatSurfColumn=なみのり
SAV_Medals5.DGV_MedalDateColumn=日付
SAV_Medals5.DGV_MedalIndexColumn=番号
SAV_Medals5.DGV_MedalNameColumn=名前
SAV_Medals5.DGV_MedalStateColumn=状態
SAV_Medals5.DGV_MedalTypeColumn=種類
SAV_Medals5.DGV_MedalUnreadColumn=未読
SAV_Medals5.L_LastEncounterType=最後の遭遇タイプ:
SAV_Medals5.L_PinnedMedal=ピン留めメダル:
SAV_Medals5.L_Rank=ランク:
SAV_Medals5.Tab_Habitat=生息地リスト
SAV_Medals5.Tab_Medals=メダル
SAV_Misc2.B_Cancel=キャンセル
SAV_Misc2.B_Save=保存
SAV_Misc2.B_VirtualConsoleGSBall=GSボールイベント有効化(VC)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=キャンセル
SAV_Misc5.B_DumpFC=データダンプ
SAV_Misc5.B_FunfestMissions=全て解除
SAV_Misc5.B_ImportFC=データをインポート
SAV_Misc5.B_ObtainAllMedals=全てのメダル獲得
SAV_Misc5.B_RandForest=ランダム配置
SAV_Misc5.B_Save=保存
SAV_Misc5.B_UnlockAllProps=全てのグッズ解放
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=ダブル
SAV_Misc5.CHK_FMNew=NEW
SAV_Misc5.CHK_Invisible=不可視
SAV_Misc5.CHK_LibertyPass=リバティチケット 有効化
SAV_Misc5.CHK_MedalUnread=未読
SAV_Misc5.CHK_MultiFriendsSet=フレンド
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=獲得
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=ホワイトフォレスト/ブラックシティ
SAV_Misc5.TAB_Entralink=ハイリンク
SAV_Misc5.TAB_Forest=森
SAV_Misc5.TAB_Main=全般
SAV_Misc5.TAB_Medals=メダル
SAV_Misc5.TAB_Muscial=ミュージカル
SAV_Misc5.TAB_Subway=サブウェイ
SAV_Misc8b.B_Arceus=アルセウスイベント解禁

View File

@@ -39,6 +39,7 @@ SAV_Inventory=인벤토리 편집 도구
SAV_JoinAvenue=조인애버뉴
SAV_Link6=포켓몬 링크 도구
SAV_MailBox=메일박스 편집 도구
SAV_Medals5=메달
SAV_Misc2=기타 편집 도구
SAV_Misc3=트레이너 데이터 편집 도구
SAV_Misc4=기타 편집 도구
@@ -235,6 +236,13 @@ GearCategory.Hands=Hands
GearCategory.Head=Head
GearCategory.Shoes=Shoes
GearCategory.Top=Top
HabitatCompletion5.Caught=잡음
HabitatCompletion5.Complete=완료
HabitatCompletion5.None=없음
HabitatCompletion5.Seen=봄
HabitatEncounterType5.Fish=낚시
HabitatEncounterType5.Grass=풀숲
HabitatEncounterType5.Surf=파도타기
JoinAvenueCeilingColor5.Blue=파랑
JoinAvenueCeilingColor5.Green=초록
JoinAvenueCeilingColor5.Orange=주황
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=꿀바른 나무
Main.B_OpenItemPouch=아이템
Main.B_OpenJoinAvenueEditor=조인애버뉴
Main.B_OpenLinkInfo=링크 데이터
Main.B_OpenMedalsEditor=메달
Main.B_OpenMiscEditor=기타 편집
Main.B_OpenOPowers=O파워
Main.B_OpenPokeBeans=포켓콩
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=어버이/기타
Main.Tab_PartyBattle=파티
Main.Tab_SAV=세이브
Main.Tab_Stats=능력치
MedalRank5.Elite=엘리트 메달리스트
MedalRank5.Legend=레전드 메달리스트
MedalRank5.Master=마스터 메달리스트
MedalRank5.None=없음
MedalRank5.Rookie=루키 메달리스트
MedalState5.HintObtained=힌트 획득
MedalState5.HintReady=힌트 가능
MedalState5.Obtained=획득 완료
MedalState5.ObtainReady=획득 가능
MedalState5.Unobtained=미획득
MemoryAmie.B_ClearAll=모두 비우기
MemoryAmie.BTN_Cancel=취소
MemoryAmie.BTN_Save=저장
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=이상해씨:
SAV_MailBox.L_PKM4=이상해씨:
SAV_MailBox.L_PKM5=이상해씨:
SAV_MailBox.L_PKM6=이상해씨:
SAV_Medals5.B_Cancel=취소
SAV_Medals5.B_ExportAll=모두 내보내기
SAV_Medals5.B_GiveAll=모두 지급
SAV_Medals5.B_HabitatClear=지우기
SAV_Medals5.B_HabitatSetComplete=완료로 설정
SAV_Medals5.B_ImportAll=모두 가져오기
SAV_Medals5.B_Save=저장
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=포획 튜토리얼 완료
SAV_Medals5.CHK_HabitatTutorialViewed=튜토리얼 확인
SAV_Medals5.CHK_TutorialComplete=튜토리얼 완료
SAV_Medals5.DGV_HabitatCompleteColumn=완료
SAV_Medals5.DGV_HabitatFishColumn=낚시
SAV_Medals5.DGV_HabitatGrassColumn=풀숲
SAV_Medals5.DGV_HabitatIndexColumn=번호
SAV_Medals5.DGV_HabitatSurfColumn=파도타기
SAV_Medals5.DGV_MedalDateColumn=날짜
SAV_Medals5.DGV_MedalIndexColumn=번호
SAV_Medals5.DGV_MedalNameColumn=이름
SAV_Medals5.DGV_MedalStateColumn=상태
SAV_Medals5.DGV_MedalTypeColumn=타입
SAV_Medals5.DGV_MedalUnreadColumn=읽지 않음
SAV_Medals5.L_LastEncounterType=마지막 조우 타입:
SAV_Medals5.L_PinnedMedal=고정 메달:
SAV_Medals5.L_Rank=랭크:
SAV_Medals5.Tab_Habitat=서식지 리스트
SAV_Medals5.Tab_Medals=메달
SAV_Misc2.B_Cancel=취소
SAV_Misc2.B_Save=저장
SAV_Misc2.B_VirtualConsoleGSBall=GS볼 이벤트 활성화 (버추얼 콘솔)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=취소
SAV_Misc5.B_DumpFC=데이터 덤프
SAV_Misc5.B_FunfestMissions=모두 해금 (No.0 제외)
SAV_Misc5.B_ImportFC=데이터 가져오기
SAV_Misc5.B_ObtainAllMedals=모든 메달 획득
SAV_Misc5.B_RandForest=모든 구역 랜덤화
SAV_Misc5.B_Save=저장
SAV_Misc5.B_UnlockAllProps=모든 굿즈 해금
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=더블
SAV_Misc5.CHK_FMNew=신규
SAV_Misc5.CHK_Invisible=투명
SAV_Misc5.CHK_LibertyPass=리버티티켓 활성화
SAV_Misc5.CHK_MedalUnread=미확인
SAV_Misc5.CHK_MultiFriendsSet=친구
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=획득함
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=화이트포리스트/블랙시티
SAV_Misc5.TAB_Entralink=하일링크
SAV_Misc5.TAB_Forest=숲
SAV_Misc5.TAB_Main=메인
SAV_Misc5.TAB_Medals=메달
SAV_Misc5.TAB_Muscial=뮤지컬
SAV_Misc5.TAB_Subway=서브웨이
SAV_Misc8b.B_Arceus=아르세우스 이벤트 해제

View File

@@ -39,6 +39,7 @@ SAV_Inventory=物品栏
SAV_JoinAvenue=汇合大道
SAV_Link6=宝可梦连接工具
SAV_MailBox=邮箱编辑
SAV_Medals5=奖牌
SAV_Misc2=杂项编辑
SAV_Misc3=训练家数据编辑
SAV_Misc4=杂项编辑
@@ -235,6 +236,13 @@ GearCategory.Hands=手部
GearCategory.Head=头部
GearCategory.Shoes=鞋子
GearCategory.Top=上装
HabitatCompletion5.Caught=已捕获
HabitatCompletion5.Complete=完成
HabitatCompletion5.None=无
HabitatCompletion5.Seen=已见
HabitatEncounterType5.Fish=垂钓
HabitatEncounterType5.Grass=草丛
HabitatEncounterType5.Surf=冲浪
JoinAvenueCeilingColor5.Blue=蓝色
JoinAvenueCeilingColor5.Green=绿色
JoinAvenueCeilingColor5.Orange=橙色
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=甜甜蜜树
Main.B_OpenItemPouch=道具
Main.B_OpenJoinAvenueEditor=汇合大道
Main.B_OpenLinkInfo=宝可梦连接
Main.B_OpenMedalsEditor=奖牌
Main.B_OpenMiscEditor=杂项编辑
Main.B_OpenOPowers=O-力量
Main.B_OpenPokeBeans=宝可豆
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=初训家/杂项
Main.Tab_PartyBattle=同行
Main.Tab_SAV=存档
Main.Tab_Stats=数值
MedalRank5.Elite=精英
MedalRank5.Legend=传说
MedalRank5.Master=大师
MedalRank5.None=无
MedalRank5.Rookie=新秀
MedalState5.HintObtained=已获提示
MedalState5.HintReady=可获提示
MedalState5.Obtained=已获得
MedalState5.ObtainReady=可获得
MedalState5.Unobtained=未获得
MemoryAmie.B_ClearAll=清空
MemoryAmie.BTN_Cancel=取消
MemoryAmie.BTN_Save=保存
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=妙蛙种子:
SAV_MailBox.L_PKM4=妙蛙种子:
SAV_MailBox.L_PKM5=妙蛙种子:
SAV_MailBox.L_PKM6=妙蛙种子:
SAV_Medals5.B_Cancel=取消
SAV_Medals5.B_ExportAll=全部导出
SAV_Medals5.B_GiveAll=全部给予
SAV_Medals5.B_HabitatClear=清除
SAV_Medals5.B_HabitatSetComplete=设为完成
SAV_Medals5.B_ImportAll=全部导入
SAV_Medals5.B_Save=保存
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=捕获教程完成
SAV_Medals5.CHK_HabitatTutorialViewed=已查看教程
SAV_Medals5.CHK_TutorialComplete=教程完成
SAV_Medals5.DGV_HabitatCompleteColumn=完成
SAV_Medals5.DGV_HabitatFishColumn=垂钓
SAV_Medals5.DGV_HabitatGrassColumn=草丛
SAV_Medals5.DGV_HabitatIndexColumn=编号
SAV_Medals5.DGV_HabitatSurfColumn=冲浪
SAV_Medals5.DGV_MedalDateColumn=日期
SAV_Medals5.DGV_MedalIndexColumn=编号
SAV_Medals5.DGV_MedalNameColumn=名称
SAV_Medals5.DGV_MedalStateColumn=状态
SAV_Medals5.DGV_MedalTypeColumn=类型
SAV_Medals5.DGV_MedalUnreadColumn=未读
SAV_Medals5.L_LastEncounterType=上次遭遇类型:
SAV_Medals5.L_PinnedMedal=置顶奖牌:
SAV_Medals5.L_Rank=等级:
SAV_Medals5.Tab_Habitat=栖息地列表
SAV_Medals5.Tab_Medals=奖牌
SAV_Misc2.B_Cancel=取消
SAV_Misc2.B_Save=保存
SAV_Misc2.B_VirtualConsoleGSBall=启用GS球事件(虚拟主机)
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=取消
SAV_Misc5.B_DumpFC=导出数据
SAV_Misc5.B_FunfestMissions=解锁所有 (除了 No.0)
SAV_Misc5.B_ImportFC=导入数据
SAV_Misc5.B_ObtainAllMedals=获得所有奖章
SAV_Misc5.B_RandForest=随机所有区域
SAV_Misc5.B_Save=保存
SAV_Misc5.B_UnlockAllProps=解锁所有道具
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=双打
SAV_Misc5.CHK_FMNew=新纪录
SAV_Misc5.CHK_Invisible=隐性
SAV_Misc5.CHK_LibertyPass=激活自由船票
SAV_Misc5.CHK_MedalUnread=未读
SAV_Misc5.CHK_MultiFriendsSet=朋友
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=获得
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=白森林/黑色市
SAV_Misc5.TAB_Entralink=连入
SAV_Misc5.TAB_Forest=森林
SAV_Misc5.TAB_Main=主界面
SAV_Misc5.TAB_Medals=奖章
SAV_Misc5.TAB_Muscial=音乐剧
SAV_Misc5.TAB_Subway=地铁
SAV_Misc8b.B_Arceus=解锁阿尔宙斯事件

View File

@@ -39,6 +39,7 @@ SAV_Inventory=物品欄
SAV_JoinAvenue=匯合大道
SAV_Link6=寶可夢連接工具
SAV_MailBox=郵箱編輯
SAV_Medals5=獎牌
SAV_Misc2=訓練家資料雜項編輯
SAV_Misc3=訓練家資料雜項編輯
SAV_Misc4=訓練家資料雜項編輯
@@ -235,6 +236,13 @@ GearCategory.Hands=手部
GearCategory.Head=頭部
GearCategory.Shoes=鞋子
GearCategory.Top=上裝
HabitatCompletion5.Caught=已捕獲
HabitatCompletion5.Complete=完成
HabitatCompletion5.None=無
HabitatCompletion5.Seen=已見
HabitatEncounterType5.Fish=垂釣
HabitatEncounterType5.Grass=草叢
HabitatEncounterType5.Surf=衝浪
JoinAvenueCeilingColor5.Blue=藍色
JoinAvenueCeilingColor5.Green=綠色
JoinAvenueCeilingColor5.Orange=橙色
@@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=甜甜蜜樹
Main.B_OpenItemPouch=道具
Main.B_OpenJoinAvenueEditor=匯合大道
Main.B_OpenLinkInfo=寶可夢連接
Main.B_OpenMedalsEditor=獎牌
Main.B_OpenMiscEditor=雜項編輯
Main.B_OpenOPowers=O-力量
Main.B_OpenPokeBeans=寶可豆
@@ -661,6 +670,16 @@ Main.Tab_OTMisc=初訓家/雜項
Main.Tab_PartyBattle=同行
Main.Tab_SAV=存檔
Main.Tab_Stats=數值
MedalRank5.Elite=精英
MedalRank5.Legend=傳說
MedalRank5.Master=大師
MedalRank5.None=無
MedalRank5.Rookie=新秀
MedalState5.HintObtained=已獲提示
MedalState5.HintReady=可獲提示
MedalState5.Obtained=已獲得
MedalState5.ObtainReady=可獲得
MedalState5.Unobtained=未獲得
MemoryAmie.B_ClearAll=清空
MemoryAmie.BTN_Cancel=取消
MemoryAmie.BTN_Save=儲存
@@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=妙蛙種子:
SAV_MailBox.L_PKM4=妙蛙種子:
SAV_MailBox.L_PKM5=妙蛙種子:
SAV_MailBox.L_PKM6=妙蛙種子:
SAV_Medals5.B_Cancel=取消
SAV_Medals5.B_ExportAll=全部匯出
SAV_Medals5.B_GiveAll=全部給予
SAV_Medals5.B_HabitatClear=清除
SAV_Medals5.B_HabitatSetComplete=設為完成
SAV_Medals5.B_ImportAll=全部匯入
SAV_Medals5.B_Save=儲存
SAV_Medals5.CHK_HabitatTutorialCompleteCapture=捕獲教學完成
SAV_Medals5.CHK_HabitatTutorialViewed=已檢視教學
SAV_Medals5.CHK_TutorialComplete=教學完成
SAV_Medals5.DGV_HabitatCompleteColumn=完成
SAV_Medals5.DGV_HabitatFishColumn=垂釣
SAV_Medals5.DGV_HabitatGrassColumn=草叢
SAV_Medals5.DGV_HabitatIndexColumn=編號
SAV_Medals5.DGV_HabitatSurfColumn=衝浪
SAV_Medals5.DGV_MedalDateColumn=日期
SAV_Medals5.DGV_MedalIndexColumn=編號
SAV_Medals5.DGV_MedalNameColumn=名稱
SAV_Medals5.DGV_MedalStateColumn=狀態
SAV_Medals5.DGV_MedalTypeColumn=類型
SAV_Medals5.DGV_MedalUnreadColumn=未讀
SAV_Medals5.L_LastEncounterType=上次遭遇類型:
SAV_Medals5.L_PinnedMedal=置頂獎牌:
SAV_Medals5.L_Rank=等級:
SAV_Medals5.Tab_Habitat=棲息地列表
SAV_Medals5.Tab_Medals=獎牌
SAV_Misc2.B_Cancel=取消
SAV_Misc2.B_Save=保存
SAV_Misc2.B_VirtualConsoleGSBall=啟用GS球事件虛擬主機
@@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=取消
SAV_Misc5.B_DumpFC=導出資料
SAV_Misc5.B_FunfestMissions=解鎖所有 (除了 No.0)
SAV_Misc5.B_ImportFC=導入資料
SAV_Misc5.B_ObtainAllMedals=獲得所有獎章
SAV_Misc5.B_RandForest=隨機所有區域
SAV_Misc5.B_Save=儲存
SAV_Misc5.B_UnlockAllProps=解鎖全部音樂物品
@@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=雙打
SAV_Misc5.CHK_FMNew=新紀錄
SAV_Misc5.CHK_Invisible=隱性
SAV_Misc5.CHK_LibertyPass=啟動自由船票
SAV_Misc5.CHK_MedalUnread=未讀
SAV_Misc5.CHK_MultiFriendsSet=朋友
SAV_Misc5.CHK_MultiNPCSet=NPC
SAV_Misc5.CHK_PropObtained=獲得
@@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=白森林/黑色市
SAV_Misc5.TAB_Entralink=連入
SAV_Misc5.TAB_Forest=森林
SAV_Misc5.TAB_Main=主介面
SAV_Misc5.TAB_Medals=獎章
SAV_Misc5.TAB_Muscial=音樂劇
SAV_Misc5.TAB_Subway=地鐵
SAV_Misc8b.B_Arceus=解鎖阿爾宙斯事件

View File

@@ -120,7 +120,7 @@ private void InitializeComponent()
CHK_ScriptFlag.AutoSize = true;
CHK_ScriptFlag.Location = new System.Drawing.Point(97, 11);
CHK_ScriptFlag.Name = "CHK_ScriptFlag";
CHK_ScriptFlag.Size = new System.Drawing.Size(74, 21);
CHK_ScriptFlag.Size = new System.Drawing.Size(88, 21);
CHK_ScriptFlag.TabIndex = 1;
CHK_ScriptFlag.Text = "Script Flag";
CHK_ScriptFlag.UseVisualStyleBackColor = true;
@@ -331,6 +331,7 @@ private void InitializeComponent()
Controls.Add(B_Cancel);
Controls.Add(TC_JoinAvenue);
Icon = Properties.Resources.Icon;
MaximizeBox = false;
MinimumSize = new System.Drawing.Size(980, 764);
Name = "SAV_JoinAvenue";
StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;

View File

@@ -0,0 +1,639 @@
namespace PKHeX.WinForms
{
partial class SAV_Medals5
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
components.Dispose();
base.Dispose(disposing);
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
TC_Main = new System.Windows.Forms.TabControl();
Tab_Medals = new System.Windows.Forms.TabPage();
DGV_Medals = new PKHeX.WinForms.Controls.DoubleBufferedDataGridView();
MedalIndexColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
MedalNameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
MedalTypeColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
MedalStateColumn = new System.Windows.Forms.DataGridViewComboBoxColumn();
MedalUnreadColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
MedalDateColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
MedalSettingsPanel = new System.Windows.Forms.TableLayoutPanel();
L_PinnedMedal = new System.Windows.Forms.Label();
CB_PinnedMedal = new System.Windows.Forms.ComboBox();
L_Rank = new System.Windows.Forms.Label();
CB_Rank = new System.Windows.Forms.ComboBox();
CHK_TutorialComplete = new System.Windows.Forms.CheckBox();
MedalButtonPanel = new System.Windows.Forms.FlowLayoutPanel();
B_ExportAll = new System.Windows.Forms.Button();
B_ImportAll = new System.Windows.Forms.Button();
B_GiveAll = new System.Windows.Forms.Button();
Tab_Habitat = new System.Windows.Forms.TabPage();
DGV_Habitat = new PKHeX.WinForms.Controls.DoubleBufferedDataGridView();
HabitatIndexColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
HabitatCompleteColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
HabitatGrassColumn = new System.Windows.Forms.DataGridViewComboBoxColumn();
HabitatSurfColumn = new System.Windows.Forms.DataGridViewComboBoxColumn();
HabitatFishColumn = new System.Windows.Forms.DataGridViewComboBoxColumn();
HabitatBottomPanel = new System.Windows.Forms.TableLayoutPanel();
FLP_HabitatActions = new System.Windows.Forms.FlowLayoutPanel();
B_HabitatClear = new System.Windows.Forms.Button();
B_HabitatSetComplete = new System.Windows.Forms.Button();
CHK_HabitatTutorialViewed = new System.Windows.Forms.CheckBox();
CHK_HabitatTutorialCompleteCapture = new System.Windows.Forms.CheckBox();
L_Unknown90 = new System.Windows.Forms.Label();
NUD_Unknown90 = new System.Windows.Forms.NumericUpDown();
L_Unknown92 = new System.Windows.Forms.Label();
NUD_Unknown92 = new System.Windows.Forms.NumericUpDown();
L_LastEncounterType = new System.Windows.Forms.Label();
CB_LastEncounterType = new System.Windows.Forms.ComboBox();
ButtonPanel = new System.Windows.Forms.FlowLayoutPanel();
B_Save = new System.Windows.Forms.Button();
B_Cancel = new System.Windows.Forms.Button();
TC_Main.SuspendLayout();
Tab_Medals.SuspendLayout();
((System.ComponentModel.ISupportInitialize)DGV_Medals).BeginInit();
MedalSettingsPanel.SuspendLayout();
MedalButtonPanel.SuspendLayout();
Tab_Habitat.SuspendLayout();
((System.ComponentModel.ISupportInitialize)DGV_Habitat).BeginInit();
HabitatBottomPanel.SuspendLayout();
FLP_HabitatActions.SuspendLayout();
((System.ComponentModel.ISupportInitialize)NUD_Unknown90).BeginInit();
((System.ComponentModel.ISupportInitialize)NUD_Unknown92).BeginInit();
ButtonPanel.SuspendLayout();
SuspendLayout();
//
// TC_Main
//
TC_Main.Controls.Add(Tab_Medals);
TC_Main.Controls.Add(Tab_Habitat);
TC_Main.Dock = System.Windows.Forms.DockStyle.Fill;
TC_Main.Location = new System.Drawing.Point(0, 0);
TC_Main.Name = "TC_Main";
TC_Main.SelectedIndex = 0;
TC_Main.Size = new System.Drawing.Size(984, 522);
TC_Main.TabIndex = 0;
//
// Tab_Medals
//
Tab_Medals.Controls.Add(DGV_Medals);
Tab_Medals.Controls.Add(MedalSettingsPanel);
Tab_Medals.Controls.Add(MedalButtonPanel);
Tab_Medals.Location = new System.Drawing.Point(4, 26);
Tab_Medals.Name = "Tab_Medals";
Tab_Medals.Padding = new System.Windows.Forms.Padding(3);
Tab_Medals.Size = new System.Drawing.Size(976, 492);
Tab_Medals.TabIndex = 0;
Tab_Medals.Text = "Medals";
Tab_Medals.UseVisualStyleBackColor = true;
//
// DGV_Medals
//
DGV_Medals.AllowUserToAddRows = false;
DGV_Medals.AllowUserToDeleteRows = false;
DGV_Medals.AllowUserToResizeRows = false;
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.ControlLight;
DGV_Medals.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle5;
DGV_Medals.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
DGV_Medals.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
DGV_Medals.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { MedalIndexColumn, MedalNameColumn, MedalTypeColumn, MedalStateColumn, MedalUnreadColumn, MedalDateColumn });
DGV_Medals.Dock = System.Windows.Forms.DockStyle.Fill;
DGV_Medals.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
DGV_Medals.Location = new System.Drawing.Point(3, 3);
DGV_Medals.MultiSelect = false;
DGV_Medals.Name = "DGV_Medals";
DGV_Medals.RowHeadersVisible = false;
DGV_Medals.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
DGV_Medals.Size = new System.Drawing.Size(970, 363);
DGV_Medals.TabIndex = 0;
DGV_Medals.CellBeginEdit += DGV_Medals_CellBeginEdit;
DGV_Medals.CellValueChanged += DGV_Medals_CellValueChanged;
DGV_Medals.CellParsing += DGV_Medals_CellParsing;
DGV_Medals.CellValidating += DGV_Medals_CellValidating;
DGV_Medals.CurrentCellDirtyStateChanged += DGV_Medals_CurrentCellDirtyStateChanged;
DGV_Medals.DataError += DGV_Medals_DataError;
DGV_Medals.EditingControlShowing += DGV_Medals_EditingControlShowing;
//
// MedalIndexColumn
//
MedalIndexColumn.FillWeight = 60F;
MedalIndexColumn.HeaderText = "Index";
MedalIndexColumn.Name = "MedalIndexColumn";
MedalIndexColumn.ReadOnly = true;
MedalIndexColumn.ValueType = typeof(int);
//
// MedalNameColumn
//
MedalNameColumn.FillWeight = 220F;
MedalNameColumn.HeaderText = "Name";
MedalNameColumn.Name = "MedalNameColumn";
MedalNameColumn.ReadOnly = true;
//
// MedalTypeColumn
//
MedalTypeColumn.FillWeight = 120F;
MedalTypeColumn.HeaderText = "Type";
MedalTypeColumn.Name = "MedalTypeColumn";
MedalTypeColumn.ReadOnly = true;
//
// MedalStateColumn
//
MedalStateColumn.FillWeight = 170F;
MedalStateColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
MedalStateColumn.HeaderText = "State";
MedalStateColumn.Name = "MedalStateColumn";
MedalStateColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
MedalStateColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
MedalStateColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// MedalUnreadColumn
//
MedalUnreadColumn.FillWeight = 90F;
MedalUnreadColumn.HeaderText = "IsUnread";
MedalUnreadColumn.Name = "MedalUnreadColumn";
//
// MedalDateColumn
//
MedalDateColumn.FillWeight = 120F;
MedalDateColumn.HeaderText = "Date";
MedalDateColumn.Name = "MedalDateColumn";
//
// MedalSettingsPanel
//
MedalSettingsPanel.AutoSize = true;
MedalSettingsPanel.ColumnCount = 4;
MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
MedalSettingsPanel.Controls.Add(L_PinnedMedal, 0, 0);
MedalSettingsPanel.Controls.Add(CB_PinnedMedal, 1, 0);
MedalSettingsPanel.Controls.Add(L_Rank, 2, 0);
MedalSettingsPanel.Controls.Add(CB_Rank, 3, 0);
MedalSettingsPanel.Controls.Add(CHK_TutorialComplete, 0, 1);
MedalSettingsPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
MedalSettingsPanel.Location = new System.Drawing.Point(3, 366);
MedalSettingsPanel.Name = "MedalSettingsPanel";
MedalSettingsPanel.Padding = new System.Windows.Forms.Padding(8);
MedalSettingsPanel.RowCount = 2;
MedalSettingsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
MedalSettingsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
MedalSettingsPanel.Size = new System.Drawing.Size(970, 74);
MedalSettingsPanel.TabIndex = 2;
//
// L_PinnedMedal
//
L_PinnedMedal.Anchor = System.Windows.Forms.AnchorStyles.Right;
L_PinnedMedal.AutoSize = true;
L_PinnedMedal.Location = new System.Drawing.Point(11, 15);
L_PinnedMedal.Name = "L_PinnedMedal";
L_PinnedMedal.Size = new System.Drawing.Size(91, 17);
L_PinnedMedal.TabIndex = 0;
L_PinnedMedal.Text = "Pinned Medal:";
//
// CB_PinnedMedal
//
CB_PinnedMedal.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
CB_PinnedMedal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
CB_PinnedMedal.FormattingEnabled = true;
CB_PinnedMedal.Location = new System.Drawing.Point(108, 11);
CB_PinnedMedal.Name = "CB_PinnedMedal";
CB_PinnedMedal.Size = new System.Drawing.Size(400, 25);
CB_PinnedMedal.TabIndex = 1;
//
// L_Rank
//
L_Rank.Anchor = System.Windows.Forms.AnchorStyles.Right;
L_Rank.AutoSize = true;
L_Rank.Location = new System.Drawing.Point(514, 15);
L_Rank.Name = "L_Rank";
L_Rank.Size = new System.Drawing.Size(39, 17);
L_Rank.TabIndex = 2;
L_Rank.Text = "Rank:";
L_Rank.Click += L_Rank_Click;
//
// CB_Rank
//
CB_Rank.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
CB_Rank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
CB_Rank.FormattingEnabled = true;
CB_Rank.Location = new System.Drawing.Point(559, 11);
CB_Rank.Name = "CB_Rank";
CB_Rank.Size = new System.Drawing.Size(400, 25);
CB_Rank.TabIndex = 3;
//
// CHK_TutorialComplete
//
CHK_TutorialComplete.Anchor = System.Windows.Forms.AnchorStyles.Left;
CHK_TutorialComplete.AutoSize = true;
MedalSettingsPanel.SetColumnSpan(CHK_TutorialComplete, 2);
CHK_TutorialComplete.Location = new System.Drawing.Point(11, 42);
CHK_TutorialComplete.Name = "CHK_TutorialComplete";
CHK_TutorialComplete.Size = new System.Drawing.Size(131, 21);
CHK_TutorialComplete.TabIndex = 4;
CHK_TutorialComplete.Text = "Tutorial Complete";
CHK_TutorialComplete.UseVisualStyleBackColor = true;
//
// MedalButtonPanel
//
MedalButtonPanel.AutoSize = true;
MedalButtonPanel.Controls.Add(B_ExportAll);
MedalButtonPanel.Controls.Add(B_ImportAll);
MedalButtonPanel.Controls.Add(B_GiveAll);
MedalButtonPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
MedalButtonPanel.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft;
MedalButtonPanel.Location = new System.Drawing.Point(3, 440);
MedalButtonPanel.Name = "MedalButtonPanel";
MedalButtonPanel.Padding = new System.Windows.Forms.Padding(8);
MedalButtonPanel.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
MedalButtonPanel.Size = new System.Drawing.Size(970, 49);
MedalButtonPanel.TabIndex = 1;
MedalButtonPanel.WrapContents = false;
//
// B_ExportAll
//
B_ExportAll.AutoSize = true;
B_ExportAll.Location = new System.Drawing.Point(11, 11);
B_ExportAll.Name = "B_ExportAll";
B_ExportAll.Size = new System.Drawing.Size(77, 27);
B_ExportAll.TabIndex = 0;
B_ExportAll.Text = "Export All";
B_ExportAll.UseVisualStyleBackColor = true;
B_ExportAll.Click += B_ExportAll_Click;
//
// B_ImportAll
//
B_ImportAll.AutoSize = true;
B_ImportAll.Location = new System.Drawing.Point(94, 11);
B_ImportAll.Name = "B_ImportAll";
B_ImportAll.Size = new System.Drawing.Size(77, 27);
B_ImportAll.TabIndex = 1;
B_ImportAll.Text = "Import All";
B_ImportAll.UseVisualStyleBackColor = true;
B_ImportAll.Click += B_ImportAll_Click;
//
// B_GiveAll
//
B_GiveAll.AutoSize = true;
B_GiveAll.Location = new System.Drawing.Point(177, 11);
B_GiveAll.Name = "B_GiveAll";
B_GiveAll.Size = new System.Drawing.Size(65, 27);
B_GiveAll.TabIndex = 2;
B_GiveAll.Text = "Give All";
B_GiveAll.UseVisualStyleBackColor = true;
B_GiveAll.Click += B_GiveAll_Click;
//
// Tab_Habitat
//
Tab_Habitat.Controls.Add(DGV_Habitat);
Tab_Habitat.Controls.Add(HabitatBottomPanel);
Tab_Habitat.Location = new System.Drawing.Point(4, 26);
Tab_Habitat.Name = "Tab_Habitat";
Tab_Habitat.Padding = new System.Windows.Forms.Padding(3);
Tab_Habitat.Size = new System.Drawing.Size(976, 492);
Tab_Habitat.TabIndex = 1;
Tab_Habitat.Text = "Habitat";
Tab_Habitat.UseVisualStyleBackColor = true;
//
// DGV_Habitat
//
DGV_Habitat.AllowUserToAddRows = false;
DGV_Habitat.AllowUserToDeleteRows = false;
DGV_Habitat.AllowUserToResizeRows = false;
dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.ControlLight;
DGV_Habitat.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle6;
DGV_Habitat.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
DGV_Habitat.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
DGV_Habitat.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { HabitatIndexColumn, HabitatCompleteColumn, HabitatGrassColumn, HabitatSurfColumn, HabitatFishColumn });
DGV_Habitat.Dock = System.Windows.Forms.DockStyle.Fill;
DGV_Habitat.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
DGV_Habitat.Location = new System.Drawing.Point(3, 3);
DGV_Habitat.Name = "DGV_Habitat";
DGV_Habitat.RowHeadersVisible = false;
DGV_Habitat.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
DGV_Habitat.Size = new System.Drawing.Size(970, 381);
DGV_Habitat.TabIndex = 0;
DGV_Habitat.CellValueChanged += DGV_Habitat_CellValueChanged;
DGV_Habitat.CurrentCellDirtyStateChanged += DGV_Habitat_CurrentCellDirtyStateChanged;
DGV_Habitat.DataError += DGV_Habitat_DataError;
DGV_Habitat.EditingControlShowing += DGV_Habitat_EditingControlShowing;
//
// HabitatIndexColumn
//
HabitatIndexColumn.FillWeight = 70F;
HabitatIndexColumn.HeaderText = "Index";
HabitatIndexColumn.Name = "HabitatIndexColumn";
HabitatIndexColumn.ReadOnly = true;
HabitatIndexColumn.ValueType = typeof(int);
//
// HabitatCompleteColumn
//
HabitatCompleteColumn.FillWeight = 90F;
HabitatCompleteColumn.HeaderText = "Complete";
HabitatCompleteColumn.Name = "HabitatCompleteColumn";
//
// HabitatGrassColumn
//
HabitatGrassColumn.FillWeight = 120F;
HabitatGrassColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
HabitatGrassColumn.HeaderText = "Grass";
HabitatGrassColumn.Name = "HabitatGrassColumn";
HabitatGrassColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
HabitatGrassColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
HabitatGrassColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// HabitatSurfColumn
//
HabitatSurfColumn.FillWeight = 120F;
HabitatSurfColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
HabitatSurfColumn.HeaderText = "Surf";
HabitatSurfColumn.Name = "HabitatSurfColumn";
HabitatSurfColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
HabitatSurfColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
HabitatSurfColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// HabitatFishColumn
//
HabitatFishColumn.FillWeight = 120F;
HabitatFishColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
HabitatFishColumn.HeaderText = "Fish";
HabitatFishColumn.Name = "HabitatFishColumn";
HabitatFishColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;
HabitatFishColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
HabitatFishColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// HabitatBottomPanel
//
HabitatBottomPanel.AutoSize = true;
HabitatBottomPanel.ColumnCount = 6;
HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
HabitatBottomPanel.Controls.Add(FLP_HabitatActions, 5, 0);
HabitatBottomPanel.Controls.Add(CHK_HabitatTutorialViewed, 0, 0);
HabitatBottomPanel.Controls.Add(CHK_HabitatTutorialCompleteCapture, 1, 0);
HabitatBottomPanel.Controls.Add(L_Unknown90, 0, 1);
HabitatBottomPanel.Controls.Add(NUD_Unknown90, 1, 1);
HabitatBottomPanel.Controls.Add(L_Unknown92, 2, 1);
HabitatBottomPanel.Controls.Add(NUD_Unknown92, 3, 1);
HabitatBottomPanel.Controls.Add(L_LastEncounterType, 0, 2);
HabitatBottomPanel.Controls.Add(CB_LastEncounterType, 1, 2);
HabitatBottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
HabitatBottomPanel.Location = new System.Drawing.Point(3, 384);
HabitatBottomPanel.Name = "HabitatBottomPanel";
HabitatBottomPanel.Padding = new System.Windows.Forms.Padding(8);
HabitatBottomPanel.RowCount = 3;
HabitatBottomPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
HabitatBottomPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
HabitatBottomPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
HabitatBottomPanel.Size = new System.Drawing.Size(970, 105);
HabitatBottomPanel.TabIndex = 1;
//
// FLP_HabitatActions
//
FLP_HabitatActions.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
FLP_HabitatActions.AutoSize = true;
FLP_HabitatActions.Controls.Add(B_HabitatClear);
FLP_HabitatActions.Controls.Add(B_HabitatSetComplete);
FLP_HabitatActions.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft;
FLP_HabitatActions.Location = new System.Drawing.Point(810, 8);
FLP_HabitatActions.Margin = new System.Windows.Forms.Padding(0);
FLP_HabitatActions.Name = "FLP_HabitatActions";
HabitatBottomPanel.SetRowSpan(FLP_HabitatActions, 3);
FLP_HabitatActions.Size = new System.Drawing.Size(152, 27);
FLP_HabitatActions.TabIndex = 8;
FLP_HabitatActions.WrapContents = false;
//
// B_HabitatClear
//
B_HabitatClear.AutoSize = true;
B_HabitatClear.Location = new System.Drawing.Point(104, 0);
B_HabitatClear.Margin = new System.Windows.Forms.Padding(0);
B_HabitatClear.Name = "B_HabitatClear";
B_HabitatClear.Size = new System.Drawing.Size(48, 27);
B_HabitatClear.TabIndex = 0;
B_HabitatClear.Text = "Clear";
B_HabitatClear.UseVisualStyleBackColor = true;
B_HabitatClear.Click += B_HabitatClear_Click;
//
// B_HabitatSetComplete
//
B_HabitatSetComplete.AutoSize = true;
B_HabitatSetComplete.Location = new System.Drawing.Point(0, 0);
B_HabitatSetComplete.Margin = new System.Windows.Forms.Padding(0, 0, 8, 0);
B_HabitatSetComplete.Name = "B_HabitatSetComplete";
B_HabitatSetComplete.Size = new System.Drawing.Size(96, 27);
B_HabitatSetComplete.TabIndex = 1;
B_HabitatSetComplete.Text = "Set Complete";
B_HabitatSetComplete.UseVisualStyleBackColor = true;
B_HabitatSetComplete.Click += B_HabitatSetComplete_Click;
//
// CHK_HabitatTutorialViewed
//
CHK_HabitatTutorialViewed.Anchor = System.Windows.Forms.AnchorStyles.Left;
CHK_HabitatTutorialViewed.AutoSize = true;
CHK_HabitatTutorialViewed.Location = new System.Drawing.Point(11, 11);
CHK_HabitatTutorialViewed.Name = "CHK_HabitatTutorialViewed";
CHK_HabitatTutorialViewed.Size = new System.Drawing.Size(117, 21);
CHK_HabitatTutorialViewed.TabIndex = 0;
CHK_HabitatTutorialViewed.Text = "Tutorial Viewed";
CHK_HabitatTutorialViewed.UseVisualStyleBackColor = true;
//
// CHK_HabitatTutorialCompleteCapture
//
CHK_HabitatTutorialCompleteCapture.Anchor = System.Windows.Forms.AnchorStyles.Left;
CHK_HabitatTutorialCompleteCapture.AutoSize = true;
HabitatBottomPanel.SetColumnSpan(CHK_HabitatTutorialCompleteCapture, 2);
CHK_HabitatTutorialCompleteCapture.Location = new System.Drawing.Point(144, 11);
CHK_HabitatTutorialCompleteCapture.Name = "CHK_HabitatTutorialCompleteCapture";
CHK_HabitatTutorialCompleteCapture.Size = new System.Drawing.Size(156, 21);
CHK_HabitatTutorialCompleteCapture.TabIndex = 1;
CHK_HabitatTutorialCompleteCapture.Text = "Tutorial Capture Done";
CHK_HabitatTutorialCompleteCapture.UseVisualStyleBackColor = true;
//
// L_Unknown90
//
L_Unknown90.Anchor = System.Windows.Forms.AnchorStyles.Right;
L_Unknown90.AutoSize = true;
L_Unknown90.Location = new System.Drawing.Point(60, 42);
L_Unknown90.Name = "L_Unknown90";
L_Unknown90.Size = new System.Drawing.Size(78, 17);
L_Unknown90.TabIndex = 2;
L_Unknown90.Text = "Unknown90:";
//
// NUD_Unknown90
//
NUD_Unknown90.Location = new System.Drawing.Point(144, 38);
NUD_Unknown90.Maximum = new decimal(new int[] { 65535, 0, 0, 0 });
NUD_Unknown90.Name = "NUD_Unknown90";
NUD_Unknown90.Size = new System.Drawing.Size(64, 25);
NUD_Unknown90.TabIndex = 3;
//
// L_Unknown92
//
L_Unknown92.Anchor = System.Windows.Forms.AnchorStyles.Right;
L_Unknown92.AutoSize = true;
L_Unknown92.Location = new System.Drawing.Point(246, 42);
L_Unknown92.Name = "L_Unknown92";
L_Unknown92.Size = new System.Drawing.Size(78, 17);
L_Unknown92.TabIndex = 4;
L_Unknown92.Text = "Unknown92:";
//
// NUD_Unknown92
//
NUD_Unknown92.Location = new System.Drawing.Point(330, 38);
NUD_Unknown92.Maximum = new decimal(new int[] { 255, 0, 0, 0 });
NUD_Unknown92.Name = "NUD_Unknown92";
NUD_Unknown92.Size = new System.Drawing.Size(48, 25);
NUD_Unknown92.TabIndex = 5;
//
// L_LastEncounterType
//
L_LastEncounterType.Anchor = System.Windows.Forms.AnchorStyles.Right;
L_LastEncounterType.AutoSize = true;
L_LastEncounterType.Location = new System.Drawing.Point(11, 73);
L_LastEncounterType.Name = "L_LastEncounterType";
L_LastEncounterType.Size = new System.Drawing.Size(127, 17);
L_LastEncounterType.TabIndex = 6;
L_LastEncounterType.Text = "Last Encounter Type:";
//
// CB_LastEncounterType
//
CB_LastEncounterType.Anchor = System.Windows.Forms.AnchorStyles.Left;
HabitatBottomPanel.SetColumnSpan(CB_LastEncounterType, 2);
CB_LastEncounterType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
CB_LastEncounterType.FormattingEnabled = true;
CB_LastEncounterType.Location = new System.Drawing.Point(144, 69);
CB_LastEncounterType.Name = "CB_LastEncounterType";
CB_LastEncounterType.Size = new System.Drawing.Size(180, 25);
CB_LastEncounterType.TabIndex = 7;
//
// ButtonPanel
//
ButtonPanel.AutoSize = true;
ButtonPanel.Controls.Add(B_Save);
ButtonPanel.Controls.Add(B_Cancel);
ButtonPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
ButtonPanel.Location = new System.Drawing.Point(0, 522);
ButtonPanel.Name = "ButtonPanel";
ButtonPanel.Padding = new System.Windows.Forms.Padding(8);
ButtonPanel.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
ButtonPanel.Size = new System.Drawing.Size(984, 49);
ButtonPanel.TabIndex = 1;
ButtonPanel.WrapContents = false;
//
// B_Save
//
B_Save.AutoSize = true;
B_Save.Location = new System.Drawing.Point(913, 11);
B_Save.Name = "B_Save";
B_Save.Size = new System.Drawing.Size(52, 27);
B_Save.TabIndex = 0;
B_Save.Text = "Save";
B_Save.UseVisualStyleBackColor = true;
B_Save.Click += B_Save_Click;
//
// B_Cancel
//
B_Cancel.AutoSize = true;
B_Cancel.Location = new System.Drawing.Point(844, 11);
B_Cancel.Name = "B_Cancel";
B_Cancel.Size = new System.Drawing.Size(63, 27);
B_Cancel.TabIndex = 1;
B_Cancel.Text = "Cancel";
B_Cancel.UseVisualStyleBackColor = true;
B_Cancel.Click += B_Cancel_Click;
//
// SAV_Medals5
//
AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
ClientSize = new System.Drawing.Size(984, 571);
Controls.Add(TC_Main);
Controls.Add(ButtonPanel);
Icon = Properties.Resources.Icon;
MaximizeBox = false;
MinimumSize = new System.Drawing.Size(760, 420);
Name = "SAV_Medals5";
StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
Text = "Medals";
TC_Main.ResumeLayout(false);
Tab_Medals.ResumeLayout(false);
Tab_Medals.PerformLayout();
((System.ComponentModel.ISupportInitialize)DGV_Medals).EndInit();
MedalSettingsPanel.ResumeLayout(false);
MedalSettingsPanel.PerformLayout();
MedalButtonPanel.ResumeLayout(false);
MedalButtonPanel.PerformLayout();
Tab_Habitat.ResumeLayout(false);
Tab_Habitat.PerformLayout();
((System.ComponentModel.ISupportInitialize)DGV_Habitat).EndInit();
HabitatBottomPanel.ResumeLayout(false);
HabitatBottomPanel.PerformLayout();
FLP_HabitatActions.ResumeLayout(false);
FLP_HabitatActions.PerformLayout();
((System.ComponentModel.ISupportInitialize)NUD_Unknown90).EndInit();
((System.ComponentModel.ISupportInitialize)NUD_Unknown92).EndInit();
ButtonPanel.ResumeLayout(false);
ButtonPanel.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
#endregion
private System.Windows.Forms.TabControl TC_Main;
private System.Windows.Forms.TabPage Tab_Medals;
private PKHeX.WinForms.Controls.DoubleBufferedDataGridView DGV_Medals;
private System.Windows.Forms.FlowLayoutPanel MedalButtonPanel;
private System.Windows.Forms.Button B_ExportAll;
private System.Windows.Forms.Button B_ImportAll;
private System.Windows.Forms.Button B_GiveAll;
private System.Windows.Forms.TableLayoutPanel MedalSettingsPanel;
private System.Windows.Forms.Label L_PinnedMedal;
private System.Windows.Forms.ComboBox CB_PinnedMedal;
private System.Windows.Forms.Label L_Rank;
private System.Windows.Forms.ComboBox CB_Rank;
private System.Windows.Forms.CheckBox CHK_TutorialComplete;
private System.Windows.Forms.TabPage Tab_Habitat;
private PKHeX.WinForms.Controls.DoubleBufferedDataGridView DGV_Habitat;
private System.Windows.Forms.TableLayoutPanel HabitatBottomPanel;
private System.Windows.Forms.FlowLayoutPanel FLP_HabitatActions;
private System.Windows.Forms.Button B_HabitatClear;
private System.Windows.Forms.Button B_HabitatSetComplete;
private System.Windows.Forms.CheckBox CHK_HabitatTutorialViewed;
private System.Windows.Forms.CheckBox CHK_HabitatTutorialCompleteCapture;
private System.Windows.Forms.Label L_Unknown90;
private System.Windows.Forms.NumericUpDown NUD_Unknown90;
private System.Windows.Forms.Label L_Unknown92;
private System.Windows.Forms.NumericUpDown NUD_Unknown92;
private System.Windows.Forms.Label L_LastEncounterType;
private System.Windows.Forms.ComboBox CB_LastEncounterType;
private System.Windows.Forms.FlowLayoutPanel ButtonPanel;
private System.Windows.Forms.Button B_Save;
private System.Windows.Forms.Button B_Cancel;
private System.Windows.Forms.DataGridViewTextBoxColumn MedalIndexColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn MedalNameColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn MedalTypeColumn;
private System.Windows.Forms.DataGridViewComboBoxColumn MedalStateColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn MedalUnreadColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn MedalDateColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn HabitatIndexColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn HabitatCompleteColumn;
private System.Windows.Forms.DataGridViewComboBoxColumn HabitatGrassColumn;
private System.Windows.Forms.DataGridViewComboBoxColumn HabitatSurfColumn;
private System.Windows.Forms.DataGridViewComboBoxColumn HabitatFishColumn;
}
}

View File

@@ -0,0 +1,472 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using PKHeX.Core;
namespace PKHeX.WinForms;
public sealed partial class SAV_Medals5 : Form
{
private const string MedalListFilter = "Medal List 5|*.ml5";
private const string DateFormat = "yyyy-MM-dd";
private readonly SAV5B2W2 Origin;
private readonly SAV5B2W2 SAV;
private readonly MedalList5 Medals;
private readonly HabitatList5 Habitat;
private readonly string[] MedalNames = Util.GetStringList("medals", Main.CurrentLanguage);
private readonly string[] MedalTypeNames = Util.GetStringList("medal_types", Main.CurrentLanguage);
private readonly string[] MedalStateNames = WinFormsTranslator.GetEnumTranslation<MedalState5>(Main.CurrentLanguage);
private readonly string[] MedalRankNames = WinFormsTranslator.GetEnumTranslation<MedalRank5>(Main.CurrentLanguage);
private readonly string[] HabitatCompletionNames = WinFormsTranslator.GetEnumTranslation<HabitatCompletion5>(Main.CurrentLanguage);
private readonly string[] HabitatEncounterTypeNames = WinFormsTranslator.GetEnumTranslation<HabitatEncounterType5>(Main.CurrentLanguage);
private static readonly DateOnly MinimumDate = new(2000, 1, 1);
private static readonly DateOnly MaximumDate = new(2099, 12, 31);
public SAV_Medals5(SAV5B2W2 sav)
{
InitializeComponent();
WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
Origin = sav;
SAV = (SAV5B2W2)sav.Clone();
Medals = SAV.Medals;
Habitat = Medals.HabitatList;
InitializeMedalGrid();
InitializeHabitatGrid();
LoadData();
}
private void B_Save_Click(object sender, EventArgs e)
{
CommitPendingGridEdits();
if (!ValidateChildren())
return;
Medals.PinnedMedal = (byte)WinFormsUtil.GetIndex(CB_PinnedMedal);
Medals.Rank = (MedalRank5)WinFormsUtil.GetIndex(CB_Rank);
Medals.IsTutorialComplete = CHK_TutorialComplete.Checked;
SaveHabitatSettings();
Origin.CopyChangesFrom(SAV);
Close();
}
private void B_Cancel_Click(object sender, EventArgs e) => Close();
private void B_GiveAll_Click(object sender, EventArgs e)
{
var now = EncounterDate.GetDateNDS();
Medals.GiveAll(now, unread: true);
LoadMedalData();
WinFormsUtil.Asterisk();
}
private void B_ImportAll_Click(object sender, EventArgs e)
{
using var ofd = new OpenFileDialog();
ofd.Filter = MedalListFilter;
ofd.FileName = GetDefaultFileName();
if (ofd.ShowDialog() != DialogResult.OK)
return;
var fi = new FileInfo(ofd.FileName);
if (fi.Length != MedalList5.LengthAllMedals)
{
WinFormsUtil.Alert(string.Format(MessageStrings.MsgFileSizeIncorrect, fi.Length, MedalList5.LengthAllMedals));
return;
}
var data = File.ReadAllBytes(ofd.FileName);
data.AsSpan().CopyTo(Medals.AllMedals);
LoadMedalData();
WinFormsUtil.Asterisk();
}
private void B_ExportAll_Click(object sender, EventArgs e)
{
using var sfd = new SaveFileDialog();
sfd.Filter = MedalListFilter;
sfd.FileName = GetDefaultFileName();
if (sfd.ShowDialog() != DialogResult.OK)
return;
File.WriteAllBytes(sfd.FileName, Medals.AllMedals.ToArray());
}
private void B_HabitatSetComplete_Click(object sender, EventArgs e)
{
if (DGV_Habitat.SelectedRows.Count == 0)
{
Habitat.CompleteAll();
}
else
{
foreach (var row in GetSelectedHabitatRows())
Habitat.GetHabitat(row.Index).SetComplete();
}
LoadHabitatData();
WinFormsUtil.Asterisk();
}
private void B_HabitatClear_Click(object sender, EventArgs e)
{
foreach (var row in GetSelectedHabitatRows())
Habitat.GetHabitat(row.Index).Clear();
LoadHabitatData();
WinFormsUtil.Asterisk();
}
private void L_Rank_Click(object? sender, EventArgs e)
{
CommitPendingGridEdits();
CB_Rank.SelectedValue = (int)Medals.CalculateRank();
WinFormsUtil.Asterisk();
}
private void DGV_Medals_CellBeginEdit(object? sender, DataGridViewCellCancelEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex != MedalDateColumn.Index)
return;
if (!CanEditMedalDate(e.RowIndex))
e.Cancel = true;
}
private void DGV_Medals_CellParsing(object? sender, DataGridViewCellParsingEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex != MedalDateColumn.Index)
return;
if (e.Value is not string text)
return;
if (!TryParseDate(text, out var date))
return;
e.Value = date.ToString(DateFormat, CultureInfo.InvariantCulture);
e.ParsingApplied = true;
}
private void DGV_Medals_CellValidating(object? sender, DataGridViewCellValidatingEventArgs e)
{
if (e.RowIndex < 0)
return;
if (e.ColumnIndex == MedalDateColumn.Index)
{
if (!CanEditMedalDate(e.RowIndex))
return;
if (e.FormattedValue is not string text || !TryParseDate(text, out _))
{
DGV_Medals.Rows[e.RowIndex].ErrorText = $"Date must be between {MinimumDate:yyyy-MM-dd} and {MaximumDate:yyyy-MM-dd}.";
e.Cancel = true;
}
else
{
DGV_Medals.Rows[e.RowIndex].ErrorText = string.Empty;
}
return;
}
DGV_Medals.Rows[e.RowIndex].ErrorText = string.Empty;
}
private void DGV_Medals_CurrentCellDirtyStateChanged(object? sender, EventArgs e)
{
if (DGV_Medals.IsCurrentCellDirty)
DGV_Medals.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void DGV_Medals_DataError(object? sender, DataGridViewDataErrorEventArgs e)
{
e.Cancel = false;
e.ThrowException = false;
}
private void DGV_Medals_EditingControlShowing(object? sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox combo && DGV_Medals.CurrentCell?.OwningColumn is DataGridViewComboBoxColumn)
{
DGV_Medals.BeginInvoke((MethodInvoker)(() => combo.DroppedDown = true));
return;
}
if (DGV_Medals.CurrentCell?.ColumnIndex != MedalDateColumn.Index)
return;
if (e.Control is TextBox tb)
tb.SelectAll();
}
private void DGV_Habitat_CurrentCellDirtyStateChanged(object? sender, EventArgs e)
{
if (DGV_Habitat.IsCurrentCellDirty)
DGV_Habitat.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void DGV_Habitat_DataError(object? sender, DataGridViewDataErrorEventArgs e)
{
e.Cancel = false;
e.ThrowException = false;
}
private void DGV_Habitat_EditingControlShowing(object? sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox combo && DGV_Habitat.CurrentCell?.OwningColumn is DataGridViewComboBoxColumn)
DGV_Habitat.BeginInvoke((MethodInvoker)(() => combo.DroppedDown = true));
}
private void InitializeMedalGrid()
{
MedalStateColumn.Items.AddRange(MedalStateNames);
var medalItems = MedalNames.Select((z, i) => new ComboItem(z, i)).ToList();
medalItems.Insert(0, new ComboItem(GameInfo.Strings.specieslist[0], MedalList5.PinnedMedalNone));
CB_PinnedMedal.InitializeBinding();
CB_PinnedMedal.DataSource = new BindingSource(medalItems, string.Empty);
var rankValues = Enum.GetValues<MedalRank5>();
var rankItems = new ComboItem[rankValues.Length];
for (int i = 0; i < rankItems.Length; i++)
rankItems[i] = new ComboItem(MedalRankNames[i], (int)rankValues[i]);
CB_Rank.InitializeBinding();
CB_Rank.DataSource = new BindingSource(rankItems, string.Empty);
}
private void InitializeHabitatGrid()
{
HabitatGrassColumn.Items.AddRange(HabitatCompletionNames);
HabitatSurfColumn.Items.AddRange(HabitatCompletionNames);
HabitatFishColumn.Items.AddRange(HabitatCompletionNames);
CB_LastEncounterType.Items.AddRange(HabitatEncounterTypeNames);
}
private void LoadData()
{
LoadMedalData();
LoadHabitatData();
LoadHabitatSettings();
}
private void LoadMedalData()
{
DGV_Medals.Rows.Clear();
DGV_Medals.Rows.Add(MedalNames.Length);
for (int i = 0; i < MedalNames.Length; i++)
LoadMedalRow(i);
CB_PinnedMedal.SelectedValue = (int)Medals.PinnedMedal;
CB_Rank.SelectedValue = (int)Medals.Rank;
CHK_TutorialComplete.Checked = Medals.IsTutorialComplete;
}
private void LoadMedalRow(int index)
{
var medal = Medals[index];
var row = DGV_Medals.Rows[index];
var cells = row.Cells;
cells[MedalIndexColumn.Index].Value = index;
cells[MedalNameColumn.Index].Value = MedalNames[index];
cells[MedalTypeColumn.Index].Value = MedalTypeNames[(int)MedalList5.GetMedalType(index)];
cells[MedalStateColumn.Index].Value = MedalStateNames[(int)medal.State];
cells[MedalUnreadColumn.Index].Value = medal.IsUnread;
cells[MedalDateColumn.Index].Value = GetDisplayedDate(medal);
row.ErrorText = string.Empty;
SetMedalDateCellState(row, medal.CanHaveDate);
}
private void LoadHabitatData()
{
DGV_Habitat.Rows.Clear();
DGV_Habitat.Rows.Add(HabitatList5.HabitatCount);
for (int i = 0; i < HabitatList5.HabitatCount; i++)
LoadHabitatRow(i);
}
private void LoadHabitatRow(int index)
{
var habitat = Habitat.GetHabitat(index);
var row = DGV_Habitat.Rows[index];
var cells = row.Cells;
cells[HabitatIndexColumn.Index].Value = index;
cells[HabitatCompleteColumn.Index].Value = habitat.IsComplete;
cells[HabitatGrassColumn.Index].Value = HabitatCompletionNames[(int)habitat.GetStatus(HabitatEncounterType5.Grass)];
cells[HabitatSurfColumn.Index].Value = HabitatCompletionNames[(int)habitat.GetStatus(HabitatEncounterType5.Surf)];
cells[HabitatFishColumn.Index].Value = HabitatCompletionNames[(int)habitat.GetStatus(HabitatEncounterType5.Fish)];
row.ErrorText = string.Empty;
}
private void LoadHabitatSettings()
{
CHK_HabitatTutorialViewed.Checked = Habitat.IsTutorialViewed;
CHK_HabitatTutorialCompleteCapture.Checked = Habitat.IsTutorialCompleteCapture;
NUD_Unknown90.Value = Habitat.Unknown90;
NUD_Unknown92.Value = Habitat.Unknown92;
CB_LastEncounterType.SelectedIndex = (int)Habitat.LastEncounterType;
}
private void SaveHabitatSettings()
{
Habitat.IsTutorialViewed = CHK_HabitatTutorialViewed.Checked;
Habitat.IsTutorialCompleteCapture = CHK_HabitatTutorialCompleteCapture.Checked;
Habitat.Unknown90 = (ushort)NUD_Unknown90.Value;
Habitat.Unknown92 = (byte)NUD_Unknown92.Value;
if (CB_LastEncounterType.SelectedIndex >= 0)
Habitat.LastEncounterType = (HabitatEncounterType5)CB_LastEncounterType.SelectedIndex;
}
private void SetMedalDateCellState(DataGridViewRow row, bool enabled)
{
var cell = row.Cells[MedalDateColumn.Index];
cell.ReadOnly = !enabled;
cell.Style.BackColor = enabled ? DGV_Medals.DefaultCellStyle.BackColor : SystemColors.Control;
cell.Style.ForeColor = enabled ? DGV_Medals.DefaultCellStyle.ForeColor : SystemColors.GrayText;
cell.Style.SelectionBackColor = enabled ? DGV_Medals.DefaultCellStyle.SelectionBackColor : SystemColors.Control;
cell.Style.SelectionForeColor = enabled ? DGV_Medals.DefaultCellStyle.SelectionForeColor : SystemColors.GrayText;
}
private bool CanEditMedalDate(int rowIndex)
{
var medal = Medals[rowIndex];
return medal.CanHaveDate;
}
private static string GetDisplayedDate(Medal5 medal) => medal is { CanHaveDate: true, HasDate: true }
? medal.Date.ToString(DateFormat, CultureInfo.InvariantCulture)
: string.Empty;
private static bool TryParseDate(string text, out DateOnly date)
{
text = text.Trim();
if (string.IsNullOrWhiteSpace(text))
{
date = default;
return false;
}
if (!DateOnly.TryParse(text, CultureInfo.CurrentCulture, DateTimeStyles.None, out date) &&
!DateOnly.TryParseExact(text, DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
return false;
}
return EncounterDate.IsValidDateNDS(date);
}
private string GetDefaultFileName() => PathUtil.CleanFileName($"{SAV.OT} {SAV.Version}.ml5");
private void CommitPendingGridEdits()
{
if (DGV_Medals.IsCurrentCellDirty)
DGV_Medals.CommitEdit(DataGridViewDataErrorContexts.Commit);
if (DGV_Habitat.IsCurrentCellDirty)
DGV_Habitat.CommitEdit(DataGridViewDataErrorContexts.Commit);
DGV_Medals.EndEdit();
DGV_Habitat.EndEdit();
}
private void DGV_Medals_CellValueChanged(object? sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
return;
var medal = Medals[e.RowIndex];
var row = DGV_Medals.Rows[e.RowIndex];
if (e.ColumnIndex == MedalStateColumn.Index)
{
if (row.Cells[MedalStateColumn.Index].Value is string state)
{
int index = Array.IndexOf(MedalStateNames, state);
if (index >= 0)
medal.State = (MedalState5)index;
}
if (medal is { CanHaveDate: true, HasDate: false })
medal.Date = EncounterDate.GetDateNDS();
LoadMedalRow(e.RowIndex);
return;
}
if (e.ColumnIndex == MedalUnreadColumn.Index)
{
medal.IsUnread = row.Cells[MedalUnreadColumn.Index].Value is true;
return;
}
if (e.ColumnIndex == MedalDateColumn.Index)
{
var value = row.Cells[MedalDateColumn.Index].Value?.ToString();
if (value is null || !TryParseDate(value, out var date))
return;
medal.Date = date;
row.Cells[MedalDateColumn.Index].Value = date.ToString(DateFormat, CultureInfo.InvariantCulture);
row.ErrorText = string.Empty;
}
}
private void DGV_Habitat_CellValueChanged(object? sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
return;
var row = DGV_Habitat.Rows[e.RowIndex];
var habitat = Habitat.GetHabitat(e.RowIndex);
if (e.ColumnIndex == HabitatCompleteColumn.Index)
{
habitat.IsComplete = row.Cells[HabitatCompleteColumn.Index].Value is true;
return;
}
if (e.ColumnIndex == HabitatGrassColumn.Index)
{
TrySetHabitatCompletion(row.Cells[HabitatGrassColumn.Index].Value, value => habitat.SetStatus(HabitatEncounterType5.Grass, value));
return;
}
if (e.ColumnIndex == HabitatSurfColumn.Index)
{
TrySetHabitatCompletion(row.Cells[HabitatSurfColumn.Index].Value, value => habitat.SetStatus(HabitatEncounterType5.Surf, value));
return;
}
if (e.ColumnIndex == HabitatFishColumn.Index)
TrySetHabitatCompletion(row.Cells[HabitatFishColumn.Index].Value, value => habitat.SetStatus(HabitatEncounterType5.Fish, value));
}
private void TrySetHabitatCompletion(object? cellValue, Action<HabitatCompletion5> setter)
{
if (cellValue is not string text)
return;
int index = Array.IndexOf(HabitatCompletionNames, text);
if (index >= 0)
setter((HabitatCompletion5)index);
}
private IEnumerable<DataGridViewRow> GetSelectedHabitatRows()
{
if (DGV_Habitat.SelectedRows.Count != 0)
return DGV_Habitat.SelectedRows.Cast<DataGridViewRow>().OrderBy(z => z.Index);
return DGV_Habitat.SelectedCells.Cast<DataGridViewCell>()
.Select(z => z.OwningRow).OfType<DataGridViewRow>()
.Distinct()
.OrderBy(z => z.Index);
}
}

View File

@@ -181,13 +181,6 @@ private void InitializeComponent()
L_FC = new System.Windows.Forms.Label();
B_ImportFC = new System.Windows.Forms.Button();
B_DumpFC = new System.Windows.Forms.Button();
TAB_Medals = new System.Windows.Forms.TabPage();
TB_MedalType = new System.Windows.Forms.TextBox();
B_ObtainAllMedals = new System.Windows.Forms.Button();
CAL_MedalDate = new System.Windows.Forms.DateTimePicker();
CHK_MedalUnread = new System.Windows.Forms.CheckBox();
CB_MedalState = new System.Windows.Forms.ComboBox();
CB_CurrentMedal = new System.Windows.Forms.ComboBox();
TAB_Muscial = new System.Windows.Forms.TabPage();
B_UnlockAllProps = new System.Windows.Forms.Button();
CHK_PropObtained = new System.Windows.Forms.CheckBox();
@@ -252,7 +245,6 @@ private void InitializeComponent()
((System.ComponentModel.ISupportInitialize)NUD_SingleRecord).BeginInit();
((System.ComponentModel.ISupportInitialize)NUD_SinglePast).BeginInit();
TAB_BWCityForest.SuspendLayout();
TAB_Medals.SuspendLayout();
TAB_Muscial.SuspendLayout();
SuspendLayout();
//
@@ -288,7 +280,6 @@ private void InitializeComponent()
TC_Misc.Controls.Add(TAB_Forest);
TC_Misc.Controls.Add(TAB_Subway);
TC_Misc.Controls.Add(TAB_BWCityForest);
TC_Misc.Controls.Add(TAB_Medals);
TC_Misc.Controls.Add(TAB_Muscial);
TC_Misc.Location = new System.Drawing.Point(14, 17);
TC_Misc.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
@@ -2061,77 +2052,6 @@ private void InitializeComponent()
B_DumpFC.UseVisualStyleBackColor = true;
B_DumpFC.Click += B_DumpFC_Click;
//
// TAB_Medals
//
TAB_Medals.Controls.Add(TB_MedalType);
TAB_Medals.Controls.Add(B_ObtainAllMedals);
TAB_Medals.Controls.Add(CAL_MedalDate);
TAB_Medals.Controls.Add(CHK_MedalUnread);
TAB_Medals.Controls.Add(CB_MedalState);
TAB_Medals.Controls.Add(CB_CurrentMedal);
TAB_Medals.Location = new System.Drawing.Point(4, 24);
TAB_Medals.Name = "TAB_Medals";
TAB_Medals.Size = new System.Drawing.Size(390, 338);
TAB_Medals.TabIndex = 5;
TAB_Medals.Text = "Medals";
TAB_Medals.UseVisualStyleBackColor = true;
//
// TB_MedalType
//
TB_MedalType.Location = new System.Drawing.Point(212, 103);
TB_MedalType.Name = "TB_MedalType";
TB_MedalType.ReadOnly = true;
TB_MedalType.Size = new System.Drawing.Size(175, 23);
TB_MedalType.TabIndex = 4;
TB_MedalType.TabStop = false;
//
// B_ObtainAllMedals
//
B_ObtainAllMedals.Location = new System.Drawing.Point(3, 264);
B_ObtainAllMedals.Name = "B_ObtainAllMedals";
B_ObtainAllMedals.Size = new System.Drawing.Size(117, 71);
B_ObtainAllMedals.TabIndex = 5;
B_ObtainAllMedals.Text = "Obtain All Medals";
B_ObtainAllMedals.UseVisualStyleBackColor = true;
B_ObtainAllMedals.Click += B_ObtainAllMedals_Click;
//
// CAL_MedalDate
//
CAL_MedalDate.Location = new System.Drawing.Point(3, 74);
CAL_MedalDate.Name = "CAL_MedalDate";
CAL_MedalDate.Size = new System.Drawing.Size(384, 23);
CAL_MedalDate.TabIndex = 2;
CAL_MedalDate.ValueChanged += CAL_MedalDate_ValueChanged;
//
// CHK_MedalUnread
//
CHK_MedalUnread.AutoSize = true;
CHK_MedalUnread.Location = new System.Drawing.Point(3, 103);
CHK_MedalUnread.Name = "CHK_MedalUnread";
CHK_MedalUnread.Size = new System.Drawing.Size(64, 19);
CHK_MedalUnread.TabIndex = 3;
CHK_MedalUnread.Text = "Unread";
CHK_MedalUnread.UseVisualStyleBackColor = true;
CHK_MedalUnread.CheckedChanged += CHK_MedalUnread_CheckedChanged;
//
// CB_MedalState
//
CB_MedalState.FormattingEnabled = true;
CB_MedalState.Location = new System.Drawing.Point(3, 45);
CB_MedalState.Name = "CB_MedalState";
CB_MedalState.Size = new System.Drawing.Size(384, 23);
CB_MedalState.TabIndex = 1;
CB_MedalState.SelectedIndexChanged += CB_MedalState_SelectedIndexChanged;
//
// CB_CurrentMedal
//
CB_CurrentMedal.FormattingEnabled = true;
CB_CurrentMedal.Location = new System.Drawing.Point(3, 16);
CB_CurrentMedal.Name = "CB_CurrentMedal";
CB_CurrentMedal.Size = new System.Drawing.Size(384, 23);
CB_CurrentMedal.TabIndex = 0;
CB_CurrentMedal.SelectedIndexChanged += CB_CurrentMedal_SelectedIndexChanged;
//
// TAB_Muscial
//
TAB_Muscial.Controls.Add(B_UnlockAllProps);
@@ -2251,8 +2171,6 @@ private void InitializeComponent()
((System.ComponentModel.ISupportInitialize)NUD_SingleRecord).EndInit();
((System.ComponentModel.ISupportInitialize)NUD_SinglePast).EndInit();
TAB_BWCityForest.ResumeLayout(false);
TAB_Medals.ResumeLayout(false);
TAB_Medals.PerformLayout();
TAB_Muscial.ResumeLayout(false);
TAB_Muscial.PerformLayout();
ResumeLayout(false);
@@ -2406,12 +2324,6 @@ private void InitializeComponent()
private System.Windows.Forms.Label L_FC;
private System.Windows.Forms.Button B_ImportFC;
private System.Windows.Forms.Button B_DumpFC;
private System.Windows.Forms.TabPage TAB_Medals;
private System.Windows.Forms.ComboBox CB_CurrentMedal;
private System.Windows.Forms.ComboBox CB_MedalState;
private System.Windows.Forms.DateTimePicker CAL_MedalDate;
private System.Windows.Forms.CheckBox CHK_MedalUnread;
private System.Windows.Forms.Button B_ObtainAllMedals;
private System.Windows.Forms.TabPage TAB_Muscial;
private System.Windows.Forms.ComboBox CB_Prop;
private System.Windows.Forms.CheckBox CHK_PropObtained;
@@ -2424,6 +2336,5 @@ private void InitializeComponent()
private System.Windows.Forms.NumericUpDown NUD_Record32;
private System.Windows.Forms.NumericUpDown NUD_Record16V;
private System.Windows.Forms.NumericUpDown NUD_Record16;
private System.Windows.Forms.TextBox TB_MedalType;
}
}

View File

@@ -34,7 +34,6 @@ public SAV_Misc5(SAV5 sav)
LoadForest();
ReadSubway();
ReadEntralink();
ReadMedals();
ReadMusical();
ReadRecord();
}
@@ -126,7 +125,6 @@ private void ReadMain()
if (SAV is SAV5BW bw)
{
TC_Misc.TabPages.Remove(TAB_Medals);
GB_KeySystem.Visible = false;
// Roamer
cbr = [CB_Roamer642, CB_Roamer641];
@@ -850,91 +848,6 @@ private void B_ImportFC_Click(object sender, EventArgs e)
bw.SetData(bw.Forest.ForestCity.Span, data);
}
private readonly string[] MedalNames = Util.GetStringList("medals", Main.CurrentLanguage);
private readonly string[] MedalTypeNames = Util.GetStringList("medal_types", Main.CurrentLanguage);
private void ReadMedals()
{
if (SAV is SAV5B2W2)
{
CB_CurrentMedal.Items.AddRange(MedalNames);
CB_MedalState.Items.AddRange("Unobtained", "Can Obtain Hint Medal", "Hint Medal Obtained", "Can Obtain Medal", "Medal Obtained");
CB_CurrentMedal.SelectedIndex = 0;
}
}
private void CB_CurrentMedal_SelectedIndexChanged(object sender, EventArgs e)
{
if (SAV is SAV5B2W2 b2w2)
{
var index = CB_CurrentMedal.SelectedIndex;
var medal = b2w2.Medals[index];
var type = MedalList5.GetMedalType(index);
TB_MedalType.Text = MedalTypeNames[(int)type];
CB_MedalState.SelectedIndex = (int)medal.State;
if (medal.CanHaveDate)
{
CAL_MedalDate.Value = medal.Date.ToDateTime(new TimeOnly());
CAL_MedalDate.Enabled = true;
}
else
{
CAL_MedalDate.Enabled = false;
CAL_MedalDate.ValueChanged -= CAL_MedalDate_ValueChanged;
CAL_MedalDate.Value = EncounterDate.GetDateNDS().ToDateTime(new TimeOnly());
CAL_MedalDate.ValueChanged += CAL_MedalDate_ValueChanged;
}
CHK_MedalUnread.Checked = medal.IsUnread;
}
}
private void CB_MedalState_SelectedIndexChanged(object sender, EventArgs e)
{
if (SAV is SAV5B2W2 b2w2)
{
var medal = b2w2.Medals[CB_CurrentMedal.SelectedIndex];
medal.State = (Medal5State)CB_MedalState.SelectedIndex;
if (medal.CanHaveDate)
{
if (!medal.HasDate)
medal.Date = EncounterDate.GetDateNDS();
CAL_MedalDate.Enabled = true;
}
else
{
CAL_MedalDate.Enabled = false;
}
}
}
private void CAL_MedalDate_ValueChanged(object? sender, EventArgs e)
{
if (SAV is SAV5B2W2 b2w2)
{
var medal = b2w2.Medals[CB_CurrentMedal.SelectedIndex];
medal.Date = DateOnly.FromDateTime(CAL_MedalDate.Value);
}
}
private void CHK_MedalUnread_CheckedChanged(object sender, EventArgs e)
{
if (SAV is SAV5B2W2 b2w2)
{
var medal = b2w2.Medals[CB_CurrentMedal.SelectedIndex];
medal.IsUnread = CHK_MedalUnread.Checked;
}
}
private void B_ObtainAllMedals_Click(object sender, EventArgs e)
{
if (SAV is SAV5B2W2 b2w2)
{
var now = EncounterDate.GetDateNDS();
b2w2.Medals.ObtainAll(now, unread: true);
WinFormsUtil.Asterisk();
}
}
private readonly string[] PropNames = Util.GetStringList("props", Main.CurrentLanguage);
private void ReadMusical()

View File

@@ -182,6 +182,8 @@ private static void UpdateTranslations()
typeof(PassPower5),
typeof(Funfest5Mission),
typeof(JoinAvenueCeilingColor5),
typeof(MedalRank5),
typeof(HabitatCompletion5),
typeof(BattleChateauRank6),
typeof(OPower6Index),
typeof(OPower6FieldType),
@@ -249,6 +251,7 @@ private static IEnumerable<Control> GetExtraControls()
$"{nameof(SAV_JoinAvenue)}.L_Unk",
$"{nameof(SAV_JoinAvenue)}.L_IsFlag",
$"{nameof(SAV_JoinAvenue)}.L_Unused",
$"{nameof(SAV_Medals5)}.L_Unknown",
SlotList.DynamicLabelPrefix,
$"{nameof(StorageSlotType)}.{nameof(StorageSlotType.None)}",