New PQ: Boss Rush PQ + Ellin/PiratePQ bug fixes

Introducing Boss Rush PQ. Corrected a few issues regarding rewardings in
PiratePQ and EllinPQ and implemented a standardized way to script PQs.
This commit is contained in:
ronancpl
2017-04-25 11:55:44 -03:00
parent 828a8a02a2
commit 939b214fb5
66 changed files with 16104 additions and 44622 deletions

153
scripts/event/BossRushPQ.js Normal file
View File

@@ -0,0 +1,153 @@
var isPq = true;
var minPlayers = 1, maxPlayers = 6;
var minLevel = 1, maxLevel = 200;
var entryMap = 970030100;
var exitMap = 970030000;
var recruitMap = 970030000;
var clearMap = 970030000;
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
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(level, leaderid) {
em.setProperty("state", "1");
em.setProperty("leader", "true");
var eim = em.newInstance("BossRush" + leaderid);
em.setProperty("level", level);
eim.startEventTimer(45 * 60000); //45 mins
return eim;
}
function playerEntry(eim, player) {
var map = eim.getMapInstance(entryMap);
player.changeMap(map, map.getPortal(0));
}
function scheduledTimeout(eim) {
end(eim);
}
function removePlayer(eim, player) {
eim.unregisterPlayer(player);
player.changeMap(exitMap, 0);
}
function playerExit(eim, player) {
eim.unregisterPlayer(player);
player.changeMap(exitMap, 0);
}
function changedMap(eim, player, mapid) {
if (mapid < 970030001 || mapid > 970042711) {
var party = eim.getPlayers();
if (eim.isLeader(player) || party.size() <= minPlayers) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
}
}
function playerDead(eim, player) {}
function playerRevive(eim, player) { // player presses ok on the death pop up.
var party = eim.getPlayers();
if (eim.isLeader(player) || party.size() <= minPlayers) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
}
function playerDisconnected(eim, player) {
var party = eim.getPlayers();
if (eim.isLeader(player) || party.size() <= minPlayers) {
eim.unregisterPlayer(player);
end(eim);
}
else
removePlayer(eim, player);
}
function leftParty(eim, player) {
var party = eim.getPlayers();
if (party.size() <= minPlayers)
end(eim);
else
playerExit(eim, player);
}
function disbandParty(eim) {
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 playerClear(eim, player, toMap) {
eim.unregisterPlayer(player);
if(toMap != null) player.changeMap(toMap);
else player.changeMap(clearMap, 0);
}
function complete(eim, toMap) {
var party = eim.getPlayers();
for (var i = 0; i < party.size(); i++) {
playerClear(eim, party.get(i), toMap);
}
eim.dispose();
}
function clearPQ(eim, toMap) {
complete(eim, toMap);
}
function monsterKilled(mob, eim) {}
function allMonstersDead(eim) {}
function cancelSchedule() {}
function dispose(eim) {
em.cancelSchedule();
em.setProperty("state", "0");
em.setProperty("leader", "true");
}

View File

@@ -164,7 +164,7 @@ function playerExit(eim, player) {
eim.broadcastPlayerMsg(5, "[Expedition] " + player.getName() + " has left the map.");
eim.unregisterPlayer(player);
if (eim.disposeIfPlayerBelow(0, 0)) {
if (eim.disposeIfPlayerBelow(minPlayers, 610030010)) {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}

View File

@@ -1,15 +1,37 @@
importPackage(Packages.client.inventory);
importPackage(Packages.tools);
var minPlayers = 2;
var isPq = true;
var minPlayers = 4, maxPlayers = 6;
var minLevel = 44, maxLevel = 55;
var entryMap = 930000000;
var exitMap = 930000800;
var recruitMap = 300030100;
var clearMap = 930000800;
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
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 && ch.getJob().getId() / 1000 == 0) { //only adventurers
if(ch.isLeader()) hasLeader = true;
eligible.push(ch);
}
}
}
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible;
}
function setup(level, leaderid) {
em.setProperty("state", "1");
em.setProperty("leader", "true");
@@ -119,8 +141,23 @@ function end(eim) {
eim.dispose();
}
function clearPQ(eim) {
end(eim);
function playerClear(eim, player, toMap) {
eim.unregisterPlayer(player);
if(toMap != null) player.changeMap(toMap);
else player.changeMap(clearMap, 0);
}
function complete(eim, toMap) {
var party = eim.getPlayers();
for (var i = 0; i < party.size(); i++) {
playerClear(eim, party.get(i), toMap);
}
eim.dispose();
}
function clearPQ(eim, toMap) {
complete(eim, toMap);
}
function monsterKilled(mob, eim) {}

View File

@@ -1,13 +1,37 @@
var isPq = true;
var minPlayers = 1;
var minPlayers = 3, maxPlayers = 6;
var minLevel = 55, maxLevel = 100;
var entryMap = 925100000;
var exitMap = 925100700;
var recruitMap = 251010404;
var clearMap = 925100600;
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
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(level, leaderid) {
em.setProperty("state", "1");
em.setProperty("leader", "true");
@@ -119,7 +143,7 @@ function changedMap(eim, player, mapid) {
if (mapid < 925100000 || mapid > 925100500) {
eim.unregisterPlayer(player);
if (eim.disposeIfPlayerBelow(0, 0)) {
if (eim.disposeIfPlayerBelow(minPlayers, exitMap)) {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
@@ -129,6 +153,7 @@ function changedMap(eim, player, mapid) {
function playerDead(eim, player) {}
function playerRevive(eim, player) { // player presses ok on the death pop up.
var party = eim.getPlayers();
if (eim.isLeader(player) || party.size() <= minPlayers) { // Check for party leader
var party = eim.getPlayers();
for (var i = 0; i < party.size(); i++)
@@ -188,8 +213,23 @@ function end(eim) {
eim.dispose();
}
function clearPQ(eim) {
end(eim);
function playerClear(eim, player, toMap) {
eim.unregisterPlayer(player);
if(toMap != null) player.changeMap(toMap);
else player.changeMap(clearMap, 0);
}
function complete(eim, toMap) {
var party = eim.getPlayers();
for (var i = 0; i < party.size(); i++) {
playerClear(eim, party.get(i), toMap);
}
eim.dispose();
}
function clearPQ(eim, toMap) {
complete(eim, toMap);
}
function monsterKilled(mob, eim) {}

View File

@@ -2,6 +2,8 @@
* 4th Job Snipe / Concentration
*/
var minPlayers = 1;
function init() {
em.setProperty("started", "false");
}
@@ -42,7 +44,7 @@ function changedMap(eim, player, mapid) {
if (mapid != 910500000) {
eim.unregisterPlayer(player);
if (eim.disposeIfPlayerBelow(0, 0)) {
if (eim.disposeIfPlayerBelow(minPlayers, 105090200)) {
em.setProperty("started", "false");
}
}