More PQ-esque script modules + HP Bar on some bosses

Completed (hopefully, now!) implementation of automated modules for PQ
scripting. Added HP bar for some bosses that wouldn't display it before
(like King Slime, Alishar and CRog).
This commit is contained in:
ronancpl
2017-05-09 20:02:10 -03:00
parent da00345aec
commit 73557f0d61
59 changed files with 943 additions and 608 deletions

View File

@@ -6,32 +6,56 @@ var exitMap = 970030000;
var recruitMap = 970030000;
var clearMap = 970030000;
var minMapId = 970030001;
var maxMapId = 970042711;
var lobbyRange = [0, 7];
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
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;
em.setProperty("party", reqStr);
}
function setEventExclusives(eim) {}
function setEventRewards(eim) {
var itemSet, itemQty, evLevel;
evLevel = 6; //Rewards at event completion
itemSet = [1122018, 1122005, 1022088, 1402013, 1032048, 1032070, 1102046, 2330004, 2041013, 2041016, 2041019, 2041022, 2049100, 2049003, 2020012, 2020013, 2020014, 2020015, 2022029, 2022045, 2022068, 2022069, 2022179, 2022180, 4004000, 4004001, 4004002, 4004003, 4004004, 4003000];
itemSet = [1122018, 1122005, 1022088, 1402013, 1032048, 1032070, 1102046, 2330004, 2041013, 2041016, 2041019, 2041022, 2049100, 2049003, 2020012, 2020013, 2020014, 2020015, 2022029, 2022045, 2022068, 2022069, 2022180, 2022179, 4004000, 4004001, 4004002, 4004003, 4004004, 4003000];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 25, 25, 25, 25, 25, 25, 25, 4, 4, 12, 12, 12, 12, 12, 25];
eim.setEventRewards(evLevel, itemSet, itemQty);
evLevel = 5; //Rewards at Rest Spot V
itemSet = [1122018, 1122005, 1022088, 1402013, 1032048, 1032070, 1102046, 2330004, 2041013, 2041016, 2041019, 2041022, 2049100, 2049003, 2020012, 2020013, 2020014, 2020015, 2022029, 2022045, 2022068, 2022069, 2022179, 2022180, 4004000, 4004001, 4004002, 4004003, 4004004, 4003000];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 8, 8, 8, 8, 8, 12];
itemSet = [1122018, 1122005, 1022088, 1402013, 1032048, 1032070, 1102046, 2330004, 2041013, 2041016, 2041019, 2041022, 2049100, 2049003, 2020012, 2020013, 2020014, 2020015, 2022029, 2022045, 2022068, 2022069, 2022180, 2022179, 4004000, 4004001, 4004002, 4004003, 4004004, 4003000];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 8, 8, 8, 8, 8, 12];
eim.setEventRewards(evLevel, itemSet, itemQty);
evLevel = 4; //Rewards at Rest Spot IV
itemSet = [1122001, 1122006, 1022103, 1442065, 1032042, 1032021, 1102168, 2070005, 2040025, 2040029, 2040301, 2040413, 2040701, 2040817, 2002028, 2020009, 2020010, 2020011, 2022004, 2022005, 2022025, 2022027, 2022048, 2022049, 4020000, 4020001, 4020002, 4020003, 4020004, 4020005, 4020006, 4020007, 4020008, 4003000];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
eim.setEventRewards(evLevel, itemSet, itemQty);
evLevel = 3; //Rewards at Rest Spot III
itemSet = [1122002, 1022088, 1012076, 1402029, 1032041, 1032044, 1102167, 2070011, 2040026, 2040030, 2040302, 2040412, 2040702, 2040818, 2002028, 2020009, 2020010, 2020011, 2022004, 2022005, 2022025, 2022027, 2022048, 2022049, 4010000, 4010001, 4010002, 4010003, 4010004, 4010005, 4010006, 4010007, 4003000];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5];
itemQty = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 20, 20, 20, 20, 20, 20, 20, 20, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5];
eim.setEventRewards(evLevel, itemSet, itemQty);
evLevel = 2; //Rewards at Rest Spot II
@@ -50,36 +74,35 @@ function getEligibleParty(party) { //selects, from the given party, the tea
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);
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);
function setup(level, lobbyid) {
var eim = em.newInstance("BossRush" + lobbyid);
eim.setProperty("level", level);
eim.setProperty("lobby", lobbyid);
eim.startEventTimer(45 * 60000); //45 mins
setEventRewards(eim);
setEventExclusives(eim);
return eim;
}
function playerEntry(eim, player) {
var map = eim.getMapInstance(entryMap);
var map = eim.getMapInstance(entryMap + eim.getIntProperty("lobby"));
player.changeMap(map, map.getPortal(0));
}
@@ -93,7 +116,7 @@ function playerExit(eim, player) {
}
function changedMap(eim, player, mapid) {
if (mapid < 970030001 || mapid > 970042711) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
@@ -103,6 +126,13 @@ function changedMap(eim, player, mapid) {
}
}
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.
@@ -143,26 +173,17 @@ function end(eim) {
playerExit(eim, party.get(i));
}
eim.dispose();
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared(); // from now on event just finishes when ALL players gets out of the range defined inside changedMap function.
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function giveRandomEventReward(eim, player) {
eim.giveEventReward(player);
}
function reopenEvent() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
function monsterKilled(mob, eim) {}
function allMonstersDead(eim) {}

