Code:
case 181: // Using magic on items on the flore (soul) int magicOnItemY = inStream.readSignedWordBigEndian(); int magicOnItemID = inStream.readUnsignedWord(); int magicOnItemX = inStream.readSignedWordBigEndian(); int magicOnItemSpellID = inStream.readUnsignedWordA(); int offsetY3 = (magicOnItemX - absX); int offsetX3 = (magicOnItemY - absY); if (magicOnItemSpellID == 1168) // Created by matthew (soul is an idiot) { if (playerLevel[6] >= 33) { if ((playerHasItemAmount(563, 1) == false) || (playerHasItemAmount(556, 5) == false) && (!HasAirStaff())) { sendMessage("You do not have enough runes to cast this spell."); } if ((playerHasItemAmount(563, 1) == true) && (playerHasItemAmount(556, 5) == true) || (HasAirStaff())) { if (ItemHandler.itemExists(magicOnItemID, magicOnItemX, magicOnItemY)) { // added By Matthew removeGroundItem(magicOnItemX, magicOnItemY, magicOnItemID); int itemAmount = ItemHandler.itemAmount(magicOnItemID, magicOnItemX, magicOnItemY); ItemHandler.removeItem(magicOnItemID, magicOnItemX, magicOnItemY, itemAmount); addItem(magicOnItemID, itemAmount); stillgfx(142, absY, absX); setAnimation(711); teleportToX = absX; teleportToY = absY; stillgfx(144, magicOnItemY, magicOnItemX); resetItems(3214); } else { sendMessage("The Item is either gone, or somebody has already picked it up."); } } if (HasAirStaff()) { deleteItem(563, getItemSlot(563), 1); // Remove Law rune } else if (!HasAirStaff()) { deleteItem(563, getItemSlot(563), 1); // Remove Law rune deleteItem(556, getItemSlot(556), 1); // Remove Air rune } } else if (playerLevel[6] <= 32) { sendMessage("You need a magic level of 33 to cast this spell."); } } break;
I have this on my server and it fixed dupes & has proper grabbing.