Initial re-upload

This commit is contained in:
2024-01-19 03:56:28 -05:00
commit 170dac174c
25040 changed files with 16444288 additions and 0 deletions

112
scripts/quest/1021.js Normal file
View File

@@ -0,0 +1,112 @@
/*
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: Xterminator
* Edited by XxOsirisxX
NPC Name: Roger
Map(s): Maple Road : Lower level of the Training Camp (2)
Description: Quest - Roger's Apple
*/
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("Hey, " + (qm.getPlayer().getGender() == 0 ? "Man" : "Miss") + "~ What's up? Haha! I am Roger who can teach you adorable new Maplers lots of information.");
} else if (status == 1) {
qm.sendNextPrev("You are asking who made me do this? Ahahahaha!\r\nMyself! I wanted to do this and just be kind to you new travellers.");
} else if (status == 2) {
qm.sendAcceptDecline("So..... Let me just do this for fun! Abaracadabra~!");
} else if (status == 3) {
if (qm.getPlayer().getHp() >= 50) {
qm.getPlayer().updateHp(25);
}
if (!qm.haveItem(2010007)) {
qm.gainItem(2010007, 1);
}
qm.forceStartQuest();
qm.sendNext("Surprised? If HP becomes 0, then you are in trouble. Now, I will give you #rRoger's Apple#k. Please take it. You will feel stronger. Open the Item window and double click to consume. Hey, it's very simple to open the Item window. Just press #bI#k on your keyboard.");
} else if (status == 4) {
qm.sendPrev("Please take all Roger's Apples that I gave you. You will be able to see the HP bar increasing. Please talk to me again when you recover your HP 100%.");
} else if (status == 5) {
qm.showInfo("UI/tutorial.img/28");
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.c.getPlayer().getHp() < 50) {
qm.sendNext("Hey, your HP is not fully recovered yet. Did you take all the Roger's Apple that I gave you? Are you sure?");
qm.dispose();
} else {
qm.sendNext("How easy is it to consume the item? Simple, right? You can set a #bhotkey#k on the right bottom slot. Haha you didn't know that! right? Oh, and if you are a beginner, HP will automatically recover itself as time goes by. Well it takes time but this is one of the strategies for the beginners.");
}
} else if (status == 1) {
qm.sendNextPrev("Alright! Now that you have learned alot, I will give you a present. This is a must for your travel in Maple World, so thank me! Please use this under emergency cases!");
} else if (status == 2) {
qm.sendPrev("Okay, this is all I can teach you. I know it's sad but it is time to say good bye. Well take care if yourself and Good luck my friend!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v2010000# 3 #t2010000#\r\n#v2010009# 3 #t2010009#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 10 exp");
} else if (status == 3) {
if (qm.isQuestCompleted(1021)) {
qm.dropMessage(1, "Unknown Error");
} else if (qm.canHold(2010000) && qm.canHold(2010009)) {
qm.gainExp(10);
qm.gainItem(2010000, 3);
qm.gainItem(2010009, 3);
qm.forceCompleteQuest();
} else {
qm.dropMessage(1, "Your inventory is full");
}
qm.dispose();
}
}
}

25
scripts/quest/10940.js Normal file
View File

@@ -0,0 +1,25 @@
//@author kevintjuh93
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (mode > 0) {
status++;
} else {
qm.dispose();
}
if (status == 0) {
qm.sendAcceptDecline("Hello, #h0#. Welcome to Maple World. It's currently event season, and we're welcome new characters with a gift. Would you like your gift now?");
} else if (status == 1) {
qm.sendOk("Open your inventory and double-click on it! These gifts will make you look stylish. Oh, one more thing! You'll get another gift at level 30. Good luck!");
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.gainItem(2430191, 1, true);
} else if (status == 2) {
qm.dispose();
}
}
}

55
scripts/quest/20000.js Normal file
View File

@@ -0,0 +1,55 @@
/*
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 : Generic
NPC Name: Cygnus
Map(s): Ereve: Empress' Road
Description: Quest - Greetings from the Young Empress
Quest ID : 20000
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (mode > 0) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("Ah, you've come... this is exhilarating. I am grateful for your decision to become a Cygnus Knight. I have been waiting a long time for someone like you. Someone that is courageous enough to face the Black Mage and not flinch...");
} else if (status == 1) {
qm.sendNext("The battle against the evil nature of the Black Mage who wants to swallow up Maple World as a whole, the cunning nature of his disciples, and the physical battle against the crazy monsters will await you. There will also come a time where even you may turn against yourself into an enemy and torment you ...");
} else if (status == 2) {
qm.sendOk("But I won't worry about that. I am confident that you will be able to fight through all that and protect Maple World from the Black Mage. Of course, you'll have to become a bit stronger than you are right now, right?");
} else if (status == 3) {
qm.gainItem(1142065, 1); // Noblesse Medal * 1
qm.gainExp(20); //gain 20 exp!!
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.dispose();
}
}
}

75
scripts/quest/20001.js Normal file
View File

@@ -0,0 +1,75 @@
/*
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 : Generic
NPC Name: Neinheart
Map(s): Ereve: Empress' Road
Description: Quest - Neinheart the Tactician
Quest ID: 20001
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("Hello, #h #. I formally welcome you to the Cygnus Knights. My name is Neinheart Von Rubistein, the Head Tactician for the young Empress. I will be seeing you often from here on out, so I suggest you remember my name. Haha...");
} else if (status == 1) {
qm.sendNextPrev("I understand that you didn't have enough time and exposure to figure out what you really need to do as a Cygnus Knight. I will eplain it to you in detail, one by one. I will explain where you are, who the young Empress is, and what our duties are...");
} else if (status == 2) {
qm.sendNextPrev("You're standing on an island called Ereve, the only land that's governed by the young Empress that also happens to float in the air. Yes, we're floating in the air as we speak. We stay here out of necessity, but it usually works as a ship that floats all over Maple World, for the sake of the young Empress...");
} else if (status == 3) {
qm.sendNextPrev("The young Empress is indeed the ruler of Maple World, the one and only governer of this world. What? You've never heard of such a thing? Ahhh, that's understandable. The young Empress may govern this world, but she's not a dictator that looms over everyone. She uses Ereve as a way for her to oversee the world as an observer without having to be too hands-on. That's how it usually is, anyway...");
} else if (status == 4) {
qm.sendNextPrev("But situations arise every now and then where she'll have to take control. The evil Black Mage has been showing signs of resurrection all over the world. The very king of destruction that threatened to destroy the world as we know it is trying to reappear into our lives.");
} else if (status == 5) {
qm.sendNextPrev("The problem is, no one is aware of it. It's been so long since the Black Mage disappeared, that people have become used to peace in the world, not necessarily knowing what to do if a crisis like this reaches. If this keeps up, our world will be in grave danger in no time.");
} else if (status == 6) {
qm.sendNextPrev("That's when the young Empress decided to step forward and take control of this potential crisis before it revealed itself. She decided to create a group of Knights that will prevent the Black Mage from being fully resurrected. I'm sure you know of what happens afterwards since you volunteered to become a Knight yourself.");
} else if (status == 7) {
qm.sendNextPrev("Our duties are simple. We need to make ourselves more powerful; much more powerful than the state we're in right now, so that when the Black Mage returns, we'll battle him and eliminate him once and for all before he puts the whole world in grave danger. That is our goal, our mission, and therefore yours as well");
} else if (status == 8) {
qm.sendAcceptDecline("This is the basic overview of this situation. Understood?");
} else if (status == 9) {
if (qm.isQuestCompleted(20001)) {
qm.gainExp(40);
qm.gainItem(1052177, 1); // fancy noblesse robe
}
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.sendNext("I'm glad you understand what I've told you but... did you know? Based on your current level, you won't be able to face the Black Mage. Heck you won't be able to face off his disciple's slave's monster's pet's dummy! Are you sure you are ready to protect Maple World like that?");
} else if (status == 10) {
qm.sendNextPrev("You may be a member of the Cygnus Knights, but that doesn't mean you're a knight. Forget being the official knight. You're not even a Knight-in-Training, yet. A lot of time will pass where you will just sit around here, doing paperwork for the Cygnus Knights, but...");
} else if (status == 11) {
qm.sendNextPrev("But then again, no one is born strong, anyway. The Empress also prefers that she creates an enviroment where a string of powerful knights can be nurtured and created, as opposed to finding a supernaturally-gifted knight. For now, you'll have to become a Knight-in-Training, and make yourself much more powerful so you'll become useful later on. We'll talk about the duties of being a Cygnus Knight once you reach that level of competency.");
} else if (status == 12) {
qm.sendPrev("Take the portal on the left side and go straight, and you'll head towards #b Training Forest I # . There, you'll find the training instructor for the Knights, Kiku. The next time I see you, I'd like for you to be atleast at level 10.");
}
}
}

61
scripts/quest/20002.js Normal file
View File

@@ -0,0 +1,61 @@
/*
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 : Generic
NPC Name: Kiku
Map(s): Empress' Road : Training Forest I
Description: Quest - Kiku the Training Instructor
Quest ID : 20002
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (mode > 0) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("What? Neinheart sent you here? Ahh, you must be a rookie. Welcome, welcome. My name is Kiku, and my job is to train and mold kids like you into bonafide knights. Hmmm.. Why are you looking at me like that... Ahh, you must have never seen Piyos before.");
} else if (status == 1) {
qm.sendNext("We belong to a race called Piyos. You've talked to Shinsoo before, right? The one that stands next to the Empress. Yeah, Shinsoo is a Piyo, too. He may be of a different class, but... oh well. Piyos are only found in Ereve, so you may find us a bit odd at first, but you'll get used to us.");
} else if (status == 2) {
qm.sendAcceptDecline("Ah, I don't know if you are aware of this, but you won't find any monsters here in Ereve. Any form of evil will not be able to set foot on this island. Don't worry, you'll still have your opportunity to train here. Shinsoo created a fantasy creature called Mimi, which will be used as your training partners. Shall we begin?");
} else if (status == 3) {
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.gainExp(60);
qm.gainItem(2000020, 10); // Red Potion for Noblesse * 10
qm.gainItem(2000021, 10); // Blue Potion for Noblesse * 10
qm.gainItem(1002869, 1); // Elegant Noblesse Hat * 1
qm.sendOk("Ha, I like your enthusiasm, but you must prepare yourself for the training first before we start things off. Make sure that you are equipped with weapons, and that your skills are calibrated and ready to be used. I also gave you some potions, so have it ready just in case. Let me know when you're ready. You're going to wish that you didn't sign up to become a Cygnus Knight.");
} else if (status == 4) {
qm.dispose();
}
}
}

54
scripts/quest/20008.js Normal file
View File

@@ -0,0 +1,54 @@
/*
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 : Generic
NPC Name: Kiku
Map(s): Empress' Road : Training Forest I
Description: Quest - The Path of a Knight
Quest ID : 20000
*/
var status = -1;
var choice1;
function start(mode, type, selection) {
if (mode < 1) {
qm.dispose();
} else if (mode > 0) {
status++;
}
if (status == 0) {
qm.sendSimple("Are you ready to take on a mission? If you can't pass this test, then you won't be able to call yourself a real Knight. Are you sure you can do this? If you are afraid to do this, let me know. I won't tell Neinheart. \r\n #L0#I'll try this later.#l \r\n #L1#I'm not afraid. Let's do this.#l");
} else if (status == 1) {
if (selection == 0) {
qm.sendNext("If you call yourself a Knight, then do not hesitate. Show everyone how much courage you have in you.");
qm.dispose();
} else if (selection == 1) {
choice1 = selection;
qm.sendSimple("I'm glad you didn't run away, but... are you sure you want to become a Knight-in-Training? What I am asking is whether you're okay with being a Cygnus Knight, and therefore being tied to the Empress at all times? She may be an Empress, but she's also still just a kid. Are you sure you can fight for her? I won't let Neinheart know so just tell me what you really feel. \r\n #L2#If the Empress wants peace in the Maple World, then I'm down for whatever.#l \r\n #L3#As long as I can become a knight I'll endure whatever #l");
qm.forceStartQuest();
qm.forceCompleteQuest();
}
} else if (status == 2) {
qm.dispose();
}
}

57
scripts/quest/2001.js Normal file
View File

@@ -0,0 +1,57 @@
var item;
var stance;
var status = -1;
var vecItem;
function end(mode, type, selection) {
if (mode == 0) {
qm.dispose();
return;
}
status++;
if (status == 0) {
qm.sendNext("THIS is the deed to the land that my son lost! And you even brought all the necessary materials to build the house! Thank you so much ... my relatives can all move in and live in #m102000000#! As a sign of appreciation ...");
} else if (status == 1) {
const InventoryType = Java.type('client.inventory.InventoryType');
if (qm.getPlayer().getInventory(InventoryType.USE).getNumFreeSlot() < 1) {
qm.getPlayer().dropMessage(1, "USE inventory full.");
qm.dispose();
return;
}
var talkStr = "Okay, now choose the scroll of your liking ... The odds of winning are 10% each. \r\n\r\n#rSELECT A ITEM\r\n#b";
stance = qm.getPlayer().getJobStyle();
const Job = Java.type('client.Job');
if (stance == Job.WARRIOR || stance == Job.BEGINNER) {
vecItem = [2043002, 2043102, 2043202, 2044002, 2044102, 2044202, 2044402, 2044302];
} else if (stance == Job.MAGICIAN) {
vecItem = [2043702, 2043802];
} else if (stance == Job.BOWMAN || stance == Job.CROSSBOWMAN) {
vecItem = [2044502, 2044602];
} else if (stance == Job.THIEF) {
vecItem = [2043302, 2044702];
} else {
vecItem = [2044802, 2044902];
}
for (var i = 0; i < vecItem.length; i++) {
talkStr += "\r\n#L" + i + "# #i" + vecItem[i] + "# #t" + vecItem[i] + "#";
}
qm.sendSimple(talkStr);
} else if (status == 2) {
item = vecItem[selection];
qm.gainItem(item, 1);
qm.gainItem(4000022, -100);
qm.gainItem(4003000, -30);
qm.gainItem(4003001, -30);
qm.gainItem(4001004, -1);
qm.gainExp(20000);
qm.gainMeso(15000);
qm.gainFame(2);
qm.completeQuest();
qm.dispose();
}
}

58
scripts/quest/20010.js Normal file
View File

@@ -0,0 +1,58 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.sendNext("Whoa, whoa! Are you really declining my offer? Well, you'll be able to #blevel-up quicker #kwith our help, so let me know if you change your mind. Even if you've declined a Quest, you can receive the Quest again if you just come and talk to me.");
qm.dispose();
} else {
if (mode == 0 && type > 0) {
qm.sendNext("Whoa, whoa! Are you really declining my offer? Well, you'll be able to #blevel-up quicker #kwith our help, so let me know if you change your mind. Even if you've declined a Quest, you can receive the Quest again if you just come and talk to me.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("Welcome to Ereve! And you are? Oh, you're #b#h ##k! \r\nGood to meet you. I've been waiting. You've come to become a Cygnus Knight, right? My name is Kimu, and I'm currently guiding Noblesses like you at the request of Empress Cygnus.");
} else if (status == 1) {
qm.sendNextPrev("If you want to officially become a part of Cygnus Knights, you must first meet the Empress. She's at the center of this island, accompained by Shinsoo. My brothers and I would like to share with you a few things that are considered #bBasic Knowledge#k in Maple World before you go. Would that be okay?");
} else if (status == 2) {
qm.sendNextPrev("Oh, let me warn you that this is a Quest. You may have noticed that NPCs around Maple World occasionally ask you for various favors. A favor of that sort is called a #bQuest#k. You will receive reward items or EXP upon completing Quests, so I strongly suggest you diligently fulfill the favors of Maple NPCs.");
} else if (status == 3) {
qm.sendAcceptDecline("Would you like to meet #bKizan#k, who can tell you about hunting? You can find Kizan by following the arrow to the left.");
} else if (status == 4) {
qm.forceStartQuest();
qm.guideHint(2);
qm.dispose();
}
}
}
function end(mode, type, selection) {
status++;
if (mode != 1) {
qm.dispose();
} else {
if (status == 0) {
qm.sendOk("Are you the Noblesse my brother Kimu sent? Nice to meet you! I'm Kizan. I'll give you the reward Kimu asked me to give you. Remember, you can check your Inventory by pressing the #bI key#k. Red potions help you recover HP, and blue ones help recover MP. It's a good idea to learn how to use them beforehand so you'll be ready with them when you're in danger. \r\n\r\n#fUI/UIWindow.img/Quest/reward# \r\n\r\n#v2000020# #z2000020# \r\n#v2000021# #z2000021# \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0#15 exp");
} else if (status == 1) {
if (qm.canHold(2000022) && qm.canHold(2000023)) {
if (!qm.isQuestCompleted(21010)) {
qm.gainItem(2000020, 5);
qm.gainItem(2000021, 5);
qm.gainExp(15);
}
qm.guideHint(3);
qm.forceCompleteQuest();
} else {
qm.dropMessage(1, "Your inventory is full");
}
qm.dispose();
}
}
}

