ariantpq + correct use catch item
This commit is contained in:
@@ -15,7 +15,7 @@ var rideTime = 1 * 60 * 1000; //The time that require move to destination
|
||||
function init() {
|
||||
closeTime = em.getTransportationTime(closeTime);
|
||||
beginTime = em.getTransportationTime(beginTime);
|
||||
rideTime = em.getTransportationTime(rideTime);
|
||||
rideTime = em.getTransportationTime(rideTime);
|
||||
|
||||
KC_bfd = em.getChannelServer().getMapFactory().getMap(540010100);
|
||||
CBD_bfd = em.getChannelServer().getMapFactory().getMap(540010001);
|
||||
|
||||
@@ -1,291 +0,0 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Amoria PQ
|
||||
*/
|
||||
|
||||
var isPq = true;
|
||||
var onlyMarriedPlayers = true;
|
||||
var minPlayers = 6, maxPlayers = 6;
|
||||
var minLevel = 40, maxLevel = 255;
|
||||
var entryMap = 670010200;
|
||||
var exitMap = 670011000;
|
||||
var recruitMap = 670010100;
|
||||
var clearMap = 670010800;
|
||||
|
||||
var minMapId = 670010200;
|
||||
var maxMapId = 670010800;
|
||||
|
||||
var eventTime = 75; // 75 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
var reqStr = "";
|
||||
|
||||
reqStr += "\r\n Number of players: ";
|
||||
if(maxPlayers - minPlayers >= 1) reqStr += minPlayers + " ~ " + maxPlayers;
|
||||
else reqStr += minPlayers;
|
||||
|
||||
reqStr += "\r\n Level range: ";
|
||||
if(maxLevel - minLevel >= 1) reqStr += minLevel + " ~ " + maxLevel;
|
||||
else reqStr += minLevel;
|
||||
|
||||
reqStr += "\r\n At least 1 of both genders";
|
||||
if(onlyMarriedPlayers) reqStr += "\r\n All married";
|
||||
|
||||
reqStr += "\r\n Time limit: ";
|
||||
reqStr += eventTime + " minutes";
|
||||
|
||||
em.setProperty("party", reqStr);
|
||||
}
|
||||
|
||||
function setEventExclusives(eim) {
|
||||
var itemSet = [4031594, 4031595, 4031596, 4031597];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [];
|
||||
itemQty = [];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [2000, 4000, 6000, 8000, 9000, 11000]; //bonus exp given on CLEAR stage signal
|
||||
eim.setEventClearStageExp(expStages);
|
||||
}
|
||||
|
||||
function getEligibleParty(party) { //selects, from the given party, the team that is allowed to attempt this event
|
||||
var eligible = [];
|
||||
var hasLeader = false, hasNotMarried = false;
|
||||
var mask = 0;
|
||||
|
||||
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;
|
||||
if(!ch.getPlayer().isMarried()) hasNotMarried = true;
|
||||
eligible.push(ch);
|
||||
|
||||
mask |= (1 << ch.getPlayer().getGender());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers && mask == 3)) eligible = [];
|
||||
if(onlyMarriedPlayers && hasNotMarried) eligible = [];
|
||||
return eligible;
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("Amoria" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
eim.setProperty("marriedGroup", 0);
|
||||
eim.setProperty("missCount", 0);
|
||||
eim.setProperty("statusStg1", -1);
|
||||
eim.setProperty("statusStg2", -1);
|
||||
eim.setProperty("statusStg3", -1);
|
||||
eim.setProperty("statusStg4", -1);
|
||||
eim.setProperty("statusStg5", -1);
|
||||
eim.setProperty("statusStg6", -1);
|
||||
eim.setProperty("statusStgBonus", 0);
|
||||
|
||||
eim.getInstanceMap(670010200).resetPQ(level);
|
||||
eim.getInstanceMap(670010300).resetPQ(level);
|
||||
eim.getInstanceMap(670010301).resetPQ(level);
|
||||
eim.getInstanceMap(670010302).resetPQ(level);
|
||||
eim.getInstanceMap(670010400).resetPQ(level);
|
||||
eim.getInstanceMap(670010500).resetPQ(level);
|
||||
eim.getInstanceMap(670010600).resetPQ(level);
|
||||
eim.getInstanceMap(670010700).resetPQ(level);
|
||||
eim.getInstanceMap(670010750).resetPQ(level);
|
||||
eim.getInstanceMap(670010800).resetPQ(level);
|
||||
|
||||
eim.getInstanceMap(670010200).toggleDrops();
|
||||
eim.getInstanceMap(670010300).toggleDrops();
|
||||
eim.getInstanceMap(670010301).toggleDrops();
|
||||
eim.getInstanceMap(670010302).toggleDrops();
|
||||
|
||||
eim.getInstanceMap(670010200).instanceMapForceRespawn();
|
||||
eim.getInstanceMap(670010500).instanceMapForceRespawn();
|
||||
|
||||
eim.getInstanceMap(670010750).shuffleReactors();
|
||||
eim.getInstanceMap(670010800).shuffleReactors();
|
||||
|
||||
var mapObj = eim.getInstanceMap(670010700);
|
||||
var mobObj = Packages.server.life.MapleLifeFactory.getMonster(9400536);
|
||||
mapObj.spawnMonsterOnGroundBelow(mobObj, new Packages.java.awt.Point(942, 478));
|
||||
|
||||
respawnStages(eim);
|
||||
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function isTeamAllCouple(eim) { // everyone partner of someone on the team
|
||||
var eventPlayers = eim.getPlayers();
|
||||
|
||||
for (var iterator = eventPlayers.iterator(); iterator.hasNext();) {
|
||||
var chr = iterator.next();
|
||||
|
||||
var pid = chr.getPartnerId();
|
||||
if(pid <= 0 || eim.getPlayerById(pid) == null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {
|
||||
if(isTeamAllCouple(eim)) {
|
||||
eim.setIntProperty("marriedGroup", 1);
|
||||
}
|
||||
}
|
||||
|
||||
function respawnStages(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
if(eim.getIntProperty("statusStg6") == 1) {
|
||||
eim.warpEventTeam(exitMap);
|
||||
}
|
||||
else {
|
||||
end(eim);
|
||||
}
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap, 0);
|
||||
}
|
||||
|
||||
function playerLeft(eim, player) {
|
||||
if(!eim.isEventCleared()) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
}
|
||||
|
||||
function changedMap(eim, player, mapid) {
|
||||
if (mapid < minMapId || mapid > maxMapId) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
function changedLeader(eim, leader) {
|
||||
var mapid = leader.getMapId();
|
||||
if (!eim.isEventCleared() && (mapid < minMapId || mapid > maxMapId)) {
|
||||
end(eim);
|
||||
}
|
||||
}
|
||||
|
||||
function playerDead(eim, player) {}
|
||||
|
||||
function playerRevive(eim, player) { // player presses ok on the death pop up.
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function leftParty(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
playerLeft(eim, player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
if (!eim.isEventCleared()) {
|
||||
end(eim);
|
||||
}
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
@@ -1,108 +1,114 @@
|
||||
/*
|
||||
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>
|
||||
/*2101014.js - Lobby and Entrance
|
||||
* @author Jvlaple
|
||||
* For Jvlaple's AriantPQ
|
||||
*/
|
||||
importPackage(java.lang);
|
||||
importPackage(Packages.server.expeditions);
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC NAME: Cesar (2)
|
||||
NPC ID: 2101014
|
||||
Author: Vcoc
|
||||
Function: AriantPQ
|
||||
*/
|
||||
|
||||
status = -1;
|
||||
var sel;
|
||||
empty = [false, false, false];
|
||||
var status = 0;
|
||||
var toBan = -1;
|
||||
var choice;
|
||||
var arena;
|
||||
var arenaName;
|
||||
var type;
|
||||
var map;
|
||||
var exped = MapleExpeditionType.ARIANT;
|
||||
var exped1 = MapleExpeditionType.ARIANT1;
|
||||
var exped2 = MapleExpeditionType.ARIANT2;
|
||||
|
||||
function start() {
|
||||
if((cm.getPlayer().getLevel() < 19 || cm.getPlayer().getLevel() > 30) && !cm.getPlayer().isGM()){
|
||||
cm.sendNext("You're not between level 20 and 30. Sorry, you may not participate.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
var text = "What do you want?#b";
|
||||
for(var i = 0; i < 3; i += 1)
|
||||
if (cm.getPlayerCount(980010100 + (i * 100)) > 0)
|
||||
if(cm.getPlayerCount(980010101 + (i * 100)) > 0)
|
||||
continue;
|
||||
else
|
||||
text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "([" + cm.getPlayerCount(980010100 + (i * 100)) + "/" + cm.getPlayer().getAriantSlotsRoom(i) + "] users: " + cm.getPlayer().getAriantRoomLeaderName(i) + ")#l";
|
||||
else{
|
||||
empty[i] = true;
|
||||
text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "( Empty )#l";
|
||||
if(cm.getPlayer().getAriantRoomLeaderName(i) != "")
|
||||
cm.getPlayer().removeAriantRoom(i);
|
||||
}
|
||||
cm.sendSimple(text + "\r\n#L3# I'd like to know more about the competition.#l");
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection){
|
||||
status++;
|
||||
if(mode != 1){
|
||||
if(mode == 0 && type == 0)
|
||||
status -= 2;
|
||||
else{
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1) {
|
||||
status++;
|
||||
} else {
|
||||
status--;
|
||||
}
|
||||
if (cm.getPlayer().getMapId() == 980010000) {
|
||||
var expedicao = cm.getExpedition(exped);
|
||||
var expedicao1 = cm.getExpedition(exped1);
|
||||
var expedicao2 = cm.getExpedition(exped2);
|
||||
if (status == 0) {
|
||||
var toSnd = "Você gostaria de participar do Desafio #eAriant Coliseu#n?\r\n\r\n#e#r (Escolha uma arena)#n#k\r\n#b";
|
||||
|
||||
if (cm.getClient().getChannelServer().getMapFactory().getMap(980010100).getCharacters().size() == 0 && expedicao == null) {
|
||||
toSnd += "#L0#Comece Ariant Coliseu (1)#l\r\n";
|
||||
} else if (expedicao != null && cm.getClient().getChannelServer().getMapFactory().getMap(980010101).getCharacters().size() == 0) {
|
||||
toSnd += "#L0#Junte-se ao Ariant Coliseu (1) Dono (" + expedicao.getLeader().getName() + ")" + " Membros Atuais: " + cm.getNomeDosMembrosExpedition(exped) + "\r\n";
|
||||
}
|
||||
if (cm.getClient().getChannelServer().getMapFactory().getMap(980010200).getCharacters().size() == 0 && expedicao1 == null) {
|
||||
toSnd += "#L1#Comece Ariant Coliseu (2)#l\r\n";
|
||||
} else if (expedicao1 != null && cm.getClient().getChannelServer().getMapFactory().getMap(980010201).getCharacters().size() == 0) {
|
||||
toSnd += "#L1#Junte-se ao Ariant Coliseu (2) Dono (" + expedicao1.getLeader().getName() + ")" + " Membros Atuais: " + cm.getNomeDosMembrosExpedition(exped1) + "\r\n";
|
||||
}
|
||||
if (cm.getClient().getChannelServer().getMapFactory().getMap(980010300).getCharacters().size() == 0 && expedicao2 == null) {
|
||||
toSnd += "#L2#Comece Ariant Coliseu (3)#l\r\n";
|
||||
} else if (expedicao2 != null && cm.getClient().getChannelServer().getMapFactory().getMap(980010301).getCharacters().size() == 0) {
|
||||
toSnd += "#L2#Junte-se ao Ariant Coliseu (3) Dono (" + expedicao2.getLeader().getName() + ")" + " Membros Atuais: " + cm.getNomeDosMembrosExpedition(exped2) + "\r\n";
|
||||
}
|
||||
if (toSnd.equals("Você gostaria de participar do Desafio #eAriant Coliseu#n?\r\n\r\n#e#r (Escolha uma arena)#n#k\r\n#b")) {
|
||||
cm.sendOk("Todas as arenas esta ocupadas agora. Eu sugiro que você volte mais tarde ou mudar de canal.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(toSnd);
|
||||
}
|
||||
} else if (status == 1) {
|
||||
switch (selection) {
|
||||
case 0 :
|
||||
exped = MapleExpeditionType.ARIANT;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
map = 980010100;
|
||||
break;
|
||||
case 1 :
|
||||
exped = MapleExpeditionType.ARIANT1;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
map = 980010200;
|
||||
break;
|
||||
case 2 :
|
||||
exped = MapleExpeditionType.ARIANT2;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
map = 980010300;
|
||||
break;
|
||||
default :
|
||||
exped = null;
|
||||
map = 0;
|
||||
return;
|
||||
break;
|
||||
}
|
||||
if (expedicao == null) {
|
||||
cm.createExpedition(exped);
|
||||
cm.warp(map, 0);
|
||||
cm.getPlayer().dropMessage("Sua Arena foi criada. Aguarde as pessoas entrarem agora!");
|
||||
cm.dispose();
|
||||
} else {
|
||||
var playerAdd = expedicao.addMemberInt(cm.getPlayer());
|
||||
if (playerAdd == 3) {
|
||||
cm.sendOk("Desculpe, a Lobby esta cheia agora.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (playerAdd == 0) {
|
||||
cm.warp(map, 0);
|
||||
cm.dispose();
|
||||
} else if (playerAdd == 2) {
|
||||
cm.sendOk("Desculpe, mas o líder pediu para nao ser autorizado a entrar.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("erro.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (status == 0){
|
||||
if(sel == undefined)
|
||||
sel = selection;
|
||||
if(sel == 3)
|
||||
cm.sendNext("What do you need to do? You must be new to this. Allow me explain in detail.");
|
||||
else{
|
||||
if(cm.getPlayer().getAriantRoomLeaderName(sel) != "" && empty[sel])
|
||||
empty[sel] = false;
|
||||
else if(cm.getPlayer().getAriantRoomLeaderName(sel) != ""){
|
||||
cm.warp(980010100 + (sel * 100));
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if(!empty[sel]){
|
||||
cm.sendNext("Another combatant has created the battle arena first. I advise you to either set up a new one, or join the battle arena that's already been set up.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
cm.sendGetNumber("Up to how many participants can join in this match? (2~6 ppl)", 0, 2, 6);
|
||||
}
|
||||
}else if (status == 1){
|
||||
if(sel == 3)
|
||||
cm.sendNextPrev("It's really simple, actually. You'll receive #b#t2270002##k from me, and your task is to eliminate a set amount of HP from the monster, then use #b#t2270002##k to absorb its monstrous power.");
|
||||
else{
|
||||
if(cm.getPlayer().getAriantRoomLeaderName(sel) != "" && empty[sel])
|
||||
empty[sel] = false;
|
||||
if(!empty[sel]){
|
||||
cm.sendNext("Another combatant has created the battle arena first. I advise you to either set up a new one, or join the battle arena that's already been set up.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
cm.getPlayer().setAriantRoomLeader(sel, cm.getPlayer().getName());
|
||||
cm.getPlayer().setAriantSlotRoom(sel, selection);
|
||||
cm.warp(980010100 + (sel * 100));
|
||||
cm.dispose();
|
||||
}
|
||||
}else if (status == 2)
|
||||
cm.sendNextPrev("It's simple. If you absorb the power of the monster #b#t2270002##k, then you'll make #b#t4031868##k, which is something Queen Areda loves. The combatant with the most jewels wins the match. It's actually a smart idea to prevent others from absorbing in order to win.");
|
||||
else if (status == 3)
|
||||
cm.sendNextPrev("One thing. Using #b#t2100067##k, you can steal #b#t4031868##k from your enemies. Warning: #rYou may not use pets for this.#k Understood?!");
|
||||
else if (status == 4)
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
37
scripts/npc/2101015.js
Normal file
37
scripts/npc/2101015.js
Normal file
@@ -0,0 +1,37 @@
|
||||
var status = 0;
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && status == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
if (status == 0) {
|
||||
apqpontos = cm.getPlayer().getAriantPontos();
|
||||
if (apqpontos < 100) {
|
||||
cm.sendOk("A sua Pontuação de Arena de Batalha é #b" + apqpontos + "#k Pontos. Você precisa ultrapassar os #b100 Pontos#k para que eu possa lhe dar a #bCadeira de Praia com Palmeira#k.Estou ocupado, então fale comigo quando você tiver pontos suficientes e fale comigo novamente.")
|
||||
cm.dispose();
|
||||
}
|
||||
if (apqpontos > 99) {
|
||||
cm.sendNext("Uaaal, parece que você conseguiu os #b100 Pontos#k necessários para troca, vamos lá?!");
|
||||
}
|
||||
} else if (status == 1) {
|
||||
cm.getPlayer().gainAriantPontos(-100);
|
||||
cm.gainItem(3010018, 1);
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
scripts/npc/2101016.js
Normal file
40
scripts/npc/2101016.js
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
var status = 0;
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && status == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
if (status == 0) {
|
||||
copns = cm.getPlayer().countItem(4031868);
|
||||
if (copns < 1) {
|
||||
cm.sendOk("Que pena, você nao conseguiu nenhuma jóia!")
|
||||
cm.dispose();
|
||||
}
|
||||
if (copns > 0 || !cm.getPlayer().isGM()) {
|
||||
cm.sendNext("Ok, vamos ver...Você foi muito bem, e você trouxe #b" + copns + "#k jóias que eu adoro. Como você completou a partida, vou recompensá-lo com a pontuação da Arena de Batalhas de #b5 Pontos#k. Se você quiser saber mais sobre a pontuação de Arena de Batalha, então fale com #b#p2101015##k.");
|
||||
}
|
||||
} else if (status == 1) {
|
||||
//cm.warp(980010020, 0);
|
||||
cm.removeAll(4031868);
|
||||
cm.getPlayer().gainExp(92.7 * cm.getPlayer().getExpRate() * copns, true, true);
|
||||
cm.getPlayer().gainAriantPontos(3);
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,150 +1,142 @@
|
||||
/*
|
||||
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>
|
||||
/*2101017.js
|
||||
*Cesar
|
||||
*@author Jvlaple
|
||||
*/
|
||||
|
||||
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.
|
||||
importPackage(java.lang);
|
||||
importPackage(Packages.server.expeditions);
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC NAME: Cesar (3)
|
||||
NPC ID: 2101017
|
||||
Author: Vcoc
|
||||
Function: AriantPQ
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.client);
|
||||
|
||||
status = -1;
|
||||
var sel;
|
||||
var status = 0;
|
||||
var toBan = -1;
|
||||
var choice;
|
||||
var arena;
|
||||
var arenaName;
|
||||
var type;
|
||||
var map;
|
||||
var exped = MapleExpeditionType.ARIANT;
|
||||
var exped1 = MapleExpeditionType.ARIANT1;
|
||||
var exped2 = MapleExpeditionType.ARIANT2;
|
||||
var expedicao;
|
||||
var expedMembers;
|
||||
|
||||
function start() {
|
||||
if((cm.getPlayer().getLevel() < 19 || cm.getPlayer().getLevel() > 30) && !cm.getPlayer().isGM()){
|
||||
cm.sendNext("You're not between level 20 and 30. Sorry, you may not participate.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if(cm.getPlayer().getMapId() % 10 == 1)
|
||||
cm.sendSimple("Do you have a request for me?\r\n#b#L0# Give me #t2270002# and #t2100067#.#l\r\n#L1# What should I do?#l\r\n#L2# Get me out of here.#l");
|
||||
else
|
||||
cm.sendSimple(cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1) == cm.getPlayer().getName() ? "Would you like to start the match?#b\r\n#b#L3# Ready to enter the Battle Arena!!#l\r\n#L1# I'd like to kick another character.#l\r\n#L2# Get me out of here.#l" : "What do you want?#b\r\n#L2# Get me out of here.#l");
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection){
|
||||
status++;
|
||||
if(mode != 1){
|
||||
if(mode == 0 && type == 0)
|
||||
status -= 2;
|
||||
else{
|
||||
function action(mode, type, selection) {
|
||||
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(cm.getPlayer().getMapId() % 10 == 1){
|
||||
if (status == 0){
|
||||
if (sel == undefined)
|
||||
sel = selection;
|
||||
if(sel == 0){
|
||||
if(cm.haveItem(2270002))
|
||||
cm.sendNext("You already have #b#t2270002##k.");
|
||||
else if(cm.canHold(2270002) && cm.canHold(2100067)){
|
||||
if(cm.haveItem(2100067))
|
||||
cm.removeAll(2100067);
|
||||
cm.gainItem(2270002, 50);
|
||||
cm.gainItem(2100067, 5);
|
||||
cm.sendNext("Now lower the HP of the monsters, and use #b#t2270002##k to absorb their power!");
|
||||
}else
|
||||
cm.sendNext("Check and see if your Use inventory is full or not");
|
||||
cm.dispose();
|
||||
}else if(sel == 1)
|
||||
cm.sendNext("What do you need to do? You must be new to this. Allow me explain in detail.");
|
||||
else
|
||||
cm.sendYesNo("Are you sure you want to leave?"); //No GMS like.
|
||||
} else if (status == 1){
|
||||
if(type == 1){
|
||||
cm.removeAll(4031868);
|
||||
cm.removeAll(2270002);
|
||||
cm.removeAll(2100067);
|
||||
cm.warp(980010020);
|
||||
cm.dispose();
|
||||
return;
|
||||
|
||||
if (cm.getPlayer().getMapId() == 980010100 || cm.getPlayer().getMapId() == 980010200 || cm.getPlayer().getMapId() == 980010300) {
|
||||
if (cm.getPlayer().getMapId() == 980010100) {
|
||||
exped = MapleExpeditionType.ARIANT;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
|
||||
} else if (cm.getPlayer().getMapId() == 980010200) {
|
||||
exped = MapleExpeditionType.ARIANT1;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
} else {
|
||||
exped = MapleExpeditionType.ARIANT2;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
}
|
||||
cm.sendNextPrev("It's really simple, actually. You'll receive #b#t2270002##k from me, and your task is to eliminate a set amount of HP from the monster, then use #b#t2270002##k to absorb its monstrous power.");
|
||||
} else if (status == 2)
|
||||
cm.sendNextPrev("It's simple. If you absorb the power of the monster #b#t2270002##k, then you'll make #b#t4031868##k, which is something Queen Areda loves. The combatant with the most jewels wins the match. It's actually a smart idea to prevent others from absorbing in order to win.");
|
||||
else if (status == 3)
|
||||
cm.sendNextPrev("One thing. Using #b#t2100067##k, you can steal #b#t4031868##k from your enemies. Warning: #rYou may not use pets for this.#k Understood?!");
|
||||
else if (status == 4)
|
||||
cm.dispose();
|
||||
}else{
|
||||
var nextchar = cm.getMap(cm.getPlayer().getMapId()).getCharacters().iterator();
|
||||
if(status == 0){
|
||||
if (sel == undefined)
|
||||
sel = selection;
|
||||
if(sel == 1)
|
||||
if(cm.getPlayerCount(cm.getPlayer().getMapId()) > 1){
|
||||
var text = "Who would you like to kick from room?"; //Not GMS like text
|
||||
var name;
|
||||
for(var i = 0; nextchar.hasNext(); i++){
|
||||
name = nextchar.next().getName();
|
||||
if(!cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1).equals(name))
|
||||
text += "\r\n#b#L" + i + "#" + name + "#l";
|
||||
expedMembers = expedicao.getMemberList();
|
||||
if (status == 0) {
|
||||
if (cm.getIsLeaderExpedition(exped)) {
|
||||
cm.sendSimple("O que voce gostaria de fazer?#b\r\n\r\n#L1#Ver registro atual da arena!#l\r\n#L2#Banir player!#l\r\n#L3#Comece a luta!#l\r\n#L4#Sair desta arena!#l");
|
||||
status = 1;
|
||||
} else {
|
||||
var toSend = "Voce tem atualmente essas pessoas em sua arena :\r\n#b";
|
||||
toSend += cm.getNomeDosMembrosExpedition(exped);
|
||||
cm.sendOk(toSend);
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 1) {
|
||||
if (selection == 1) {
|
||||
var toSend = "Voce tem atualmente essas pessoas em sua arena :\r\n#b";
|
||||
toSend += cm.getNomeDosMembrosExpedition(exped);
|
||||
cm.sendOk(toSend);
|
||||
cm.dispose();
|
||||
} else if (selection == 2) {
|
||||
var size = expedMembers.size();
|
||||
if (size == 1) {
|
||||
cm.sendOk("You are the only member of the expedition.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
var text = "The following members make up your expedition (Click on them to expel them):\r\n";
|
||||
text += "\r\n\t\t1." + expedicao.getLeader().getName();
|
||||
for (var i = 1; i < size; i++) {
|
||||
text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedMembers.get(i).getValue() + "#l\n";
|
||||
}
|
||||
cm.sendSimple(text);
|
||||
}else{
|
||||
cm.sendNext("There's no character that can be kicked right now.");
|
||||
status = 6;
|
||||
} else if (selection == 3) {
|
||||
if (expedicao.getMembers().size() < 1) {
|
||||
cm.sendOk("Você precisa de mais que 2 jogadores para iniciar.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (cm.getParty() != null) {
|
||||
cm.sendOk("Você não pode entrar na batalha em um grupo.");
|
||||
cm.dispose();
|
||||
}
|
||||
if (cm.getPlayer().getMapId() == 980010100) {
|
||||
cm.warpExpedition(980010101, exped);
|
||||
} else if (cm.getPlayer().getMapId() == 980010200) {
|
||||
cm.warpExpedition(980010201, exped);
|
||||
} else {
|
||||
cm.warpExpedition(980010301, exped);
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (selection == 4) {
|
||||
cm.mapMessage(5, "O lider da Arena saiu.");
|
||||
cm.warpExpedition(980010000, null);
|
||||
cm.endExpedition(expedicao);
|
||||
cm.dispose();
|
||||
}
|
||||
else if(sel == 2){
|
||||
if(cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1) == cm.getPlayer().getName())
|
||||
cm.sendYesNo("Are you sure you want to leave? You're the leader of the Arena, so if you leave, the whole Battle Arena will close.");
|
||||
else
|
||||
cm.sendYesNo("Are you sure you want to leave?"); //No GMS like.
|
||||
}else if(sel == 3)
|
||||
if(cm.getPlayerCount(cm.getPlayer().getMapId()) > 1)
|
||||
cm.sendYesNo("The room is all set, and no other character may join this Battle Arena. Do you want to start the game right now?");
|
||||
else{
|
||||
cm.sendNext("You'll need at least 2 participants inside in order to start the match.");
|
||||
} else if (status == 6) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedicao.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
status = 2;
|
||||
}
|
||||
}
|
||||
} else if (cm.getPlayer().getMapId() == 980010101 || cm.getPlayer().getMapId() == 980010201 || cm.getPlayer().getMapId() == 980010301) {
|
||||
if (cm.getPlayer().getMapId() == 980010100) {
|
||||
exped = MapleExpeditionType.ARIANT;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
|
||||
} else if (cm.getPlayer().getMapId() == 980010200) {
|
||||
exped = MapleExpeditionType.ARIANT1;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
} else {
|
||||
exped = MapleExpeditionType.ARIANT2;
|
||||
expedicao = cm.getExpedition(exped);
|
||||
}
|
||||
if (status == 0) {
|
||||
var gotTheBombs = expedicao.getProperty("gotBomb" + cm.getChar().getId());
|
||||
if (gotTheBombs != null) {
|
||||
cm.sendOk("Eu ja lhe dei as bombas, por favor, mate os #eEscorpioes#n para conseguir mais na proxima!");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("Eu lhe dei (5) #b#eBombas#k#n e (50) #b#eRochas Elementais#k#n.\r\nUse as rochas elementais para capturar os escorpioes para Sra.#r#eSpirit Jewels#k#n!");
|
||||
expedicao.setProperty("gotBomb" + cm.getChar().getId(), "got");
|
||||
cm.gainItem(2270002, 50);
|
||||
cm.gainItem(2100067, 5);
|
||||
cm.dispose();
|
||||
}
|
||||
}else if (status == 1){
|
||||
if(sel == 1){
|
||||
for(var i = 0; nextchar.hasNext(); i++)
|
||||
if(i == selection){
|
||||
nextchar.next().changeMap(cm.getMap(980010000));
|
||||
break;
|
||||
}else
|
||||
nextchar.next();
|
||||
cm.sendNext("Player have been kicked out of the Arena."); //Not GMS like
|
||||
}else if(sel == 2){
|
||||
if(cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1) != cm.getPlayer().getName())
|
||||
cm.warp(980010000);
|
||||
else{
|
||||
cm.getPlayer().removeAriantRoom((cm.getPlayer().getMapId() / 100) % 10);
|
||||
cm.mapMessage(6, cm.getPlayer().getName() + " has left the Arena, so the Arena will now close.");
|
||||
cm.warpMap(980010000);
|
||||
}
|
||||
}else{
|
||||
cm.warpMap(cm.getPlayer().getMapId() + 1);
|
||||
//}
|
||||
//cm.getPlayer().getMap().broadcastMessage(MaplePacketCreator.updateAriantPQRanking(cm.getPlayer().getName(), 0, true));
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user