Aran skill & mount quests + New player IDs + MapleSkillMakerFetcher

Aran skill and mount questlines fixed.
Player ID starts counting from 20mil now, preventing clashes with map objects oid's (trying to solve the NPC disappearing issue).
New tool: MapleSkillMakerFetcher. It compiles a SQL script file containing updated Maker data info from the inputted ItemMake.wz.xml.
Updated Maker tables on the DB.
This commit is contained in:
ronancpl
2017-11-14 16:55:37 -02:00
parent 6fbd23f903
commit bc482ee0d2
72 changed files with 41495 additions and 18673 deletions

View File

@@ -1,8 +1,5 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
@@ -32,12 +29,10 @@ function start() {
}
function action(mode, type, selection) {
//print("mode" + mode + "type " + type + " selection" + selection + "\n");
if (mode == -1) {
cm.dispose();
} else {
if (mode == 0 && type > 0) { // hope types 2 & 3 works as well, as 1 and 4 END CHAT
if (mode == 0 && type > 0) {
cm.dispose();
return;
}

70
scripts/QUEST Base.js Normal file
View File

@@ -0,0 +1,70 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* QUEST Base
Quest Name
Extra info.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Sample Text.");
qm.forceStartQuest();
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Sample Text.");
qm.forceCompleteQuest();
qm.dispose();
}
}
}

View File

@@ -0,0 +1,114 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @Author Ronan
* Event - Scadur's Mount Quest
**/
importPackage(Packages.tools);
var entryMap = 921110000;
var exitMap = 211050000;
var minMapId = 921110000;
var maxMapId = 921110000;
var eventTime = 3; //3 minutes
var lobbyRange = [0, 0];
function setLobbyRange() {
return lobbyRange;
}
function init() {
em.setProperty("noEntry","false");
}
function respawnStages(eim) {}
function playerEntry(eim, player) {
var mapObj = eim.getInstanceMap(entryMap);
mapObj.resetPQ(1);
mapObj.instanceMapForceRespawn();
respawnStages(eim);
player.changeMap(entryMap, 2);
em.setProperty("noEntry","true");
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000);
}
function playerUnregistered(eim, player) {}
function playerExit(eim, player) {
eim.unregisterPlayer(player);
eim.dispose();
em.setProperty("noEntry","false");
}
function scheduledTimeout(eim) {
var player = eim.getPlayers().get(0);
playerExit(eim, player);
player.changeMap(exitMap);
}
function playerDisconnected(eim, player) {
playerExit(eim, player);
}
function changedMap(eim, chr, mapid) {
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
}
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();
var player = eim.getPlayers().get(0);
eim.unregisterPlayer(player);
player.changeMap(exitMap);
eim.dispose();
em.setProperty("noEntry","false");
}
function monsterKilled(mob, eim) {}
function monsterValue(eim, mobId) {
return 1;
}
function friendlyKilled(mob, eim) {
if(em.getProperty("noEntry") != "false") {
var player = eim.getPlayers().get(0);
playerExit(eim, player);
player.changeMap(exitMap);
}
}
function allMonstersDead(eim) {}
function cancelSchedule() {}
function dispose() {}

View File

@@ -0,0 +1,115 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @Author Ronan
* Event - Wolves' Mount Quest
**/
importPackage(Packages.tools);
var entryMap = 914030000;
var exitMap = 140010210;
var minMapId = 914030000;
var maxMapId = 914030000;
var eventTime = 3; //3 minutes
var lobbyRange = [0, 0];
function setLobbyRange() {
return lobbyRange;
}
function init() {
em.setProperty("noEntry","false");
}
function respawnStages(eim) {}
function playerEntry(eim, player) {
var mapObj = eim.getInstanceMap(entryMap);
mapObj.resetPQ(1);
mapObj.instanceMapForceRespawn();
mapObj.closeMapSpawnPoints();
respawnStages(eim);
player.changeMap(entryMap, 1);
em.setProperty("noEntry","true");
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000);
}
function playerUnregistered(eim, player) {}
function playerExit(eim, player) {
eim.unregisterPlayer(player);
eim.dispose();
em.setProperty("noEntry","false");
}
function scheduledTimeout(eim) {
var player = eim.getPlayers().get(0);
playerExit(eim, player);
player.changeMap(exitMap);
}
function playerDisconnected(eim, player) {
playerExit(eim, player);
}
function changedMap(eim, chr, mapid) {
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
}
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();
var player = eim.getPlayers().get(0);
eim.unregisterPlayer(player);
player.changeMap(exitMap);
eim.dispose();
em.setProperty("noEntry","false");
}
function monsterKilled(mob, eim) {}
function monsterValue(eim, mobId) {
return 1;
}
function friendlyKilled(mob, eim) {
if(em.getProperty("noEntry") != "false") {
var player = eim.getPlayers().get(0);
playerExit(eim, player);
player.changeMap(exitMap);
}
}
function allMonstersDead(eim) {}
function cancelSchedule() {}
function dispose() {}

