sweetgum83/scripts/npc/2101014.js
2024-01-19 03:56:28 -05:00

180 lines
6.5 KiB
JavaScript

/*2101014.js - Lobby and Entrance
* @author Jvlaple
* For Jvlaple's AriantPQ
*/
var status = 0;
var toBan = -1;
var choice;
var arenaType;
var arena;
var arenaName;
var type;
var map;
const ExpeditionType = Java.type('server.expeditions.ExpeditionType');
var exped = ExpeditionType.ARIANT;
var exped1 = ExpeditionType.ARIANT1;
var exped2 = ExpeditionType.ARIANT2;
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 (cm.getPlayer().getMapId() == 980010000) {
if (cm.getLevel() > 30) {
cm.sendOk("You are already over #rlevel 30#k, therefore you can't participate in this instance anymore.");
cm.dispose();
return;
}
if (status == 0) {
var expedicao = cm.getExpedition(exped);
var expedicao1 = cm.getExpedition(exped1);
var expedicao2 = cm.getExpedition(exped2);
var channelMaps = cm.getClient().getChannelServer().getMapFactory();
var startSnd = "What would you like to do? \r\n\r\n\t#e#r(Choose a Battle Arena)#n#k\r\n#b";
var toSnd = startSnd;
if (expedicao == null) {
toSnd += "#L0#Battle Arena (1) (Empty)#l\r\n";
} else if (channelMaps.getMap(980010101).getCharacters().isEmpty()) {
toSnd += "#L0#Join Battle Arena (1) Owner (" + expedicao.getLeader().getName() + ")" + " Current Member: " + cm.getExpeditionMemberNames(exped) + "\r\n";
}
if (expedicao1 == null) {
toSnd += "#L1#Battle Arena (2) (Empty)#l\r\n";
} else if (channelMaps.getMap(980010201).getCharacters().isEmpty()) {
toSnd += "#L1#Join Battle Arena (2) Owner (" + expedicao1.getLeader().getName() + ")" + " Current Member: " + cm.getExpeditionMemberNames(exped1) + "\r\n";
}
if (expedicao2 == null) {
toSnd += "#L2#Battle Arena (3) (Empty)#l\r\n";
} else if (channelMaps.getMap(980010301).getCharacters().isEmpty()) {
toSnd += "#L2#Join Battle Arena (3) Owner (" + expedicao2.getLeader().getName() + ")" + " Current Member: " + cm.getExpeditionMemberNames(exped2) + "\r\n";
}
if (toSnd === startSnd) {
cm.sendOk("All the Battle Arena is currently occupied. I suggest you to come back later or change channels.");
cm.dispose();
} else {
cm.sendSimple(toSnd);
}
} else if (status == 1) {
arenaType = selection;
expedicao = fetchArenaType();
if (expedicao == "") {
cm.dispose();
return;
}
if (expedicao != null) {
enterArena(-1);
} else {
cm.sendGetText("Up to how many partipants can join in this match? (2~5 people)");
}
} else if (status == 2) {
var players = parseInt(cm.getText()); // AriantPQ option limit found thanks to NarutoFury (iMrSiN)
if (isNaN(players)) {
cm.sendNext("Please enter a numeric limit value of allowed players in your instance.");
status = 0;
} else if (players < 2) {
cm.sendNext("The numeric limit value should not be less than 2 players.");
status = 0;
} else {
enterArena(players);
}
}
}
}
}
function fetchArenaType() {
switch (arenaType) {
case 0 :
exped = ExpeditionType.ARIANT;
expedicao = cm.getExpedition(exped);
map = 980010100;
break;
case 1 :
exped = ExpeditionType.ARIANT1;
expedicao = cm.getExpedition(exped);
map = 980010200;
break;
case 2 :
exped = ExpeditionType.ARIANT2;
expedicao = cm.getExpedition(exped);
map = 980010300;
break;
default :
exped = null;
map = 0;
expedicao = "";
}
return expedicao;
}
function enterArena(arenaPlayers) {
expedicao = fetchArenaType();
if (expedicao == "") {
cm.dispose();
} else if (expedicao == null) {
if (arenaPlayers != -1) {
var res = cm.createExpedition(exped, true, 0, arenaPlayers);
if (res == 0) {
cm.warp(map, 0);
cm.getPlayer().dropMessage("Your arena was created successfully. Wait for people to join the battle.");
} else if (res > 0) {
cm.sendOk("Sorry, you've already reached the quota of attempts for this expedition! Try again another day...");
} else {
cm.sendOk("An unexpected error has occurred when starting the expedition, please try again later.");
}
} else {
cm.sendOk("An unexpected error has occurred when locating the expedition, please try again later.");
}
cm.dispose();
} else {
if (playerAlreadyInLobby(cm.getPlayer())) {
cm.sendOk("Sorry, you're already inside the lobby.");
cm.dispose();
return;
}
var playerAdd = expedicao.addMemberInt(cm.getPlayer());
if (playerAdd == 3) {
cm.sendOk("Sorry, the lobby is full now");
cm.dispose();
} else {
if (playerAdd == 0) {
cm.warp(map, 0);
cm.dispose();
} else if (playerAdd == 2) {
cm.sendOk("Sorry, the leader do not allowed you to enter.");
cm.dispose();
} else {
cm.sendOk("Error.");
cm.dispose();
}
}
}
}
function playerAlreadyInLobby(player) {
return cm.getExpedition(ExpeditionType.ARIANT) != null && cm.getExpedition(ExpeditionType.ARIANT).contains(player) ||
cm.getExpedition(ExpeditionType.ARIANT1) != null && cm.getExpedition(ExpeditionType.ARIANT1).contains(player) ||
cm.getExpedition(ExpeditionType.ARIANT2) != null && cm.getExpedition(ExpeditionType.ARIANT2).contains(player);
}