60
scripts/quest/20011.js Normal file
View File

@@ -0,0 +1,60 @@
/*
NPC Name: Kisan
Description: Quest - Cygnus tutorial helper
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("You don't want to? It's not even that hard, and you'll receive special equipment as a reward! Well, give it some thought and let me know if you change your mind.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("There are a number of ways to hunt, but the most basic way is with your #bRegular Attack#k. All you need is a weapon in your hand, since it's a simple matter of just swinging your weapon at monsters.");
} else if (status == 1) {
qm.sendNextPrev("Press the #bC#k to use your Regular Attack. Usually the C is located #bat the bottom left of the keyboard#k, but you don't need me to tell you that, right? Find the C and try it out!");
} else if (status == 2) {
qm.sendAcceptDecline("Now that you've tried it, we've got to test it out. In this area, you can find the weakest #r#o100120##ks in Ereve, which is perfect for you. Try hunting #r1#k. I'll give you a reward when you get back.");
} else if (status == 3) {
qm.forceStartQuest();
qm.guideHint(4);
qm.dispose();
}
}
function end(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("Ah, it seems like you've successfully hunted a #o100120#. Pretty simple, right? Regular Attacks may be easy to use, but they are pretty weak. Don't worry, though. #p1102006# will teach you how to use more powerful skills. Wait, let me give you a well-deserved quest reward before you go.");
} else if (status == 1) {
qm.sendPrev("This equipment is for Noblesses. It's much cooler than what you're wearing right now, isn't it? Follow the arrows to your left to meet my younger brother #b#p1102006##k. How about you change into your new Noblesse outfit before you go? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1002869# #t1002869# - 1 \r\n#i1052177# #t1052177# - 1 \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 30 exp");
} else if (status == 2) {
qm.gainItem(1002869, 1);
qm.gainItem(1052177, 1);
qm.forceCompleteQuest();
qm.gainExp(30);
qm.guideHint(6);
qm.dispose();
}
}

56
scripts/quest/20012.js Normal file
View File

@@ -0,0 +1,56 @@
/*
NPC Name: Kinu
Description: Quest - Cygnus tutorial helper
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("Regular Attacks are basic skills that are easy to use. It is important to remember that real hunting is done using your Skills. I suggest you reconsider.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("I've been waiting for you, #h0#. My name is #p1102006# and I'm the third brother you are going to meet. So, you've learned about using Regular Attacks, correct? Well, next you'll be learning about your #bSkills#k, which you will find very helpful in Maple World.");
} else if (status == 1) {
qm.sendNextPrev("You earn Skill Points every time you level up, which means you probably have a few saved up already. Press the #bK key#k to see your skills. Invest your Skill Points in the skill you wish to strengthen and don't forget to #bplace the skill in a Quick Slot for easy use#k.");
} else if (status == 2) {
qm.sendAcceptDecline("Time to practice before you forget. You will find a lot of #o100121#s in this area. Why don't you hunt #r3 #o100121#s#k using your #bThree Snails#b skill and bring me 1 #b#t4000483##k as proof? I'll wait for you here.");
} else if (status == 3) {
qm.forceStartQuest();
qm.guideHint(8);
qm.dispose();
}
}
function end(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("You've successfully defeated the #o100121#s and brought me a #t4000483#. That's very impressive! #bYou earn 3 Skill Points every time you level up, after you officially become a knight, that is. Keep following the arrow to the left, and you'll meet #b#p1102007##k, who will guide you through the next step.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 40 exp");
} else if (status == 1) {
qm.gainItem(4000483, -1);
qm.forceCompleteQuest();
qm.gainExp(40);
qm.dispose();
}
}

69
scripts/quest/20013.js Normal file
View File

@@ -0,0 +1,69 @@
/*
NPC Name: Kia
Description: Quest - Cygnus tutorial helper
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("Hmm, was that too much to ask? Is it because you don't know how to break Boxes? I'll tell you how if you accept my Quest. Let me know if you change your mind.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("#b(*clang clang*)#k");
} else if (status == 1) {
qm.sendNextPrev("Whoa! Hey! You scared me. I didn't know I had a visitor. You must be the Noblesse #p1102006# was talking about. Welcome! I'm #p1102007#, and my hobby is making #bChairs#k. I'm thinking about making you one as a welcome present.");
} else if (status == 2) {
qm.sendNextPrev("But wait, I can't make you one because I don't have enough materials. Could you find me the materials I need? Around this area, you will find a lot of Boxes with items inside. Could you bring me back a #t4032267# and a #t4032268# found inside those Boxes?");
} else if (status == 3) {
qm.sendNextPrev("Do you know how to get items from boxes? All you have to do is break the Boxes like you're attacking a monster. The difference is that you can attack monsters using your Skills, but you can #bonly use Regular Attacks to break Boxes#k.");
} else if (status == 4) {
qm.sendAcceptDecline("Please bring me 1 #b#t4032267##k and 1 #b#t4032268##k found inside those Boxes. I'll make you an awesome Chair as soon as I have what I need. I'll wait here!");
} else if (status == 5) {
qm.forceStartQuest();
qm.guideHint(9);
qm.dispose();
}
}
function end(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("Did you bring me a Building Stone and a Drape? Let's see. Ah, these are just what I need! They indeed are a #t4032267# and a #t4032268#! I'll make you a Chair right away.");
} else if (status == 1) {
qm.sendPrev("Here it is, a #t3010060#. What do you think? Nifty, huh? You can #bquickly recover your HP by sitting in this Chair#k. It will be stored in the #bSet-up#k window in your Inventory, so confirm that you've received the chair and head over to #b#p1102008##k. You'll see him if you keep following the arrow to the left. \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i3010060# 1 #t3010060# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 95 exp");
} else if (status == 2) {
qm.gainItem(4032267, -1);
qm.gainItem(4032268, -1);
qm.gainItem(3010060, 1);
qm.forceCompleteQuest();
qm.forceCompleteQuest(20000);
qm.forceCompleteQuest(20001);
qm.forceCompleteQuest(20002);
qm.forceCompleteQuest(20015);
qm.gainExp(95);
qm.guideHint(10);
qm.dispose();
}
}

61
scripts/quest/20016.js Normal file
View File

@@ -0,0 +1,61 @@
/*
NPC Name: Nineheart
Description: Quest - Do you know the black Magician?
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 8) {
qm.sendNext("Oh, do you still have some questions? Talk to me again and I'll explain it to you from the very beginning.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("Hello, #h0#. Welcome to #p1101000# Knights. My name is #p1101002# and I am currently serving as the young Empress's Tactician. We'd better get acquainted since we'll be seeing a lot of each other. Haha!");
} else if (status == 1) {
qm.sendNextPrev("I'm sure you have a lot of questions since everything happened so quickly. I'll explain it all, one by one, from where you are to what you're here to do.");
} else if (status == 2) {
qm.sendNextPrev("This island is called Ereve. Thanks to the Empress's magic, this island usually floats around like a boat in the sky and patrols around Maple World. Right now, however, we've stopped here for a reason.");
} else if (status == 3) {
qm.sendNextPrev("The young Empress is the ruler of Maple World. What? This is the first time you've heard of her? Ah, yes. Well, she's the ruler of Maple World but she doesn't like to control it. She watches from afar to make sure that all is well. Well, at least that's her usual role.");
} else if (status == 4) {
qm.sendNextPrev("But that's not the case right now. We've been finding signs all over Maple World that foreshadow the revival of the Black Mage. We can't have the Black Mage come back to terrorize Maple World as he has in the past!");
} else if (status == 5) {
qm.sendNextPrev("But that was ages ago and people today don't realize how scary the Black Mage is. We've all become spoiled by the peaceful Maple World we enjoy today and forgotten how chaotic and frightening Maple World once was. If we don't do something, the Black Mage will once again rule Maple World!");
} else if (status == 6) {
qm.sendNextPrev("This is why the young Empress has decided to take matters into her own hands. She's forming a knighthood of brave Maplers to defeat the Black Mage once and for all. You know what you need to do, right? I'm sure you have an idea since you, yourself, signed up to be a Knight.");
} else if (status == 7) {
qm.sendNextPrev("We have to get stronger so we can defeat the Black Mage if he revives. Our primary goal is to prevent him from destroying Maple World, and you will play a prominent role in that.");
} else if (status == 8) {
qm.sendAcceptDecline("That concludes my explanation. Have I answered all your questions? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 380 exp");
} else if (status == 9) {
if (!qm.isQuestStarted(20016)) {
qm.forceStartQuest();
qm.gainExp(380);
}
qm.sendNext("I'm glad you're clear about our current situation, but you know, at your current level, you're not even strong enough to face the Black Mage's minions, let alone the Black Mage himself. Not even his minions' minions, as a matter of fact. How will you protect Maple World at your current level?");
} else if (status == 10) {
qm.sendNextPrev("Although you've been accepted into the knighthood, you cannot be recognized as a knight yet. You are not an Official Knight because you're not even a Knight-in-Training. If you remain at your current level, you'll be nothing more than the handyman of #p1101000# Knights.");
} else if (status == 11) {
qm.sendNextPrev("But no one starts as a strong Knight on day one. The Empress didn't want someone strong. She wanted someone with courage whom she could develop into a strong Knight through rigorous training. So, you should first become a Knight-in-Training. We'll talk about your missions when you get to that point.");
} else if (status == 12) {
qm.forceCompleteQuest();
qm.sendPrev("Take the portal on the left to reach the Training Forest. There, you will find #p1102000#, the Training Instructor, who will teach you how to become stronger. I don't want to find you wandering around aimlessly until you reach Lv. 10, you hear?");
} else if (status == 13) {
qm.dispose();
}
}
function end(mode, type, selection) {
}

42
scripts/quest/20017.js Normal file
View File

@@ -0,0 +1,42 @@
/*
NPC Name: Cygnus
Description: Quest - Encounter with the Young Queen
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("Hmm, there is nothing to worry about. This will be a breeze for someone your level. Muster your courage and let me know when you're ready.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("Hmm? #p1101002# sent you, huh? You must be the newbie that recently joined Cygnus Knights. Welcome, and nice to meet you! My name is #p1102000#. I'm the Training Instructor who trains all Noblesses like yourself. Of course, I'm not a human as you can tell.");
} else if (status == 1) {
qm.sendNextPrev("We are called Piyos. You've seen #p1101001# who is at the Empress's side all the time, haven't you? Piyos are of the same family as #p1101001#, but we belong to different types. Of course, you haven't seen any of us since we only live in Ereve. You'll get used to Piyos in no time.");
} else if (status == 2) {
qm.sendNextPrev("Oh, and did you know that there are no monsters in Ereve? Not even a smidgeon of evil dare enter Ereve. But don't you worry. You'll be able to train with illusory monsters created by #p1101001# called Mimis.");
} else if (status == 3) {
qm.sendAcceptDecline("You seem prepared! Looking at what you've accomplished, I think you should jump right into hunting more advanced Mimis. How about you hunt #b15 #r#o100122#s in #m130010100##k#k? Use the portal on the left to reach the #bTraining Forest II#k.");
} else if (status == 4) {
qm.guideHint(12);
qm.forceStartQuest(20020);
qm.forceCompleteQuest(20100);
qm.forceStartQuest();
qm.dispose();
}
}
function end(mode, type, selection) {
}

39
scripts/quest/20020.js Normal file
View File

@@ -0,0 +1,39 @@
/*
NPC Name: Nineheart
Description: Quest - Cygnus movie Intro
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.sendOk("Talk to me after you have decided what you really want to do. Whatever you choose, you will not miss out or lose privileges, so don't take this too seriously...");
qm.dispose();
} else {
if (mode == 0 && type > 0 || selection == 1) {
qm.sendOk("Talk to me after you have decided what you really want to do. Whatever you choose, you will not miss out or lose privileges, so don't take this too seriously...");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("I can tell you've worked really hard by seeing that you're already at Level 10. I think it's time now for you to break out as a Nobless and officially become the Knight-in-Training. Before doing that, however, I want to ask you one thing. Have you decided which Knight you'd want to beome?");
} else if (status == 1) {
qm.sendNextPrev("There isn't a single path to becoming a Knight. In fact, there are five of them laid out for you. It's up to you to choose which path you'd like to take, but it should definitely be something you will not regret. That's why... I am offering to show you what you'll look like once you become a Knight.");
} else if (status == 2) {
qm.sendSimple("What do you think? Are you interested in seeing yourself as the leader of the Knights? If you have already decided what kind of Knight you'd like to become, then you won't necessarily have to look at it...\r\n\r\n#b#L0#Show me how I'd look like as the leader of the Knights.#l ..#b#L1#No, I'm okay.");
} else if (status == 3) {
qm.sendYesNo("Would you like to see for it yourself right now? A short clip will come out soon. Be prepared for what you are about to witness.");
} else if (status == 4) {
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.warp(913040100, 0);
qm.dispose();
}
}
}

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

@@ -0,0 +1,49 @@
/*
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 : Traitor
NPC Name: Neinheart
Map(s): Ereve
Description: Quest - Time to Choose
Quest ID : 20100
*/
var status = -1;
function start(mode, type, selection) {
if (mode > 0) {
status++;
} else {
qm.dispose();
return;
}
if (status == 0) {
qm.sendAcceptDecline("Ahhh, you're back. I can see that you're at level 10 now. It looks like you're flashing a glimmer of hope towards becoming a Knight. The basic training has now ended, and it's time for you to make the decision.");
} else if (status == 1) {
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.sendOk("Now look to the left. The leaders of the Knights will be waiting for you. There will be 5 paths for you to choose from. All you need to do is choose one of them. All 5 of them will lead you to the path of a Knight, so... I suggest you pay attention to what each path offers, and select the one you'd most like to take.");
} else if (status == 2) {
qm.dispose();
}
}

58
scripts/quest/20101.js Normal file
View File

@@ -0,0 +1,58 @@
/*
* Cygnus 1st Job advancement - Dawn Warrior
*/
var status = -1;
var jobType = 1;
var canTryFirstJob = true;
function end(mode, type, selection) {
if (mode == 0) {
if (status == 0) {
qm.sendNext("This is an important decision to make.");
qm.dispose();
return;
}
status--;
} else {
status++;
}
if (status == 0) {
qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Dawn Warrior?");
} else if (status == 1) {
if (canTryFirstJob) {
canTryFirstJob = false;
if (qm.getPlayer().getJob().getId() != 1100) {
if (!qm.canGetFirstJob(jobType)) {
qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rDawn Warrior#k.");
qm.dispose();
return;
}
if (!(qm.canHoldAll([1302077, 1142066]))) {
qm.sendOk("Make some room in your inventory and talk back to me.");
qm.dispose();
return;
}
qm.gainItem(1302077, 1);
qm.gainItem(1142066, 1);
const Job = Java.type('client.Job');
qm.changeJob(Job.DAWNWARRIOR1);
qm.getPlayer().resetStats();
}
qm.forceCompleteQuest();
}
qm.sendNext("I have just molded your body to make it perfect for a Dawn Warrior. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k.");
} else if (status == 2) {
qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry.");
} else if (status == 3) {
qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first.");
} else if (status == 4) {
qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Dawn Warrior, you will lost a portion of your EXP when you run out of HP, okay?");
} else if (status == 5) {
qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate.");
} else if (status == 6) {
qm.dispose();
}
}