View File

@@ -1,10 +1,16 @@
importPackage(Packages.server.life);
function start(ms){
var mobId = 9300285;
var player = ms.getPlayer();
var map = player.getMap();
if(ms.isQuestStarted(20730) && ms.getQuestProgress(20730, 9300285) == 0)
map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(680, 258));
var player = ms.getPlayer();
var map = player.getMap();
if(player.isCygnus()) {
if(ms.isQuestStarted(20730) && ms.getQuestProgress(20730, 9300285) == 0) {
map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300285), new java.awt.Point(680, 258));
}
} else {
if(ms.isQuestStarted(21731) && ms.getQuestProgress(21731, 9300344) == 0) {
map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300344), new java.awt.Point(680, 258));
}
}
}

View File

@@ -1,11 +0,0 @@
importPackage(Packages.server.life);
function start(ms){
var mobId = 9300344;
var player = ms.getPlayer();
var map = player.getMap();
if(map.countMonster(mobId) == 0) {
map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(680, 258));
}
}

View File

@@ -0,0 +1,10 @@
importPackage(Packages.server.life);
function start(ms){
var player = ms.getPlayer();
var map = player.getMap();
if(ms.isQuestStarted(21747) && ms.getQuestProgress(21747, 9300351) == 0) {
map.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300351), new java.awt.Point(897, 51));
}
}

View File

