public static void SendPlayerBuffed(Character chr, BuffValueTypes pBuffs, short delay = 0) { Packet pw = new Packet(ServerMessages.GIVE_FOREIGN_BUFF); pw.WriteInt(chr.ID); BuffPacket.AddMapBuffValues(chr, pw, pBuffs); pw.WriteShort(delay); // the delay. usually 0, but is carried on through OnStatChangeByMobSkill / DoActiveSkill_(Admin/Party/Self)StatChange chr.Field.SendPacket(chr, pw, chr); }
public static void SendCharacterEnterPacket(Character player, Character victim) { Packet pw = new Packet(ServerMessages.USER_ENTER_FIELD); pw.WriteInt(player.ID); pw.WriteString(player.Name); BuffPacket.AddMapBuffValues(player, pw); PacketHelper.AddAvatar(pw, player); pw.WriteInt(player.GetSpawnedPet()?.ItemID ?? 0); pw.WriteInt(player.Inventory.ActiveItemID); pw.WriteInt(player.Inventory.ChocoCount); pw.WriteShort(player.Position.X); pw.WriteShort(player.Position.Y); pw.WriteByte(player.Stance); pw.WriteShort(player.Foothold); pw.WriteBool(player.IsGM && !player.Undercover); var petItem = player.GetSpawnedPet(); pw.WriteBool(petItem != null); if (petItem != null) { pw.WriteInt(petItem.ItemID); pw.WriteString(petItem.Name); pw.WriteLong(petItem.CashId); var ml = petItem.MovableLife; pw.WriteShort(ml.Position.X); pw.WriteShort(ml.Position.Y); pw.WriteByte(ml.Stance); pw.WriteShort(ml.Foothold); } // Mini Game & Player Shops pw.WriteByte(0); // Hardcoded end of minigame & player shops until implemented //Rings pw.WriteByte(0); // Number of Rings, hardcoded 0 until implemented. //Ring packet structure /** * for (Ring ring in player.Rings()) { * pw.WriteLong(ring.getRingId()); // R * pw.WriteLong(ring.getPartnerRingId()); * pw.WriteInt(ring.getItemId()); * } */ victim.SendPacket(pw); }