void MovementPet()
{
try
{
//Open our packet reader
PacketReader Reader = new PacketReader(PacketInformation.buffer);
//This one happens to all pets.
int petid = Reader.Int32();
//We switch on type (2 = attack pet, 1 = horse).
byte type = Reader.Byte();
switch (type)
{
//Horse pet movement
case 1:
byte movetype = Reader.Byte();
//Normal movement type
if (movetype == 1)
{
//Read xsector information
byte xsec = Reader.Byte();
//Read ysector information
byte ysec = Reader.Byte();
//Read x
float x = Reader.Int16();
//Read z
float z = Reader.Int16();
//Read y
float y = Reader.Int16();
Reader.Close();
//Make sure attack timer is gone
StopAttackTimer();
//Set pickup to false
Character.Action.PickUping = false;
//Set movement active
Character.Position.Walking = true;
//Calculate distance
double distance = Formule.gamedistance(Character.Position.x,
Character.Position.y,
Formule.gamex(x, xsec),
Formule.gamey(y, ysec));
//Set character position
Character.Position.xSec = xsec;
Character.Position.ySec = ysec;
Character.Position.wX = Formule.gamex(x, xsec) - Character.Position.x;
Character.Position.wZ = z;
Character.Position.wY = Formule.gamey(y, ysec) - Character.Position.y;
Character.Position.packetxSec = xsec;
Character.Position.packetySec = ysec;
Character.Position.packetX = (ushort)x;
Character.Position.packetZ = (ushort)z;
Character.Position.packetY = (ushort)y;
Send(Packet.Movement(new Global.vektor(petid, x, z, y, xsec, ysec)));
Character.Position.Time = (distance / (95.0 * 0.0768)) * 1000.0;
Character.Position.RecordedTime = Character.Position.Time;
StartMovementTimer((int)(Character.Position.Time * 0.1));
}
break;
//Attack pet movement
case 2:
//Set pet info
Character.Attackpet.Details.x = Character.Position.x;
Character.Attackpet.Details.y = Character.Position.y;
Character.Attackpet.Details.z = Character.Position.z;
Character.Attackpet.Details.xSec = Character.Position.xSec;
Character.Attackpet.Details.ySec = Character.Position.ySec;
//Target id information
int targetid = Reader.Int32();
Reader.Close();
//Set pet speed information
Send(Packet.SetSpeed(petid, 50, 100));//Need to make correct speed info later
//Check distances / target detailed.
//Send attack packet (new void pet attack to be created).
break;
}
}
catch (Exception ex)
{
Console.WriteLine("movement pet error {0}", ex);
Systems.Debugger.Write(ex);
}
}