public static PokemonSpecies PokemonSpecies(string name) { int e; var r = Find(name, out e); return(r != null && r[0] == 'p' ? RomData.GetPokemon(int.Parse(r.Substring(1)) / 100) : null); }
public static MoveType Move(string name) { int e; var r = Find(name, out e); return(r != null && r[0] == 'm' ? RomData.GetMove(int.Parse(r.Substring(1))) : null); }
public void ChangeMove(int from, int to) { for (int i = 0; i < 4; ++i) { if (Moves[i] != null && Moves[i].Type.Id == from) { Moves[i] = new SimMove(RomData.GetMove(to)); break; } } }
internal static PokemonForm PokemonForm(string name) { int e; var r = Find(name, out e); if (r == null || r[0] != 'p') { return(null); } var n = int.Parse(r.Substring(1)); return(RomData.GetPokemon(n / 100, n % 100)); }
internal void ChangeMoves(int[] moves) { int i = -1; while (++i < moves.Length) { Moves[i] = new SimMove(RomData.GetMove(moves[i])); } while (i < 4) { Moves[i++] = null; } }
private static PokemonData ReadData(BinaryReader reader) { PokemonData pm = null; int identity = reader.ReadInt32(); if (identity > 0 && identity < 504) { pm = GetById(identity); pm.Name = reader.ReadString(); pm.Lv = reader.ReadByte(); pm.Ev.Atk = reader.ReadByte(); pm.Ev.Def = reader.ReadByte(); pm.Ev.Speed = reader.ReadByte(); pm.Ev.SpAtk = reader.ReadByte(); pm.Ev.SpDef = reader.ReadByte(); pm.Ev.Hp = reader.ReadByte(); pm.Iv.Atk = reader.ReadByte(); pm.Iv.Def = reader.ReadByte(); pm.Iv.Speed = reader.ReadByte(); pm.Iv.SpAtk = reader.ReadByte(); pm.Iv.SpDef = reader.ReadByte(); pm.Iv.Hp = reader.ReadByte(); pm.Gender = (PokemonGender)reader.ReadInt32(); int abilityId = GetAbilityId(identity, reader.ReadByte()); pm.Ability = abilityId; pm.Nature = (PokemonNature)reader.ReadInt32(); pm.Item = GetItemId(reader.ReadInt32()); for (int i = 0; i < 4; i++) { int moveId = GetMoveId(reader.ReadString()); if (moveId > 0) { MoveType move = RomData.GetMove(moveId); if (move != null) { pm.AddMove(move); } } } } return(pm); }
/// <summary> /// 不判断PP数及技能是否存在 /// </summary> /// <param name="move"></param> /// <returns></returns> public bool Move(SimMove move) { if (OnlyMove != 0 && OnlyMove != move.Type.Id) { SetErrorMessage(Only, GameString.Current.Move(RomData.GetMove(OnlyMove).Id), GameString.Current.Item(Pm.Pokemon.Item)); } else if (Block != null) { for (int i = 0; i < Pm.Moves.Length; ++i) { if (move == Pm.Moves[i]) { if (Block[i] != null) { SetErrorMessage(Block[i], GameString.Current.Move(move.Type.Id), null); } break; } } } return(error == null); }
private static PokemonData ToPokemonData(Pokemon pm) { var data = new PokemonData(pm.Num, pm.Forme); data.Name = pm.Nickname; data.Ability = pm.Ability; data.Item = Item2PBO(pm.Item); data.Gender = (PokemonGender)pm.Gender; data.Nature = (PokemonNature)pm.Nature; data.Lv = pm.Lvl; data.Happiness = pm.Hapiness; for (int i = 0; i < 4 && i < pm.Move.Length; i++) { if (pm.Move[i] > 0) { MoveType move = RomData.GetMove(pm.Move[i]); if (move != null) { data.AddMove(move); } } } for (int i = 0; i < 6 && i < pm.DV.Length; i++) { data.Iv.SetStat(PO_STATS[i], pm.DV[i]); } for (int i = 0; i < 6 && i < pm.EV.Length; i++) { data.Ev.SetStat(PO_STATS[i], pm.EV[i]); } return(data); }
public PokemonData(int number, int form) { _moves = new ObservableCollection <LearnedMove>(); _ev = new Observable6D(); Form = RomData.GetPokemon(number, form); }
public PokemonData(int seed, string suiji) //随机生成pm { _moves = new ObservableCollection <LearnedMove>(); _ev = new Observable6D(); Random random = new Random(seed); bool item_ = true; number = random.Next(1, 803); Form = RomData.GetPokemon(number, form); int ff; ff = random.Next(RomData.Pokemons.ElementAtOrDefault(number - 1).Forms.Count()); if (MegaPokemon.Contains(number) && (ff > 0)) { item_ = SuitMegaStone(ff); ff = 0; } if (number == 670 && ff <= 4) { ff = 0; } if (number == 025 || number == 351 || number == 384 || number == 421 || number == 493 || number == 555 || number == 647 || number == 648 || number == 649 || number == 658 || number == 666 || number == 669 || number == 671 || number == 676 || number == 678 || number == 681 || number == 710 || number == 711 || number == 718 && form == 4 || number == 773 || number == 774 || number == 778) { ff = 0; } if (number == 382 && form == 1) { _item = 9044; item_ = false; } if (number == 383 && form == 1) { _item = 9045; item_ = false; } if (number == 487 && ff == 1) { _item = 1003; item_ = false; } if (number == 718 && ff == 4) { ff = 2; } Form = RomData.GetPokemon(number, ff); Random genderrandom = new Random(random.Next()); Gender = Form.Species.Genders.ElementAtOrDefault(genderrandom.Next(0, Form.Species.Genders.Count())); Nature = (PokemonNature)random.Next(0, 25); //for (int i = 0; i != 0; i = Form.Data.Abilities[random.Next(0, Form.Data.Abilities.Count())]) //Ability = i; _abilityIndex = (Byte)random.Next(0, Form.Data.Abilities.Count()); _Iv = new Observable6D(random.Next(0, 32), random.Next(0, 32), random.Next(0, 32), random.Next(0, 32), random.Next(0, 32), random.Next(0, 32)); int[] ev = new int[] { 0, 0, 0, 0, 0, 0 }; int index = 0; for (int i = 0; i < 127; i++) { while (true) { index = random.Next(0, 6); if (ev[index] <= 251) { ev[index] += 4; break; } } } _ev = new Observable6D(ev[0], ev[1], ev[2], ev[3], ev[4], ev[5]); GetLearnset(); while (moveIds.Count() < 4 && moveIds.Count() < learnset.Count()) { int x = learnset[random.Next(0, learnset.Count())]; if (x != -1) { AddMove(RomData.GetMove(x)); } } if (number == 647 && HasMove(Ms.SECRET_SWORD)) { Form = RomData.GetPokemon(number, 1); } Happiness = random.Next(0, 256); if (item_) { ItemLoop: Item = RomData.Items.ElementAtOrDefault(random.Next(0, RomData.Items.Count())); if (UselessItem.Contains(Item) || (9000 <= Item && Item < 10004) || (11000 <= Item && Item < 12000 && number != 773) || (1300 <= Item && Item < 1400 && number != 649)) { goto ItemLoop; } } }