View File

@@ -1,42 +1,70 @@
var isPq = true;
var minPlayers = 1, maxPlayers = 6;
var minLevel = 1, maxLevel = 200;
var minPlayers = 4, maxPlayers = 6;
var minLevel = 44, maxLevel = 55;
var entryMap = 930000000;
var exitMap = 930000800;
var recruitMap = 300030100;
var clearMap = 930000800;
var minMapId = 930000000;
var maxMapId = 930000800;
var lobbyRange = [0, 0];
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
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 #radventurers only#k.";
em.setProperty("party", reqStr);
}
function setEventExclusives(eim) {
var itemSet = [4001162, 4001163, 4001169, 2270004];
eim.setExclusiveItems(itemSet);
}
function setEventRewards(eim) {}
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);
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 && Math.floor(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");
var eim = em.newInstance("Ellin" + leaderid);
function setup(level, lobbyid) {
var eim = em.newInstance("Ellin" + lobbyid);
eim.setProperty("level", level);
eim.setInstanceMap(930000000).resetPQ(level);
@@ -51,7 +79,10 @@ function setup(level, leaderid) {
eim.setInstanceMap(930000700).resetPQ(level);
respawnStg2(eim);
eim.startEventTimer(30 * 60000); //30 mins
setEventRewards(eim);
setEventExclusives(eim);
return eim;
}
@@ -61,7 +92,7 @@ function respawnStg2(eim) {
}
function changedMap(eim, player, mapid) {
if (mapid < 930000000 || mapid > 930000800) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
@@ -71,6 +102,13 @@ function changedMap(eim, player, mapid) {
}
}
function changedLeader(eim, leader) {
var mapid = leader.getMapId();
if (!eim.isEventCleared() && (mapid < minMapId || mapid > maxMapId)) {
end(eim);
}
}
function playerEntry(eim, player) {
var map = eim.getMapInstance(entryMap);
player.changeMap(map, map.getPortal(0));
@@ -125,21 +163,13 @@ function end(eim) {
playerExit(eim, party.get(i));
}
eim.dispose();
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();
eim.warpEventTeam(toMap);
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function reopenEvent() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
eim.warpEventTeam(930000800);
}
function monsterKilled(mob, eim) {}

View File

@@ -1,14 +1,41 @@
var isPq = true;
var minPlayers = 1, maxPlayers = 6;
var minLevel = 1, maxLevel = 200;
var minPlayers = 4, maxPlayers = 6;
var minLevel = 21, maxLevel = 30;
var entryMap = 103000800;
var exitMap = 103000890;
var recruitMap = 103000000;
var clearMap = 103000805;
var minMapId = 103000800;
var maxMapId = 103000805;
var lobbyRange = [0, 0];
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
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;
em.setProperty("party", reqStr);
}
function setEventExclusives(eim) {
var itemSet = [4001007, 4001008];
eim.setExclusiveItems(itemSet);
}
function setEventRewards(eim) {
@@ -28,38 +55,37 @@ function getEligibleParty(party) { //selects, from the given party, the tea
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);
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("Kerning" + leaderid);
function setup(level, lobbyid) {
var eim = em.newInstance("Kerning" + lobbyid);
eim.setProperty("level", level);
respawnStg1(eim);
respawnStages(eim);
eim.startEventTimer(30 * 60000); //30 mins
setEventRewards(eim);
setEventExclusives(eim);
return eim;
}
function respawnStg1(eim) {
function respawnStages(eim) {
eim.getMapInstance(103000800).instanceMapRespawn();
eim.schedule("respawnStg1", 10 * 1000);
eim.getMapInstance(103000805).instanceMapRespawn();
eim.schedule("respawnStages", 10 * 1000);
}
function playerEntry(eim, player) {
@@ -77,7 +103,7 @@ function playerExit(eim, player) {
}
function changedMap(eim, player, mapid) {
if (mapid < 103000800 || mapid > 103000805) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
@@ -87,6 +113,13 @@ function changedMap(eim, player, mapid) {
}
}
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.
@@ -130,8 +163,6 @@ function end(eim) {
playerExit(eim, party.get(i));
}
eim.dispose();
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function giveRandomEventReward(eim, player) {
@@ -141,13 +172,6 @@ function giveRandomEventReward(eim, player) {
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function reopenEvent() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
function monsterKilled(mob, eim) {}

View File

@@ -1,53 +1,79 @@
var isPq = true;
var minPlayers = 1, maxPlayers = 6;
var minLevel = 1, maxLevel = 200;
var minPlayers = 3, maxPlayers = 6;
var minLevel = 55, maxLevel = 100;
var entryMap = 925100000;
var exitMap = 925100700;
var recruitMap = 251010404;
var clearMap = 925100600;
var minMapId = 925100000;
var maxMapId = 925100500;
var lobbyRange = [0, 0];
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
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;
em.setProperty("party", reqStr);
}
function setEventExclusives(eim) {
var itemSet = [4001117, 4001120, 4001121, 4001122];
eim.setExclusiveItems(itemSet);
}
function setEventRewards(eim) {}
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);
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("Pirate" + leaderid);
function setup(level, lobbyid) {
var eim = em.newInstance("Pirate" + lobbyid);
eim.setProperty("level", level);
em.setProperty("stage2", "0");
em.setProperty("stage2a", "0");
em.setProperty("stage3a", "0");
em.setProperty("stage2b", "0");
em.setProperty("stage3b", "0");
em.setProperty("stage4", "0");
em.setProperty("stage5", "0");
eim.setProperty("stage2", "0");
eim.setProperty("stage2a", "0");
eim.setProperty("stage3a", "0");
eim.setProperty("stage2b", "0");
eim.setProperty("stage3b", "0");
eim.setProperty("stage4", "0");
eim.setProperty("stage5", "0");
em.setProperty("openedChests", "0");
eim.setProperty("openedChests", "0");
eim.setInstanceMap(925100000).resetPQ(level);
eim.setInstanceMap(925100000).shuffleReactors();
@@ -124,11 +150,14 @@ function setup(level, leaderid) {
eim.setInstanceMap(925100500).resetPQ(level);
respawnStg4(eim);
eim.startEventTimer(20 * 60000); //20 mins
setEventRewards(eim);
setEventExclusives(eim);
return eim;
}
function respawnStg4(eim) {
function respawnStg4(eim) {
eim.getMapInstance(925100400).instanceMapRespawn();
eim.schedule("respawnStg4", 10 * 1000);
}
@@ -148,7 +177,7 @@ function playerExit(eim, player) {
}
function changedMap(eim, player, mapid) {
if (mapid < 925100000 || mapid > 925100500) {
if (mapid < minMapId || mapid > maxMapId) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
end(eim);
@@ -158,6 +187,13 @@ function changedMap(eim, player, mapid) {
}
}
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.
@@ -198,25 +234,22 @@ function end(eim) {
playerExit(eim, party.get(i));
}
eim.dispose();
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
}
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();
eim.warpEventTeam(toMap);
em.schedule("reopenEvent", 10 * 1000); // leaders have 10 seconds cooldown to reach recruit map and retry for a new PQ.
eim.warpEventTeam(925100600);
}
function reopenEvent() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
function monsterKilled(mob, eim) {
if(mob.isBoss()) { // lord pirate defeated, spawn the little fella!
mob.getMap().broadcastStringMessage(5, "As Lord Pirate dies, Wu Yang is released!");
eim.spawnNpc(2094001, new java.awt.Point(777, 140), mob.getMap());
}
}
function monsterKilled(mob, eim) {}
function allMonstersDead(eim) {}
function cancelSchedule() {}