diff --git a/scripts/map/onUserEnter/explorationPoint.js b/scripts/map/onUserEnter/explorationPoint.js index 5e0f278385..07681da33e 100644 --- a/scripts/map/onUserEnter/explorationPoint.js +++ b/scripts/map/onUserEnter/explorationPoint.js @@ -31,7 +31,7 @@ function start(ms) { ms.explorerQuest(29014, "Sleepywood Explorer");//Sleepywood Explorer } else if (ms.getPlayer().getMapId() >= 200000000 && ms.getPlayer().getMapId() <= 211041800) { ms.explorerQuest(29006, "El Nath Mts. Explorer");//El Nath Mts. Explorer - } else if (ms.getPlayer().getMapId() >= 220000000 && ms.getPlayer().getMapId() <= 222010400) { + } else if (ms.getPlayer().getMapId() >= 220000000 && ms.getPlayer().getMapId() <= 222020000) { ms.explorerQuest(29007, "Ludus Lake Explorer");//Ludus Lake Explorer } else if (ms.getPlayer().getMapId() >= 230000000 && ms.getPlayer().getMapId() <= 230040401) { ms.explorerQuest(29008, "Undersea Explorer");//Undersea Explorer diff --git a/src/main/java/scripting/map/MapScriptMethods.java b/src/main/java/scripting/map/MapScriptMethods.java index ab6c68b8ff..e993115273 100644 --- a/src/main/java/scripting/map/MapScriptMethods.java +++ b/src/main/java/scripting/map/MapScriptMethods.java @@ -103,6 +103,10 @@ public class MapScriptMethods extends AbstractPlayerInteraction { public void explorerQuest(short questid, String questName) { Quest quest = Quest.getInstance(questid); + if (isQuestCompleted(questid)) { + return; + } + if (!isQuestStarted(questid)) { if (!quest.forceStart(getPlayer(), 9000066)) { return; @@ -114,7 +118,11 @@ public class MapScriptMethods extends AbstractPlayerInteraction { } String status = Integer.toString(qs.getMedalProgress()); String infoex = qs.getInfoEx(0); - getPlayer().announceUpdateQuest(DelayedQuestUpdate.UPDATE, qs, true); + + // explorer quests all have an infoex/infonumber requirement that points to another quest + // THAT quest's progress needs to be updated for Quest.canComplete() to return true + getPlayer().setQuestProgress(quest.getId(), (int)quest.getInfoNumber(qs.getStatus()), status); + StringBuilder smp = new StringBuilder(); StringBuilder etm = new StringBuilder(); if (status.equals(infoex)) {