sweetgum83/scripts/event/MK_PrimeMinister2.js
2024-01-19 03:56:28 -05:00

168 lines
4.0 KiB
JavaScript

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 Java.to(eligible, Java.type('net.server.world.PartyCharacter[]'));
}
function setup(difficulty, lobbyId) {
var eim = em.newInstance("MK_PrimeMinister2_" + lobbyId);
respawn(eim);
return eim;
}
function afterSetup(eim) {}
function primeMinisterCheck(eim) {
var map = eim.getMapInstance(entryMap);
return !map.getAllPlayers().isEmpty();
}
function respawn(eim) {
if (primeMinisterCheck(eim)) {
eim.startEventTimer(eventTime);
var weddinghall = eim.getMapInstance(entryMap);
weddinghall.getPortal(1).setPortalState(false);
const LifeFactory = Java.type('server.life.LifeFactory');
const Point = Java.type('java.awt.Point');
weddinghall.spawnMonsterOnGroundBelow(LifeFactory.getMonster(mobId), new Point(292, 143));
} else {
eim.schedule("respawn", 10000);
}
}
function playerEntry(eim, player) {
var weddinghall = eim.getMapInstance(entryMap);
player.changeMap(weddinghall, weddinghall.getPortal(1));
}
function scheduledTimeout(eim) {
var party = eim.getPlayers();
for (var i = 0; i < party.size(); i++) {
playerExit(eim, party.get(i));
}
eim.dispose();
}
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 playerDead(eim, player) {}
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
} else {
eim.unregisterPlayer(player);
}
}
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 leftParty(eim, player) {}
function disbandParty(eim) {}
function playerUnregistered(eim, player) {}
function playerExit(eim, player) {
eim.unregisterPlayer(player);
player.changeMap(exitMap, 2);
}
function changedMap(eim, chr, mapid) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
} else {
eim.unregisterPlayer(player);
}
}
}
function removePlayer(eim, player) {
eim.unregisterPlayer(player);
player.getMap().removePlayer(player);
player.setMap(entryMap);
}
function cancelSchedule() {}
function dispose() {}
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();
}
function monsterKilled(mob, eim) {
if (mob.getId() == mobId) {
eim.getMapInstance(entryMap).getPortal(1).setPortalState(true);
eim.showClearEffect();
eim.clearPQ();
}
}
function allMonstersDead(eim) {}
// ---------- FILLER FUNCTIONS ----------
function changedLeader(eim, leader) {}