Maker-oriented commit

Implemented the multiple features of the Maker skill (equip disassembly, leftover merging into monster crystal and item crafting).
Updated the DB with the Maker data featured on the WZ.
Added a new table for the strenghtening reagents gain data (compiled with the MapleSkillMakerReagentIndexer).
Fixed quests that improves the Maker skill level and some other Maker-related quests.
This commit is contained in:
ronancpl
2017-11-24 14:00:48 -02:00
parent 4dd2764776
commit 3b30244239
87 changed files with 8424 additions and 18509 deletions

View File

@@ -3,9 +3,13 @@ var map = 910060000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
status++;
} else {
if (status <= 1) {
cm.dispose();
@@ -14,10 +18,17 @@ function action(mode, type, selection) {
status--;
}
if (status == 0) {
if (cm.isQuestStarted(22515) || cm.isQuestStarted(22516) || cm.isQuestStarted(22517) || cm.isQuestStarted(22518)) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
if (cm.isQuestActive(22515) || cm.isQuestActive(22516) || cm.isQuestActive(22517) || cm.isQuestActive(22518)) {
cm.sendYesNo("Would you like to go in the special Spore Training Center?");
status = 1;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";
@@ -34,7 +45,7 @@ function action(mode, type, selection) {
cm.dispose();
}
} else if (status == 2) {
cm.warp(910060100,0);
cm.dispose();
cm.warp(910060100,0);
cm.dispose();
}
}

View File

@@ -3,6 +3,10 @@ var map = 910060000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
@@ -14,10 +18,17 @@ function action(mode, type, selection) {
status--;
}
if (status == 0) {
if (cm.isQuestStarted(22515) || cm.isQuestStarted(22516) || cm.isQuestStarted(22517) || cm.isQuestStarted(22518)) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
if (cm.isQuestActive(22515) || cm.isQuestActive(22516) || cm.isQuestActive(22517) || cm.isQuestActive(22518)) {
cm.sendYesNo("Would you like to go in the special Spore Training Center?");
status = 1;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";

43
scripts/npc/1022104.js Normal file
View File

@@ -0,0 +1,43 @@
var status = -1;
var map = 910220000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
} else {
if (status <= 1) {
cm.dispose();
return;
}
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";
}
cm.sendSimple(selStr);
} else if (status == 1) {
if (selection < 0 || selection >= num) {
cm.dispose();
} else if (cm.getPlayerCount(map + selection) >= maxp) {
cm.sendNext("This training center is full.");
status = -1;
} else {
cm.warp(map + selection, 0);
cm.dispose();
}
}
}

View File

@@ -3,6 +3,10 @@ var map = 910220000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
@@ -14,6 +18,12 @@ function action(mode, type, selection) {
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";

43
scripts/npc/1032113.js Normal file
View File

@@ -0,0 +1,43 @@
var status = -1;
var map = 910120000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
} else {
if (status <= 1) {
cm.dispose();
return;
}
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";
}
cm.sendSimple(selStr);
} else if (status == 1) {
if (selection < 0 || selection >= num) {
cm.dispose();
} else if (cm.getPlayerCount(map + selection) >= maxp) {
cm.sendNext("This training center is full.");
status = -1;
} else {
cm.warp(map + selection, 0);
cm.dispose();
}
}
}

View File

@@ -3,6 +3,10 @@ var map = 910120000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
@@ -14,6 +18,12 @@ function action(mode, type, selection) {
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";

43
scripts/npc/1052113.js Normal file
View File

@@ -0,0 +1,43 @@
var status = -1;
var map = 910310000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
} else {
if (status <= 1) {
cm.dispose();
return;
}
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";
}
cm.sendSimple(selStr);
} else if (status == 1) {
if (selection < 0 || selection >= num) {
cm.dispose();
} else if (cm.getPlayerCount(map + selection) >= maxp) {
cm.sendNext("This training center is full.");
status = -1;
} else {
cm.warp(map + selection, 0);
cm.dispose();
}
}
}

43
scripts/npc/1052114.js Normal file
View File

@@ -0,0 +1,43 @@
var status = -1;
var map = 910310000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
} else {
if (status <= 1) {
cm.dispose();
return;
}
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";
}
cm.sendSimple(selStr);
} else if (status == 1) {
if (selection < 0 || selection >= num) {
cm.dispose();
} else if (cm.getPlayerCount(map + selection) >= maxp) {
cm.sendNext("This training center is full.");
status = -1;
} else {
cm.warp(map + selection, 0);
cm.dispose();
}
}
}

View File

