public void Player_Up()
{
try
{
/////////////////////////////////////////////////////////////////////////////////////
// Normal Death / Return to return point
/////////////////////////////////////////////////////////////////////////////////////
//Normal death
if (Character.State.Die && Character.State.DeadType == 1)
{
if (Character.Information.Level <= 11)
{
//Check if character is walking should not be happening
if (Character.Position.Walking) return;
//Stop berserk timer if it were active
StopBerserkTimer();
//Start sending packets for teleport
client.Send(Packet.TeleportOtherStart());
//Reset state information
Send(Packet.StatePack(this.Character.Information.UniqueID, 0, 1, false));
//Set the character hp to max hp / 2
this.Character.Stat.SecondHp = this.Character.Stat.Hp / 2;
//this.Character.State.SafeState = true;
//NotAttackableTimer(5000);
this.UpdateHp();
//Send packet for updating hp
client.Send(Packet.UpdatePlayer(this.Character.Information.UniqueID, 0x20, 1, this.Character.Stat.SecondHp));
//Set bool
Character.State.Die = false;
//Send state pack
Send(Packet.StatePack(this.Character.Information.UniqueID, 4, 0, false));
}
else
{
//Check if character is walking should not be happening
if (Character.Position.Walking) return;
//Save information for reverse scrolls
SavePlayerReturn();
//Close buffs
BuffAllClose();
//Set bool ingame
Character.InGame = false;
//Despawn
DeSpawnMe();
//Despawn objects
ObjectDeSpawnCheck();
//Send teleport packet
client.Send(Packet.TeleportOtherStart());
//Update location
Teleport_UpdateXYZ(Character.Information.Place);
//Set hp to max hp / 2
this.Character.Stat.SecondHp = this.Character.Stat.Hp / 2;
//Send teleport image
client.Send(Packet.TeleportImage(Data.PointBase[Character.Information.Place].xSec, Data.PointBase[Character.Information.Place].ySec));
//Set bools
Character.Teleport = true;
Character.State.Die = false;
}
}
else if (Character.State.Die && Character.State.DeadType == 2)
{
//Check if character is walking should not be happening
if (Character.Position.Walking) return;
//Stop berserk timer if it were active
StopBerserkTimer();
//Start sending packets for teleport
client.Send(Packet.TeleportOtherStart());
//Reset state information
Send(Packet.StatePack(this.Character.Information.UniqueID, 0, 1, false));
//Set the character hp to max hp / 2
this.Character.Stat.SecondHp = this.Character.Stat.Hp / 2;
//this.Character.State.SafeState = true;
//NotAttackableTimer(5000);
this.UpdateHp();
//Send packet for updating hp
client.Send(Packet.UpdatePlayer(this.Character.Information.UniqueID, 0x20, 1, this.Character.Stat.SecondHp));
//Set bool
Character.State.Die = false;
//Send state pack
Send(Packet.StatePack(this.Character.Information.UniqueID, 4, 0, false));
}
else
{
Console.WriteLine("Unknown dead type: " + Character.State.DeadType + "");
}
}
catch (Exception ex)
{
Console.WriteLine("Death error {0}", ex);
Systems.Debugger.Write(ex);
}
}