58
scripts/quest/20102.js Normal file
View File

@@ -0,0 +1,58 @@
/*
* Cygnus 1st Job advancement - Blaze Wizard
*/
var status = -1;
var jobType = 2;
var canTryFirstJob = true;
function end(mode, type, selection) {
if (mode == 0) {
if (status == 0) {
qm.sendNext("This is an important decision to make.");
qm.dispose();
return;
}
status--;
} else {
status++;
}
if (status == 0) {
qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Blaze Wizard?");
} else if (status == 1) {
if (canTryFirstJob) {
canTryFirstJob = false;
if (qm.getPlayer().getJob().getId() != 1200) {
if (!qm.canGetFirstJob(jobType)) {
qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rBlaze Wizard#k.");
qm.dispose();
return;
}
if (!(qm.canHoldAll([1372043, 1142066]))) {
qm.sendOk("Make some room in your inventory and talk back to me.");
qm.dispose();
return;
}
qm.gainItem(1372043, 1);
qm.gainItem(1142066, 1);
const Job = Java.type('client.Job');
qm.changeJob(Job.BLAZEWIZARD1);
qm.getPlayer().resetStats();
}
qm.forceCompleteQuest();
}
qm.sendNext("I have just molded your body to make it perfect for a Blaze Wizard. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k.");
} else if (status == 2) {
qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry.");
} else if (status == 3) {
qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first.");
} else if (status == 4) {
qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Blaze Wizard, you will lost a portion of your EXP when you run out of HP, okay?");
} else if (status == 5) {
qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate.");
} else if (status == 6) {
qm.dispose();
}
}

59
scripts/quest/20103.js Normal file
View File

@@ -0,0 +1,59 @@
/*
* Cygnus 1st Job advancement - Wind Archer
*/
var status = -1;
var jobType = 3;
var canTryFirstJob = true;
function end(mode, type, selection) {
if (mode == 0) {
if (status == 0) {
qm.sendNext("This is an important decision to make.");
qm.dispose();
return;
}
status--;
} else {
status++;
}
if (status == 0) {
qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Wind Archer?");
} else if (status == 1) {
if (canTryFirstJob) {
canTryFirstJob = false;
if (qm.getPlayer().getJob().getId() != 1300) {
if (!qm.canGetFirstJob(jobType)) {
qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rWind Archer#k.");
qm.dispose();
return;
}
if (!(qm.canHoldAll([1452051, 1142066]) && qm.canHold(2070000))) {
qm.sendOk("Make some room in your inventory and talk back to me.");
qm.dispose();
return;
}
qm.gainItem(2060000, 2000);
qm.gainItem(1452051, 1);
qm.gainItem(1142066, 1);
const Job = Java.type('client.Job');
qm.changeJob(Job.WINDARCHER1);
qm.getPlayer().resetStats();
}
qm.forceCompleteQuest();
}
qm.sendNext("I have just molded your body to make it perfect for a Wind Archer. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k.");
} else if (status == 2) {
qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry.");
} else if (status == 3) {
qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first.");
} else if (status == 4) {
qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Wind Archer, you will lost a portion of your EXP when you run out of HP, okay?");
} else if (status == 5) {
qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate.");
} else if (status == 6) {
qm.dispose();
}
}

59
scripts/quest/20104.js Normal file
View File

@@ -0,0 +1,59 @@
/*
* Cygnus 1st Job advancement - Night Walker
*/
var status = -1;
var jobType = 4;
var canTryFirstJob = true;
function end(mode, type, selection) {
if (mode == 0) {
if (status == 0) {
qm.sendNext("This is an important decision to make.");
qm.dispose();
return;
}
status--;
} else {
status++;
}
if (status == 0) {
qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Night Walker?");
} else if (status == 1) {
if (canTryFirstJob) {
canTryFirstJob = false;
if (qm.getPlayer().getJob().getId() != 1400) {
if (!qm.canGetFirstJob(jobType)) {
qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rNight Walker#k.");
qm.dispose();
return;
}
if (!(qm.canHoldAll([1472061, 1142066]) && qm.canHold(2070000))) {
qm.sendOk("Make some room in your inventory and talk back to me.");
qm.dispose();
return;
}
qm.gainItem(1472061, 1);
qm.gainItem(2070000, 800);
qm.gainItem(1142066, 1);
const Job = Java.type('client.Job');
qm.changeJob(Job.NIGHTWALKER1);
qm.getPlayer().resetStats();
}
qm.forceCompleteQuest();
}
qm.sendNext("I have just molded your body to make it perfect for a Night Walker. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k.");
} else if (status == 2) {
qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry.");
} else if (status == 3) {
qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first.");
} else if (status == 4) {
qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Night Walker, you will lost a portion of your EXP when you run out of HP, okay?");
} else if (status == 5) {
qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate.");
} else if (status == 6) {
qm.dispose();
}
}

58
scripts/quest/20105.js Normal file
View File

@@ -0,0 +1,58 @@
/*
* Cygnus 1st Job advancement - Thunder Breaker
*/
var status = -1;
var jobType = 5;
var canTryFirstJob = true;
function end(mode, type, selection) {
if (mode == 0) {
if (status == 0) {
qm.sendNext("This is an important decision to make.");
qm.dispose();
return;
}
status--;
} else {
status++;
}
if (status == 0) {
qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Thunder Breaker?");
} else if (status == 1) {
if (canTryFirstJob) {
canTryFirstJob = false;
if (qm.getPlayer().getJob().getId() != 1500) {
if (!qm.canGetFirstJob(jobType)) {
qm.sendOk("Train a bit more until you reach #blevel 10, " + qm.getFirstJobStatRequirement(jobType) + "#k and I can show you the way of the #rThunder Breaker#k.");
qm.dispose();
return;
}
if (!(qm.canHoldAll([1482014, 1142066]))) {
qm.sendOk("Make some room in your inventory and talk back to me.");
qm.dispose();
return;
}
qm.gainItem(1482014, 1);
qm.gainItem(1142066, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.THUNDERBREAKER1);
qm.getPlayer().resetStats();
}
qm.forceCompleteQuest();
}
qm.sendNext("I have just molded your body to make it perfect for a Thunder Breaker. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you aren't sure what to raise, just click on #bAuto#k.");
} else if (status == 2) {
qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry.");
} else if (status == 3) {
qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first.");
} else if (status == 4) {
qm.sendNextPrev("Unlike your time as a Noblesse, once you become the Thunder Breaker, you will lost a portion of your EXP when you run out of HP, okay?");
} else if (status == 5) {
qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate.");
} else if (status == 6) {
qm.dispose();
}
}

54
scripts/quest/20200.js Normal file
View File

@@ -0,0 +1,54 @@
/*
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: Xterminator
NPC Name: Neinheart
Map(s): Empress' Road : Ereve (130000000)
Description: Quest - The End of Knight-in-Training
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 0 && mode == 0) {
qm.sendNext("Hmmm... do you feel like you still have missions to take care of as a trainee? I commend your level of patience, but this has gone too far. Cygnus Knights is in dire need of new, more powerful knights.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendAcceptDecline("#h0#? Wow, your level has sky-rocketed since the last time I saw you. You also look like you've taken care of a number of missions as well... You seem much more ready to move on now than the last time I saw you. What do you think? Are you interested in taking the #bKnighthood Exam#k? It's time for you to grow out of the Knight-in-Training and become a bonafide Knight, right?");
} else if (status == 1) {
qm.startQuest();
qm.completeQuest();
qm.sendOk("If you wish to take the Knighthood Exam, please come to Ereve. Each Chief Knight will test your abilities, and if you meet their standards, then you will officially become a Knight.");
} else if (status == 2) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,72 @@
/*
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: Xterminator
NPC Name: Mihile
Map(s): Empress' Road : Ereve (130000000)
Description: Quest - Knighthood Exam: Dawn Warrior
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 0 && mode == 0) {
qm.sendNext("I guess you are not ready to tackle on the responsibilities of an official knight.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendYesNo("So you brought all of #t4032096#... Okay, I believe that your are now qualified to become an official knight. Do you want to become one?");
} else if (status == 1) {
if (qm.getPlayer().getJob().getId() == 1100 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) {
qm.sendNext("You have too much #bSP#k with you. Use some more on the 1st-level skill.");
qm.dispose();
} else {
if (qm.getPlayer().getJob().getId() != 1110) {
if (!qm.canHold(1142067)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
qm.dispose();
return;
}
qm.gainItem(4032096, -30);
qm.gainItem(1142067, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.DAWNWARRIOR2);
qm.completeQuest();
}
qm.sendNext("You are a Knight-in-Training no more. You are now an official knight of the Cygnus Knights.");
}
} else if (status == 2) {
qm.sendNextPrev("I have given you some #bSP#k. I have also given you a number of skills for a Dawn Warrior that's only available to knights, so I want you to work on it and hopefully cultivate it as much as your soul.");
} else if (status == 3) {
qm.sendPrev("Now that you are officially a Cygnus Knight, act like one so you will keep the Empress's name up high.");
} else if (status == 4) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,72 @@
/*
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: Xterminator
NPC Name: Oz
Map(s): Empress' Road : Ereve (130000000)
Description: Quest - Knighthood Exam: Blaze Wizard
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 0 && mode == 0) {
qm.sendNext("Eh? Why? Is there something wrong?");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendYesNo("You managed to bring all of #t4032097#!!! Okay, I believe that your are now qualified to become an official knight! Do you want to become one?");
} else if (status == 1) {
if (qm.getPlayer().getJob().getId() == 1200 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) {
qm.sendNext("Wa, wait... you have way too much #bSP#k with you. You'll need to spend more SP on 1st-level skills to become an official knight.");
qm.dispose();
} else {
if (qm.getPlayer().getJob().getId() != 1210) {
if (!qm.canHold(1142067)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
qm.dispose();
return;
}
qm.gainItem(4032097, -30);
qm.gainItem(1142067, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.BLAZEWIZARD2);
qm.completeQuest();
}
qm.sendNext("You are no longer a Knight-in-Training. You are now an official Cygnus Knight!");
}
} else if (status == 2) {
qm.sendNextPrev("I have given you some #bSP#k. I have also given you some skills of Blaze Wizards that are only available to official knights, so keep working!");
} else if (status == 3) {
qm.sendPrev("Now that you have officially become one, I want you to keep that fire in you that you had when you first started this journey, but this time, as a proud member of the Cygnus Knights!");
} else if (status == 4) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,72 @@
/*
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: Xterminator
NPC Name: Irena
Map(s): Empress' Road : Ereve (130000000)
Description: Quest - Knighthood Exam: Wind Archer
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 0 && mode == 0) {
qm.sendNext("Is there actually a reason why you should stay as a Knight-in-Training?");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendYesNo("#t4032098#... I checked them all. I can tell you are now ready to make the leap as an official knight. Do you want to become one?");
} else if (status == 1) {
if (qm.getPlayer().getJob().getId() == 1300 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) {
qm.sendNext("You have way too much #bSP#k with you. You'll need to spend more SP on 1st-level skills to become an official knight.");
qm.dispose();
} else {
if (qm.getPlayer().getJob().getId() != 1310) {
if (!qm.canHold(1142067)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
qm.dispose();
return;
}
qm.gainItem(4032098, -30);
qm.gainItem(1142067, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.WINDARCHER2);
qm.completeQuest();
}
qm.sendNext("You are no longer a Knight-in-Training. You are now officially a Cygnus Knight.");
}
} else if (status == 2) {
qm.sendNextPrev("I have given you some #bSP#k. I have also given you some skills of Wind Archer that are only available to official knights, so keep working!");
} else if (status == 3) {
qm.sendPrev("As an official Cygnus Knight, you should always keep yourself level-headed.");
} else if (status == 4) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,72 @@
/*
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: Xterminator
NPC Name: Eckhart
Map(s): Empress' Road : Ereve (130000000)
Description: Quest - Knighthood Exam: Night Walker
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 0 && mode == 0) {
qm.sendNext("What's holding you back?");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendYesNo("So you brought all the #t4032099#s with you. This is much b... way, I shouldn't congratulate you for doing something that you should be doing. At least, I can tell that you are now qualified to become an official knight. Do you want to become one right now?");
} else if (status == 1) {
if (qm.getPlayer().getJob().getId() == 1400 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) {
qm.sendNext("What's with all this #bSP#k lying around? Use more SP on your 1st-level skills.");
qm.dispose();
} else {
if (qm.getPlayer().getJob().getId() != 1410) {
if (!qm.canHold(1142067)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
qm.dispose();
return;
}
qm.gainItem(4032099, -30);
qm.gainItem(1142067, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.NIGHTWALKER2);
qm.completeQuest();
}
qm.sendNext("You are no longer a Knight-in-Training. You have officially become a Cygnus Knight.");
}
} else if (status == 2) {
qm.sendNextPrev("I have given you some #bSP#k. I have also given you some skills of Night Walker that are only available to official knights, so keep working!");
} else if (status == 3) {
qm.sendPrev("As a member of the Cygnus Knights, I hope you remain unaffected by temptations and stay strong.");
} else if (status == 4) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,72 @@
/*
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: Xterminator
NPC Name: Hawkeye
Map(s): Empress' Road : Ereve (130000000)
Description: Quest - Knighthood Exam: Thunder Breaker
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 0 && mode == 0) {
qm.sendNext("Hmm? Why? What's holding you back?");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendYesNo("Oh, you brought all #t4032100#s! Ahaha, I knew you'd be good at it. Tell you what, I now commend that you're now ready to become an official knight. Do you want to become one right now?");
} else if (status == 1) {
if (qm.getPlayer().getJob().getId() == 1500 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) {
qm.sendNext("Hey, how did you manage to hunt all that? You have way too much #bSP#k lying around unused! You can't become an official knight like this! Use more SP on the 1st level skill.");
qm.dispose();
} else {
if (qm.getPlayer().getJob().getId() != 1510) {
if (!qm.canHold(1142067)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
qm.dispose();
return;
}
qm.gainItem(4032100, -30);
qm.gainItem(1142067, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.THUNDERBREAKER2);
qm.completeQuest();
}
qm.sendNext("You are now no longer a Knight-in-Training. You have now officially become a Cygnus Knight.");
}
} else if (status == 2) {
qm.sendNextPrev("I have also given you some #bSP#k and the accompanying skills of a Thunder Breakers that are only available to the official knights. These skills are lightning-based, so use them wisely!");
} else if (status == 3) {
qm.sendPrev("Well, personally, I hope you don't lose your enthusiasm even after becoming the Cygnus Knights. Always seek out the positive even if you're in the midst of a barrage of negative items.");
} else if (status == 4) {
qm.dispose();
}
}
}

67
scripts/quest/20311.js Normal file
View File

@@ -0,0 +1,67 @@
/*
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: ThreeStep
NPC Name: Mihile (1101003)
Description: Dawn Warrior 3rd job advancement
Quest: Shinsoo's Teardrop
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 1 && mode == 0) {
qm.sendNext("Come back when you are ready.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("The jewel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us.");
} else if (status == 1) {
qm.sendYesNo("For your effort in preventing a potentially serious disaster, the Empress has decided to present you with a new title. Are you ready to accept it?");
} else if (status == 2) {
nPSP = (qm.getPlayer().getLevel() - 70) * 3;
if (qm.getPlayer().getRemainingSp() > nPSP) {
qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills.");
} else {
if (!qm.canHold(1142068)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
} else {
qm.completeQuest();
qm.gainItem(1142068, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.DAWNWARRIOR3);
qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you shall carry yourself with dignity and respect befitting your new title, an Advanced Knight of Cygnus Knights. May your glory continue to shine as bright as this moment.");
}
}
} else if (status == 3) {
qm.dispose();
}
}
}

67
scripts/quest/20312.js Normal file
View File

@@ -0,0 +1,67 @@
/*
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: ThreeStep
NPC Name: Oz (1101004)
Description: Blaze Wizard 3rd job advancement
Quest: Shinsoo's Teardrop
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 1 && mode == 0) {
qm.sendNext("Come back when you are ready.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("The jewel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us.");
} else if (status == 1) {
qm.sendYesNo("As a token of her appreciation for your effort in preventing potentially serious matter, the Empress has decided to present you with a new title. Are you ready to accept it?");
} else if (status == 2) {
nPSP = (qm.getPlayer().getLevel() - 70) * 3;
if (qm.getPlayer().getRemainingSp() > nPSP) {
qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills.");
} else {
if (!qm.canHold(1142068)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
} else {
qm.completeQuest();
qm.gainItem(1142068, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.BLAZEWIZARD3);
qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you will train yourself with fervor as you will lead your group of Knights for the safety of this world. That fervor will provide you with plenty of courage.");
}
}
} else if (status == 3) {
qm.dispose();
}
}
}

67
scripts/quest/20313.js Normal file
View File

@@ -0,0 +1,67 @@
/*
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: ThreeStep
NPC Name: Irena (1101005)
Description: Wind Archer 3rd job advancement
Quest: Shinsoo's Teardrop
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 1 && mode == 0) {
qm.sendNext("Come back when you are ready.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("The jewel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us.");
} else if (status == 1) {
qm.sendYesNo("As a token of her appreciation for your work on this, the Empress has decided to present you with a new title. Would you like to receive that title?");
} else if (status == 2) {
nPSP = (qm.getPlayer().getLevel() - 70) * 3;
if (qm.getPlayer().getRemainingSp() > nPSP) {
qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills.");
} else {
if (!qm.canHold(1142068)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
} else {
qm.completeQuest();
qm.gainItem(1142068, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.WINDARCHER3);
qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you will be carrying a while lot of responsibility befitting your new title as an Advanced Knight of Cygnus Knights. You may view the world in a carefree mode, but please remember what your mission is.");
}
}
} else if (status == 3) {
qm.dispose();
}
}
}

67
scripts/quest/20314.js Normal file
View File

@@ -0,0 +1,67 @@
/*
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: ThreeStep
NPC Name: Eckhart (1101006)
Description: Night Walker 3rd job advancement
Quest: Shinsoo's Teardrop
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 1 && mode == 0) {
qm.sendNext("Come back when you are ready.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("The jewel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us.");
} else if (status == 1) {
qm.sendYesNo("The Empress thought highly of your accomplishment and granted you a new title. Would you like to receive it?");
} else if (status == 2) {
nPSP = (qm.getPlayer().getLevel() - 70) * 3;
if (qm.getPlayer().getRemainingSp() > nPSP) {
qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills.");
} else {
if (!qm.canHold(1142068)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
} else {
qm.gainItem(1142068, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.NIGHTWALKER3);
qm.completeQuest();
qm.sendOk("#h #, from here on out, you are an Advanced Knight of Cygnus Knights. The title comes with a newfound broad view on everything. You may encounter temptations here and there, but I want you to keep your faith and beliefs intact and do not succumb to the darkness.");
}
}
} else if (status == 3) {
qm.dispose();
}
}
}

67
scripts/quest/20315.js Normal file
View File

@@ -0,0 +1,67 @@
/*
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: ThreeStep
NPC Name: Hawkeye (1101007)
Description: Thunder breaker 3rd job advancement
Quest: Shinsoo's Teardrop
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
} else {
if (status == 1 && mode == 0) {
qm.sendNext("Come back when you are ready.");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("The jewel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us.");
} else if (status == 1) {
qm.sendYesNo("Because of that, the Empress gave you a new title! Can you believe that? Do you want the title?");
} else if (status == 2) {
nPSP = (qm.getPlayer().getLevel() - 70) * 3;
if (qm.getPlayer().getRemainingSp() > nPSP) {
qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills.");
} else {
if (!qm.canHold(1142068)) {
qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory.");
} else {
qm.gainItem(1142068, 1);
const Job = Java.type('client.Job');
qm.getPlayer().changeJob(Job.THUNDERBREAKER3);
qm.completeQuest();
qm.sendOk("#h #, from here on out, you will become an Advanced Knight of the Knights of Cygnus! As your standing rises, so does the difficulty of the tasks you will be receiving. But challenge is good, right? You have to enjoy life. Enjoy what's given to you!");
}
}
} else if (status == 3) {
qm.dispose();
}
}
}

48
scripts/quest/2034.js Normal file
View File

@@ -0,0 +1,48 @@
var item;
var status = -1;
var item;
function end(mode, type, selection) {
if (mode == 0) {
qm.dispose();
return;
}
status++;
if (status == 0) {
qm.sendNext("I knew it ... I knew you could get it done with, quickly! You did your job well last time, and here you are again, taking care of business!! Alright, since you have done it so well, I should reward you well. #b#p1051000##k is giving you a pair of shoes in hopes of helping you out on your future traveling.");
} else if (status == 1) {
const InventoryType = Java.type('client.inventory.InventoryType');
if (qm.getPlayer().getInventory(InventoryType.EQUIP).getNumFreeSlot() < 1) {
qm.sendOk("Please free a EQUIP inventory slot to receive the reward.");
qm.dispose();
return;
}
var stance = qm.getPlayer().getJobStyle();
const Job = Java.type('client.Job');
if (stance == Job.WARRIOR) {
item = 1072003;
} else if (stance == Job.MAGICIAN) {
item = 1072077;
} else if (stance == Job.BOWMAN || stance == Job.CROSSBOWMAN) {
item = 1072081;
} else if (stance == Job.THIEF) {
item = 1072035;
} else if (stance == Job.BRAWLER || stance == Job.GUNSLINGER) {
item = 1072294;
} else {
item = 1072018;
}
qm.gainItem(item, 1);
qm.gainItem(4000007, -150);
qm.gainExp(2200);
qm.completeQuest();
qm.sendOk("Alright, if you need work sometime down the road, feel free to come back and see me. This town sure can use a person like you for help~");
} else if (status == 2) {
qm.dispose();
}
}

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

@@ -0,0 +1,49 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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/>.
*/
/*
Chasing the Knight's Target
*/
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("Not long ago, we received a distress signal of #bAdvanced Knight #p1103000##k, currently stationed somewhere in #rEl Nath#k. His Your job is to find him, first go talk to #b#p1101002##k and receive further instructions on your mission.");
} else if (status == 1) {
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,49 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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/>.
*/
/*
Chasing the Knight's Target
*/
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("Last time #bAdvanced Knight #p1103000##k was seen, he was investigating the surging increase on #rzombies#k lately on the #rhigh-grounds of El Nath#k. You should get yourself there to see if you can find any clue of what could have happened.");
} else if (status == 1) {
qm.forceCompleteQuest();
qm.dispose();
}
}
}

