Quest progress overview + Raise UI scripting + Shelved events loadout
Performed a syllabus over quest progress tracking. Quests that were supposed to show up as startable/completable upon achieved progress should be able to do so. Reviewed progress tracking on scripts to adequate to this scenario. Fixed some scenarios on where quest dialog popups would appear when updating a quest progress. Fixed some scripts not using updated package addresses after the recent package refactor. Reviewed Raise UI, no longer rendering players unable to access CS/MTS in certain scenarios. Fixed a check of available space in inventory, when trying to obtain items from quests, not informing the player it happened due to a one-of-a-kind item already present. Fixed quest dialog (feature present in many quests) not showing to players when completing it. Fixed several issues with the Cygnus 1st job advancement quests. Added scripting within Raise UI open action. Mimiana egg uses this to keep track of player's EXP progress. Fixed pets not getting despawned as expiration takes place. Fixed hidden players being able to control mobs when either entering map or hidden state. Fixed estimated HP/MP alert not taking bonuses (such as from buffs or equipments) into account. Fixed Energy Charge refreshing buff time upon touching mobs, skewing the uptime of the skill's stat buffs. Switched SnakeYaml for YamlBeans, which makes up for a single JAR artifact. Refactored a channel's event scripts loadout, now taking place after the server bootup phase.
This commit is contained in:
@@ -43,7 +43,7 @@ function start(mode, type, selection) {
|
||||
status--;
|
||||
|
||||
if (status == 0)
|
||||
qm.sendNext("Hey, Man~ What's up? Haha! I am Roger who can teach you adorable new Maplers lots of information.");
|
||||
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)
|
||||
@@ -60,7 +60,7 @@ function start(mode, type, selection) {
|
||||
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.sendNextPrev("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%.");
|
||||
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();
|
||||
@@ -91,7 +91,7 @@ function end(mode, type, selection) {
|
||||
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.sendNextPrev("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");
|
||||
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");
|
||||
|
||||
@@ -5,6 +5,12 @@ function start(mode, type, selection) {
|
||||
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
|
||||
@@ -14,7 +20,7 @@ function start(mode, type, selection) {
|
||||
} 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.sendOk("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.");
|
||||
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) {
|
||||
@@ -31,7 +37,7 @@ function end(mode, type, selection) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if (status == 0) {
|
||||
qm.sendNext("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");
|
||||
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)) {
|
||||
|
||||
@@ -48,7 +48,7 @@ function end(mode, type, selection) {
|
||||
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.sendNextPrev("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");
|
||||
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);
|
||||
|
||||
@@ -52,7 +52,7 @@ function end(mode, type, selection) {
|
||||
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.sendNextPrev("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");
|
||||
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);
|
||||
|
||||
38
scripts/quest/20020.js
Normal file
38
scripts/quest/20020.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ importPackage(Packages.client);
|
||||
|
||||
var status = -1;
|
||||
var jobType = 1;
|
||||
var canTryFirstJob = true;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == 0) {
|
||||
@@ -21,32 +22,35 @@ function end(mode, type, selection) {
|
||||
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(!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 (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);
|
||||
qm.changeJob(MapleJob.DAWNWARRIOR1);
|
||||
qm.getPlayer().resetStats();
|
||||
}
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
|
||||
if (!(qm.canHoldAll([1302077, 1142066]))) {
|
||||
qm.sendOk("Make some room in your inventory and talk back to me.");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
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.");
|
||||
if (qm.getPlayer().getJob().getId() != 1100) {
|
||||
qm.gainItem(1302077, 1);
|
||||
qm.gainItem(1142066, 1);
|
||||
qm.changeJob(MapleJob.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 Nobless, once you become the Dawn Warrior, you will lost a portion of your EXP when you run out of HP, okay?");
|
||||
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) {
|
||||
|
||||
@@ -6,6 +6,7 @@ importPackage(Packages.client);
|
||||
|
||||
var status = -1;
|
||||
var jobType = 2;
|
||||
var canTryFirstJob = true;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == 0) {
|
||||
@@ -21,32 +22,35 @@ function end(mode, type, selection) {
|
||||
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(!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 (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);
|
||||
qm.changeJob(MapleJob.BLAZEWIZARD1);
|
||||
qm.getPlayer().resetStats();
|
||||
}
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
|
||||
if (!(qm.canHoldAll([1372043, 1142066]))) {
|
||||
qm.sendOk("Make some room in your inventory and talk back to me.");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
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.");
|
||||
if (qm.getPlayer().getJob().getId() != 1200) {
|
||||
qm.gainItem(1372043, 1);
|
||||
qm.gainItem(1142066, 1);
|
||||
qm.changeJob(MapleJob.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 Nobless, once you become the Blaze Wizard, you will lost a portion of your EXP when you run out of HP, okay?");
|
||||
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) {
|
||||
|
||||
@@ -6,6 +6,7 @@ importPackage(Packages.client);
|
||||
|
||||
var status = -1;
|
||||
var jobType = 3;
|
||||
var canTryFirstJob = true;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == 0) {
|
||||
@@ -21,33 +22,36 @@ function end(mode, type, selection) {
|
||||
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(!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 (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);
|
||||
qm.changeJob(MapleJob.WINDARCHER1);
|
||||
qm.getPlayer().resetStats();
|
||||
}
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
|
||||
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.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.");
|
||||
if (qm.getPlayer().getJob().getId() != 1300) {
|
||||
qm.gainItem(2060000, 2000);
|
||||
qm.gainItem(1452051, 1);
|
||||
qm.gainItem(1142066, 1);
|
||||
qm.changeJob(MapleJob.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 Nobless, once you become the Wind Archer, you will lost a portion of your EXP when you run out of HP, okay?");
|
||||
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) {
|
||||
|
||||
@@ -6,6 +6,7 @@ importPackage(Packages.client);
|
||||
|
||||
var status = -1;
|
||||
var jobType = 4;
|
||||
var canTryFirstJob = true;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == 0) {
|
||||
@@ -21,33 +22,36 @@ function end(mode, type, selection) {
|
||||
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(!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 (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);
|
||||
qm.changeJob(MapleJob.NIGHTWALKER1);
|
||||
qm.getPlayer().resetStats();
|
||||
}
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
|
||||
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.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.");
|
||||
if (qm.getPlayer().getJob().getId() != 1400) {
|
||||
qm.gainItem(1472061, 1);
|
||||
qm.gainItem(2070000, 800);
|
||||
qm.gainItem(1142066, 1);
|
||||
qm.changeJob(MapleJob.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 Nobless, once you become the Night Walker, you will lost a portion of your EXP when you run out of HP, okay?");
|
||||
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) {
|
||||
|
||||
@@ -6,6 +6,7 @@ importPackage(Packages.client);
|
||||
|
||||
var status = -1;
|
||||
var jobType = 5;
|
||||
var canTryFirstJob = true;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == 0) {
|
||||
@@ -21,32 +22,35 @@ function end(mode, type, selection) {
|
||||
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(!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 (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);
|
||||
qm.getPlayer().changeJob(MapleJob.THUNDERBREAKER1);
|
||||
qm.getPlayer().resetStats();
|
||||
}
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
|
||||
if (!(qm.canHoldAll([1482014, 1142066]))) {
|
||||
qm.sendOk("Make some room in your inventory and talk back to me.");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
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.");
|
||||
if (qm.getPlayer().getJob().getId() != 1500) {
|
||||
qm.gainItem(1482014, 1);
|
||||
qm.gainItem(1142066, 1);
|
||||
qm.getPlayer().changeJob(MapleJob.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 Nobless, once you become the Thunder Breaker, you will lost a portion of your EXP when you run out of HP, okay?");
|
||||
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) {
|
||||
|
||||
52
scripts/quest/20514.js
Normal file
52
scripts/quest/20514.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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
|
||||
|
||||
importPackage(Packages.constants.game);
|
||||
importPackage(Packages.server);
|
||||
|
||||
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);
|
||||
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
|
||||
var consItem = MapleItemInformationProvider.getInstance().getQuestConsumablesInfo(4220137);
|
||||
var exp = consItem.exp;
|
||||
var grade = consItem.grade;
|
||||
|
||||
qm.setQuestProgress(20514, 0, Math.min(diffExp, exp * grade));
|
||||
}
|
||||
}
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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) {
|
||||
if(qm.getQuestProgress(21728, 0) == 0) {
|
||||
qm.sendNext("You haven't found the #rPuppeteer's cave#k yet, did you?");
|
||||
} else {
|
||||
qm.sendNext("Hm, so the entrance is blocked by a powerful force? I see, gimme a time to think now...");
|
||||
qm.gainExp(200);
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
/* ===========================================================
|
||||
Ronan Lana
|
||||
NPC Name: Chrishrama
|
||||
Description: Quest - How to Shoo Away the Evil
|
||||
=============================================================
|
||||
Version 1.0 - Script Done.(20/3/2017)
|
||||
=============================================================
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
var canStart;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
status++;
|
||||
if (mode != 1) {
|
||||
if(type == 1 && mode == 0)
|
||||
status -= 2;
|
||||
else{
|
||||
qm.sendOk("If we don't place these Charms on the Shaman Rocks, evil might awaken...");
|
||||
canStart = false;
|
||||
status = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (status == 0) {
|
||||
qm.sendAcceptDecline("I can feel the forces of evil. They're deep inside the dungeon and they're very, very powerful. If we want to drive the evil away from this place, we must place Charms on the Shaman Rocks inside the dungeon. Will you do that for me?");
|
||||
canStart = true;
|
||||
} else if (status == 1) {
|
||||
if (canStart) {
|
||||
qm.sendOk("Take these Charms and place them on the Shaman Rocks in the dungeon. I'm giving you a total of 6 Charms.");
|
||||
} else {
|
||||
qm.dispose();
|
||||
}
|
||||
} else {
|
||||
qm.forceStartQuest();
|
||||
|
||||
if(qm.haveItem(4032263)) qm.gainItem(4032263, -6);
|
||||
qm.gainItem(4032263, 6);
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
function end(mode, type, selection) {
|
||||
status++;
|
||||
|
||||
if(status == 0) {
|
||||
if(qm.getQuestProgress(2236) == 63) { //111111
|
||||
qm.sendOk("I, too, felt it. The force of the Shaman Rocks began to overpower the forces of evil. I think Sleepywood is safe now. The evil has been eliminated.");
|
||||
qm.gainExp(60000);
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
else {
|
||||
if(qm.haveItem(4032263)) qm.gainItem(4032263, -6);
|
||||
qm.gainItem(4032263, 6);
|
||||
|
||||
qm.sendOk("Oh, not good. I still sense bad omens coming from the interior. Here, take these charms and seal them at the Shaman Rocks. We are counting on you.");
|
||||
qm.updateQuest(2236, 0);
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
Author: Kevin
|
||||
Quest: Zombie Mushroom Signal 3 (2251)
|
||||
NPC: The Rememberer (1061011)
|
||||
Item: Recording Charm (4032399)
|
||||
*/
|
||||
|
||||
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(4032399, 20)) {
|
||||
qm.sendOk("Please bring me 20 #b#t4032399##k... #i4032399#");
|
||||
}
|
||||
else {
|
||||
qm.gainItem(4032399, -20);
|
||||
qm.sendOk("Oh, you brought 20 #b#t4032399##k! Thank you.");
|
||||
qm.gainExp(8000);
|
||||
qm.forceCompleteQuest();
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
importPackage(Packages.constants);
|
||||
importPackage(Packages.constants.game);
|
||||
|
||||
var status = -1;
|
||||
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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) {
|
||||
if(qm.getQuestProgress(3114, 7777) != -1) {
|
||||
if(!qm.haveItem(4161036, 1)) {
|
||||
if(qm.canHold(4161036, 1)) {
|
||||
qm.gainItem(4161036, 1);
|
||||
qm.sendNext("Seems you lost a book with the notes to Little Star. Here is another one. Please play it for me.", 9);
|
||||
} else {
|
||||
qm.sendNext("Seems you lost a book with the notes to Little Star, but you don't have an ETC available. Please free some room.", 9);
|
||||
}
|
||||
} else {
|
||||
qm.sendNext(".....", 9);
|
||||
}
|
||||
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
qm.sendNext("(Eliza seems to be in deep sleep.)", 3);
|
||||
} else if (status == 1) {
|
||||
qm.gainFame(20);
|
||||
|
||||
qm.forceCompleteQuest();
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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) {
|
||||
if(qm.getQuestProgress(3311, 0) == 1 && qm.getQuestProgress(3311, 1) == 1) {
|
||||
qm.sendNext("Hmm, so the Alcadno doctor wrote something about researching some vanguardist Neo Huroid machine, that could beat by far the existing one, and was about to prepare the last steps of his rehearsal? We don't have a word about him for about three weeks now, something must have gone wrong...");
|
||||
qm.gainExp(60000);
|
||||
qm.forceCompleteQuest();
|
||||
} else {
|
||||
qm.sendNext("Found nothing yet? Please check out Dr. De Lang's house properly, something there may give out a clue about what is going on.");
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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) {
|
||||
if(qm.getQuestProgress(3345, 0) == 4) {
|
||||
qm.sendNext("So, you have succeeded. With this, Magatia's upfront demise has been averted, well done brave adventurer!");
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.gainExp(20000);
|
||||
} else {
|
||||
qm.sendNext("Did you not seal the #rmagic circle beneath Magatia#k yet? It is a matter of great importance, please haste yourself.");
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@
|
||||
Description: Quest - Verifying the password
|
||||
*/
|
||||
var status = -1;
|
||||
var pass;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
@@ -47,37 +48,16 @@ function start(mode, type, selection) {
|
||||
} else if (status == 1) {
|
||||
qm.sendAcceptDecline("All right, now, this key is very long and complex. I need you to memorize it very well. I won't say again, so you'd better write it down somewhere. Are you ready?");
|
||||
} else if (status == 2) {
|
||||
var pass = generateString();
|
||||
pass = generateString();
|
||||
qm.sendOk("The key code is #b" + pass + "#k. Got that? Put the key into the door of the secret passage, and you will be able to walk around the passage freely.");
|
||||
qm.forceStartQuest();
|
||||
qm.setStringQuestProgress(3360, 0, pass);
|
||||
} else if (status == 3) {
|
||||
qm.forceStartQuest();
|
||||
qm.setQuestProgress(3360, pass);
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
if (status == 0) {
|
||||
if(qm.getQuestProgress(3360, 1) == 0) {
|
||||
qm.sendNext("What's up? You haven't opened the Secret Passage yet?");
|
||||
} else {
|
||||
qm.forceCompleteQuest();
|
||||
qm.dispose();
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function generateString() {
|
||||
var thestring = "";
|
||||
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
||||
@@ -41,7 +41,7 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.startQuest();
|
||||
//qm.getPlayer().updateQuestInfo(3507, "1");
|
||||
qm.setQuestProgress(3507, 7081, 1); // thanks resinate for pointing out uncompletable quest due to non-updated progress
|
||||
qm.completeQuest();
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
|
||||
@@ -41,7 +41,7 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.startQuest();
|
||||
//qm.getPlayer().updateQuestInfo(3507, "1");
|
||||
qm.setQuestProgress(3507, 7081, 1);
|
||||
qm.completeQuest();
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
|
||||
@@ -41,7 +41,7 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.startQuest();
|
||||
//qm.getPlayer().updateQuestInfo(3507, "1");
|
||||
qm.setQuestProgress(3507, 7081, 1);
|
||||
qm.completeQuest();
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
|
||||
@@ -41,7 +41,7 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.startQuest();
|
||||
//qm.getPlayer().updateQuestInfo(3507, "1");
|
||||
qm.setQuestProgress(3507, 7081, 1);
|
||||
qm.completeQuest();
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
|
||||
@@ -41,7 +41,7 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.startQuest();
|
||||
//qm.getPlayer().updateQuestInfo(3507, "1");
|
||||
qm.setQuestProgress(3507, 7081, 1);
|
||||
qm.completeQuest();
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
|
||||
@@ -36,8 +36,9 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
qm.setQuestProgress(3507, 7081, 1);
|
||||
qm.forceCompleteQuest();
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ function start(mode, type, selection) {
|
||||
|
||||
if (status == 0) {
|
||||
qm.startQuest();
|
||||
//qm.getPlayer().updateQuestInfo(3507, "1");
|
||||
qm.setQuestProgress(3507, 7081, 1);
|
||||
qm.completeQuest();
|
||||
qm.sendOk("You have regained your memories, talk to #b#p2140001##k to get the pass.");
|
||||
} else if (status == 1) {
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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/>.
|
||||
*/
|
||||
/* Screwing the Red Scorpions
|
||||
*/
|
||||
|
||||
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) {
|
||||
var c = 0;
|
||||
|
||||
for(var i = 0; i < 4; i++) {
|
||||
if(qm.getQuestProgress(3926, i) == 1) {
|
||||
c++;
|
||||
}
|
||||
}
|
||||
|
||||
if(c == 4) {
|
||||
qm.sendNext("You delivered all the jewels, well done!");
|
||||
qm.gainExp(6500);
|
||||
qm.forceCompleteQuest();
|
||||
} else {
|
||||
qm.sendNext("Have you brought all the jewels from the Red Scorpions? They have to be delivered to the Residential areas of the Sand Bandits.");
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
/*
|
||||
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 && status == 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
|
||||
if(qm.getQuestProgress(3927) == 0) { // didn't find the wall yet, eh?
|
||||
qm.sendOk("Did you find the wall? Look closely, the wall is more near than you think!");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendSimple("Did you find the wall?\r\n#L0##b I did, but... I have no idea what it's talking about.#l");
|
||||
} else if (status == 1) {
|
||||
qm.sendSimple("What did it say?\r\n#L0##b 'If I had an iron hammer and a dagger, a bow and an arrow...'#l\r\n#L1# 'Byron S2 Sirin'#l\r\n#L2# 'Ahhh I forgot.'");
|
||||
} else if (status == 2) {
|
||||
if(selection == 0) {
|
||||
qm.sendOk("If I had an iron hammer and a dagger... a bow and an arrow... what does that mean? Do you want me to tell you? I don't know myself. It's something you should think about. If you need a clue... it would go something like... a weapon is just an item... until someone uses it...?");
|
||||
} else if(selection == 1) {
|
||||
qm.sendOk("Man, Jiyur wrote on the wall again! Arrgh!!");
|
||||
qm.dispose();
|
||||
return;
|
||||
} else {
|
||||
qm.sendOk("What? You forgot? Do you remember where it was written?");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
} else if (status == 3) {
|
||||
qm.gainExp(1000);
|
||||
qm.forceCompleteQuest();
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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/>.
|
||||
*/
|
||||
/* Sejan's Test
|
||||
Food delivery on Ariant
|
||||
*/
|
||||
|
||||
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) {
|
||||
var c = 0;
|
||||
|
||||
for(var i = 0; i < 4; i++) {
|
||||
if(qm.getQuestProgress(3929, i) == 1) {
|
||||
c++;
|
||||
}
|
||||
}
|
||||
|
||||
if(c == 4) {
|
||||
qm.sendNext("You delivered all the food, good.");
|
||||
qm.gainExp(2000);
|
||||
qm.forceCompleteQuest();
|
||||
} else {
|
||||
var missed = (4 - qm.getItemQuantity(4031580)) - c;
|
||||
if(missed > 0) {
|
||||
if(qm.canHold(4031580, missed)) {
|
||||
qm.gainItem(4031580, missed);
|
||||
qm.sendNext("Hey, what are you trying to pull on? To pass my test you must deliver all the foods to the Residential areas.");
|
||||
} else {
|
||||
qm.sendNext("You don't completed the task, neither has slots available on the inventory to get the food. Free a slot on your ETC please.");
|
||||
}
|
||||
} else {
|
||||
qm.sendNext("Hey, what are you trying to pull on? To pass my test you must to deliver all the foods to the Residential areas.");
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,8 +41,8 @@ function end(mode, type, selection) {
|
||||
if (status == 0) {
|
||||
qm.sendNext("Hm, so you claim to have brought the #b#t4260003##k? Ok, let's take a look into it.");
|
||||
} else if (status == 1) {
|
||||
if(qm.getQuestProgress(6033) == 1 && qm.haveItem(4260003, 1)) {
|
||||
qm.sendNext("You indeed have crafted a fine piece of Monster Crystal, I see. You passed! Now, I shall teach you the next steps of the Maker skill. Keep the monster crystal with you as well, it's your work.");
|
||||
if(qm.getQuestProgressInt(6033) == 1 && qm.haveItem(4260003, 1)) {
|
||||
qm.sendNextPrev("You indeed have crafted a fine piece of Monster Crystal, I see. You passed! Now, I shall teach you the next steps of the Maker skill. Keep the monster crystal with you as well, it's your work.");
|
||||
} else {
|
||||
qm.sendNext("Hey, what's wrong? I did tell you to make a monster crystal to pass my test, didn't I? Buying one or crafting before the start of the test is NOT part of the deal. Go craft me an #b#t4260003##k.");
|
||||
qm.dispose();
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 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/>.
|
||||
*/
|
||||
/*
|
||||
Hypnotize skill quest
|
||||
*/
|
||||
|
||||
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.getQuestProgress(6410, 0) == 0) {
|
||||
qm.sendOk("You must save #r#p2095000##k first!");
|
||||
qm.dispose();
|
||||
} else {
|
||||
qm.sendNext("Again, thank you so much for rescuing me. I don't know how to repay you for all this... both Shulynch and you are the nicest people I have encountered. If you approach the mobs the same way you approached me, they may all end up becoming friends with you, as well. Please never lose the kindness you have in you.");
|
||||
}
|
||||
} else if (status == 1) {
|
||||
qm.sendNext("(Friends with the mobs... never lose the kindness.)\r\n\r\n #s5221009# #b#q5221009##k");
|
||||
} else if (status == 2) {
|
||||
qm.gainExp(1200000);
|
||||
qm.teachSkill(5221009, 0, 10, -1);
|
||||
|
||||
qm.forceCompleteQuest();
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user