PHP Code:
public static void EquipItem(ItemUsage itemUsage, Client.GameState client)
{
Interfaces.IConquerItem item = null;
client.Entity.AttackPacket = null;
if (client.Inventory.TryGetItem(itemUsage.UID, out item))
{
if (item.Suspicious)
return;
switch (item.ID)
{
case 1200000:
case 1200001:
case 1200002:
{
UseItem(item, client);
return;
}
default:
{
if (itemUsage.dwParam == 17 && ItemPosition(item.ID) == 0)
{
UseItem(item, client);
return;
}
else if (itemUsage.dwParam == 0 && ItemPosition(item.ID) == 0)
{
UseItem(item, client);
return;
}
break;
}
}
#region Sanity checks
bool can2hand = false;
bool can2wpn = false;
if (client.Entity.Class >= 11 && client.Entity.Class <= 75)
can2hand = true;
if (client.Entity.Class >= 11 && client.Entity.Class <= 15 || client.Entity.Class >= 51 && client.Entity.Class <= 55 || client.Entity.Class >= 61 && client.Entity.Class <= 65 || client.Entity.Class >= 71 && client.Entity.Class <= 75)
can2wpn = true;
if (!Equipable(item, client))
return;
if (ItemPosition(item.ID) == 5)
{
itemUsage.dwParam = 5;
if (!can2hand && !can2wpn)
return;
if (client.Equipment.Free(4) || (client.Equipment.TryGetItem(4).ID / 1000 != 500 && IsArrow(item.ID)))
return;
}
if (ItemPosition(item.ID) == 4)
{
if (itemUsage.dwParam == 5)
if (!can2hand || !can2wpn)
return;
}
if (!((itemUsage.dwParam == 4 || itemUsage.dwParam == 5) && (ItemPosition(item.ID) == 4 || ItemPosition(item.ID) == 5)))
{
if (!IsAccessory(item.ID))
itemUsage.dwParam = ItemPosition(item.ID);
}
bool twohand = IsTwoHand(item.ID);
if (!twohand && itemUsage.dwParam == 4)
if (!client.Equipment.Free(5))
if (client.Inventory.Count < 40)
{
if (IsArrow(client.Equipment.TryGetItem(5).ID))
client.Equipment.Remove(5);
else
{
if (client.Equipment.TryGetItem(4) != null)
{
if (IsTwoHand(client.Equipment.TryGetItem(4).ID))
client.Equipment.Remove(4);
}
}
}
#endregion
if (client.Map.ID == 1039)
client.Entity.AttackPacket = null;
item.Position = (ushort)itemUsage.dwParam;
if (ItemPosition(item.ID) == 5 && !IsArrow(item.ID))
{
if (IsTwoHand(client.Equipment.TryGetItem(4).ID))
{
if (!client.Spells.ContainsKey(10311))//Perseverance
{
client.Send(new Message("You need to know Perseverance (Warrior Pure skill) to be able to wear 2-handed weapon and shield.", System.Drawing.Color.White, Message.Talk));
return;
}
}
}
Database.ConquerItemTable.ClearPosition(client.Entity.UID, (byte)itemUsage.dwParam);
client.Inventory.Remove(item, Game.Enums.ItemUse.Move);
if (client.Equipment.Free((byte)itemUsage.dwParam))
{
if (twohand)
client.Equipment.Remove(5);
item.Position = (byte)itemUsage.dwParam;
client.Equipment.Add(item);
item.Mode = Game.Enums.ItemMode.Update;
item.Send(client);
}
else
{
if (twohand)
client.Equipment.Remove(5);
client.Equipment.Remove((byte)itemUsage.dwParam);
item.Position = (byte)itemUsage.dwParam;
client.Equipment.Add(item);
}
client.CalculateStatBonus();
client.CalculateHPBonus();
client.SendStatMessage();
ClientEquip equips = new ClientEquip();
equips.DoEquips(client);
client.Send(equips);
}
}
i was just thinking in handle coz it wont attack if i use one hand and shield wont hit mobs