271 lines
11 KiB
JavaScript
271 lines
11 KiB
JavaScript
/* @author aaroncsn <MapleSea Like>
|
|
* @author Ronan
|
|
NPC Name: Mr. Do
|
|
Map(s): Mu Lung: Mu Lung(2500000000)
|
|
Description: Potion Creator
|
|
*/
|
|
|
|
var status = 0;
|
|
var selectedType = -1;
|
|
var selectedItem = -1;
|
|
var item;
|
|
var mats;
|
|
var matQty;
|
|
var matMeso;
|
|
var rewdSet;
|
|
var makeQty = 1;
|
|
|
|
var itemSet;
|
|
var matSet;
|
|
var matQtySet;
|
|
var matQtyMeso;
|
|
|
|
function start() {
|
|
status = -1;
|
|
action(1, 0, 0);
|
|
}
|
|
|
|
function action(mode, type, selection) {
|
|
if (mode == 1) {
|
|
status++;
|
|
} else {
|
|
cm.sendOk("Oh, talk to me when you have decided what you want from me. I am very busy right now.");
|
|
cm.dispose();
|
|
return;
|
|
}
|
|
|
|
if (status == 0) {
|
|
if (cm.isQuestActive(3821) && !cm.haveItem(4031554) && !cm.haveItem(4161030) && cm.isQuestCompleted(3830)) {
|
|
//player lost his book, help him complete quest anyways
|
|
|
|
if (cm.canHold(4031554)) {
|
|
cm.sendOk("Oh, the boy wanted you to bring him a #t4031554#? No problem, I was on his debt anyway. Now, tell him I am repaying the debt, OK?");
|
|
cm.gainItem(4031554, 1);
|
|
cm.dispose();
|
|
return;
|
|
} else {
|
|
cm.sendOk("Oh, the boy wanted you to bring him a #t4031554#? Make room at your ETC inventory first.");
|
|
cm.dispose();
|
|
return;
|
|
}
|
|
}
|
|
var selStr = "I am a man of many talents. Let me know what you'd like to do. #b"
|
|
var options = ["Make a medicine", "Make a scroll", "Donate medicine ingredients"];
|
|
for (var i = 0; i < options.length; i++) {
|
|
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
|
}
|
|
|
|
cm.sendSimple(selStr);
|
|
} else if (status == 1) {
|
|
selectedType = selection;
|
|
var selStr;
|
|
if (selectedType == 0) { //Make a medicine
|
|
itemSet = [2022145, 2022146, 2022147, 2022148, 2022149, 2022150, 2050004, 4031554];
|
|
matSet = [2022116, 2022116, [4000281, 4000293], [4000276, 2002005], [4000288, 4000292], 4000295, [2022131, 2022132], [4000286, 4000287, 4000293]];
|
|
matQtySet = [3, 3, [10, 10], [20, 1], [20, 20], 10, [1, 1], [20, 20, 20]];
|
|
matQtyMeso = [0, 0, 910, 950, 1940, 600, 700, 1000];
|
|
|
|
if (!cm.haveItem(4161030)) {
|
|
cm.sendNext("If you want to make a medicine, you must study the Book on Herbal Medicine first. Nothing is more dangerous than practicing a medicine without proper knowledge.");
|
|
cm.dispose();
|
|
return;
|
|
}
|
|
|
|
selStr = "What kind of medicine are you interested in making?#b";
|
|
|
|
for (var i = 0; i < itemSet.length; i++) {
|
|
selStr += "\r\n#L" + i + "# #v" + itemSet[i] + "# #t" + itemSet[i] + "##l";
|
|
}
|
|
selStr += "#k";
|
|
} else if (selectedType == 1) { //Make a scroll
|
|
status++;
|
|
|
|
selStr = "What kind of scrolls are you interested in making?#b";
|
|
itemSet = ["Scroll for One-Handed Sword for ATT", "Scroll for One-Handed Axe for ATT", "Scroll for One-Handed BW for ATT",
|
|
"Scroll for Dagger for ATT", "Scroll for Wand for Magic Att.", "Scroll for Staff for Magic Att.",
|
|
"Scroll for Two-handed Sword for ATT.", "Scroll for Two-handed Axe for ATT", "Scroll for Two-handed BW for ATT",
|
|
"Scroll for Spear for ATT", "Scroll for Pole Arm for ATT", "Scroll for Bow for ATT", "Scroll for Crossbow for ATT ",
|
|
"Scroll for Claw for ATT", "Scroll for Knuckle for ATT", "Scroll for Gun for ATT#k"];
|
|
|
|
for (var i = 0; i < itemSet.length; i++) {
|
|
selStr += "\r\n#L" + i + "# " + itemSet[i] + "#l";
|
|
}
|
|
} else {//Donate medicine ingredients
|
|
status++;
|
|
|
|
selStr = "So you wish to donate some medicine ingredients? This is great news! Donations will be accepted in the unit of #b100#k. The donator will receive a marble that enables one to make a scroll. Which of these would you like to donate? #b";
|
|
itemSet = [4000276, 4000277, 4000278, 4000279, 4000280, 4000291, 4000292, 4000286, 4000287, 4000293, 4000294, 4000298, 4000284, 4000288, 4000285, 4000282, 4000295, 4000289, 4000296, 4000297];
|
|
|
|
for (var i = 0; i < itemSet.length; i++) {
|
|
selStr += "\r\n#L" + i + "# #v" + itemSet[i] + "# #t" + itemSet[i] + "##l";
|
|
}
|
|
}
|
|
|
|
cm.sendSimple(selStr);
|
|
} else if (status == 2) {
|
|
selectedItem = selection;
|
|
cm.sendGetText("How many #b#t" + itemSet[selectedItem] + "##k do you want to make?");
|
|
} else if (status == 3) {
|
|
if (selectedType == 0) { //Medicines
|
|
var text = cm.getText();
|
|
makeQty = parseInt(text);
|
|
if (isNaN(makeQty)) {
|
|
makeQty = 1;
|
|
}
|
|
|
|
item = itemSet[selectedItem];
|
|
mats = matSet[selectedItem];
|
|
matQty = matQtySet[selectedItem];
|
|
matMeso = matQtyMeso[selectedItem];
|
|
|
|
var prompt = "You want to make #b" + makeQty + " #t" + item + "##k? In order to make " + makeQty + " #t" + item + "#, you'll need the following items:\r\n";
|
|
if (mats instanceof Array) {
|
|
for (var i = 0; i < mats.length; i++) {
|
|
prompt += "\r\n#i" + mats[i] + "# " + matQty[i] * makeQty + " #t" + mats[i] + "#";
|
|
}
|
|
} else {
|
|
prompt += "\r\n#i" + mats + "# " + matQty * makeQty + " #t" + mats + "#";
|
|
}
|
|
|
|
if (matMeso > 0) {
|
|
prompt += "\r\n#i4031138# " + matMeso * makeQty + " meso";
|
|
}
|
|
|
|
cm.sendYesNo(prompt);
|
|
} else if (selectedType == 1) { //Scrolls
|
|
selectedItem = selection;
|
|
|
|
itemSet = [2043000, 2043100, 2043200, 2043300, 2043700, 2043800, 2044000, 2044100, 2044200, 2044300, 2044400, 2044500, 2044600, 2044700, 2044800, 2044900];
|
|
matSet = [[4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001],
|
|
[4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001],
|
|
[4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001], [4001124, 4010001]];
|
|
matQtySet = [[100, 10], [100, 10], [100, 10], [100, 10], [100, 10], [100, 10], [100, 10],
|
|
[100, 10], [100, 10], [100, 10], [100, 10], [100, 10], [100, 10], [100, 10], [100, 10],
|
|
[100, 10]];
|
|
item = itemSet[selectedItem];
|
|
mats = matSet[selectedItem];
|
|
matQty = matQtySet[selectedItem];
|
|
var prompt = "You want to make #b#t" + item + "##k? In order to make #t" + item + "# you'll need the following items:";
|
|
if (mats instanceof Array) {
|
|
for (var i = 0; i < mats.length; i++) {
|
|
prompt += "\r\n#i" + mats[i] + "# " + matQty[i] + " #t" + mats[i] + "#";
|
|
}
|
|
} else {
|
|
prompt += "\r\n#i" + mats + "# " + matQty + " #t" + mats + "#";
|
|
}
|
|
|
|
cm.sendYesNo(prompt);
|
|
} else if (selectedType == 2) {
|
|
selectedItem = selection;
|
|
|
|
itemSet = [4000276, 4000277, 4000278, 4000279, 4000280, 4000291, 4000292, 4000286, 4000287, 4000293, 4000294, 4000298, 4000284, 4000288, 4000285, 4000282, 4000295, 4000289, 4000296, 4000297];
|
|
rewdSet = [7, 7, [7, 8], 10, 11, 8, [7, 8], [7, 9], [7, 8], 9, 10, [10, 11], 11, [11, 12], 13, 13, 14, 15, [15, 16], 17];
|
|
|
|
item = itemSet[selectedItem];
|
|
var prompt = "Are you sure you want to donate #b100 #t " + item + "##k?";
|
|
cm.sendYesNo(prompt);
|
|
}
|
|
} else if (status == 4) {
|
|
if (selectedType == 0) {
|
|
var complete = true;
|
|
if (mats instanceof Array) {
|
|
for (var i = 0; i < mats.length; i++) {
|
|
if (!cm.haveItem(mats[i], matQty[i] * makeQty)) {
|
|
complete = false;
|
|
}
|
|
}
|
|
} else {
|
|
if (!cm.haveItem(mats, matQty * makeQty)) {
|
|
complete = false;
|
|
}
|
|
}
|
|
|
|
if (cm.getMeso() < matMeso * makeQty) {
|
|
complete = false;
|
|
}
|
|
|
|
if (!complete || !cm.canHold(item, makeQty)) {
|
|
cm.sendOk("Please make sure you are neither lacking ingredients or lacking space in your use inventory.");
|
|
} else {
|
|
if (mats instanceof Array) {
|
|
for (var i = 0; i < mats.length; i++) {
|
|
cm.gainItem(mats[i], -matQty[i] * makeQty);
|
|
}
|
|
} else {
|
|
cm.gainItem(mats, -matQty * makeQty);
|
|
}
|
|
|
|
if (matMeso > 0) {
|
|
cm.gainMeso(-matMeso * makeQty);
|
|
}
|
|
cm.gainItem(item, makeQty);
|
|
}
|
|
|
|
cm.dispose();
|
|
} else if (selectedType == 1) {
|
|
var complete = true;
|
|
if (mats instanceof Array) {
|
|
for (var i = 0; i < mats.length; i++) {
|
|
if (!cm.haveItem(mats[i], matQty[i])) {
|
|
complete = false;
|
|
}
|
|
}
|
|
} else {
|
|
if (!cm.haveItem(mats, matQty)) {
|
|
complete = false;
|
|
}
|
|
}
|
|
|
|
if (Math.random() >= 0.9) //A lucky find! Scroll 60%
|
|
{
|
|
item += 1;
|
|
}
|
|
|
|
if (!complete || !cm.canHold(item, 1)) {
|
|
cm.sendOk("Please make sure you are neither lacking ingredients or lacking space in your use inventory.");
|
|
} else {
|
|
if (mats instanceof Array) {
|
|
for (var i = 0; i < mats.length; i++) {
|
|
cm.gainItem(mats[i], -matQty[i]);
|
|
}
|
|
} else {
|
|
cm.gainItem(mats, -matQty);
|
|
}
|
|
|
|
cm.gainItem(item, 1);
|
|
}
|
|
|
|
cm.dispose();
|
|
} else if (selectedType == 2) {
|
|
var complete = true;
|
|
|
|
if (!cm.haveItem(item, 100)) {
|
|
complete = false;
|
|
}
|
|
|
|
if (!complete) {
|
|
cm.sendOk("Please make sure you are neither lacking ingredients or lacking space in your etc inventory.");
|
|
cm.dispose();
|
|
return;
|
|
}
|
|
|
|
var reward;
|
|
if (rewdSet[selectedItem] instanceof Array) {
|
|
var length = rewdSet[selectedItem][1] - rewdSet[selectedItem][0];
|
|
reward = rewdSet[selectedItem][0] + Math.round(Math.random() * length);
|
|
} else {
|
|
reward = rewdSet[selectedItem];
|
|
}
|
|
|
|
if (!cm.canHold(4001124, reward)) {
|
|
cm.sendOk("Please make sure you are neither lacking ingredients or lacking space in your etc inventory.");
|
|
} else {
|
|
cm.gainItem(item, -100);
|
|
cm.gainItem(4001124, reward);
|
|
}
|
|
|
|
cm.dispose();
|
|
}
|
|
}
|
|
}
|