51
scripts/quest/20405.js Normal file
View File

@@ -0,0 +1,51 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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/>.
*/
/*
Chasing the Knight's Target
*/
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("There's a note on the wall: 'The source of the curse still goes missing, but a strange device, that I suppose has been used by #rthem#k was found here.'", 3);
} else if (status == 1) {
qm.sendNextPrev("'The machine was sent to #rEreve#k for avaliation, I'll now set out to continue my mission. Let the Empress bless me on my journey.'", 3);
} else if (status == 2) {
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,49 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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/>.
*/
/*
Chasing the Knight's Target
*/
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("Is that so? All there was was a saying that #p1103000# set out to continue his journey? That can't be, there were further instructions for him to detail the progress of his mission until then. #rReturn to the cave#k and report again if it really has nothing more there.");
} else if (status == 1) {
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,64 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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) { // missing script for questid found thanks to Jade™
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("#h0#... First of all, thank you for your great work. If it weren't you, I... I wouldn't be safe from the curse of Black Witch. Thank you so much.");
} else if (status == 1) {
qm.sendNextPrev("If nothing else, this chain of events makes one thing crystal clear, you have put in countless hours of hard work to better yourself and contribute to the Cygnus Knights.");
} else if (status == 2) {
qm.sendAcceptDecline("To celebrate your hard work and accomplishments... I would like to award you a new title and renew my blessings onto you. Will you... accept this?");
} else if (status == 3) {
if (!qm.canHold(1142069, 1)) {
qm.sendOk("Please, make a room available on your EQUIP inventory for the medal.");
qm.dispose();
return;
}
qm.gainItem(1142069, 1);
if (qm.getJobId() % 10 == 1) {
qm.changeJobById(qm.getJobId() + 1);
}
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.sendOk("#h0#. For courageously battling the Black Mage, I will appoint you as the new Chief Knight of Cygnus Knights from this moment onwards. Please use your power and authority wisely to help protect the citizens of Maple World.");
} else if (status == 4) {
qm.dispose();
}
}
}

51
scripts/quest/20514.js Normal file
View File

@@ -0,0 +1,51 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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
function raiseOpen() {
var chr = qm.getPlayer();
var questStatus = chr.getQuestStatus(qm.getQuest());
if (questStatus == 0) {
qm.setQuestProgress(20515, 0, chr.getLevel());
qm.setQuestProgress(20515, 1, chr.getExp());
} else if (questStatus == 1) { // update mimiana progress...
var diffExp = chr.getExp() - qm.getQuestProgressInt(20515, 1);
var initLevel = qm.getQuestProgressInt(20515, 0);
const ExpTable = Java.type('constants.game.ExpTable');
for (var i = initLevel; i < chr.getLevel(); i++) {
diffExp += ExpTable.getExpNeededForLevel(i);
}
if (diffExp > 0) { // thanks IxianMace for noticing Mimiana egg not following progress by EXP
const ItemInformationProvider = Java.type('server.ItemInformationProvider');
var consItem = ItemInformationProvider.getInstance().getQuestConsumablesInfo(4220137);
var exp = consItem.exp;
var grade = consItem.grade;
qm.setQuestProgress(20514, 0, Math.min(diffExp, exp * grade));
}
}
qm.dispose();
}

50
scripts/quest/20520.js Normal file
View File

@@ -0,0 +1,50 @@
/*
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 : Biscuit
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
qm.dispose();
return;
} else {
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendNext("Wow, you have already reach Level 50, yet why are you still walking around like that? I mean, you've reached Level 50, but you are still walking around with your own feet. That's unusual behavior for a Knight like you.");
} else if (status == 1) {
qm.sendAcceptDecline("Well, I suppose it's up to you, but by doing that, you also risk marring the pride and honor of the Empress. This is why I am here to give you a helpful pointer. It's called #bMonster Riding#k. Of course you're interested in this, right?");
} else if (status == 2) {
qm.forceStartQuest();
qm.forceCompleteQuest();
qm.sendOk("There's a special mount that only the Cygnus Knights can enjoy. If you are interested, visit #bEreve#k. I will give you more information on it.");
} else if (status == 3) {
qm.dispose();
}
}

88
scripts/quest/20522.js Normal file
View File

@@ -0,0 +1,88 @@
/*
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 Lana
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
return;
} else if (status >= 2 && mode == 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("The riding for Knights are a bit different from the rides available for regular folks. The takes place through a creature that is of the Mimi race that can be found on this island; they are called #bMimianas#k. Instead of riding monsters, the Knights ride Mimiana. There's one thing that you should never, ever forget.");
} else if (status == 1) {
qm.sendNextPrev("Dont't think of this as just a form of mount or transportation. These mounts can be your friend, your comrade, your colleague... all of the above. Even a friend close enough to entrust your life! That's why the Knights of Ereve actually grow their own mounts.");
} else if (status == 2) {
qm.sendAcceptDecline("Now, here's a Mimiana egg. Are you ready to raise a Mimiana and have it as your traveling companion for the rest of its life?");
} else if (status == 3) {
if (!qm.haveItem(4220137) && !qm.canHold(4220137)) {
qm.sendOk("Make up a room on your ETC tab so I can give you the Mimiana egg.");
qm.dispose();
return;
}
qm.forceStartQuest();
if (!qm.haveItem(4220137)) {
qm.gainItem(4220137);
}
qm.sendOk("Mimiana's egg can be raised by #bsharing your daily experiences with it#k. Once Mimiana fully grows up, please come see me.");
} else if (status == 4) {
qm.dispose();
}
}
function end(mode, type, selection) {
if (mode != 1) {
qm.dispose();
return;
}
status++;
if (status == 0) {
qm.sendNext("Hey there! How's Mimiana's egg?");
} else if (status == 1) { //pretty sure there would need to have an egg EXP condition... Whatever.
if (!qm.haveItem(4220137)) {
qm.sendOk("I see, you lost your egg... You need to be more careful when raising a baby Mimiana!");
return;
}
qm.forceCompleteQuest();
qm.gainItem(4220137, -1);
qm.gainExp(37600);
qm.sendOk("Oh, were you able to awaken Mimiana Egg? That's amazing... Most knights can't even dream of awakening it in such a short amount of time.");
} else if (status == 2) {
qm.dispose();
}
}

96
scripts/quest/20526.js Normal file
View File

@@ -0,0 +1,96 @@
/*
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 Lana
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
return;
} else if (status >= 2 && mode == 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("You lost your Mimiana?! Geez, you have to be zealous for them, as they are a gift of the Empress to us! You have to be teached once again: The riding for Knights are a bit different from the rides available for regular folks. The takes place through a creature that is of the Mimi race that can be found on this island; they are called #bMimianas#k. Instead of riding monsters, the Knights ride Mimiana. There's one thing that you should never, ever forget.");
} else if (status == 1) {
qm.sendNextPrev("Dont't think of this as just a form of mount or transportation. These mounts can be your friend, your comrade, your colleague... all of the above. Even a friend close enough to entrust your life! That's why the Knights of Ereve actually grow their own mounts.");
} else if (status == 2) {
qm.sendAcceptDecline("Now, here's a Mimiana egg. Are you ready to raise a Mimiana and have it as your traveling companion for the rest of its life?");
} else if (status == 3) {
if (!qm.haveItem(4220137) && !qm.canHold(4220137)) {
qm.sendOk("Make up a room on your ETC tab so I can give you the Mimiana egg.");
qm.dispose();
return;
}
qm.forceStartQuest();
if (!qm.haveItem(4220137)) {
qm.gainItem(4220137);
}
qm.sendOk("Mimiana's egg can be raised by #bsharing your daily experiences with it#k. Once Mimiana fully grows up, please come see me. One more thing, I talked with #p2060005# beforehand and retrieved the #b#t4032117##k for you. The price to charge remains the same: #r10,000,000 mesos#k.");
} else if (status == 4) {
qm.dispose();
}
}
function end(mode, type, selection) {
if (mode != 1) {
qm.dispose();
return;
}
status++;
if (status == 0) {
qm.sendNext("Hey there! How's Mimiana's egg?");
} else if (status == 1) { //pretty sure there would need to have an egg EXP condition... Whatever.
if (!qm.haveItem(4220137)) {
qm.sendOk("I see, you lost your egg... You need to be more careful when raising a baby Mimiana!");
qm.dispose();
return;
}
if (!qm.canHold(1902005)) {
qm.sendOk("Please, make a space on your EQUIP tab for your Mimiana!");
qm.dispose();
return;
}
qm.forceCompleteQuest();
qm.gainItem(1902005, 1);
qm.gainItem(4220137, -1);
qm.gainMeso(-10000000);
qm.sendOk("Okay, you now may mount Mimiana again. Take good care of it this time.");
} else if (status == 2) {
qm.dispose();
}
}

51
scripts/quest/20527.js Normal file
View File

@@ -0,0 +1,51 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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) {
var mount = qm.getPlayer().getMount();
if (mount != null && mount.getLevel() >= 3) {
qm.forceCompleteQuest();
qm.sendNext("Alright, I'll get you started in how to train Mimio, the next step for Mimianas. When you're ready, talk to me again.");
} else {
qm.sendNext("It looks like your Mimiana haven't reached #rlevel 3#k yet. Please train it a bit more before trying to advance it.");
}
} else if (status == 1) {
qm.dispose();
}
}
}

22
scripts/quest/20600.js Normal file
View File

@@ -0,0 +1,22 @@
/*
* Cygnus Skill - Training Never ends
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (status == 0) {
qm.sendAcceptDecline("#h0#. Have you been slacking off on training since reaching Level 100? We all know how powerful you are, but the training is not complete. Take a look at these Knight Commanders. They train day and night, preparing themselves for the possible encounter with the Black Mage.");
} else if (status == 1) {
if (mode == 1) {
qm.forceStartQuest();
}
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

26
scripts/quest/20610.js Normal file
View File

@@ -0,0 +1,26 @@
/*
* Cygnus Skill -
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (status == 0) {
qm.sendAcceptDecline("Have you been mastering your skills? I am sure you've mastered all your skills, which means... it's time for you to learn a #bnew skill#k, right?");
} else if (status == 1) {
if (mode == 0) {
qm.sendOk("Well, what you're doing right now doesn't make you look like someone that's humble. You just look complacent by doing that, and that's never a good thing.");
} else {
qm.forceStartQuest();
qm.dispose();
}
} else if (status == 2) {
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

40
scripts/quest/20700.js Normal file
View File

@@ -0,0 +1,40 @@
/*
NPC Name: Nineheart
Description: Quest - Are you sure you can leave?
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 1) {
qm.sendNext("When will you realize how weak you are... When you get yourself in trouble in Victoria Island?");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("You have finally become a Knight-in-Training. I'd like to give you a mission right away, but you still look miles away from even being able to handle a task on your own. Are you sure you can even go to Victoria Island like this?");
} else if (status == 1) {
qm.sendAcceptDecline("It's up to you to head over to Victoria Island, but a Knight-in-Training that can't take care of one's self in battles is likely to cause harm to the Empress's impeccable reputation. As the Head Tactician of this island, I can't let that happen, period. I want you to keep training until the right time comes.");
} else if (status == 2) {
qm.forceCompleteQuest();
qm.sendNext("#p1102000#, the Training Instructor, will help you train into a serviceable knight. Once you reach Level 13, I'll assign you a mission or two. So until then, keep training.");
} else if (status == 3) {
qm.sendPrev("Oh, and are you aware that if you strike a conversation with #p1101001#, she'll give you a blessing? The blessing will definitely help you on your journey.");
} else if (status == 4) {
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

31
scripts/quest/20710.js Normal file
View File

@@ -0,0 +1,31 @@
/*
Author: DietStory v1.02 dev team
NPC: Matthias
Quest: Hidden Inside the Trash Can
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1) {
qm.dispose();
return;
} else if (mode == 0 && status == 0) {
qm.sendOk("What? Are you declining the mission? Fine, do it like that. I'll just report it straight to #p1101002#.");
qm.dispose();
return;
} else if (mode == 0) {
status--;
} else {
status++;
}
if (status == 0) {
qm.sendAcceptDecline("You don't really instill confidence in me, but since you're a Cygnus Knight and all... and since no one else can go on a search right now... Okay, let me explain to you what this mission is about.");
} else if (status == 1) {
qm.forceStartQuest();
qm.dispose();
}
}

26
scripts/quest/20720.js Normal file
View File

@@ -0,0 +1,26 @@
/*
QUEST: Before the Mission in Perion Begins
NPC: Neinheart
*/
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || (mode == 0 && status == 0)) {
qm.dispose();
return;
} else if (mode == 0) {
status--;
} else {
status++;
}
if (status == 0) {
qm.sendAcceptDecline("How's the leveling up so far? By this time, you might be able to participate in the Party Quest at #m103000000#. Leveling up is important, yes, but we need you now to take on a mission as a Cygnus Knight. We just received a new information that may help us.");
} else if (status == 1) {
qm.forceStartQuest();
qm.dispose();
}
}
function end(mode, type, selection) {}

