From 53927576e757571be899ef0f34d4d6bbb64a0aeb Mon Sep 17 00:00:00 2001 From: ronancpl Date: Mon, 22 May 2017 01:49:35 -0300 Subject: [PATCH] Scrolls for spike/cold protection + quest completion with equipped items Added mechanic for the scrolls for spikes on shoes and cold protection on capes. Fixed an issue where equipped items were being counted towards materials for quests, therefore showing odds behaviours when completing it. Fixed some minor issues on the dollhouse quest/event. --- mychanges_ptbr.txt | 5 +- nbproject/private/private.xml | 33 ++++++- scripts/event/DollHouse.js | 63 +++++-------- scripts/npc/world0/2040028.js | 43 ++++++--- sql/db_shopupdate.sql | 91 ++++++++++--------- src/client/MapleBuffStat.java | 2 +- src/client/MapleCharacter.java | 4 + .../handlers/PlayerInteractionHandler.java | 2 +- .../channel/handlers/ScrollHandler.java | 9 +- .../channel/handlers/StorageHandler.java | 2 - .../channel/handlers/UseCashItemHandler.java | 4 +- src/server/MapleTrade.java | 4 +- src/server/maps/HiredMerchant.java | 3 - .../quest/requirements/ItemRequirement.java | 2 +- 14 files changed, 152 insertions(+), 115 deletions(-) diff --git a/mychanges_ptbr.txt b/mychanges_ptbr.txt index dd3c97f02b..d6efc59b57 100644 --- a/mychanges_ptbr.txt +++ b/mychanges_ptbr.txt @@ -239,4 +239,7 @@ Corre 21 Maio 2017, Refatoração de código referente ao métodos de coleta de item pelos jogadores. Retiradas inconsistências entre infos de mobbook e "cartão-de-visitas" do jogador. -Foi retirado o gargalo no sistema sempre que jogador incorpora um novo card ao mobbook. \ No newline at end of file +Foi retirado o gargalo no sistema sempre que jogador incorpora um novo card ao mobbook. +Consertado bug em potencial ao tentar completar quest que requer item equipado. +Adição de scrolls: Scroll for cold protection, Scroll for spike for shoes. +Consertado quest-evento Dollhouse. \ No newline at end of file diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 607873874c..fa073e16d3 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,8 +3,37 @@ - file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/ItemPickupHandler.java - file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/tools/MaplePacketCreator.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/command/Commands.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/HiredMerchant.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/MapleStatEffect.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/AbstractPlayerInteraction.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/world0/2040020.js + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/world0/2040002.js + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/PlayerInteractionHandler.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/MapleItemInformationProvider.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/StorageHandler.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/UseCashItemHandler.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/inventory/Equip.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/event/EventInstanceManager.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/MapleBuffStat.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/MapleMap.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/MapleCharacter.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/world0/2040028.js + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/PlayerLoggedinHandler.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/event/EllinPQ.js + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/constants/ItemConstants.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/MapleReactor.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/MapleDragon.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/world0/2133000.js + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/inventory/MapleInventory.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/event/DollHouse.js + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/ScrollHandler.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/AbstractMapleMapObject.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/quest/MapleQuestRequirementType.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/npc/NPCConversationManager.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/MapleInventoryManipulator.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/quest/actions/PetSkillAction.java + file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/quest/MapleQuest.java diff --git a/scripts/event/DollHouse.js b/scripts/event/DollHouse.js index 625d0013e9..7df693d36a 100644 --- a/scripts/event/DollHouse.js +++ b/scripts/event/DollHouse.js @@ -24,8 +24,9 @@ **/ importPackage(Packages.tools); -var returnMap; -var map; +var entryMap = 922000010; +var exitMap = 221024400; +var eventTime = 10; //10 minutes var eim; function init() { @@ -33,59 +34,45 @@ function init() { } function playerEntry(eim, player) { - returnMap = em.getChannelServer().getMapFactory().getMap(221024400); - eim = em.getInstance("DollHouse"); - map = eim.getMapFactory().getMap(922000010); - player.changeMap(map, map.getPortal(0)); - map.shuffleReactors(); + eim.getInstanceMap(entryMap).shuffleReactors(); + eim.setExclusiveItems([4031094]); + + player.changeMap(entryMap, 0); em.setProperty("noEntry","true"); - em.schedule("timeOut", 600000); - player.getClient().getSession().write(MaplePacketCreator.getClock(600)); + + player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60)); + eim.startEventTimer(eventTime * 60000); } - - function playerExit(eim, player) { - em.setProperty("noEntry","false"); - player.changeMap(returnMap, returnMap.getPortal(4)); - //eim.unregisterPlayer(player); needed no more - em.cancel(); - em.disposeInstance("DollHouse"); + eim.unregisterPlayer(player); eim.dispose(); + em.setProperty("noEntry","false"); } -function timeOut() { - em.setProperty("noEntry","false"); +function scheduledTimeout(eim) { var player = eim.getPlayers().get(0); - player.changeMap(returnMap, returnMap.getPortal(4)); - //eim.unregisterPlayer(player); - em.cancel(); - em.disposeInstance("DollHouse"); - eim.dispose(); + playerExit(eim, eim.getPlayers().get(0)); + player.changeMap(exitMap, 4); } function playerDisconnected(eim, player) { - em.setProperty("noEntry","false"); - player.getMap().removePlayer(player); - player.setMap(returnMap); - //eim.unregisterPlayer(player); - em.cancel(); - em.disposeInstance("DollHouse"); - eim.dispose(); + playerExit(eim, player); } function clear(eim) { - em.setProperty("noEntry","false"); var player = eim.getPlayers().get(0); - player.changeMap(returnMap, returnMap.getPortal(4)); - //eim.unregisterPlayer(player); - em.cancel(); - em.disposeInstance("DollHouse"); + eim.unregisterPlayer(player); + player.changeMap(exitMap, 4); + eim.dispose(); + em.setProperty("noEntry","false"); } -function cancelSchedule() { +function changedMap(eim, chr, mapid) { + if(mapid != entryMap) playerExit(eim, chr); } -function dispose() { -} +function cancelSchedule() {} + +function dispose() {} diff --git a/scripts/npc/world0/2040028.js b/scripts/npc/world0/2040028.js index 36a4c50129..fe92011bf5 100644 --- a/scripts/npc/world0/2040028.js +++ b/scripts/npc/world0/2040028.js @@ -24,24 +24,39 @@ */ var greeting; +var status; function start() { - var greeting = "Thank you for finding the pendulum. Are you ready to return to Eos Tower?"; - if (cm.isQuestStarted(3230)) { - if (cm.haveItem(4031094)) { - cm.completeQuest(3230); - cm.gainItem(4031094, -1); - } else - greeting = "You haven't found the pendulum yet. Do you want to go back to Eos Tower?"; - } - cm.sendYesNo(greeting); + status = -1; + action(1, 0, 0); } function action(mode, type, selection) { - if (mode > 0) { - var em = cm.getEventManager("DollHouse"); - var eim = em.getInstance("DollHouse"); - eim.exitPlayer(cm.getPlayer()); + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) { + var greeting = "Thank you for finding the pendulum. Are you ready to return to Eos Tower?"; + if (cm.isQuestStarted(3230)) { + if (cm.haveItem(4031094)) { + cm.completeQuest(3230); + cm.gainItem(4031094, -1); + } else + greeting = "You haven't found the pendulum yet. Do you want to go back to Eos Tower?"; + } + cm.sendYesNo(greeting); + } else if(status == 1) { + cm.warp(221024400, 4); + cm.dispose(); + } } - cm.dispose(); } \ No newline at end of file diff --git a/sql/db_shopupdate.sql b/sql/db_shopupdate.sql index 7b02358529..aa77d42c0a 100644 --- a/sql/db_shopupdate.sql +++ b/sql/db_shopupdate.sql @@ -35,49 +35,50 @@ INSERT IGNORE INTO `shopitems` (`shopitemid`, `shopid`, `itemid`, `price`, `pitc (995055, 9201082, 2043001, 520000, 0, 24), (995056, 9201082, 2043801, 520000, 0, 25), (995057, 9201082, 2044601, 520000, 0, 26), -(995058, 9201082, 2040727, 10000, 0, 27), -(995059, 9201082, 2040807, 1000000, 0, 28), -(995060, 9201082, 2040026, 15000, 0, 29), -(995061, 9201082, 2040031, 15000, 0, 30), -(995062, 9201082, 2040302, 25000, 0, 31), -(995063, 9201082, 2040318, 25000, 0, 32), -(995064, 9201082, 2040323, 25000, 0, 33), -(995065, 9201082, 2040412, 20000, 0, 34), -(995066, 9201082, 2040419, 20000, 0, 35), -(995067, 9201082, 2040502, 25000, 0, 36), -(995068, 9201082, 2040514, 25000, 0, 37), -(995069, 9201082, 2040517, 25000, 0, 38), -(995070, 9201082, 2040534, 25000, 0, 39), -(995071, 9201082, 2040612, 20000, 0, 40), -(995072, 9201082, 2040702, 20000, 0, 41), -(995073, 9201082, 2040705, 25000, 0, 42), -(995074, 9201082, 2040805, 100000, 0, 43), -(995075, 9201082, 2040915, 55000, 0, 44), -(995076, 9201082, 2040920, 55000, 0, 45), -(995077, 9201082, 2041014, 30000, 0, 46), -(995078, 9201082, 2041017, 30000, 0, 47), -(995079, 9201082, 2041020, 30000, 0, 48), -(995080, 9201082, 2041023, 30000, 0, 49), -(995081, 9201082, 2044902, 50000, 0, 50), -(995082, 9201082, 2044702, 50000, 0, 51), -(995083, 9201082, 2043002, 50000, 0, 52), -(995084, 9201082, 2043802, 50000, 0, 53), -(995085, 9201082, 2044602, 50000, 0, 54), -(996000, 9201082, 2049200, 170000, 0, 55), -(996001, 9201082, 2049201, 220000, 0, 56), -(996002, 9201082, 2049202, 170000, 0, 57), -(996003, 9201082, 2049203, 220000, 0, 58), -(996004, 9201082, 2049204, 170000, 0, 59), -(996005, 9201082, 2049205, 220000, 0, 60), -(996006, 9201082, 2049206, 170000, 0, 61), -(996007, 9201082, 2049207, 220000, 0, 62), -(996008, 9201082, 2049208, 140000, 0, 63), -(996009, 9201082, 2049209, 170000, 0, 64), -(996010, 9201082, 2049210, 140000, 0, 65), -(996011, 9201082, 2049211, 170000, 0, 66), -(996196, 9201082, 2070016, 120000000, 0, 67), -(996197, 9201082, 2070018, 190000000, 0, 68), -(994782, 9201082, 2030007, 1800000, 0, 69), -(994783, 9201082, 4001017, 60000000, 0, 70); +(995058, 9201082, 2040727, 50000, 0, 27), +(995059, 9201082, 2041058, 50000, 0, 28), +(995060, 9201082, 2040807, 1000000, 0, 29), +(995061, 9201082, 2040026, 15000, 0, 30), +(995062, 9201082, 2040031, 15000, 0, 31), +(995063, 9201082, 2040302, 25000, 0, 32), +(995064, 9201082, 2040318, 25000, 0, 33), +(995065, 9201082, 2040323, 25000, 0, 34), +(995066, 9201082, 2040412, 20000, 0, 35), +(995067, 9201082, 2040419, 20000, 0, 36), +(995068, 9201082, 2040502, 25000, 0, 37), +(995069, 9201082, 2040514, 25000, 0, 38), +(995070, 9201082, 2040517, 25000, 0, 39), +(995071, 9201082, 2040534, 25000, 0, 40), +(995072, 9201082, 2040612, 20000, 0, 41), +(995073, 9201082, 2040702, 20000, 0, 42), +(995074, 9201082, 2040705, 25000, 0, 43), +(995075, 9201082, 2040805, 100000, 0, 44), +(995076, 9201082, 2040915, 55000, 0, 45), +(995077, 9201082, 2040920, 55000, 0, 46), +(995078, 9201082, 2041014, 30000, 0, 47), +(995079, 9201082, 2041017, 30000, 0, 48), +(995080, 9201082, 2041020, 30000, 0, 49), +(995081, 9201082, 2041023, 30000, 0, 50), +(995082, 9201082, 2044902, 50000, 0, 51), +(995083, 9201082, 2044702, 50000, 0, 52), +(995084, 9201082, 2043002, 50000, 0, 53), +(995085, 9201082, 2043802, 50000, 0, 54), +(995086, 9201082, 2044602, 50000, 0, 55), +(996000, 9201082, 2049200, 170000, 0, 56), +(996001, 9201082, 2049201, 220000, 0, 57), +(996002, 9201082, 2049202, 170000, 0, 58), +(996003, 9201082, 2049203, 220000, 0, 59), +(996004, 9201082, 2049204, 170000, 0, 60), +(996005, 9201082, 2049205, 220000, 0, 61), +(996006, 9201082, 2049206, 170000, 0, 62), +(996007, 9201082, 2049207, 220000, 0, 63), +(996008, 9201082, 2049208, 140000, 0, 64), +(996009, 9201082, 2049209, 170000, 0, 65), +(996010, 9201082, 2049210, 140000, 0, 66), +(996011, 9201082, 2049211, 170000, 0, 67), +(996196, 9201082, 2070016, 120000000, 0, 68), +(996197, 9201082, 2070018, 190000000, 0, 69), +(994782, 9201082, 2030007, 1800000, 0, 70), +(994783, 9201082, 4001017, 60000000, 0, 71); -UPDATE shopitems SET price = 11*price WHERE (`position` >= 27 and `position` <= 66 and `shopid` = 9201082); \ No newline at end of file +UPDATE shopitems SET price = 11*price WHERE (`position` >= 27 and `position` <= 67 and `shopid` = 9201082); \ No newline at end of file diff --git a/src/client/MapleBuffStat.java b/src/client/MapleBuffStat.java index e890f19abe..a7467e5552 100644 --- a/src/client/MapleBuffStat.java +++ b/src/client/MapleBuffStat.java @@ -111,7 +111,7 @@ public enum MapleBuffStat { SMART_KNOCKBACK(0x10000000000L, true), PYRAMID_PQ(0x20000000000L, true), ENERGY_CHARGE(0x4000000000000L, true), - DASH2(0x8000000000000L, true), // correct (speed) + DASH2(0x8000000000000L, true), // correct (speed) DASH(0x10000000000000L, true), // correct (jump) MONSTER_RIDING(0x20000000000000L, true), SPEED_INFUSION(0x40000000000000L, true), diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java index ccf4d0919e..e5bb21b0cb 100644 --- a/src/client/MapleCharacter.java +++ b/src/client/MapleCharacter.java @@ -1197,6 +1197,10 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject { } } + for(Item it: this.getInventory(MapleInventoryType.EQUIPPED).list()) { + if((it.getFlag() & ItemConstants.COLD) == ItemConstants.COLD && map.getReturnMapId() == 211000000) return(true); //protection from cold + } + return false; } diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java index cfb7b52547..f280905046 100644 --- a/src/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -415,7 +415,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { if (chr.getTrade() != null) { if ((quantity <= item.getQuantity() && quantity >= 0) || ItemConstants.isRechargable(item.getItemId())) { if (ii.isDropRestricted(item.getItemId())) { // ensure that undroppable items do not make it to the trade window - if (!((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA || (item.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES)) { + if (!((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA)) { c.announce(MaplePacketCreator.enableActions()); return; } diff --git a/src/net/server/channel/handlers/ScrollHandler.java b/src/net/server/channel/handlers/ScrollHandler.java index ea33cd9733..8549b33440 100644 --- a/src/net/server/channel/handlers/ScrollHandler.java +++ b/src/net/server/channel/handlers/ScrollHandler.java @@ -30,6 +30,7 @@ import client.inventory.Item; import client.inventory.MapleInventory; import client.inventory.MapleInventoryType; import client.inventory.ModifyInventory; +import constants.ItemConstants; import java.util.ArrayList; import java.util.List; import net.AbstractMaplePacketHandler; @@ -97,7 +98,7 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { ScrollResult scrollSuccess = Equip.ScrollResult.FAIL; // fail if (scrolled == null) { scrollSuccess = Equip.ScrollResult.CURSE; - } else if (scrolled.getLevel() > oldLevel || (isCleanSlate(scroll.getItemId()) && scrolled.getUpgradeSlots() == oldSlots + 1)) { + } else if (scrolled.getLevel() > oldLevel || (isCleanSlate(scroll.getItemId()) && scrolled.getUpgradeSlots() == oldSlots + 1) || isFlagModifier(scroll.getItemId(), scrolled.getFlag())) { scrollSuccess = Equip.ScrollResult.SUCCESS; } MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, scroll.getPosition(), (short) 1, false); @@ -123,6 +124,12 @@ public final class ScrollHandler extends AbstractMaplePacketHandler { } } + private boolean isFlagModifier(int scrollId, byte flag) { + if(scrollId == 2041058 && ((flag & ItemConstants.COLD) == ItemConstants.COLD)) return true; + if(scrollId == 2040727 && ((flag & ItemConstants.SPIKES) == ItemConstants.SPIKES)) return true; + return false; + } + private boolean isCleanSlate(int scrollId) { return scrollId > 2048999 && scrollId < 2049004; } diff --git a/src/net/server/channel/handlers/StorageHandler.java b/src/net/server/channel/handlers/StorageHandler.java index 412450ccb6..2f4134bcdb 100644 --- a/src/net/server/channel/handlers/StorageHandler.java +++ b/src/net/server/channel/handlers/StorageHandler.java @@ -82,8 +82,6 @@ public final class StorageHandler extends AbstractMaplePacketHandler { FilePrinter.printError(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " took out " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); if ((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA) { item.setFlag((byte) (item.getFlag() ^ ItemConstants.KARMA)); //items with scissors of karma used on them are reset once traded - } else if (item.getType() == 2 && (item.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES){ - item.setFlag((byte) (item.getFlag() ^ ItemConstants.SPIKES)); } MapleInventoryManipulator.addFromDrop(c, item, false); storage.sendTakenOut(c, ii.getInventoryType(item.getItemId())); diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java index f0312fda52..87b2ce556a 100644 --- a/src/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -490,9 +490,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler { c.announce(MaplePacketCreator.enableActions()); return; } - if (type.equals(MapleInventoryType.USE)) { - item.setFlag((byte) ItemConstants.SPIKES); - } else { + if (!type.equals(MapleInventoryType.USE)) { item.setFlag((byte) ItemConstants.KARMA); } diff --git a/src/server/MapleTrade.java b/src/server/MapleTrade.java index fcb9c8e6b4..b1e52e6b9b 100644 --- a/src/server/MapleTrade.java +++ b/src/server/MapleTrade.java @@ -88,10 +88,8 @@ public class MapleTrade { for (Item item : exchangeItems) { if ((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA) item.setFlag((byte) (item.getFlag() ^ ItemConstants.KARMA)); //items with scissors of karma used on them are reset once traded - else if (item.getType() == 2 && (item.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES) - item.setFlag((byte) (item.getFlag() ^ ItemConstants.SPIKES)); - MapleInventoryManipulator.addFromDrop(chr.getClient(), item, true); + MapleInventoryManipulator.addFromDrop(chr.getClient(), item, true); } if (exchangeMeso > 0) { chr.gainMeso(exchangeMeso - getFee(exchangeMeso), true, true, true); diff --git a/src/server/maps/HiredMerchant.java b/src/server/maps/HiredMerchant.java index 8b030353b5..0849fc5830 100644 --- a/src/server/maps/HiredMerchant.java +++ b/src/server/maps/HiredMerchant.java @@ -143,9 +143,6 @@ public class HiredMerchant extends AbstractMapleMapObject { if ((newItem.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA) { newItem.setFlag((byte) (newItem.getFlag() ^ ItemConstants.KARMA)); } - if (newItem.getType() == 2 && (newItem.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES) { - newItem.setFlag((byte) (newItem.getFlag() ^ ItemConstants.SPIKES)); - } if (quantity < 1 || pItem.getBundles() < 1 || !pItem.isExist() || pItem.getBundles() < quantity) { c.announce(MaplePacketCreator.enableActions()); return; diff --git a/src/server/quest/requirements/ItemRequirement.java b/src/server/quest/requirements/ItemRequirement.java index e4f7fc4a4c..1e9351b404 100644 --- a/src/server/quest/requirements/ItemRequirement.java +++ b/src/server/quest/requirements/ItemRequirement.java @@ -73,7 +73,7 @@ public class ItemRequirement extends MapleQuestRequirement { count += item.getQuantity(); } //Weird stuff, nexon made some quests only available when wearing gm clothes. This enables us to accept it >< - if (iType.equals(MapleInventoryType.EQUIP)) { + if (iType.equals(MapleInventoryType.EQUIP) && chr.isGM()) { for (Item item : chr.getInventory(MapleInventoryType.EQUIPPED).listById(itemId)) { count += item.getQuantity(); }