The great MCPQ Merge offensive
Fulfilled the lovely pull request #427 from @dragoso, which added in backing code content to HeavenMS. Implemented structural changes for the Marriage wishlist, in order to receive, maintain and distribute gifts to spouses. Added untradeable check on wishlist gift handler. Adjusted CPQ drops to actually load from DB rathe than hard-coded. Fixed CPQ "random disease to player/party" functionality not applying properly. Adjusted how CPQ maps are generated. It directly loads a new area from WZ (this process should at least removes the player's spawned mobs) rather than reset the cache at every MCPQ creation.
This commit is contained in:
@@ -1,8 +1,23 @@
|
||||
var map = 980000000;
|
||||
var minLvl = 0;
|
||||
var maxLvl = 255;
|
||||
var minAmt = 0;
|
||||
var maxAmt = 6;
|
||||
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
var n1 = 50; //???
|
||||
var n2 = 40; //??? ???
|
||||
var n3 = 7; //35
|
||||
var n4 = 10; //40
|
||||
var n5 = 20; //50
|
||||
|
||||
var cpqMap = 980000000;
|
||||
var cpqMinLvl = 0;
|
||||
var cpqMaxLvl = 255;
|
||||
var cpqMinAmt = 0;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
var refineRocks = true; // enables moon rock, star rock
|
||||
var refineCrystals = true; // enables common crystals
|
||||
var refineSpecials = true; // enables lithium, special crystals
|
||||
var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
@@ -13,7 +28,7 @@ function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && status == 0) {
|
||||
if (status >= 0 && mode == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
@@ -21,64 +36,532 @@ function action(mode, type, selection) {
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
if (status == 0) {
|
||||
if (cm.getParty() == null) {
|
||||
status = 10;
|
||||
cm.sendOk("#eÉ necessário criar um grupo antes de começar o Festival de Monstros!#k");
|
||||
} else if (!cm.isLeader()) {
|
||||
status = 10;
|
||||
cm.sendOk("Se você quer começar o Festival, avise o #blíder do grupo#k para falar comigo.");
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
var inMap = cm.partyMembersInMap();
|
||||
var lvlOk = 0;
|
||||
var isInMap = 0;
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
if (party.get(i).getLevel() >= minLvl && party.get(i).getLevel() <= maxLvl) {
|
||||
lvlOk++;
|
||||
|
||||
if (cm.getPlayer().getMapId() == 980000010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("Eu espero que voc<6F> tenha divertido na Folia dos Monstros!");
|
||||
} else if (status > 0) {
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (cm.getChar().getMap().isCPQLoserMap()) {
|
||||
if (status == 0) {
|
||||
if (cm.getChar().getParty() != null) {
|
||||
var shiu = "";
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shiu += "#rA#k";
|
||||
cm.sendOk("Infelizmente, voc<6F> ou empatou ou perdeu a batalha, apesar da sua excelente performance. A vit<69>ria pode ser sua da pr<70>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
rnk = 10;
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shiu += "#rB#k";
|
||||
rnk = 20;
|
||||
cm.sendOk("Infelizmente, voc<6F> ou empatou ou perdeu a batalha, mesmo com sua <20>tima performance. S<> mais um pouquinho, e a vit<69>ria poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shiu += "#rC#k";
|
||||
rnk = 30;
|
||||
cm.sendOk("Infelizmente, voc<6F> ou empatou ou perdeu a batalha. A vit<69>ria est<73> para aqueles que se esfor<6F>am. Vejo seus esfor<6F>os, ent<6E>o a vit<69>ria n<>o est<73> t<>o longe do seu alcance. Continue assim!\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else {
|
||||
shiu += "#rD#k";
|
||||
rnk = 40;
|
||||
cm.sendOk("Infelizmente, voc<6F> ou empatou ou perdeu a batalha, e sua performance claramente reflete nisso. Espero mais de voc<6F> da pr<70>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
}
|
||||
if (party.get(i).getPlayer().getMapId() != 980000000) {
|
||||
//isInMap = false;
|
||||
isInMap++
|
||||
}
|
||||
}
|
||||
|
||||
if (party >= 1) {
|
||||
status = 10;
|
||||
cm.sendOk("Você não tem número suficiente de pessoas em seu grupo. Você precisa de um grupo com #b" + minAmt + "#k - #r" + maxAmt + "#k membros e eles devem estar no mapa com você.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Certifique se todos em seu grupo estão dentre os níveis corretos (" + minLvl + "~" + maxLvl + ")!");
|
||||
} else if (isInMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("Existe alguém do grupo que não esta no mapa!");
|
||||
} else {
|
||||
cm.sendCPQMapLists();
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 1) {
|
||||
switch (rnk) {
|
||||
case 10:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(17500);
|
||||
cm.dispose();
|
||||
break;
|
||||
case 20:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(1200);
|
||||
cm.dispose();
|
||||
break;
|
||||
case 30:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(5000);
|
||||
cm.dispose();
|
||||
break;
|
||||
case 40:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(2500);
|
||||
cm.dispose();
|
||||
break;
|
||||
default:
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
|
||||
if (cm.fieldTaken(selection)) {
|
||||
if (cm.fieldLobbied(selection)) {
|
||||
cm.challengeParty(selection);
|
||||
cm.dispose();
|
||||
} else if (cm.getChar().getMap().isCPQWinnerMap()) {
|
||||
if (status == 0) {
|
||||
if (cm.getChar().getParty() != null) {
|
||||
var shi = "";
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shi += "#rA#k";
|
||||
rnk = 1;
|
||||
cm.sendOk("Parab<61>ns pela sua vit<69>ria!!! Que <20>tima performance! O grupo advers<72>rio n<>o p<>de fazer nada! Espero o mesmo bom trabalho da pr<70>xima vez!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Parab<61>ns pela sua vit<69>ria! Isso foi impressionante! Voc<6F> fez um bom trabalho contra o grupo advers<72>rio! S<> mais um pouco, e voc<6F> definitivamente vai conseguir um A na pr<70>xima vez. \r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Parab<61>ns pela sua vit<69>ria. Voc<6F> fez algumas coisas c<> e l<>, mas essa n<>o pode ser considerada uma boa vit<69>ria. Espero mais de ti da pr<70>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Parab<61>ns pela sua vit<69>ria, entretanto sua performance n<>o refletiu muito bem isso. Seja mais ativo na sua pr<70>xima participa<70><61>o da Folia de Monstros!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.sendOk("A sala esta cheia.");
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection === 0 || selection === 1 || selection === 2 || selection === 3) && party.size() < 2) {
|
||||
cm.sendOk("Você precisa de no mínimo 2 player para entrar na competição.");
|
||||
} else if ((selection === 4 || selection === 5) && party.size() < 3) {
|
||||
cm.sendOk("Você precisa de no mínimo 3 player para entrar na competição.");
|
||||
} else if (status == 1) {
|
||||
switch (rnk) {
|
||||
case 1:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(50000);
|
||||
cm.dispose();
|
||||
break;
|
||||
case 2:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(25500);
|
||||
cm.dispose();
|
||||
break;
|
||||
case 3:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(21000);
|
||||
cm.dispose();
|
||||
break;
|
||||
case 4:
|
||||
cm.warp(980000000, 0);
|
||||
cm.gainExp(19505);
|
||||
cm.dispose();
|
||||
break;
|
||||
default:
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (cm.getMapId() == cpqMap) { // only CPQ1
|
||||
if (status == 0) {
|
||||
if (cm.getParty() == null) {
|
||||
status = 10;
|
||||
cm.sendOk("#eÉ necessário criar um grupo antes de começar o Festival de Monstros!#k");
|
||||
} else if (!cm.isLeader()) {
|
||||
status = 10;
|
||||
cm.sendOk("Se você quer começar o Festival, avise o #blíder do grupo#k para falar comigo.");
|
||||
} else {
|
||||
cm.cpqLobby(selection);
|
||||
var party = cm.getParty().getMembers();
|
||||
var inMap = cm.partyMembersInMap();
|
||||
var lvlOk = 0;
|
||||
var isOutMap = 0;
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
if (party.get(i).getLevel() >= cpqMinLvl && party.get(i).getLevel() <= cpqMaxLvl) {
|
||||
lvlOk++;
|
||||
|
||||
if (party.get(i).getPlayer().getMapId() != cpqMap) {
|
||||
isOutMap++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (party >= 1) {
|
||||
status = 10;
|
||||
cm.sendOk("Você não tem número suficiente de pessoas em seu grupo. Você precisa de um grupo com #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k membros e eles devem estar no mapa com você.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Certifique se todos em seu grupo estão dentre os níveis corretos (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
} else if (isOutMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("Existe alguém do grupo que não esta no mapa!");
|
||||
} else {
|
||||
cm.sendCPQMapLists();
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
if (cm.fieldTaken(selection)) {
|
||||
if (cm.fieldLobbied(selection)) {
|
||||
cm.challengeParty(selection);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("A sala esta cheia.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection >= 0 && selection <= 3) && party.size() < 1) {
|
||||
cm.sendOk("Você precisa de no mínimo 2 player para entrar na competição.");
|
||||
} else if ((selection >= 4 && selection <= 5) && party.size() < 1) {
|
||||
cm.sendOk("Você precisa de no mínimo 3 player para entrar na competição.");
|
||||
} else {
|
||||
cm.cpqLobby(selection);
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 11) {
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
if (status == 0) {
|
||||
var talk = "O que gostaria de fazer? Se voc<6F> nunca participou da Folia de Monstros, voc<6F> precisar<61> saber de algumas coisas antes de participar.\r\n#b#L0# Ir para o campo da Folia de Monstros 1.#l\r\n#L3# Ir para o campo da Folia de Monstros 2.#l\r\n#L1# Aprender sobre a Folia de Monstros.#l\r\n#L2# Trocar #t4001129#.#l";
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
cm.sendSimple(talk);
|
||||
} else if (status == 1) {
|
||||
if (selection == 0) {
|
||||
if ((cm.getLevel() > 29 && cm.getLevel() < 51) || cm.getPlayer().isGM()) {
|
||||
cm.getChar().saveLocation("MONSTER_CARNIVAL");
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
return;
|
||||
} else if (cm.getLevel() < 30) {
|
||||
cm.sendOk("Voc<6F> precisa ser no m<>nimo n<>vel 30 para participar da Folia de Monstros. Fale comigo quando for forte o bastante.");
|
||||
cm.dispose();
|
||||
return;
|
||||
} else {
|
||||
cm.sendOk("Sinto muito, mas apenas os jogadores de n<>vel 30~50 podem participar da Folia de Monstros.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
} else if (selection == 1) {
|
||||
status = 60;
|
||||
cm.sendSimple("O que gostaria de fazer?\r\n#b#L0# O que <20> a Folia de Monstros?#l\r\n#L1# Vis<69>o geral sobre a Folia de Monstros#l\r\n#L2# Informa<6D><61>es detalhadas sobre a Folia de Monstros#l\r\n#L3# Nada, de verdade. Mudei de ideia.#l");
|
||||
} else if (selection == 2) {
|
||||
cm.sendSimple("Lembre-se se voc<6F> possui #t4001129#, voc<6F> pode troc<6F>-las por itens. Tenha certeza que voc<6F> possui #t4001129# suficientes para o item que voc<6F> deseja. Selecione o item que voc<6F> gostaria de troc<6F>-las! \r\n#b#L0# #t1122007#(" + n1 + " moedas)#l\r\n#L1# #t2041211#(" + n2 + " moedas)#l\r\n#L2# Armas para Guerreiros#l\r\n#L3# Armas para Bruxos#l\r\n#L4# Armas para Arqueiros#l\r\n#L5# Armas para Gatunos#l");
|
||||
} else if (selection == 3) {
|
||||
cm.getChar().saveLocation("MONSTER_CARNIVAL");
|
||||
cm.warp(980030000, 0);
|
||||
cm.dispose();
|
||||
return;
|
||||
} else if (selection == 4) {
|
||||
var selStr = "Very well, instead I offer a steadfast #bore refining#k service for you, taxing #r" + ((feeMultiplier * 100) | 0) + "%#k over the usual fee to synthetize them. What will you do?#b";
|
||||
|
||||
var options = new Array("Refine mineral ores","Refine jewel ores");
|
||||
if(refineCrystals) {
|
||||
options.push("Refine crystal ores");
|
||||
}
|
||||
if(refineRocks) {
|
||||
options.push("Refine plates/jewels");
|
||||
}
|
||||
|
||||
for (var i = 0; i < options.length; i++){
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
|
||||
cm.sendSimple(selStr);
|
||||
|
||||
status = 76;
|
||||
}
|
||||
} else if (status == 2) {
|
||||
select = selection;
|
||||
if (select == 0) {
|
||||
if (cm.haveItem(4001129, n1) && cm.canHold(4001129)) {
|
||||
cm.gainItem(1122007, 1);
|
||||
cm.gainItem(4001129, -n1);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Verifique e veja se est<73>o faltando #b#t4001129##k ou se seu invent<6E>rio de Equipamentos est<73> cheio.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 1) {
|
||||
if (cm.haveItem(4001129, n2) && cm.canHold(2041211)) {
|
||||
cm.gainItem(2041211, 1);
|
||||
cm.gainItem(4001129, -n2);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Verifique e veja se est<73>o faltando #b#t4001129##k ou se seu invent<6E>rio de Uso est<73> cheio.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 2) {//S2 Warrior 26 S3 Magician 6 S4 Bowman 6 S5 Thief 8
|
||||
status = 10;
|
||||
cm.sendSimple("Por favor tenha certeza que voc<6F> possui #t4001129# para a arma que voc<6F> deseja. Selecione a arma que voc<6F> gostaria de trocar #t4001129# por. As op<6F><70>es que tenho s<>o realmente boas, e eu n<>o sou eu que falo <20> o povo que diz! \r\n#b#L0# #z1302004#(" + n3 + " moedas)#l\r\n#L1# #z1402006#(" + n3 + " moedas)#l\r\n#L2# #z1302009#(" + n4 + " moedas)#l\r\n#L3# #z1402007#(" + n4 + " moedas)#l\r\n#L4# #z1302010#(" + n5 + " moedas)#l\r\n#L5# #z1402003#(" + n5 + " moedas)#l\r\n#L6# #z1312006#(" + n3 + " moedas)#l\r\n#L7# #z1412004#(" + n3 + " moedas)#l\r\n#L8# #z1312007#(" + n4 + " moedas)#l\r\n#L9# #z1412005#(" + n4 + " moedas)#l\r\n#L10# #z1312008#(" + n5 + " moedas)#l\r\n#L11# #z1412003#(" + n5 + " moedas)#l\r\n#L12# Ir para a pr<70>xima p<>gina(1/2)#l");
|
||||
} else if (select == 3) {
|
||||
status = 20;
|
||||
cm.sendSimple("Selecione a arma que voc<6F> gostaria de trocar. As armas que eu tenho aqui s<>o extremamente atraentes. Veja voc<6F> mesmo! \r\n#b#L0# #z1372001#(" + n3 + " moedas)#l\r\n#L1# #z1382018#(" + n3 + " moedas)#l\r\n#L2# #z1372012#(" + n4 + "moedas)#l\r\n#L3# #z1382019#(" + n4 + "moedas)#l\r\n#L4# #z1382001#(" + n5 + " moedas)#l\r\n#L5# #z1372007#(" + n5 + " moedas)#l");
|
||||
} else if (select == 4) {
|
||||
status = 30;
|
||||
cm.sendSimple("Selecione a arma que voc<6F> gostaria de trocar. As armas que eu tenho aqui s<>o extremamente atraentes. Veja voc<6F> mesmo! \r\n#b#L0# #z1452006#(" + n3 + " moedas)#l\r\n#L1# #z1452007#(" + n4 + " moedas)#l\r\n#L2# #z1452008#(" + n5 + " moedas)#l\r\n#L3# #z1462005#(" + n3 + " moedas)#l\r\n#L4# #z1462006#(" + n4 + " moedas)#l\r\n#L5# #z1462007#(" + n5 + " moedas)#l");
|
||||
} else if (select == 5) {
|
||||
status = 40;
|
||||
cm.sendSimple("Selecione a arma que voc<6F> gostaria de trocar por. As armas que eu tenho s<>o da maior qualidade. Seleciona a mais atraente para voc<6F>! \r\n#b#L0# #z1472013#(" + n3 + " moedas)#l\r\n#L1# #z1472017#(" + n4 + "moedas)#l\r\n#L2# #z1472021#(" + n5 + " moedas)#l\r\n#L3# #z1332014#(" + n3 + " moedas)#l\r\n#L4# #z1332031#(" + n4 + "moedas)#l\r\n#L5# #z1332011#(" + n4 + "moedas)#l\r\n#L6# #z1332016#(" + n5 + " moedas)#l\r\n#L7# #z1332003#(" + n5 + " moedas)#l");
|
||||
}
|
||||
} else if (status == 11) {
|
||||
if (selection == 12) {
|
||||
cm.sendSimple("Selecione a arma que voc<6F> gostaria de trocar. As armas que eu tenho aqui s<>o extremamente <20>teis. D<> uma olhada! \r\n#b#L0# #z1322015#(" + n3 + " moedas)#l\r\n#L1# #z1422008#(" + n3 + " moedas)#l\r\n#L2# #z1322016#(" + n4 + "moedas)#l\r\n#L3# #z1422007#(" + n4 + "moedas)#l\r\n#L4# #z1322017#(" + n5 + " moedas)#l\r\n#L5# #z1422005#(" + n5 + " moedas)#l\r\n#L6# #z1432003#(" + n3 + " moedas)#l\r\n#L7# #z1442003#(" + n3 + " moedas)#l\r\n#L8# #z1432005#(" + n4 + "moedas)#l\r\n#L9# #z1442009#(" + n4 + "moedas)#l\r\n#L10# #z1442005#(" + n5 + " moedas)#l\r\n#L11# #z1432004#(" + n5 + " moedas)#l\r\n#L12# Voltar para a p<>gina inicial(2/2)#l");
|
||||
} else {
|
||||
var item = new Array(1302004, 1402006, 1302009, 1402007, 1302010, 1402003, 1312006, 1412004, 1312007, 1412005, 1312008, 1412003);
|
||||
var cost = new Array(n3, n3, n4, n4, n5, n5, n3, n3, n4, n4, n5);
|
||||
if (cm.haveItem(4001129, cost[selection]) && cm.canHold(item[selection])) {
|
||||
cm.gainItem(item[selection], 1);
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Voc<6F> ou n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
} else if (status == 12) {
|
||||
if (selection == 12) {
|
||||
status = 10;
|
||||
cm.sendSimple("Por favor tenha certeza que voc<6F> possui #t4001129# para a arma que voc<6F> deseja. Selecione a arma que voc<6F> gostaria de trocar #t4001129# por. As op<6F><70>es que tenho s<>o realmente boas, e eu n<>o sou eu que falo <20> o povo que diz! \r\n#b#L0# #z1302004#(" + n3 + " moedas)#l\r\n#L1# #z1402006#(" + n3 + " moedas)#l\r\n#L2# #z1302009#(" + n4 + " moedas)#l\r\n#L3# #z1402007#(" + n4 + " moedas)#l\r\n#L4# #z1302010#(" + n5 + " moedas)#l\r\n#L5# #z1402003#(" + n5 + " moedas)#l\r\n#L6# #z1312006#(" + n3 + " moedas)#l\r\n#L7# #z1412004#(" + n3 + " moedas)#l\r\n#L8# #z1312007#(" + n4 + " moedas)#l\r\n#L9# #z1412005#(" + n4 + " moedas)#l\r\n#L10# #z1312008#(" + n5 + " moedas)#l\r\n#L11# #z1412003#(" + n5 + " moedas)#l\r\n#L12# Ir para a pr<70>xima p<>gina(1/2)#l");
|
||||
} else {
|
||||
var item = new Array(1322015, 1422008, 1322016, 1422007, 1322017, 1422005, 1432003, 1442003, 1432005, 1442009, 1442005, 1432004);
|
||||
var cost = new Array(n3, n3, n4, n4, n5, n5, n3, n3, n4, n4, n5, n5);
|
||||
if (cm.haveItem(4001129, cost[selection]) && cm.canHold(item[selection])) {
|
||||
cm.gainItem(item[selection], 1);
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Voc<6F> ou n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
} else if (status == 21) {
|
||||
var item = new Array(1372001, 1382018, 1372012, 1382019, 1382001, 1372007);
|
||||
var cost = new Array(n3, n3, n4, n4, n5, n5);
|
||||
if (cm.haveItem(4001129, cost[selection]) && cm.canHold(item[selection])) {
|
||||
cm.gainItem(item[selection], 1);
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Ou voc<6F> n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 31) {
|
||||
var item = new Array(1452006, 1452007, 1452008, 1462005, 1462006, 1462007);
|
||||
var cost = new Array(n3, n4, n5, n3, n4, n5);
|
||||
if (cm.haveItem(4001129, cost[selection]) && cm.canHold(item[selection])) {
|
||||
cm.gainItem(item[selection], 1);
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Ou voc<6F> n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 41) {
|
||||
var item = new Array(1472013, 1472017, 1472021, 1332014, 1332031, 1332011, 1332016, 1332003);
|
||||
var cost = new Array(n3, n4, n5, n3, n4, n4, n5, n5);
|
||||
if (cm.haveItem(4001129, cost[selection]) && cm.canHold(item[selection])) {
|
||||
cm.gainItem(item[selection], 1);
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Ou voc<6F> n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 61) {
|
||||
select = selection;
|
||||
if (selection == 0) {
|
||||
cm.sendNext("Haha! Eu sou Spiegelmann, o l<>der dessa Folia. Eu comecei a primeira #bFolia de Monstros#k aqui, aguardando por viajantes como voc<6F> para participar dessa extravaganza!");
|
||||
} else if (selection == 1) {
|
||||
cm.sendNext("#bFolia de Monstros#k consiste em 2 grupos entrando no campo de batalha, e ca<63>ando os monstros invocados pelo outro grupo. <20> uma #bmiss<73>o de combate que determina o vitorioso pela quantia de Pontos de Folia (CP) recebidos#k.");
|
||||
} else if (selection == 2) {
|
||||
cm.sendNext("Quando entrar no Campo da Folia, voc<6F> ver<65> a janela da Folia de Monstros aparecer. Tudo que precisa fazer <20> #bselecionar o que voc<6F>e quer usar, e pressionar OK#k. Muito f<>cil, n<>?");
|
||||
} else {
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 62) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("O que <20> a #bFolia de Monstros#k? Hahaha! Vamos dizer que <20> uma experi<72>ncia que jamais esquecer<65>! <20> uma #bbatalha contra outros viajantes assim como voc<6F>!#k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Quando entrar no Campo da Folia, sua tarefa <20> #breceber CP ca<63>ando os monstros do grupo oposto, e usar estes CP's para distrair o grupo oposto de ca<63>ar monstros.#k.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("Assim que se acostumar com os comandos, tente usar #bas teclas TAB e F1 ~ F12#k. #bTAB alterna entre Invoca<63><61>o de Monstros/Habilidades/Protetor,#k e, #bF1~ F12 possibilita-o de acessar uma das janelas diretamente#k.");
|
||||
}
|
||||
} else if (status == 63) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("Eu sei que <20> muito perigoso para voc<6F>s lutarem uns com os outros usando armas de verdade; e eu n<>o sugeriria um ato t<>o barb<72>rico. N<>o meu amigo, o que eu ofere<72>o <20> competi<74><69>o. A emo<6D><6F>o da batalha e a emo<6D><6F>o de competir contra pessoas t<>o fortes e motivadas. Eu ofere<72>o a premissa de que seu grupo e o grupo oposto ambos #binvoquem os monstros, e derrote os monstros invocados pelo grupo advers<72>rio. Essa <20> a ess<73>ncia da Folia de Monstros. Al<41>m disso, voc<6F> pode usar Maple Coins ganhos durante a Folia de Monstros para obter novos itens e armas! #k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Existem 3 maneiras de distrair o grupo advers<72>rio: #bInvodar um monstro, Habilidade, and Protetor#k. Vou dar-lhe um olhar mais aprofundado, se voc<6F> quiser saber mais sobre 'Instru<72><75>es detalhadas'.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bInvocar um Monstro#k chama um monstro que ataca o grupo advers<72>rio, sob seu controle. Use CP para trazer um Monstro Invocado, e ele ir<69> aparecer na mesma <20>rea, atacando o grupo oposto.");
|
||||
}
|
||||
} else if (status == 64) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("Claro, n<>o <20> t<>o simples assim. Existem outras maneiras de prevenir o outro grupo de ca<63>ar monstros, e cabe a voc<6F> descobrir como faz<61>-lo. O que acha? Interessado em uma competi<74><69>o amig<69>vel?");
|
||||
cm.dispose();
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Por favor lembre-se. Nunca <20> uma boa ideia guardar seus CP's. #bOs CP's que voc<6F> usou ir<69>o ajudar a determinar o vencedor e o perdedor da Folia.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bHabilidade#k <20> uma op<6F><70>o de usar habilidades tais como Escurid<69>o, Fraqueza, e outras para prevenir o grupo oposto de matar outros monstros. S<>o necess<73>rios muitos CP's, mas vale muito a pena. O <20>nico problema <20> que eles n<>o duram muito. Use essa t<>tica com sabedoria!");
|
||||
}
|
||||
} else if (status == 65) {
|
||||
if (select == 1) {
|
||||
cm.sendNext("Oh, e n<>o se preocupe em tranformar-se em um fantasma. Na Folia de Monstros, #bvoc<6F> n<>o perder<65> EXP ap<61>s a morte#k. <20> realmente uma exper<65>ncia como nenhuma outra!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k <20> basicamente um item invocado que aumenta dr<64>sticamente as habilidades dos monstros invocados pelo seu grupo. Protetor funciona enquanto n<>o for demolido pelo grupo oposto, ent<6E>o eu surigo que voc<6F> invoque v<>rios monstros primeiro, e ent<6E>o traga o Protetor.");
|
||||
}
|
||||
} else if (status == 66) {
|
||||
cm.sendNext("Por <20>ltimo, enquanto estiver na Folia de Monstros, #bvoc<6F> n<>o pode usar items/po<70><6F>es de recupera<72><61>o que voc<6F> leva por ai contigo.#k Entretanto, os monstros deixam esses items cair de vez em quando, e #bassim que peg<65>-los, o item ativar<61> imediatamente#k. <20> por isso que <20> importante saber quando pegar estes items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
if (selection == 0) {
|
||||
allDone = refineItems(0); // minerals
|
||||
} else if (selection == 1) {
|
||||
allDone = refineItems(1); // jewels
|
||||
} else if (selection == 2 && refineCrystals) {
|
||||
allDone = refineItems(2); // crystals
|
||||
} else if (selection == 2 && !refineCrystals || selection == 3) {
|
||||
allDone = refineRockItems(); // moon/star rock
|
||||
}
|
||||
|
||||
if(allDone) {
|
||||
cm.sendOk("Done. Thanks for showing up~.");
|
||||
} else {
|
||||
cm.sendOk("Done. Be aware some of the items #rcould not be synthetized#k because either you have a lack of space on your ETC inventory or there's not enough mesos to cover the fee.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 11) {
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getRefineFee(fee) {
|
||||
return ((feeMultiplier * fee) | 0);
|
||||
}
|
||||
|
||||
function isRefineTarget(refineType, refineItemid) {
|
||||
if(refineType == 0) { //mineral refine
|
||||
return refineItemid >= 4010000 && refineItemid <= 4010007 && !(refineItemid == 4010007 && !refineSpecials);
|
||||
} else if(refineType == 1) { //jewel refine
|
||||
return refineItemid >= 4020000 && refineItemid <= 4020008 && !(refineItemid == 4020008 && !refineSpecials);
|
||||
} else if(refineType == 2) { //crystal refine
|
||||
return refineItemid >= 4004000 && refineItemid <= 4004004 && !(refineItemid == 4004004 && !refineSpecials);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getRockRefineTarget(refineItemid) {
|
||||
if(refineItemid >= 4011000 && refineItemid <= 4011006) {
|
||||
return 0;
|
||||
} else if(refineItemid >= 4021000 && refineItemid <= 4021008) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function refineItems(refineType) {
|
||||
var allDone = true;
|
||||
|
||||
var refineFees = [[300,300,300,500,500,500,800,270],[500,500,500,500,500,500,500,1000,3000],[5000,5000,5000,5000,1000000]];
|
||||
var itemCount = {};
|
||||
|
||||
var iter = cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
|
||||
if(isRefineTarget(refineType, itemid)) {
|
||||
var ic = itemCount[itemid];
|
||||
|
||||
if(ic != undefined) {
|
||||
itemCount[itemid] += it.getQuantity();
|
||||
} else {
|
||||
itemCount[itemid] = it.getQuantity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(var key in itemCount) {
|
||||
var itemqty = itemCount[key];
|
||||
var itemid = parseInt(key);
|
||||
|
||||
var refineQty = ((itemqty / 10) | 0);
|
||||
if(refineQty <= 0) continue;
|
||||
|
||||
while(true) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if(cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
break;
|
||||
} else if(refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
function refineRockItems() {
|
||||
var allDone = true;
|
||||
var minItems = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
|
||||
var minRocks = [2147483647, 2147483647];
|
||||
|
||||
var rockItems = [4011007, 4021009];
|
||||
var rockFees = [10000, 15000];
|
||||
|
||||
var iter = cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
var rockRefine = getRockRefineTarget(itemid);
|
||||
if(rockRefine >= 0) {
|
||||
var rockItem = ((itemid % 100) | 0);
|
||||
var itemqty = it.getQuantity();
|
||||
|
||||
minItems[rockRefine][rockItem] += itemqty;
|
||||
}
|
||||
}
|
||||
|
||||
for(var i = 0; i < minRocks.length; i++) {
|
||||
for(var j = 0; j < minItems[i].length; j++) {
|
||||
if(minRocks[i] > minItems[i][j]) {
|
||||
minRocks[i] = minItems[i][j];
|
||||
}
|
||||
}
|
||||
if(minRocks[i] <= 0 || minRocks[i] == 2147483647) continue;
|
||||
|
||||
var refineQty = minRocks[i];
|
||||
while(true) {
|
||||
var fee = getRefineFee(rockFees[i] * refineQty);
|
||||
if(cm.canHold(rockItems[i], refineQty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
|
||||
var j;
|
||||
if(i == 0) {
|
||||
for(j = 4011000; j < 4011007; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
} else {
|
||||
for(j = 4021000; j < 4021009; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
}
|
||||
|
||||
break;
|
||||
} else if(refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
importPackage(Packages.server.maps);
|
||||
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
@@ -8,6 +7,12 @@ var n3 = 7; //35
|
||||
var n4 = 10; //40
|
||||
var n5 = 20; //50
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
var refineRocks = true; // enables moon rock, star rock
|
||||
var refineCrystals = true; // enables common crystals
|
||||
var refineSpecials = true; // enables lithium, special crystals
|
||||
var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
@@ -25,9 +30,10 @@ function action(mode, type, selection) {
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (cm.getPlayer().getMapId() == 980000010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("Eu espero que você tinha divertido na Folia dos Monstros!");
|
||||
cm.sendNext("Eu espero que voc<EFBFBD> tenha divertido na Folia dos Monstros!");
|
||||
} else if (status > 0) {
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
@@ -36,22 +42,22 @@ function action(mode, type, selection) {
|
||||
if (status == 0) {
|
||||
if (cm.getChar().getParty() != null) {
|
||||
var shiu = "";
|
||||
if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shiu += "#rA#k";
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha, apesar da sua excelente performance. A vitória pode ser sua da próxima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha, apesar da sua excelente performance. A vit<EFBFBD>ria pode ser sua da pr<EFBFBD>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
rnk = 10;
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50 && cm.getPlayer().getFestivalPoints() < 100) {
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shiu += "#rB#k";
|
||||
rnk = 20;
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha, mesmo com sua ótima performance. Só mais um pouquinho, e a vitória poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 30 && cm.getPlayer().getFestivalPoints() < 50) {
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha, mesmo com sua <EFBFBD>tima performance. S<EFBFBD> mais um pouquinho, e a vit<EFBFBD>ria poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shiu += "#rC#k";
|
||||
rnk = 30;
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha. A vitória está para aqueles que se esforçam. Vejo seus esforços, então a vitória não está tão longe do seu alcance. Continue assim!\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha. A vit<EFBFBD>ria est<EFBFBD> para aqueles que se esfor<EFBFBD>am. Vejo seus esfor<EFBFBD>os, ent<EFBFBD>o a vit<EFBFBD>ria n<EFBFBD>o est<EFBFBD> t<EFBFBD>o longe do seu alcance. Continue assim!\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else {
|
||||
shiu += "#rD#k";
|
||||
rnk = 40;
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha, e sua performance claramente reflete nisso. Espero mais de você da próxima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha, e sua performance claramente reflete nisso. Espero mais de voc<EFBFBD> da pr<EFBFBD>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
@@ -92,19 +98,19 @@ function action(mode, type, selection) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shi += "#rA#k";
|
||||
rnk = 1;
|
||||
cm.sendOk("Parabéns pela sua vitória!!! Que ótima performance! O grupo adversário não pôde fazer nada! Espero o mesmo bom trabalho da próxima vez!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100 && cm.getPlayer().getFestivalPoints() < 300) {
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria!!! Que <EFBFBD>tima performance! O grupo advers<EFBFBD>rio n<EFBFBD>o p<EFBFBD>de fazer nada! Espero o mesmo bom trabalho da pr<EFBFBD>xima vez!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Parabéns pela sua vitória! Isso foi impressionante! Você fez um bom trabalho contra o grupo adversário! Só mais um pouco, e você definitivamente vai conseguir um A na próxima vez. \r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50 && cm.getPlayer().getFestivalPoints() < 100) {
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria! Isso foi impressionante! Voc<EFBFBD> fez um bom trabalho contra o grupo advers<EFBFBD>rio! S<EFBFBD> mais um pouco, e voc<EFBFBD> definitivamente vai conseguir um A na pr<EFBFBD>xima vez. \r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Parabéns pela sua vitória. Você fez algumas coisas cá e lá, mas essa não pode ser considerada uma boa vitória. Espero mais de ti da próxima vez.\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria. Voc<EFBFBD> fez algumas coisas c<EFBFBD> e l<EFBFBD>, mas essa n<EFBFBD>o pode ser considerada uma boa vit<EFBFBD>ria. Espero mais de ti da pr<EFBFBD>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Parabéns pela sua vitória, entretanto sua performance não refletiu muito bem isso. Seja mais ativo na sua próxima participação da Folia de Monstros!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria, entretanto sua performance n<EFBFBD>o refletiu muito bem isso. Seja mais ativo na sua pr<EFBFBD>xima participa<EFBFBD><EFBFBD>o da Folia de Monstros!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
@@ -140,8 +146,11 @@ function action(mode, type, selection) {
|
||||
}
|
||||
} else {
|
||||
if (status == 0) {
|
||||
// cm.sendSimple("O que gostaria de fazer? Se você nunca participou da Folia de Monstros, você precisará saber de algumas coisas antes de participar.\r\n#b#L0# Ir para o campo da Folia de Monstros 1.#l\r\n#L1# Aprender sobre a Folia de Monstros.#l\r\n#L2# Trocar #t4001129#.#l");
|
||||
cm.sendSimple("O que gostaria de fazer? Se você nunca participou da Folia de Monstros, você precisará saber de algumas coisas antes de participar.\r\n#b#L0# Ir para o campo da Folia de Monstros 1.#l\r\n#L3# Ir para o campo da Folia de Monstros 2.#l\r\n#L1# Aprender sobre a Folia de Monstros.#l\r\n#L2# Trocar #t4001129#.#l");
|
||||
var talk = "O que gostaria de fazer? Se voc<EFBFBD> nunca participou da Folia de Monstros, voc<EFBFBD> precisar<EFBFBD> saber de algumas coisas antes de participar.\r\n#b#L0# Ir para o campo da Folia de Monstros 1.#l\r\n#L3# Ir para o campo da Folia de Monstros 2.#l\r\n#L1# Aprender sobre a Folia de Monstros.#l\r\n#L2# Trocar #t4001129#.#l";
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
cm.sendSimple(talk);
|
||||
} else if (status == 1) {
|
||||
if (selection == 0) {
|
||||
if ((cm.getLevel() > 29 && cm.getLevel() < 51) || cm.getPlayer().isGM()) {
|
||||
@@ -150,26 +159,43 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
} else if (cm.getLevel() < 30) {
|
||||
cm.sendOk("Você precisa ser no mínimo nível 30 para participar da Folia de Monstros. Fale comigo quando for forte o bastante.");
|
||||
cm.sendOk("Voc<EFBFBD> precisa ser no m<EFBFBD>nimo n<EFBFBD>vel 30 para participar da Folia de Monstros. Fale comigo quando for forte o bastante.");
|
||||
cm.dispose();
|
||||
return;
|
||||
} else {
|
||||
cm.sendOk("Sinto muito, mas apenas os jogadores de nível 30~50 podem participar da Folia de Monstros.");
|
||||
cm.sendOk("Sinto muito, mas apenas os jogadores de n<EFBFBD>vel 30~50 podem participar da Folia de Monstros.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
} else if (selection == 1) {
|
||||
status = 60;
|
||||
cm.sendSimple("O que gostaria de fazer?\r\n#b#L0# O que é a Folia de Monstros?#l\r\n#L1# Visão geral sobre a Folia de Monstros#l\r\n#L2# Informações detalhadas sobre a Folia de Monstros#l\r\n#L3# Nada, de verdade. Mudei de ideia.#l");
|
||||
cm.sendSimple("O que gostaria de fazer?\r\n#b#L0# O que <EFBFBD> a Folia de Monstros?#l\r\n#L1# Vis<EFBFBD>o geral sobre a Folia de Monstros#l\r\n#L2# Informa<EFBFBD><EFBFBD>es detalhadas sobre a Folia de Monstros#l\r\n#L3# Nada, de verdade. Mudei de ideia.#l");
|
||||
} else if (selection == 2) {
|
||||
cm.sendSimple("Lembre-se se você possui #t4001129#, você pode trocá-las por itens. Tenha certeza que você possui #t4001129# suficientes para o item que você deseja. Selecione o item que você gostaria de trocá-las! \r\n#b#L0# #t1122007#(" + n1 + " moedas)#l\r\n#L1# #t2041211#(" + n2 + " moedas)#l\r\n#L2# Armas para Guerreiros#l\r\n#L3# Armas para Bruxos#l\r\n#L4# Armas para Arqueiros#l\r\n#L5# Armas para Gatunos#l");
|
||||
cm.sendSimple("Lembre-se se voc<EFBFBD> possui #t4001129#, voc<EFBFBD> pode troc<EFBFBD>-las por itens. Tenha certeza que voc<EFBFBD> possui #t4001129# suficientes para o item que voc<EFBFBD> deseja. Selecione o item que voc<EFBFBD> gostaria de troc<EFBFBD>-las! \r\n#b#L0# #t1122007#(" + n1 + " moedas)#l\r\n#L1# #t2041211#(" + n2 + " moedas)#l\r\n#L2# Armas para Guerreiros#l\r\n#L3# Armas para Bruxos#l\r\n#L4# Armas para Arqueiros#l\r\n#L5# Armas para Gatunos#l");
|
||||
} else if (selection == 3) {
|
||||
cm.getChar().saveLocation("MONSTER_CARNIVAL");
|
||||
cm.warp(980030000, 0);
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
} else if (selection == 4) {
|
||||
var selStr = "Very well, instead I offer a steadfast #bore refining#k service for you, taxing #r" + ((feeMultiplier * 100) | 0) + "%#k over the usual fee to synthetize them. What will you do?#b";
|
||||
|
||||
var options = new Array("Refine mineral ores","Refine jewel ores");
|
||||
if(refineCrystals) {
|
||||
options.push("Refine crystal ores");
|
||||
}
|
||||
if(refineRocks) {
|
||||
options.push("Refine plates/jewels");
|
||||
}
|
||||
|
||||
for (var i = 0; i < options.length; i++){
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
|
||||
cm.sendSimple(selStr);
|
||||
|
||||
status = 76;
|
||||
}
|
||||
} else if (status == 2) {
|
||||
select = selection;
|
||||
if (select == 0) {
|
||||
@@ -178,7 +204,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -n1);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Verifique e veja se estão faltando #b#t4001129##k ou se seu inventário de Equipamentos está cheio.");
|
||||
cm.sendOk("Verifique e veja se est<EFBFBD>o faltando #b#t4001129##k ou se seu invent<EFBFBD>rio de Equipamentos est<EFBFBD> cheio.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 1) {
|
||||
@@ -187,25 +213,25 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -n2);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Verifique e veja se estão faltando #b#t4001129##k ou se seu inventário de Uso está cheio.");
|
||||
cm.sendOk("Verifique e veja se est<EFBFBD>o faltando #b#t4001129##k ou se seu invent<EFBFBD>rio de Uso est<EFBFBD> cheio.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 2) {//S2 Warrior 26 S3 Magician 6 S4 Bowman 6 S5 Thief 8
|
||||
status = 10;
|
||||
cm.sendSimple("Por favor tenha certeza que você possui #t4001129# para a arma que você deseja. Selecione a arma que você gostaria de trocar #t4001129# por. As opções que tenho são realmente boas, e eu não sou eu que falo é o povo que diz! \r\n#b#L0# #z1302004#(" + n3 + " moedas)#l\r\n#L1# #z1402006#(" + n3 + " moedas)#l\r\n#L2# #z1302009#(" + n4 + " moedas)#l\r\n#L3# #z1402007#(" + n4 + " moedas)#l\r\n#L4# #z1302010#(" + n5 + " moedas)#l\r\n#L5# #z1402003#(" + n5 + " moedas)#l\r\n#L6# #z1312006#(" + n3 + " moedas)#l\r\n#L7# #z1412004#(" + n3 + " moedas)#l\r\n#L8# #z1312007#(" + n4 + " moedas)#l\r\n#L9# #z1412005#(" + n4 + " moedas)#l\r\n#L10# #z1312008#(" + n5 + " moedas)#l\r\n#L11# #z1412003#(" + n5 + " moedas)#l\r\n#L12# Ir para a próxima página(1/2)#l");
|
||||
cm.sendSimple("Por favor tenha certeza que voc<EFBFBD> possui #t4001129# para a arma que voc<EFBFBD> deseja. Selecione a arma que voc<EFBFBD> gostaria de trocar #t4001129# por. As op<EFBFBD><EFBFBD>es que tenho s<EFBFBD>o realmente boas, e eu n<EFBFBD>o sou eu que falo <EFBFBD> o povo que diz! \r\n#b#L0# #z1302004#(" + n3 + " moedas)#l\r\n#L1# #z1402006#(" + n3 + " moedas)#l\r\n#L2# #z1302009#(" + n4 + " moedas)#l\r\n#L3# #z1402007#(" + n4 + " moedas)#l\r\n#L4# #z1302010#(" + n5 + " moedas)#l\r\n#L5# #z1402003#(" + n5 + " moedas)#l\r\n#L6# #z1312006#(" + n3 + " moedas)#l\r\n#L7# #z1412004#(" + n3 + " moedas)#l\r\n#L8# #z1312007#(" + n4 + " moedas)#l\r\n#L9# #z1412005#(" + n4 + " moedas)#l\r\n#L10# #z1312008#(" + n5 + " moedas)#l\r\n#L11# #z1412003#(" + n5 + " moedas)#l\r\n#L12# Ir para a pr<EFBFBD>xima p<EFBFBD>gina(1/2)#l");
|
||||
} else if (select == 3) {
|
||||
status = 20;
|
||||
cm.sendSimple("Selecione a arma que você gostaria de trocar. As armas que eu tenho aqui são extremamente atraentes. Veja você mesmo! \r\n#b#L0# #z1372001#(" + n3 + " moedas)#l\r\n#L1# #z1382018#(" + n3 + " moedas)#l\r\n#L2# #z1372012#(" + n4 + "moedas)#l\r\n#L3# #z1382019#(" + n4 + "moedas)#l\r\n#L4# #z1382001#(" + n5 + " moedas)#l\r\n#L5# #z1372007#(" + n5 + " moedas)#l");
|
||||
cm.sendSimple("Selecione a arma que voc<EFBFBD> gostaria de trocar. As armas que eu tenho aqui s<EFBFBD>o extremamente atraentes. Veja voc<EFBFBD> mesmo! \r\n#b#L0# #z1372001#(" + n3 + " moedas)#l\r\n#L1# #z1382018#(" + n3 + " moedas)#l\r\n#L2# #z1372012#(" + n4 + "moedas)#l\r\n#L3# #z1382019#(" + n4 + "moedas)#l\r\n#L4# #z1382001#(" + n5 + " moedas)#l\r\n#L5# #z1372007#(" + n5 + " moedas)#l");
|
||||
} else if (select == 4) {
|
||||
status = 30;
|
||||
cm.sendSimple("Selecione a arma que você gostaria de trocar. As armas que eu tenho aqui são extremamente atraentes. Veja você mesmo! \r\n#b#L0# #z1452006#(" + n3 + " moedas)#l\r\n#L1# #z1452007#(" + n4 + " moedas)#l\r\n#L2# #z1452008#(" + n5 + " moedas)#l\r\n#L3# #z1462005#(" + n3 + " moedas)#l\r\n#L4# #z1462006#(" + n4 + " moedas)#l\r\n#L5# #z1462007#(" + n5 + " moedas)#l");
|
||||
cm.sendSimple("Selecione a arma que voc<EFBFBD> gostaria de trocar. As armas que eu tenho aqui s<EFBFBD>o extremamente atraentes. Veja voc<EFBFBD> mesmo! \r\n#b#L0# #z1452006#(" + n3 + " moedas)#l\r\n#L1# #z1452007#(" + n4 + " moedas)#l\r\n#L2# #z1452008#(" + n5 + " moedas)#l\r\n#L3# #z1462005#(" + n3 + " moedas)#l\r\n#L4# #z1462006#(" + n4 + " moedas)#l\r\n#L5# #z1462007#(" + n5 + " moedas)#l");
|
||||
} else if (select == 5) {
|
||||
status = 40;
|
||||
cm.sendSimple("Selecione a arma que você gostaria de trocar por. As armas que eu tenho são da maior qualidade. Seleciona a mais atraente para você! \r\n#b#L0# #z1472013#(" + n3 + " moedas)#l\r\n#L1# #z1472017#(" + n4 + "moedas)#l\r\n#L2# #z1472021#(" + n5 + " moedas)#l\r\n#L3# #z1332014#(" + n3 + " moedas)#l\r\n#L4# #z1332031#(" + n4 + "moedas)#l\r\n#L5# #z1332011#(" + n4 + "moedas)#l\r\n#L6# #z1332016#(" + n5 + " moedas)#l\r\n#L7# #z1332003#(" + n5 + " moedas)#l");
|
||||
cm.sendSimple("Selecione a arma que voc<EFBFBD> gostaria de trocar por. As armas que eu tenho s<EFBFBD>o da maior qualidade. Seleciona a mais atraente para voc<EFBFBD>! \r\n#b#L0# #z1472013#(" + n3 + " moedas)#l\r\n#L1# #z1472017#(" + n4 + "moedas)#l\r\n#L2# #z1472021#(" + n5 + " moedas)#l\r\n#L3# #z1332014#(" + n3 + " moedas)#l\r\n#L4# #z1332031#(" + n4 + "moedas)#l\r\n#L5# #z1332011#(" + n4 + "moedas)#l\r\n#L6# #z1332016#(" + n5 + " moedas)#l\r\n#L7# #z1332003#(" + n5 + " moedas)#l");
|
||||
}
|
||||
} else if (status == 11) {
|
||||
if (selection == 12) {
|
||||
cm.sendSimple("Selecione a arma que você gostaria de trocar. As armas que eu tenho aqui são extremamente úteis. Dá uma olhada! \r\n#b#L0# #z1322015#(" + n3 + " moedas)#l\r\n#L1# #z1422008#(" + n3 + " moedas)#l\r\n#L2# #z1322016#(" + n4 + "moedas)#l\r\n#L3# #z1422007#(" + n4 + "moedas)#l\r\n#L4# #z1322017#(" + n5 + " moedas)#l\r\n#L5# #z1422005#(" + n5 + " moedas)#l\r\n#L6# #z1432003#(" + n3 + " moedas)#l\r\n#L7# #z1442003#(" + n3 + " moedas)#l\r\n#L8# #z1432005#(" + n4 + "moedas)#l\r\n#L9# #z1442009#(" + n4 + "moedas)#l\r\n#L10# #z1442005#(" + n5 + " moedas)#l\r\n#L11# #z1432004#(" + n5 + " moedas)#l\r\n#L12# Voltar para a página inicial(2/2)#l");
|
||||
cm.sendSimple("Selecione a arma que voc<EFBFBD> gostaria de trocar. As armas que eu tenho aqui s<EFBFBD>o extremamente <EFBFBD>teis. D<EFBFBD> uma olhada! \r\n#b#L0# #z1322015#(" + n3 + " moedas)#l\r\n#L1# #z1422008#(" + n3 + " moedas)#l\r\n#L2# #z1322016#(" + n4 + "moedas)#l\r\n#L3# #z1422007#(" + n4 + "moedas)#l\r\n#L4# #z1322017#(" + n5 + " moedas)#l\r\n#L5# #z1422005#(" + n5 + " moedas)#l\r\n#L6# #z1432003#(" + n3 + " moedas)#l\r\n#L7# #z1442003#(" + n3 + " moedas)#l\r\n#L8# #z1432005#(" + n4 + "moedas)#l\r\n#L9# #z1442009#(" + n4 + "moedas)#l\r\n#L10# #z1442005#(" + n5 + " moedas)#l\r\n#L11# #z1432004#(" + n5 + " moedas)#l\r\n#L12# Voltar para a p<EFBFBD>gina inicial(2/2)#l");
|
||||
} else {
|
||||
var item = new Array(1302004, 1402006, 1302009, 1402007, 1302010, 1402003, 1312006, 1412004, 1312007, 1412005, 1312008, 1412003);
|
||||
var cost = new Array(n3, n3, n4, n4, n5, n5, n3, n3, n4, n4, n5);
|
||||
@@ -214,14 +240,14 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Você ou não possui #b#t4001129##k suficientes, ou seu inventário está cheio. Verifique novamente.");
|
||||
cm.sendOk("Voc<EFBFBD> ou n<EFBFBD>o possui #b#t4001129##k suficientes, ou seu invent<EFBFBD>rio est<EFBFBD> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
} else if (status == 12) {
|
||||
if (selection == 12) {
|
||||
status = 10;
|
||||
cm.sendSimple("Por favor tenha certeza que você possui #t4001129# para a arma que você deseja. Selecione a arma que você gostaria de trocar #t4001129# por. As opções que tenho são realmente boas, e eu não sou eu que falo é o povo que diz! \r\n#b#L0# #z1302004#(" + n3 + " moedas)#l\r\n#L1# #z1402006#(" + n3 + " moedas)#l\r\n#L2# #z1302009#(" + n4 + " moedas)#l\r\n#L3# #z1402007#(" + n4 + " moedas)#l\r\n#L4# #z1302010#(" + n5 + " moedas)#l\r\n#L5# #z1402003#(" + n5 + " moedas)#l\r\n#L6# #z1312006#(" + n3 + " moedas)#l\r\n#L7# #z1412004#(" + n3 + " moedas)#l\r\n#L8# #z1312007#(" + n4 + " moedas)#l\r\n#L9# #z1412005#(" + n4 + " moedas)#l\r\n#L10# #z1312008#(" + n5 + " moedas)#l\r\n#L11# #z1412003#(" + n5 + " moedas)#l\r\n#L12# Ir para a próxima página(1/2)#l");
|
||||
cm.sendSimple("Por favor tenha certeza que voc<EFBFBD> possui #t4001129# para a arma que voc<EFBFBD> deseja. Selecione a arma que voc<EFBFBD> gostaria de trocar #t4001129# por. As op<EFBFBD><EFBFBD>es que tenho s<EFBFBD>o realmente boas, e eu n<EFBFBD>o sou eu que falo <EFBFBD> o povo que diz! \r\n#b#L0# #z1302004#(" + n3 + " moedas)#l\r\n#L1# #z1402006#(" + n3 + " moedas)#l\r\n#L2# #z1302009#(" + n4 + " moedas)#l\r\n#L3# #z1402007#(" + n4 + " moedas)#l\r\n#L4# #z1302010#(" + n5 + " moedas)#l\r\n#L5# #z1402003#(" + n5 + " moedas)#l\r\n#L6# #z1312006#(" + n3 + " moedas)#l\r\n#L7# #z1412004#(" + n3 + " moedas)#l\r\n#L8# #z1312007#(" + n4 + " moedas)#l\r\n#L9# #z1412005#(" + n4 + " moedas)#l\r\n#L10# #z1312008#(" + n5 + " moedas)#l\r\n#L11# #z1412003#(" + n5 + " moedas)#l\r\n#L12# Ir para a pr<EFBFBD>xima p<EFBFBD>gina(1/2)#l");
|
||||
} else {
|
||||
var item = new Array(1322015, 1422008, 1322016, 1422007, 1322017, 1422005, 1432003, 1442003, 1432005, 1442009, 1442005, 1432004);
|
||||
var cost = new Array(n3, n3, n4, n4, n5, n5, n3, n3, n4, n4, n5, n5);
|
||||
@@ -230,7 +256,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Você ou não possui #b#t4001129##k suficientes, ou seu inventário está cheio. Verifique novamente.");
|
||||
cm.sendOk("Voc<EFBFBD> ou n<EFBFBD>o possui #b#t4001129##k suficientes, ou seu invent<EFBFBD>rio est<EFBFBD> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -242,7 +268,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Ou você não possui #b#t4001129##k suficientes, ou seu inventário está cheio. Verifique novamente.");
|
||||
cm.sendOk("Ou voc<EFBFBD> n<EFBFBD>o possui #b#t4001129##k suficientes, ou seu invent<EFBFBD>rio est<EFBFBD> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 31) {
|
||||
@@ -253,7 +279,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Ou você não possui #b#t4001129##k suficientes, ou seu inventário está cheio. Verifique novamente.");
|
||||
cm.sendOk("Ou voc<EFBFBD> n<EFBFBD>o possui #b#t4001129##k suficientes, ou seu invent<EFBFBD>rio est<EFBFBD> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 41) {
|
||||
@@ -264,57 +290,213 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Ou você não possui #b#t4001129##k suficientes, ou seu inventário está cheio. Verifique novamente.");
|
||||
cm.sendOk("Ou voc<EFBFBD> n<EFBFBD>o possui #b#t4001129##k suficientes, ou seu invent<EFBFBD>rio est<EFBFBD> cheio. Verifique novamente.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 61) {
|
||||
select = selection;
|
||||
if (selection == 0) {
|
||||
cm.sendNext("Haha! Eu sou Spiegelmann, o líder dessa Folia. Eu comecei a primeira #bFolia de Monstros#k aqui, aguardando por viajantes como você para participar dessa extravaganza!");
|
||||
cm.sendNext("Haha! Eu sou Spiegelmann, o l<EFBFBD>der dessa Folia. Eu comecei a primeira #bFolia de Monstros#k aqui, aguardando por viajantes como voc<EFBFBD> para participar dessa extravaganza!");
|
||||
} else if (selection == 1) {
|
||||
cm.sendNext("#bFolia de Monstros#k consiste em 2 grupos entrando no campo de batalha, e caçando os monstros invocados pelo outro grupo. É uma #bmissão de combate que determina o vitorioso pela quantia de Pontos de Folia (CP) recebidos#k.");
|
||||
cm.sendNext("#bFolia de Monstros#k consiste em 2 grupos entrando no campo de batalha, e ca<EFBFBD>ando os monstros invocados pelo outro grupo. <EFBFBD> uma #bmiss<EFBFBD>o de combate que determina o vitorioso pela quantia de Pontos de Folia (CP) recebidos#k.");
|
||||
} else if (selection == 2) {
|
||||
cm.sendNext("Quando entrar no Campo da Folia, você verá a janela da Folia de Monstros aparecer. Tudo que precisa fazer é #bselecionar o que vocêe quer usar, e pressionar OK#k. Muito fácil, né?");
|
||||
cm.sendNext("Quando entrar no Campo da Folia, voc<EFBFBD> ver<EFBFBD> a janela da Folia de Monstros aparecer. Tudo que precisa fazer <EFBFBD> #bselecionar o que voc<EFBFBD>e quer usar, e pressionar OK#k. Muito f<EFBFBD>cil, n<EFBFBD>?");
|
||||
} else {
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 62) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("O que é a #bFolia de Monstros#k? Hahaha! Vamos dizer que é uma experiência que jamais esquecerá! É uma #bbatalha contra outros viajantes assim como você!#k");
|
||||
cm.sendNext("O que <EFBFBD> a #bFolia de Monstros#k? Hahaha! Vamos dizer que <EFBFBD> uma experi<EFBFBD>ncia que jamais esquecer<EFBFBD>! <EFBFBD> uma #bbatalha contra outros viajantes assim como voc<EFBFBD>!#k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Quando entrar no Campo da Folia, sua tarefa é #breceber CP caçando os monstros do grupo oposto, e usar estes CP's para distrair o grupo oposto de caçar monstros.#k.");
|
||||
cm.sendNext("Quando entrar no Campo da Folia, sua tarefa <EFBFBD> #breceber CP ca<EFBFBD>ando os monstros do grupo oposto, e usar estes CP's para distrair o grupo oposto de ca<EFBFBD>ar monstros.#k.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("Assim que se acostumar com os comandos, tente usar #bas teclas TAB e F1 ~ F12#k. #bTAB alterna entre Invocação de Monstros/Habilidades/Protetor,#k e, #bF1~ F12 possibilita-o de acessar uma das janelas diretamente#k.");
|
||||
cm.sendNext("Assim que se acostumar com os comandos, tente usar #bas teclas TAB e F1 ~ F12#k. #bTAB alterna entre Invoca<EFBFBD><EFBFBD>o de Monstros/Habilidades/Protetor,#k e, #bF1~ F12 possibilita-o de acessar uma das janelas diretamente#k.");
|
||||
}
|
||||
} else if (status == 63) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("Eu sei que é muito perigoso para vocês lutarem uns com os outros usando armas de verdade; e eu não sugeriria um ato tão barbárico. Não meu amigo, o que eu ofereço é competição. A emoção da batalha e a emoção de competir contra pessoas tão fortes e motivadas. Eu ofereço a premissa de que seu grupo e o grupo oposto ambos #binvoquem os monstros, e derrote os monstros invocados pelo grupo adversário. Essa é a essência da Folia de Monstros. Além disso, você pode usar Maple Coins ganhos durante a Folia de Monstros para obter novos itens e armas! #k");
|
||||
cm.sendNext("Eu sei que <EFBFBD> muito perigoso para voc<EFBFBD>s lutarem uns com os outros usando armas de verdade; e eu n<EFBFBD>o sugeriria um ato t<EFBFBD>o barb<EFBFBD>rico. N<EFBFBD>o meu amigo, o que eu ofere<EFBFBD>o <EFBFBD> competi<EFBFBD><EFBFBD>o. A emo<EFBFBD><EFBFBD>o da batalha e a emo<EFBFBD><EFBFBD>o de competir contra pessoas t<EFBFBD>o fortes e motivadas. Eu ofere<EFBFBD>o a premissa de que seu grupo e o grupo oposto ambos #binvoquem os monstros, e derrote os monstros invocados pelo grupo advers<EFBFBD>rio. Essa <EFBFBD> a ess<EFBFBD>ncia da Folia de Monstros. Al<EFBFBD>m disso, voc<EFBFBD> pode usar Maple Coins ganhos durante a Folia de Monstros para obter novos itens e armas! #k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Existem 3 maneiras de distrair o grupo adversário: #bInvodar um monstro, Habilidade, and Protetor#k. Vou dar-lhe um olhar mais aprofundado, se você quiser saber mais sobre 'Instruções detalhadas'.");
|
||||
cm.sendNext("Existem 3 maneiras de distrair o grupo advers<EFBFBD>rio: #bInvodar um monstro, Habilidade, and Protetor#k. Vou dar-lhe um olhar mais aprofundado, se voc<EFBFBD> quiser saber mais sobre 'Instru<EFBFBD><EFBFBD>es detalhadas'.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bInvocar um Monstro#k chama um monstro que ataca o grupo adversário, sob seu controle. Use CP para trazer um Monstro Invocado, e ele irá aparecer na mesma área, atacando o grupo oposto.");
|
||||
cm.sendNext("#bInvocar um Monstro#k chama um monstro que ataca o grupo advers<EFBFBD>rio, sob seu controle. Use CP para trazer um Monstro Invocado, e ele ir<EFBFBD> aparecer na mesma <EFBFBD>rea, atacando o grupo oposto.");
|
||||
}
|
||||
} else if (status == 64) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("Claro, não é tão simples assim. Existem outras maneiras de prevenir o outro grupo de caçar monstros, e cabe a você descobrir como fazê-lo. O que acha? Interessado em uma competição amigável?");
|
||||
cm.sendNext("Claro, n<EFBFBD>o <EFBFBD> t<EFBFBD>o simples assim. Existem outras maneiras de prevenir o outro grupo de ca<EFBFBD>ar monstros, e cabe a voc<EFBFBD> descobrir como faz<EFBFBD>-lo. O que acha? Interessado em uma competi<EFBFBD><EFBFBD>o amig<EFBFBD>vel?");
|
||||
cm.dispose();
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Por favor lembre-se. Nunca é uma boa ideia guardar seus CP's. #bOs CP's que você usou irão ajudar a determinar o vencedor e o perdedor da Folia.");
|
||||
cm.sendNext("Por favor lembre-se. Nunca <EFBFBD> uma boa ideia guardar seus CP's. #bOs CP's que voc<EFBFBD> usou ir<EFBFBD>o ajudar a determinar o vencedor e o perdedor da Folia.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bHabilidade#k é uma opção de usar habilidades tais como Escuridão, Fraqueza, e outras para prevenir o grupo oposto de matar outros monstros. São necessários muitos CP's, mas vale muito a pena. O único problema é que eles não duram muito. Use essa tática com sabedoria!");
|
||||
cm.sendNext("#bHabilidade#k <EFBFBD> uma op<EFBFBD><EFBFBD>o de usar habilidades tais como Escurid<EFBFBD>o, Fraqueza, e outras para prevenir o grupo oposto de matar outros monstros. S<EFBFBD>o necess<EFBFBD>rios muitos CP's, mas vale muito a pena. O <EFBFBD>nico problema <EFBFBD> que eles n<EFBFBD>o duram muito. Use essa t<EFBFBD>tica com sabedoria!");
|
||||
}
|
||||
} else if (status == 65) {
|
||||
if (select == 1) {
|
||||
cm.sendNext("Oh, e não se preocupe em tranformar-se em um fantasma. Na Folia de Monstros, #bvocê não perderá EXP após a morte#k. É realmente uma experência como nenhuma outra!");
|
||||
cm.sendNext("Oh, e n<EFBFBD>o se preocupe em tranformar-se em um fantasma. Na Folia de Monstros, #bvoc<EFBFBD> n<EFBFBD>o perder<EFBFBD> EXP ap<EFBFBD>s a morte#k. <EFBFBD> realmente uma exper<EFBFBD>ncia como nenhuma outra!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k é basicamente um item invocado que aumenta drásticamente as habilidades dos monstros invocados pelo seu grupo. Protetor funciona enquanto não for demolido pelo grupo oposto, então eu surigo que você invoque vários monstros primeiro, e então traga o Protetor.");
|
||||
cm.sendNext("#bProtetor#k <EFBFBD> basicamente um item invocado que aumenta dr<EFBFBD>sticamente as habilidades dos monstros invocados pelo seu grupo. Protetor funciona enquanto n<EFBFBD>o for demolido pelo grupo oposto, ent<EFBFBD>o eu surigo que voc<EFBFBD> invoque v<EFBFBD>rios monstros primeiro, e ent<EFBFBD>o traga o Protetor.");
|
||||
}
|
||||
} else if (status == 66) {
|
||||
cm.sendNext("Por último, enquanto estiver na Folia de Monstros, #bvocê não pode usar items/poções de recuperação que você leva por ai contigo.#k Entretanto, os monstros deixam esses items cair de vez em quando, e #bassim que pegá-los, o item ativará imediatamente#k. É por isso que é importante saber quando pegar estes items.");
|
||||
cm.sendNext("Por <EFBFBD>ltimo, enquanto estiver na Folia de Monstros, #bvoc<EFBFBD> n<EFBFBD>o pode usar items/po<EFBFBD><EFBFBD>es de recupera<EFBFBD><EFBFBD>o que voc<EFBFBD> leva por ai contigo.#k Entretanto, os monstros deixam esses items cair de vez em quando, e #bassim que peg<EFBFBD>-los, o item ativar<EFBFBD> imediatamente#k. <EFBFBD> por isso que <EFBFBD> importante saber quando pegar estes items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
if (selection == 0) {
|
||||
allDone = refineItems(0); // minerals
|
||||
} else if (selection == 1) {
|
||||
allDone = refineItems(1); // jewels
|
||||
} else if (selection == 2 && refineCrystals) {
|
||||
allDone = refineItems(2); // crystals
|
||||
} else if (selection == 2 && !refineCrystals || selection == 3) {
|
||||
allDone = refineRockItems(); // moon/star rock
|
||||
}
|
||||
|
||||
if(allDone) {
|
||||
cm.sendOk("Done. Thanks for showing up~.");
|
||||
} else {
|
||||
cm.sendOk("Done. Be aware some of the items #rcould not be synthetized#k because either you have a lack of space on your ETC inventory or there's not enough mesos to cover the fee.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getRefineFee(fee) {
|
||||
return ((feeMultiplier * fee) | 0);
|
||||
}
|
||||
|
||||
function isRefineTarget(refineType, refineItemid) {
|
||||
if(refineType == 0) { //mineral refine
|
||||
return refineItemid >= 4010000 && refineItemid <= 4010007 && !(refineItemid == 4010007 && !refineSpecials);
|
||||
} else if(refineType == 1) { //jewel refine
|
||||
return refineItemid >= 4020000 && refineItemid <= 4020008 && !(refineItemid == 4020008 && !refineSpecials);
|
||||
} else if(refineType == 2) { //crystal refine
|
||||
return refineItemid >= 4004000 && refineItemid <= 4004004 && !(refineItemid == 4004004 && !refineSpecials);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getRockRefineTarget(refineItemid) {
|
||||
if(refineItemid >= 4011000 && refineItemid <= 4011006) {
|
||||
return 0;
|
||||
} else if(refineItemid >= 4021000 && refineItemid <= 4021008) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function refineItems(refineType) {
|
||||
var allDone = true;
|
||||
|
||||
var refineFees = [[300,300,300,500,500,500,800,270],[500,500,500,500,500,500,500,1000,3000],[5000,5000,5000,5000,1000000]];
|
||||
var itemCount = {};
|
||||
|
||||
var iter = cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
|
||||
if(isRefineTarget(refineType, itemid)) {
|
||||
var ic = itemCount[itemid];
|
||||
|
||||
if(ic != undefined) {
|
||||
itemCount[itemid] += it.getQuantity();
|
||||
} else {
|
||||
itemCount[itemid] = it.getQuantity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(var key in itemCount) {
|
||||
var itemqty = itemCount[key];
|
||||
var itemid = parseInt(key);
|
||||
|
||||
var refineQty = ((itemqty / 10) | 0);
|
||||
if(refineQty <= 0) continue;
|
||||
|
||||
while(true) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if(cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
break;
|
||||
} else if(refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
function refineRockItems() {
|
||||
var allDone = true;
|
||||
var minItems = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
|
||||
var minRocks = [2147483647, 2147483647];
|
||||
|
||||
var rockItems = [4011007, 4021009];
|
||||
var rockFees = [10000, 15000];
|
||||
|
||||
var iter = cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
var rockRefine = getRockRefineTarget(itemid);
|
||||
if(rockRefine >= 0) {
|
||||
var rockItem = ((itemid % 100) | 0);
|
||||
var itemqty = it.getQuantity();
|
||||
|
||||
minItems[rockRefine][rockItem] += itemqty;
|
||||
}
|
||||
}
|
||||
|
||||
for(var i = 0; i < minRocks.length; i++) {
|
||||
for(var j = 0; j < minItems[i].length; j++) {
|
||||
if(minRocks[i] > minItems[i][j]) {
|
||||
minRocks[i] = minItems[i][j];
|
||||
}
|
||||
}
|
||||
if(minRocks[i] <= 0 || minRocks[i] == 2147483647) continue;
|
||||
|
||||
var refineQty = minRocks[i];
|
||||
while(true) {
|
||||
var fee = getRefineFee(rockFees[i] * refineQty);
|
||||
if(cm.canHold(rockItems[i], refineQty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
|
||||
var j;
|
||||
if(i == 0) {
|
||||
for(j = 4011000; j < 4011007; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
} else {
|
||||
for(j = 4021000; j < 4021009; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
}
|
||||
|
||||
break;
|
||||
} else if(refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
var map = 980030000;
|
||||
var minLvl = 30;
|
||||
var maxLvl = 255;
|
||||
var minAmt = 0;
|
||||
var maxAmt = 6;
|
||||
var cpqMinLvl = 30;
|
||||
var cpqMaxLvl = 255;
|
||||
var cpqMinAmt = 0;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
@@ -24,34 +23,35 @@ function action(mode, type, selection) {
|
||||
if (status == 0) {
|
||||
if (cm.getParty() == null) {
|
||||
status = 10;
|
||||
cm.sendOk("#eÉ necessário criar um grupo antes de começar o Festival de Monstros!#k");
|
||||
cm.sendOk("#e<EFBFBD> necess<EFBFBD>rio criar um grupo antes de come<EFBFBD>ar o Festival de Monstros!#k");
|
||||
} else if (!cm.isLeader()) {
|
||||
status = 10;
|
||||
cm.sendOk("Se você quer começar o Festival, avise o #blíder do grupo#k para falar comigo.");
|
||||
cm.sendOk("Se voc<EFBFBD> quer come<EFBFBD>ar o Festival, avise o #bl<EFBFBD>der do grupo#k para falar comigo.");
|
||||
} else {
|
||||
var leaderMapid = cm.getMapId();
|
||||
var party = cm.getParty().getMembers();
|
||||
var inMap = cm.partyMembersInMap();
|
||||
var lvlOk = 0;
|
||||
var isInMap = 0;
|
||||
var isOutMap = 0;
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
if (party.get(i).getLevel() >= minLvl && party.get(i).getLevel() <= maxLvl) {
|
||||
if (party.get(i).getLevel() >= cpqMinLvl && party.get(i).getLevel() <= cpqMaxLvl) {
|
||||
lvlOk++;
|
||||
}
|
||||
if (party.get(i).getPlayer().getMapId()!= 980030000) {
|
||||
//isInMap = false;
|
||||
isInMap++
|
||||
|
||||
if (party.get(i).getPlayer().getMapId() != leaderMapid) {
|
||||
isOutMap++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (party >= 1) {
|
||||
status = 10;
|
||||
cm.sendOk("Você não tem número suficiente de pessoas em seu grupo. Você precisa de um grupo com #b" + minAmt + "#k - #r" + maxAmt + "#k membros e eles devem estar no mapa com você.");
|
||||
cm.sendOk("Voc<EFBFBD> n<EFBFBD>o tem n<EFBFBD>mero suficiente de pessoas em seu grupo. Voc<EFBFBD> precisa de um grupo com #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k membros e eles devem estar no mapa com voc<EFBFBD>.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Certifique se todos em seu grupo estão dentre os níveis corretos (" + minLvl + "~" + maxLvl + ")!");
|
||||
} else if (isInMap > 0) {
|
||||
cm.sendOk("Certifique se todos em seu grupo est<EFBFBD>o dentre os n<EFBFBD>veis corretos (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
} else if (isOutMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("Existe alguém do grupo que não esta no mapa!");
|
||||
cm.sendOk("Existe algu<EFBFBD>m do grupo que n<EFBFBD>o esta no mapa!");
|
||||
} else {
|
||||
cm.sendCPQMapLists2();
|
||||
}
|
||||
@@ -67,10 +67,10 @@ function action(mode, type, selection) {
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection === 0 || selection === 1 ) && party.size() < 2) {
|
||||
cm.sendOk("Você precisa de no mínimo 2 player para entrar na competição.");
|
||||
} else if ((selection === 2 ) && party.size() < 3) {
|
||||
cm.sendOk("Você precisa de no mínimo 3 player para entrar na competição.");
|
||||
if ((selection === 0 || selection === 1 ) && party.size() < 1) {
|
||||
cm.sendOk("Voc<EFBFBD> precisa de no m<EFBFBD>nimo 2 player para entrar na competi<EFBFBD><EFBFBD>o.");
|
||||
} else if ((selection === 2 ) && party.size() < 1) {
|
||||
cm.sendOk("Voc<EFBFBD> precisa de no m<EFBFBD>nimo 3 player para entrar na competi<EFBFBD><EFBFBD>o.");
|
||||
} else {
|
||||
cm.cpqLobby2(selection);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
importPackage(net.sf.odinms.server.maps);
|
||||
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
@@ -21,26 +20,27 @@ function action(mode, type, selection) {
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (cm.getChar().getMap().isCPQLoserMap()) {
|
||||
if (status == 0) {
|
||||
if (cm.getChar().getParty() != null) {
|
||||
var shiu = "";
|
||||
if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shiu += "#rA#k";
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha, apesar da sua excelente performance. A vitória pode ser sua da próxima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha, apesar da sua excelente performance. A vit<EFBFBD>ria pode ser sua da pr<EFBFBD>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
rnk = 10;
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50 && cm.getPlayer().getFestivalPoints() < 100) {
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shiu += "#rB#k";
|
||||
rnk = 20;
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha, mesmo com sua ótima performance. Só mais um pouquinho, e a vitória poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 30 && cm.getPlayer().getFestivalPoints() < 50) {
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha, mesmo com sua <EFBFBD>tima performance. S<EFBFBD> mais um pouquinho, e a vit<EFBFBD>ria poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shiu += "#rC#k";
|
||||
rnk = 30;
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha. A vitória está para aqueles que se esforçam. Vejo seus esforços, então a vitória não está tão longe do seu alcance. Continue assim!\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha. A vit<EFBFBD>ria est<EFBFBD> para aqueles que se esfor<EFBFBD>am. Vejo seus esfor<EFBFBD>os, ent<EFBFBD>o a vit<EFBFBD>ria n<EFBFBD>o est<EFBFBD> t<EFBFBD>o longe do seu alcance. Continue assim!\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
} else {
|
||||
shiu += "#rD#k";
|
||||
rnk = 40;
|
||||
cm.sendOk("Infelizmente, você ou empatou ou perdeu a batalha, e sua performance claramente reflete nisso. Espero mais de você da próxima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Infelizmente, voc<EFBFBD> ou empatou ou perdeu a batalha, e sua performance claramente reflete nisso. Espero mais de voc<EFBFBD> da pr<EFBFBD>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980030000, 0);
|
||||
@@ -81,19 +81,19 @@ function action(mode, type, selection) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shi += "#rA#k";
|
||||
rnk = 1;
|
||||
cm.sendOk("Parabéns pela sua vitória!!! Que ótima performance! O grupo adversário não pôde fazer nada! Espero o mesmo bom trabalho da próxima vez!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100 && cm.getPlayer().getFestivalPoints() < 300) {
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria!!! Que <EFBFBD>tima performance! O grupo advers<EFBFBD>rio n<EFBFBD>o p<EFBFBD>de fazer nada! Espero o mesmo bom trabalho da pr<EFBFBD>xima vez!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Parabéns pela sua vitória! Isso foi impressionante! Você fez um bom trabalho contra o grupo adversário! Só mais um pouco, e você definitivamente vai conseguir um A na próxima vez. \r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50 && cm.getPlayer().getFestivalPoints() < 100) {
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria! Isso foi impressionante! Voc<EFBFBD> fez um bom trabalho contra o grupo advers<EFBFBD>rio! S<EFBFBD> mais um pouco, e voc<EFBFBD> definitivamente vai conseguir um A na pr<EFBFBD>xima vez. \r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Parabéns pela sua vitória. Você fez algumas coisas cá e lá, mas essa não pode ser considerada uma boa vitória. Espero mais de ti da próxima vez.\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria. Voc<EFBFBD> fez algumas coisas c<EFBFBD> e l<EFBFBD>, mas essa n<EFBFBD>o pode ser considerada uma boa vit<EFBFBD>ria. Espero mais de ti da pr<EFBFBD>xima vez.\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Parabéns pela sua vitória, entretanto sua performance não refletiu muito bem isso. Seja mais ativo na sua próxima participação da Folia de Monstros!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
cm.sendOk("Parab<EFBFBD>ns pela sua vit<EFBFBD>ria, entretanto sua performance n<EFBFBD>o refletiu muito bem isso. Seja mais ativo na sua pr<EFBFBD>xima participa<EFBFBD><EFBFBD>o da Folia de Monstros!\r\n\r\n#bNota da Folia de Monstros : " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980030000, 0);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* @Name: So Gong
|
||||
* @Map(s): Dojo Hall
|
||||
*/
|
||||
importPackage(Packages.server.maps);
|
||||
|
||||
importPackage(Packages.constants);
|
||||
|
||||
var disabled = false;
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
* @Name: So Gong
|
||||
* @Map(s): Dojo Hall
|
||||
*/
|
||||
importPackage(Packages.server.maps);
|
||||
|
||||
var disabled = false;
|
||||
var belts = Array(1132000, 1132001, 1132002, 1132003, 1132004);
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
importPackage(Packages.client);
|
||||
importPackage(Packages.server.maps);
|
||||
|
||||
|
||||
var status;
|
||||
var sel;
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
importPackage(Packages.client);
|
||||
importPackage(Packages.server.maps);
|
||||
|
||||
var status;
|
||||
var sel;
|
||||
|
||||
@@ -158,6 +158,12 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!cm.getUnclaimedMarriageGifts().isEmpty() || !partner.getClient().getAbstractPlayerInteraction().getUnclaimedMarriageGifts().isEmpty()) {
|
||||
cm.sendOk("Eerhm... I'm sorry, something doesn't seem right according to the Amoria's Wedding Gift Registry reserve. Please check in the situation with #b#p9201014##k.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
var hasCommon = cm.haveItem(weddingEntryTicketCommon);
|
||||
var hasPremium = cm.haveItem(weddingEntryTicketPremium);
|
||||
|
||||
@@ -50,7 +50,6 @@ function action(mode, type, selection) {
|
||||
var eim = cm.getEventInstance();
|
||||
if(eim == null) {
|
||||
cm.warp(680000000,0);
|
||||
//cm.criarLista();
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
@@ -72,7 +71,9 @@ function action(mode, type, selection) {
|
||||
cm.sendOk("Congratulations on your wedding. Please talk to #b#p9201007##k to start the afterparty.");
|
||||
cm.dispose();
|
||||
} else if(hasEngagement) {
|
||||
cm.criarLista();
|
||||
if (!cm.createMarriageWishlist()) {
|
||||
cm.sendOk("You have already sent your wishlist...");
|
||||
}
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("You do not have the required item to continue through this wedding. Unfortunately, it's over...");
|
||||
|
||||
@@ -158,6 +158,12 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!cm.getUnclaimedMarriageGifts().isEmpty() || !partner.getClient().getAbstractPlayerInteraction().getUnclaimedMarriageGifts().isEmpty()) {
|
||||
cm.sendOk("Eerhm... I'm sorry, something doesn't seem right according to the Amoria's Wedding Gift Registry reserve. Please check in the situation with #b#p9201014##k.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
var hasCommon = cm.haveItem(weddingEntryTicketCommon);
|
||||
var hasPremium = cm.haveItem(weddingEntryTicketPremium);
|
||||
|
||||
@@ -74,7 +74,9 @@ function action(mode, type, selection) {
|
||||
cm.sendOk("You guys totally rocked the stage!!! Go go, talk to #b#p9201007##k to start the afterparty.");
|
||||
cm.dispose();
|
||||
} else if(hasEngagement) {
|
||||
cm.sendOk("Please continue rocking on the stage, you are our superstars today!");
|
||||
if (!cm.createMarriageWishlist()) {
|
||||
cm.sendOk("You have already sent your wishlist...");
|
||||
}
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Oh, hey, where are the credentials for the this so-lauded party? Oh man, we can't continue at this rate now... Sorry, the party is over.");
|
||||
|
||||
@@ -27,12 +27,22 @@
|
||||
1.0 - First Version by Angel
|
||||
2.0 - Second Version by happydud3 & XotiCraze
|
||||
3.0 - Third Version by RonanLana (HeavenMS)
|
||||
4.0 - Four Version bby Drago(MapleStorySA)
|
||||
4.0 - Four Version bby Drago (MapleStorySA)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
var status = -1;
|
||||
|
||||
var marriageRoom;
|
||||
var marriageAction = 0;
|
||||
var marriageGifts;
|
||||
|
||||
function start() {
|
||||
marriageRoom = cm.getPlayer().getMarriageInstance() != null;
|
||||
if (!marriageRoom) {
|
||||
marriageGifts = cm.getUnclaimedMarriageGifts();
|
||||
marriageAction = (!marriageGifts.isEmpty() ? 2 : ((cm.haveItem(4031423) || cm.haveItem(4031424)) ? 1 : 0));
|
||||
}
|
||||
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
@@ -44,8 +54,84 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (status == 0) {
|
||||
cm.enviarLista();
|
||||
cm.dispose();
|
||||
if (marriageRoom) {
|
||||
if (status == 0) {
|
||||
var talk = "Hi there, welcome to the wedding's Gift Registry. From which spouse's wishlist would you like to take a look?";
|
||||
var options = ["Groom", "Bride"];
|
||||
|
||||
cm.sendSimple(talk + "\r\n\r\n#b" + generateSelectionMenu(options) + "#k");
|
||||
} else {
|
||||
cm.sendMarriageWishlist(selection == 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
if (marriageAction == 2) { // unclaimed gifts
|
||||
if (status == 0) {
|
||||
var talk = "Hi there, it seems you have unclaimed gifts from your wedding. Claim them here on the wedding's Gift Registry reserve.";
|
||||
cm.sendNext(talk);
|
||||
} else {
|
||||
cm.sendMarriageGifts(marriageGifts);
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (marriageAction == 1) { // onyx prizes
|
||||
if (status == 0) {
|
||||
var msg = "Hello I exchange Onyx Chest for Bride and Groom and the Onyx Chest for prizes!#b";
|
||||
var choice1 = new Array("I have an Onyx Chest for Bride and Groom", "I have an Onyx Chest");
|
||||
for (var i = 0; i < choice1.length; i++) {
|
||||
msg += "\r\n#L" + i + "#" + choice1[i] + "#l";
|
||||
}
|
||||
cm.sendSimple(msg);
|
||||
} else if (status == 1) {
|
||||
if (selection == 0) {
|
||||
if (cm.haveItem(4031424)) {
|
||||
if (cm.getPlayer().isMarried()) { // thanks MedicOP for solving an issue here
|
||||
if(cm.getInventory(2).getNextFreeSlot() >= 0) {
|
||||
var rand = Math.floor(Math.random() * bgPrizes.length);
|
||||
cm.gainItem(bgPrizes[rand][0], bgPrizes[rand][1]);
|
||||
|
||||
cm.gainItem(4031424,-1);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("You don't have a free USE slot right now.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
cm.sendOk("You must be married to claim the prize for this box.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
cm.sendOk("You don't have an Onyx Chest for Bride and Groom.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (selection == 1) {
|
||||
if (cm.haveItem(4031423)) {
|
||||
if(cm.getInventory(2).getNextFreeSlot() >= 0) {
|
||||
var rand = Math.floor(Math.random() * cmPrizes.length);
|
||||
cm.gainItem(cmPrizes[rand][0], cmPrizes[rand][1]);
|
||||
|
||||
cm.gainItem(4031423,-1);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("You don't have a free USE slot right now.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
cm.sendOk("You don't have an Onyx Chest.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cm.sendOk("Hi there, welcome to Amoria's Wedding Gift Registry reserve. We redistribute and tender gifts for both wedding spouses and lucky ceremonial attenders.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function generateSelectionMenu(array) {
|
||||
var menu = "";
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
menu += "#L" + i + "#" + array[i] + "#l\r\n";
|
||||
}
|
||||
return menu;
|
||||
}
|
||||
@@ -15,7 +15,6 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0) {
|
||||
cm.sendOk("Come back once you have thought about it some more.");
|
||||
cm.getChar().setChallenged(false);
|
||||
cm.dispose();
|
||||
return;
|
||||
@@ -46,7 +45,7 @@ function action(mode, type, selection) {
|
||||
cm.getChar().getParty().setEnemy(ch.getParty());
|
||||
cm.getChar().setChallenged(false);
|
||||
} else {
|
||||
cm.sendOk("O numero de players entre os times não esta igual.");
|
||||
cm.sendOk("O numero de players entre os times nao esta igual.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user