61
scripts/quest/21000.js Normal file
View File

@@ -0,0 +1,61 @@
/*
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 : kevintjuh93
Map(s): Aran Training Map 2
Description: Quest - Help Kid
Quest ID : 21000
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
status -= 2;
} else {
qm.sendNext("No, Aran... We can't leave a kid behind. I know it's a lot to ask, but please reconsider. Please!");
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendAcceptDecline("Oh, no! I think there's still a child in the forest! Aran, I'm very sorry, but could you rescue the child? I know you're injured, but I don't have anyone else to ask!");
} else if (status == 1) {
qm.forceStartQuest();
qm.sendNext("#bThe child is probably lost deep inside the forest!#k We have to escape before the Black Mage finds us. You must rush into the forest and bring the child back with you!");
} else if (status == 2) {
qm.sendNextPrev("Don't panic, Aran. If you wish to check the status of the \r\nquest, press #bQ#k and view the Quest window.");
} else if (status == 3) {
qm.sendNextPrev("Please, Aran! I'm begging you. I can't bear to lose another person to the Black Mage!");
} else if (status == 4) {
qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1");
qm.dispose();
}
}
function end(mode, type, selection) {
qm.forceCompleteQuest();
qm.dispose();
}

85
scripts/quest/21001.js Normal file
View File

@@ -0,0 +1,85 @@
/*
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 : kevintjuh93
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 15 && mode == 0) {
qm.sendNext("*Sob* Aran has declined my request!");
qm.dispose();
return;
} else {
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendAcceptDecline("*Sniff sniff* I was so scared... Please take me to Athena Pierce.");
} else if (status == 1) {
qm.gainItem(4001271, 1);
qm.forceStartQuest();
qm.warp(914000300, 0);
qm.dispose();
}
}
function end(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
qm.sendNext("What about the child? Please give me the child!");
}
qm.dispose();
return;
}
if (status == 0) {
qm.sendYesNo("You made it back safely! What about the child?! Did you bring the child with you?!");
} else if (status == 1) {
qm.sendNext("Oh, what a relief. I'm so glad...", 9);
} else if (status == 2) {
qm.sendNextPrev("Hurry and board the ship! We don't have much time!", 3);
} else if (status == 3) {
qm.sendNextPrev("We don't have any time to waste. The Black Mage's forces are getting closer and closer! We're doomed if we don't leave right right this moment!", 9);
} else if (status == 4) {
qm.sendNextPrev("Leave, now!", 3);
} else if (status == 5) {
qm.sendNextPrev("Aran, please! I know you want to stay and fight the Black Mage, but it's too late! Leave it to the others and come to Victoria Island with us!", 9);
} else if (status == 6) {
qm.sendNextPrev("No, I can't!", 3);
} else if (status == 7) {
qm.sendNextPrev("Athena Pierce, why don't you leave for Victoria Island first? I promise I'll come for you later. I'll be alright. I must fight the Black Mage with the other heroes!", 3);
} else if (status == 8) {
qm.gainItem(4001271, -1);
qm.removeEquipFromSlot(-11);
qm.forceCompleteQuest();
qm.warp(914090010, 0); // Initialize Aran Tutorial Scenes
qm.dispose();
}
}

99
scripts/quest/21010.js Normal file
View File

@@ -0,0 +1,99 @@
/*
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 : kevintjuh93
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 15 && mode == 0) {
qm.sendNext("Oh, no need to decline my offer. It's no big deal. It's just a potion. Well, let me know if you change your mind.");
qm.dispose();
return;
}
//status -= 2;
}
if (status == 0) {
qm.sendNext("Hm, what's a human doing on this island? Wait, it's #p1201000#. What are you doing here, #p1201000#? And who's that beside you? Is it someone you know, #p1201000#? What? The hero, you say?");
} else if (status == 1) {
qm.sendNextPrev(" #i4001170#");//gms like
} else if (status == 2) {
qm.sendNextPrev("Ah, this must be the hero you and your clan have been waiting for. Am I right, #p1201000#? Ah, I knew you weren't just accompanying an average passerby...");
} else if (status == 3) {
qm.sendAcceptDecline("Oh, but it seems our hero has become very weak since the Black Mage's curse. It's only makes sense, considering that the hero has been asleep for hundreds of years. #bHere, I'll give you a HP Recovery Potion.#k");//nexon probably forgot to remove the '.' before '#k', lol
} else if (status == 4) {
if (qm.getPlayer().getHp() >= 50) {
qm.getPlayer().updateHp(25);
}
if (!qm.isQuestStarted(21010) && !qm.isQuestCompleted(21010)) {
qm.gainItem(2000022, 1);
qm.forceStartQuest();
}
qm.sendNext("Drink it first. Then we'll talk.", 9);
} else if (status == 5) {
qm.sendNextPrev("#b(How do I drink the potion? I don't remember..)", 3);
} else if (status == 6) {
qm.guideHint(14);
qm.dispose();
}
}
function end(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
qm.dispose();
} else {
qm.dispose();
return;
}
}
if (status == 0) {
if (qm.c.getPlayer().getHp() < 50) {
qm.sendNext("You have't drank the potion yet.");
qm.dispose();
} else {
qm.sendNext("We've been digging and digging inside the Ice Cave in the hope of finding a hero, but I never thought I'd actually see the day... The prophecy was true! You were right, #p1201000#! Now that one of the legendary heroes has returned, we have no reason to fear the Black Mage!");
}
} else if (status == 1) {
qm.sendOk("Oh, I've kept you too long. I'm sorry, I got a little carried away. I'm sure the other Penguins feel the same way. I know you're busy, but could you #bstop and talk to the other Penguins#k on your way to town? They would be so honored.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i2000022# 5 #t2000022#\r\n#i2000023# 5 #t2000023#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 16 exp");
} else if (status == 2) {
if (qm.isQuestStarted(21010) && !qm.isQuestCompleted(21010)) {
qm.gainExp(16);
qm.gainItem(2000022, 3);
qm.gainItem(2000023, 3);
qm.forceCompleteQuest();
}
qm.sendNext("Oh, you've leveled up! You may have even received some skill points. In Maple World, you can acquire 3 skill points every time you level up. Press the #bK key #kto view the Skill window.", 9);
} else if (status == 3) {
qm.sendNextPrev("#b(Everyone's been so nice to me, but I just can't remember anything. Am I really a hero? I should check my skills and see. But how do I check them?)", 3);
} else if (status == 4) {
qm.guideHint(15);
qm.dispose();
}
}

92
scripts/quest/21011.js Normal file
View File

@@ -0,0 +1,92 @@
/*
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 : kevintjuh93
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
qm.sendOk("Ah, okay. I understand. Heroes are very busy. *Sniff...* If you ever get any free time, though...");
qm.dispose();
return;
} else {
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendNext("Wait, are you... No way.... Are you the hero that #p1201000# has been talking about all this time?! #p1201000#! Don't just nod... Tell me! Is this the hero you've been waiting for?! ")
} else if (status == 1) {
qm.sendNextPrev(" #i4001171#");
} else if (status == 2) {
qm.sendNextPrev("I'm sorry. I'm just so overcome with emotions... *Sniff sniff* My goodness, I'm starting to tear up. You must be so happy, #p1201000#.");
} else if (status == 3) {
qm.sendAcceptDecline("Wait a minute... You're not carrying any weapons. From what I've heard, each of the heroes had a special weapon. Oh, you must have lost it during the battle against the Black Mage.");
} else if (status == 4) {
qm.forceStartQuest();
qm.sendOk("My brother #bPuir #kis just down the street, and he's been dying to meet you! I know you're busy, but could you please stop by and say hello to Puir? Please...");
} else if (status == 5) {
qm.dispose();
}
}
function end(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
qm.sendNext("*sniff sniff* Isn't this sword good enough for you, just for now? I'd be so honored...");
qm.dispose();
} else {
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendNext("Wait, are you... No way... Are you the hero that Lilin has been talking about all this time?! Lilin! Don't just nod... Tell me! Is this the hero you've been waiting for?!");
} else if (status == 1) {
qm.sendNextPrev("#i4001171#");
} else if (status == 2) {
qm.sendNextPrev("I'm sorry. I'm just so overcome with emotions... *Sniff sniff* My goodness, I'm starting to tear up. You must be so happy, Lilin.");
} else if (status == 3) {
qm.sendNextPrev("Wait a minute... You're not carrying any weapons. From what I've hear, each of the heroes had a special weapon. Oh, you must have lost it during the battle against the Black Mage.");
} else if (status == 4) {
qm.sendYesNo("This isn't good enough to replace your weapon, but #bcarry this sword with you for now#k. It's my gift to you. A hero can't be walking around empty-handed.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v1302000# 1 #t1302000#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 35 exp");
} else if (status == 5) {
if (qm.isQuestCompleted(21011)) {
qm.dropMessage(1, "Unknown Error");
} else if (qm.canHold(1302000)) {
qm.gainItem(1302000, 1);
qm.gainExp(35);
qm.forceCompleteQuest();
qm.sendNext("#b(Your skills are nowhere close to being hero-like... But a sword? Have you ever even held a sword in your lifetime? You can't remember... How do you even equip it?)", 3);
} else {
qm.dropMessage(1, "Your inventory is full");
}
} else if (status == 6) {
qm.guideHint(16);
qm.dispose();
}
}

86
scripts/quest/21012.js Normal file
View File

@@ -0,0 +1,86 @@
/*
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 : kevintjuh93
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 2 && mode == 0) {
qm.sendOk("Hm... You don't think that would help? Think about it. It could help, you know...");
qm.dispose();
return;
} else {
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendNext("Welcome, hero! What's that? You want to know how I knew who you were? That's easy. I eavesdropped on some people talking loudly next to me. I'm sure the rumor has spread through the entire island already. Everyone knows that you've returned!")
} else if (status == 1) {
qm.sendNextPrev("Hm, how about trying out that sword? Wouldn't that bring back some memories? How about #bfighthing some monsters#k?");
} else if (status == 2) {
qm.sendAcceptDecline("Ah, I'm so sorry. I was so happy to have finally met you that I guess I got a little carried away. Whew, deep breaths. Deep breaths. Okay, I feel better now. But um...can I ask you a favor? Please?");
} else if (status == 3) {
qm.forceStartQuest();
qm.sendNext("It just so happens that there are a lot of #rTutorial Murus #knear here. How about defeating just #r3 #kof them? It could help you remember a thing or two.");
} else if (status == 4) {
qm.sendNextPrev("Ah, you've also forgotten how to use your skills? #bPlace skills in the quick slots for easy access. #kYou can also place consumable items in the slots, so use the slots to your advantage.");
} else if (status == 5) {
qm.guideHint(17);
qm.dispose();
}
}
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.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) {
if (qm.isQuestCompleted(21012)) {
qm.dropMessage(1, "Unknown Error");
} else if (qm.canHold(2000022) && qm.canHold(2000023)) {
qm.forceCompleteQuest();
qm.gainExp(57);
qm.gainItem(2000022, 10);
qm.gainItem(2000023, 10);
qm.sendOk("#b(Even if you're really the hero everyone says you are... What good are you without any skills?)", 3);
} else {
qm.dropMessage(1, "Your inventory is full");
qm.dispose();
}
} else if (status == 2) {
qm.dispose();
}
}

83
scripts/quest/21013.js Normal file
View File

@@ -0,0 +1,83 @@
/*
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 : kevintjuh93
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (type == 1 && mode == 0) {
qm.sendNext("I'm sure it will come in handy during your journey. Please, don't decline my offer.");
qm.dispose();
return;
} else {
qm.dispose();
return;
}
}
if (status == 0) {
qm.sendSimple("Ah, you're the hero. I've been dying to meet you. \r\n#b#L0#(Seems a bit shy...)#l");
} else if (status == 1) {
qm.sendAcceptDecline("I have something I've been wanting to give you as a gift for a very long time... I know you're busy, especially since you're on your way to town, but will you accept my gift?");
} else if (status == 2) {
qm.forceStartQuest();
qm.sendNext("The parts of the gift have been packed inside a box nearby. Sorry to trouble you, but could you break the box and bring me a #b#t4032309##k and some #b#t4032310##k? I'll assemble them for you right away.", 9);
} else if (status == 3) {
qm.guideHint(18);
qm.dispose();
}
}
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.dispose();
return;
}
}
if (status == 0) {
qm.sendYesNo("Ah, you've brought all the components. Give me a few seconds to assemble them.. Like this.. And like that.. and...\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v3010062# 1 #t3010062#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 95 exp");
} else if (status == 1) {
if (qm.isQuestCompleted(21013)) {
qm.dropMessage(1, "Unknown Error");
}
qm.forceCompleteQuest();
qm.gainExp(95);
qm.gainItem(4032309, -1);
qm.gainItem(4032310, -1);
qm.gainItem(3010062, 1);
qm.sendNext("Here, a fully-assembled chair, just for you! I've always wanted to give you a chair as a gift, because I know a hero can occasionally use some good rest. Tee hee.", 9);
} else if (status == 2) {
qm.sendNext("A hero is not invincible. A hero is human. I'm sure you will face challenges and even falter at times. But you are a hero because you have what it takes to overcome any obstacles you may encounter.", 9);
} else if (status == 3) {
qm.guideHint(19);
qm.dispose();
}
}

30
scripts/quest/21015.js Normal file
View File

@@ -0,0 +1,30 @@
var status = -1;
function start(mode, type, selection) {
if (mode == 0 && type == 0) {
status--;
} else if (mode == -1) {
qm.dispose();
return;
} else {
status++;
}
if (status == 0) {
qm.sendNext("Alright, I've done enough explaining for now. Let's move on to the next stage. What's the next stage, you ask? I just told you. Train as hard as you can until you become strong enough to defeat the Black Mage with a single blow.");
} else if (status == 1) {
qm.sendNextPrev("You may have been a hero in the past, but that was hundreds of years ago. Even if it weren't for the curse of the Black Mage, all those years you spent frozen in time have stiffened your body. You must loosen up a bit and slowly regain your agility. How do you do that, you ask?");
} else if (status == 2) {
qm.sendAcceptDecline("Don't you know that you must first master the fundamentals? So the wise thing to do is to begin with #bBasic Training#k. Oh, of course, I forgot that you lost your memory. Well, that's why I'm here. You'll just have to experience it yourself. Shall we begin?");
} else if (status == 3) {
if (mode == 0) {
qm.sendNext("What are you so hesitant about? You're a hero! You gotta strike while the iron is hot! Come on, let's do this!");
qm.dispose();
} else {
qm.forceStartQuest();
qm.sendNext("The population of Rien may be mostly Penguins, but even this island has monsters. You'll find #o0100131#s if you go to #b#m140020000##k, located on the right side of the town. Please defeat #r10 of those #o0100131#s#k. I'm sure you'll have no trouble defeating the #o0100131#s that even the slowest penguins here can defeat.", 1);
}
} else if (status == 4) {
qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3");
qm.dispose();
}
}

26
scripts/quest/21016.js Normal file
View File

@@ -0,0 +1,26 @@
var status = -1;
function start(mode, type, selection) {
if (mode == 0 && type == 0) {
status--;
} else if (mode == -1) {
qm.dispose();
return;
} else {
status++;
}
if (status == 0) {
qm.sendAcceptDecline("Shall we continue with your Basic Training? Before accepting, please make sure you have properly equipped your sword and your skills and potions are readily accessible.");
} else if (status == 1) {
if (mode == 0) {
qm.sendNext("Are you not ready to hunt the #o0100132#s yet? Always proceed if and only if you are fully ready. There's nothing worse than engaging in battles without sufficient preparation.");
qm.dispose();
} else {
qm.forceStartQuest();
qm.sendNext("Alright. This time, let's have you defeat #r#o0100132#s#k, which are slightly more powerful than #o0100131#s. Head over to #b#m140020100##k and defeat #r15#k of them. That should help you build your strength. Alright! Let's do this!", 1);
}
} else if (status == 2) {
qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3");
qm.dispose();
}
}

40
scripts/quest/21017.js Normal file
View File

@@ -0,0 +1,40 @@
var status = -1;
function start(mode, type, selection) {
if (mode == 0 && type == 0) {
status--;
} else if (mode == -1) {
qm.dispose();
return;
} else {
status++;
}
if (status == 0) {
qm.sendNext("It seems like you're warmed up now. This is when rigorous training can really help you build a strong foundation. Let's proceed with the Basic Training, shall we?", 8);
} else if (status == 1) {
qm.sendNextPrev("Go defeat some #r#o0100133#s#k in #b#m140020200##k this time. I think about #r20#k should do it. Go on ahead and... Hm? Do you have something you'd like to say?", 8);
} else if (status == 2) {
qm.sendNextPrev("Isn't the number getting bigger and bigger?", 2);
} else if (status == 3) {
qm.sendNextPrev("Of course it is. What, are you not happy with 20? Would you like to defeat 100 of them instead? Oh, how about 999 of them? Someone in Sleepywood would be able to do it easily. After all, we are training...", 8);
} else if (status == 4) {
qm.sendNextPrev("Oh no, no, no. Twenty is plenty.", 2);
} else if (status == 5) {
qm.sendAcceptDecline("You don't have to be so modest. I understand your desire to quickly become the hero you once were. This sort of attitude is what makes you a hero.");
} else if (status == 6) {
if (mode == 0 && type == 15) {
qm.sendNext("#b(You declined out of fear, but it's not like you can run away like this. Take a big breath, calm down, and try again.)#k", 2);
qm.dispose();
} else {
if (!qm.isQuestStarted(21017)) {
qm.forceStartQuest();
}
qm.sendNext("#b(You accepted, thinking you might end up having to 999 of them if you let her keep talking.)#k", 2);
}
} else if (status == 7) {
qm.sendNextPrev("Please go ahead and slay 20 #o0100133#s.", 8);
} else if (status == 8) {
qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3");
qm.dispose();
}
}

28
scripts/quest/21018.js Normal file
View File

@@ -0,0 +1,28 @@
var status = -1;
function start(mode, type, selection) {
if (mode == 0 && type == 0) {
status--;
} else if (mode == -1) {
qm.dispose();
return;
} else {
status++;
}
if (status == 0) {
qm.sendNext("Now, you will undergo a test that will determine whether you're fit or not. All you have to do is take on the most powerful monster on this island, #o0100134#s. About #r50#k of them would suffice, but...");
} else if (status == 1) {
qm.sendAcceptDecline("We can't have you wipe out the entire population of #o0100134#s, since they aren't many of them out there. How about 5 of them? You're here to train, not to destroy the ecosystem.");
} else if (status == 2) {
if (mode == 0 && type == 15) {
qm.sendNext("Oh, is 5 not enough? If you feel the need to train further, please feel free to slay more than that. If you slay all of them, I'll just have to look the other way even if it breaks my heart, since they will have been sacrificed for a good cause...");
qm.dispose();
} else {
qm.forceStartQuest();
qm.sendNext("#o0100134#s can be found in deeper parts of the island. Continue going left until you reach #b#m140010200##k, and defeat #r5 #o0100134#s#k.");
}
} else if (status == 3) {
qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1");
qm.dispose();
}
}

37
scripts/quest/21100.js Normal file
View File

@@ -0,0 +1,37 @@
var status = -1;
function start(mode, type, selection) {
if (mode == 0 && type == 0) {
status--;
} else if (mode == -1) {
qm.dispose();
return;
} else {
status++;
}
if (status == 0) {
qm.sendNext("There isn't much record left of the heroes that fought against the Black Mage. Even in the Book of Prophecy, the only information available is that there were five of them. There is nothing about who they were or what they looked like. Is there anything you remember? Anything at all?", 8);
} else if (status == 1) {
qm.sendNextPrev("I don't remember a thing...", 2);
} else if (status == 2) {
qm.sendNextPrev("As I expected. Of course, the curse of the Black Mage was strong enough to wipe out all of your memory. But even if that's the case, there has got to be a point where the past will uncover, especially now that we are certain you are one of the heroes. I know you've lost your armor and weapon during the battle but... Oh, yes, yes. I almost forgot! Your #bweapon#k!", 8);
} else if (status == 3) {
qm.sendNextPrev("My weapon?", 2);
} else if (status == 4) {
qm.sendNextPrev("I found an incredible weapon while digging through blocks of ice a while back. I figured the weapon belonged to a hero, so I brought it to town and placed it somewhere in the center of the town. Haven't you seen it? #bThe #p1201001##k... \r\r#i4032372#\r\rIt looks like this...", 8);
} else if (status == 5) {
qm.sendNextPrev("Come to think of it, I did see a #p1201001# in town.", 2);
} else if (status == 6) {
qm.sendAcceptDecline("Yes, that's it. According to what's been recorded, the weapon of a hero will recognize its rightful owner, and if you're the hero that used the #p1201001#, the #p1201001# will react when you grab the #p1201001#. Please go find the #b#p1201001# and click on it.#k");
} else if (status == 7) {
if (mode == 0 && type == 15) {
qm.sendNext("What's stopping you? I promise, I won't be disappointed even if the #p1201001# shows no reaction to you. Please, rush over there and grab the #p1201001#. Just #bclick#k on it.", 8);
} else {
qm.forceCompleteQuest();
qm.sendOk("If the #p1201001# reacts to you, then we'll know that you're #bAran#k, the hero that wielded a #p1201001#.", 8);
qm.showIntro("Effect/Direction1.img/aranTutorial/ClickPoleArm");
}
} else if (status == 8) {
qm.dispose();
}
}

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

@@ -0,0 +1,70 @@
/*
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/>.
*/
status = -1;
function start(mode, type, selection) {
status++;
if (mode == 0 && type == 0) {
status -= 2;
} else if (mode != 1) {
if (mode == 0) {
qm.sendNext("#b(You need to think about this for a second...)#k");
}
qm.dispose();
return;
}
if (status == 0) {
qm.sendYesNo("#b(Are you certain that you were the hero that wielded the #p1201001#? Yes, you're sure. You better grab the #p1201001# really tightly. Surely it will react to you.)#k");
} else if (status == 1) {
if (qm.getPlayer().getJob().getId() == 2000) {
if (!qm.canHold(1142129)) {
qm.sendOk("Wow, your #bequip#k inventory is full. You need to make at least 1 empty slot to complete this quest.");
qm.dispose();
return;
}
qm.gainItem(1142129, true);
qm.changeJobById(2100);
qm.resetStats();
const YamlConfig = Java.type('config.YamlConfig');
if (YamlConfig.config.server.USE_FULL_ARAN_SKILLSET) {
qm.teachSkill(21000000, 0, 10, -1); //combo ability
qm.teachSkill(21001003, 0, 20, -1); //polearm booster
}
qm.completeQuest();
//qm.getPlayer().changeSkillLevel(SkillFactory.getSkill(20009000), 0, -1);
//qm.getPlayer().changeSkillLevel(SkillFactory.getSkill(20009000), 1, 0);
//qm.showInfo("You have acquired the Pig's Weakness skill.");
qm.sendNextPrev("#b(You might be starting to remember something...)#k", 3);
}
} else if (status == 2) {
//qm.warp(914090100, 0);
qm.dispose();
}
}
function end(mode, type, selection) {
}

