public void DropRandomStuff(Entity KillerName) { //demha||rider if (KillerName == null) return; if (PKPoints >= 30 && Killer != null && Killer.Owner != null && MapID != 1038) { for (int i = 0; i < 9; i++) { var rnd = Kernel.Random.Next(19); if (Owner.AlternateEquipment) rnd = Kernel.Random.Next(10, 29); var item = Owner.Equipment.TryGetItem((byte)rnd); var Item = item; if (Item != null) { byte dwp = 20; if (!Owner.AlternateEquipment) { dwp = 0; if (Item.Position >= 20) continue; } if (Item.Position == 4 + dwp) { if (!Owner.Equipment.Free((byte)(5 + dwp))) { Item = Owner.Equipment.TryGetItem((byte)(5 + dwp)); } } if (Item.Position == 9 + dwp || Item.Position == 12) continue; if (Item.Position == 5 + dwp) if (Item.ID.ToString().StartsWith("105")) continue; if (Kernel.Rate(25 + (int)(PKPoints > 30 ? 75 : 0))) { ushort x = X, y = Y; Game.Map Map = Kernel.Maps[MapID]; if (Map.SelectCoordonates(ref x, ref y)) { Owner.Equipment.RemoveToGround(Item.Position); var infos = Database.ConquerItemInformation.BaseInformations[(uint)Item.ID]; Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true); floorItem.Item = Item; floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item; floorItem.ItemID = (uint)Item.ID; floorItem.MapID = MapID; floorItem.MapObjType = Game.MapObjectType.Item; floorItem.X = x; floorItem.Y = y; floorItem.Type = Network.GamePackets.FloorItem.DropDetain; floorItem.OnFloor = Time32.Now; floorItem.ItemColor = floorItem.Item.Color; floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next; while (Map.Npcs.ContainsKey(floorItem.UID)) floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next; Owner.SendScreenSpawn(floorItem, true); Database.DetainedItemTable.DetainItem(Item, Owner, Killer.Owner); Owner.Equipment.UpdateEntityPacket(); ClientEquip eq = new ClientEquip(Owner); eq.DoEquips(Owner); Owner.Send(eq); Owner.LoadItemStats(); break; } } } } } if (PKPoints > 99) { if (KillerName.EntityFlag == EntityFlag.Entity) { Kernel.SendWorldMessage(new Network.GamePackets.Message(Name + " has been captured by " + KillerName.Name + " and sent in jail! The world is now safer!", System.Drawing.Color.Red, Message.Talk), Program.Values); Teleport(6000, 50, 50); } else { Kernel.SendWorldMessage(new Network.GamePackets.Message(Name + " has been captured and sent in jail! The world is now safer!", System.Drawing.Color.Red, Message.Talk), Program.Values); Teleport(6000, 50, 50); } } }
public void Die(Entity killer)
Network.PacketHandler.AddEnemy(this.Owner, killer.Owner);
if (killer.PKMode != BlackBlock.Game.Enums.PKMode.Jiang) { if (killer.EntityFlag == BlackBlock.Game.EntityFlag.Entity) { if (Kernel.Rate(50)) { DropRandomStuff(Killer); } } }
Over:
public static bool CanAttack(Game.Entity attacker, Game.Entity attacked, Database.SpellInformation spell, bool melee)
if (attacker.PKMode == BlackBlock.Game.Enums.PKMode.Jiang && attacked.MapID != 1036) { if (attacked.ContainsFlag(Update.Flags.FlashingName) || attacked.PKPoints > 99) { return true; } }