Add ItemClothGroup, ItemColorOrder and ItemSortOrder

This commit is contained in:
TSR Berry
2026-05-19 23:25:39 +02:00
parent e333d9d165
commit b62ad47dca
4 changed files with 2134 additions and 2 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
namespace NHSE.Core;
/// <summary>
/// Color sort order for Items
/// Provided by Ninji, not taken from the game: https://discord.com/channels/701573691426996324/701575987854311434/720271351314907148
/// </summary>
public enum ItemColorOrder : byte
{
White,
Gray,
Black,
Red,
Pink,
Orange,
Yellow,
Green,
LightBlue,
Blue,
Purple,
Brown,
Beige,
Colorful,
None
}

View File

@@ -82,6 +82,7 @@ void DumpU(string fn, ushort[] ushorts, string dir = "bin")
DumpS("ItemKind.txt", GetPossibleEnum(pathBCSV, "ItemParam.bcsv", 0xFC275E86));
DumpS("ItemSize.txt", GetPossibleEnum(pathBCSV, "ItemParam.bcsv", 0xE06FB090));
DumpS("ItemMenuIcon.txt", GetPossibleEnum(pathBCSV, "ItemParam.bcsv", 0x348D7B06));
DumpS("ItemClothGroup.txt", GetNumberedEnumValues(pathBCSV, "ItemClothGroup.bcsv", 0x13AB5198, 0x54706054));
DumpS("PlantKind.txt", GetPossibleEnum(pathBCSV, "FgMainParam.bcsv", 0x48EF0398));
DumpS("TerrainKind.txt", GetNumberedEnumValues(pathBCSV, "FieldLandMakingUnitModelParam.bcsv", 0x39B5A93D, 0x54706054));
DumpS("BridgeKind.txt", GetNumberedEnumValues(pathBCSV, "StructureBridgeParam.bcsv", 0x39B5A93D, 0x54706054));
@@ -96,10 +97,13 @@ void DumpU(string fn, ushort[] ushorts, string dir = "bin")
DumpB("item_kind.bin", GetItemKindArray(pathBCSV));
DumpB("item_size.bin", GetItemSizeArray(pathBCSV));
DumpU("item_menuicon.bin", GetItemMenuIconArray(pathBCSV));
DumpU("item_cloth_group.bin", GetItemClothGroupArray(pathBCSV));
DumpB("item_sort_order.bin", GetItemSortOrderArray(pathBCSV));
DumpS("plants.txt", GetPlantedNames(pathBCSV));
DumpS("item_size_dictionary.txt", GetItemSizeDictionary(pathBCSV));
DumpS("item_remake.txt", GetItemRemakeDictionary(pathBCSV));
DumpS("itemRemakeInfo.txt", GetItemRemakeColors(pathBCSV));
DumpS("cloth_group_color_group_sort.txt", GetColorGroupSortList(pathBCSV));
}
public static void UpdateCSV(string pathBCSV, string dest, bool remapColumns = false, string delim = "\t")
@@ -850,4 +854,142 @@ string getArr(IEnumerable<BCSVFieldParam> arr)
yield return $"{{{vrd:0000}, new({vrd:0000}, {vid:00000}, {(sbyte)ct,2}, {vbc0}, {vbc1}, {vfc0}, {vfc1}, {(vfvf ? " true": "false")})}}, // {str[vid]}";
}
}
}
public static ushort[] GetItemClothGroupArray(string pathBCSV, string fn = "ItemParam.bcsv")
{
var bcsv = BCSVConverter.GetBCSV(pathBCSV, fn);
var dict = bcsv.GetFieldDictionary();
var fClothGroup = dict[0x690E3379];
var fID = dict[0x54706054];
var clothGroups = new Dictionary<ushort, ItemClothGroup>();
ushort max = 0;
for (int i = 0; i < bcsv.EntryCount; i++)
{
var id = bcsv.ReadValue(i, fID);
var ival = ushort.Parse(id);
var clothGroup = bcsv.ReadValue(i, fClothGroup).TrimEnd('\0');
if (clothGroup.StartsWith("0x"))
clothGroup = $"_{clothGroup}"; // enum name can't start with number
if (!Enum.TryParse<ItemClothGroup>(clothGroup, out var k))
throw new InvalidEnumArgumentException($"{clothGroup} is not a known enum value @ index {i}. Update the {nameof(ItemClothGroup)} enum index first.");
clothGroups.Add(ival, k);
if (ival > max)
max = ival;
}
ushort[] result = new ushort[max + 1];
foreach (var kvp in clothGroups)
result[kvp.Key] = (ushort)kvp.Value;
return result;
}
public static List<string> GetColorGroupSortList(string pathBCSV, string fn = "ItemClothGroup.bcsv")
{
var bcsv = BCSVConverter.GetBCSV(pathBCSV, fn);
var dict = bcsv.GetFieldDictionary();
var fLabel = dict[0x13AB5198];
var fUseColorGroupSort = dict[0x8D7F40E5];
var result = new List<string>();
for (int i = 0; i < bcsv.EntryCount; i++)
{
var label = bcsv.ReadValue(i, fLabel).TrimEnd('\0');
var useColorGroupSort = bcsv.ReadValue(i, fUseColorGroupSort);
var bUseColorGroupSort = byte.Parse(useColorGroupSort);
if (bUseColorGroupSort == 1)
result.Add($"{label},");
}
return result;
}
public static byte[] GetItemSortOrderArray(string pathBCSV, string fn = "ItemParam.bcsv")
{
var bcsv = BCSVConverter.GetBCSV(pathBCSV, fn);
var dict = bcsv.GetFieldDictionary();
var fClothGroup = dict[0x690E3379];
var fID = dict[0x54706054];
var fColor1 = dict[0xA6B1A7FD];
var fColor2 = dict[0xB7CCCD84];
var fColorGroupSortId = dict[0x02169DC7];
var itemSortOrder = new Dictionary<ushort, byte>();
var sortedClothGroups = new Dictionary<ItemClothGroup, Dictionary<ushort, Tuple<ItemColorOrder, ItemColorOrder, byte>>>();
ushort max = 0;
for (int i = 0; i < bcsv.EntryCount; i++)
{
var id = bcsv.ReadValue(i, fID);
var ival = ushort.Parse(id);
var clothGroup = bcsv.ReadValue(i, fClothGroup).TrimEnd('\0');
var color1 = bcsv.ReadValue(i, fColor1);
var color2 = bcsv.ReadValue(i, fColor2);
var colorGroupSortId = bcsv.ReadValue(i, fColorGroupSortId);
var bColorGroupSortId = byte.Parse(colorGroupSortId);
if (!Enum.TryParse<ItemClothGroup>(clothGroup, out var eClothGroup))
throw new InvalidEnumArgumentException($"{clothGroup} is not a known enum value @ index {i}. Update the {nameof(ItemClothGroup)} enum index first.");
if (!Enum.TryParse<ItemColorOrder>(color1, out var eColor1))
throw new InvalidEnumArgumentException($"{color1} is not a known enum value @ index {i}. Update the {nameof(ItemColorOrder)} enum index first.");
if (!Enum.TryParse<ItemColorOrder>(color2, out var eColor2))
throw new InvalidEnumArgumentException($"{color2} is not a known enum value @ index {i}. Update the {nameof(ItemColorOrder)} enum index first.");
if (ival > max)
max = ival;
if (eClothGroup == ItemClothGroup.None)
{
itemSortOrder.Add(ival, 0);
continue;
}
if (!sortedClothGroups.ContainsKey(eClothGroup))
sortedClothGroups.Add(eClothGroup, new());
sortedClothGroups[eClothGroup].Add(ival, new(eColor1, eColor2, bColorGroupSortId));
}
foreach (var kvp in sortedClothGroups)
{
WriteSortOrder(kvp.Value, kvp.Key.UsesColorGroupSort);
}
byte[] result = new byte[max + 1];
foreach (var kvp in itemSortOrder)
result[kvp.Key] = kvp.Value;
return result;
void WriteSortOrder(Dictionary<ushort, Tuple<ItemColorOrder, ItemColorOrder, byte>> items, bool usesColorGroupSort)
{
ushort[] sortedItems;
if (usesColorGroupSort)
{
sortedItems = items.OrderBy(kvp => kvp.Value.Item3).Select(kvp => kvp.Key).ToArray();
}
else
{
sortedItems = items
.OrderBy(kvp => kvp.Value.Item1)
.ThenBy(kvp => kvp.Value.Item2)
.Select(kvp => kvp.Key).ToArray();
}
for (byte i = 0; i < sortedItems.Length; i++)
{
itemSortOrder.Add(sortedItems[i], i);
}
}
}
}

