package handling.channel.handler;
import client.MapleCharacter;
import client.MapleClient;
import client.inventory.Item;
import client.inventory.ItemFlag;
import client.inventory.MapleInventoryType;
import server.MapleInventoryManipulator;
import server.MapleItemInformationProvider;
import server.maps.MapleExtractor;
import tools.MaplePacketCreator;
import tools.data.input.SeekableLittleEndianAccessor;
public class ItemMakerHandler {
public static void UseRecipe(SeekableLittleEndianAccessor slea, MapleClient c, MapleCharacter chr) {
if ((chr == null) || (!chr.isAlive()) || (chr.getMap() == null) || (chr.hasBlockedInventory())) {
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
byte slot = (byte) slea.readShort();
int itemId = slea.readInt();
Item toUse = chr.getInventory(MapleInventoryType.USE).getItem((short) slot);
if ((toUse == null) || (toUse.getQuantity() < 1) || (toUse.getItemId() != itemId) || (itemId / 10000 != 251)) {
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
if (MapleItemInformationProvider.getInstance().getItemEffect(toUse.getItemId()).applyTo(chr)) {
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, (short) slot, (short) 1, false);
}
}
public static void MakeExtractor(SeekableLittleEndianAccessor slea, MapleClient c, MapleCharacter chr) {
if ((chr == null) || (!chr.isAlive()) || (chr.getMap() == null) || (chr.hasBlockedInventory())) {
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
int itemId = slea.readInt();
if (itemId > 0) {
int fee = slea.readInt();
Item toUse = chr.getInventory(MapleInventoryType.SETUP).findById(itemId);
if ((toUse == null) || (toUse.getQuantity() < 1) || (itemId / 10000 != 304) || (fee <= 0) || (chr.getExtractor() != null) || (!chr.getMap().isTown())) {
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
chr.setExtractor(new MapleExtractor(chr, itemId, fee, chr.getFH()));
chr.getMap().spawnExtractor(chr.getExtractor());
} else {
chr.removeExtractor();
}
}
}