@@ -3,6 +3,10 @@ var map = 912030000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
@@ -14,6 +18,12 @@ function action(mode, type, selection) {
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";

View File

@@ -3,6 +3,10 @@ var map = 912030000;
var num = 5;
var maxp = 5;
function start() {
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == 1) {
status++;
@@ -14,6 +18,12 @@ function action(mode, type, selection) {
status--;
}
if (status == 0) {
if(cm.getLevel() >= 20) {
cm.sendOk("This training ground is available only for those under level 20.");
cm.dispose();
return;
}
var selStr = "Would you like to go into the Training Center?";
for (var i = 0; i < num; i++) {
selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k";

View File

@@ -32,7 +32,7 @@
function enter(pi) {
if (pi.getPlayer().haveItem(4031582) == true) {
pi.playPortalSound();
pi.warp(260000301, 0);
pi.warp(260000301, 5);
return true;
} else {
pi.playerMessage(5, "You can enter only if you have a Entry Pass to the Palace.");

View File

@@ -1,3 +1,4 @@
//some quest where you must use hidden portals
function enter(pi) {
return false;
}

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

@@ -0,0 +1,56 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
Quest: Carson's Fundamentals of Alchemy
*/
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("I am to teach you about the fundamentals of Alchemy.");
} else if (status == 1) {
qm.sendNextPrev("While science is good to take a look on the thoughtful side of the elements that compounds the items, it alone is not nearly enough to devise an item.");
} else if (status == 2) {
qm.sendNextPrev("In fact, to be able to 'tell the pieces' to become a whole, how should it be done? The rustic ways of the blacksmithing winds up dumbing down some latent potentials of the items.");
} else if (status == 3) {
qm.sendNextPrev("Alchemy can be employed for this task. Cleanly and swiftly, #rit merges the parts that forms an item with almost no drawbacks#k, making out the most of the process with almost no scrapover, if done right. It takes a while to master it, but once it is done, everything will run out neatly.");
} else if (status == 4) {
qm.sendNextPrev("And remember this: the maxima of #bExchange#k, the area of the fundamentals of Alchemy where the total amount of the material does not change, is that no item can be created from nothing. Understood?");
} else if (status == 5) {
qm.gainMeso(-10000);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,56 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
Quest: Hughes the Fuse's Basic of Theory of Science
*/
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("I am to teach you about the basics of the Theory of Science.");
} else if (status == 1) {
qm.sendNextPrev("Science stages where the alchemy doesn't meet the requirements. All items have molecular constitutions. The #rnature of their arrangements and each intrinsic unit of matter#k defines the many properties an item will have.");
} else if (status == 2) {
qm.sendNextPrev("This makes true in the scenario of the #rMaker#k as well. One must be able to study the traces of each component that is being used to form the item, to be able to tell if the experiment will utmostly succeed of fail.");
} else if (status == 3) {
qm.sendNextPrev("Take that in mind: the main perspective of science, that one engine that makes it flows the strongest, whatever scenario it is, is the aspect of #bunderstanding the process#k that generates the results, not simply throwing away tries at will.");
} else if (status == 4) {
qm.sendNextPrev("That has been made clear, right? Good, then the class is over. Dismissed.");
} else if (status == 5) {
qm.gainMeso(-10000);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,54 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
Quest: Meren's Class on the Actual Practice
*/
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 you've come to attend my class, huh? Right, I'll make it fast.");
} else if (status == 1) {
qm.sendNextPrev("I will teach you the actual application of the #bMaker#k method. All you need to do is have an item in mind to make, gather all the ingredients from the receipt and mix them in a #rscientifically alchemisty way#k. Easy, isn't it?");
} else if (status == 2) {
qm.sendNextPrev("Let's take producing the #bWeight Earrings#k as an example. There is a rather specific #rductility theory#k to generate it, as any other 'unique' items have, the name going around the #rmain physical force#k acting over the thing we are working on: on that case, the #bDuctility Theory of Gravity#k (as it is a 'Weighted Earrings', got it?).");
} else if (status == 3) {
qm.sendNextPrev("Ok, now you need to hand me a fee, 10,000 mesos that is, for that information. The collected fee shall be used for acquiring the needed materials for your learning of the fine art of the #bMaker#k.");
} else if (status == 4) {
qm.gainMeso(-10000);
qm.forceCompleteQuest();
qm.dispose();
}
}
}

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

@@ -0,0 +1,60 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* Maker Skill
Moren's Second round of teaching
2nd skill level
*/
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("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.");
var skillid = Math.floor(qm.getPlayer().getJob().getId() / 1000) * 10000000 + 1007;
qm.teachSkill(skillid, 2, 3, -1);
qm.gainExp(230000 * qm.getPlayer().getExpRate());
qm.forceCompleteQuest();
} 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();
}
}
}

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

@@ -0,0 +1,59 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* Maker Skill
A Surprise Outcome
3rd skill level
*/
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("Bothering me again? What's it?");
} else if (status == 1) {
if(qm.haveItem(4031980, 1)) {
qm.sendNext("You crafted a #b#t4031980##k?! How comes, how did you do it?? ... Well, that can't be helped, I guess. The student surpassed the teacher! Youth sure do wonders to one's perception capabilities.\r\n\r\nYou are now ready to take the last step on mastering the Maker skill, contemplate it at it's finest form!");
qm.gainItem(4031980, -1);
var skillid = Math.floor(qm.getPlayer().getJob().getId() / 1000) * 10000000 + 1007;
qm.teachSkill(skillid, 3, 3, -1);
qm.gainExp(300000 * qm.getPlayer().getExpRate());
qm.forceCompleteQuest();
} else {
qm.sendNext("... Please step aside, I can't finish this work if I'm being distracted at every moment.");
}
qm.dispose();
}
}
}