1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
net.sf.odinms.net.channel.handler
import net.sf.odinms.client.IItem;
import net.sf.odinms.client.MapleCharacter;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.client.MapleInventory;
import net.sf.odinms.client.MapleInventoryType;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.scripting.npc.NPCScriptManager;
import net.sf.odinms.server.MapleInventoryManipulator;
import net.sf.odinms.server.MapleItemInformationProvider;
import net.sf.odinms.server.MapleStatEffect;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
import org.apache.mina.common.IoSession;
public class UseItemHandler
extends AbstractMaplePacketHandler
{
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c)
{
c.getPlayer().resetAfkTime();
if (!c.getPlayer().isAlive())
{
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
slea.readInt();
byte slot = (byte)slea.readShort();
int itemId = slea.readInt();
IItem toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot);
if (itemId == 2022118)
{
c.getPlayer().dropMessage(1, "請保留該物品. 他將會讓妳衝捲100%過.");
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
if (itemId == 2022065)
{
NPCScriptManager.getInstance().start(c, 9010000, "JobChanger", null);
}
else if ((toUse != null) && (toUse.getQuantity() > 0))
{
if (toUse.getItemId() != itemId) {
return;
}
if (ii.isTownScroll(itemId))
{
if (ii.getItemEffect(toUse.getItemId()).applyTo(c.getPlayer())) {
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short)1, false);
}
c.getSession().write(MaplePacketCreator.enableActions());
return;
}
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short)1, false);
ii.getItemEffect(toUse.getItemId()).applyTo(c.getPlayer());
}
}
}