@@ -29,6 +29,7 @@ function action(mode, type, selection) {
if(cm.getClient().getChannelServer().getMapFactory().getMap(925020010).getCharacters().size() > 0) {
cm.sendOk("Someone is already challenging the Master. Try again later.");
} else {
cm.getWarpMap(910510202).spawnMonsterOnGroundBelow(Packages.server.life.MapleLifeFactory.getMonster(9300346), new java.awt.Point(95, 200));
cm.warp(910510202, 0);
}

23
scripts/npc/11000.js Normal file
View File

@@ -0,0 +1,23 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function start() {
Packages.server.MapleShopFactory.getInstance().getShop(11000).sendShop(cm.getClient());
cm.dispose();
}

View File

@@ -6,6 +6,11 @@ function start() {
}
function action(mode, type, selection) {
cm.sendOk("Up ahead is the #rMirror Cave#k. Only the chosen ones have permission to access that place.");
if(cm.getPlayer().getItemQuantity(1902016, true) > 0) {
cm.warp(140010210, 0);
} else {
cm.sendOk("What is it? If you you're here to waste my time, get lost!");
}
cm.dispose();
}

44
scripts/npc/2091009.js Normal file
View File

@@ -0,0 +1,44 @@
var status;
function start(){
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection){
if(mode == -1 || (mode == 0 && status == 0)){
cm.dispose();
return;
}
else if(mode == 0)
status--;
else
status++;
if(status == 0){
cm.sendGetText("The entrance of the Sealed Shrine... #bPassword#k!");
}
else if(status == 1){
if(cm.getWarpMap(925040100).countPlayers() > 0) {
cm.sendOk("Someone is already attending the Sealed Shrine.");
cm.dispose();
return;
}
if(cm.getText() == "Actions speak louder than words"){
if(cm.isQuestStarted(21747) && cm.getQuestProgress(21747, 9300351) == 0)
cm.warp(925040100, 0);
else
cm.playerMessage(5, "Although you said the right answer, some mysterious forces is blocking the way in.");
cm.dispose();
}
else{
cm.sendOk("#rWrong!");
}
}
else if(status == 2){
cm.dispose();
}
}

View File

@@ -24,6 +24,8 @@ function action(mode, type, selection){
if(cm.getText() == "Francis is a genius Puppeteer!"){
if(cm.isQuestStarted(20730) && cm.getQuestProgress(20730, 9300285) == 0)
cm.warp(910510001, 1);
else if(cm.isQuestStarted(21731) && cm.getQuestProgress(21731, 9300346) == 0)
cm.warp(910510001, 1);
else
cm.playerMessage(5, "Although you said the right answer, some mysterious forces is blocking the way in.");

View File

@@ -0,0 +1,10 @@
function enter(pi) {
if(pi.isQuestActive(21747) || pi.isQuestActive(21744) && pi.isQuestCompleted(21745)) {
pi.warp(925040000,0);
return true;
}
else {
pi.message("You don't have permission to access this area.");
return false;
}
}

View File

@@ -1,8 +1,8 @@
function enter(pi) {
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21731)) { // puppeteer defeated, newfound secret path
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21734)) { // puppeteer defeated, newfound secret path
pi.warp(105070300,3);
return true;
} else if(pi.isQuestStarted(21731)) {
} else if(pi.isQuestStarted(21734)) {
pi.warp(910510100,0);
return true;
} else {

View File

@@ -1,5 +1,5 @@
function enter(pi) {
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21731)) { // puppeteer defeated, newfound secret path
if(pi.isQuestCompleted(20730) || pi.isQuestCompleted(21734)) { // puppeteer defeated, newfound secret path
pi.warp(105040201,2);
return true;
}

View File

@@ -1,4 +1,9 @@
function enter(pi) {
var mapobj = pi.getWarpMap(104000004);
if(pi.isQuestActive(21733) && pi.getQuestProgress(21733, 9300345) == 0 && mapobj.countMonsters() == 0) {
mapobj.spawnMonsterOnGroundBelow(Packages.server.life.MapleLifeFactory.getMonster(9300345), new java.awt.Point(0, 0));
}
pi.playPortalSound();
pi.warp(104000004, 1);
return true;

View File

@@ -0,0 +1,22 @@
function enter(pi) {
if (pi.isQuestActive(21739)) {
var mapobj1 = pi.getWarpMap(920030000);
var mapobj2 = pi.getWarpMap(920030001);
if(mapobj1.countPlayers() == 0 && mapobj2.countPlayers() == 0) {
mapobj1.resetPQ(1);
mapobj2.resetPQ(1);
mapobj2.spawnMonsterOnGroundBelow(Packages.server.life.MapleLifeFactory.getMonster(9300348), new Packages.java.awt.Point(591, -34));
pi.warp(920030000,2);
return true;
} else {
pi.message("Someone is already challenging the area.");
return false;
}
} else {
pi.warp(200060001,2);
return true;
}
}

View File

@@ -0,0 +1,23 @@
function enter(pi) {
if(pi.isQuestStarted(21610) && pi.haveItem(4001193, 1) == 0) {
var em = pi.getEventManager("Aran_2ndmount");
if (em == null) {
pi.message("Sorry, but the 2nd mount quest (Scadur) is closed.");
return false;
}
else {
if (em.getProperty("noEntry") == "false") {
var eim = em.newInstance("Aran_2ndmount");
eim.registerPlayer(pi.getPlayer());
return true;
}
else {
pi.message("There is currently someone in this map, come back later.");
return false;
}
}
} else {
pi.playerMessage(5, "Only attendants of the 2nd Wolf Riding quest may enter this field.");
return false;
}
}

View File

@@ -0,0 +1,10 @@
function enter(pi) {
if(pi.canHold(4001193, 1)) {
pi.gainItem(4001193, 1);
pi.warp(211050000, 4);
return true;
} else {
pi.playerMessage(5, "Free a slot on your inventory before receiving the couse clear's token.");
return false;
}
}

View File

@@ -0,0 +1,25 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function enter(pi) {
pi.warp(925040000, 1);
return true;
}

View File

@@ -0,0 +1,15 @@
function enter(pi) {
if(pi.getMap().countMonsters() == 0) {
if(pi.canHold(4001193, 1)) {
pi.gainItem(4001193, 1);
pi.warp(140010210, 0);
return true;
} else {
pi.playerMessage(5, "Free a slot on your inventory before receiving the couse clear's token.");
return false;
}
} else {
pi.playerMessage(5, "Defeat all wolves before exiting the stage.");
return false;
}
}

View File

@@ -57,14 +57,14 @@ function end(mode, type, selection) {
status++;
if (mode != 1) {
if(type == 1 && mode == 0) {
qm.sendNext("What? You don't want the potion?");
qm.dispose();
return;
}else{
qm.sendNext("What? You don't want the potion?");
qm.dispose();
return;
} else {
qm.dispose();
return;
}
}
}
if (status == 0)
qm.sendOk("Hm... Your expression tells me that the exercise didn't jog any memories. But don't you worry. They'll come back, eventually. Here, drink this potion and power up!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v2000022# 10 #t2000022#\r\n#v2000023# 10 #t2000023#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 57 exp");
else if (status == 1) {

View File

@@ -56,15 +56,11 @@ function end(mode, type, selection) {
}
qm.gainItem(1142130, true);
qm.changeJobById(2110);
qm.teachSkill(21100000, 0, 20, -1);
qm.teachSkill(21100002, 0, 30, -1);
qm.teachSkill(21100004, 0, 20, -1);
qm.teachSkill(21100005, 0, 20, -1);
qm.completeQuest();
}
qm.sendNext("Your level isn't what it used to be back in your glory days, so I can't restore all of your old abilities. But the few I can restore should help you level up faster. Now hurry up and train so you can return to the old you.");
qm.dispose();
}

View File

@@ -69,7 +69,6 @@ function end(mode, type, selection) {
else if (status == 3){
//qm.showVideo("Polearm");
qm.completeQuest();
qm.forceCompleteQuest(21201);
qm.removeAll(4032311);
qm.dispose();
}

View File

@@ -44,9 +44,7 @@ function end(mode, type, selection) {
}
qm.gainItem(1142131, true);
qm.changeJobById(2111);
qm.teachSkill(21110002, 0, 20, -1);
qm.completeQuest();
}

View File

@@ -57,12 +57,6 @@ function end(mode, type, selection) {
qm.gainItem(1142132, true);
qm.changeJobById(2112);
qm.teachSkill(21121000, 0, 10, -1);
qm.teachSkill(21120001, 0, 10, -1);
qm.teachSkill(21121003, 0, 10, -1);
qm.teachSkill(21120002, 0, 10, -1);
qm.completeQuest();
}
qm.sendNext("Your skills have been restored. Those skills have been dormant for so long that you'll have to re-train yourself, but you'll be as good as new once you complete your training.");

45
scripts/quest/21604.js Normal file
View File

@@ -0,0 +1,45 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("You want to use a Wolf as a mount, but you don't have a #bWolf saddle#k? Why, I have just the fine solution for you! Come here in #bEl Nath#k first, I shall teach you how to mount a wolf as an extra.");
} else if (status == 1) {
qm.sendNext("Once here, hunt for #r50 #t4000048##k then bring them to me.");
qm.forceStartQuest();
qm.dispose();
}
}
}

