Populate species/form correctly on Battle Tower Pokémon records. Should resolve validation issues with them.

This commit is contained in:
Greg Edwards
2023-02-16 01:16:54 -05:00
parent bcd7a854dc
commit 143368f04f
4 changed files with 29 additions and 16 deletions

View File

@@ -782,7 +782,7 @@ namespace PkmnFoundations.Data
private List<MySqlParameter> ParamsFromBattleTowerPokemon4(BattleTowerPokemon4 pokemon)
{
List<MySqlParameter> result = new List<MySqlParameter>(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<MySqlParameter> ParamsFromBattleSubwayPokemon5(BattleSubwayPokemon5 pokemon)
{
List<MySqlParameter> result = new List<MySqlParameter>(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));

View File

@@ -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);

View File

@@ -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);

View File

@@ -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<MoveSlot> result, Pokedex.Pokedex pokedex, ushort[] moves, byte ppUps)
{
if (moves.Length != 4) throw new ArgumentException("moves");