View File

@@ -3603,6 +3603,7 @@
('TopsTexOnepieceRibNKohada' , 'こはだずし'),
('TopsTexOnepieceRibNSheep' , 'ひつじなふく'),
('TopsTexOnepieceRibNTuna' , 'まぐろずし'),
('TopsTexOnepieceSalopetteHUniform' , 'スポーツユニフォーム'),
('TopsTexOnepieceSalopetteLAllinone' , 'オールインワン'),
('TopsTexOnepieceSalopetteLHockey' , 'アイスホッケーのユニフォーム'),
('TopsTexOnepieceSalopetteLPsychedelic' , 'サイケなつなぎ'),
@@ -3840,6 +3841,7 @@
('TopsTexTopYshirtsHOkmotors' , 'OKモータースジャケット'),
('TopsTexTopYshirtsHPolo' , 'ポロシャツ'),
('TopsTexTopYshirtsHPolynesia' , 'ポリネシアンなアロハ'),
('TopsTexTopYshirtsHSchoolshirts' , 'はんそでのがくせいふく'),
('TopsTexTopYshirtsHTraffic' , 'こうつうゆうどうのふく'),
('TopsTexTopYshirtsHWhite' , 'はんそでワイシャツ'),
('TopsTexTopYshirtsLArgyle' , 'アーガイルベスト'),
@@ -3880,6 +3882,7 @@
('TopsTexTopYshirtsLQuilting' , 'キルティングジャケット'),
('TopsTexTopYshirtsLRiders' , 'ライダースジャケット'),
('TopsTexTopYshirtsLRugby' , 'ラガーシャツ'),
('TopsTexTopTshirtsLSchoolsailor' , 'ながそでセーラーふく'),
('TopsTexTopYshirtsLSki' , 'スキーウェア'),
('TopsTexTopYshirtsLSlimknit' , 'スリムニット'),
('TopsTexTopYshirtsLSportsjersey' , 'スポーツジャージ'),
@@ -5397,4 +5400,324 @@
('Flour' , '小麦粉'),
('Sugar' , '砂糖'),
('FlourWheatwhole' , '全粒粉'),
('FlourSugarbrown' , '黒糖'),
('FlourSugarbrown' , '黒糖'),
('AccessoryGlassDance' , 'ぶとうかいのかめん'),
('AccessoryGlassGauze' , 'めのガーゼ'),
('AccessoryGlassMasquerade' , 'マスカレードなマスク'),
('AccessoryGlassNeon' , 'ネオンのサングラス'),
('AccessoryGlassNomal' , 'シンプルなサングラス'),
('AccessoryGlassPiratespatch' , 'かいぞくのアイパッチ'),
('AccessoryGlassShamrock0' , 'シャムロックサングラス'),
('AccessoryGlassSolideyes' , 'いとをかしなメガネ'),
('AccessoryGlassSummer' , 'ひまわりのサングラス'),
('AccessoryGlassThurmontsquare' , 'スクエアサーモントめがね'),
('AccessoryGlassWellington' , 'まるぶちめがね'),
('AccessoryGlassmouthDiver' , 'シュノーケル'),
('AccessoryGlassmouthLuigi' , 'ルイージのひげ'),
('AccessoryGlassmouthMario' , 'マリオのひげ'),
('AccessoryGlassmouthNook' , 'たぬきかいはつシュノーケル'),
('AccessoryGlassmouthVenezia' , 'ヴェニスのカーニバルマスク'),
('AccessoryGlassmouthWario' , 'ワリオのひげ'),
('AccessoryMouthHalloween' , 'アニマルなつけばな'),
('AccessoryMouthPirates' , 'かいぞくのひげ'),
('AccessoryMouthSanta' , 'サンタのヒゲ'),
('AccessoryMouthSurgicalmask' , 'プリーツマスク'),
('AccessoryMouthTissue' , 'はなのつめもの'),
('AccessoryMouthTissuedouble' , 'りょうばなのつめもの'),
('BagBackpackBear' , 'くまのリュック'),
('BagBackpackDelivery' , 'デリバリーバッグ'),
('BagBackpackHalloween' , 'こあくまなつばさバッグ'),
('BagBackpackHarvest' , 'ぶどうのしゅうかくおけ'),
('BagBackpackInktank' , 'インクタンク'),
('BagBackpackJet' , 'ジェットパック'),
('BagBackpackMasterswordHylianshield' , 'ゆうしゃのけんとたて'),
('BagBackpackMusician' , 'がっきケース'),
('BagBackpackPanda' , 'パンダのリュック'),
('BagBackpackRandsel' , 'ランドセル'),
('BagBackpackSchoolbag' , 'スクールリュック'),
('BagBackpackStudent' , 'サッチェルバッグ'),
('BagBackpackTownCheck' , 'チェックのタウンリュック'),
('BagBackpackTownDot' , 'みずたまタウンリュック'),
('BagBackpackTownLeopard' , 'ヒョウがらタウンリュック'),
('BagBackpackTownPattern' , 'ボタニカルなタウンリュック'),
('BagBackpackTownSimple' , 'シンプルなタウンリュック'),
('BagBackpackTownSpace' , 'スペーシーなタウンリュック'),
('BagBackpackTownYumekawa' , 'ゆめかわタウンリュック'),
('BagBackpackTownZebra' , 'ゼブラなタウンリュック'),
('BagShoulderGamaguchi' , 'がまぐちポシェット'),
('BagShoulderGamaguchiAsian' , 'アジアンながまぐちポシェット'),
('BagShoulderGamaguchiBijou' , 'ビーズのがまぐちポシェット'),
('BagShoulderGamaguchiJapan' , 'わふうながまぐちポシェット'),
('BagShoulderNook' , 'たぬきかいはつポシェット'),
('BagShoulderSquare' , 'スクエアショルダーバッグ'),
('BagShoulderSquarePython' , 'パイソンなショルダーバッグ'),
('BagShoulderSquareZebra' , 'ゼブラなショルダーバッグ'),
('BagShoulderSword' , 'ソードホルダー'),
('BagShoulderTasukiprom' , 'プロムなたすき'),
('BagShoulderVine' , 'ツルざいくのポシェット'),
('BagShoulderYumekawa' , 'ゆめかわなポシェット'),
('BagShoulderYumekawaRibbon' , 'リボンなゆめかわポシェット'),
('BagShoulderYumekawaUnicorn' , 'ユニコーンなゆめかわポシェット'),
('BottomsTexPantsHalfRoomwear' , 'ルームウェアのハーフパンツ'),
('BottomsTexPantsHotDiapers' , 'おむつ'),
('BottomsTexPantsNormalCloth' , 'ぞうきんがけのズボン'),
('BottomsTexPantsNormalHylia' , 'ハイリアのズボン'),
('BottomsTexPantsNormalInkling' , 'インクリングのボトムス'),
('BottomsTexPantsNormalPirates' , 'かいぞくのズボン'),
('BottomsTexPantsNormalSanta' , 'サンタのズボン'),
('BottomsTexPantsNormalSlackspattern' , 'パイソンがらスラックス'),
('BottomsTexPantsWideSlacksteacher' , 'バラがらスラックス'),
('BottomsTexPantsWideStudent' , 'チェックのがくせいズボン'),
('BottomsTexSkirtAlineStudent' , 'チェックのがくせいスカート'),
('BottomsTexSkirtBoxTeacher' , 'バラがらスカート'),
('BottomsTexSkirtLongRubber' , 'ゴムのまえかけ'),
('CapBangsCinnamoroll' , 'シナモロールなぼうし'),
('CapBangsMymelody' , 'マイメロディなずきん'),
('CapBangsPrevention' , 'ぼうさいずきん'),
('CapBangsReindeer' , 'トナカイのぼうし'),
('CapBangsWinter' , 'みみあてつきニットぼう'),
('CapCostumeHygiene' , 'えいせいぼう'),
('CapCostumeMoss' , 'ヒカリゴケのかぶりもの'),
('CapFullfaceBoss' , 'つよそうなかぶと'),
('CapFullfaceHalloween' , 'パンプキングフェイス'),
('CapFullfaceHalloweenhood' , 'まほうスクールのフード'),
('CapFullfaceKingtut' , 'ツタンカーメン'),
('CapHatAuctioncap' , 'セリのぼうし'),
('CapHatBandage' , 'あたまのほうたい'),
('CapHatCloth' , 'ぞうきんがけのバンダナ'),
('CapHatCocklogo' , 'ロゴいりコックぼう'),
('CapHatCrewcap' , 'フードショップのぼうし'),
('CapHatHalloween' , 'まほうつかいのストライプぼう'),
('CapHatHalloweenround' , 'ハデなアニマルまるみみぼう'),
('CapHatHalloweentriangle' , 'ハデなアニマルさんかくみみぼう'),
('CapHatHuntingsimple' , 'むじのハンチング'),
('CapHatKitty' , 'ハローキティなぼうし'),
('CapHatLuigi' , 'ルイージのぼうし'),
('CapHatLuminousbandana' , 'エスニックなターバン'),
('CapHatMario' , 'マリオのぼうし'),
('CapHatMarket' , 'ペーパーキャップ'),
('CapHatMoss' , 'ヒカリゴケのとんがりぼうし'),
('CapHatPaper' , 'しんぶんしのかぶと'),
('CapHatPhrygian' , 'フリジアぼう'),
('CapHatPirate' , 'かいぞくのぼうし'),
('CapHatPiratesbandana' , 'かいぞくのバンダナ'),
('CapHatSafetyhatlight' , 'ライトつきヘルメット'),
('CapHatSanta' , 'サンタのぼうし'),
('CapHatSchoollunch' , 'きゅうしょくぼう'),
('CapHatShamrock0' , 'シャムロックハット'),
('CapHatSteampunk' , 'スチームパンクなぼうし'),
('CapHatTrain' , 'しゃしょうさんのぼうし'),
('CapHatTriangleHotel' , 'ホテルのバンダナ'),
('CapHatTrianglesimple' , 'むじのさんかくきん'),
('CapHatVine' , 'ツルざいくのぼうし'),
('CapHatWario' , 'ワリオのぼうし'),
('CapMaskMajora' , 'ムジュラのかめん'),
('CapMaskOgre' , 'オニのおめん'),
('CapMaskOkame' , 'おかめのおめん'),
('CapOrnamentAAntenna' , 'ロボのアンテナ'),
('CapOrnamentAKankanbo' , 'ちいさなカンカンぼう'),
('CapOrnamentAParty' , 'ちいさめパーティーハット'),
('CapOrnamentAPeach' , 'ピーチひめのかんむり'),
('CapOrnamentCCrownprom' , 'プロムなクラウン'),
('CapOrnamentCKeroppi' , 'けろけろけろっぴなかみかざり'),
('CapOrnamentCLuminouscorolla' , 'ひかるはなかんむり'),
('CapOrnamentCMermaid' , 'マーメイドなティアラ'),
('CapOrnamentCOrnament' , 'オーナメントのかんむり'),
('CapOrnamentCPirate' , 'かいぞくのおたからおうかん'),
('CapOrnamentCTiaraprom' , 'プロムなティアラ'),
('CapOrnamentCTwistedheadband' , 'ねじりはちまき'),
('CapOrnamentCVine' , 'ツルのかんむり'),
('CapOrnamentFBallband' , 'ひかるボールアクセサリー'),
('CapOrnamentFFlowerband' , 'ひかるはなのアクセサリー'),
('CapOrnamentFHalloween' , 'こあくまなツノ'),
('CapOrnamentFHeartband' , 'ひかるハートアクセサリー'),
('CapOrnamentFMoss' , 'ヒカリゴケのカチューシャ'),
('CapOrnamentFStarband0' , 'ひかるスターアクセサリー'),
('CapOrnamentLKikilala' , 'キキ&ララなかみかざり'),
('CapOrnamentLPlumeria' , 'プルメリアのかみかざり'),
('CapOrnamentSalmonBaby' , 'コジャケのカチューシャ'),
('CapOrnamentTSambaPink_' , 'カーニバルなかみかざり'),
('CapOrnamentTri' , 'トリィのカチューシャ'),
('CapWigChampion' , 'えいけつのかみ'),
('CapWigInkling' , 'インクリングのあたま'),
('CapWigLink' , 'リンクのぼうし'),
('CapWigOctling' , 'オクトリングのあたま'),
('CapWigPank' , 'パンクヘアーなウィッグ'),
('CapWigPurin' , 'ポムポムプリンなあたま'),
('CapWigRibbon' , 'リボンつきウィッグ'),
('CapWigTsunokakushi' , 'つのかくし'),
('CapWigZelda' , 'こだいのひめぎみのかみ'),
('ShoesHighcutHalloween' , 'まほうつかいのブーツ'),
('ShoesKneeCast' , 'ギプス'),
('ShoesKneeForcereBoots' , 'パワーリセットHi'),
('ShoesKneeHylia' , 'ハイリアのブーツ'),
('ShoesKneeMymelody' , 'マイメロディなブーツ'),
('ShoesKneePirates' , 'かいぞくのブーツ'),
('ShoesKneePurin' , 'ポムポムプリンなブーツ'),
('ShoesKneeReplica' , 'ヒーローブーツレプリカ'),
('ShoesLowcutBeans' , 'ピンクビーンズ'),
('ShoesLowcutBeansCyan' , 'シアンビーンズ'),
('ShoesLowcutCinnamoroll' , 'シナモロールなスニーカー'),
('ShoesLowcutDanceshoes' , 'ダンスシューズ'),
('ShoesLowcutHalloween' , 'ハデなアニマルきぐるみブーツ'),
('ShoesLowcutKeroppi' , 'けろけろけろっぴなブーツ'),
('ShoesLowcutKikilala' , 'キキ&ララなストラップシューズ'),
('ShoesLowcutKitty' , 'ハローキティなくつ'),
('ShoesLowcutLuigi' , 'ルイージのくつ'),
('ShoesLowcutMario' , 'マリオのくつ'),
('ShoesLowcutMermaid' , 'マーメイドなくつ'),
('ShoesLowcutNomalpumps' , 'シンプルなパンプス'),
('ShoesLowcutPeach' , 'ピーチひめのくつ'),
('ShoesLowcutShamrock0' , 'シャムロックシューズ'),
('ShoesLowcutTakumislipper' , 'タクミライフのスリッパ'),
('ShoesLowcutWario' , 'ワリオのくつ'),
('ShoesSandalTakumi' , 'タクミライフのサンダル'),
('ShoesSandalZelda' , 'こだいのひめぎみのサンダル'),
('SocksTexBandage' , 'ひざのばんそうこう'),
('SocksTexHalloween' , 'ボーダータイツ'),
('SocksTexKeroppi' , 'けろけろけろっぴなハイソックス'),
('SocksTexKikilala' , 'キキ&ララなソックス'),
('SocksTexProtector' , 'ひざあて'),
('ToolBagBasket' , 'かごバッグ'),
('ToolBagBasketborder' , 'ボーダーがらかごバッグ'),
('ToolBagBasketdiagram' , 'ダイヤがらかごバッグ'),
('ToolBagEco' , 'やさいがらエコバッグ'),
('ToolBagEcobread' , 'パンがらエコバッグ'),
('ToolBagEcofish' , 'おさかながらエコバッグ'),
('ToolBagEcoflower' , 'はながらエコバッグ'),
('ToolBagFuroshiki' , 'ふろしき'),
('ToolBagLeather' , 'レザーのハンドバッグ'),
('ToolBagPaper' , 'ロゴいりかみぶくろ'),
('ToolBagPaperelectric' , 'でんきやのかみぶくろ'),
('ToolBagPaperfashion' , 'アパレルショップのかみぶくろ'),
('ToolBagPaperflower' , 'デパートのかみぶくろ'),
('ToolBagSecond' , 'セカンドバッグ'),
('ToolBagTote' , 'シンプルトートバッグ'),
('ToolBagTotecamouflage' , 'めいさいトートバッグ'),
('ToolBagToteflower' , 'こばながらトートバッグ'),
('ToolBagTotelogo' , 'ロゴいりトートバッグ'),
('TopsTexMarinesuitNormalLNook' , 'たぬきかいはつマリンスーツ'),
('TopsTexMarinesuitNormalLRashguard' , 'はっぱがらマリンスーツ'),
('TopsTexMarinesuitNormalNGreco' , 'ボーダーのマリンスーツ'),
('TopsTexOnepieceAlineHCafecute' , 'カフェのワンピースユニフォーム'),
('TopsTexOnepieceAlineHKikilala' , 'キキ&ララなワンピース'),
('TopsTexOnepieceAlineHUniform' , 'タクミライフのムームー'),
('TopsTexOnepieceAlineLKitty' , 'ハローキティなワンピース'),
('TopsTexOnepieceAlineLMineru' , 'ミネルのふく'),
('TopsTexOnepieceAlineLPurin' , 'ポムポムプリンなセットアップ'),
('TopsTexOnepieceAlongHTakumi' , 'タクミライフのロングワンピース'),
('TopsTexOnepieceAlongLHalloween' , 'パンプキングローブ'),
('TopsTexOnepieceAlongLPirates' , 'かいぞくのおたからローブ'),
('TopsTexOnepieceAlongNMermaiddress' , 'マーメイドなおさかなドレス'),
('TopsTexOnepieceBalloonHMymelody' , 'マイメロディなワンピース'),
('TopsTexOnepieceBalloonHPirate' , 'かいぞくのワンピース'),
('TopsTexOnepieceBalloonHSteampunk' , 'スチームパンクなワンピース'),
('TopsTexOnepieceBalloonLHalloween' , 'まほうつかいのドレス'),
('TopsTexOnepieceBalloonNBubble' , 'バブルドレス'),
('TopsTexOnepieceBalloonemmHMoss' , 'ヒカリゴケのバルーンドレス'),
('TopsTexOnepieceBlongLMoroccan' , 'モロッカンなワンピース'),
('TopsTexOnepieceBlongNSlip' , 'スリップドレス'),
('TopsTexOnepieceBlongNZelda' , 'こだいのひめぎみのふく'),
('TopsTexOnepieceBoxNSamba' , 'カーニバルなワンピース'),
('TopsTexOnepieceBoxNSequins' , 'スパンコールのワンピース'),
('TopsTexOnepieceBoxNTakumi' , 'タクミライフのそでなしワンピ'),
('TopsTexOnepieceDressHPeach' , 'ピーチひめのドレス'),
('TopsTexOnepieceDressLMaid' , 'メイドのロングワンピース'),
('TopsTexOnepieceDressNMermaid' , 'マーメイドなプリンセスドレス'),
('TopsTexOnepieceKimonoLCrestedWhite' , 'しろいもんつきはかま'),
('TopsTexOnepieceKimonoLPurewhite' , 'しろむく'),
('TopsTexOnepieceKimonoLSamurai' , 'さむらいのはかま'),
('TopsTexOnepieceKimonoLWeavermen' , 'ひこぼしのふく'),
('TopsTexOnepieceKimonoLWeaverwomen' , 'おりひめのふく'),
('TopsTexOnepieceOverallHAerobics' , 'たぬきかいはつレオタード'),
('TopsTexOnepieceOverallHWario' , 'ワリオのふく'),
('TopsTexOnepieceOverallLColorsuits' , 'カラータキシード'),
('TopsTexOnepieceOverallLHalloween' , 'ハデなアニマルきぐるみ'),
('TopsTexOnepieceOverallLHaramaki' , 'はだぎセット'),
('TopsTexOnepieceOverallLHygiene' , 'えいせいふく'),
('TopsTexOnepieceOverallLOgre' , 'オニのふく'),
('TopsTexOnepieceOverallLPirates0' , 'かいぞくのふく'),
('TopsTexOnepieceOverallLReindeer' , 'トナカイなふく'),
('TopsTexOnepieceOverallNVine' , 'ツルのふく'),
('TopsTexOnepieceRibLDark' , 'リボン&ハートなニットワンピ'),
('TopsTexOnepieceRibLTakumi' , 'タクミライフのロングダウン'),
('TopsTexOnepieceRobeLHalloween' , 'まほうスクールのローブ'),
('TopsTexOnepieceSalopetteHKeroppi' , 'けろけろけろっぴなセットアップ'),
('TopsTexOnepieceSalopetteHUniform' , 'スポーツユニフォーム'),
('TopsTexOnepieceSalopetteLCarnival' , 'カーニバルなコスチューム'),
('TopsTexOnepieceSalopetteLHalloween' , 'ボロボロなふく'),
('TopsTexOnepieceSalopetteLLuigi' , 'ルイージのふく'),
('TopsTexOnepieceSalopetteLMario' , 'マリオのふく'),
('TopsTexOnepieceSalopetteLShamrock0' , 'シャムロックスーツ'),
('TopsTexOnepieceSalopetteemmLMoss' , 'ヒカリゴケのぜんしんスーツ'),
('TopsTexTopCoatH' , 'フードショップのユニフォーム'),
('TopsTexTopCoatHCloth' , 'ぞうきんがけエプロン'),
('TopsTexTopCoatHGoyokiki' , 'ごようききのきもの'),
('TopsTexTopCoatHHawaiianapron' , 'ハワイアンがらエプロン'),
('TopsTexTopCoatLBattle' , 'せんしのよろい'),
('TopsTexTopCoatLCafecool' , 'カフェのエプロン'),
('TopsTexTopCoatLChampion' , 'えいけつのふく'),
('TopsTexTopCoatLCook' , 'コックコート'),
('TopsTexTopCoatLDelivery' , 'デリバリージャケット'),
('TopsTexTopCoatLFather' , 'ちちのひサンキューエプロン'),
('TopsTexTopCoatLJapanesestyle' , 'わふうなユニフォーム'),
('TopsTexTopCoatLLink' , 'リンクのふく'),
('TopsTexTopCoatLPirate' , 'かいぞくのコート'),
('TopsTexTopCoatLReplica' , 'ヒーロースーツレプリカ'),
('TopsTexTopCoatLSanta' , 'サンタのジャケット'),
('TopsTexTopCoatLSchoollunch' , 'きゅうしょくエプロン'),
('TopsTexTopCoatLTrain' , 'しゃしょうさんのジャケット'),
('TopsTexTopCoatLWhitecoatDirty' , 'やぶれたはくい'),
('TopsTexTopCoatLWindbreaker' , 'ウインドブレーカー'),
('TopsTexTopCoatNTulin' , 'チューリのふく'),
('TopsTexTopOuterLCardiganribbon' , 'カーディガンのがくせいふく'),
('TopsTexTopOuterLHotel' , 'ホテルのカーディガン・ブルー'),
('TopsTexTopOuterLHotelB' , 'ホテルのカーディガン・オレンジ'),
('TopsTexTopOuterLIkasweat' , 'イカバッテンスウェット'),
('TopsTexTopOuterLNook' , 'たぬきかいはつセーター'),
('TopsTexTopOuterLTakoroka' , 'ヤコナイロンヴィンテージ'),
('TopsTexTopOuterLTakumijacket' , 'タクミライフのダウンジャケット'),
('TopsTexTopPuffHCinnamoroll' , 'シナモロールなパフブラウス'),
('TopsTexTopTshirtsHBib' , 'シリコンスタイつきベビーシャツ'),
('TopsTexTopTshirtsHFuka' , 'フウカのふく'),
('TopsTexTopTshirtsHHerorobot' , 'ヒーローロボTシャツ'),
('TopsTexTopTshirtsHHotel' , 'ホテルのTシャツ・ブルー'),
('TopsTexTopTshirtsHHotelB' , 'ホテルのTシャツ・ホワイト'),
('TopsTexTopTshirtsHKanjipassion' , 'ねっけつかんじTシャツ'),
('TopsTexTopTshirtsHKikilala' , 'キキ&ララなTシャツ'),
('TopsTexTopTshirtsHKitty' , 'ハローキティなTシャツ'),
('TopsTexTopTshirtsHLegoHead' , 'LEGOミニフィギュアシャツ'),
('TopsTexTopTshirtsHLegoLogo' , 'LEGOロゴシャツ'),
('TopsTexTopTshirtsHLegoblock' , 'LEGOブロックシャツ'),
('TopsTexTopTshirtsHPurin' , 'ポムポムプリンなTシャツ'),
('TopsTexTopTshirtsHRoomwear' , 'ルームウェアのシャツ'),
('TopsTexTopTshirtsHTakumi' , 'タクミライフのTシャツ'),
('TopsTexTopTshirtsHTomatina' , 'トマティーナTシャツ'),
('TopsTexTopTshirtsHTrishred' , 'サキイカホワイト'),
('TopsTexTopTshirtsHUtsuho' , 'ウツホのふく'),
('TopsTexTopTshirtsLSchoolsailor' , 'ながそでセーラーふく'),
('TopsTexTopTshirtsNKeroppi' , 'けろけろけろっぴなノースリーブ'),
('TopsTexTopTshirtsNPendant' , 'いきなタンクトップ'),
('TopsTexTopTshirtsNTakumitanktop' , 'タクミライフのタンクトップ'),
('TopsTexTopTshirtsNTanktopdirty' , 'よごれたタンクトップ'),
('TopsTexTopTshirtsemmLDjkk' , 'DJ K.Kのロゴシャツ'),
('TopsTexTopTshirtsemmNLayered' , 'エスニックなカットソー'),
('TopsTexTopTshirtsemmNTakumi' , 'タクミライフのイベントシャツ'),
('TopsTexTopYshirtsHHotel' , 'ホテルのアロハ・ブルー'),
('TopsTexTopYshirtsHHotelB' , 'ホテルのアロハ・オレンジ'),
('TopsTexTopYshirtsHMarket' , 'ショップのユニフォームシャツ'),
('TopsTexTopYshirtsHMymelody' , 'マイメロディなシャツ'),
('TopsTexTopYshirtsHSchoolshirts' , 'はんそでのがくせいふく'),
('TopsTexTopYshirtsHTakumi' , 'タクミライフのはんそでシャツ'),
('TopsTexTopYshirtsHTowel' , 'タオルかけシャツ'),
('TopsTexTopYshirtsHUniform' , 'タクミライフのアロハシャツ'),
('TopsTexTopYshirtsLBlazerknit' , 'ネクタイのがくせいふく'),
('TopsTexTopYshirtsLBlazerribbon' , 'リボンのがくせいふく'),
('TopsTexTopYshirtsLCinnamoroll' , 'シナモロールなジャケット'),
('TopsTexTopYshirtsLJacketpattern' , 'パイソンがらジャケット'),
('TopsTexTopYshirtsLJacketteacher' , 'バラがらジャケット'),
('TopsTexTopYshirtsLLayeredpolo' , 'かさねぎポロシャツ'),
('TopsTexTopYshirtsLOpenjersey' , 'まえあきジャージ'),
('TopsTexTopYshirtsLSeniorvest' , 'チェックのニットベスト'),
('TopsTexTopYshirtsLTakumisuit' , 'タクミライフのジャケット'),
('TopsTexTopYshirtsLUniformgilet' , 'ストライプのベストつきシャツ'),