Event disposing patch + Papulatus rework + V. scroll exploit patch

Solved issues with PQs/events in progress not disposing properly party leavers (warping them out of the event maps).
Solved issues with cleared PQs/events disposing players unproperly when leaving or disbanding the party.
Reworked Papulatus battle now working as an event instance, similar to how Capt Latanica battle is dealt.
Fixed a possible PE exploit with Vega's scroll.
This commit is contained in:
ronancpl
2018-02-17 00:07:10 -02:00
parent 278b5e8140
commit 8f76e7be25
43 changed files with 910 additions and 123 deletions

View File

@@ -62,6 +62,10 @@ function playerExit(eim, player) {
// Do something with the player right before disbanding the event instance.
}
function playerLeft(eim, player) {
// Do something with the player right before leaving the party.
}
function changedMap(eim, player, mapid) {
// What to do when player've changed map, based on the mapid.
}

View File

@@ -168,6 +168,12 @@ function playerExit(eim, 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)) {
@@ -208,15 +214,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -129,6 +129,12 @@ function playerExit(eim, 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)) {
@@ -167,14 +173,17 @@ function playerDisconnected(eim, player) {
}
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player))
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
end(eim);
}
else
playerExit(eim, player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -134,6 +134,12 @@ function playerExit(eim, 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)) {
@@ -174,15 +180,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -134,6 +134,12 @@ function playerExit(eim, 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)) {
@@ -174,15 +180,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -134,6 +134,12 @@ function playerExit(eim, 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)) {
@@ -174,15 +180,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -134,6 +134,12 @@ function playerExit(eim, 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)) {
@@ -174,15 +180,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -134,6 +134,12 @@ function playerExit(eim, 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)) {
@@ -174,15 +180,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -134,6 +134,12 @@ function playerExit(eim, 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)) {
@@ -174,15 +180,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -0,0 +1,222 @@
/**
* @author: Ronan
* @event: Vs Elemental Thanatos
*/
var isPq = true;
var minPlayers = 2, maxPlayers = 2;
var minLevel = 100, maxLevel = 255;
var entryMap = 922020100;
var exitMap = 220050300;
var recruitMap = 220050300;
var clearMap = 220050300;
var minMapId = 922020100;
var maxMapId = 922020100;
var eventTime = 20; // 20 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 For #rmagicians only#k.";
reqStr += "\r\n Time limit: ";
reqStr += eventTime + " minutes";
em.setProperty("party", reqStr);
}
function setEventExclusives(eim) {
var itemSet = [];
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 = []; //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;
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().getJobNiche() == 2) {
if(ch.isLeader()) hasLeader = true; // magician niche only
eligible.push(ch);
}
}
}
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible;
}
function setup(level, lobbyid) {
var eim = em.newInstance("Elemental" + lobbyid);
eim.setProperty("level", level);
eim.setProperty("boss", "0");
eim.getInstanceMap(922020100).resetPQ(level);
respawnStages(eim);
eim.startEventTimer(eventTime * 60000);
setEventRewards(eim);
setEventExclusives(eim);
return eim;
}
function afterSetup(eim) {}
function respawnStages(eim) {}
function playerEntry(eim, player) {
var map = eim.getMapInstance(entryMap);
player.changeMap(map, map.getPortal(0));
}
function scheduledTimeout(eim) {
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 isElemental(mob) {
var mobid = mob.getId();
return mobid == 9300086 || mobid == 9300100;
}
function monsterKilled(mob, eim) {
if(isElemental(mob)) {
var killed = eim.getIntProperty("boss");
if(killed == 1) {
eim.showClearEffect();
eim.clearPQ();
} else {
eim.setIntProperty("boss", killed + 1);
}
}
}
function allMonstersDead(eim) {}
function cancelSchedule() {}
function dispose(eim) {}

View File

@@ -39,6 +39,9 @@ function setEventRequirements() {
reqStr += "\r\n For #radventurers only#k.";
reqStr += "\r\n Time limit: ";
reqStr += eventTime + " minutes";
em.setProperty("party", reqStr);
}
@@ -136,6 +139,12 @@ function playerExit(eim, player) {
player.changeMap(exitMap, 0);
}
function playerLeft(eim, player) {
if(!eim.isEventCleared()) {
playerExit(eim, player);
}
}
function playerDead(eim, player) {}
function playerRevive(eim, player) { // player presses ok on the death pop up.
@@ -156,14 +165,17 @@ function playerDisconnected(eim, player) {
}
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player))
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
end(eim);
}
else
playerExit(eim, player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -129,6 +129,12 @@ function playerExit(eim, 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)) {
@@ -169,15 +175,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -130,6 +130,12 @@ function playerExit(eim, 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)) {
@@ -170,15 +176,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -116,6 +116,12 @@ function playerExit(eim, 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)) {
@@ -156,15 +162,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -115,6 +115,12 @@ function playerExit(eim, 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)) {
@@ -155,15 +161,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -117,6 +117,12 @@ function playerExit(eim, 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)) {
@@ -157,15 +163,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -153,6 +153,12 @@ function playerExit(eim, 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)) {
@@ -193,15 +199,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -229,6 +229,12 @@ function playerExit(eim, 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)) {
@@ -316,15 +322,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -229,6 +229,12 @@ function playerExit(eim, 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)) {
@@ -316,15 +322,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -183,6 +183,12 @@ function playerExit(eim, 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)) {
@@ -223,15 +229,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -0,0 +1,215 @@
/**
* @author: Ronan
* @event: Vs Papulatus
*/
var isPq = true;
var minPlayers = 1, maxPlayers = 6;
var minLevel = 1, maxLevel = 255;
var entryMap = 220080001;
var exitMap = 220080000;
var recruitMap = 220080000;
var clearMap = 220080000;
var minMapId = 220080001;
var maxMapId = 220080001;
var eventTime = 45; // 45 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 Time limit: ";
reqStr += eventTime + " minutes";
em.setProperty("party", reqStr);
}
function setEventExclusives(eim) {
var itemSet = [];
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 = []; //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;
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, lobbyid) {
var eim = em.newInstance("Papulatus" + lobbyid);
eim.setProperty("level", level);
eim.setProperty("boss", "0");
eim.getInstanceMap(220080001).resetPQ(level);
respawnStages(eim);
eim.startEventTimer(eventTime * 60000);
setEventRewards(eim);
setEventExclusives(eim);
return eim;
}
function afterSetup(eim) {}
function respawnStages(eim) {}
function playerEntry(eim, player) {
var map = eim.getMapInstance(entryMap);
player.changeMap(map, map.getPortal(0));
}
function scheduledTimeout(eim) {
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 isPapulatus(mob) {
var mobid = mob.getId();
return mobid == 8500002;
}
function monsterKilled(mob, eim) {
if(isPapulatus(mob)) {
eim.showClearEffect();
eim.clearPQ();
}
}
function allMonstersDead(eim) {}
function cancelSchedule() {}
function dispose(eim) {}

View File

@@ -196,6 +196,12 @@ function playerExit(eim, player) {
player.changeMap(exitMap, 0);
}
function playerLeft(eim, player) {
if(!eim.isEventCleared()) {
playerExit(eim, player);
}
}
function changedMapInside(eim, mapid) {
var stage = eim.getIntProperty("curStage");
@@ -260,21 +266,25 @@ function playerRevive(eim, player) { // player presses ok on the death pop up.
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player))
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
end(eim);
}
else
playerExit(eim, player);
}
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player))
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
end(eim);
}
else
playerExit(eim, player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -117,6 +117,12 @@ function playerExit(eim, 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)) {
@@ -157,15 +163,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -117,6 +117,12 @@ function playerExit(eim, 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)) {
@@ -157,15 +163,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -117,6 +117,12 @@ function playerExit(eim, 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)) {
@@ -157,15 +163,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -117,6 +117,12 @@ function playerExit(eim, 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)) {
@@ -157,15 +163,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -117,6 +117,12 @@ function playerExit(eim, 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)) {
@@ -157,15 +163,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {

View File

@@ -146,6 +146,12 @@ function playerExit(eim, 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)) {
@@ -186,15 +192,16 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
}
else
eim.unregisterPlayer(player);
playerLeft(eim, player);
}
function disbandParty(eim) {
end(eim);
if (!eim.isEventCleared()) {
end(eim);
}
}
function monsterValue(eim, mobId) {