private static PokemonData ImportFromPO(Match m) { // 1: Nickname // 2: Form // 3: Pokemon // 4: Gender // 5: Item // 6: Ability // 7: EVs // 8: Nature // 9~12: Moves var hasNickname = m.Groups[3].Value.Length > 0; var pname = m.Groups[3].Value; if (!hasNickname) { pname = m.Groups[1].Value; } var pm = new PokemonData(GameString.PokemonSpecies(pname).Number, 0); var Item = GameString.Item(m.Groups[5].Value); var Ability = GameString.Ability(m.Groups[6].Value); var Nature = GameString.Nature(m.Groups[8].Value); pm.Gender = GetGender(m.Groups[4].Value); if (hasNickname) { pm.Name = m.Groups[1].Value; } pm.Item = Item; if (Ability != 0) { pm.Ability = Ability; } if (Nature != null) { pm.Nature = Nature.Value; } pm.Ev.Hp = TryMatch(m.Groups[7].Value, @"(\d+) HP", 1, 0); pm.Ev.Atk = TryMatch(m.Groups[7].Value, @"(\d+) Atk", 1, 0); pm.Ev.Def = TryMatch(m.Groups[7].Value, @"(\d+) Def", 1, 0); pm.Ev.SpAtk = TryMatch(m.Groups[7].Value, @"(\d+) SAtk", 1, 0); pm.Ev.SpDef = TryMatch(m.Groups[7].Value, @"(\d+) SDef", 1, 0); pm.Ev.Speed = TryMatch(m.Groups[7].Value, @"(\d+) Spd", 1, 0); foreach (Match m2 in Regex.Matches(m.Groups[9].Value, @"\- (.+?)(?: \[(.+?)\])*\n")) { var Move = GameString.Move(m2.Groups[1].Value); if (Move != null) { pm.AddMove(Move); } } return(pm); }
private static PokemonData ImportFromPS(Match m) { // 1: Nickname // 2: Form // 3: Pokemon // 4: Gender // 5: Item // 6: Ability // 7: EVs // 8: Nature // 9: IVs(?) // 10~13: Moves var hasNickname = m.Groups[3].Value.Length > 0; var pname = m.Groups[3].Value; if (!hasNickname) { pname = m.Groups[1].Value; } int form = 0; if (m.Groups[2].Value.Contains("Alola") || m.Groups[2].Value.Contains("Therian") || m.Groups[2].Value.Contains("Attack") || m.Groups[2].Value.Contains("Heat") || m.Groups[2].Value.Contains("White") || m.Groups[2].Value.Contains("Unbound")) { form = 1; } if (m.Groups[2].Value.Contains("Attack") || m.Groups[2].Value.Contains("Wash") || m.Groups[2].Value.Contains("Black")) { form = 2; } if (m.Groups[2].Value.Contains("Defence") || m.Groups[2].Value.Contains("Frost")) { form = 3; } if (m.Groups[2].Value.Contains("Speed") || m.Groups[2].Value.Contains("Fan")) { form = 4; } if (m.Groups[2].Value.Contains("Mow")) { form = 5; } var pm = new PokemonData(GameString.PokemonSpecies(pname).Number, form); var Item = GameString.Item(m.Groups[5].Value); var Ability = GameString.Ability(m.Groups[6].Value); var Nature = GameString.Nature(m.Groups[8].Value); pm.Gender = GetGender(m.Groups[4].Value); if (hasNickname) { pm.Name = m.Groups[1].Value; } pm.Item = Item; if (Ability != 0) { pm.Ability = Ability; } if (Nature != null) { pm.Nature = Nature.Value; } pm.Ev.Hp = TryMatch(m.Groups[7].Value, @"(\d+) HP", 1, 0); pm.Ev.Atk = TryMatch(m.Groups[7].Value, @"(\d+) Atk", 1, 0); pm.Ev.Def = TryMatch(m.Groups[7].Value, @"(\d+) Def", 1, 0); pm.Ev.SpAtk = TryMatch(m.Groups[7].Value, @"(\d+) SpA", 1, 0); pm.Ev.SpDef = TryMatch(m.Groups[7].Value, @"(\d+) SpD", 1, 0); pm.Ev.Speed = TryMatch(m.Groups[7].Value, @"(\d+) Spe", 1, 0); if (m.Groups[9].Value.Contains("IVs")) { pm.Iv.Hp = TryMatch(m.Groups[9].Value, @"(\d+) HP", 1, 31); pm.Iv.Atk = TryMatch(m.Groups[9].Value, @"(\d+) Atk", 1, 31); pm.Iv.Def = TryMatch(m.Groups[9].Value, @"(\d+) Def", 1, 31); pm.Iv.SpAtk = TryMatch(m.Groups[9].Value, @"(\d+) SpA", 1, 31); pm.Iv.SpDef = TryMatch(m.Groups[9].Value, @"(\d+) SpD", 1, 31); pm.Iv.Speed = TryMatch(m.Groups[9].Value, @"(\d+) Spe", 1, 31); } foreach (Match m2 in Regex.Matches(m.Groups[m.Groups.Count - 1].Value, @"\- (.+?)(?: \[(.+?)\])*( )*\n")) { var Move = GameString.Move(m2.Groups[1].Value); if (Move != null) { pm.AddMove(Move); } } return(pm); }