Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package net.channel.handler;
import client.IEquip;
import client.IItem;
import client.MapleClient;
import client.MapleInventoryType;
//import client.anticheat.CheatingOffense;
import net.AbstractMaplePacketHandler;
import server.MapleInventoryManipulator;
import tools.MaplePacketCreator;
import tools.Randomizer;
import tools.data.input.SeekableLittleEndianAccessor;
/**
*
* @author iPoopMagic
*/
public class MagnifyingGlassHandler extends AbstractMaplePacketHandler {
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
slea.readInt(); // Timestamp
byte type = (byte) slea.readShort();
byte slot = (byte) slea.readShort();
IEquip item = (IEquip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem(slot);
IItem toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(type);
// Need to check to make sure magnifying glass, and it will work on the item.
if(toUse.getItemId() != 2460000 && toUse.getItemId() != 2460001 && toUse.getItemId() != 2460002 && toUse.getItemId() != 2460003) {
// c.getPlayer().getCheatTracker().registerOffense(CheatingOffense.PACKET_EDITING, "M-1: " + Integer.toString(toUse.getItemId()));
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
if (toUse.getQuantity() < 1) { //If they don't have magnifying glass
//c.getPlayer().getCheatTracker().registerOffense(CheatingOffense.PACKET_EDITING, "M-2: " + toUse.getItemId());
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
if (item.getPotential() < 1 || item.getPotential() > 3) { // Its not a hidden potential.
// c.getPlayer().getCheatTracker().registerOffense(CheatingOffense.PACKET_EDITING, "M-3: Not hidden potent");
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
int rand = Randomizer.nextInt(100);
if (rand >= 95 || item.getPotential() == 3) { // 5% chance for Unique Item
item.setPotential((byte) 7);
item.setPotent1(getRandomPotentialStat());
item.setPotent2(getRandomPotentialStat());
item.setPotent3(getRandomPotentialStat());
} else if (rand >= 85 || item.getPotential() == 2) { // 25% chance for Epic Equip
rand = Randomizer.nextInt(100);
item.setPotential((byte) 6);
item.setPotent1(getRandomPotentialStat());
item.setPotent2(getRandomPotentialStat());
if(rand > 80) {
item.setPotent2(getRandomPotentialStat());
item.setPotent3(getRandomPotentialStat());
}
} else { // 70% chance for Rare Equip
rand = Randomizer.nextInt(100);
item.setPotential((byte) 5);
item.setPotent1(getRandomPotentialStat());
item.setPotent2(getRandomPotentialStat());
if(rand > 95) {
item.setPotent1(getRandomPotentialStat());
item.setPotent2(getRandomPotentialStat());
item.setPotent3(getRandomPotentialStat());
} else if(rand > 80) {
item.setPotent2(getRandomPotentialStat());
item.setPotent3(getRandomPotentialStat());
}
}
c.getPlayer().equipChanged();
c.getPlayer().dropMessage("Potential Reaveled");
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, type, (short) 1, false);
c.getSession().write(MaplePacketCreator.showMagnifyingEffect(1, slot));
c.getSession().write(MaplePacketCreator.updateEquipSlot(item));
c.getSession().write(MaplePacketCreator.enableActions());
}
private short getRandomPotentialStat() {
short[] potentials = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10041, 10042, 10043, 10044, 10045, 10046, 10047, 10048, 10041, 10052, 10053, 10054, 10055, 10070, 10081, 10201, 10206, 10221, 10226, 10231, 10236, 10241, 10246, 10291, 20041, 20042, 20043, 20044, 20045, 20046, 20047, 20048, 20051, 20052, 20053, 20054, 20055, 20070, 20086, 20201, 20206, 20291, 20351, 20352, 20353, 20366, 20396, 20401, 20406, 20656, 30041, 30042, 30044, 30045, 30046, 30047, 30048, 30051, 30053, 30054, 30055, 30070, 30086, 30356, 30357, 30366, 30371, 30551, 30601, 30602, 31001, 31002, 31003, 31004};
int rand = Randomizer.nextInt(potentials.length);
return potentials[rand];
}
}
Thx to CheckPoint.