86
scripts/quest/21200.js Normal file
View File

@@ -0,0 +1,86 @@
/*
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/>.
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (mode == 0 && type == 12) {
qm.sendNext("Come back again when you have took your desition wisely.");
}
qm.dispose();
return;
}
if (status == 0) {
qm.sendAcceptDecline("How is the training going? Wow, you've reached such a high level! That's amazing. I knew you would do just fine on Victoria Island... Oh, look at me. I'm wasting your time. I know you're busy, but you'll have to return to the island for a bit.");
} else if (status == 1) {
qm.sendOk("Your #b#p1201001##k in #b#m140000000##k is acting strange all of a sudden. According to the records, the Polearm acts this way when it is calling for its master. #bPerhaps it's calling for you#k. Please return to the island and check things out.");
} else if (status == 2) {
qm.startQuest();
qm.dispose();
}
}
function end(mode, type, selection) {
status++;
if (mode != 1) {
if (mode == 0 && type == 1) {
qm.sendNext("Hey! At least say you tried!");
}
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("Voom voom voom voom voom....");
}//Giant Polearm
else if (status == 1) {
qm.sendNextPrev("#b(The #p1201001# is producing an undulating echo. But who is that boy standing over there?)", 2);
} else if (status == 2) {
qm.sendNextPrev("#b(You've never seen him before. He doesn't look human.)", 2);
} else if (status == 3) {
qm.sendNextPrev("Yo, Aran! Do you not hear me? I said, do you not hear me! Ugh, how frustating!");
} else if (status == 4) {
qm.sendNextPrev("#b(Hm? Who's voice was that? It sounds like an angry boy...)", 2);
} else if (status == 5) {
qm.sendNextPrev("Ugh, my only master had to end up trapped in ice for hundreds of years, abandoning me completely, and is now completely ignoring me.");
} else if (status == 6) {
qm.sendNextPrev("Who...are you?", 2);
} else if (status == 7) {
qm.sendNextPrev("Aran? Do you hear me now? It's me! Don't you recognize me? I'm your weapon, #b#p1201002# the Polearm#k!");
} else if (status == 8) {
qm.sendNextPrev("#b(...#p1201002#? A #p1201001# can talk?)", 2);
} else if (status == 9) {
qm.sendNextPrev("What's with that suspicious look on your face? I know you've lost your memory, but did you forgot about me, too? How could you?!");
} else if (status == 10) {
qm.sendNextPrev("I'm so sorry, but I can't remember a thing.", 2);
} else if (status == 11) {
qm.sendYesNo("Sorry doesn't cut it! Do you know how lonely and bored I was for hundreds of years? I don't care what it takes! Remember me! Remember me now!");
} else if (status == 12) {
qm.completeQuest();
qm.sendNext("#b(The voice that claims to be #p1201002# the #p1201001# is yelling in frustration. You don't think this conversation is going anywhere. You better go talk to #p1201000# first.)", 2);
//qm.sendNoExit("#b(The voice that claims to be #p1201002# the #p1201001# is yelling in frustration. You don't think this conversation is going anywhere. You better go talk to #p1201000# first.)", true);
} else if (status == 13) {
//qm.showVideo("Maha");
qm.dispose();
}
}

85
scripts/quest/21201.js Normal file
View File

@@ -0,0 +1,85 @@
/*
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/>.
*/
var status = -1;
function end(mode, type, selection) {
if (mode == -1) {
qm.sendNext("Hey! At least say you tried!");
qm.dispose();
} else {
if (mode == 0 && type > 0) {
qm.sendNext("Hey! At least say you tried!");
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
status--;
}
if (status == 0) {
qm.sendNext("First you promise to defeat the Black Mage and make me a famous weapon, then you abandon me for hundreds of years, and now you're telling me you don't remember who I am? What the...?! Do you think I will let you get away with that? You're the one who begged and pined for me!");
}//Giant Polearm
else if (status == 1) {
qm.sendNextPrev("I did tell #p1203000# to make a pole arm for me if I could prove my worth.", 2);
} else if (status == 2) {
qm.sendNextPrev("After all that begging, shouldn't you treat me with a little more love and respect? Ya know, a weapon like me's a rare and wonderful thing. I am the ultimate #p1201001# that can help you defeat the Black Mage. How could you ditch me for hundreds of years?");
} else if (status == 3) {
qm.sendNextPrev("Hey, I never begged for you.", 2);
} else if (status == 4) {
qm.sendNextPrev("What? You never begged for me? Ha! #p1203000# told me you got on your knees, begged for me in tears, and... Wait a sec. Aran! Did you just remember who I am?");
} else if (status == 5) {
qm.sendNextPrev("Maybe a little bit...", 2);
} else if (status == 6) {
qm.sendNextPrev("Aran, it is you! *Sniff sniff* Wait, *ahem* I didn't get emotional, it's just allergies. I know the Black Mage has stripped you of your abilities so you probably don't even have the strength to lift me... but at least you remember me! I'm glad that your memory's starting to return.");
} else if (status == 7) {
qm.sendAcceptDecline("Even though you've lost your memory, you're still my master. You endured some very tough training in the past, and I'm sure your body still remembers the skills you got through those hard times. Alright, I'll restore your abilities!");
} else if (status == 8) {
if (!qm.isQuestCompleted(21201)) {
if (!qm.canHold(1142130)) {
qm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest."); // thanks MedicOP for finding an issue here
return;
}
qm.gainItem(1142130, true);
qm.changeJobById(2110);
const YamlConfig = Java.type('config.YamlConfig');
if (YamlConfig.config.server.USE_FULL_ARAN_SKILLSET) {
qm.teachSkill(21100000, 0, 20, -1); //polearm mastery
qm.teachSkill(21100002, 0, 30, -1); //final charge
qm.teachSkill(21100004, 0, 20, -1); //combo smash
qm.teachSkill(21100005, 0, 20, -1); //combo drain
}
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.");
} else if (status == 9) {
qm.dispose();
}
}
}

78
scripts/quest/21202.js Normal file
View File

@@ -0,0 +1,78 @@
/*
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/>.
*/
var status = -1;
function start(mode, type, selection) {
status++;
if (mode != 1) {
if (mode == 0 && type == 1) {
qm.sendNext("Do you not want to put in the work to get the ultimate weapon?");
}
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("Hmm.. What's a young person like you doing in this secluded place?");
} else if (status == 1) {
qm.sendNextPrev("I've come to get the best Polearm there is!", 2);
} else if (status == 2) {
qm.sendNextPrev("The best Polearm? You should be able to purchase it in some town or other place..");
} else if (status == 3) {
qm.sendNextPrev("I hear you are the best blacksmith in all of Maple World! I want nothing less than a weapon made by you!", 2);
} else if (status == 4) {
qm.sendAcceptDecline("I'm too old to make weapons now, but.. I do have a Polearm that I made way back when. It's still in excellent shape. But I can't give it to you because that Polearm is extremely sharp, so sharp it could hurt its master. Do you still want it?");
} else if (status == 5) {
qm.sendOk("Well, if you say so.. I can't object to that. I'll tell you what. I'll give you a quick test, and if you pass it, the Giant Polearm is yours. Head over to the #bTraining Center#k and take on the #rScarred Bears#k that are there. Your job is to bring back #b30 Sign of Acceptances#k.");
} else if (status == 6) {
qm.startQuest();
qm.dispose();
}
}
function end(mode, type, selection) {
status++;
if (mode != 1) {
if (mode == 0 && type == 1) {
qm.sendNext("Hm? Are you hesitant to take it now after all that? Well, give it more thought if you'd like. It'll be yours in the end anyways.");
}
qm.dispose();
return;
}
if (status == 0) {
if (qm.haveItem(4032311, 30)) {
qm.sendNext("Oh, have you brought me the #t4032311#? You're stronger than I thought! But more importantly, I am impressed with the amount of courage you displayed when you agreed to take this dangerous weapon without any hesitation. You deserve it. The #p1201001# is yours.");
} else {
qm.sendNext("Go for the 30 #t4032311#.");
qm.dispose();
}
} else if (status == 1) {
qm.sendNextPrev("#b(After a long time passed, #p1203000# handed you the #p1201001#, which was carefully wrapped in cloth.)");
} else if (status == 2) {
qm.sendYesNo("Here, this is #p1201002#, the Polearm you've asked for. Please take good care of it.");
} else if (status == 3) {
//qm.showVideo("Polearm");
qm.completeQuest();
qm.removeAll(4032311);
qm.dispose();
}
}

55
scripts/quest/2124.js Normal file
View File

@@ -0,0 +1,55 @@
/*
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 Lana
*/
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) {
if (!qm.haveItem(4031619, 1)) {
qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k...");
} else {
qm.gainItem(4031619, -1);
qm.sendOk("Oh, you brought #p2012019#'s box! Thank you.");
qm.forceCompleteQuest();
}
} else if (status == 1) {
qm.dispose();
}
}
}

