//equip an item public Boolean equipItem(int fromInvID, int toEquipID, Equipment equip) { updateInv(); if (equipping == true) { fromInvID = seq.IndexOf(8); if (fromInvID == -1) { Console.WriteLine("Cannot equip item [item index missing]"); return(false); } } Item itemF; //swap if holdingItem if (indexHold != -1) { int saveSwapHash = seq[indexToSwap]; seq[indexToSwap] = -1; seq[nextFreeSequence()] = seq[indexHold]; seq[indexHold] = saveSwapHash; indexHold = -1; itemF = holdingItem; } else { //remove item from inv if (seq[fromInvID] == -1) { Console.WriteLine("Cannot equip item [item missing]"); return(false); } itemF = inv[seq[fromInvID]]; if (itemF == null) { Console.WriteLine("Cannot equip item [item null(ghost)]"); return(false); } removeItemFromInv(seq[fromInvID]); seq[fromInvID] = -1; } ItemData itemE = ItemDataCache.Instance.getItemData(itemF.getItemID()); Console.WriteLine("to equip slot {0} | itemcate {1}", toEquipID, itemE.getCategory()); if (!itemE.getClassUsable()[equip.getOwner().getcClass() - 1]) { Console.WriteLine("nie da sie ubrać qq :[ nie dla klasy huj"); return(false); } if (itemE.getMinLvl() > equip.getOwner().getLevel()) { Console.WriteLine("nie da sie ubrać qq :[ za niski lvlion"); return(false); } if (itemE.getMaxLvl() < equip.getOwner().getLevel()) { Console.WriteLine("nie da sie ubrać qq :[ za wysoki lvlion"); return(false); } if (itemE.getFaction() != 0 && equip.getOwner().getFaction() != itemE.getFaction()) { Console.WriteLine("not for yar faction"); return(false); } short[] equipstats = itemE.getRequirementStats(); short[] charstats = equip.getOwner().getCStats(); for (int i = 0; i < 5; i++) { if (equipstats[i] > charstats[i]) { Console.WriteLine("nie da sie ubrać qq :[ za niskie staty :<<"); return(false); } } switch (toEquipID) { /*0, cap * 1, neck * 2, cape * 3, jacket * 4, pants * 5, armor * 6, brace * 7, wep 1 * 8, wep 2 * 9, ring 1 * 10, ring 2 * 11, shoes * 12, bird * 13, tablet * 14, fame pad * 15, mount * 16, bead*/ case 0: { if (itemE.getCategory() != 18) { return(false); } break; } case 1: { if (itemE.getCategory() != 20) { return(false); } break; } case 2: { break; } case 3: { if (itemE.getCategory() != 13) { return(false); } break; } case 4: { if (itemE.getCategory() != 14) { return(false); } break; } case 5: { if (itemE.getCategory() != 15) { return(false); } break; } case 6: { if (itemE.getCategory() != 22) { return(false); } break; } case 7: case 8: { if (itemE.getCategory() < 1 || itemE.getCategory() > 12) { return(false); } break; } case 9: case 10: { if (itemE.getCategory() != 21) { return(false); } break; } case 11: { if (itemE.getCategory() != 17) { return(false); } break; } case 12: case 13: { if (itemE.getCategory() != 23 && itemE.getCategory() != 53) { return(false); } break; } case 14: { break; } case 15: { if (itemE.getCategory() != 52 && itemE.getCategory() != 53 && itemE.getCategory() != 55) { return(false); } break; } case 16: { if (itemE.getCategory() != 47) { return(false); } break; } default: { return(false); } } //equip if (equip.getEquipments().ContainsKey((byte)toEquipID)) { //8 is imaginary slot seq[nextFreeSequence()] = 8; putIntoInv(8, 0, equip.getEquipments()[(byte)toEquipID]); equip.getEquipments()[(byte)toEquipID] = itemF; equipping = true; } else { equip.getEquipments()[(byte)toEquipID] = itemF; } saveInv(); return(true); }