Cleared issue in a few scripts which would be trying to access Java Math library methods with unexpected parameter types. Fixed EllinPQ rewarder NPC handing out an unexpected itemid to the player. Cleared SQL foreign key constraint statement no longer supposed to be used.
269 lines
12 KiB
JavaScript
269 lines
12 KiB
JavaScript
/* @author aaroncsn <MapleSea Like>
|
|
* @author Ronan
|
|
NPC Name: Mr. Do
|
|
Map(s): Mu Lung: Mu Lung(2500000000)
|
|
Description: Potion Creator
|
|
*/
|
|
importPackage(Packages.client);
|
|
|
|
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 = new Array("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 = new Array(2022145,2022146,2022147,2022148,2022149,2022150,2050004,4031554);
|
|
matSet = new Array(2022116,2022116,new Array(4000281,4000293),new Array(4000276,2002005),new Array(4000288,4000292),4000295,new Array(2022131,2022132),new Array(4000286,4000287,4000293));
|
|
matQtySet = new Array(3,3,new Array(10,10),new Array(20,1),new Array(20,20),10,new Array(1,1),new Array(20,20,20));
|
|
matQtyMeso = new Array(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 = new Array("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 = new Array(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 = new Array(2043000,2043100,2043200,2043300,2043700,2043800,2044000,2044100,2044200,2044300,2044400,2044500,2044600,2044700,2044800,2044900);
|
|
matSet = new Array(new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),
|
|
new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),
|
|
new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001));
|
|
matQtySet = new Array(new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),
|
|
new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),
|
|
new Array(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 = new Array(4000276,4000277,4000278,4000279,4000280,4000291,4000292,4000286,4000287,4000293,4000294,4000298,4000284,4000288,4000285,4000282,4000295,4000289,4000296,4000297);
|
|
rewdSet = new Array(7,7,new Array(7,8),10,11,8,new Array(7,8),new Array(7,9),new Array(7,8),9,10,new Array(10,11),11,new Array(11,12),13,13,14,15,new Array(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();
|
|
}
|
|
}
|
|
}
|