55
scripts/quest/2126.js Normal file
View File

@@ -0,0 +1,55 @@
/*
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 Lana
*/
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) {
if (!qm.haveItem(4031619, 1)) {
qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k...");
} else {
qm.gainItem(4031619, -1);
qm.sendOk("Oh, you brought #p2012019#'s box! Thank you.");
qm.forceCompleteQuest();
}
} else if (status == 1) {
qm.dispose();
}
}
}

50
scripts/quest/2127.js Normal file
View File

@@ -0,0 +1,50 @@
/*
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 Lana
*/
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.sendOk("I see you're ready for the task. Now, pay heed to the details of your mission...");
qm.forceCompleteQuest();
} else if (status == 1) {
qm.dispose();
}
}
}

24
scripts/quest/21300.js Normal file
View File

@@ -0,0 +1,24 @@
var status = -1;
function start(mode, type, selection) {
status++;
if (mode == 0 && type == 0) {
status -= 2;
} else if (mode != 1) {
//if (mode == 0)
qm.sendNext("#b(You need to think about this for a second...)#k");
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("How's the training going? Hmmm... Level 70... That's still not much, but you have really made some strides since the first time I met you fresh out of ice. Keep training, and I am sure one day you'll be able to regain your pre-battle form.");
} else if (status == 1) {
qm.sendAcceptDecline("But before doing that, I'll need you back in Rein for a bit. #bYour pole arm is reacting strange once again. It looks like it has something it wants to tell you. #kIt might be able to awaken your hidden powers, so please come immediately.");
} else if (status == 2) {
qm.forceStartQuest();
qm.sendOk("Anyway, I thought it was really something that a weapon has its own identity, but seriously... this weapon does not stop talking. It first kept on crying because I wasn't really paying attention to its needs, and... ahh, please keep this a secret from the pole arm. I don't think it's a good idea to upset the weapon any further.");
} else if (status == 3) {
qm.dispose();
}
}

32
scripts/quest/21301.js Normal file
View File

@@ -0,0 +1,32 @@
var status = -1;
function end(mode, type, selection) {
status++;
if (mode == 0 && type == 0) {
status -= 2;
} else if (mode != 1) {
//if (mode == 0)
qm.sendNext("#b(You need to think about this for a second...)#k");
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("Did you manage to slay #o9001013#? Hahaha... you're my master, indeed. Okay, now give me the Red Jade that you found there. I'll have to put it back on the body, and... wait, why aren't you saying a word? Don't tell me... that you didn't bring that back!");
} else if (status == 1) {
qm.sendNextPrev("What?! You really didn't bring back the Red Jade? Why? Did you just completely forget it? Ahh... even with the curse of the Black Mage, and the amount of time that has passed and all, never did I think my master would turn out to be stupid...");
} else if (status == 2) {
qm.sendNextPrev("No, no, I can't let this put me in despair. This is when I should remain calm and in control, unlike my master...\r\noosah...");
} else if (status == 3) {
qm.sendNextPrev("Even if you go back there now, the thief probably made its way out of there. This means you'll have to make the Red Jade anew. You've made one before, so you do remember the materials required to make one, right? Now go...");
} else if (status == 4) {
qm.sendNextPrev("\r\n\r\n\r\nTHIS GUY HAS DEFINITELY LOST ALL MEMORIES!");
} else if (status == 5) {
qm.sendNextPrev("...No hope, no dreams... Nooooo!!");
} else if (status == 6) {
qm.completeQuest();
qm.sendNextPrev("#b(Maha is beginning to really get hysterical. I better leave right this minute. Maybe Lilin can do something about it.)", 2);
} else if (status == 7) {
qm.dispose();
}
}

65
scripts/quest/21302.js Normal file
View File

@@ -0,0 +1,65 @@
/*
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/>.
*/
var status = -1;
function end(mode, type, selection) {
status++;
if (mode != 1) {
if (mode == 0 && type == 1) {
qm.sendNext("Hey! At least say you tried!");
}
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("Wait.. Isn't that.. Did you remember how to make Red Jade?\r\nWow... you may be stupid and prone to amnesia, but this is why I can't abandon you. Now give me the jade!"); //Giant Polearm
} else if (status == 1) {
qm.sendNextPrev("Okay, now that I have the Red Jade back on, let me work on reawakening more of your abilities. I mean, your level's gone much higher since the last time we met, so I am sure I can work my magic a bit more this time!");
} else if (status == 2) {
if (!qm.isQuestCompleted(21302)) {
if (!qm.canHold(1142131)) {
qm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest.");
qm.dispose();
return;
}
if (qm.haveItem(4032312, 1)) {
qm.gainItem(4032312, -1);
}
qm.gainItem(1142131, true);
qm.changeJobById(2111);
const YamlConfig = Java.type('config.YamlConfig');
if (YamlConfig.config.server.USE_FULL_ARAN_SKILLSET) {
qm.teachSkill(21110002, 0, 20, -1); //full swing
}
qm.completeQuest();
}
qm.sendNext("Come on, keep training so you can get all your abilities back, and that way we can explore together once more!");
} else if (status == 3) {
qm.dispose();
}
}

51
scripts/quest/21303.js Normal file
View File

@@ -0,0 +1,51 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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("Aaaargh... Yeti's #b#t4032339##k has just been stolen! How frustrating, Yeti worked hard to get it, just to have it stolen by that #rThief Crow#k...", 9);
} else if (status == 1) {
qm.sendNextPrev("Hey, I was just passing by and could not refrain from hearing you just now. I can lend you my strength, where did the thief go?", 3);
} else if (status == 2) {
qm.sendNextPrev("Oh, how nice of you... Thief has passed #rthrough the gate at west#k. Bring back the #b#t4032339##k, Yeti needs it to give to beloved one.", 9);
} else if (status == 3) {
qm.sendNextPrev("Ok, wait there. I will return it back to you in no time!", 3);
} else if (status == 4) {
qm.forceStartQuest();
qm.dispose();
}
}
}

22
scripts/quest/21400.js Normal file
View File

@@ -0,0 +1,22 @@
var status = -1;
function start(mode, type, selection) {
status++;
if (mode == 0 && type == 0) {
status -= 2;
} else if (mode != 1) {
//if (mode == 0)
qm.sendNext("#b(You need to think about this for a second...)#k");
qm.dispose();
return;
}
if (status == 0) {
qm.sendAcceptDecline("How is the training going? I know you're busy, but please come to #bRien#k immediately. The #bMaha#k has started to act weird again... But its even weirder now. It's different from before. It's... darker than usual.");
} else if (status == 1) {
qm.startQuest();
qm.sendOk("I have a bad feeling about this. Please come back here. I've never seen or herd Maha like this, but I can sense the suffering its going through. #bOnly you, the master of Maha, can do something about it!");
} else if (status == 2) {
qm.dispose();
}
}

83
scripts/quest/21401.js Normal file
View File

@@ -0,0 +1,83 @@
var status = -1;
function start(mode, type, selection) {
status++;
if (mode == 0 && type == 0) {
status -= 2;
} else if (mode != 1) {
//if (mode == 0)
qm.sendNext("#b(You need to think about this for a second...)#k");
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("Why do I look like this, you ask? I don't want to talk about it, but I suppose I can't hide from you since you're my master.");
} else if (status == 1) {
qm.sendNextPrev("While you were trapped inside ice for hundreds of years, I, too, was frozen. It was a long time to be away from you. That's when the seed of darkness was planted in my heart.");
} else if (status == 2) {
qm.sendNextPrev("But since you awoke, I thought the darkness had gone away. I thought things would return to the way they were. But I was mistaken...");
} else if (status == 3) {
qm.sendAcceptDecline("Please, Aran. Please stop me from becoming enraged. Only you can control me. It's getting out of my hands now. Please do whatever it takes to #rstop me from going berserk#k!");
} else if (status == 4) {
var em = qm.getEventManager("MahaBattle");
if (!em.startInstance(qm.getPlayer())) {
qm.sendOk("There is currently someone in this map, come back later.");
} else {
qm.startQuest();
}
qm.dispose();
}
}
function end(mode, type, selection) {
status++;
if (mode == 0 && type == 0) {
status -= 2;
} else if (mode != 1) {
//if (mode == 0)
qm.sendNext("#b(You need to think about this for a second...)#k");
qm.dispose();
return;
}
if (status == 0) {
qm.sendNext("Thank you, Aran. If it weren't for you, I would have become enraged and who knows what could have happened. Thank you, NOT! It's only your duty as my master...");
} else if (status == 1) {
qm.sendYesNo("Anyway, I just noticed how high of a level you've reached. If you were able to control me in my state of rage, I think you're ready to handle more abilities.");
} else if (status == 2) {
if (!qm.isQuestCompleted(21401)) {
if (!qm.canHold(1142132)) {
qm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest.");
qm.dispose();
return;
}
if (!qm.canHold(2280003, 1)) {
qm.sendOk("Hey, your #buse#k inventory is full. I need you to make at least 1 empty slot to complete this quest.");
qm.dispose();
return;
}
qm.gainItem(1142132, true);
qm.gainItem(2280003, 1);
qm.changeJobById(2112);
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.");
} else if (status == 3) {
qm.dispose();
}
}
function spawnMob(x, y, id, map) {
if (map.getMonsterById(id) != null) {
return;
}
const LifeFactory = Java.type('server.life.LifeFactory');
const Point = Java.type('java.awt.Point');
var mob = LifeFactory.getMonster(id);
map.spawnMonsterOnGroundBelow(mob, new Point(x, y));
}

29
scripts/quest/2148.js Normal file
View File

@@ -0,0 +1,29 @@
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("Some bats seems to accompany this tree wherever it goes. Creepy...");
qm.forceCompleteQuest();
} else if (status == 1) {
qm.dispose();
}
}
}
function end(mode, type, selection) {
qm.dispose();
}

29
scripts/quest/2149.js Normal file
View File

@@ -0,0 +1,29 @@
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("It is said that a old tree gets alive whenever something sinister disturbs this land... We need a hero that fends our village of that creature!");
qm.forceCompleteQuest();
} else if (status == 1) {
qm.dispose();
}
}
}
function end(mode, type, selection) {
qm.dispose();
}

29
scripts/quest/2150.js Normal file
View File

@@ -0,0 +1,29 @@
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 tree has a scarf upon its branches, I tell you.");
qm.forceCompleteQuest();
} else if (status == 1) {
qm.dispose();
}
}
}
function end(mode, type, selection) {
qm.dispose();
}

29
scripts/quest/2151.js Normal file
View File

@@ -0,0 +1,29 @@
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 tree has a strange carving that resembles a scary face.");
qm.forceCompleteQuest();
} else if (status == 1) {
qm.dispose();
}
}
}
function end(mode, type, selection) {
qm.dispose();
}

29
scripts/quest/2152.js Normal file
View File

@@ -0,0 +1,29 @@
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("That tree... I've heard of it before, I even studied its behavior! If I recall correctly, the #bStumpy#k comes alive when the soil deems infertile by some sort of magic, and those stumps who evolves under these conditions starts to drain these suspicious magical sources instead of water and minerals for living, which makes them very threathening to people and villages nearby.");
qm.forceCompleteQuest();
} else if (status == 1) {
qm.dispose();
}
}
}
function end(mode, type, selection) {
qm.dispose();
}

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

@@ -0,0 +1,49 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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("Hey, Aran. You seem pretty strong, since that time from when you got freed from the glacier. Suitable enough to #bride a wolf#k, if you ask me.");
} else if (status == 1) {
qm.sendAcceptDecline("Picked your interest, huh? Very well, first you must make your way to #bAqua#k, there is a person there who makes #rfood for wolf cubs#k. Bring one portion to me, and I shall deem you able to tame and take care of one. What do you say, will you try for it?");
} else if (status == 2) {
qm.forceStartQuest();
qm.sendNext("Alright. The one you must meet is #bNanuke#k, she is on top of a #rsnowy whale#k, somewhere in the ocean. Good luck!");
} else if (status == 3) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,47 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.");
} else if (status == 2) {
qm.forceStartQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,61 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.");
} else {
var em = qm.getEventManager("Aran_3rdmount");
if (!em.startInstance(qm.getPlayer())) {
qm.sendOk("There is currently someone in this map, come back later.");
} else {
qm.forceStartQuest();
}
}
} else if (status == 4) {
qm.dispose();
}
}
}

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

