CPQ tidyup patch + Guild Creation matcher + Solution to Login Accid=0
Adjusted AP gains, to get it to work following the AP Reset check method. Fixed usage of inexistent itemids on CPQ and fishing. Fixed one-of-a-kind items being lost in player trades due to missing inventory checks. Implemented matching system for the guild creation phase. All players intending to join the new guild must be on the Guild Headquartes and accept the creation of the guild. Fixed changing jobs not properly updating info on the party tab. Fixed double tooltip information on CPQ actions UI. Fixed CPQ not disbanding after a player leaves the party/instance. Fixed checks for "in-progress" CPQ instances. Fixed changing maps on CPQ not leading players back to the starting battlefield. Reviewed login system, now preventing non-local IP connecting on local server and local IP on non-local server. Reviewed login system, now cherrypicking sessions in transition state when trying to disconnect them due to a failed login (avoiding possible mishaps due to duplicate sessions of a same account). Adjusted PiratePQ stage 2, now mobs respawn rather than making party leader request for new waves. Adjusted Prime Minister, its spawn is no longer related to starting the quest. It should also allow party fights. Fixed "forcevac" command not properly applying, rather sending to inventory, "consume-on-pickup" items. Fixed (probably) accId = 0 issue on login, that was occurring due to client accountid's being set to 0 a while before being checked once again on finishLogin(). Fixed an issue with extended time on CPQ not properly showing the end-match's visual effect.
This commit is contained in:
@@ -1,31 +1,79 @@
|
||||
var minPlayers = 1;
|
||||
var entryMap = 106021402;
|
||||
var exitMap = 106021600;
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var minMapId = 106021601;
|
||||
var maxMapId = 106021601;
|
||||
var eventTime = 10 * 60 * 1000; // 10 minutes
|
||||
var entryMap = 106021600;
|
||||
var exitMap = 106021402;
|
||||
var recruitMap = 106021402;
|
||||
|
||||
var minPlayers = 1, maxPlayers = 3;
|
||||
var minLevel = 30, maxLevel = 255;
|
||||
|
||||
var minMapId = 106021600;
|
||||
var maxMapId = 106021600;
|
||||
|
||||
var mobId = 3300008; //Prime Minister
|
||||
|
||||
function init(){}
|
||||
|
||||
function getEligibleParty(party) { //selects, from the given party, the team that is allowed to attempt this event
|
||||
var eligible = [];
|
||||
var hasLeader = false;
|
||||
|
||||
if(party.size() > 0) {
|
||||
var partyList = party.toArray();
|
||||
|
||||
for(var i = 0; i < party.size(); i++) {
|
||||
var ch = partyList[i];
|
||||
|
||||
if(ch.getMapId() == recruitMap && ch.getLevel() >= minLevel && ch.getLevel() <= maxLevel) {
|
||||
if(ch.isLeader()) hasLeader = true;
|
||||
eligible.push(ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
|
||||
return eligible;
|
||||
}
|
||||
|
||||
function setup(difficulty, lobbyId){
|
||||
var eim = em.newInstance("MK_PrimeMinister_" +lobbyId);
|
||||
eim.getInstanceMap(106021601).resetFully();
|
||||
eim.getInstanceMap(106021601).allowSummonState(false);
|
||||
respawn(eim);
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim){}
|
||||
|
||||
function primeMinisterCheck(eim) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
|
||||
var pIter = map.getAllPlayers().iterator();
|
||||
while (pIter.hasNext()) {
|
||||
var player = pIter.next();
|
||||
if (player.getQuestStatus(2333) == 1 && player.getClient().getAbstractPlayerInteraction().getQuestProgress(2333, mobId) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function respawn(eim){
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
map.allowSummonState(true);
|
||||
map.instanceMapRespawn();
|
||||
eim.schedule("respawn", 10000);
|
||||
if (primeMinisterCheck(eim)) {
|
||||
eim.startEventTimer(eventTime);
|
||||
|
||||
var weddinghall = eim.getMapInstance(entryMap);
|
||||
weddinghall.getPortal(1).setPortalState(false);
|
||||
weddinghall.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(292, 143));
|
||||
} else {
|
||||
eim.schedule("respawn", 10000);
|
||||
}
|
||||
}
|
||||
|
||||
function playerEntry(eim, player){
|
||||
var weddinghall = eim.getMapInstance(106021601);
|
||||
var weddinghall = eim.getMapInstance(entryMap);
|
||||
player.changeMap(weddinghall, weddinghall.getPortal(1));
|
||||
}
|
||||
|
||||
@@ -69,7 +117,7 @@ function playerUnregistered(eim, player){}
|
||||
|
||||
function playerExit(eim, player){
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(entryMap, 2);
|
||||
player.changeMap(exitMap, 2);
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
@@ -86,9 +134,19 @@ function cancelSchedule(){}
|
||||
|
||||
function dispose(){}
|
||||
|
||||
function clearPQ(eim){}
|
||||
function clearPQ(eim){
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim){}
|
||||
function monsterKilled(mob, eim){
|
||||
if (mob.getId() == mobId) {
|
||||
eim.getMapInstance(entryMap).getPortal(1).setPortalState(true);
|
||||
|
||||
eim.showClearEffect();
|
||||
eim.clearPQ();
|
||||
}
|
||||
}
|
||||
|
||||
function allMonstersDead(eim){}
|
||||
|
||||
|
||||
@@ -1,20 +1,44 @@
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var minPlayers = 1;
|
||||
var eventTime = 10; // 10 minutes
|
||||
var entryMap = 106021402;
|
||||
var exitMap = 106021600;
|
||||
var eventTime = 10 * 60 * 1000; // 10 minutes
|
||||
var entryMap = 106021601;
|
||||
var exitMap = 106021402;
|
||||
var recruitMap = 106021402;
|
||||
|
||||
var minPlayers = 1, maxPlayers = 3;
|
||||
var minLevel = 30, maxLevel = 255;
|
||||
|
||||
var minMapId = 106021601;
|
||||
var maxMapId = 106021601;
|
||||
|
||||
var mobId = 3300008; //Prime Minister
|
||||
|
||||
function init(){}
|
||||
|
||||
function getEligibleParty(party) { //selects, from the given party, the team that is allowed to attempt this event
|
||||
var eligible = [];
|
||||
var hasLeader = false;
|
||||
|
||||
if(party.size() > 0) {
|
||||
var partyList = party.toArray();
|
||||
|
||||
for(var i = 0; i < party.size(); i++) {
|
||||
var ch = partyList[i];
|
||||
|
||||
if(ch.getMapId() == recruitMap && ch.getLevel() >= minLevel && ch.getLevel() <= maxLevel) {
|
||||
if(ch.isLeader()) hasLeader = true;
|
||||
eligible.push(ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
|
||||
return eligible;
|
||||
}
|
||||
|
||||
function setup(difficulty, lobbyId){
|
||||
var eim = em.newInstance("MK_PrimeMinister2_" +lobbyId);
|
||||
eim.getInstanceMap(106021601).resetFully();
|
||||
eim.getInstanceMap(106021601).allowSummonState(false);
|
||||
respawn(eim);
|
||||
|
||||
return eim;
|
||||
@@ -22,22 +46,26 @@ function setup(difficulty, lobbyId){
|
||||
|
||||
function afterSetup(eim){}
|
||||
|
||||
function primeMinisterCheck(eim) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
return !map.getAllPlayers().isEmpty();
|
||||
}
|
||||
|
||||
function respawn(eim){
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
map.allowSummonState(true);
|
||||
map.instanceMapRespawn();
|
||||
eim.schedule("respawn", 10000);
|
||||
if (primeMinisterCheck(eim)) {
|
||||
eim.startEventTimer(eventTime);
|
||||
|
||||
var weddinghall = eim.getMapInstance(entryMap);
|
||||
weddinghall.getPortal(1).setPortalState(false);
|
||||
weddinghall.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(292, 143));
|
||||
} else {
|
||||
eim.schedule("respawn", 10000);
|
||||
}
|
||||
}
|
||||
|
||||
function playerEntry(eim, player){
|
||||
var weddinghall = eim.getMapInstance(106021601);
|
||||
var weddinghall = eim.getMapInstance(entryMap);
|
||||
player.changeMap(weddinghall, weddinghall.getPortal(1));
|
||||
|
||||
var pm = MapleLifeFactory.getMonster(3300008);
|
||||
weddinghall.spawnMonsterOnGroundBelow(pm, new Packages.java.awt.Point(472, 27));
|
||||
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim){
|
||||
@@ -80,7 +108,7 @@ function playerUnregistered(eim, player){}
|
||||
|
||||
function playerExit(eim, player){
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(entryMap, 2);
|
||||
player.changeMap(exitMap, 2);
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
@@ -97,9 +125,19 @@ function cancelSchedule(){}
|
||||
|
||||
function dispose(){}
|
||||
|
||||
function clearPQ(eim){}
|
||||
function clearPQ(eim){
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim){}
|
||||
function monsterKilled(mob, eim){
|
||||
if (mob.getId() == mobId) {
|
||||
eim.getMapInstance(entryMap).getPortal(1).setPortalState(true);
|
||||
|
||||
eim.showClearEffect();
|
||||
eim.clearPQ();
|
||||
}
|
||||
}
|
||||
|
||||
function allMonstersDead(eim){}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
*/
|
||||
|
||||
var isPq = true;
|
||||
var isGrindMode = true; // stages done after breaking all boxes on maps
|
||||
var isGrindMode = false; // stages done after breaking all boxes on maps
|
||||
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 55, maxLevel = 100;
|
||||
@@ -185,7 +185,7 @@ function setup(level, lobbyid) {
|
||||
eim.getInstanceMap(925100400).resetPQ(level);
|
||||
eim.getInstanceMap(925100500).resetPQ(level);
|
||||
|
||||
respawnStg4(eim);
|
||||
respawnStages(eim);
|
||||
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
@@ -195,9 +195,14 @@ function setup(level, lobbyid) {
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStg4(eim) {
|
||||
function respawnStages(eim) {
|
||||
var stg = eim.getIntProperty("stage2");
|
||||
if (stg < 3) { // thanks Chloek3, seth1, BHB for suggesting map respawn rather than waves on stg2
|
||||
eim.getMapInstance(925100100).spawnAllMonsterIdFromMapSpawnList(9300114 + stg, eim.getIntProperty("level"), true);
|
||||
}
|
||||
|
||||
eim.getMapInstance(925100400).instanceMapRespawn();
|
||||
eim.schedule("respawnStg4", 10 * 1000);
|
||||
eim.schedule("respawnStages", 10 * 1000);
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
|
||||
@@ -44,9 +44,18 @@ function action(mode, type, selection){
|
||||
}
|
||||
|
||||
else if(selection == 1){
|
||||
var pm = cm.getEventManager("MK_PrimeMinister2");
|
||||
pm.setProperty("player", cm.getPlayer().getName());
|
||||
pm.startInstance(cm.getPlayer());
|
||||
var em = cm.getEventManager("MK_PrimeMinister2");
|
||||
|
||||
var party = cm.getPlayer().getParty();
|
||||
if (party != null) {
|
||||
if (!em.startInstance(party, cm.getMap())) {
|
||||
cm.sendOk("Another party is already challenging the boss in this channel.");
|
||||
}
|
||||
} else {
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("Another party is already challenging the boss in this channel.");
|
||||
}
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
return;
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Ronan (HeavenMS)
|
||||
3.0 - Third Version by Jayd - translated CPQ contents to English & added Pirate items
|
||||
Special thanks to 頼晏 (ryantpayton) for also stepping in to translate CPQ scripts.
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
@@ -8,9 +16,9 @@ var n4 = 10; //40
|
||||
var n5 = 20; //50
|
||||
|
||||
var cpqMap = 980000000;
|
||||
var cpqMinLvl = 0;
|
||||
var cpqMaxLvl = 255;
|
||||
var cpqMinAmt = 0;
|
||||
var cpqMinLvl = 30;
|
||||
var cpqMaxLvl = 50;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
@@ -21,6 +29,19 @@ var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
|
||||
if (!Packages.constants.ServerConstants.USE_CPQ) {
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
status = 0;
|
||||
action(1, 0, 4);
|
||||
} else {
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
@@ -39,7 +60,7 @@ function action(mode, type, selection) {
|
||||
|
||||
if (cm.getPlayer().getMapId() == 980000010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("Eu espero que voc<6F> tenha divertido na Folia dos Monstros!");
|
||||
cm.sendNext("I hope you had fun at the Monster Carnival!");
|
||||
} else if (status > 0) {
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
@@ -50,20 +71,20 @@ function action(mode, type, selection) {
|
||||
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);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle despite your excellent performance. Victory can be yours next time! \r\n\r\n#bYour result: " + 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<EFBFBD> mais um pouquinho, e a vit<69>ria poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle, even with your ultimate performance. Just a little bit, and the victory could have been yours! \r\n\r\n#bYour result: " + 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<EFBFBD>os, ent<EFBFBD>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);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle. Victory is for those who strive. I see your efforts, so victory is not far from your reach. Keep it up!\r\n\r\n#bYour result: " + 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);
|
||||
cm.sendOk("Unfortunately, you either equalized or lost the battle, and your performance clearly reflects on it. I expect more from you next time. \r\n\r\n#bYour result: " + shiu);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
@@ -104,19 +125,19 @@ function action(mode, type, selection) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shi += "#rA#k";
|
||||
rnk = 1;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory!!! What a performance! The opposite group could not do anything! I hope the same good work next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory! That was awesome! You did a good job against the opposing group! Just a little longer, and you'll definitely get an A next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory. You did some things here and there, but that can not be considered a good victory. I expect more from you next time. \r\n\r\n#bYour result: " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory, though your performance did not quite reflect that. Be more active in your next participation in the Monster Carnival! \r\n\r\n#bYour result: " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
@@ -154,10 +175,10 @@ 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("You need to create a party first before you can join the battle!");
|
||||
} 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("If you want to start the battle, let the #bParty Leader#k talk to me.");
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
var inMap = cm.partyMembersInMap();
|
||||
@@ -175,15 +196,18 @@ function action(mode, type, selection) {
|
||||
|
||||
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ê.");
|
||||
cm.sendOk("You do not have enough people in your party. You need a party with #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k members and they should be on the map with you.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Certifique se todos em seu grupo estão dentre os níveis corretos (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
cm.sendOk("Make sure everyone in your party is among the correct levels (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
} else if (isOutMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("Existe alguém do grupo que não esta no mapa!");
|
||||
cm.sendOk("There are some of the party members that is not on the map!");
|
||||
} else {
|
||||
cm.sendCPQMapLists();
|
||||
if (!cm.sendCPQMapLists()) {
|
||||
cm.sendOk("All Monster Carnival fields are currently in use! Try again later.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
@@ -192,15 +216,15 @@ function action(mode, type, selection) {
|
||||
cm.challengeParty(selection);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("A sala esta cheia.");
|
||||
cm.sendOk("The room is currently full.");
|
||||
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.");
|
||||
if ((selection >= 0 && selection <= 3) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) {
|
||||
cm.sendOk("You need at least 2 players to participate in the battle!");
|
||||
} else if ((selection >= 4 && selection <= 5) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) {
|
||||
cm.sendOk("You need at least 3 players to participate in the battle!");
|
||||
} else {
|
||||
cm.cpqLobby(selection);
|
||||
}
|
||||
@@ -211,7 +235,7 @@ function action(mode, type, selection) {
|
||||
}
|
||||
} 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";
|
||||
var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l";
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
@@ -224,19 +248,19 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
} else if (cm.getLevel() < 30) {
|
||||
cm.sendOk("Voc<EFBFBD> precisa ser no m<>nimo n<>vel 30 para participar da Folia de Monstros. Fale comigo quando for forte o bastante.");
|
||||
cm.sendOk("You must be at least level 30 to participate in the Monster Carnival. Talk to me when you're strong enough.");
|
||||
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("I'm sorry, but only players of level 30 ~ 50 can participate in the Monster Carnival.");
|
||||
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");
|
||||
cm.sendSimple("What would you like to do?\r\n#b#L0# What is Monster Carnival?#l\r\n#L1# Overview of the Monster Carnival.#l\r\n#L2# Detailed information about the Monster Carnival.#l\r\n#L3# Nothing really, I've changed my mind.#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");
|
||||
cm.sendSimple("Remember, if you have #t4001129#, you can exchange for items. Select the item you would like to change them! \r\n#b#L0# #t1122007# (" + n1 + " coins)#l\r\n#L1# #t2041211# (" + n2 + " coins)#l\r\n#L2# Weapons for Warriors#l\r\n#L3# Weapons for Magician#l\r\n#L4# Weapons for Archers#l\r\n#L5# Weapons for Thief#l\r\n#L6# Weapons for Pirate#l");
|
||||
} else if (selection == 3) {
|
||||
cm.getChar().saveLocation("MONSTER_CARNIVAL");
|
||||
cm.warp(980030000, 0);
|
||||
@@ -269,7 +293,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -n1);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Verifique e veja se est<EFBFBD>o faltando #b#t4001129##k ou se seu invent<6E>rio de Equipamentos est<73> cheio.");
|
||||
cm.sendOk("Check and see if you are missing #b#t4001129##k or if your EQUIP inventory is full.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 1) {
|
||||
@@ -278,25 +302,28 @@ function action(mode, type, selection) {
|
||||
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.sendOk("Check and see if you are missing #b#t4001129##k or if your USE inventory is full.");
|
||||
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");
|
||||
cm.sendSimple("Please make sure you have # t4001129 # for the weapon you want. Select the weapon you would like to trade # t4001129 #. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page (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");
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1372001# (" + n3 + " coins)#l\r\n#L1# #z1382018# (" + n3 + " coins)#l\r\n#L2# #z1372012# (" + n4 + " coins)#l\r\n#L3# #z1382019# (" + n4 + " coins)#l\r\n#L4# #z1382001# (" + n5 + " coins)#l\r\n#L5# #z1372007# (" + n5 + " coins)#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");
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1452006# (" + n3 + " coins)#l\r\n#L1# #z1452007# (" + n4 + " coins)#l\r\n#L2# #z1452008# (" + n5 + " coins)#l\r\n#L3# #z1462005# (" + n3 + " coins)#l\r\n#L4# #z1462006# (" + n4 + " coins)#l\r\n#L5# #z1462007# (" + n5 + " coins)#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");
|
||||
cm.sendSimple("Select the weapon you would like to trade for. The weapons I have are of the highest quality. Select the one most appealing to you! \r\n#b#L0# #z1472013# (" + n3 + " coins)#l\r\n#L1# #z1472017# (" + n4 + " coins)#l\r\n#L2# #z1472021# (" + n5 + " coins)#l\r\n#L3# #z1332014# (" + n3 + " coins)#l\r\n#L4# #z1332031# (" + n4 + " coins)#l\r\n#L5# #z1332011# (" + n4 + " coins)#l\r\n#L6# #z1332016# (" + n5 + " coins)#l\r\n#L7# #z1332003# (" + n5 + " coins)#l");
|
||||
} else if (select == 6) {
|
||||
status = 50; //pirate rewards
|
||||
cm.sendSimple("Select the weapon you would like to trade for. The weapons I have are of the highest quality. Select the one most appealing to you! \r\n#b#L0# #z1482005# (" + n3 + " coins)#l \r\n#b#L1# #z1482006# (" + n4 + " coins)#l \r\n#b#L2# #z1482007# (" + n5 + " coins)#l \r\n#b#L3# #z1492005# (" + n3 + " coins)#l \r\n#b#L4# #z1492006# (" + n4 + " coins)#l \r\n#b#L5# #z1492007# (" + n5 + " coins)#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");
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely useful. Take a look! \r\n#b#L0# #z1322015# (" + n3 + " coins)#l\r\n#L1# #z1422008# (" + n3 + " coins)#l\r\n#L2# #z1322016# (" + n4 + " coins)#l\r\n#L3# #z1422007# (" + n4 + " coins)#l\r\n#L4# #z1322017# (" + n5 + " coins)#l\r\n#L5# #z1422005# (" + n5 + " coins)#l\r\n#L6# #z1432003# (" + n3 + " coins)#l\r\n#L7# #z1442003# (" + n3 + " coins)#l\r\n#L8# #z1432005# (" + n4 + " coins)#l\r\n#L9# #z1442009# (" + n4 + " coins)#l\r\n#L10# #z1442005# (" + n5 + " coins)#l\r\n#L11# #z1432004# (" + n5 + " coins)#l\r\n#L12# Back to the first page (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);
|
||||
@@ -305,14 +332,14 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Voc<EFBFBD> ou n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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");
|
||||
cm.sendSimple("Please make sure you have #b#t4001129##k for the weapon you want. Select the weapon you would like to trade #t4001129#. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page(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);
|
||||
@@ -321,7 +348,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Voc<EFBFBD> ou n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -333,7 +360,7 @@ function action(mode, type, selection) {
|
||||
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.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 31) {
|
||||
@@ -344,7 +371,7 @@ function action(mode, type, selection) {
|
||||
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.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 41) {
|
||||
@@ -355,54 +382,65 @@ function action(mode, type, selection) {
|
||||
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.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 51) {
|
||||
var item = new Array(1482005, 1482006, 1482007, 1492005, 1492006, 1492007);
|
||||
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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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!");
|
||||
cm.sendNext("Haha! I am Spiegelmann, the leader of this Monster Carnival. I got the first #bMonster Carnival#k here, waiting for travelers like you to take part in this 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.");
|
||||
cm.sendNext("#bMonster Carnival#k consists of 2 groups entering the battlefield, and dropping the monsters invoked by the other party. #bA combat brigade that determines the victor by the amount of Carnival Points (CP) received#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<>?");
|
||||
cm.sendNext("When you enter the Carnival Field, you will see the Monster List window appear. All you need to do is #bselect what you want to use, and press OK#k. Very easy, right?");
|
||||
} 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<EFBFBD>ncia que jamais esquecer<65>! <20> uma #bbatalha contra outros viajantes assim como voc<6F>!#k");
|
||||
cm.sendNext("What is #bMonster Carnival#k? Hahaha! Let's say it's an experience you'll never forget! It's a battle against other travelers just like you!#k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Quando entrar no Campo da Folia, sua tarefa <20> #breceber CP ca<EFBFBD>ando os monstros do grupo oposto, e usar estes CP's para distrair o grupo oposto de ca<63>ar monstros.#k.");
|
||||
cm.sendNext("When entering the Carnival Field, your task is to #breceive CP by killing the monsters from the opposite group, and using these CP's to distract the opposing group from hitting monsters#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.");
|
||||
cm.sendNext("Once you get used to the commands, try using #bTAB and F1 ~ F12#k. #bTAB toggles between Monster Invocation / Skills / Protector#k, and, #bF1 ~ F12 enables you to access one of the windows directly#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<EFBFBD>rico. N<>o meu amigo, o que eu ofere<EFBFBD>o <20> competi<EFBFBD><EFBFBD>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<EFBFBD>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<EFBFBD>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");
|
||||
cm.sendNext("I know it's too dangerous for you to fight with each other using real weapons; and I would not suggest such a barbaric act. Not my friend, what I offer to the competition. The excitement of the battle and the excitement of competing against such strong and motivated people. I offer the premise that your group and the opposite group both #binvoquem the monsters, and defeat the monsters invoked by the opposing group. This is the essence of the Monster Carnival. In addition, you can use Maple Coins earned during the Monster Carnival to get new items and weapons! #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'.");
|
||||
cm.sendNext("There are 3 ways to distract the opposing group: #bSummoning a monster, Ability, and Protector#k. I will give you a more in-depth look if you want to know more about 'detailed instructions'!");
|
||||
} 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.");
|
||||
cm.sendNext("#bSummoning#k a Monster calls a monster that attacks the opposing party, under its control. Use CP to bring an Summoned Monster, and it will appear in the same area, attacking the opposing group.");
|
||||
}
|
||||
} 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.sendNext("Of course, it's not that simple. There are other ways to prevent the other group from dropping monsters, and it's up to you to figure out how to do it. What do you think? Interested in a friendly competition?");
|
||||
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.");
|
||||
cm.sendNext("Please remember. It's never a good idea to keep your CP's. #bThe CPs you used will help determine the winner and loser of Monster Carnival.");
|
||||
} 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<EFBFBD>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!");
|
||||
cm.sendNext("#bAbility#k is an option to use abilities such as Darkness, Weakness, and others to prevent the opposing group from killing other monsters. Not many CPs are needed, but it's worth it. The only problem is they do not last very long. Use this tactic wisely!");
|
||||
}
|
||||
} 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.sendNext("Oh, and do not worry about turning into a ghost. In the Monster Carnival, #byou will not lose EXP after death#k. So it's really an experience like no other!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k <20> basicamente um item invocado que aumenta dr<EFBFBD>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.");
|
||||
cm.sendNext("#bProtetor#k basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
}
|
||||
} 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.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var status = 0;
|
||||
|
||||
function start() {
|
||||
if (cm.getPlayer().getParty() != null)
|
||||
cm.sendCPQMapLists();
|
||||
else {
|
||||
cm.sendOk("You must be in a party!");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode < 1)
|
||||
cm.dispose();
|
||||
else {
|
||||
status++;
|
||||
if (status == 1) {
|
||||
if (cm.fieldTaken(selection)) {
|
||||
if (cm.fieldLobbied(selection)) {
|
||||
cm.challengeParty(selection);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("The room is taken.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
cm.cpqLobby(selection);
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,90 +1,468 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Ronan (HeavenMS)
|
||||
3.0 - Third Version by Jayd - translated CPQ contents to English & added Pirate items
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
var n1 = 50; //???
|
||||
var n2 = 40; //??? ???
|
||||
var n3 = 7; //35
|
||||
var n4 = 10; //40
|
||||
var n5 = 20; //50
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
var cpqMap = 980000000;
|
||||
var cpqMinLvl = 30;
|
||||
var cpqMaxLvl = 50;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/* Spiegelmann
|
||||
Refining NPC:
|
||||
* Auto ore refiner
|
||||
*
|
||||
* @author RonanLana
|
||||
*/
|
||||
|
||||
var status;
|
||||
// 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);
|
||||
status = -1;
|
||||
|
||||
if (!Packages.constants.ServerConstants.USE_CPQ) {
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
status = 0;
|
||||
action(1, 0, 4);
|
||||
} else {
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (status >= 0 && mode == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (cm.getPlayer().getMapId() == 980000010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("I hope you had fun at the Monster Carnival!");
|
||||
} 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("Unfortunately, you either drew or lost the battle despite your excellent performance. Victory can be yours next time! \r\n\r\n#bYour result: " + shiu);
|
||||
rnk = 10;
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shiu += "#rB#k";
|
||||
rnk = 20;
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle, even with your ultimate performance. Just a little bit, and the victory could have been yours! \r\n\r\n#bYour result: " + shiu);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shiu += "#rC#k";
|
||||
rnk = 30;
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle. Victory is for those who strive. I see your efforts, so victory is not far from your reach. Keep it up!\r\n\r\n#bYour result: " + shiu);
|
||||
} else {
|
||||
shiu += "#rD#k";
|
||||
rnk = 40;
|
||||
cm.sendOk("Unfortunately, you either equalized or lost the battle, and your performance clearly reflects on it. I expect more from you next time. \r\n\r\n#bYour result: " + shiu);
|
||||
}
|
||||
} else {
|
||||
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 (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("Congratulations on your victory!!! What a performance! The opposite group could not do anything! I hope the same good work next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Congratulations on your victory! That was awesome! You did a good job against the opposing group! Just a little longer, and you'll definitely get an A next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Congratulations on your victory. You did some things here and there, but that can not be considered a good victory. I expect more from you next time. \r\n\r\n#bYour result: " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Congratulations on your victory, though your performance did not quite reflect that. Be more active in your next participation in the Monster Carnival! \r\n\r\n#bYour result: " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} 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("You need to create a party first before you can join the battle!");
|
||||
} else if (!cm.isLeader()) {
|
||||
status = 10;
|
||||
cm.sendOk("If you want to start the battle, let the #bParty Leader#k talk to me.");
|
||||
} else {
|
||||
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("You do not have enough people in your party. You need a party with #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k members and they should be on the map with you.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Make sure everyone in your party is among the correct levels (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
} else if (isOutMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("There are some of the party members that is not on the map!");
|
||||
} else {
|
||||
if (!cm.sendCPQMapLists()) {
|
||||
cm.sendOk("All Monster Carnival fields are currently in use! Try again later.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
if (cm.fieldTaken(selection)) {
|
||||
if (cm.fieldLobbied(selection)) {
|
||||
cm.challengeParty(selection);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("The room is currently full.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection >= 0 && selection <= 3) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) {
|
||||
cm.sendOk("You need at least 2 players to participate in the battle!");
|
||||
} else if ((selection >= 4 && selection <= 5) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) {
|
||||
cm.sendOk("You need at least 3 players to participate in the battle!");
|
||||
} else {
|
||||
cm.cpqLobby(selection);
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 11) {
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
if (mode == 0 && type > 0) {
|
||||
if (status == 0) {
|
||||
var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #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;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if(status == 0) {
|
||||
var selStr = "The Monster Carnival is currently unavailable, but 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);
|
||||
} else if(status == 1) {
|
||||
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 could not be synthetized because either you have a lack of space on your ETC inventory or there's not enough mesos to cover the fee.");
|
||||
}
|
||||
} else if (cm.getLevel() < 30) {
|
||||
cm.sendOk("You must be at least level 30 to participate in the Monster Carnival. Talk to me when you're strong enough.");
|
||||
cm.dispose();
|
||||
return;
|
||||
} else {
|
||||
cm.sendOk("I'm sorry, but only players of level 30 ~ 50 can participate in the Monster Carnival.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
} else if (selection == 1) {
|
||||
status = 60;
|
||||
cm.sendSimple("What would you like to do?\r\n#b#L0# What is Monster Carnival?#l\r\n#L1# Overview of the Monster Carnival.#l\r\n#L2# Detailed information about the Monster Carnival.#l\r\n#L3# Nothing really, I've changed my mind.#l");
|
||||
} else if (selection == 2) {
|
||||
cm.sendSimple("Remember, if you have #t4001129#, you can exchange for items. Select the item you would like to change them! \r\n#b#L0# #t1122007# (" + n1 + " coins)#l\r\n#L1# #t2041211# (" + n2 + " coins)#l\r\n#L2# Weapons for Warriors#l\r\n#L3# Weapons for Magician#l\r\n#L4# Weapons for Archers#l\r\n#L5# Weapons for Thief#l\r\n#L6# Weapons for Pirate#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("Check and see if you are missing #b#t4001129##k or if your EQUIP inventory is full.");
|
||||
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("Check and see if you are missing #b#t4001129##k or if your USE inventory is full.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 2) {//S2 Warrior 26 S3 Magician 6 S4 Bowman 6 S5 Thief 8
|
||||
status = 10;
|
||||
cm.sendSimple("Please make sure you have # t4001129 # for the weapon you want. Select the weapon you would like to trade # t4001129 #. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page (1/2)#l");
|
||||
} else if (select == 3) {
|
||||
status = 20;
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1372001# (" + n3 + " coins)#l\r\n#L1# #z1382018# (" + n3 + " coins)#l\r\n#L2# #z1372012# (" + n4 + " coins)#l\r\n#L3# #z1382019# (" + n4 + " coins)#l\r\n#L4# #z1382001# (" + n5 + " coins)#l\r\n#L5# #z1372007# (" + n5 + " coins)#l");
|
||||
} else if (select == 4) {
|
||||
status = 30;
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1452006# (" + n3 + " coins)#l\r\n#L1# #z1452007# (" + n4 + " coins)#l\r\n#L2# #z1452008# (" + n5 + " coins)#l\r\n#L3# #z1462005# (" + n3 + " coins)#l\r\n#L4# #z1462006# (" + n4 + " coins)#l\r\n#L5# #z1462007# (" + n5 + " coins)#l");
|
||||
} else if (select == 5) {
|
||||
status = 40;
|
||||
cm.sendSimple("Select the weapon you would like to trade for. The weapons I have are of the highest quality. Select the one most appealing to you! \r\n#b#L0# #z1472013# (" + n3 + " coins)#l\r\n#L1# #z1472017# (" + n4 + " coins)#l\r\n#L2# #z1472021# (" + n5 + " coins)#l\r\n#L3# #z1332014# (" + n3 + " coins)#l\r\n#L4# #z1332031# (" + n4 + " coins)#l\r\n#L5# #z1332011# (" + n4 + " coins)#l\r\n#L6# #z1332016# (" + n5 + " coins)#l\r\n#L7# #z1332003# (" + n5 + " coins)#l");
|
||||
} else if (select == 6) {
|
||||
status = 50; //pirate rewards
|
||||
cm.sendSimple("Select the weapon you would like to trade for. The weapons I have are of the highest quality. Select the one most appealing to you! \r\n#b#L0# #z1482005# (" + n3 + " coins)#l \r\n#b#L1# #z1482006# (" + n4 + " coins)#l \r\n#b#L2# #z1482007# (" + n5 + " coins)#l \r\n#b#L3# #z1492005# (" + n3 + " coins)#l \r\n#b#L4# #z1492006# (" + n4 + " coins)#l \r\n#b#L5# #z1492007# (" + n5 + " coins)#l");
|
||||
}
|
||||
} else if (status == 11) {
|
||||
if (selection == 12) {
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely useful. Take a look! \r\n#b#L0# #z1322015# (" + n3 + " coins)#l\r\n#L1# #z1422008# (" + n3 + " coins)#l\r\n#L2# #z1322016# (" + n4 + " coins)#l\r\n#L3# #z1422007# (" + n4 + " coins)#l\r\n#L4# #z1322017# (" + n5 + " coins)#l\r\n#L5# #z1422005# (" + n5 + " coins)#l\r\n#L6# #z1432003# (" + n3 + " coins)#l\r\n#L7# #z1442003# (" + n3 + " coins)#l\r\n#L8# #z1432005# (" + n4 + " coins)#l\r\n#L9# #z1442009# (" + n4 + " coins)#l\r\n#L10# #z1442005# (" + n5 + " coins)#l\r\n#L11# #z1432004# (" + n5 + " coins)#l\r\n#L12# Back to the first page (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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
} else if (status == 12) {
|
||||
if (selection == 12) {
|
||||
status = 10;
|
||||
cm.sendSimple("Please make sure you have #b#t4001129##k for the weapon you want. Select the weapon you would like to trade #t4001129#. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page(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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 51) {
|
||||
var item = new Array(1482005, 1482006, 1482007, 1492005, 1492006, 1492007);
|
||||
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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 61) {
|
||||
select = selection;
|
||||
if (selection == 0) {
|
||||
cm.sendNext("Haha! I am Spiegelmann, the leader of this Monster Carnival. I got the first #bMonster Carnival#k here, waiting for travelers like you to take part in this extravaganza!");
|
||||
} else if (selection == 1) {
|
||||
cm.sendNext("#bMonster Carnival#k consists of 2 groups entering the battlefield, and dropping the monsters invoked by the other party. #bA combat brigade that determines the victor by the amount of Carnival Points (CP) received#k.");
|
||||
} else if (selection == 2) {
|
||||
cm.sendNext("When you enter the Carnival Field, you will see the Monster List window appear. All you need to do is #bselect what you want to use, and press OK#k. Very easy, right?");
|
||||
} else {
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 62) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("What is #bMonster Carnival#k? Hahaha! Let's say it's an experience you'll never forget! It's a battle against other travelers just like you!#k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("When entering the Carnival Field, your task is to #breceive CP by killing the monsters from the opposite group, and using these CP's to distract the opposing group from hitting monsters#k.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("Once you get used to the commands, try using #bTAB and F1 ~ F12#k. #bTAB toggles between Monster Invocation / Skills / Protector#k, and, #bF1 ~ F12 enables you to access one of the windows directly#k.");
|
||||
}
|
||||
} else if (status == 63) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("I know it's too dangerous for you to fight with each other using real weapons; and I would not suggest such a barbaric act. Not my friend, what I offer to the competition. The excitement of the battle and the excitement of competing against such strong and motivated people. I offer the premise that your group and the opposite group both #binvoquem the monsters, and defeat the monsters invoked by the opposing group. This is the essence of the Monster Carnival. In addition, you can use Maple Coins earned during the Monster Carnival to get new items and weapons! #k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("There are 3 ways to distract the opposing group: #bSummoning a monster, Ability, and Protector#k. I will give you a more in-depth look if you want to know more about 'detailed instructions'!");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bSummoning#k a Monster calls a monster that attacks the opposing party, under its control. Use CP to bring an Summoned Monster, and it will appear in the same area, attacking the opposing group.");
|
||||
}
|
||||
} else if (status == 64) {
|
||||
if (select == 0) {
|
||||
cm.sendNext("Of course, it's not that simple. There are other ways to prevent the other group from dropping monsters, and it's up to you to figure out how to do it. What do you think? Interested in a friendly competition?");
|
||||
cm.dispose();
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Please remember. It's never a good idea to keep your CP's. #bThe CPs you used will help determine the winner and loser of Monster Carnival.");
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bAbility#k is an option to use abilities such as Darkness, Weakness, and others to prevent the opposing group from killing other monsters. Not many CPs are needed, but it's worth it. The only problem is they do not last very long. Use this tactic wisely!");
|
||||
}
|
||||
} else if (status == 65) {
|
||||
if (select == 1) {
|
||||
cm.sendNext("Oh, and do not worry about turning into a ghost. In the Monster Carnival, #byou will not lose EXP after death#k. So it's really an experience like no other!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
}
|
||||
} else if (status == 66) {
|
||||
cm.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these 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) {
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Ronan (HeavenMS)
|
||||
3.0 - Third Version by Jayd - translated CPQ contents to English & added Pirate items
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
@@ -7,6 +14,12 @@ var n3 = 7; //35
|
||||
var n4 = 10; //40
|
||||
var n5 = 20; //50
|
||||
|
||||
var cpqMap = 980000000;
|
||||
var cpqMinLvl = 30;
|
||||
var cpqMaxLvl = 50;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
var refineRocks = true; // enables moon rock, star rock
|
||||
var refineCrystals = true; // enables common crystals
|
||||
@@ -15,6 +28,19 @@ var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
|
||||
if (!Packages.constants.ServerConstants.USE_CPQ) {
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
status = 0;
|
||||
action(1, 0, 4);
|
||||
} else {
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
@@ -33,7 +59,7 @@ function action(mode, type, selection) {
|
||||
|
||||
if (cm.getPlayer().getMapId() == 980000010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("Eu espero que voc<6F> tenha divertido na Folia dos Monstros!");
|
||||
cm.sendNext("I hope you had fun at the Monster Carnival!");
|
||||
} else if (status > 0) {
|
||||
cm.warp(980000000, 0);
|
||||
cm.dispose();
|
||||
@@ -44,20 +70,20 @@ function action(mode, type, selection) {
|
||||
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);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle despite your excellent performance. Victory can be yours next time! \r\n\r\n#bYour result: " + 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<EFBFBD> mais um pouquinho, e a vit<69>ria poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle, even with your ultimate performance. Just a little bit, and the victory could have been yours! \r\n\r\n#bYour result: " + 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<EFBFBD>os, ent<EFBFBD>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);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle. Victory is for those who strive. I see your efforts, so victory is not far from your reach. Keep it up!\r\n\r\n#bYour result: " + 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);
|
||||
cm.sendOk("Unfortunately, you either equalized or lost the battle, and your performance clearly reflects on it. I expect more from you next time. \r\n\r\n#bYour result: " + shiu);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
@@ -98,19 +124,19 @@ function action(mode, type, selection) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shi += "#rA#k";
|
||||
rnk = 1;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory!!! What a performance! The opposite group could not do anything! I hope the same good work next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory! That was awesome! You did a good job against the opposing group! Just a little longer, and you'll definitely get an A next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory. You did some things here and there, but that can not be considered a good victory. I expect more from you next time. \r\n\r\n#bYour result: " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory, though your performance did not quite reflect that. Be more active in your next participation in the Monster Carnival! \r\n\r\n#bYour result: " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980000000, 0);
|
||||
@@ -144,9 +170,71 @@ function action(mode, type, selection) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (cm.getMapId() == cpqMap) { // only CPQ1
|
||||
if (status == 0) {
|
||||
if (cm.getParty() == null) {
|
||||
status = 10;
|
||||
cm.sendOk("You need to create a party first before you can join the battle!");
|
||||
} else if (!cm.isLeader()) {
|
||||
status = 10;
|
||||
cm.sendOk("If you want to start the battle, let the #bParty Leader#k talk to me.");
|
||||
} else {
|
||||
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("You do not have enough people in your party. You need a party with #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k members and they should be on the map with you.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Make sure everyone in your party is among the correct levels (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
} else if (isOutMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("There are some of the party members that is not on the map!");
|
||||
} else {
|
||||
if (!cm.sendCPQMapLists()) {
|
||||
cm.sendOk("All Monster Carnival fields are currently in use! Try again later.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
if (cm.fieldTaken(selection)) {
|
||||
if (cm.fieldLobbied(selection)) {
|
||||
cm.challengeParty(selection);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("The room is currently full.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection >= 0 && selection <= 3) && party.size() < 1) {
|
||||
cm.sendOk("You need at least 2 players to participate in the battle!");
|
||||
} else if ((selection >= 4 && selection <= 5) && party.size() < 1) {
|
||||
cm.sendOk("You need at least 3 players to participate in the battle!");
|
||||
} 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";
|
||||
var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l";
|
||||
if (Packages.constants.ServerConstants.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
@@ -159,19 +247,19 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
} else if (cm.getLevel() < 30) {
|
||||
cm.sendOk("Voc<EFBFBD> precisa ser no m<>nimo n<>vel 30 para participar da Folia de Monstros. Fale comigo quando for forte o bastante.");
|
||||
cm.sendOk("You must be at least level 30 to participate in the Monster Carnival. Talk to me when you're strong enough.");
|
||||
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("I'm sorry, but only players of level 30 ~ 50 can participate in the Monster Carnival.");
|
||||
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");
|
||||
cm.sendSimple("What would you like to do?\r\n#b#L0# What is Monster Carnival?#l\r\n#L1# Overview of the Monster Carnival.#l\r\n#L2# Detailed information about the Monster Carnival.#l\r\n#L3# Nothing really, I've changed my mind.#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");
|
||||
cm.sendSimple("Remember, if you have #t4001129#, you can exchange for items. Select the item you would like to change them! \r\n#b#L0# #t1122007# (" + n1 + " coins)#l\r\n#L1# #t2041211# (" + n2 + " coins)#l\r\n#L2# Weapons for Warriors#l\r\n#L3# Weapons for Magician#l\r\n#L4# Weapons for Archers#l\r\n#L5# Weapons for Thief#l\r\n#L6# Weapons for Pirate#l");
|
||||
} else if (selection == 3) {
|
||||
cm.getChar().saveLocation("MONSTER_CARNIVAL");
|
||||
cm.warp(980030000, 0);
|
||||
@@ -204,7 +292,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -n1);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Verifique e veja se est<EFBFBD>o faltando #b#t4001129##k ou se seu invent<6E>rio de Equipamentos est<73> cheio.");
|
||||
cm.sendOk("Check and see if you are missing #b#t4001129##k or if your EQUIP inventory is full.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (select == 1) {
|
||||
@@ -213,25 +301,28 @@ function action(mode, type, selection) {
|
||||
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.sendOk("Check and see if you are missing #b#t4001129##k or if your USE inventory is full.");
|
||||
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");
|
||||
cm.sendSimple("Please make sure you have #t4001129# for the weapon you want. Select the weapon you would like to trade #t4001129#. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page(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");
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1372001# (" + n3 + " coins)#l\r\n#L1# #z1382018# (" + n3 + " coins)#l\r\n#L2# #z1372012# (" + n4 + " coins)#l\r\n#L3# #z1382019# (" + n4 + " coins)#l\r\n#L4# #z1382001# (" + n5 + " coins)#l\r\n#L5# #z1372007# (" + n5 + " coins)#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");
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1452006# (" + n3 + " coins)#l\r\n#L1# #z1452007# (" + n4 + " coins)#l\r\n#L2# #z1452008# (" + n5 + " coins)#l\r\n#L3# #z1462005# (" + n3 + " coins)#l\r\n#L4# #z1462006# (" + n4 + " coins)#l\r\n#L5# #z1462007# (" + n5 + " coins)#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");
|
||||
cm.sendSimple("Select the weapon you would like to trade for. The weapons I have are of the highest quality. Select the one most appealing to you! \r\n#b#L0# #z1472013# (" + n3 + " coins)#l\r\n#L1# #z1472017# (" + n4 + " coins)#l\r\n#L2# #z1472021# (" + n5 + " coins)#l\r\n#L3# #z1332014# (" + n3 + " coins)#l\r\n#L4# #z1332031# (" + n4 + " coins)#l\r\n#L5# #z1332011# (" + n4 + " coins)#l\r\n#L6# #z1332016# (" + n5 + " coins)#l\r\n#L7# #z1332003# (" + n5 + " coins)#l");
|
||||
} else if (select == 6) {
|
||||
status = 50; //pirate rewards
|
||||
cm.sendSimple("Select the weapon you would like to trade for. The weapons I have are of the highest quality. Select the one most appealing to you! \r\n#b#L0# #z1482005# (" + n3 + " coins)#l \r\n#b#L1# #z1482006# (" + n4 + " coins)#l \r\n#b#L2# #z1482007# (" + n5 + " coins)#l \r\n#b#L3# #z1492005# (" + n3 + " coins)#l \r\n#b#L4# #z1492006# (" + n4 + " coins)#l \r\n#b#L5# #z1492007# (" + n5 + " coins)#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");
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely useful. Take a look! \r\n#b#L0# #z1322015# (" + n3 + " coins)#l\r\n#L1# #z1422008# (" + n3 + " coins)#l\r\n#L2# #z1322016# (" + n4 + " coins)#l\r\n#L3# #z1422007# (" + n4 + " coins)#l\r\n#L4# #z1322017# (" + n5 + " coins)#l\r\n#L5# #z1422005# (" + n5 + " coins)#l\r\n#L6# #z1432003# (" + n3 + " coins)#l\r\n#L7# #z1442003# (" + n3 + " coins)#l\r\n#L8# #z1432005# (" + n4 + " coins)#l\r\n#L9# #z1442009# (" + n4 + " coins)#l\r\n#L10# #z1442005# (" + n5 + " coins)#l\r\n#L11# #z1432004# (" + n5 + " coins)#l\r\n#L12# Back to the first page (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);
|
||||
@@ -240,14 +331,14 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Voc<EFBFBD> ou n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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");
|
||||
cm.sendSimple("Please make sure you have #b#t4001129##k for the weapon you want. Select the weapon you would like to trade #t4001129#. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page(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);
|
||||
@@ -256,7 +347,7 @@ function action(mode, type, selection) {
|
||||
cm.gainItem(4001129, -cost[selection]);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Voc<EFBFBD> ou n<>o possui #b#t4001129##k suficientes, ou seu invent<6E>rio est<73> cheio. Verifique novamente.");
|
||||
cm.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -268,7 +359,7 @@ function action(mode, type, selection) {
|
||||
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.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 31) {
|
||||
@@ -279,7 +370,7 @@ function action(mode, type, selection) {
|
||||
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.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 41) {
|
||||
@@ -290,54 +381,65 @@ function action(mode, type, selection) {
|
||||
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.sendOk("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 51) {
|
||||
var item = new Array(1482005, 1482006, 1482007, 1492005, 1492006, 1492007);
|
||||
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("You do not have enough #b#t4001129##k, or your inventory is full. Please check again.");
|
||||
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!");
|
||||
cm.sendNext("Haha! I am Spiegelmann, the leader of this Monster Carnival. I got the first #bMonster Carnival#k here, waiting for travelers like you to take part in this 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.");
|
||||
cm.sendNext("#bMonster Carnival#k consists of 2 groups entering the battlefield, and dropping the monsters invoked by the other party. #bA combat brigade that determines the victor by the amount of Carnival Points (CP) received#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<>?");
|
||||
cm.sendNext("When you enter the Carnival Field, you will see the Monster List window appear. All you need to do is #bselect what you want to use, and press OK#k. Very easy, right?");
|
||||
} 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<EFBFBD>ncia que jamais esquecer<65>! <20> uma #bbatalha contra outros viajantes assim como voc<6F>!#k");
|
||||
cm.sendNext("What is #bMonster Carnival#k? Hahaha! Let's say it's an experience you'll never forget! It's a battle against other travelers just like you!#k");
|
||||
} else if (select == 1) {
|
||||
cm.sendNext("Quando entrar no Campo da Folia, sua tarefa <20> #breceber CP ca<EFBFBD>ando os monstros do grupo oposto, e usar estes CP's para distrair o grupo oposto de ca<63>ar monstros.#k.");
|
||||
cm.sendNext("When entering the Carnival Field, your task is to #breceive CP by killing the monsters from the opposite group, and using these CP's to distract the opposing group from hitting monsters#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.");
|
||||
cm.sendNext("Once you get used to the commands, try using #bTAB and F1 ~ F12#k. #bTAB toggles between Monster Invocation / Skills / Protector#k, and, #bF1 ~ F12 enables you to access one of the windows directly#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<EFBFBD>rico. N<>o meu amigo, o que eu ofere<EFBFBD>o <20> competi<EFBFBD><EFBFBD>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<EFBFBD>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<EFBFBD>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");
|
||||
cm.sendNext("I know it's too dangerous for you to fight with each other using real weapons; and I would not suggest such a barbaric act. Not my friend, what I offer to the competition. The excitement of the battle and the excitement of competing against such strong and motivated people. I offer the premise that your group and the opposite group both #binvoquem the monsters, and defeat the monsters invoked by the opposing group. This is the essence of the Monster Carnival. In addition, you can use Maple Coins earned during the Monster Carnival to get new items and weapons! #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'.");
|
||||
cm.sendNext("There are 3 ways to distract the opposing group: #bSummoning a monster, Ability, and Protector#k. I will give you a more in-depth look if you want to know more about 'detailed instructions'!");
|
||||
} 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.");
|
||||
cm.sendNext("#bSummoning#k a Monster calls a monster that attacks the opposing party, under its control. Use CP to bring an Summoned Monster, and it will appear in the same area, attacking the opposing group.");
|
||||
}
|
||||
} 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.sendNext("Of course, it's not that simple. There are other ways to prevent the other group from dropping monsters, and it's up to you to figure out how to do it. What do you think? Interested in a friendly competition?");
|
||||
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.");
|
||||
cm.sendNext("Please remember. It's never a good idea to keep your CP's. #bThe CPs you used will help determine the winner and loser of Monster Carnival.");
|
||||
} 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<EFBFBD>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!");
|
||||
cm.sendNext("#bAbility#k is an option to use abilities such as Darkness, Weakness, and others to prevent the opposing group from killing other monsters. Not many CPs are needed, but it's worth it. The only problem is they do not last very long. Use this tactic wisely!");
|
||||
}
|
||||
} 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.sendNext("Oh, and do not worry about turning into a ghost. In the Monster Carnival, #byou will not lose EXP after death#k. So it's really an experience like no other!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k <20> basicamente um item invocado que aumenta dr<EFBFBD>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.");
|
||||
cm.sendNext("#bProtetor#k basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
}
|
||||
} 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.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
@@ -21,7 +21,7 @@ function action(mode, type, selection) {
|
||||
status--;
|
||||
if (status == 0) {
|
||||
cm.warpParty(980000000);
|
||||
cm.cancelarSaida();
|
||||
cm.cancelCPQLobby();
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ function start() {
|
||||
|
||||
function action(mode, type, selection) {
|
||||
cm.warpParty(980000000);
|
||||
cm.cancelarSaida();
|
||||
cm.cancelCPQLobby();
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
var cpqMinLvl = 30;
|
||||
var cpqMaxLvl = 255;
|
||||
var cpqMinAmt = 0;
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Jayd - translated CPQ contents to English
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
var cpqMinLvl = 51;
|
||||
var cpqMaxLvl = 69;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
function start() {
|
||||
@@ -23,10 +30,10 @@ function action(mode, type, selection) {
|
||||
if (status == 0) {
|
||||
if (cm.getParty() == null) {
|
||||
status = 10;
|
||||
cm.sendOk("#e<> necess<73>rio criar um grupo antes de come<6D>ar o Festival de Monstros!#k");
|
||||
cm.sendOk("You need to create a party before you can participate in Monster Carnival!");
|
||||
} else if (!cm.isLeader()) {
|
||||
status = 10;
|
||||
cm.sendOk("Se voc<6F> quer come<6D>ar o Festival, avise o #bl<EFBFBD>der do grupo#k para falar comigo.");
|
||||
cm.sendOk("If you want to start the battle, let the #bleader#k come and speak to me.");
|
||||
} else {
|
||||
var leaderMapid = cm.getMapId();
|
||||
var party = cm.getParty().getMembers();
|
||||
@@ -45,15 +52,18 @@ function action(mode, type, selection) {
|
||||
|
||||
if (party >= 1) {
|
||||
status = 10;
|
||||
cm.sendOk("Voc<EFBFBD> n<>o tem n<>mero suficiente de pessoas em seu grupo. Voc<6F> precisa de um grupo com #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k membros e eles devem estar no mapa com voc<6F>.");
|
||||
cm.sendOk("You do not have enough people in your party. You need a party with #b" + cpqMinAmt + "#k - #r" + cpqMaxAmt + "#k members and they should be on the map with you.");
|
||||
} else if (lvlOk != inMap) {
|
||||
status = 10;
|
||||
cm.sendOk("Certifique se todos em seu grupo est<73>o dentre os n<>veis corretos (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
cm.sendOk("Make sure everyone in your party is among the correct levels (" + cpqMinLvl + "~" + cpqMaxLvl + ")!");
|
||||
} else if (isOutMap > 0) {
|
||||
status = 10;
|
||||
cm.sendOk("Existe algu<67>m do grupo que n<>o esta no mapa!");
|
||||
cm.sendOk("There are some of the party members that is not on the map!");
|
||||
} else {
|
||||
cm.sendCPQMapLists2();
|
||||
if (!cm.sendCPQMapLists2()) {
|
||||
cm.sendOk("All Monster Carnival fields are currently in use! Try again later.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (status == 1) {
|
||||
@@ -62,15 +72,15 @@ function action(mode, type, selection) {
|
||||
cm.challengeParty2(selection);
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("A sala esta cheia.");
|
||||
cm.sendOk("The room is currently full.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection === 0 || selection === 1 ) && party.size() < 1) {
|
||||
cm.sendOk("Voc<EFBFBD> precisa de no m<>nimo 2 player para entrar na competi<74><69>o.");
|
||||
} else if ((selection === 2 ) && party.size() < 1) {
|
||||
cm.sendOk("Voc<EFBFBD> precisa de no m<>nimo 3 player para entrar na competi<74><69>o.");
|
||||
if ((selection === 0 || selection === 1 ) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) {
|
||||
cm.sendOk("You need at least 2 players to participate in the battle!");
|
||||
} else if ((selection === 2 ) && party.size() < (Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) {
|
||||
cm.sendOk("You need at least 3 players to participate in the battle!");
|
||||
} else {
|
||||
cm.cpqLobby2(selection);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Jayd - translated CPQ contents to English
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
var status = 0;
|
||||
var rnk = -1;
|
||||
@@ -21,26 +27,33 @@ function action(mode, type, selection) {
|
||||
else
|
||||
status--;
|
||||
|
||||
if (cm.getChar().getMap().isCPQLoserMap()) {
|
||||
if (cm.getPlayer().getMapId() == 980030010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("I hope you had fun at the Monster Carnival!");
|
||||
} else if (status > 0) {
|
||||
cm.warp(980030000, 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);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle despite your excellent performance. Victory can be yours next time! \r\n\r\n#bYour result: " + 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<EFBFBD> mais um pouquinho, e a vit<69>ria poderia ter sido sua.\r\n\r\n#bNota da Folia de Monstros : " + shiu);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle, even with your ultimate performance. Just a little bit, and the victory could have been yours! \r\n\r\n#bYour result: " + 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<EFBFBD>os, ent<EFBFBD>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);
|
||||
cm.sendOk("Unfortunately, you either drew or lost the battle. Victory is for those who strive. I see your efforts, so victory is not far from your reach. Keep it up!\r\n\r\n#bYour result: " + 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);
|
||||
cm.sendOk("Unfortunately, you either equalized or lost the battle, and your performance clearly reflects on it. I expect more from you next time. \r\n\r\n#bYour result: " + shiu);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980030000, 0);
|
||||
@@ -81,19 +94,19 @@ function action(mode, type, selection) {
|
||||
if (cm.getPlayer().getFestivalPoints() >= 300) {
|
||||
shi += "#rA#k";
|
||||
rnk = 1;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory!!! What a performance! The opposite group could not do anything! I hope the same good work next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 100) {
|
||||
shi += "#rB#k";
|
||||
rnk = 2;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory! That was awesome! You did a good job against the opposing group! Just a little longer, and you'll definitely get an A next time! \r\n\r\n#bYour result: " + shi);
|
||||
} else if (cm.getPlayer().getFestivalPoints() >= 50) {
|
||||
shi += "#rC#k";
|
||||
rnk = 3;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory. You did some things here and there, but that can not be considered a good victory. I expect more from you next time. \r\n\r\n#bYour result: " + shi);
|
||||
} else {
|
||||
shi += "#rD#k";
|
||||
rnk = 4;
|
||||
cm.sendOk("Parab<EFBFBD>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);
|
||||
cm.sendOk("Congratulations on your victory, though your performance did not quite reflect that. Be more active in your next participation in the Monster Carnival! \r\n\r\n#bYour result: " + shi);
|
||||
}
|
||||
} else {
|
||||
cm.warp(980030000, 0);
|
||||
|
||||
@@ -21,7 +21,7 @@ function action(mode, type, selection) {
|
||||
status--;
|
||||
if (status == 0) {
|
||||
cm.warpParty(980030000, 4);
|
||||
cm.cancelarSaida();
|
||||
cm.cancelCPQLobby();
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ function action(mode, type, selection) {
|
||||
status--;
|
||||
if (status == 0) {
|
||||
cm.warpParty(980030000, 4);
|
||||
cm.cancelarSaida();
|
||||
cm.cancelCPQLobby();
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,10 +43,6 @@ function action(mode, type, selection) {
|
||||
break;
|
||||
case 925100100:
|
||||
var emp = eim.getProperty("stage2");
|
||||
if (emp == null) {
|
||||
eim.setProperty("stage2", "0");
|
||||
emp = "0";
|
||||
}
|
||||
if (emp.equals("0")) {
|
||||
if (cm.haveItem(4001120,20)) {
|
||||
cm.sendNext("Excellent! Now hunt me 20 Rising Medals.");
|
||||
@@ -55,7 +51,6 @@ function action(mode, type, selection) {
|
||||
eim.setProperty("stage2", "1");
|
||||
} else {
|
||||
cm.sendNext("We are heading into the Pirate Ship now! To get in, we must qualify ourselves as noble pirates. Hunt me 20 Rookie Medals.");
|
||||
if(cm.countMonster() < 1) cm.getPlayer().getMap().spawnAllMonsterIdFromMapSpawnList(9300114, level, true);
|
||||
}
|
||||
} else if (emp.equals("1")) {
|
||||
if (cm.haveItem(4001121,20)) {
|
||||
@@ -65,7 +60,6 @@ function action(mode, type, selection) {
|
||||
eim.setProperty("stage2", "2");
|
||||
} else {
|
||||
cm.sendNext("We are heading into the Pirate Ship now! To get in, we must qualify ourselves as noble pirates. Hunt me 20 Rising Medals.");
|
||||
if(cm.countMonster() < 1) cm.getPlayer().getMap().spawnAllMonsterIdFromMapSpawnList(9300115, level, true);
|
||||
}
|
||||
} else if (emp.equals("2")) {
|
||||
if (cm.haveItem(4001122,20)) {
|
||||
@@ -76,7 +70,6 @@ function action(mode, type, selection) {
|
||||
eim.showClearEffect(cm.getMapId());
|
||||
} else {
|
||||
cm.sendNext("We are heading into the Pirate Ship now! To get in, we must qualify ourselves as noble pirates. Hunt me 20 Veteran Medals.");
|
||||
if(cm.countMonster() < 1) cm.getPlayer().getMap().spawnAllMonsterIdFromMapSpawnList(9300116, level, true);
|
||||
}
|
||||
} else {
|
||||
cm.sendNext("The next stage has opened. GO!");
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
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 - Fourth Version by Drago (MapleStorySA)
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
var status = -1;
|
||||
|
||||
@@ -22,74 +22,94 @@
|
||||
/*
|
||||
* @Name NimaKIN
|
||||
* @Author: Signalize
|
||||
* @Author: MainlandHero - repurposed to be the style setter in-game for mesos
|
||||
* @NPC: 9900000
|
||||
* @Purpose: Hair/Face/Eye Changer -- May set job as GM too
|
||||
* @GMSPurpose: Sets one's job as a GM.
|
||||
* @Purpose: Hair/Face/Eye Changer
|
||||
* @Map: 180000000
|
||||
*/
|
||||
var status = 0;
|
||||
var beauty = 0;
|
||||
var haircolor = Array();
|
||||
var skin = [0, 1, 2, 3, 4, 5, 9, 10];
|
||||
var fhair= [31000, 31010, 31020, 31030, 31040, 31050, 31060, 31070, 31080, 31090, 31100, 31110, 31120, 31130, 31140, 31150, 31160, 31170, 31180, 31190, 31200, 31210, 31220, 31230, 31240, 31250, 31260, 31270, 31280, 31290, 31300, 31310, 31320, 31330, 31340, 31350, 31400, 31410, 31420, 31440, 31450, 31460, 31470, 31480, 31490, 31510, 31520, 31530, 31540, 31550, 31560, 31570, 31580, 31590, 31600, 31610, 31620, 31630, 31640, 31650, 31670, 31680, 31690, 31700, 31710, 31720, 31730, 31740, 31750, 31760, 31770, 31780, 31790, 31800, 31810];
|
||||
var hair = [30000, 30010, 30020, 30030, 30040, 30050, 30060, 30070, 30080, 30090, 30110, 30120, 30130, 30140, 30150, 30160, 30170, 30180, 30190, 30200, 30210, 30220, 30230, 30240, 30250, 30260, 30270, 30280, 30290, 30300, 30310, 30320, 30330, 30340, 30350, 30360, 30370, 30400, 30410, 30420, 30440, 30450, 30460, 30470, 30480, 30490, 30510, 30520, 30530, 30540, 30550, 30560, 30570, 30580, 30590, 30600, 30610, 30620, 30630, 30640, 30650, 30660, 30670, 30680, 30690, 30700, 30710, 30720, 30730, 30740, 30750, 30760, 30770, 30780, 30790, 30800, 30810, 30820, 30840];
|
||||
var fhair= [31000, 31010, 31020, 31030, 31040, 31050, 31060, 31070, 31080, 31090, 31100, 31110, 31120, 31130, 31140, 31150, 31160, 31170, 31180, 31190, 31200, 31210, 31220, 31230, 31240, 31250, 31260, 31270, 31280, 31290, 31300, 31310, 31320, 31330, 31340, 31350, 31400, 31410, 31420, 31440, 31450, 31460, 31470, 31480, 31490, 31510, 31520, 31530, 31540, 31550, 31560, 31570, 31580, 31590, 31600, 31610, 31620, 31630, 31640, 31650, 31670, 31660, 31680, 31690, 31700, 31710, 31720, 31730, 31740, 31750, 31760, 31770, 31780, 31790, 31800, 31810, 31820, 31830, 31840, 31850, 31860, 31870, 31880, 31890, 31910, 31920, 31930, 31940, 31950, 34010, 34020, 34030, 34050, 34110];
|
||||
var hair = [30000, 30010, 30020, 30030, 30040, 30050, 30060, 30070, 30080, 30090, 30110, 30120, 30130, 30140, 30150, 30160, 30170, 30180, 30190, 30200, 30210, 30220, 30230, 30240, 30250, 30260, 30270, 30280, 30290, 30300, 30310, 30320, 30330, 30340, 30350, 30360, 30370, 30400, 30410, 30420, 30440, 30450, 30460, 30470, 30480, 30490, 30510, 30520, 30530, 30540, 30550, 30560, 30570, 30580, 30590, 30600, 30610, 30620, 30630, 30640, 30650, 30660, 30670, 30680, 30690, 30700, 30710, 30720, 30730, 30740, 30750, 30760, 30770, 30780, 30790, 30800, 30810, 30820, 30830, 30840, 30860, 30870, 30880, 30890, 30900, 30910, 30920, 30930, 30940, 30950, 30990, 33000, 33040, 33100];
|
||||
var hairnew = Array();
|
||||
var face = [20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20016, 20017, 20018, 20019, 20020, 20021, 20022, 20023, 20024, 20026];
|
||||
var fface = [21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21009, 21010, 21011, 21012, 21013, 21014, 21016, 21017, 21018, 21019, 21020, 21021, 21022, 21024, 21025];
|
||||
var face = [20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019, 20020, 20021, 20022, 20023, 20024, 20025, 20026, 20027, 20028, 20029, 20031, 20032];
|
||||
var fface = [21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21009, 21010, 21011, 21012, 21013, 21014, 21016, 21017, 21018, 21019, 21020, 21021, 21022, 21023, 21024, 21025, 21026, 21027, 21029, 21030];
|
||||
var facenew = Array();
|
||||
var colors = Array();
|
||||
var price = 100000;
|
||||
|
||||
function start() {
|
||||
if(cm.getPlayer().gmLevel() < 2) {
|
||||
if(cm.getPlayer().gmLevel() < 1) {
|
||||
cm.sendOk("Hey wassup?");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
cm.sendSimple("Hey there, I can change your look. What would you like to change?\r\n#L0#Skin#l\r\n#L1#Hair#l\r\n#L5#Female Hair#l\r\n#L2#Hair Color#l\r\n#L3#Eye#l\r\n#L6#Female Eyes#l\r\n#L4#Eye Color#l\r\n#L7#Set GM job#l");
|
||||
if(cm.getPlayer().isMale()){
|
||||
cm.sendSimple("Hey there, you can change your look for " + price + " mesos. What would you like to change?\r\n#L0#Skin#l\r\n#L1#Male Hair#l\r\n#L2#Hair Color#l\r\n#L3#Male Regular Eyes#l\r\n#L4#Eye Color#l");
|
||||
}else{
|
||||
cm.sendSimple("Hey there, you can change your look for " + price + " mesos. What would you like to change?\r\n#L0#Skin#l\r\n#L5#Female Hair#l\r\n#L2#Hair Color#l\r\n#L6#Female Eyes#l\r\n#L4#Eye Color#l");
|
||||
}
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
status++;
|
||||
if (mode != 1 || cm.getPlayer().gmLevel() < 2){
|
||||
if (mode != 1 || cm.getPlayer().gmLevel() < 1){
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (status == 1) {
|
||||
beauty = selection + 1;
|
||||
if (selection == 0)
|
||||
cm.sendStyle("Pick one?", skin);
|
||||
else if (selection == 1 || selection == 5) {
|
||||
for each(var i in selection == 1 ? hair : fhair)
|
||||
hairnew.push(i);
|
||||
cm.sendStyle("Pick one?", hairnew);
|
||||
} else if (selection == 2) {
|
||||
for(var k = 0; k < 8; k++)
|
||||
haircolor.push(cm.getPlayer().getHair() + k);
|
||||
cm.sendStyle("Pick one?", haircolor);
|
||||
} else if (selection == 3 || selection == 6) {
|
||||
for each(var j in selection == 3 ? face : fface)
|
||||
facenew.push(j);
|
||||
cm.sendStyle("Pick one?", facenew);
|
||||
} else if (selection == 4) {
|
||||
for(var i = 0; i < 9; i++)
|
||||
colors.push(cm.getPlayer().getFace() + (i*100));
|
||||
cm.sendStyle("Pick one?", colors);
|
||||
} else if (selection == 7) {
|
||||
cm.changeJobById(910);
|
||||
if(cm.getMeso() > price){
|
||||
if (selection == 0)
|
||||
cm.sendStyle("Pick one?", skin);
|
||||
else if (selection == 1 || selection == 5) {
|
||||
for each(var i in selection == 1 ? hair : fhair)
|
||||
hairnew.push(i);
|
||||
cm.sendStyle("Pick one?", hairnew);
|
||||
} else if (selection == 2) {
|
||||
var baseHair = parseInt(cm.getPlayer().getHair() / 10) * 10;
|
||||
for(var k = 0; k < 8; k++)
|
||||
haircolor.push(baseHair + k);
|
||||
cm.sendStyle("Pick one?", haircolor);
|
||||
} else if (selection == 3 || selection == 6) {
|
||||
for each(var j in selection == 3 ? face : fface)
|
||||
facenew.push(j);
|
||||
cm.sendStyle("Pick one?", facenew);
|
||||
} else if (selection == 4) {
|
||||
var baseFace = parseInt(cm.getPlayer().getFace() / 1000) * 1000 + parseInt(cm.getPlayer().getFace() % 100);
|
||||
for(var i = 0; i < 9; i++)
|
||||
colors.push(baseFace + (i*100));
|
||||
cm.sendStyle("Pick one?", colors);
|
||||
}
|
||||
} else {
|
||||
cm.sendNext("You don't have enough mesos. Sorry to say this, but without " + price + " mesos, you won't be able to change your look!");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
} else if (status == 2){
|
||||
if (beauty == 1)
|
||||
if (beauty == 1){
|
||||
cm.setSkin(skin[selection]);
|
||||
if (beauty == 2 || beauty == 6)
|
||||
cm.gainMeso(-price);
|
||||
}
|
||||
if (beauty == 2 || beauty == 6){
|
||||
cm.setHair(hairnew[selection]);
|
||||
if (beauty == 3)
|
||||
cm.gainMeso(-price);
|
||||
}
|
||||
if (beauty == 3){
|
||||
cm.setHair(haircolor[selection]);
|
||||
if (beauty == 4 || beauty == 7)
|
||||
cm.gainMeso(-price);
|
||||
}
|
||||
if (beauty == 4 || beauty == 7){
|
||||
cm.setFace(facenew[selection]);
|
||||
if (beauty == 5)
|
||||
cm.gainMeso(-price);
|
||||
}
|
||||
if (beauty == 5){
|
||||
cm.setFace(colors[selection]);
|
||||
cm.gainMeso(-price);
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -46,6 +46,7 @@ function writeFeatureTab_PQs() {
|
||||
addFeature("GuildPQ & queue with multi-lobby system available.");
|
||||
addFeature("Brand-new PQs: BossRushPQ, CafePQ.");
|
||||
addFeature("Mu Lung Dojo.");
|
||||
addFeature("Monster Carnival 1 & 2 - thanks Dragohe4rt & Jayd!");
|
||||
addFeature("Capt. Latanica with party fighting the boss.");
|
||||
addFeature("Filled up missing obligatory event script methods.");
|
||||
addFeature("Secured uniquety of active lobby-name instances.");
|
||||
@@ -74,6 +75,7 @@ function writeFeatureTab_Quests() {
|
||||
|
||||
function writeFeatureTab_PlayerSocialNetwork() {
|
||||
addFeature("Guild and Alliance system fully functional.");
|
||||
addFeature("Guild contract system held in Guild Headquarters.");
|
||||
addFeature("Party for novices-only.");
|
||||
addFeature("P. members' HPBar accounts HP gain on equips.");
|
||||
addFeature("Thoroughly reviewed P. Shops and H. Merchants.");
|
||||
@@ -85,6 +87,7 @@ function writeFeatureTab_PlayerSocialNetwork() {
|
||||
addFeature("Protected and improved face expression system.");
|
||||
addFeature("Automated support for Player NPCs and Hall of Fame.");
|
||||
addFeature("Engagement & Wedding system with ring effects.");
|
||||
addFeature("Wedding Wishlists - thanks Dragohe4rt!");
|
||||
addFeature("Equipments displays to everyone it's level & EXP info.");
|
||||
addFeature("Further improved the existent minigame mechanics.");
|
||||
addFeature("Trade complete using handshake synchronization.");
|
||||
@@ -188,6 +191,7 @@ function writeFeatureTab_Serverpotentials() {
|
||||
addFeature("Enhanced AP auto-assigner: focus on eqp demands.");
|
||||
addFeature("Enhanced inventory check: free slots smartly fetched.");
|
||||
addFeature("Enhanced petloot handler: no brute-force inv. checks.");
|
||||
addFeature("Matching system: everyone's decision to trigger action.");
|
||||
addFeature("Players-appointed bestsellers for Owl and Cash Shop.");
|
||||
addFeature("Tweaked pet/mount hunger to a balanced growth rate.");
|
||||
addFeature("Consistent experience and meso gain system.");
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
/* global cm */
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Jayd - translated CPQ contents to English
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
importPackage(Packages.constants);
|
||||
|
||||
var status = 0;
|
||||
var party;
|
||||
@@ -27,13 +34,14 @@ function action(mode, type, selection) {
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
if (cm.getParty().getMembers().size() == party.size()) {
|
||||
cm.getPlayer().setChallenged(true);
|
||||
var snd = "";
|
||||
for (var i = 0; i < party.size(); i++)
|
||||
snd += "#bNome: " + party.get(i).getName() + " / (Level: " + party.get(i).getLevel() + ") / " + party.get(i).getJobNameById(party.get(i).getJobId()) + "#k\r\n\r\n";
|
||||
cm.sendAcceptDecline(snd + "Gostaria de lutar contra este grupo no Festival de Monstros?");
|
||||
snd += "#bName: " + party.get(i).getName() + " / (Level: " + party.get(i).getLevel() + ") / " + GameConstants.getJobName(party.get(i).getJobId()) + "#k\r\n\r\n";
|
||||
cm.sendAcceptDecline(snd + "Would you like to fight this party at the Monster Carnival?");
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
@@ -45,7 +53,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 nao esta igual.");
|
||||
cm.sendOk("The number of players between the teams is not the same.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
/**
|
||||
-- Version Info -----------------------------------------------------------------------------------
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Jayd - translated CPQ contents to English
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
importPackage(Packages.constants);
|
||||
|
||||
var status = 0;
|
||||
var party;
|
||||
|
||||
@@ -26,13 +35,14 @@ function action(mode, type, selection) {
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
if (cm.getParty().getMembers().size() == party.size()) {
|
||||
cm.getPlayer().setChallenged(true);
|
||||
var snd = "";
|
||||
for (var i = 0; i < party.size(); i++)
|
||||
snd += "#bNome: " + party.get(i).getName() + " / (Level: " + party.get(i).getLevel() + ") / " + party.get(i).getJobNameById(party.get(i).getJobId()) + "#k\r\n\r\n";
|
||||
cm.sendAcceptDecline(snd + "Gostaria de lutar contra este grupo no Festival de Monstros?");
|
||||
snd += "#bName: " + party.get(i).getName() + " / (Level: " + party.get(i).getLevel() + ") / " + GameConstants.getJobName(party.get(i).getJobId()) + "#k\r\n\r\n";
|
||||
cm.sendAcceptDecline(snd + "Would you like to fight this party at the Monster Carnival?");
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -90,6 +90,8 @@ function writeServerStaff_OdinMS() {
|
||||
}
|
||||
|
||||
function writeServerStaff_Contributors() {
|
||||
addPerson("Jayd", "Contributor");
|
||||
addPerson("Dragohe4rt", "Contributor");
|
||||
addPerson("Jvlaple", "Contributor");
|
||||
addPerson("Stereo", "Contributor");
|
||||
addPerson("AngelSL", "Contributor");
|
||||
|
||||
@@ -20,34 +20,50 @@ function enter(pi) {
|
||||
return true;
|
||||
}
|
||||
else if(pi.isQuestStarted(2332) && pi.hasItem(4032388)){
|
||||
if(pi.getPlayer().getParty() != null){
|
||||
pi.getPlayer().showHint("The next part of the quest is solo only! Must leave party.");
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
pi.forceCompleteQuest(2332, 1300002);
|
||||
pi.getPlayer().message("You've found the princess!");
|
||||
pi.giveCharacterExp(4400 * 1.5, pi.getPlayer());
|
||||
var pm = pi.getEventManager("MK_PrimeMinister");
|
||||
pm.setProperty("player", pi.getPlayer().getName());
|
||||
|
||||
pm.startInstance(pi.getPlayer());
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
pi.forceCompleteQuest(2332, 1300002);
|
||||
pi.getPlayer().message("You've found the princess!");
|
||||
pi.giveCharacterExp(4400 * 1.5, pi.getPlayer());
|
||||
|
||||
var em = pi.getEventManager("MK_PrimeMinister");
|
||||
var party = pi.getPlayer().getParty();
|
||||
if (party != null) {
|
||||
if (em.startInstance(party, pi.getMap())) {
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
} else {
|
||||
pi.message("Another party is already challenging the boss in this channel.");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (em.startInstance(pi.getPlayer(), pi.getMap())) {
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
} else {
|
||||
pi.message("Another party is already challenging the boss in this channel.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(pi.isQuestStarted(2333) || (pi.isQuestCompleted(2332) && !pi.isQuestStarted(2333))){
|
||||
if(pi.getPlayer().getParty() != null){
|
||||
pi.getPlayer().showHint("The next part of the quest is solo only! Must leave party.");
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
var pm = pi.getEventManager("MK_PrimeMinister");
|
||||
pm.setProperty("player", pi.getPlayer().getName());
|
||||
|
||||
pm.startInstance(pi.getPlayer());
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
var em = pi.getEventManager("MK_PrimeMinister");
|
||||
|
||||
var party = pi.getPlayer().getParty();
|
||||
if (party != null) {
|
||||
if (em.startInstance(1, party, pi.getMap())) {
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
} else {
|
||||
pi.message("Another party is already challenging the boss in this channel.");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (em.startInstance(pi.getPlayer(), pi.getMap())) {
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
} else {
|
||||
pi.message("Another party is already challenging the boss in this channel.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
@@ -2,12 +2,8 @@
|
||||
QUEST: Where's Violetta?
|
||||
NPC: none
|
||||
*/
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var status = -1;
|
||||
var timeLimit = 10; //10 minutes
|
||||
var eventTimer = 1000 * 60 * timeLimit;
|
||||
var mobId = 3300008; //Prime Minister
|
||||
|
||||
function start(mode, type, selection){
|
||||
if(mode == -1 || (mode == 0 && status == 0)){
|
||||
@@ -28,10 +24,6 @@ function start(mode, type, selection){
|
||||
}
|
||||
else if (status == 2){
|
||||
qm.forceStartQuest();
|
||||
var eim = qm.getEventInstance();
|
||||
eim.startEventTimer(eventTimer);
|
||||
qm.getPlayer().getMap().getPortal(1).setPortalState(false);
|
||||
qm.getPlayer().getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(292, 143));
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -53,13 +45,6 @@ function end(mode, type, selection){
|
||||
else if(status == 1){
|
||||
qm.gainExp(15000);
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
var eim = qm.getEventInstance();
|
||||
qm.getPlayer().getMap().getPortal(1).setPortalState(true);
|
||||
eim.stopEventTimer();
|
||||
eim.warpEventTeam(106021600);
|
||||
|
||||
eim.dispose();
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user