diff --git a/library/Data/DataMysql.cs b/library/Data/DataMysql.cs index 5ec4314c..6b8f923e 100644 --- a/library/Data/DataMysql.cs +++ b/library/Data/DataMysql.cs @@ -782,7 +782,7 @@ namespace PkmnFoundations.Data private List ParamsFromBattleTowerPokemon4(BattleTowerPokemon4 pokemon) { List result = new List(15); - result.Add(new MySqlParameter("@species", pokemon.SpeciesID)); + result.Add(new MySqlParameter("@species", pokemon.SpeciesFormValue)); result.Add(new MySqlParameter("@held_item", pokemon.HeldItemID)); result.Add(new MySqlParameter("@move1", (ushort)pokemon.Moves[0].MoveID)); result.Add(new MySqlParameter("@move2", (ushort)pokemon.Moves[1].MoveID)); @@ -2010,7 +2010,7 @@ namespace PkmnFoundations.Data private List ParamsFromBattleSubwayPokemon5(BattleSubwayPokemon5 pokemon) { List result = new List(15); - result.Add(new MySqlParameter("@species", pokemon.SpeciesID)); + result.Add(new MySqlParameter("@species", pokemon.SpeciesFormValue)); result.Add(new MySqlParameter("@held_item", pokemon.HeldItemID)); result.Add(new MySqlParameter("@move1", pokemon.Moves[0].MoveID)); result.Add(new MySqlParameter("@move2", pokemon.Moves[1].MoveID)); diff --git a/library/Structures/BattleSubwayPokemon5.cs b/library/Structures/BattleSubwayPokemon5.cs index 0ca7385e..1d239630 100644 --- a/library/Structures/BattleSubwayPokemon5.cs +++ b/library/Structures/BattleSubwayPokemon5.cs @@ -13,7 +13,7 @@ namespace PkmnFoundations.Structures { } - public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, ushort species, ushort held_item, ushort[] moveset, + public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, ushort species_form, ushort held_item, ushort[] moveset, uint ot, uint personality, uint ivs, byte[] evs, byte pp_ups, Languages language, byte ability, byte happiness, EncodedString5 nickname, uint unknown2) : base(pokedex) { @@ -24,7 +24,7 @@ namespace PkmnFoundations.Structures if (nickname == null) throw new ArgumentNullException("nickname"); if (nickname.Size != 22) throw new ArgumentException("nickname"); - SpeciesID = species; + SpeciesFormValue = species_form; HeldItemID = held_item; GetMovesFromArray(Moves, pokedex, moveset, pp_ups); TrainerID = ot; @@ -39,11 +39,11 @@ namespace PkmnFoundations.Structures Unknown2 = unknown2; } - public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, ushort species, ushort held_item, + public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, ushort species_form, ushort held_item, ushort move1, ushort move2, ushort move3, ushort move4, uint ot, uint personality, uint ivs, byte[] evs, byte pp_ups, Languages language, byte ability, byte happiness, EncodedString5 nickname, uint unknown2) : - this(pokedex, species, held_item, new ushort[] { move1, move2, move3, move4 }, + this(pokedex, species_form, held_item, new ushort[] { move1, move2, move3, move4 }, ot, personality, ivs, evs, pp_ups, language, ability, happiness, nickname, unknown2) { } @@ -83,7 +83,7 @@ namespace PkmnFoundations.Structures protected override void Save(BinaryWriter writer) { - writer.Write((ushort)SpeciesID); + writer.Write(SpeciesFormValue); writer.Write((ushort)HeldItemID); ushort[] moveset = GetArrayFromMoves(Moves); @@ -108,7 +108,7 @@ namespace PkmnFoundations.Structures protected override void Load(BinaryReader reader) { - SpeciesID = reader.ReadUInt16(); + SpeciesFormValue = reader.ReadUInt16(); HeldItemID = reader.ReadUInt16(); ushort[] moveset = new ushort[4]; @@ -141,7 +141,7 @@ namespace PkmnFoundations.Structures byte ppUps = GetPpUpsFromMoves(Moves); BattleSubwayPokemon5 result = new BattleSubwayPokemon5(m_pokedex, - (ushort)SpeciesID, (ushort)HeldItemID, moveset, + SpeciesFormValue, (ushort)HeldItemID, moveset, TrainerID, Personality, ivsField, EVs.ToArray(), ppUps, Language, (byte)AbilityID, Happiness, NicknameEncoded, Unknown2); diff --git a/library/Structures/BattleTowerPokemon4.cs b/library/Structures/BattleTowerPokemon4.cs index bde23df0..47abc51a 100644 --- a/library/Structures/BattleTowerPokemon4.cs +++ b/library/Structures/BattleTowerPokemon4.cs @@ -13,7 +13,7 @@ namespace PkmnFoundations.Structures { } - public BattleTowerPokemon4(Pokedex.Pokedex pokedex, ushort species, ushort held_item, ushort[] moveset, + public BattleTowerPokemon4(Pokedex.Pokedex pokedex, ushort species_form, ushort held_item, ushort[] moveset, uint ot, uint personality, uint ivs, byte[] evs, byte pp_ups, Languages language, byte ability, byte happiness, EncodedString4 nickname) : base(pokedex) { @@ -24,7 +24,7 @@ namespace PkmnFoundations.Structures if (nickname == null) throw new ArgumentNullException("nickname"); if (nickname.Size != 22) throw new ArgumentException("nickname"); - SpeciesID = species; + SpeciesFormValue = species_form; HeldItemID = held_item; GetMovesFromArray(Moves, pokedex, moveset, pp_ups); TrainerID = ot; @@ -38,11 +38,11 @@ namespace PkmnFoundations.Structures NicknameEncoded = nickname; // todo: clone } - public BattleTowerPokemon4(Pokedex.Pokedex pokedex, ushort species, ushort held_item, + public BattleTowerPokemon4(Pokedex.Pokedex pokedex, ushort species_form, ushort held_item, ushort move1, ushort move2, ushort move3, ushort move4, uint ot, uint personality, uint ivs, byte[] evs, byte pp_ups, Languages language, byte ability, byte happiness, EncodedString4 nickname) : - this(pokedex, species, held_item, new ushort[] { move1, move2, move3, move4 }, + this(pokedex, species_form, held_item, new ushort[] { move1, move2, move3, move4 }, ot, personality, ivs, evs, pp_ups, language, ability, happiness, nickname) { } @@ -80,7 +80,7 @@ namespace PkmnFoundations.Structures protected override void Save(BinaryWriter writer) { - writer.Write((ushort)SpeciesID); + writer.Write(SpeciesFormValue); writer.Write((ushort)HeldItemID); ushort[] moveset = GetArrayFromMoves(Moves); @@ -104,7 +104,7 @@ namespace PkmnFoundations.Structures protected override void Load(BinaryReader reader) { - SpeciesID = reader.ReadUInt16(); + SpeciesFormValue = reader.ReadUInt16(); HeldItemID = reader.ReadUInt16(); ushort[] moveset = new ushort[4]; @@ -136,7 +136,7 @@ namespace PkmnFoundations.Structures byte ppUps = GetPpUpsFromMoves(Moves); BattleTowerPokemon4 result = new BattleTowerPokemon4(m_pokedex, - (ushort)SpeciesID, (ushort)HeldItemID, moveset, + SpeciesFormValue, (ushort)HeldItemID, moveset, TrainerID, Personality, ivsField, EVs.ToArray(), ppUps, Language, (byte)AbilityID, Happiness, NicknameEncoded); diff --git a/library/Structures/BattleTowerPokemonBase.cs b/library/Structures/BattleTowerPokemonBase.cs index 73b989ee..10a2f505 100644 --- a/library/Structures/BattleTowerPokemonBase.cs +++ b/library/Structures/BattleTowerPokemonBase.cs @@ -34,6 +34,19 @@ namespace PkmnFoundations.Structures } } + public ushort SpeciesFormValue + { + get + { + return (ushort)(SpeciesID & 0x7ff | FormID << 11); + } + set + { + SpeciesID = value & 0x7ff; + FormID = (byte)(value >> 11); + } + } + internal static void GetMovesFromArray(IList result, Pokedex.Pokedex pokedex, ushort[] moves, byte ppUps) { if (moves.Length != 4) throw new ArgumentException("moves");