@@ -0,0 +1,85 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.haveItemWithId(1902017, false)) {
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 if (status == 1) {
qm.forceCompleteQuest();
qm.gainItem(1902017, -1);
qm.gainItem(1902018, 1);
qm.dispose();
}
}
}

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

@@ -0,0 +1,44 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 4) {
qm.sendNext("No? Are you saying you can train on your own? I'm just letting you know that you'll get better results if you train with an instructor. You can't live in this world alone. You must learn to get along with other people.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("It seems like you've started to remember things. Your Polearm must have recognized you. This means you are surely #bAran, the wielder of Polearms#k. Is there anything else you remember? Skills you used with the Polearm perhaps? Anything?");
} else if (status == 1) {
qm.sendNextPrev("#b(You tell her that you remember a few skills.)#k", 2);
} else if (status == 2) {
qm.sendNextPrev("That's not a lot, but it's progress. Our focus, then, should be to get you back to the state before you were frozen. You may have lost your memory, but I'm sure it won't take long for you to recover the abilities that your body remembers.");
} else if (status == 3) {
qm.sendNextPrev('How do I recover my abilities?', 2);
} else if (status == 4) {
qm.sendAcceptDecline("There is only one way to do that. Train! Train! Train! Train! If you continue to train, your body will instinctively remember its abilities. To help you through the process, I'll introduce you to an instructor.");
} else if (status == 5) {
qm.sendNext("I gave you a #bPolearm#k because I figured it would be best for you to use a weapon you're familiar with. It will be useful in your training.");
if (!qm.isQuestStarted(21700) && !qm.isQuestCompleted(21700)) {
qm.gainItem(1442000, 1);
qm.forceStartQuest();
}
} else if (status == 6) {
qm.sendPrev("You'll find a Training Center if you exit to the #bleft#k. There, you'll meet #b#p1202006##k. I'm a bit worried because I think he may be struggling with bouts of Alzheimer's, but he spent a long time researching skills to help you. I'm sure you'll learn a thing or two from him.");
} else if (status == 7) {
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

75
scripts/quest/21703.js Normal file
View File

@@ -0,0 +1,75 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 6) {
qm.sendNext("I know it takes an incredible amount of strength and will to outdo your instructor, but you weren't meant to let yourself wither away. You must move on to bigger and better things! You must do everything you can to embrace your heroic nature!");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("Your abilities are really beginning to take shape. I am surprised that an old man like me was able to help you. I'm tearing up just thinking about how happy it makes me to have been of assistance to you. *Sniff sniff*");
} else if (status == 1) {
qm.sendNextPrev("#b(You didn't even train that long with him... Why is he crying?)#k", 2);
} else if (status == 2) {
qm.sendNextPrev("Alright, here's the third and the final stage of training. Your last opponent is... #r#o9300343#s#k! Do you know anything about #o1210100#s?");
} else if (status == 3) {
qm.sendNextPrev('Well, a little bit...', 2);
} else if (status == 4) {
qm.sendNextPrev("They are natural warriors! They're born with a voracious appetite for food. They devour any food that's visible the moment they sweep by. Terrifying, isn't it?");
} else if (status == 5) {
qm.sendNextPrev("#b(Is that really true?)#k", 2);
} else if (status == 6) {
qm.sendAcceptDecline("Okay, now... #bEnter the Training Center again#k, defeat #r30#k #o9300343#s, and show me what you're made of! You'll have to exert all your energy to defeat them! Go, go, go! Rise above me!");
} else if (status == 7) {
qm.forceStartQuest();
qm.sendOk("Now go and take on those monstrous #o9300343#s!");
} else if (status == 8) {
qm.dispose();
}
}
function end(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("Are you reluctant to leave your instructor? *Sniff sniff* I'm so moved, but you can't stop here. You are destined for bigger and better things!");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("Ah, you've come back after defeating all 30 #o9300343#s. I knew you had it in you... Even though you have no memories and few abilities, I could see that you were different! How? Because you're carrying around a Polearm, obviously!");
} else if (status == 1) {
qm.sendNextPrev("#b(Is he pulling your leg?)#k'", 2);
} else if (status == 2) {
qm.sendYesNo("I have nothing more to teach you, as you've surpassed my level of skill. Go now! Don't look back! This old man is happy to have served as your instructor.");
} else if (status == 3) {
if (qm.isQuestStarted(21703)) {
qm.forceCompleteQuest();
qm.teachSkill(21000000, qm.getPlayer().getSkillLevel(21000000), 10, -1); // Combo Ability Skill
qm.gainExp(2800);
}
qm.sendNext("(You remembered the #bCombo Ability#k skill! You were skeptical of the training at first, since the old man suffers from Alzheimer's and all, but boy, was it effective!)", 2);
} else if (status == 4) {
qm.sendPrev("Now report back to #p1201000#. I know she'll be ecstatic when she sees the progress you've made!");
} else if (status == 5) {
qm.dispose();
}
}

33
scripts/quest/21704.js Normal file
View File

@@ -0,0 +1,33 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("How did the training go? The Penguin Teacher #p1202006# likes to exaggerate and it worried me knowing that he has bouts of Alzheimer's, but I'm sure he helped you. He's been studying the skills of heroes for a very long time.");
} else if (status == 1) {
qm.sendNextPrev("#b(You tell her that you were able to remember the Combo Ability skill.)#k", 2);
} else if (status == 2) {
qm.sendNextPrev("That's great! Honestly, though, I think it has less to do with the method of #p1202006#'s training and more to do with your body remembering its old abilities. #bI'm sure your body will remember more skills as you continue to train#k! \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 500 exp");
} else if (status == 3) {
qm.forceCompleteQuest();
qm.gainExp(500);
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

35
scripts/quest/21712.js Normal file
View File

@@ -0,0 +1,35 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("You still don't understand what's going on? I'll explain it to you again if you talk to me one more time.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("#t4032315#... #rThis puppet is making a strange noise#k. You can't hear it with your ears, of course, since it can only be heard by the #o1210102#s. I believe it's this noise that changed the personality of the #o1210102#s.");
} else if (status == 1) {
qm.sendAcceptDecline("The #o1210102#s that have been affected by the noise have turned cynical. They've started fighting the non-affected #o1210102#s, which has made all #o1210102#s prepare for combat. #bThe reason for all these changes in the #o1210102#s is this puppet#k! Do you understand?");
} else if (status == 2) {
qm.forceStartQuest();
qm.sendNext("I wonder what triggered this in the first place. There is no way this puppet was naturally created, which means someone planned this. I should keep an eye on the #o1210102#s.", 9);
} else if (status == 3) {
qm.sendPrev("#b(You were able to find out what caused the changes in the #o1210102#s. You should report to #p1002104# and deliver the information you've gathered.)#k", 2);
} else if (status == 4) {
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

37
scripts/quest/21716.js Normal file
View File

@@ -0,0 +1,37 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.sendNext("What? I don't think there are any suspects besides that kid. Please think again.");
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("What did #p1032112# say?", 8);
} else if (status == 1) {
qm.sendNextPrev("#b(You tell her what #p1032112# observed.)#k", 2);
} else if (status == 2) {
qm.sendAcceptDecline("A kid with a puppet? That seems very suspicious. I am sure that kid is the reason the Green Mushrooms have suddenly turned violent.");
} else if (status == 3) {
qm.forceStartQuest();
qm.sendNext("How dare this kid wreak havoc in the South Forest. Who knows how long it will take to restore the forest... I'll have to devote most of my time cleaning up the mess.", 2);
} else if (status == 4) {
qm.sendPrev("#b(You were able to find out what caused the changes in the Green Mushrooms. You should report #p1002104# and deliver the information you've collected.)#k", 2);
} else if (status == 5) {
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

33
scripts/quest/21719.js Normal file
View File

@@ -0,0 +1,33 @@
var status = -1;
function start(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 2) {
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("Aren't you the one that used to be in #m101000000# until not too long ago? I finally found you! Do you know how long it took for me to finally find you?", 8);
} else if (status == 1) {
qm.sendNextPrev("Who are you?", 2);
} else if (status == 2) {
qm.sendAcceptDecline("Me? If you want to know, stop by my cave. I'll even send you an invitation. You'll be directly sent to my cave as soon as you accept. Look forward to seeing you there.");
} else if (status == 3) {
qm.forceCompleteQuest();
qm.warp(910510200, 0);
qm.dispose();
}
}
function end(mode, type, selection) {
qm.dispose();
}

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

@@ -0,0 +1,52 @@
var status = -1;
function start(mode, type, selection) {
qm.dispose();
}
function end(mode, type, selection) {
if (mode == -1 || mode == 0 && type > 0) {
qm.dispose();
return;
}
if (mode == 1) {
status++;
} else {
if (status == 6) {
qm.dispose();
return;
}
status--;
}
if (status == 0) {
qm.sendNext("What can I do for you? Tru sent me a message saying that you've been training diligently in Victoria Island while helping him with his work. What is it? What? The Black Wings?", 8);
} else if (status == 1) {
qm.sendNextPrev("#b(You tell her about the Puppeteer and the Black Wings, and about their mission.)#k", 2);
} else if (status == 2) {
qm.sendNextPrev("I see... I didn't know there was a group called the Black Wings... They must be fools if they're trying to revive the Black Mage, knowing how dangerous he is.", 8);
} else if (status == 3) {
qm.sendNextPrev("That...that's true...\r\r#b(She's definitely not afraid to speak her mind.)#k", 2);
} else if (status == 4) {
qm.sendNextPrev("The Book of Prophecy states that the hero will revive and fight against the Black Mage. I wasn't sure if that was true, but this confirms that the Black Mage is still around.", 8);
} else if (status == 5) {
qm.sendNextPrev("Aren't you scared?", 2);
} else if (status == 6) {
qm.sendYesNo("Scared? Pfft. Who cares if the Black Mage appears. You'll be here to protect us. If anything, this makes me want to prepare you for the big battle. Ah, that reminds me, I found a #bskill#k. Would you like to see it?");
} else if (status == 7) {
if (qm.getQuestStatus(21720) == 1) {
qm.forceCompleteQuest();
qm.teachSkill(21001003, qm.getPlayer().getSkillLevel(21001003), 20, -1);
qm.gainExp(3900);
}
qm.sendNext('#b(You remembered the Polearm Booster skill!)#k', 2);
} else if (status == 8) {
qm.sendNextPrev("This skill was found in an ancient incomprehensible script. I had a hunch it might be a skill you used in the past, and I think I was right. You're not as strong as you used to be, but you'll get there, in time.", 8);
} else if (status == 9) {
qm.sendNextPrev("You are steadily becoming more powerful, and I'll be here to keep motivating you. You have nothing to be afraid of. You will not lose the battle. You didn't emerge from ice only to lose to the Black Mage, did you? This time, you'll finish him, once and for all!", 8);
} else if (status == 10) {
qm.sendPrev("To do so, there's only one thing you can do. Train, train, train. Head to Victoria Island and continue training. Let's make sure you become so powerful that the Black Mage doesn't stand a chance!", 8);
} else if (status == 11) {
qm.dispose();
}
}

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

@@ -0,0 +1,45 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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("Okay, you should not return to #bTru#k for further details on your next steps. ... Oh wait!! I remembered something. See the #rMysterious Statue#k over there? That statue has it's origins unknwown, and there's something scribbled onto it that resembles something big, it probably is the password for the cave? #rGet the password there#k, it may help you on your journey.");
} else if (status == 1) {
qm.forceStartQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,74 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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 if (status == 2) {
qm.gainExp(8000);
qm.teachSkill(21100000, 0, 20, -1); // polearm mastery
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,77 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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 if (status == 3) {
qm.forceCompleteQuest();
qm.gainExp(12500);
qm.teachSkill(21100005, 0, 20, -1); // combo drain
qm.dispose();
}
}
}

85
scripts/quest/21735.js Normal file
View File

@@ -0,0 +1,85 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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, ever since the Puppeteer's ambush on me, I've been thinking it is dangerous to have the #b#t4032323##k around here by myself. So, I need you to deliver the gem to #r#p1201000##k, in Rien, she will know what to do with it.");
} else if (status == 1) {
if (!qm.canHold(4032323, 1)) {
qm.sendNext("Please free a slot on your ETC inventory before receiving the item.");
qm.dispose();
return;
}
if (!qm.haveItem(4032323, 1)) {
qm.gainItem(4032323, 1);
}
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.haveItem(4032323, 1)) {
qm.sendNext("#r#p1002104##k sent the #b#t4032323##k here for safety? Thank goodness, indeed here the gem will be safer than anywhere on Victoria Island. Thank you, #b#h0##k.");
} else {
qm.dispose();
}
} else if (status == 1) {
qm.gainItem(4032323, -1);
qm.gainExp(6037);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,51 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.sendNextPrev("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 if (status == 3) {
qm.sendAcceptDecline("#bLisa the Fairy#k in Orbis should know a thing or two. Go see Lisa first, she knows someone that knows the whereabouts of the sealing stone. That person #rwill require a password from you#k, when requested use the #bThere's something strange going on in Orbis....#k keyword to talk to her. Understood?");
} else if (status == 4) {
qm.forceStartQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,59 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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) { // thanks ZERO傑洛 for noticing this quest shouldn't need a pw -- GMS-like string data thanks to skycombat
qm.sendNext("What is it? I usually don't welcome uninvited guests, but you have a mysterious aura that makes me curious about what you have to say.", 9);
} else if (status == 1) {
qm.sendNext("(You tell her about Giant Nependeath.)", 3);
} else if (status == 2) {
qm.sendNext("Giant Nependeath? It's definitely a big problem, but I don't think it's enough to really affect Orbis. Wait, where did you say the Giant Nependeath was, again?", 9);
} else if (status == 3) {
qm.sendNext("Neglected Strolling Path.", 3);
} else if (status == 4) {
qm.sendNext("...Neglected Strolling Path? If Giant Nependeath is there, someone is trying to enter Sealed Garden! But why? And more importantly, who?", 9);
} else if (status == 5) {
qm.sendNext("Sealed Garden?", 3);
} else if (status == 6) {
qm.sendAcceptDecline("I can't tell you about Sealed Garden. If you want to find out, I must first see whether you are worthy of the information. Do you mind if I look into your fate?", 9);
} else if (status == 7) {
qm.sendOk("Well, now let's look into your fate. Give me a second.");
} else if (status == 8) {
qm.forceStartQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,46 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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 if (status == 1) {
qm.forceCompleteQuest();
qm.gainExp(29500);
qm.dispose();
}
}
}

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

@@ -0,0 +1,72 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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 if (status == 2) {
qm.forceCompleteQuest();
qm.teachSkill(21100004, 0, 20, -1); // combo smash
qm.dispose();
}
}
}

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

@@ -0,0 +1,49 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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 if (status == 2) {
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.");
} else if (status == 3) {
qm.forceStartQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,99 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.haveItem(4220151, 1)) {
if (!qm.canHold(4220151, 1)) {
qm.sendOk("Please free a room on your ETC inventory.", 9);
qm.dispose();
return;
}
qm.gainItem(4220151, 1);
}
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, 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.'");
} else if (status == 1) {
qm.gainItem(4032342, -8);
qm.gainItem(4220151, -1);
qm.gainExp(10000);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,83 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.'");
} else if (status == 1) {
qm.gainItem(4032342, -8);
qm.gainItem(4220151, -1);
qm.gainExp(10000);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,75 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,51 @@
/*
This file is part of the HeavenMS MapleStory Server
Copyleft (L) 2016 - 2019 RonanLana
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.teachSkill(21100002, 0, 30, -1); // final charge
qm.forceCompleteQuest();
qm.dispose();
}
}
}

Some files were not shown because too many files have changed in this diff Show More