void Player_Movement(object e)
{
try
{
if (Character.Position.RecordedTime <= 0)
{
if(Timer.Movement != null)
Timer.Movement.Dispose();
Character.Position.Walking = false;
if (Character.Action.PickUping)
Player_PickUpItem();
Character.Position.z = Character.Position.wZ;
if (Timer.SpawnWatch.ElapsedMilliseconds >= 10)
{
ObjectSpawnCheck();
Timer.SpawnWatch.Restart();
}
Movement_CaveTeleport();
}
else
{
//If player is in a party send location update packet to each member
if (Character.Network.Party != null)
{
foreach (int member in Character.Network.Party.Members)
{
if (member != Character.Information.UniqueID)
{
Systems memberinfo = GetPlayer(member);
memberinfo.client.Send(Packet.Party_Data(6, member));
}
}
}
if (Character.Action.nAttack)
{
Character.Position.kX -= (Character.Position.wX * 10) / 100;
Character.Position.kY -= (Character.Position.wY * 10) / 100;
if (Character.Information.Item.wID != 0)
{
if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) <= Data.ItemBase[Character.Information.Item.wID].ATTACK_DISTANCE)
{
Character.Position.RecordedTime = 0;
if (Character.Action.nAttack)
ActionAttack();
if (Timer.SpawnWatch.ElapsedMilliseconds >= 150)
{
this.ObjectSpawnCheck();
Timer.SpawnWatch.Restart();
}
Timer.Movement.Dispose();
Character.Position.z = Character.Position.wZ;
Character.Action.PickUping = false;
Character.Position.Walking = false;
return;
}
}
else
{
if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) <= 1)
{
Character.Position.RecordedTime = 0;
if (Character.Action.nAttack) ActionAttack();
if (Timer.SpawnWatch.ElapsedMilliseconds >= 1000)
{
this.ObjectSpawnCheck();
Timer.SpawnWatch.Restart();
}
Timer.Movement.Dispose();
Character.Position.z = Character.Position.wZ;
Character.Action.PickUping = false;
Character.Position.Walking = false;
return;
}
}
}
else if (Character.Action.sAttack)
{
Character.Position.kX -= (Character.Position.wX * 10) / 100;
Character.Position.kY -= (Character.Position.wY * 10) / 100;
double test = Character.Action.Skill.Distance;
if (test == 0)
test = Data.ItemBase[Character.Information.Item.wID].ATTACK_DISTANCE;
if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) < test)
{
if (Character.Action.sAttack) StartSkill();
Character.Position.RecordedTime = 0;
Character.aRound = new bool[10];
if (Timer.SpawnWatch.ElapsedMilliseconds >= 1000)
{
this.ObjectSpawnCheck();
Timer.SpawnWatch.Restart();
}
Timer.Movement.Dispose();
Character.Position.z = Character.Position.wZ;
Character.Action.PickUping = false;
Character.Position.Walking = false;
return;
}
}
Character.aRound = new bool[10];
Character.Position.x += (Character.Position.wX * 10) / 100;
Character.Position.y += (Character.Position.wY * 10) / 100;
if (Character.Transport.Right)
{
Character.Transport.Horse.x = Character.Position.x;
Character.Transport.Horse.y = Character.Position.y;
}
Character.Position.RecordedTime -= (Character.Position.Time * 0.1);
if (Timer.SpawnWatch.ElapsedMilliseconds >= 10)
{
this.ObjectSpawnCheck();
this.ObjectAttackCheck();
Timer.SpawnWatch.Restart();
}
}
}
catch (Exception ex)
{
Console.WriteLine("Move call error: {0}", ex);
Systems.Debugger.Write(ex);
}
}