public static void Main_Classes(string[] args) { ClassData[] information = DB.ReadAll <ClassData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\classData.txt"); // Dictionary<String, CharacterDataId> ids = new Dictionary<String, CharacterDataId>(); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(ClassDataId id, String text) { lines.Add(id.ToString(), new TransifexEntry() { Text = text.Replace(',', ',').Replace("⏎", Environment.NewLine), }); } foreach (var item in information) { Add(new ClassDataId(item.Id, nameof(item.DisplayName)), item.DisplayName.English); Add(new ClassDataId(item.Id, nameof(item.Description)), item.Description.English); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Classes.json"; StructuredJson.Write(gp, lines); }
public static void Main_EndingData(string[] args) { EndingData[] endingList = DB.ReadAll <EndingData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\EndingData.txt"); Dictionary <String, EndingDataId> ids = new Dictionary <String, EndingDataId>(); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(EndingDataId id, String text) { if (ids.TryGetValue(text, out EndingDataId knownId)) { lines.Add(id.ToString(), new TransifexEntry() { Text = "${" + knownId + "}", }); } else { lines.Add(id.ToString(), new TransifexEntry() { Text = text.Replace(',', ',').Replace("⏎", Environment.NewLine) .Replace("<#88aaff>", "{Blue}") .Replace("<#ffdd00>", "{Yellow}") .Replace("<#5eff00>", "{Green}") .Replace("<#ffffff>", "{White}") .Replace("<#ffffdd>", "{LightYellow}") .Replace("<#ddddff>", "{LightPurple}") .Replace("AGL", "{AGL}") .Replace("ATK", "{ATK}") .Replace("DEF", "{DEF}") .Replace("DEX", "{DEX}") .Replace("DMG", "{DMG}") .Replace("MAG", "{MAG}") .Replace("MGR", "{MGR}") .Replace("MOV", "{MOV}"), }); ids.Add(text, id); } } foreach (var data in endingList) { for (Int32 i = 0; i < 8; i++) { EndingDataId sceneKey = new EndingDataId(data.Id, i + 1); String english = data[i].English; Add(sceneKey, english); } } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Ending.json"; StructuredJson.Write(gp, lines); }
public static void Main_ScenarioInfo(string[] args) { ScenarioData[] information = DB.ReadAll <ScenarioData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\scenarioInfoData.txt"); Dictionary <String, ScenarioDataId> ids = new Dictionary <String, ScenarioDataId>(); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(ScenarioDataId id, String text, String comment) { if (ids.TryGetValue(text, out ScenarioDataId knownId)) { lines.Add(id.ToString(), new TransifexEntry() { Text = "${" + knownId + "}", Comment = comment }); } else { lines.Add(id.ToString(), new TransifexEntry() { Text = text.Replace(',', ',').Replace("⏎", Environment.NewLine), Comment = comment }); ids.Add(text, id); } } foreach (var item in information) { var context = $"{item.StageTitle.English} (Stage {item.StageNumber}, Chapter: {item.ChapterNumber})"; Add(new ScenarioDataId(item.Id, nameof(item.StageTitle)), item.StageTitle.English, context); Add(new ScenarioDataId(item.Id, nameof(item.StageProlog)), item.StageProlog.English, context); Add(new ScenarioDataId(item.Id, nameof(item.StageHint)), item.StageHint.English, context); Add(new ScenarioDataId(item.Id, nameof(item.VictoryCondition1)), item.VictoryCondition1.English, context); Add(new ScenarioDataId(item.Id, nameof(item.DefeatCondition1)), item.DefeatCondition1.English, context); Add(new ScenarioDataId(item.Id, nameof(item.VictoryCondition2)), item.VictoryCondition2.English, context); Add(new ScenarioDataId(item.Id, nameof(item.DefeatCondition2)), item.DefeatCondition2.English, context); Add(new ScenarioDataId(item.Id, nameof(item.PlayerArmyName)), item.PlayerArmyName.English, context); Add(new ScenarioDataId(item.Id, nameof(item.EnemyArmyName)), item.EnemyArmyName.English, context); Add(new ScenarioDataId(item.Id, nameof(item.FlagName1)), item.FlagName1.English, context); Add(new ScenarioDataId(item.Id, nameof(item.FlagName2)), item.FlagName2.English, context); Add(new ScenarioDataId(item.Id, nameof(item.FlagName3)), item.FlagName3.English, context); Add(new ScenarioDataId(item.Id, nameof(item.FlagName4)), item.FlagName4.English, context); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\ScenarioInfo.json"; StructuredJson.Write(gp, lines); }
public static void Main_GameWordList(string[] args) { GameWordData[] information = DB.ReadAll <GameWordData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\GameWordList.txt"); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); Dictionary <String, GameWordId> ids = new Dictionary <String, GameWordId>(); void Add(GameWordId id, String text) { if (ids.TryGetValue(text, out GameWordId knownId)) { lines.Add(id.ToString(), new TransifexEntry() { Text = "${" + knownId + "}", }); } else { lines.Add(id.ToString(), new TransifexEntry() { Text = text.Replace(',', ',').Replace("⏎", Environment.NewLine) .Replace("<#88aaff>", "{Blue}") .Replace("<#ffdd00>", "{Yellow}") .Replace("<#5eff00>", "{Green}") .Replace("<#ffffff>", "{White}") .Replace("<#ffffdd>", "{LightYellow}") .Replace("<#ddddff>", "{LightPurple}") .Replace("AGL", "{AGL}") .Replace("ATK", "{ATK}") .Replace("DEF", "{DEF}") .Replace("DEX", "{DEX}") .Replace("DMG", "{DMG}") .Replace("MAG", "{MAG}") .Replace("MGR", "{MGR}") .Replace("MOV", "{MOV}"), }); ids.Add(text, id); } } Int32 index = 0; foreach (var item in information) { Add(new GameWordId(index++), item.Text.English); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\GameWords.json"; StructuredJson.Write(gp, lines); }
public static void Main_Items(string[] args) { ItemData[] information = DB.ReadAll <ItemData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\itemData.txt"); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(ItemDataId id, String text, String comment) { lines.Add(id.ToString(), new TransifexEntry() { Text = text .Replace(',', ',') .Replace("⏎", Environment.NewLine) .Replace("<#88aaff>", "{Blue}") .Replace("<#ffdd00>", "{Yellow}") .Replace("<#ffffff>", "{White}") .Replace("AGL", "{AGL}") .Replace("ATK", "{ATK}") .Replace("DEF", "{DEF}") .Replace("DEX", "{DEX}") .Replace("DMG", "{DMG}") .Replace("MAG", "{MAG}") .Replace("MGR", "{MGR}") .Replace("MOV", "{MOV}"), Comment = comment }); } foreach (var item in information) { var context = item.Name.English; Add(new ItemDataId(item.Id, nameof(item.Name)), item.Name.English, context); Add(new ItemDataId(item.Id, nameof(item.Description)), item.Description.English, context); Add(new ItemDataId(item.Id, nameof(item.ShortDescription)), item.ShortDescription.English, context); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Items.json"; StructuredJson.Write(gp, lines); }
public static void Main_Magic(string[] args) { MagicData[] information = DB.ReadAll <MagicData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\magicData.txt"); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(MagicDataId id, String text) { lines.Add(id.ToString(), new TransifexEntry() { Text = text.Replace(',', ',').Replace("⏎", Environment.NewLine) .Replace("<#88aaff>", "{Blue}") .Replace("<#ffdd00>", "{Yellow}") .Replace("<#5eff00>", "{Green}") .Replace("<#ffffff>", "{White}") .Replace("<#ffffdd>", "{LightYellow}") .Replace("<#ddddff>", "{LightPurple}") .Replace("AGL", "{AGL}") .Replace("ATK", "{ATK}") .Replace("DEF", "{DEF}") .Replace("DEX", "{DEX}") .Replace("DMG", "{DMG}") .Replace("MAG", "{MAG}") .Replace("MGR", "{MGR}") .Replace("MOV", "{MOV}"), }); } foreach (var item in information) { Add(new MagicDataId(item.Id, nameof(item.Name)), item.Name.English); Add(new MagicDataId(item.Id, nameof(item.Description)), item.Description.English); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Magic.json"; StructuredJson.Write(gp, lines); }
public static void Main1(string[] args) { CharacterData[] information = DB.ReadAll <CharacterData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\charactorData.txt"); Dictionary <String, CharacterDataId> ids = new Dictionary <String, CharacterDataId>(); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(CharacterDataId id, String text) { if (ids.TryGetValue(text, out CharacterDataId knownId)) { lines.Add(id.ToString(), new TransifexEntry() { Text = "${" + knownId + "}", }); } else { lines.Add(id.ToString(), new TransifexEntry() { Text = text.Replace(',', ',').Replace("⏎", Environment.NewLine), }); ids.Add(text, id); } } for (var index = 0; index < information.Length; index++) { var item = information[index]; Add(new CharacterDataId(index), item.DisplayName.English); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Characters.json"; StructuredJson.Write(gp, lines); }
public static void Main(string[] args) { Dictionary <String, String> ids = new Dictionary <String, String>(); var lines = new OrderedDictionary <String, TransifexEntry>(); void Add(String id, String text, String comment) { String key = text + comment; if (ids.TryGetValue(key, out String knownId)) { lines.Add(id.ToString(), new TransifexEntry() { Text = "${" + knownId + "}", Comment = comment }); } else { lines.Add(id.ToString(), new TransifexEntry() { Text = text, Comment = comment }); ids.Add(key, id); } } Dictionary <String, String> names = new Dictionary <String, String>(); foreach (var item in ReadCharacterData()) { names[item.Name] = item.DisplayNameEnglish; names[item.DisplayNameJapanese] = item.DisplayNameEnglish; } var regexes = Tags.OrderByDescending(t => t.Length).Select(t => new KeyValuePair <String, String>(t.Replace("�", ""), t)).ToArray(); names.Add("一般兵", "Soldier"); names.Add("一般兵A", "Soldier A"); names.Add("侍女", "Maid"); names.Add("リアナ&ラーナ", "Liana & Lana"); names.Add("指揮官(ナイトマスター)", "Commander (Knight Master)"); names.Add("モンスター", "Monster"); names.Add("システムメッセージ", "System Message"); names.Add("0", "System"); // Langrisser I var path = @"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\eventMessage.txt"; foreach (var group in DB.EnumerateAll <EventMessage>(path).GroupBy(m => m.ScenarioNumber)) { lines.Clear(); ids.Clear(); foreach (var message in group) { Add(message.GetKey(), PrepareMessage(message, regexes), $"{names[message.CharacterName]} ({message.VoiceFile})"); } path = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\L1\L1_Stage_{group.Key:D3}.json"; StructuredJson.Write(path, lines); } // Langrisser II path = @"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\eventMessage2.txt"; foreach (var group in DB.EnumerateAll <EventMessage>(path).GroupBy(m => m.ScenarioNumber)) { lines.Clear(); ids.Clear(); foreach (var message in group) { Add(message.GetKey(), PrepareMessage(message, regexes), $"{names[message.CharacterName]} ({message.VoiceFile})"); } path = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\L2\L2_Stage_{group.Key:D3}.json"; StructuredJson.Write(path, lines); } }
public static void Main_GoddessDialog_00(string[] args) { var questions = DB.ReadAll <QuestionData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\question.txt"); var rewards = DB.ReadAll <QuestionReward>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\questionReward.txt"); var skills = DB.ReadAll <SkillData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\skillData.txt"); var items = DB.ReadAll <ItemData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\itemData.txt"); var questionsDic = questions.ToDictionary(d => d.Id); var skillsDic = skills.ToDictionary(s => s.ClassName); var itemsDic = items.ToLastKeyDictionary(s => s.NameJapanese); String[,] skillRewardA = new String[4, 4]; String[,] skillRewardB = new String[4, 4]; String[,] itemRewardA = new String[4, 4]; String[,] itemRewardB = new String[4, 4]; String[,] itemRewardC = new String[4, 4]; Int32 index = 0; foreach (var item in rewards) { if (item.Type.StartsWith("スキル")) { String[,] list = (item.Type.EndsWith("A")) ? skillRewardA : skillRewardB; for (Int32 i = 0; i < 4; i++) { var skillData = skillsDic[item[i]]; list[index % 4, i] = $"{skillData.NameEnglish}: {skillData.ShortDescriptionEnglish.Replace("<#ffdd00>", "").Replace("<#ffffff>", "")}"; } index++; } else if (item.Type.StartsWith("アイテム")) { // Not an error: A => A, C => B, E => C String[,] list = (item.Type.EndsWith("A")) ? itemRewardA : item.Type.EndsWith("C") ? itemRewardB : itemRewardC; for (Int32 i = 0; i < 4; i++) { var itemData = itemsDic[item[i]]; list[index % 4, i] = $"{itemData.NameEnglish}: {itemData.ShortDescriptionEnglish.Replace("<#ffdd00>", "").Replace("<#ffffff>", "")}"; } index++; } } var l1 = questionsDic[questionsDic[4].NextQuestion1]; var l2 = questionsDic[questions[5].NextQuestion1]; OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < questions.Length; i++) { var q = questions[i]; sb.AppendLine("|-"); sb.Append($"| colspan=\"3\" | [{q.Id:D2}] '''"); sb.Append(q.QuestionEnglish).AppendLine("'''"); sb.AppendLine("|-"); TransifexEntry goddessEntry = new TransifexEntry() { Text = q.QuestionEnglish.Replace(',', ',').Replace("⏎", Environment.NewLine), Comment = "Lucilis (Goddess)" }; var goddessKey = $"GoddessDialog_{q.Id:D2}"; lines.Add(goddessKey, goddessEntry); Int32 aIndex = 0; foreach (var a in q.Answers) { aIndex++; sb.Append("|| "); sb.Append(aIndex).Append(". ").Append(a.Answer.English).Append(' '); } sb.AppendLine(); sb.AppendLine("|-"); aIndex = 0; foreach (var a in q.Answers) { aIndex++; if (a.Answer.English == "-") { continue; } StringBuilder sb1 = new StringBuilder(); TransifexEntry answerEntry = new TransifexEntry() { Text = a.Answer.English.Replace(',', ',').Replace("⏎", Environment.NewLine) }; var answerKey = $"GoddessDialog_{q.Id:D2}_A{aIndex}"; lines.Add(answerKey, answerEntry); sb.Append("|| "); if (a.SkillA != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 1 ↓"); } if (a.SkillB != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 1 →"); } if (a.SkillC != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 2 ↓"); } if (a.SkillD != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 2 →"); } if (a.ItemA != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Weapon: Rank Up"); } if (a.ItemB != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Weapon: Magic Wand"); } if (a.ItemC != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Armor: Rank Up"); } if (a.ItemE == 1) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Accessory: Rank Up"); } if (a.ItemE > 1) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Accessory: Boots of Wind"); } if (a.ItemF != 0) { (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Accessory: Chunk of Gold"); } if (sb1.Length == 0) { sb1.Append("None"); } answerEntry.Comment = $"Reward: {sb1}"; sb.Append(sb1.ToString()); sb.Append(' '); } sb.AppendLine(); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\GoddessDialog.json"; StructuredJson.Write(gp, lines); Int32 SkillA = 0; Int32 SkillB = 0; Int32 SkillC = 0; Int32 SkillD = 0; Int32 ItemA = 0; Int32 ItemB = 0; Int32 ItemC = 0; Int32 ItemD = 0; Int32 ItemE = 0; Int32 ItemF = 0; Int32 Get(Int32 value) { if (value < 0) { return(0); } if (value > 3) { return(3); } return(value); } StringBuilder line = new StringBuilder(); StringBuilder result = new StringBuilder(); HashSet <String> uniqueSkills = new HashSet <String>(); HashSet <String> uniqueItems = new HashSet <String>(); HashSet <String> unique = new HashSet <String>(); Traverse(questionsDic[10]); void Traverse(QuestionData q) { line.AppendLine(q.QuestionEnglish); Int32 aIndex = 0; foreach (var a in q.Answers) { aIndex++; if (a.Next == 0) { continue; } line.Append('\t'); line.AppendLine(a.Answer.English); SkillA += a.SkillA; SkillB += a.SkillB; SkillC += a.SkillC; SkillD += a.SkillD; ItemA += a.ItemA; ItemB += a.ItemB; ItemC += a.ItemC; ItemD += a.ItemD; ItemE += a.ItemE; ItemF += a.ItemF; if (a.Next == -1) { var s1 = skillRewardA[Get(SkillA), Get(SkillB)]; var s2 = skillRewardB[Get(SkillC), Get(SkillD)]; var i1 = itemRewardA[Get(ItemA), Get(ItemB)]; var i2 = itemRewardB[Get(ItemC), Get(ItemD)]; var i3 = itemRewardC[Get(ItemE), Get(ItemF)]; uniqueSkills.Add(s1); uniqueSkills.Add(s2); uniqueItems.Add(i1); uniqueItems.Add(i2); uniqueItems.Add(i3); List <String> tmp = new List <String> { s1, s2, i1, i2, i3 }; tmp.Sort(); var reward = String.Join("", tmp); if (unique.Add(reward)) { result.AppendLine(Environment.NewLine); result.AppendLine("-----------------------------------------"); var value = line.ToString(); result.AppendLine(value); result.AppendLine(s1); result.AppendLine(s2); result.AppendLine(i1); result.AppendLine(i2); result.AppendLine(i3); } } else { Traverse(questionsDic[a.Next]); } line.Length -= a.Answer.English.Length + Environment.NewLine.Length + 1; SkillA -= a.SkillA; SkillB -= a.SkillB; SkillC -= a.SkillC; SkillD -= a.SkillD; ItemA -= a.ItemA; ItemB -= a.ItemB; ItemC -= a.ItemC; ItemD -= a.ItemD; ItemE -= a.ItemE; ItemF -= a.ItemF; } line.Length -= q.QuestionEnglish.Length + Environment.NewLine.Length; } String skills1 = String.Join(Environment.NewLine + "|-" + Environment.NewLine + "| ", uniqueSkills.OrderBy(s => s).Select(s => s.Replace(": ", " || "))); String items1 = String.Join(Environment.NewLine + "|-" + Environment.NewLine + "| ", uniqueItems.OrderBy(s => s).Select(s => s.Replace(": ", " || "))); }
public static void Main_InformationList(string[] args) { InfomationData[] information = DB.ReadAll <InfomationData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\InfomationList.txt"); Dictionary <String, SystemDataId> ids = new Dictionary <String, SystemDataId>(); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); foreach (var item in information) { SystemDataId id = new SystemDataId(item.Id, null); var messageId = id.ToString(); if (ids.TryGetValue(item.MessageEnglish, out var knownId)) { lines.Add(messageId, new TransifexEntry() { Text = "${" + knownId + "}", Context = SceneTranlsations[item.Scene] }); } else { lines.Add(messageId, new TransifexEntry() { Text = item.MessageEnglish.Replace(',', ',').Replace("⏎", Environment.NewLine), Context = SceneTranlsations[item.Scene] }); ids.Add(item.MessageEnglish, id); } for (Int32 i = 0; i < 4; i++) { SystemDataId buttonId = new SystemDataId(item.Id, i + 1); String english = item[i].English; var buttonKey = buttonId.ToString(); if (ids.TryGetValue(english, out knownId)) { lines.Add(buttonKey, new TransifexEntry() { Text = "${" + knownId + "}", Context = SceneTranlsations[item.Scene] }); } else { lines.Add(buttonKey, new TransifexEntry() { Text = english.Replace(',', ',').Replace("⏎", Environment.NewLine), Context = SceneTranlsations[item.Scene] }); ids.Add(english, buttonId); } } } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\System.json"; StructuredJson.Write(gp, lines); }
public static void Main_Tags(string[] args) { // HashSet<Char> chars = new HashSet<Char>(); // foreach (var filePath in Directory.EnumerateFiles(@"C:\Steam\steamapps\common\Langrisser I & II\Langrisser I & II_Data\StreamingAssets\Text\RU", "*.json")) // { // var entries = StructuredJson.Read(filePath); // foreach (var entry in entries) // { // foreach (var ch in entry.Value.Text) // { // chars.Add(ch); // } // } // } // // foreach (var ch in "【】%23:ABCDEFGHIJKLM■!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~×‥…※ⅠⅡЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЭЯабвгдежзийклмнопрстуфхцчшщъыьэюяё") // { // chars.Add(ch); // } // // var str = new String(chars.OrderBy(c => c).ToArray()).Trim(); OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>(); void Add(String tag, String replacement) { String id = $"Tag {tag}"; lines.Add(id, new TransifexEntry() { Context = tag, Text = replacement }); } Add("{Blue}", "<#88aaff>"); Add("{Yellow}", "<#ffdd00>"); Add("{Green}", "<#5eff00>"); Add("{White}", "<#ffffff>"); Add("{LightYellow}", "<#ffffdd>"); Add("{LightPurple}", "<#ddddff>"); Add("{AGL}", "AGL"); Add("{ATK}", "ATK"); Add("{DEF}", "DEF"); Add("{DEX}", "DEX"); Add("{DMG}", "DMG"); Add("{MAG}", "MAG"); Add("{MGR}", "MGR"); Add("{MOV}", "MOV"); foreach (var tag in Tags) { var replacement = tag.Replace("�", ""); var text = '{' + replacement + '}'; Add(text, replacement); } var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Tags.json"; StructuredJson.Write(gp, lines); }