64
scripts/quest/21613.js Normal file
View File

@@ -0,0 +1,64 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("We're a pack of wolves looking for our lost child. I hear you are taking care of our baby. We appreciate your kindness, but it's time to return our baby to us.", 9);
} else if (status == 1) {
qm.sendNextPrev("Werewolf is my friend, I can't just hand over a friend.", 3);
} else if (status == 2) {
qm.sendAcceptDecline("We understand, but we won't leave without our pup. Tell you what, we'll test you to see if you are worthy of raising a wolf. #rGet ready to be tested by wolves.#k");
} else if (status == 3) {
var em = qm.getEventManager("Aran_3rdmount");
if (em == null) {
qm.sendOk("Sorry, but the 3rd mount quest (Wolves) is closed.");
qm.dispose();
return;
}
else {
if (em.getProperty("noEntry") == "false") {
var eim = em.newInstance("Aran_3rdmount");
eim.registerPlayer(qm.getPlayer());
qm.forceStartQuest();
qm.dispose();
}
else {
qm.sendOk("There is currently someone in this map, come back later.");
qm.dispose();
}
}
}
}
}

81
scripts/quest/21618.js Normal file
View File

@@ -0,0 +1,81 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* Aran lv 200 mount quest
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Oh, this befriended wolf of yours... I sense some hidden powers hidden behind his furs, you see. Wat'cha say, master, if I awaken it's hidden power?", 9);
} else if (status == 1) {
qm.sendNextPrev("Wait, can you do that?", 3);
} else if (status == 2) {
qm.sendAcceptDecline("Astonished, huh? Does all that time frozen in the glacier hindered your senses as well? Why, of course! Tell me when you're ready!", 9);
} else {
qm.forceStartQuest();
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
if(qm.getPlayer().getItemQuantity(1902017, false) == 0) {
qm.sendNext("You will have to unequip the wolf first before going for the evolution.");
qm.dispose();
return;
}
qm.sendNext("Step aside, behold the mighty prowess of Maha!!");
} else {
qm.gainItem(1902017, -1);
qm.gainItem(1902018, 1);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

71
scripts/quest/21733.js Normal file
View File

@@ -0,0 +1,71 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("Aran, Lith have been caught off guard. We are under attack! Get here ASAP.");
} else {
qm.forceStartQuest();
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("Aran, thank you very much! Somehow the Puppeteer managed to bypass the security of Lith Harbor. He was trying to seek revenge because of the other day. Luckily, you came by. Nicely done!");
} else if(status == 1) {
qm.sendNext("I will teach you the #rPolearm Mastery#k skill, to reward your actions here. You will be able to improve your accuracy and the overall mastery of your polearm arts.");
} else {
qm.gainExp(8000 * qm.getPlayer().getExpRate());
qm.teachSkill(21100000, 0, 20, -1); // polearm mastery
qm.forceCompleteQuest();
qm.dispose();
}
}
}

