public static void PvPInviteResponses(InPacket lea, Client c) { int CharacterID = lea.ReadInt(); int Respons = lea.ReadInt(); Map map = MapFactory.GetMap(c.Character.MapX, c.Character.MapY); PvPPacket.PvPInviteResponses(c.Character.Competitor.Client, CharacterID, Respons); if (Respons == 1) { PvPPacket.PvPStart(c, c.Character.CharacterID, c.Character.Competitor.CharacterID); PvPPacket.PvPStart(c.Character.Competitor.Client, c.Character.CharacterID, c.Character.Competitor.CharacterID); } }
public static void PvPInvite(InPacket lea, Client c) { int CharacterID = lea.ReadInt(); Map map = MapFactory.GetMap(c.Character.MapX, c.Character.MapY); foreach (Character chr in map.Characters) { if (chr.CharacterID == CharacterID) { c.Character.Competitor = chr; chr.Competitor = c.Character; PvPPacket.PvPInvite(chr.Client, CharacterID); break; } } }
public static void Char_Damage_Req(InPacket lea, Client c) { short Damage = lea.ReadShort(); var chr = c.Character; if (Damage < 0) { Damage = short.MaxValue; } chr.Hp -= Damage; if (chr.Hp <= 0) { chr.IsAlive = false; if (!(chr.MapX == 10 && chr.MapY == 60) && !(chr.MapX == 10 && chr.MapY == 61) && !(chr.MapX == 10 && chr.MapY == 62) && !(chr.MapX == 10 && chr.MapY == 63) && !(chr.MapX == 10 && chr.MapY == 64)) { chr.Exp -= (int)(GameConstants.getExpNeededForLevel(chr.Level) * 0.2); if (chr.Exp < 0) { chr.Exp = 0; } StatusPacket.UpdateExp(c); } MapPacket.userDead(c); if (chr.Competitor != null) { PvPPacket.PvPEnd(c, chr.Competitor.CharacterID); PvPPacket.PvPEnd(chr.Competitor.Client, chr.Competitor.CharacterID); chr.Competitor = null; chr.Competitor.Competitor = null; } chr.Hp = 1; chr.Mp = 1; } StatusPacket.UpdateHpMp(c, chr.Hp, chr.Mp, chr.Fury, chr.MaxFury); }