package scripting.item; import client.MapleClient; import client.Skill; import client.SkillEntry; import client.SkillFactory; import client.inventory.Item; import client.inventory.MapleInventoryType; import constants.GameConstants; import java.util.Map; import javax.script.Invocable; import scripting.ScriptType; import scripting.npc.NPCConversationManager; import server.MapleInventoryManipulator; import tools.MaplePacketCreator; public class ItemActionManager extends NPCConversationManager { private final Item item; public ItemActionManager(MapleClient c, int npc, Item item, Invocable iv) { super(c, npc, String.valueOf(item.getItemId()), ScriptType.ITEM, iv); this.item = item; } public String getSkillMenu(int skillMaster) { String menu = ""; for (Map.Entry<Skill, SkillEntry> ret : c.getPlayer().getSkills().entrySet()) { if (GameConstants.getSkillBookBySkill(ret.getKey().getId()) > 2 && ret.getKey().getMaxLevel() > 10 && ret.getValue().masterlevel < ret.getKey().getMaxLevel()) { if (skillMaster > 20) { if (ret.getValue().masterlevel < 30 && ret.getValue().masterlevel >= 20 && ret.getKey().getMaxLevel() > 20) { menu += "\r\n#L" + ret.getKey().getId() + "# #s" + ret.getKey().getId() + "# #fn黑体##fs14##e#q" + ret.getKey().getId() + "##n#fs##fn##l"; } } else { if (ret.getValue().masterlevel < 20) { menu += "\r\n#L" + ret.getKey().getId() + "# #s" + ret.getKey().getId() + "# #fn黑体##fs14##e#q" + ret.getKey().getId() + "##n#fs##fn##l"; } } } } return menu; } public boolean canUseSkillBook(int skillId, int masterLevel) { if (masterLevel > 0) { final Skill CurrSkillData = SkillFactory.getSkill(skillId); if (c.getPlayer().getSkillLevel(CurrSkillData) >= CurrSkillData.getMaxLevel()) { return false; } int a = c.getPlayer().getSkillLevel(CurrSkillData); if ((c.getPlayer().getSkillLevel(CurrSkillData) >= 5 && masterLevel == 20) || (c.getPlayer().getSkillLevel(CurrSkillData) >= 15 && masterLevel == 30)) { return true; } } return false; } public void useSkillBook(int skillId, int masterLevel) { final Skill CurrSkillData = SkillFactory.getSkill(skillId); masterLevel = masterLevel > CurrSkillData.getMaxLevel() ? CurrSkillData.getMaxLevel() : masterLevel; c.getPlayer().changeSingleSkillLevel(CurrSkillData, c.getPlayer().getSkillLevel(CurrSkillData), (byte) masterLevel); c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.useSkillBook(c.getPlayer(), 0, 0, true, true)); c.getSession().write(MaplePacketCreator.enableActions()); } public Item getItem() { return item; } public int getItemId() { return item.getItemId(); } public int getPosition() { return item.getPosition(); } public boolean used() { return used(1); } public boolean used(int q) { return MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.getByType(item.getType()), item.getPosition(), (short) q, true, false); } public boolean usedAll() { return MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.getByType(item.getType()), item.getPosition(), (short) item.getQuantity(), true, false); } public void dispose(int remove) { if (remove == 0) { usedAll(); } else if (remove > 0) { used(remove); } ItemScriptManager.getInstance().dispose(this, getClient()); } @Override public void dispose() { dispose(-1); } }