73
scripts/quest/21734.js Normal file
View File

@@ -0,0 +1,73 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("Hello there, Aran. We received a report that the Puppeteer, one of the members of the Black Wing, is currently based #bsomewhere on the deep forest of Sleepywood#k. Your mission is to enter the place and defeat him there, once for all.");
} else {
qm.forceStartQuest();
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("You made it, Aran! The Puppeteer now will not disturb the peace at Victoria Island any longer. Furthermore, now we could clearly investigate the doings of the Black Wing here, at Victoria.");
} else if(status == 1) {
qm.sendNext("They were after the #bcrystal seal of Victoria#k. These seals are what repels the Black Mage to further taking the continents into his grasp at once. Each continent has one, Victoria's now is safe and sound.");
} else if(status == 2) {
qm.sendNext("For your bravery inputted on these series of missions, I will now reward you properly. Behold, the #rCombo Drain#k Skill: that let's you heal back a portion of damage dealt to the monsters.");
} else {
qm.gainExp(12500 * qm.getPlayer().getExpRate());
qm.teachSkill(21100005, 0, 20, -1); // combo drain
qm.forceCompleteQuest();
qm.dispose();
}
}
}

49
scripts/quest/21736.js Normal file
View File

@@ -0,0 +1,49 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("Long time no see! You've leveled up a lot since the last time we met. You must be training really hard. Always hard-working. I'm not surprised. It's exactly what a hero like you would do. I'm sure Lilin will be happy to hear about your progress.");
} else if(status == 1) {
qm.sendNextPrev("Anyway, enough small talk. I realized that it might be more effective to search for information in places outside Victoria Island as well, so I've begun investigating in Ossyria. I began with #bOrbis#k and immediately hit the jackpot.");
} else if(status == 2) {
qm.sendAcceptDecline("It seems like something strange is happening in Orbis in Ossyria. It's a bit different from when we were dealing with the puppeteer, but my instincts tell me it has to do with the Black Wings. Please head over to Orbis.");
} else {
qm.sendNext("#bLisa the Fairy#k in Orbis should know a thing or two. Go see Lisa first, when requested use the #bThere's something strange going on in Orbis....#k keyword to talk to her.");
qm.forceStartQuest();
qm.dispose();
}
}
}

52
scripts/quest/21738.js Normal file
View File

