diff --git a/PKHeX.Core/Legality/Checks.cs b/PKHeX.Core/Legality/Checks.cs
index e0d0d58db..0d2d14199 100644
--- a/PKHeX.Core/Legality/Checks.cs
+++ b/PKHeX.Core/Legality/Checks.cs
@@ -359,46 +359,37 @@ private void VerifyTrade4()
else
{
if (EncounterMatch.Species == 129) // Magikarp
- VerifyTradeTableFromNickname(Encounters4.TradeDPPt, Encounters4.TradeGift_DPPt);
+ VerifyTradeTable(Encounters4.TradeDPPt, Encounters4.TradeGift_DPPt, pkm.Nickname);
else
VerifyTradeTable(Encounters4.TradeDPPt, Encounters4.TradeGift_DPPt);
}
}
- private void VerifyTrade4Ranch()
- {
- int lang = pkm.Language;
- if (Encounters4.RanchOTNames.Length <= lang)
- {
- AddLine(Severity.Valid, V8, CheckIdentifier.Trainer);
- return;
- }
- if (pkm.IsNicknamed)
- AddLine(Severity.Invalid, V9, CheckIdentifier.Nickname);
- else if (Encounters4.RanchOTNames[lang] != pkm.OT_Name)
- AddLine(Severity.Invalid, V10, CheckIdentifier.Trainer);
- else
- AddLine(Severity.Valid, V11, CheckIdentifier.Nickname);
- }
private void VerifyTrade5()
{
// Trades for JPN games have language ID of 0, not 1.
if (pkm.BW)
{
- if (pkm.Format == 5 && pkm.Language == (int)LanguageID.Japanese)
+ int lang = pkm.Language;
+ if (pkm.Format == 5 && lang == (int)LanguageID.Japanese)
AddLine(Severity.Invalid, string.Format(V5, 0, (int)LanguageID.Japanese), CheckIdentifier.Language);
- // todo
- AddLine(Severity.Valid, V194, CheckIdentifier.Nickname);
+ lang = Math.Max(lang, 1);
+ VerifyTradeTable(Encounters5.TradeBW, Encounters5.TradeGift_BW, lang);
}
else // B2W2
- AddLine(Severity.Valid, V194, CheckIdentifier.Nickname);
+ {
+ if (Encounters5.TradeGift_B2W2_YancyCurtis.Contains(EncounterMatch))
+ VerifyTradeOTOnly(pkm.OT_Gender == 0 ? Encounters5.TradeOT_B2W2_M : Encounters5.TradeOT_B2W2_F);
+ else
+ VerifyTradeTable(Encounters5.TradeB2W2, Encounters5.TradeGift_B2W2);
+ }
}
private void VerifyTrade6()
{
if (pkm.XY)
- VerifyTradeTable(Encounters6.TradeXY, Encounters6.TradeGift_XY);
+ VerifyTradeTable(Encounters6.TradeXY, Encounters6.TradeGift_XY, pkm.Language);
else if (pkm.AO)
- VerifyTradeTable(Encounters6.TradeAO, Encounters6.TradeGift_AO);
+ VerifyTradeTable(Encounters6.TradeAO, Encounters6.TradeGift_AO, pkm.Language);
}
private void VerifyTrade7()
{
@@ -408,22 +399,34 @@ private void VerifyTrade7()
else if (pkm.USUM)
AddLine(Severity.Valid, V194, CheckIdentifier.Nickname);
}
- private void VerifyTradeTable(string[][] ots, EncounterTrade[] table)
+ private void VerifyTrade4Ranch() => VerifyTradeOTOnly(Encounters4.RanchOTNames);
+
+ private void VerifyTradeTable(string[][] ots, EncounterTrade[] table) => VerifyTradeTable(ots, table, pkm.Language);
+ private void VerifyTradeTable(string[][] ots, EncounterTrade[] table, int language)
{
- int lang = pkm.Language;
- var validOT = lang >= ots.Length ? ots[0] : ots[pkm.Language];
+ var validOT = language >= ots.Length ? ots[0] : ots[pkm.Language];
var index = Array.IndexOf(table, EncounterMatch);
VerifyTradeOTNick(validOT, index);
}
- private void VerifyTradeTableFromNickname(string[][] ots, EncounterTrade[] table)
+ private void VerifyTradeTable(string[][] ots, EncounterTrade[] table, string nickname)
{
// edge case method for Foppa (DPPt Magikarp Trade)
- var nick = pkm.Nickname;
var index = Array.IndexOf(table, EncounterMatch);
- var validOT = ots.FirstOrDefault(z => index < z.Length && z[index] == nick);
+ var validOT = ots.FirstOrDefault(z => index < z.Length && z[index] == nickname);
VerifyTradeOTNick(validOT, index);
}
-
+ private void VerifyTradeOTOnly(string[] validOT)
+ {
+ if (pkm.IsNicknamed)
+ AddLine(Severity.Invalid, V9, CheckIdentifier.Nickname);
+ int lang = pkm.Language;
+ if (validOT.Length >= lang)
+ AddLine(Severity.Invalid, V8, CheckIdentifier.Trainer);
+ else if (validOT[lang] != pkm.OT_Name)
+ AddLine(Severity.Invalid, V10, CheckIdentifier.Trainer);
+ else
+ AddLine(Severity.Valid, V11, CheckIdentifier.Nickname);
+ }
private void VerifyTradeOTNick(string[] validOT, int index)
{
if (validOT.Length == 0)
@@ -441,7 +444,7 @@ private void VerifyTradeOTNick(string[] validOT, int index)
string OT = validOT[validOT.Length / 2 + index];
if (nick != pkm.Nickname)
- AddLine(Severity.Fishy, V9, CheckIdentifier.Nickname);
+ AddLine(Severity.Invalid, V9, CheckIdentifier.Nickname);
else
AddLine(Severity.Valid, V11, CheckIdentifier.Nickname);
diff --git a/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs b/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs
index f99278b24..d49646f41 100644
--- a/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs
+++ b/PKHeX.Core/Legality/Encounters/Data/Encounters5.cs
@@ -632,16 +632,16 @@ private static void MarkG5Slots(ref EncounterArea[] Areas)
internal static readonly EncounterTrade[] TradeGift_BW =
{
- new EncounterTrade { Species = 548, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.B, }, // Petilil
- new EncounterTrade { Species = 546, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.W, }, // Cottonee
- new EncounterTrade { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, Version = GameVersion.B, Form = 0, }, // Basculin-Red
- new EncounterTrade { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, Nature = Nature.Adamant, Version = GameVersion.W, Form = 1, }, // Basculin-Blue
- new EncounterTrade { Species = 587, Level = 30, Ability = 1, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,20,31,20,20,20}, Nature = Nature.Lax, }, // Emolga
- new EncounterTrade { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, Nature = Nature.Gentle, }, // Rotom
- new EncounterTrade { Species = 446, Level = 60, Ability = 2, TID = 40217, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {31,20,20,20,20,20}, Nature = Nature.Serious, }, // Munchlax
+ new EncounterTradePID { Species = 548, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, PID = 0x64000000, Version = GameVersion.B, }, // Petilil
+ new EncounterTradePID { Species = 546, Level = 15, Ability = 1, TID = 39922, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, PID = 0x6400007E, Version = GameVersion.W, }, // Cottonee
+ new EncounterTradePID { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, PID = 0x9400007F, Version = GameVersion.B, Form = 0, }, // Basculin-Red
+ new EncounterTradePID { Species = 550, Level = 25, Ability = 1, TID = 27646, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,31,20,20,20,20}, PID = 0x9400007F, Version = GameVersion.W, Form = 1, }, // Basculin-Blue
+ new EncounterTradePID { Species = 587, Level = 30, Ability = 1, TID = 11195, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {20,20,31,20,20,20}, PID = 0xD400007F, }, // Emolga
+ new EncounterTradePID { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, PID = 0x2A000000, }, // Rotom
+ new EncounterTradePID { Species = 446, Level = 60, Ability = 2, TID = 40217, SID = 00000, OTGender = 0, Gender = 0, IVs = new[] {31,20,20,20,20,20}, PID = 0x6200001F, }, // Munchlax
};
- internal static readonly EncounterTrade[] TradeGift_B2W2 =
+ internal static readonly EncounterTrade[] TradeGift_B2W2_Regular =
{
new EncounterTrade { Species = 548, Level = 20, Ability = 2, TID = 65217, SID = 00000, OTGender = 1, Gender = 1, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Timid, Version = GameVersion.B2, }, // Petilil
new EncounterTrade { Species = 546, Level = 20, Ability = 1, TID = 05720, SID = 00001, OTGender = 0, Gender = 0, IVs = new[] {20,20,20,20,31,20}, Nature = Nature.Modest, Version = GameVersion.W2, }, // Cottonee
@@ -650,6 +650,9 @@ private static void MarkG5Slots(ref EncounterArea[] Areas)
new EncounterTrade { Species = 479, Level = 60, Ability = 1, TID = 54673, SID = 00000, OTGender = 1, Gender = 2, IVs = new[] {20,20,20,20,20,31}, Nature = Nature.Calm, }, // Rotom
new EncounterTrade { Species = 424, Level = 40, Ability = 2, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {20,20,20,31,20,20}, Nature = Nature.Jolly, }, // Ambipom
new EncounterTrade { Species = 065, Level = 40, Ability = 1, TID = 17074, SID = 00001, OTGender = 1, Gender = 0, IVs = new[] {20,20,20,31,20,20}, Nature = Nature.Timid, }, // Alakazam
+ };
+ internal static readonly EncounterTrade[] TradeGift_B2W2_YancyCurtis =
+ {
// player is male
new EncounterTrade { Species = 052, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,},
new EncounterTrade { Species = 202, Level = 50, Ability = 4, TID = 10303, SID = 00000, OTGender = 1,},
@@ -677,6 +680,33 @@ private static void MarkG5Slots(ref EncounterArea[] Areas)
new EncounterTrade { Species = 327, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,},
new EncounterTrade { Species = 175, Level = 50, Ability = 4, TID = 54118, SID = 00000, OTGender = 0,},
};
+ internal static readonly string[] TradeOT_B2W2_F = {null, "ルリ", "Yancy", "Brenda", "Sabine", "Lilì", null, "Belinda", "루리"};
+ internal static readonly string[] TradeOT_B2W2_M = {null, "テツ", "Curtis", "Julien", "Markus", "Dadi", null, "Julián", "철권"};
+ internal static readonly string[][] TradeBW =
+ {
+ new string[0], // 0 - None
+ Util.GetStringList("tradebw", "ja"), // 1
+ Util.GetStringList("tradebw", "en"), // 2
+ Util.GetStringList("tradebw", "fr"), // 3
+ Util.GetStringList("tradebw", "it"), // 4
+ Util.GetStringList("tradebw", "de"), // 5
+ new string[0], // 6 - None
+ Util.GetStringList("tradebw", "es"), // 7
+ Util.GetStringList("tradebw", "ko"), // 8
+ };
+ internal static readonly string[][] TradeB2W2 =
+ {
+ new string[0], // 0 - None
+ Util.GetStringList("tradeb2w2", "ja"), // 1
+ Util.GetStringList("tradeb2w2", "en"), // 2
+ Util.GetStringList("tradeb2w2", "fr"), // 3
+ Util.GetStringList("tradeb2w2", "it"), // 4
+ Util.GetStringList("tradeb2w2", "de"), // 5
+ new string[0], // 6 - None
+ Util.GetStringList("tradeb2w2", "es"), // 7
+ Util.GetStringList("tradeb2w2", "ko"), // 8
+ };
+ internal static readonly EncounterTrade[] TradeGift_B2W2 = TradeGift_B2W2_Regular.Concat(TradeGift_B2W2_YancyCurtis).ToArray();
#endregion
#region Alt Slots
diff --git a/PKHeX.Core/Properties/Resources.Designer.cs b/PKHeX.Core/Properties/Resources.Designer.cs
index bf3dbba35..80ff6030f 100644
--- a/PKHeX.Core/Properties/Resources.Designer.cs
+++ b/PKHeX.Core/Properties/Resources.Designer.cs
@@ -17141,6 +17141,314 @@ internal class Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Yuriko
+ ///Shosuke
+ ///Hilbert
+ ///Maru
+ ///Lilo
+ ///Ursina
+ ///Ursina
+ ///Lilpe
+ ///Wolli
+ ///Brockoloss
+ ///Fluffi
+ ///Zapp
+ ///Pompom
+ ///Schnäuzi.
+ ///
+ internal static string text_tradeb2w2_de {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_de", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Calla
+ ///Cotton
+ ///Manny
+ ///Slick
+ ///Lillian
+ ///Diana
+ ///Diana
+ ///Petulia
+ ///Fluffee
+ ///Gigalith
+ ///Tangles
+ ///Bucky
+ ///Ambidexter
+ ///Beardy.
+ ///
+ internal static string text_tradeb2w2_en {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_en", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Lilly
+ ///Cotton
+ ///Manny
+ ///Slick
+ ///Lillian
+ ///Corina
+ ///Corina
+ ///Pettulip
+ ///Cotona
+ ///Gigalith
+ ///Tangles
+ ///Bucky
+ ///Ambidexter
+ ///Beardy.
+ ///
+ internal static string text_tradeb2w2_es {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_es", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Yuriko
+ ///Shosuke
+ ///Hilbert
+ ///Maru
+ ///Lilo
+ ///Ursina
+ ///Ursina
+ ///Tulipette
+ ///Jersey
+ ///Gigalithe
+ ///Toutouffe
+ ///GITS
+ ///Caudal
+ ///Stachemou.
+ ///
+ internal static string text_tradeb2w2_fr {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_fr", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Tulippa
+ ///Scotty
+ ///Urano
+ ///Zucco
+ ///Rolly
+ ///Nenè
+ ///Nenè
+ ///Petillin
+ ///Scoscò
+ ///Gigalith
+ ///Grogrò
+ ///Zapp
+ ///Pompom
+ ///Barbello.
+ ///
+ internal static string text_tradeb2w2_it {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_it", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to ユリコ
+ ///ショウスケ
+ ///ゲンゾウ
+ ///ツルマル
+ ///ユイ
+ ///ハツネ
+ ///ハツネ
+ ///チュりっぺ
+ ///メンメン
+ ///ギガイアス
+ ///フサフサ
+ ///バッキー
+ ///シッポ
+ ///おヒゲ.
+ ///
+ internal static string text_tradeb2w2_ja {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_ja", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 율리크
+ ///수천
+ ///건상
+ ///실마르
+ ///유이
+ ///초희
+ ///초희
+ ///치릴뿌잉
+ ///면면
+ ///기가이어스
+ ///북실북실
+ ///바킹
+ ///꼬리
+ ///수여미.
+ ///
+ internal static string text_tradeb2w2_ko {
+ get {
+ return ResourceManager.GetString("text_tradeb2w2_ko", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Lilili
+ ///Bauschi
+ ///Senilax
+ ///Grimli
+ ///Flumau
+ ///Rotoro
+ ///Papsat
+ ///Denise
+ ///Denise
+ ///Chester
+ ///Chester
+ ///Hilbert
+ ///Lilo
+ ///Hajo.
+ ///
+ internal static string text_tradebw_de {
+ get {
+ return ResourceManager.GetString("text_tradebw_de", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Lillil
+ ///Fluffee
+ ///Redeye
+ ///Blueeye
+ ///Minipete
+ ///Eeks
+ ///Gorge
+ ///Dye
+ ///Dye
+ ///Kyle
+ ///Kyle
+ ///Manny
+ ///Lillian
+ ///Ander.
+ ///
+ internal static string text_tradebw_en {
+ get {
+ return ResourceManager.GetString("text_tradebw_en", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Florina
+ ///Cotona
+ ///Mordiscos
+ ///Colmi
+ ///Saltirón
+ ///Tecno
+ ///Tripón
+ ///Geles
+ ///Geles
+ ///Bertín
+ ///Bertín
+ ///Dani
+ ///Juno
+ ///Nico.
+ ///
+ internal static string text_tradebw_es {
+ get {
+ return ResourceManager.GetString("text_tradebw_es", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Bulbébé
+ ///Cotontige
+ ///Siaboua
+ ///Siaméto
+ ///Patacrêpe
+ ///Triphaset
+ ///Grobidon
+ ///Denise
+ ///Denise
+ ///Chester
+ ///Chester
+ ///Hilbert
+ ///Lilo
+ ///Hajo.
+ ///
+ internal static string text_tradebw_fr {
+ get {
+ return ResourceManager.GetString("text_tradebw_fr", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Flò
+ ///Fiocco
+ ///Rossino
+ ///Bluetto
+ ///Ufino
+ ///Cric
+ ///Satollo
+ ///Bettina
+ ///Bettina
+ ///Aldo
+ ///Aldo
+ ///Urano
+ ///Luna
+ ///Tiziano.
+ ///
+ internal static string text_tradebw_it {
+ get {
+ return ResourceManager.GetString("text_tradebw_it", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to チュりん
+ ///モンモン
+ ///アカメ
+ ///アオメ
+ ///トビマル
+ ///ドッキー
+ ///まんぷく
+ ///アヤ
+ ///アヤ
+ ///ナオキ
+ ///ナオキ
+ ///ゲンゾウ
+ ///ユイ
+ ///フトシ.
+ ///
+ internal static string text_tradebw_ja {
+ get {
+ return ResourceManager.GetString("text_tradebw_ja", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 추링
+ ///솜솜
+ ///빨강눈
+ ///파랑눈
+ ///날돌이
+ ///독키
+ ///배빵빵
+ ///소영
+ ///소영
+ ///청수
+ ///청수
+ ///건상
+ ///유이
+ ///태사.
+ ///
+ internal static string text_tradebw_ko {
+ get {
+ return ResourceManager.GetString("text_tradebw_ko", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Salla
///Plaupa
diff --git a/PKHeX.Core/Properties/Resources.resx b/PKHeX.Core/Properties/Resources.resx
index ff1b308e2..0caf3b54f 100644
--- a/PKHeX.Core/Properties/Resources.resx
+++ b/PKHeX.Core/Properties/Resources.resx
@@ -1585,6 +1585,48 @@
..\Resources\text\gen3\text_ItemsG3_de.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+ ..\Resources\text\de\text_tradeb2w2_de.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\en\text_tradeb2w2_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\es\text_tradeb2w2_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\fr\text_tradeb2w2_fr.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\it\text_tradeb2w2_it.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\ja\text_tradeb2w2_ja.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\ko\text_tradeb2w2_ko.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\de\text_tradebw_de.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\en\text_tradebw_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\es\text_tradebw_es.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\fr\text_tradebw_fr.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\it\text_tradebw_it.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\ja\text_tradebw_ja.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+
+ ..\Resources\text\ko\text_tradebw_ko.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
..\Resources\text\de\text_tradedppt_de.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
diff --git a/PKHeX.Core/Resources/text/de/text_tradeb2w2_de.txt b/PKHeX.Core/Resources/text/de/text_tradeb2w2_de.txt
new file mode 100644
index 000000000..4cf80de31
--- /dev/null
+++ b/PKHeX.Core/Resources/text/de/text_tradeb2w2_de.txt
@@ -0,0 +1,14 @@
+Lilpe
+Wolli
+Brockoloss
+Fluffi
+Zapp
+Pompom
+Schnäuzi
+Yuriko
+Shosuke
+Hilbert
+Maru
+Lilo
+Ursina
+Ursina
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/de/text_tradebw_de.txt b/PKHeX.Core/Resources/text/de/text_tradebw_de.txt
new file mode 100644
index 000000000..786850ed0
--- /dev/null
+++ b/PKHeX.Core/Resources/text/de/text_tradebw_de.txt
@@ -0,0 +1,14 @@
+Lilili
+Bauschi
+Senilax
+Grimli
+Flumau
+Rotoro
+Papsat
+Denise
+Denise
+Chester
+Chester
+Hilbert
+Lilo
+Hajo
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/en/text_tradeb2w2_en.txt b/PKHeX.Core/Resources/text/en/text_tradeb2w2_en.txt
new file mode 100644
index 000000000..230db9d28
--- /dev/null
+++ b/PKHeX.Core/Resources/text/en/text_tradeb2w2_en.txt
@@ -0,0 +1,14 @@
+Petulia
+Fluffee
+Gigalith
+Tangles
+Bucky
+Ambidexter
+Beardy
+Calla
+Cotton
+Manny
+Slick
+Lillian
+Diana
+Diana
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/en/text_tradebw_en.txt b/PKHeX.Core/Resources/text/en/text_tradebw_en.txt
new file mode 100644
index 000000000..312b1ad8c
--- /dev/null
+++ b/PKHeX.Core/Resources/text/en/text_tradebw_en.txt
@@ -0,0 +1,14 @@
+Lillil
+Fluffee
+Redeye
+Blueeye
+Minipete
+Eeks
+Gorge
+Dye
+Dye
+Kyle
+Kyle
+Manny
+Lillian
+Ander
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/es/text_tradeb2w2_es.txt b/PKHeX.Core/Resources/text/es/text_tradeb2w2_es.txt
new file mode 100644
index 000000000..f3b2f1457
--- /dev/null
+++ b/PKHeX.Core/Resources/text/es/text_tradeb2w2_es.txt
@@ -0,0 +1,14 @@
+Pettulip
+Cotona
+Gigalith
+Tangles
+Bucky
+Ambidexter
+Beardy
+Lilly
+Cotton
+Manny
+Slick
+Lillian
+Corina
+Corina
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/es/text_tradebw_es.txt b/PKHeX.Core/Resources/text/es/text_tradebw_es.txt
new file mode 100644
index 000000000..bc90b77c8
--- /dev/null
+++ b/PKHeX.Core/Resources/text/es/text_tradebw_es.txt
@@ -0,0 +1,14 @@
+Florina
+Cotona
+Mordiscos
+Colmi
+Saltirón
+Tecno
+Tripón
+Geles
+Geles
+Bertín
+Bertín
+Dani
+Juno
+Nico
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/fr/text_tradeb2w2_fr.txt b/PKHeX.Core/Resources/text/fr/text_tradeb2w2_fr.txt
new file mode 100644
index 000000000..070fdd413
--- /dev/null
+++ b/PKHeX.Core/Resources/text/fr/text_tradeb2w2_fr.txt
@@ -0,0 +1,14 @@
+Tulipette
+Jersey
+Gigalithe
+Toutouffe
+GITS
+Caudal
+Stachemou
+Yuriko
+Shosuke
+Hilbert
+Maru
+Lilo
+Ursina
+Ursina
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/fr/text_tradebw_fr.txt b/PKHeX.Core/Resources/text/fr/text_tradebw_fr.txt
new file mode 100644
index 000000000..34aaec5e8
--- /dev/null
+++ b/PKHeX.Core/Resources/text/fr/text_tradebw_fr.txt
@@ -0,0 +1,14 @@
+Bulbébé
+Cotontige
+Siaboua
+Siaméto
+Patacrêpe
+Triphaset
+Grobidon
+Denise
+Denise
+Chester
+Chester
+Hilbert
+Lilo
+Hajo
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/it/text_tradeb2w2_it.txt b/PKHeX.Core/Resources/text/it/text_tradeb2w2_it.txt
new file mode 100644
index 000000000..42272bc7a
--- /dev/null
+++ b/PKHeX.Core/Resources/text/it/text_tradeb2w2_it.txt
@@ -0,0 +1,14 @@
+Petillin
+Scoscò
+Gigalith
+Grogrò
+Zapp
+Pompom
+Barbello
+Tulippa
+Scotty
+Urano
+Zucco
+Rolly
+Nenè
+Nenè
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/it/text_tradebw_it.txt b/PKHeX.Core/Resources/text/it/text_tradebw_it.txt
new file mode 100644
index 000000000..a494cd621
--- /dev/null
+++ b/PKHeX.Core/Resources/text/it/text_tradebw_it.txt
@@ -0,0 +1,14 @@
+Flò
+Fiocco
+Rossino
+Bluetto
+Ufino
+Cric
+Satollo
+Bettina
+Bettina
+Aldo
+Aldo
+Urano
+Luna
+Tiziano
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/ja/text_tradeb2w2_ja.txt b/PKHeX.Core/Resources/text/ja/text_tradeb2w2_ja.txt
new file mode 100644
index 000000000..c0364ea2e
--- /dev/null
+++ b/PKHeX.Core/Resources/text/ja/text_tradeb2w2_ja.txt
@@ -0,0 +1,14 @@
+チュりっぺ
+メンメン
+ギガイアス
+フサフサ
+バッキー
+シッポ
+おヒゲ
+ユリコ
+ショウスケ
+ゲンゾウ
+ツルマル
+ユイ
+ハツネ
+ハツネ
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/ja/text_tradebw_ja.txt b/PKHeX.Core/Resources/text/ja/text_tradebw_ja.txt
new file mode 100644
index 000000000..a47ccfbda
--- /dev/null
+++ b/PKHeX.Core/Resources/text/ja/text_tradebw_ja.txt
@@ -0,0 +1,14 @@
+チュりん
+モンモン
+アカメ
+アオメ
+トビマル
+ドッキー
+まんぷく
+アヤ
+アヤ
+ナオキ
+ナオキ
+ゲンゾウ
+ユイ
+フトシ
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/ko/text_tradeb2w2_ko.txt b/PKHeX.Core/Resources/text/ko/text_tradeb2w2_ko.txt
new file mode 100644
index 000000000..6e79bb659
--- /dev/null
+++ b/PKHeX.Core/Resources/text/ko/text_tradeb2w2_ko.txt
@@ -0,0 +1,14 @@
+치릴뿌잉
+면면
+기가이어스
+북실북실
+바킹
+꼬리
+수여미
+율리크
+수천
+건상
+실마르
+유이
+초희
+초희
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/ko/text_tradebw_ko.txt b/PKHeX.Core/Resources/text/ko/text_tradebw_ko.txt
new file mode 100644
index 000000000..ebd57d605
--- /dev/null
+++ b/PKHeX.Core/Resources/text/ko/text_tradebw_ko.txt
@@ -0,0 +1,14 @@
+추링
+솜솜
+빨강눈
+파랑눈
+날돌이
+독키
+배빵빵
+소영
+소영
+청수
+청수
+건상
+유이
+태사
\ No newline at end of file