diff --git a/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs b/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs index 77a7c1ac2..53fef50de 100644 --- a/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs +++ b/PKHeX.Core/Legality/Localization/LegalityCheckLocalization.cs @@ -164,7 +164,7 @@ public sealed class LegalityCheckLocalization public string FormEternalInvalid { get; set; } = "Invalid Eternal Flower encounter."; public string FormInvalidGame { get; set; } = "Form cannot be obtained in origin game."; public string FormInvalidNature { get; set; } = "Form cannot have this nature."; - public string FormInvalidRange { get; set; } = "Form Count is out of range. Expected <= {0}, got {1}."; + public string FormInvalidRange_01 { get; set; } = "Form Count is out of range. Expected <= {0}, got {1}."; public string FormItem { get; set; } = "Held item matches Form."; public string FormItemInvalid { get; set; } = "Held item does not match Form."; public string FormParty { get; set; } = "Form cannot exist outside of Party."; @@ -408,7 +408,7 @@ public sealed class LegalityCheckLocalization public string EncTradeShouldHaveEvolvedToSpecies_0 { get; set; } = "Trade Encounter should have evolved to species: {0}."; public string EncGiftLanguageNotDistributed { get; set; } = "Gift Encounter was never distributed with this language."; public string EncGiftRegionNotDistributed { get; set; } = "Gift Encounter was never distributed to this Console Region."; - public string FormInvalidRangeLEQ_0 { get; set; } = "Form Count is out of range. Expected <= {0}, got {1}."; + public string FormInvalidRangeLEQ_0F { get; set; } = "Form Count is out of range. Expected <= {0}, got {1}."; public string MovesShouldMatchRelearnMoves { get; set; } = "Moves should exactly match Relearn Moves."; public string MemoryStatEnjoyment_0 { get; set; } = "Enjoyment should be {0}."; public string MemoryStatFullness_0 { get; set; } = "Fullness should be {0}."; diff --git a/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs b/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs index 43e0ad8de..18df92e4c 100644 --- a/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs +++ b/PKHeX.Core/Legality/Localization/LegalityCheckResultCodeExtensions.cs @@ -142,7 +142,6 @@ public static class LegalityCheckResultCodeExtensions FormEternalInvalid => localization.FormEternalInvalid, FormInvalidGame => localization.FormInvalidGame, FormInvalidNature => localization.FormInvalidNature, - FormInvalidRange_0 => localization.FormInvalidRange, FormItemMatches => localization.FormItem, FormItemInvalid => localization.FormItemInvalid, FormParty => localization.FormParty, @@ -207,7 +206,7 @@ public static class LegalityCheckResultCodeExtensions FatefulMystery => localization.FatefulMystery, FatefulMysteryMissing => localization.FatefulMysteryMissing, FavoriteMarkingUnavailable => localization.FavoriteMarkingUnavailable, - FormInvalidRangeLEQ_0 => localization.FormInvalidRangeLEQ_0, + FormInvalidRangeLEQ_0F => localization.FormInvalidRangeLEQ_0F, G1CatchRateChain => localization.G1CatchRateChain, G1CatchRateEvo => localization.G1CatchRateEvo, G1CatchRateItem => localization.G1CatchRateItem, diff --git a/PKHeX.Core/Legality/Localization/LegalityLocalizationContext.cs b/PKHeX.Core/Legality/Localization/LegalityLocalizationContext.cs index d8a5ea776..ca869fa47 100644 --- a/PKHeX.Core/Legality/Localization/LegalityLocalizationContext.cs +++ b/PKHeX.Core/Legality/Localization/LegalityLocalizationContext.cs @@ -96,8 +96,8 @@ private string GetInternalString(CheckResult chk) private string GetMemory(CheckResult chk, string template, LegalityCheckResultCode code) { - if (code is < FirstMemoryWithValue) - return string.Format(template, chk.Value); + if (code < FirstMemoryWithValue) + return string.Format(template, GetTrainer(chk.Argument)); if (code is MemoryArgBadItem_H1) return string.Format(template, GetTrainer(chk.Argument), GetSpeciesName(chk.Argument2)); if (code is MemoryArgBadMove_H1) @@ -111,8 +111,8 @@ private string GetMemory(CheckResult chk, string template, LegalityCheckResultCo { < FirstComplex => format, // why are you even here? RibbonsInvalid_A => string.Format(format, GetRibbonMessage()), - WordFilterFlaggedPattern_01 => string.Format(format, (WordFilterType)chk.Argument, WordFilter.GetPattern((WordFilterType)chk.Argument, chk.Argument2)), - WordFilterInvalidCharacter_0 => string.Format(format, chk.Argument.ToString("X4")), + WordFilterFlaggedPattern_01 => string.Format(format, WordFilter.GetPattern((WordFilterType)chk.Argument, chk.Argument2), (WordFilterType)chk.Argument), + WordFilterInvalidCharacter_0 => string.Format(format, chk.Argument, chk.Argument.ToString("X4")), AwakenedStatGEQ_01 => string.Format(format, chk.Argument, GetStatName(chk.Argument2)), GanbaruStatLEQ_01 => string.Format(format, chk.Argument, GetStatName(chk.Argument2)), @@ -128,6 +128,7 @@ private string GetMemory(CheckResult chk, string template, LegalityCheckResultCo StoredSlotSourceInvalid_0 => string.Format(format, (StorageSlotSource)chk.Argument), HintEvolvesToRareForm_0 => string.Format(format, chk.Argument == 1), + FormInvalidRangeLEQ_0F => string.Format(format, chk.Argument, Analysis.Entity.Form), OTLanguageShouldBe_0or1 => string.Format(format, GetLanguageName(chk.Argument), GetLanguageName(chk.Argument2), GetLanguageName(Analysis.Entity.Language)), diff --git a/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs b/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs index c75958857..8d99bf8de 100644 --- a/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs +++ b/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs @@ -379,8 +379,6 @@ public enum LegalityCheckResultCode : ushort EvoTradeReqOutsider_0, FormArgumentLEQ_0, FormArgumentGEQ_0, - FormInvalidRange_0, - FormInvalidRangeLEQ_0, HyperTrainLevelGEQ_0, // level IVAllEqual_0, IVFlawlessCountGEQ_0, // count @@ -452,6 +450,7 @@ public enum LegalityCheckResultCode : ushort StoredSlotSourceInvalid_0, // StorageSlotType HintEvolvesToRareForm_0, // bool + FormInvalidRangeLEQ_0F, OTLanguageShouldBe_0or1, // language,language diff --git a/PKHeX.Core/Legality/Verifiers/FormVerifier.cs b/PKHeX.Core/Legality/Verifiers/FormVerifier.cs index 8f99ee73f..854980f49 100644 --- a/PKHeX.Core/Legality/Verifiers/FormVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/FormVerifier.cs @@ -38,7 +38,7 @@ private CheckResult VerifyForm(LegalityAnalysis data) var enc = data.EncounterMatch; if (!pi.IsFormWithinRange(form) && !FormInfo.IsValidOutOfBoundsForm(species, form, enc.Generation)) - return GetInvalid(FormInvalidRange_0, (ushort)(count - 1)); + return GetInvalid(FormInvalidRangeLEQ_0F, (ushort)(count - 1)); switch ((Species)species) { @@ -71,7 +71,7 @@ private CheckResult VerifyForm(LegalityAnalysis data) break; case Unown when enc.Generation == 2 && form >= 26: - return GetInvalid(FormInvalidRangeLEQ_0, 25); + return GetInvalid(FormInvalidRangeLEQ_0F, 25); case Unown when enc.Generation == 3: var expectUnown = EntityPID.GetUnownForm3(pk.EncryptionConstant); if (expectUnown != form) @@ -105,7 +105,7 @@ private CheckResult VerifyForm(LegalityAnalysis data) if (form > 1) // Ash Battle Bond active return GetInvalid(FormBattle); if (form != 0 && enc is not MysteryGift) // Form can not be bred for, MysteryGift already checked - return GetInvalid(FormInvalidRange_0, 0); + return GetInvalid(FormInvalidRangeLEQ_0F, 0); break; case Scatterbug or Spewpa or Vivillon when enc.Context is EntityContext.Gen9: diff --git a/PKHeX.Core/Resources/localize/legality/legality_de.json b/PKHeX.Core/Resources/localize/legality/legality_de.json index a3f205242..a802f5443 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_de.json +++ b/PKHeX.Core/Resources/localize/legality/legality_de.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "Invalid Eternal Flower encounter.", "FormInvalidGame": "Form cannot be obtained in origin game.", "FormInvalidNature": "Form cannot have this nature.", - "FormInvalidRange": "Form Count is out of range. Expected <= {0}, got {1}.", "FormItem": "Held item matches Form.", "FormItemInvalid": "Held item does not match Form.", "FormParty": "Form cannot exist outside of Party.", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "Form Count is out of range. Expected <= {0}, got {1}.", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Enjoyment should be {0}.", "MemoryStatFullness_0": "Fullness should be {0}.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_en.json b/PKHeX.Core/Resources/localize/legality/legality_en.json index 246d3d4b5..ed8e3f6e9 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_en.json +++ b/PKHeX.Core/Resources/localize/legality/legality_en.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "Invalid Eternal Flower encounter.", "FormInvalidGame": "Form cannot be obtained in origin game.", "FormInvalidNature": "Form cannot have this nature.", - "FormInvalidRange": "Form Count is out of range. Expected <= {0}, got {1}.", "FormItem": "Held item matches Form.", "FormItemInvalid": "Held item does not match Form.", "FormParty": "Form cannot exist outside of Party.", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "Form Count is out of range. Expected <= {0}, got {1}.", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Enjoyment should be {0}.", "MemoryStatFullness_0": "Fullness should be {0}.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_es.json b/PKHeX.Core/Resources/localize/legality/legality_es.json index 20d53fcc4..7c9608684 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_es.json +++ b/PKHeX.Core/Resources/localize/legality/legality_es.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "Encuentro con Flor Eterna inválido.", "FormInvalidGame": "La forma no se puede obtener en el juego de origen.", "FormInvalidNature": "La forma no puede tener esta Naturaleza.", - "FormInvalidRange": "Contador de forma fuera de rango. Se esperaba <= {0}, se obtuvo {1}.", "FormItem": "El objeto equipado coincide con la forma.", "FormItemInvalid": "El objeto equipado no coincide con la forma.", "FormParty": "La forma no puede existir fuera del equipo.", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "Contador de forma fuera de rango. Se esperaba <= {0}, se obtuvo {1}.", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Los mimos deberían ser {0}.", "MemoryStatFullness_0": "La saciedad debería ser {0}.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_fr.json b/PKHeX.Core/Resources/localize/legality/legality_fr.json index cd5d10981..e78ab9970 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_fr.json +++ b/PKHeX.Core/Resources/localize/legality/legality_fr.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "Rencontre de fleur éternelle invalide.", "FormInvalidGame": "La Forme ne peut pas être obtenue dans le jeu actuel.", "FormInvalidNature": "La Forme ne peut pas avoir cette nature.", - "FormInvalidRange": "Le nombre de forme est hors de portée. Attendu <= {0}, obtenu {1}.", "FormItem": "L'objet tenu correspond à la forme.", "FormItemInvalid": "L'objet tenu ne correspond pas à la forme.", "FormParty": "La Forme ne peut pas exister en dehors de l'Équipe.", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "Le nombre de forme est hors de portée. Attendu <= {0}, obtenu {1}.", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Le plaisir doit être {0}.", "MemoryStatFullness_0": "La plénitude doit être {0}.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_it.json b/PKHeX.Core/Resources/localize/legality/legality_it.json index 58f366e7f..2ec3071cb 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_it.json +++ b/PKHeX.Core/Resources/localize/legality/legality_it.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "Incontro per Fiore Eterno non valido.", "FormInvalidGame": "La forma non può essere ottenuta nel gioco di origine.", "FormInvalidNature": "La forma non può avere la natura.", - "FormInvalidRange": "Il conteggio della forma è fuori dall'indice. Valore previsto <= {0}, non {1}.", "FormItem": "Lo strumento tenuto corrisponde alla forma.", "FormItemInvalid": "Lo strumento tenuto non corrisponde alla forma.", "FormParty": "La forma non può esistere al di fuori della squadra.", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "Il conteggio della forma è fuori dall'indice. Valore previsto <= {0}, non {1}.", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Enjoyment dovrebbe essere {0}.", "MemoryStatFullness_0": "Fullness dovrebbe essere {0}.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_ja.json b/PKHeX.Core/Resources/localize/legality/legality_ja.json index 3216abe3d..213b60435 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_ja.json +++ b/PKHeX.Core/Resources/localize/legality/legality_ja.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "無効なえいえんのはな個体。", "FormInvalidGame": "このフォルムは元々のゲームでは獲得できません。", "FormInvalidNature": "フォルムと性格が不一致です。", - "FormInvalidRange": "フォルムの数が範囲外です。予想:<= {0},取得したのは {1} です。", "FormItem": "持ち物とフォルムは一致しています。", "FormItemInvalid": "持ち物とフォルムが一致しません。", "FormParty": "このフォルムは手持ちの外では存在できません。", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "フォルムの数が範囲外です。予想:<= {0},取得したのは {1} です。", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Enjoyment should be {0}.", "MemoryStatFullness_0": "まんぷく度は {0} である必要があります。", diff --git a/PKHeX.Core/Resources/localize/legality/legality_ko.json b/PKHeX.Core/Resources/localize/legality/legality_ko.json index 71c2fbfcd..9ae66a4b4 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_ko.json +++ b/PKHeX.Core/Resources/localize/legality/legality_ko.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "사용할 수 없는 영원의 꽃 인카운터입니다.", "FormInvalidGame": "이 양식은 원래 게임에서 얻을 수 없습니다.", "FormInvalidNature": "Form cannot have this nature.", - "FormInvalidRange": "폼 번호가 범위를 벗어났습니다. 예상되는 폼 번호는 최대 {0}입니다. got {1}.", "FormItem": "지닌 물건이 도구와 일치합니다.", "FormItemInvalid": "지닌 물건이 도구와 일치하지 않습니다.", "FormParty": "파티 밖에서 존재할 수 없는 폼입니다.", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "폼 번호가 범위를 벗어났습니다. 예상되는 폼 번호는 최대 {0}입니다. got {1}.", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Enjoyment should be {0}.", "MemoryStatFullness_0": "Fullness should be {0}.", diff --git a/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json b/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json index 8eb225fdb..a575c0aa2 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json +++ b/PKHeX.Core/Resources/localize/legality/legality_zh-hans.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "永恒之花相遇非法。", "FormInvalidGame": "这种形态不能在来源版本中获得。", "FormInvalidNature": "此形态无法拥有这种性格。", - "FormInvalidRange": "形态数超过最大值。 应该 <= {0}, 实际是 {1}。", "FormItem": "持有物与形态一致。", "FormItemInvalid": "持有物与形态不一致。", "FormParty": "该形态不可能存在同行队伍外。", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "形态数超过最大值。 应该 <= {0}, 实际是 {1}。", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "享受度应该为{0}。", "MemoryStatFullness_0": "饱腹度应该为{0}。", diff --git a/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json b/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json index 03dc0fffe..fa325cca9 100644 --- a/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json +++ b/PKHeX.Core/Resources/localize/legality/legality_zh-hant.json @@ -112,7 +112,6 @@ "FormEternalInvalid": "永恆之花遇見不合法。", "FormInvalidGame": "此形態不能於出身游戲中獲得。", "FormInvalidNature": "此形態無法擁有該種性格。", - "FormInvalidRange": "形態數超過最大值。 應該 <=「 {0} 」, 實際是「 {1} 」。", "FormItem": "持有物與形態匹配。", "FormItemInvalid": "持有物與現時形態不匹配(可能此形態僅於持有某種持有物時生效)。", "FormParty": "該形態不可於同行隊伍外存在。", @@ -322,7 +321,7 @@ "EncTradeShouldHaveEvolvedToSpecies_0": "Trade Encounter should have evolved to species: {0}.", "EncGiftLanguageNotDistributed": "Gift Encounter was never distributed with this language.", "EncGiftRegionNotDistributed": "Gift Encounter was never distributed to this Console Region.", - "FormInvalidRangeLEQ_0": "Form Count is out of range. Expected <= {0}, got {1}.", + "FormInvalidRangeLEQ_0F": "形態數超過最大值。 應該 <=「 {0} 」, 實際是「 {1} 」。", "MovesShouldMatchRelearnMoves": "Moves should exactly match Relearn Moves.", "MemoryStatEnjoyment_0": "Enjoyment should be {0}.", "MemoryStatFullness_0": "飽腹度應該為{0}。", diff --git a/PKHeX.Core/Saves/Util/SaveExtensions.cs b/PKHeX.Core/Saves/Util/SaveExtensions.cs index eb9d1d028..badec71eb 100644 --- a/PKHeX.Core/Saves/Util/SaveExtensions.cs +++ b/PKHeX.Core/Saves/Util/SaveExtensions.cs @@ -65,7 +65,7 @@ private static List GetSaveFileErrata(this SaveFile sav, PKM pk, IBasicS errata.Add($"{MsgIndexSpeciesGame} {strings.Species[pk.Species]}"); if (!sav.Personal[pk.Species].IsFormWithinRange(pk.Form) && !FormInfo.IsValidOutOfBoundsForm(pk.Species, pk.Form, pk.Generation)) - errata.Add(string.Format(legality.FormInvalidRange, Math.Max(0, sav.Personal[pk.Species].FormCount - 1), pk.Form)); + errata.Add(string.Format(legality.FormInvalidRange_01, Math.Max(0, sav.Personal[pk.Species].FormCount - 1), pk.Form)); var movestr = strings.Move; for (int i = 0; i < 4; i++)