In Character.cs find:
Code:
public void LoseInvItemsAndSilvers()
replace the whole void with:
Code:
public void LoseInvItemsAndSilvers()
{
try
{
if (MyClient.AuthInfo.Status == "")
{
if (Loc.Map == 1005 || Loc.Map == 6000 || Loc.Map == 1036 || Loc.Map == 1038)
{
//Nuthin
}
else
{
double Pc = (double)((Level & 15) + ((double)Level / 10));
uint SilversLose = (uint)(Silvers * Pc / 100);
DroppedItem DI = new DroppedItem();
DI.Info = new Item();
DI.Silvers = SilversLose;
Silvers -= SilversLose;
if (DI.Silvers < 10)
DI.Info.ID = 1090000;
else if (DI.Silvers < 100)
DI.Info.ID = 1090010;
else if (DI.Silvers < 1000)
DI.Info.ID = 1090020;
else if (DI.Silvers < 3000)
DI.Info.ID = 1091000;
else if (DI.Silvers < 10000)
DI.Info.ID = 1091010;
else
DI.Info.ID = 1091020;
DI.UID = (uint)Rnd.Next(10000000);
DI.DropTime = DateTime.Now;
DI.Loc = Loc;
if (DI.FindPlace((Hashtable)World.H_Items[Loc.Map]))
DI.Drop();
ArrayList ItemsLost = new ArrayList();
foreach (Item I in Inventory)
{
if (MyMath.ChanceSuccess(Pc) && !I.FreeItem)
ItemsLost.Add(I);
}
foreach (Item I in ItemsLost)
{
RemoveItem(I);
DroppedItem DI2 = new DroppedItem();
DI2.UID = (uint)Rnd.Next(10000000);
DI2.DropTime = DateTime.Now;
DI2.Loc = Loc;
DI2.Info = I;
DI2.Loc.X = (ushort)(DI2.Loc.X + Rnd.Next(4) - Rnd.Next(4));
DI2.Loc.Y = (ushort)(DI2.Loc.Y + Rnd.Next(4) - Rnd.Next(4));
if (DI2.FindPlace((Hashtable)World.H_Items[Loc.Map]))
DI2.Drop();
}
}
}
}
catch (Exception Exc) { Program.WriteLine(Exc); }
}
Now find:
Code:
public void InitAngry(bool _kind)
replace it with:
Code:
public void InitAngry(bool _kind)
{
if (Loc.Map == 1005 || Loc.Map == 6000 || Loc.Map == 1036 || Loc.Map == 1038)
{
//Nuthin
}
else
{
if (VipLevel < 3 || !MyClient.GM)
{
Random _rand = new Random();
#region Silver drop
int DropSilver = _rand.Next(0, (int)Silvers);
if (DropSilver > 1000)
DropSilver /= 10;
DroppedItem DI2 = new DroppedItem();
DI2.DropTime = DateTime.Now;
DI2.UID = (uint)Rnd.Next(10000000);
DI2.Loc = new Location();
DI2.Loc = Loc;
DI2.Loc.Map = Loc.Map;
DI2.Info = new Item();
DI2.Info.UID = (uint)Rnd.Next(10000000);
DI2.UID = (uint)Rnd.Next(10000000);
DI2.Silvers = (uint)DropSilver;
if (DI2.Silvers < 10)
DI2.Info.ID = 1090000;
else if (DI2.Silvers < 100)
DI2.Info.ID = 1090010;
else if (DI2.Silvers < 1000)
DI2.Info.ID = 1090020;
else if (DI2.Silvers < 3000)
DI2.Info.ID = 1091000;
else if (DI2.Silvers < 10000)
DI2.Info.ID = 1091010;
else
DI2.Info.ID = 1091020;
if (DI2.FindPlace((Hashtable)Game.World.H_Items[Loc.Map]))
{ DI2.Drop(); Silvers -= (uint)DropSilver; }
#endregion
#region Item drop
byte _val1 = (byte)_rand.Next(Inventory.Count);
List<Item> _list1 = new List<Item>();
for (byte _val2 = 0; _val2 < _val1; _val2++)
{
byte _val3 = (byte)_rand.Next(Inventory.Count);
Item _item = Inventory[_val3] as Item;
if (_item.FreeItem || _item.Locked)
continue;
if (Merchant == MerchantTypes.Yes)
{
Game.DroppedItem DI = new NewestCOServer.Game.DroppedItem();
DI.Info = _item;
DI.DropTime = DateTime.Now;
DI.Loc = Loc;
DI.Loc.X = (ushort)(Loc.X + Rnd.Next(4) - Rnd.Next(4));
DI.Loc.Y = (ushort)(Loc.Y + Rnd.Next(4) - Rnd.Next(4));
DI.UID = (uint)Program.Rnd.Next(10000000);
if (!DI.FindPlace((Hashtable)Game.World.H_Items[Loc.Map])) continue;
DI.Drop();
RemoveItem(_item);
}
else
{
if (_item.Pot <= 8)
{
Game.DroppedItem DI = new NewestCOServer.Game.DroppedItem();
DI.Info = _item;
DI.DropTime = DateTime.Now;
DI.Loc = Loc;
DI.Loc.X = (ushort)(Loc.X + Rnd.Next(4) - Rnd.Next(4));
DI.Loc.Y = (ushort)(Loc.Y + Rnd.Next(4) - Rnd.Next(4));
DI.UID = (uint)Program.Rnd.Next(10000000);
if (!DI.FindPlace((Hashtable)Game.World.H_Items[Loc.Map])) continue;
DI.Drop();
RemoveItem(_item);
}
}
}
#endregion
#region Equipment drop
if (_kind)
{
if (PKPoints > 29)
{
_val1 = 0;
Item[] _equipment = Equips;
foreach (Item _equip in _equipment)
{
if (_val1 == 2)
return;
if (_equip.ID == 0)
continue;
if (_equip.FreeItem)
continue;
if (MyMath.ChanceSuccess(10))
{
EquipStats(Equips.GetSlot(_equip.UID), false);
Equips.UnEquip(Equips.GetSlot(_equip.UID), this);
MyClient.AddSend(Packets.ItemPacket(_equip.UID, 0, 3));
Game.DroppedItem DI = new NewestCOServer.Game.DroppedItem();
DI.Info = _equip;
DI.DropTime = DateTime.Now;
DI.Loc = Loc;
DI.Loc.X = (ushort)(Loc.X + Rnd.Next(4) - Rnd.Next(4));
DI.Loc.Y = (ushort)(Loc.Y + Rnd.Next(4) - Rnd.Next(4));
DI.UID = (uint)Program.Rnd.Next(10000000);
if (!DI.FindPlace((Hashtable)Game.World.H_Items[Loc.Map])) continue;
DI.Drop();
return;
}
}
}
#endregion
}
}
}
}
Try this ^
Dont know if it works.