@@ -0,0 +1,52 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendGetText("Hm, what do you want?");
} else {
var text = qm.getText();
if(text != "There's something strange going on in Orbis....") {
qm.sendNext("No business to deal with? I won't brook loitering around here, go away.");
qm.dispose();
} else {
qm.sendNext("Oh, that's right. I can sense the power emanating from you, as well. So I shall entrust something to you.");
qm.forceStartQuest();
qm.dispose();
}
}
}
}

44
scripts/quest/21739.js Normal file
View File

@@ -0,0 +1,44 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("So, have you defeated the giant? Oh, a Black Wing agent undercover? And he GOT THE SEAL STONE OF ORBIS?! Oh, no. That's horrible! We need to develop countermeasures as soon as possible! Tell the informant on Lith about the situation.");
} else {
qm.gainExp(29500 * qm.getPlayer().getExpRate());
qm.forceCompleteQuest();
qm.dispose();
}
}
}

70
scripts/quest/21740.js Normal file
View File

@@ -0,0 +1,70 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("The Orbis seal has been stolen by the Black Wings? Hmm, that has gone awry. Go tell #bLilin#k about this, she must have something in mind on this situation.");
} else {
qm.forceStartQuest();
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
qm.sendNext("Oh, hi #h0#! You won't believe what I just uncovered. It's one of your lost skills... What, the seal of Orbis got stolen by the Black Wings? Oh my...");
} else if(status == 1) {
qm.sendNext("For now, let me teach you the #bCombo Smash#k, with it you will be able to deal massive amount of damage to many monsters at once. We will need to use it if we want to stand a chance against the Black Wings now, so don't forget it!");
} else {
qm.teachSkill(21100004, 0, 20, -1); // combo smash
qm.forceCompleteQuest();
qm.dispose();
}
}
}

47
scripts/quest/21741.js Normal file
View File

@@ -0,0 +1,47 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Have you been advancing your levels? I found an interesting piece of information about the Black Wings. This time, you'll have to travel quite a bit. Do you know a town called #bMu Lung#k? You'll have to head there.");
} else if (status == 1) {
qm.sendAcceptDecline("Apparently, #bMr. Do#k in Mu Lung somehow met with the Black Wings. I don't know the details. Please go and find out why the Black Wings contacted Mr. Do and what exactly happened between them.");
} else {
qm.sendNext("Mr. Do is known to be curt, so you are going to have to remain patient while talking to him. Talk to him with the #bI heard you met the Shadow Knight of the Black Wings#k keyword.");
qm.forceStartQuest();
qm.dispose();
}
}
}

94
scripts/quest/21742.js Normal file
View File

@@ -0,0 +1,94 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Well, I'm not really busy of anything, bit I don't feel like concocting medicine. Can you come back later? If you don't mind, move.", 9);
} else if (status == 1) {
qm.sendNextPrev("I heard you met the Shadow Knight of the Black Wings.", 3);
} else if (status == 2) {
qm.sendNextPrev("Ah, you mean that guy dressed in black with a menacing wrinkle in his forehead? Why, yes I did. I did meet him. I event got an item for him. He asked me to deliver it to that old man, Mu Gong.", 9);
} else if (status == 3) {
qm.sendNextPrev("An item?", 3);
} else if (status == 4) {
qm.sendNextPrev("Yes, a big #bHanging Scroll#k. He gave it to me without saying much. He just asked me to deliver it. He looked scary, as if he would chase me down if I didn't do as he said. Wheeeeeew, that was an experience.", 9);
} else if (status == 5) {
qm.sendNextPrev("So did you deliver the Hanging Scroll to him?", 3);
} else if (status == 6) {
qm.sendAcceptDecline("Well, the thing is... There is a slight problem, care to listen?");
} else if (status == 7) {
qm.sendNext("So what happened was... I was making a new type of medicine, so I filled a pot with water and started boiling some herbs. That's when I made the mistake of... dropping the Hanging Scroll, right into the pot. Oh gosh, I pulled it out as fast as I could, but the Hanging Scroll, was already soaked and the writing on it had already disappeared.", 9);
} else if (status == 8) {
qm.sendNextPrev("So then I thought, well what's the point of delivering it to Mu Gong? I must first restore the writing on Hanging Scroll. That's why I need you to do something for me. The guy down there writing on Hanging Scroll... is #bJin Jin#k, the greatest artist on all of Mu Lung. I'm sure he'd be able to restore the writing on Hanging Scroll.", 9);
} else {
if(qm.canHold(4220151)) {
qm.gainItem(4220151, 1);
qm.forceStartQuest();
qm.dispose();
} else {
qm.sendOk("Please free a room on your ETC inventory.", 9);
qm.dispose();
return;
}
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Oh, you brought the ink. Now let me pour it, cautiously.... Almost there, almost. ... ..... Kyaaa! Th-the letter. It says: 'I'll be there to take your Seal Rock of Mu Lung.'");
qm.gainItem(4032342, -8);
qm.gainItem(4220151, -1);
qm.gainExp(10000 * qm.getPlayer().getExpRate());
qm.forceCompleteQuest();
qm.dispose();
}
}
}

81
scripts/quest/21746.js Normal file
View File

@@ -0,0 +1,81 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("If you want to know more about the Seal Rock of Mu Lung, you will need to pass my test. Prove your valor overpowering me in melee combat, only then I shall recognize you as a worthy knight.");
} else {
var mapobj = qm.getWarpMap(925040001);
if(mapobj.countPlayers() == 0) {
mapobj.resetPQ(1);
qm.warp(925040001, 0);
qm.forceStartQuest();
}
else {
qm.sendOk("Someone is already attempting a challenge. Wait for them to finish before you enter.");
}
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Oh, you brought the ink. Now let me pour it, cautiously.... Almost there, almost. ... ..... Kyaaa! Th-the letter. It says: 'I'll be there to take your Seal Rock of Mu Lung.'");
qm.gainItem(4032342, -8);
qm.gainItem(4220151, -1);
qm.gainExp(10000 * qm.getPlayer().getExpRate());
qm.forceCompleteQuest();
qm.dispose();
}
}
}

72
scripts/quest/21747.js Normal file
View File

@@ -0,0 +1,72 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendAcceptDecline("Who would have thought that the hero's successor would reappear after hundred of years...? Will you bring prosperity to Maple World or will you end its existence? I suppose it really doesn't matter. Alright, I'll tell you what I know about the Seal Stone of Mu Lung.");
} else if (status == 1) {
qm.sendNext("The Seal Stone of Mu Lung is located at the Sealed Temple. You will find the entrance deep inside the Mu Lung Temple. You can enter the Sealed Temple if you find the pillar with the word 'Entrance' wtritten on it. The password is: #bActions speak better than words#k. Maybe you will find the Shadow Knight there, as he probably is waiting for me there. I think the Hero's sucessor is more able to face him than myself, so prepare yourself.");
} else {
qm.forceStartQuest();
qm.dispose();
}
}
}
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("So you have defeated the Shadow Knight. I have never doubted of your handiwork, and you handled the task well.");
} else if (status == 1) {
qm.sendNext("But yet, something made you unhappy. What could it be? ... No... Black Wings took away the Seal stone? I'm afraid nothing can be done anymore. I suggest you return to your group tactician, Tru is it?, and tell him about the situation now. Tell him about the loss here in Mu Lung. There's no time to lose, hurry!");
} else if (status == 2) {
qm.gainExp(16000 * qm.getPlayer().getExpRate());
qm.forceCompleteQuest();
qm.dispose();
}
}
}

49
scripts/quest/21748.js Normal file
View File

@@ -0,0 +1,49 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if(mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
qm.sendNext("Aran, you came back home safe! So, how fared the mission in Mu Lung? #rGentleman#k ambushed and stole the seal rock again? That's unfortunate. At least you are unharmed, I'm glad.");
} else if (status == 1) {
qm.sendNext("I've researched some skill books, trying to trace any lost skills of yours. Good news I found one of them: it's the #rFinal Charge#k! With it you will be able to draw closer opposing monsters at each swipe. It's a fine improvement for your arsenal, isn't it?");
} else if (status == 2) {
qm.gainExp(20000 * qm.getPlayer().getExpRate());
qm.teachSkill(21100002, 0, 30, -1); // final charge
qm.forceCompleteQuest();
qm.dispose();
}
}
}

View File

@@ -0,0 +1,8 @@
/* @Author dangoron
*
* 1102000.js
*/
function act() {
rm.dropItems();
}