Implemented CWKPQ

Made CWKPQ fully-functional, using the Expedition system (won't work
with the lobby system).
This commit is contained in:
ronancpl
2017-06-30 01:26:47 -03:00
parent a7beff1bb4
commit ca3838050d
126 changed files with 50072 additions and 49743 deletions

View File

@@ -6,7 +6,7 @@ Credits are to be given too to Nexon(Duh!), the original MapleSolaxia staff and
Regarding distributability and usage of the code presented here: like it was before, this MapleStory server is open-source. By that, it is meant that anyone is free to install, use, modify and redistribute the contents, as long as there is no kind of commercial trading involved and the credits to the original creators are maintained within the codes. Regarding distributability and usage of the code presented here: like it was before, this MapleStory server is open-source. By that, it is meant that anyone is free to install, use, modify and redistribute the contents, as long as there is no kind of commercial trading involved and the credits to the original creators are maintained within the codes.
This is a NetBeans 8.0.2 Project. This means that it's easier to install the project via opening the server project folder inside NetBeans' IDE. Once installed, build this project on your machine and run the server using the "launch.bat" application. This is a NetBeans 8.0.2 Project, that must be built and run under JDK/JRE 7 in order to run properly. This means that it's easier to install the project via opening the server project folder inside NetBeans' IDE. Once installed, build this project on your machine and run the server using the "launch.bat" application.
In this project, many gameplay-wise issues generated from either the original WZ files and the server sources have been partially or completely solved. Considering the use of the provided edited WZ's and server-side wz.xml files should be of the greatest importance when dealing with this instance of private server, in order to perceive it at it's full potential. My opinion, though! Refer to "README_wzchanges.txt" for more information on what have been changed from Nexon's v83 WZ files. In this project, many gameplay-wise issues generated from either the original WZ files and the server sources have been partially or completely solved. Considering the use of the provided edited WZ's and server-side wz.xml files should be of the greatest importance when dealing with this instance of private server, in order to perceive it at it's full potential. My opinion, though! Refer to "README_wzchanges.txt" for more information on what have been changed from Nexon's v83 WZ files.

View File

@@ -1,4 +1,4 @@
#Mon, 26 Jun 2017 01:21:39 -0300 #Fri, 30 Jun 2017 01:05:52 -0300
C\:\\Nexon\\MapleSolaxia\\MapleSolaxiaV2= C\:\\Nexon\\MapleSolaxia\\MapleSolaxiaV2=

BIN
dist/MapleSolaxia.jar vendored

Binary file not shown.

View File

@@ -9,6 +9,7 @@ Feature list:
PQs/Quests: PQs/Quests:
* HPQ/KPQ/LPQ/LMPQ/OPQ/EllinPQ/PiratePQ 100% * HPQ/KPQ/LPQ/LMPQ/OPQ/EllinPQ/PiratePQ 100%
* CWKPQ as Expedition-based event 100%
* GuildPQ 100% + Guild queue and multi-lobby systems available. * GuildPQ 100% + Guild queue and multi-lobby systems available.
* Brand-new PQ: Boss Rush PQ 100% * Brand-new PQ: Boss Rush PQ 100%
* BalrogPQ semi-functional * BalrogPQ semi-functional

View File

@@ -341,3 +341,10 @@ MGC do jogador agora est
23 - 26 Junho 2017, 23 - 26 Junho 2017,
Diversas reimplementações de mecânicas da CWKPQ, ainda trabalho em progresso. Diversas reimplementações de mecânicas da CWKPQ, ainda trabalho em progresso.
27 Junho 2017,
Reestruturação parcial do esquema de footholds do stage 4 da CWKPQ.
28 - 29 Junho 2017,
Acabamento final da CWKPQ.
Corrigido bug no esquema de recuperação de diretórios dos mapas, referenciados em String.wz.

View File

@@ -3,31 +3,19 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="1"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="1"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/1092014.js</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/MapleMapFactory.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/reactor/6109000.js</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/expeditions/MapleExpeditionType.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/portal/glpqPortal6.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201112.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/PortalFactory.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/AbstractPlayerInteraction.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/PlayerInteractionHandler.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/portal/PortalPlayerInteraction.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/reactor/6102001.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/maps/MapleGenericPortal.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201107.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/event/CWKPQ.js</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/event/CWKPQ.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/ChangeMapHandler.java</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/expeditions/MapleExpedition.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/portal/glpqPortal7.js</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/command/Commands.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201112.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/event/EventInstanceManager.java</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/event/EventInstanceManager.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/AbstractPlayerInteraction.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201110.js</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201110.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/portal/glpqPortal3.js</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201113.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/MapleJob.java</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/provider/MapleDataTool.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/portal/PortalScriptManager.java</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/MapleCharacter.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/channel/handlers/InnerPortalHandler.java</file> <file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/scripting/event/EventManager.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201115.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/MaplePortal.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201108.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/npc/9201109.js</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/scripts/portal/party3_r6pt.js</file>
</group> </group>
</open-files> </open-files>
</project-private> </project-private>

View File

@@ -1,26 +1,66 @@
var minPlayers = 1; /**
* @author: Ronan
var mapz = Array(100, 200, 300, 400, 500, 510, 520, 521, 522, 530, 540, 550, 600, 700, 800); * @event: Crimsonwood Keep PQ
var a = Array("a", "b", "c", "d", "e", "f", "g", "h", "i");
/*
a1,3,6
b1-7
c1,3,6
d1-7
e1-7
f1,3,6
g1-7
h1,3,6
i1-7
*/ */
var pos_x = Array(944,401,28,-332,-855); var isPq = true;
var pos_y = Array(-204,-384,-504,-384,-204); var minPlayers = 6, maxPlayers = 30;
var pos_y2 = Array(-144, -444, -744, -1044, -1344, -1644); var minLevel = 100, maxLevel = 255;
var entryMap = 610030100;
var exitMap = 610030020;
var recruitMap = 610030020;
var clearMap = 610030020;
var minMapId = 610030100;
var maxMapId = 610030800;
var eventTime = 2; // 2 minutes for first stg
var lobbyRange = [0, 0];
function init() { function init() {
em.setProperty("state", "0"); setEventRequirements();
em.setProperty("leader", "true"); }
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 = [4001256, 4001257, 4001258, 4001259, 4001260];
eim.setExclusiveItems(itemSet);
}
function setEventRewards(eim) {
var itemSet, itemQty, evLevel, expStages, mesoStages;
evLevel = 1; //Rewards at clear PQ
itemSet = [];
itemQty = [];
eim.setEventRewards(evLevel, itemSet, itemQty);
expStages = [2500, 8000, 18000, 25000, 30000, 40000]; //bonus exp given on CLEAR stage signal
eim.setEventClearStageExp(expStages);
mesoStages = [500, 1000, 2000, 5000, 8000, 20000]; //bonus meso given on CLEAR stage signal
eim.setEventClearStageMeso(mesoStages);
} }
function afterSetup(eim) {} function afterSetup(eim) {}
@@ -84,8 +124,6 @@ function generateMapReactors(map) {
function setup(channel) { function setup(channel) {
var eim = em.newInstance("CWKPQ" + channel); var eim = em.newInstance("CWKPQ" + channel);
eim.setProperty("state", "1");
eim.setProperty("leader", "true");
eim.setProperty("current_instance", "0"); eim.setProperty("current_instance", "0");
eim.setProperty("glpq1", "0"); eim.setProperty("glpq1", "0");
eim.setProperty("glpq2", "0"); eim.setProperty("glpq2", "0");
@@ -96,44 +134,64 @@ function setup(channel) {
eim.setProperty("glpq5_room", "0"); eim.setProperty("glpq5_room", "0");
eim.setProperty("glpq6", "0"); eim.setProperty("glpq6", "0");
for (var i = 0; i < mapz.length; i++) { eim.setProperty("glpq_f0", "0");
var map = eim.getInstanceMap(610030000 + mapz[i]); eim.setProperty("glpq_f1", "0");
if (map != null) { eim.setProperty("glpq_f2", "0");
map.resetFully(); eim.setProperty("glpq_f3", "0");
if (map.getId() == 610030400) { eim.setProperty("glpq_f4", "0");
generateMapReactors(map); eim.setProperty("glpq_f5", "0");
eim.setProperty("glpq_f6", "0");
eim.setProperty("glpq_f7", "0");
eim.setProperty("glpq_s", "0");
//add environments var level = 1;
for (var x = 0; x < a.length; x++) { eim.getInstanceMap(610030100).resetPQ(level);
for (var y = 1; y <= 7; y++) { eim.getInstanceMap(610030200).resetPQ(level);
if (x == 1 || x == 3 || x == 4 || x == 6 || x == 8) { eim.getInstanceMap(610030300).resetPQ(level);
if (y != 2 && y != 4 && y != 5 && y != 7) { eim.getInstanceMap(610030400).resetPQ(level);
map.moveEnvironment(a[x] + "" + y, 1); eim.getInstanceMap(610030500).resetPQ(level);
} eim.getInstanceMap(610030510).resetPQ(level);
} else { eim.getInstanceMap(610030520).resetPQ(level);
map.moveEnvironment(a[x] + "" + y, 1); eim.getInstanceMap(610030521).resetPQ(level);
} eim.getInstanceMap(610030522).resetPQ(level);
} eim.getInstanceMap(610030530).resetPQ(level);
eim.getInstanceMap(610030540).resetPQ(level);
eim.getInstanceMap(610030550).resetPQ(level);
eim.getInstanceMap(610030600).resetPQ(level);
eim.getInstanceMap(610030700).resetPQ(level);
eim.getInstanceMap(610030800).resetPQ(level);
generateMapReactors(eim.getInstanceMap(610030400));
eim.getInstanceMap(610030550).shuffleReactors();
//add environments
var a = Array("a", "b", "c", "d", "e", "f", "g", "h", "i");
var map = eim.getInstanceMap(610030400);
for (var x = 0; x < a.length; x++) {
for (var y = 1; y <= 7; y++) {
if (x == 1 || x == 3 || x == 4 || x == 6 || x == 8) {
if (y != 2 && y != 4 && y != 5 && y != 7) {
map.moveEnvironment(a[x] + "" + y, 1);
} }
} else if (map.getId() == 610030510) { //warrior room, crimson guardians } else {
for (var z = 0; z < pos_y2.length; z++) { map.moveEnvironment(a[x] + "" + y, 1);
var mob = em.getMonster(9400582);
eim.registerMonster(mob);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(0, pos_y2[z]));
}
//skipping mage room, ehh
} else if (map.getId() == 610030540) { //bowman room, spawn master guardians
for (var z = 0; z < pos_x.length; z++) {
var mob = em.getMonster(9400594);
eim.registerMonster(mob);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(pos_x[z], pos_y[z]));
}
} else if (map.getId() == 610030550) {
map.shuffleReactors(); //pirate room
} }
} }
} }
eim.startEventTimer(120000); //2 MIN for first stg
var pos_x = Array(944,401,28,-332,-855);
var pos_y = Array(-204,-384,-504,-384,-204);
var map = eim.getInstanceMap(610030540);
for (var z = 0; z < pos_x.length; z++) {
var mob = em.getMonster(9400594);
eim.registerMonster(mob);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(pos_x[z], pos_y[z]));
}
eim.startEventTimer(eventTime * 60000);
setEventRewards(eim);
setEventExclusives(eim);
eim.schedule("spawnGuardians", 60000); eim.schedule("spawnGuardians", 60000);
return eim; return eim;
} }
@@ -157,15 +215,21 @@ function spawnGuardians(eim) {
} }
} }
function playerRevive(eim, player) {}
function scheduledTimeout(eim) { function scheduledTimeout(eim) {
end(eim); end(eim);
} }
function changedMap(eim, player, mapid) { function changedMap(eim, player, mapid) {
if (mapid < 610030100 || mapid > 610030800) { if (mapid < minMapId || mapid > maxMapId) {
playerExit(eim,player); if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.unregisterPlayer(player);
end(eim);
}
else {
eim.dropMessage(5, "[Expedition] " + player.getName() + " has left the event.");
eim.unregisterPlayer(player);
}
} else { } else {
switch(mapid) { switch(mapid) {
case 610030200: case 610030200:
@@ -208,10 +272,38 @@ function changedMap(eim, player, mapid) {
} }
} }
function playerDisconnected(eim, player) { function changedLeader(eim, leader) {}
return 0;
function playerDead(eim, player) {}
function playerRevive(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.unregisterPlayer(player);
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
end(eim);
}
else {
eim.dropMessage(5, "[Expedition] " + player.getName() + " has left the event.");
eim.unregisterPlayer(player);
}
} }
function playerDisconnected(eim, player) {
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
eim.dropMessage(5, "[Expedition] Either the leader has quitted the event or there is no longer the minimum number of members required to continue this event.");
eim.unregisterPlayer(player);
end(eim);
}
else {
eim.dropMessage(5, "[Expedition] " + player.getName() + " has left the event.");
eim.unregisterPlayer(player);
}
}
function leftParty (eim, player) {}
function disbandParty (eim) {}
function monsterValue(eim, mobId) { function monsterValue(eim, mobId) {
return 1; return 1;
} }
@@ -219,30 +311,31 @@ function monsterValue(eim, mobId) {
function playerUnregistered(eim, player) {} function playerUnregistered(eim, player) {}
function playerExit(eim, player) { function playerExit(eim, player) {
eim.dropMessage(5, "[Expedition] " + player.getName() + " has left the event.");
eim.unregisterPlayer(player); eim.unregisterPlayer(player);
player.changeMap(exitMap, 0);
if (eim.disposeIfPlayerBelow(minPlayers, 610030010)) {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
} }
function end(eim) { function end(eim) {
eim.disposeIfPlayerBelow(100, 610030010); var party = eim.getPlayers();
em.setProperty("state", "0"); for (var i = 0; i < party.size(); i++) {
em.setProperty("leader", "true"); playerExit(eim, party.get(i));
}
eim.dispose();
}
function giveRandomEventReward(eim, player) {
eim.giveEventReward(player);
} }
function clearPQ(eim) { function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared(); eim.setEventCleared();
} }
function monsterKilled(mob, eim) {} function monsterKilled(mob, eim) {}
function allMonstersDead(eim) {} function allMonstersDead(eim) {}
function leftParty (eim, player) {}
function disbandParty (eim) {}
function playerDead(eim, player) {}
function cancelSchedule() {} function cancelSchedule() {}
function dispose(eim) {} function dispose(eim) {}

View File

@@ -269,9 +269,7 @@ function playerDisconnected(eim, player) {
function leftParty(eim, player) {} function leftParty(eim, player) {}
function disbandParty(eim) { function disbandParty(eim) {}
end(eim);
}
function monsterValue(eim, mobId) { function monsterValue(eim, mobId) {
return 1; return 1;

View File

@@ -6,16 +6,16 @@
var status = -1; var status = -1;
function start() { function start() {
if (cm.getPlayer().getLevel() < 120) { if (cm.getPlayer().getLevel() < 120) {
cm.sendOk("There is a level requirement of 120 to attempt Pink Bean."); cm.sendOk("There is a level requirement of 120 to attempt Pink Bean.");
cm.dispose(); cm.dispose();
return; return;
} }
if (cm.getPlayer().getClient().getChannel() != 5) { if (cm.getPlayer().getClient().getChannel() != 5) {
cm.sendOk("Pink Bean may only be attempted on channel 5."); cm.sendOk("Pink Bean may only be attempted on channel 5.");
cm.dispose(); cm.dispose();
return; return;
} }
var em = cm.getEventManager("PinkBeanBattle"); var em = cm.getEventManager("PinkBeanBattle");
if (em == null) { if (em == null) {

View File

@@ -24,6 +24,8 @@ function start() {
} else { } else {
cm.sendOk("Make room on your ETC inventory first."); cm.sendOk("Make room on your ETC inventory first.");
} }
} else {
cm.sendOk("The weapon inside this room has already been retrieved.");
} }
} else { } else {
cm.sendOk("Eliminate all Crimson Guardians."); cm.sendOk("Eliminate all Crimson Guardians.");

View File

@@ -24,6 +24,8 @@ function start() {
} else { } else {
cm.sendOk("Make room on your ETC inventory first."); cm.sendOk("Make room on your ETC inventory first.");
} }
} else {
cm.sendOk("The weapon inside this room has already been retrieved.");
} }
} else { } else {
cm.sendOk("Eliminate all Master Guardians."); cm.sendOk("Eliminate all Master Guardians.");

View File

@@ -9,13 +9,6 @@ function start() {
cm.sendOk("A name forever remembered, Rafael was an exceptionally skilled sorcerer, and the foremost master of mental magic powers, telekinesis and telepathy. In addition to that, he was one of the 'Elite Mages' who mastered all the elements. He was last seen looking for the 'Temple of the Elementals' to turn the tide against the invading Krakian Army..."); cm.sendOk("A name forever remembered, Rafael was an exceptionally skilled sorcerer, and the foremost master of mental magic powers, telekinesis and telepathy. In addition to that, he was one of the 'Elite Mages' who mastered all the elements. He was last seen looking for the 'Temple of the Elementals' to turn the tide against the invading Krakian Army...");
cm.dispose(); cm.dispose();
} else if (cm.getPlayer().getMapId() == 610030521) { } else if (cm.getPlayer().getMapId() == 610030521) {
if (cm.getPlayer().getMap().countMonsters() == 0) {
cm.warp(610030522,0);
} else {
cm.sendOk("Eliminate all monsters.");
}
cm.dispose();
} else if (cm.getPlayer().getMapId() == 610030522) {
if (cm.getPlayer().getMap().countMonsters() == 0) { if (cm.getPlayer().getMap().countMonsters() == 0) {
var eim = cm.getEventInstance(); var eim = cm.getEventInstance();
var stgStatus = eim.getIntProperty("glpq5_room"); var stgStatus = eim.getIntProperty("glpq5_room");
@@ -31,10 +24,20 @@ function start() {
} else { } else {
cm.sendOk("Make room on your ETC inventory first."); cm.sendOk("Make room on your ETC inventory first.");
} }
} else {
cm.sendOk("The weapon inside this room has already been retrieved.");
} }
} else { } else {
cm.sendOk("Eliminate all monsters."); cm.sendOk("Eliminate all monsters.");
} }
cm.dispose(); cm.dispose();
} /* else if (cm.getPlayer().getMapId() == 610030522) {
if (cm.getPlayer().getMap().countMonsters() == 0) {
cm.warp(610030522,0);
} else {
cm.sendOk("Eliminate all monsters.");
}
cm.dispose();
} }
*/
} }

View File

@@ -7,10 +7,10 @@ function start() {
cm.sendOk("As every Thief knows, the best attack is the one you never see coming. So, to best illustrate this, you'll be in a chamber with platforms and ledges that you can only get to with Haste, as well as All-Seeing Eyes that your dagger or claw must close--permanently. After all the All-Seeing Eyes have been eliminated, get ti the Thief Statue and lay claim to the Primal Claw! Good luck!"); cm.sendOk("As every Thief knows, the best attack is the one you never see coming. So, to best illustrate this, you'll be in a chamber with platforms and ledges that you can only get to with Haste, as well as All-Seeing Eyes that your dagger or claw must close--permanently. After all the All-Seeing Eyes have been eliminated, get ti the Thief Statue and lay claim to the Primal Claw! Good luck!");
break; break;
case 610030000: case 610030000:
cm.sendOk("Once known as the 'Prince of Shadows', Grandmaster Ryo possessed supreme speed and power with short-ranged daggers and longer chain-like Claw. A part-time memeber of the Bosshunters, he was reowned for unparalleled ability to blend into the very nigth itself. His legend grew during a battle with Crimson Balrog, where he moved so swiftly that Balrog's attacks only caught air. Ryo also performed occasional 'retrievals' for those less fortunate than himself."); cm.sendOk("Once known as the 'Prince of Shadows', Grandmaster Ryo possessed supreme speed and power with short-ranged daggers and longer chain-like Claw. A part-time member of the Bosshunters, he was reowned for unparalleled ability to blend into the very nigth itself. His legend grew during a battle with Crimson Balrog, where he moved so swiftly that Balrog's attacks only caught air. Ryo also performed occasional 'retrievals' for those less fortunate than himself.");
break; break;
case 610030530: case 610030530:
if (cm.isAllReactorState(6108004, 1) && !cm.haveItem(4001256, 1)) { if (cm.isAllReactorState(6108004, 1)) {
var eim = cm.getEventInstance(); var eim = cm.getEventInstance();
var stgStatus = eim.getIntProperty("glpq5_room"); var stgStatus = eim.getIntProperty("glpq5_room");
var jobNiche = cm.getPlayer().getJob().getJobNiche(); var jobNiche = cm.getPlayer().getJob().getJobNiche();
@@ -25,6 +25,8 @@ function start() {
} else { } else {
cm.sendOk("Make room on your ETC inventory first."); cm.sendOk("Make room on your ETC inventory first.");
} }
} else {
cm.sendOk("The weapon inside this room has already been retrieved.");
} }
} else { } else {
cm.sendOk("Go now, destroy all of the watchful eyes with your mobility skills, fellow Thief. Report back to me when you are done."); cm.sendOk("Go now, destroy all of the watchful eyes with your mobility skills, fellow Thief. Report back to me when you are done.");

View File

@@ -24,11 +24,6 @@ function action(mode, type, selection) {
cm.dispose(); cm.dispose();
return; return;
} }
if (!cm.isEventLeader()) {
cm.sendNext("I wish for your leader to talk to me.");
cm.dispose();
return;
}
switch(cm.getPlayer().getMapId()) { switch(cm.getPlayer().getMapId()) {
case 610030100: case 610030100:
if (status == 0) { if (status == 0) {
@@ -38,7 +33,6 @@ function action(mode, type, selection) {
} else if (status == 2) { } else if (status == 2) {
cm.sendNext("You can find the portal somewhere around here... you'd better find it, quick. I'll catch up."); cm.sendNext("You can find the portal somewhere around here... you'd better find it, quick. I'll catch up.");
cm.dispose(); cm.dispose();
eim.setProperty("glpq1", "1");
} }
break; break;
case 610030200: case 610030200:
@@ -51,9 +45,9 @@ function action(mode, type, selection) {
break; break;
case 610030300: case 610030300:
if (status == 0) { if (status == 0) {
cm.sendNext("Now what we have here are more Sigils. All five Adventurers have to climb to the very top and go through the portal."); cm.sendNext("Now what we have here are more Sigils. At least five Adventurers have to climb to the very top and go through the portal. Stay aware though: not every wall or ground on this map is what it seems to be, so tread lightly!");
} else if (status == 1) { } else if (status == 1) {
cm.sendNext("Beware of these death traps: Menhirs. They really pack a punch."); cm.sendNext("Oh, and beware of these death traps: Menhirs. They really pack a punch. Good luck.");
cm.dispose(); cm.dispose();
} }
break; break;
@@ -61,7 +55,7 @@ function action(mode, type, selection) {
if (status == 0) { if (status == 0) {
cm.sendNext("Now what we have here are more Sigils. However, some of them don't work. Here all jobs must fill their roles, as at least one of these Sigils are activated by their job skills, however there can be more than one per job, so be sure to test them all."); cm.sendNext("Now what we have here are more Sigils. However, some of them don't work. Here all jobs must fill their roles, as at least one of these Sigils are activated by their job skills, however there can be more than one per job, so be sure to test them all.");
} else if (status == 1) { } else if (status == 1) {
cm.sendNext("These Stirges will get in your way, but they're merely a distraction. Try every one of these Sigils until they work."); cm.sendNext("These Stirges will get in your way, but they're merely a distraction. To get rid of them, get five adventurers to stand on the middle-left platform simultaneously. To pass, try every one of these Sigils until they work.");
cm.dispose(); cm.dispose();
} }
break; break;

View File

@@ -18,7 +18,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/*Adobis /*Jack
* *
*@author SharpAceX (Alan) *@author SharpAceX (Alan)
*/ */
@@ -43,107 +43,124 @@ function action(mode, type, selection) {
expedition = cm.getExpedition(cwkpq); expedition = cm.getExpedition(cwkpq);
em = cm.getEventManager("CWKPQ"); em = cm.getEventManager("CWKPQ");
if (mode < 1) { if (mode == -1) {
cm.dispose(); cm.dispose();
return; } else {
} if (mode == 0) {
if (status == 0) {
if (player.getLevel() < cwkpq.getMinLevel() && player.getLevel() > cwkpq.getMaxLevel()) { //Don't fit requirement
cm.sendOk("You do not meet the criteria to take attempt Crimsonwood Keep Party Quest!");
cm.dispose();
} else if (expedition == null) { //Start an expedition
cm.sendSimple("Would you like to assemble a team to attempt a #rCrimsonwood Keep Party Quest#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l");
status = 1;
} else if (expedition.isLeader(player)) { //If you're the leader, manage the exped
cm.sendSimple(list);
status = 2;
} else if (expedition.isRegistering()) { //If the expedition is registering
if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient
cm.sendOk("You have already registered for the expedition. Please wait for " + expedition.getLeader().getName() + " to begin the expedition.");
cm.dispose();
} else { //If you aren't in it, you're going to get added
cm.sendOk(expedition.addMember(cm.getPlayer()));
cm.dispose();
}
} else if (expedition.isInProgress()) { //Only if the expedition is in progress
if (expedition.contains(player)) { //If you're registered, warp you in
em.getInstance("CWKPQ_" + player.getClient().getChannel()).registerPlayer(player);
cm.dispose();
} else { //If you're not in by now, tough luck
cm.sendOk("Another expedition has taken the initiative to complete the Crimsonwood Keep Party Quest, lets pray for those brave souls.");
cm.dispose();
}
}
} else if (status == 1) {
if (selection == 1) {
cm.createExpedition(cwkpq);
cm.sendOk("The #rCrimsonwood Keep Party Quest Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!");
cm.dispose();
return;
} else if (selection == 2) {
cm.sendOk("Sure, not everyone's up to attempting Crimsonwood Keep Party Quest.");
cm.dispose();
return;
}
} else if (status == 2) {
if (selection == 1) {
if (expedition == null) {
cm.sendOk("The expedition could not be loaded.");
cm.dispose();
return;
}
var size = expedition.getMembers().size();
if (size == 1) {
cm.sendOk("You are the only member of the expedition.");
cm.dispose();
return;
}
var text = "The following members make up your expedition (Click on them to expel them):\r\n";
text += "\r\n\t\t1." + expedition.getLeader().getName();
for (var i = 1; i < size; i++) {
text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedition.getMembers().get(i).getName() + "#l\n";
}
cm.sendSimple(text);
status = 6;
} else if (selection == 2) {
cm.sendOk("The expedition will begin and you will now be escorted to the #bEntrance to CWKPQ Altar#k.");
status = 4;
} else if (selection == 3) {
player.getMap().broadcastMessage(MaplePacketCreator.removeClock());
player.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, expedition.getLeader().getName() + " has ended the expedition."));
cm.endExpedition(expedition);
cm.sendOk("The expedition has now ended. Sometimes the best strategy is to run away.");
cm.dispose();
return;
}
} else if (status == 4) {
var min = 1; //cwkpq.getMinSize();
var size = expedition.getMembers().size();
if (size < min) {
cm.sendOk("You need at least " + min + " players registered in your expedition.");
cm.dispose();
return;
}
if (em == null) {
cm.sendOk("The event could not be found, please report this on the forum.");
cm.dispose(); cm.dispose();
return; return;
} }
em.setProperty("leader", player.getName()); if (status == 0) {
em.setProperty("channel", player.getClient().getChannel()); if (player.getLevel() < cwkpq.getMinLevel() && player.getLevel() > cwkpq.getMaxLevel()) { //Don't fit requirement
em.startInstance(expedition); cm.sendOk("You do not meet the criteria to take attempt Crimsonwood Keep Party Quest!");
cm.dispose(); cm.dispose();
return; } else if (expedition == null) { //Start an expedition
} else if (status == 6) { cm.sendSimple("#e#b<Party Quest: Crimsonwood Keep>\r\n#k#n" + em.getProperty("party") + "\r\n\r\nWould you like to assemble a team to attempt a #rCrimsonwood Keep Party Quest#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l");
if (selection > 0) { status = 1;
var banned = expedition.getMembers().get(selection - 1); } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped
expedition.ban(banned); cm.sendSimple(list);
cm.sendOk("You have banned " + banned.getName() + " from the expedition."); status = 2;
} else if (expedition.isRegistering()) { //If the expedition is registering
if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient
cm.sendOk("You have already registered for the expedition. Please wait for #r" + expedition.getLeader().getName() + "#k to begin the expedition.");
cm.dispose();
} else { //If you aren't in it, you're going to get added
cm.sendOk(expedition.addMember(cm.getPlayer()));
cm.dispose();
}
} else if (expedition.isInProgress()) { //Only if the expedition is in progress
if (expedition.contains(player)) { //If you're registered, warp you in
em.getInstance("CWKPQ" + player.getClient().getChannel()).registerPlayer(player);
cm.dispose();
} else { //If you're not in by now, tough luck
cm.sendOk("Another expedition has taken the initiative to complete the Crimsonwood Keep Party Quest, lets pray for those brave souls.");
cm.dispose();
}
}
} else if (status == 1) {
if (selection == 1) {
expedition = cm.getExpedition(cwkpq);
if(expedition != null) {
cm.sendOk("Someone already taken the initiative to be the leader of the expedition. Try joining them!");
cm.dispose();
return;
}
cm.createExpedition(cwkpq);
cm.sendOk("The #rCrimsonwood Keep Party Quest Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!");
cm.dispose();
return;
} else if (selection == 2) {
cm.sendOk("Sure, not everyone's up to attempting Crimsonwood Keep Party Quest.");
cm.dispose();
return;
}
} else if (status == 2) {
if (selection == 1) {
if (expedition == null) {
cm.sendOk("The expedition could not be loaded.");
cm.dispose();
return;
}
var size = expedition.getMembers().size();
if (size == 1) {
cm.sendOk("You are the only member of the expedition.");
cm.dispose();
return;
}
var text = "The following members make up your expedition (Click on them to expel them):\r\n";
text += "\r\n\t\t1." + expedition.getLeader().getName();
for (var i = 1; i < size; i++) {
text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedition.getMembers().get(i).getName() + "#l\n";
}
cm.sendSimple(text);
status = 6;
} else if (selection == 2) {
var min = cwkpq.getMinSize();
var size = expedition.getMembers().size();
if (size < min) {
cm.sendOk("You need at least " + min + " players registered in your expedition.");
cm.dispose();
return;
}
cm.sendOk("The expedition will begin and you will now be escorted to the #bEntrance to CWKPQ Altar#k.");
status = 4;
} else if (selection == 3) {
player.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, expedition.getLeader().getName() + " has ended the expedition."));
cm.endExpedition(expedition);
cm.sendOk("The expedition has now ended. Sometimes the best strategy is to run away.");
cm.dispose();
return;
}
} else if (status == 4) {
if (em == null) {
cm.sendOk("The event could not be initialized, please report this on the forum.");
cm.dispose();
return;
}
em.setProperty("leader", player.getName());
em.setProperty("channel", player.getClient().getChannel());
if(!em.startInstance(expedition)) {
cm.sendOk("Another expedition has taken the initiative to complete the Crimsonwood Keep Party Quest, lets pray for those brave souls.");
cm.dispose();
return;
}
cm.dispose(); cm.dispose();
} else { return;
cm.sendSimple(list); } else if (status == 6) {
status = 2; if (selection > 0) {
var banned = expedition.getMembers().get(selection - 1);
expedition.ban(banned);
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
cm.dispose();
} else {
cm.sendSimple(list);
status = 2;
}
} }
} }
} }

View File

@@ -5,18 +5,25 @@ function start() {
} }
function action(mode, type, selection) { function action(mode, type, selection) {
if (mode == 1) { var eim = cm.getEventInstance();
status++; if (eim != null && eim.getIntProperty("glpq6") == 3) {
} else { cm.sendOk("... Well played. You overtook the Twisted Masters. Pass through that gate to receive your prizes.");
status--; cm.dispose();
return;
} }
if (!cm.isEventLeader()) { if (!cm.isEventLeader()) {
cm.sendNext("I wish for your leader to talk to me."); cm.sendNext("I wish for your leader to talk to me.");
cm.dispose(); cm.dispose();
return; return;
} }
var eim = cm.getEventInstance(); if (mode == 1) {
status++;
} else {
status--;
}
if (eim != null) { if (eim != null) {
if (eim.getIntProperty("glpq6") == 0) { if (eim.getIntProperty("glpq6") == 0) {
if (status == 0) { if (status == 0) {
@@ -45,10 +52,6 @@ function action(mode, type, selection) {
cm.sendNext("Well, no matter! The Twisted Masters will be glad to welcome you."); cm.sendNext("Well, no matter! The Twisted Masters will be glad to welcome you.");
cm.mapMessage(6, "Twisted Masters approach!"); cm.mapMessage(6, "Twisted Masters approach!");
//MV or Heron
var mob = eim.getMonster(9400589);
cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-1000, 276));
//Margana //Margana
var mob = eim.getMonster(9400590); var mob = eim.getMonster(9400590);
cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-22, 1)); cm.getMap().spawnMonsterOnGroundBelow(mob, new java.awt.Point(-22, 1));
@@ -79,6 +82,8 @@ function action(mode, type, selection) {
eim.setIntProperty("glpq6", 3); eim.setIntProperty("glpq6", 3);
eim.showClearEffect(true); eim.showClearEffect(true);
eim.giveEventPlayersStageReward(6);
eim.clearPQ(); eim.clearPQ();
cm.dispose(); cm.dispose();
} else { } else {
@@ -86,6 +91,7 @@ function action(mode, type, selection) {
cm.dispose(); cm.dispose();
} }
} else { } else {
cm.sendOk("... Well played. You overtook the Twisted Masters. Pass through that gate to receive your prizes.");
cm.dispose(); cm.dispose();
} }
} else { } else {

View File

@@ -9,9 +9,11 @@ function enter(pi) {
} else { } else {
eim.setIntProperty("glpq3_p", eim.getIntProperty("glpq3_p") + 1); eim.setIntProperty("glpq3_p", eim.getIntProperty("glpq3_p") + 1);
if(eim.getIntProperty("glpq3_p") == 5) { if(eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) {
pi.mapMessage(6, "The Antellion grants you access to the next portal! Proceed!"); pi.mapMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030300, "3pt", 2); eim.showClearEffect(610030300, "3pt", 2);
eim.giveEventPlayersStageReward(3);
} else { } else {
pi.mapMessage(6, "An adventurer has passed through! " + (5 - eim.getIntProperty("glpq3_p")) + " to go."); pi.mapMessage(6, "An adventurer has passed through! " + (5 - eim.getIntProperty("glpq3_p")) + " to go.");
} }

View File

@@ -1,7 +1,7 @@
function enter(pi) { function enter(pi) {
var eim = pi.getEventInstance(); var eim = pi.getEventInstance();
if (eim != null) { if (eim != null) {
if (eim.getIntProperty("glpq3") != 5 || eim.getIntProperty("glpq3_p") != 5) { if (eim.getIntProperty("glpq3") < 5 || eim.getIntProperty("glpq3_p") < 5) {
pi.playerMessage(5, "The portal is not opened yet."); pi.playerMessage(5, "The portal is not opened yet.");
return false; return false;
} else { } else {

View File

@@ -5,12 +5,7 @@ function enter(pi) {
pi.playerMessage(5, "The portal is not opened yet."); pi.playerMessage(5, "The portal is not opened yet.");
return false; return false;
} else { } else {
pi.removeAll(4001256); pi.warp(610030600, 0);
pi.removeAll(4001257);
pi.removeAll(4001258);
pi.removeAll(4001259);
pi.removeAll(4001260);
pi.warp(610030600, 0);
return true; return true;
} }
} }

View File

@@ -3,11 +3,15 @@ function enter(pi) {
if (react.getState() < 1) { if (react.getState() < 1) {
react.forceHitReactor(1); react.forceHitReactor(1);
pi.getEventInstance().setIntProperty("glpq1", 1);
var eim = pi.getEventInstance();
eim.setIntProperty("glpq1", 1);
pi.getEventInstance().dropMessage(5, "A strange force starts being emitted from the portal apparatus, showing a hidden path once blocked now open."); pi.getEventInstance().dropMessage(5, "A strange force starts being emitted from the portal apparatus, showing a hidden path once blocked now open.");
pi.warp(610030100, 0); pi.warp(610030100, 0);
pi.getEventInstance().showClearEffect(); pi.getEventInstance().showClearEffect();
eim.giveEventPlayersStageReward(1);
return true; return true;
} }

View File

@@ -1,5 +1,4 @@
function act() { function act() {
var eim = rm.getEventInstance(); var eim = rm.getEventInstance();
if (eim != null) { if (eim != null) {
var mapId = rm.getMap().getId(); var mapId = rm.getMap().getId();
@@ -9,7 +8,9 @@ function act() {
eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1); eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1);
if (eim.getIntProperty("glpq2") == 5) { //all 5 done if (eim.getIntProperty("glpq2") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "2pt", 2); eim.showClearEffect(mapId, "2pt", 2);
eim.giveEventPlayersStageReward(2);
} }
} else if (mapId == 610030300) { } else if (mapId == 610030300) {
eim.dropMessage(6, "The Warrior Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!"); eim.dropMessage(6, "The Warrior Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!");
@@ -17,11 +18,10 @@ function act() {
rm.getMap().moveEnvironment("menhir0", 1); rm.getMap().moveEnvironment("menhir0", 1);
if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) { if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) {
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "3pt", 2); eim.showClearEffect(mapId, "3pt", 2);
eim.giveEventPlayersStageReward(3);
} }
} }
} }
//rm.getMap().moveEnvironment("menhir0", 1);
} }

View File

@@ -8,7 +8,9 @@ function act() {
eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1); eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1);
if (eim.getIntProperty("glpq2") == 5) { //all 5 done if (eim.getIntProperty("glpq2") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "2pt", 2); eim.showClearEffect(mapId, "2pt", 2);
eim.giveEventPlayersStageReward(2);
} }
} else if (mapId == 610030300) { } else if (mapId == 610030300) {
eim.dropMessage(6, "The Archer Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!"); eim.dropMessage(6, "The Archer Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!");
@@ -17,7 +19,9 @@ function act() {
rm.getMap().moveEnvironment("menhir2", 1); rm.getMap().moveEnvironment("menhir2", 1);
if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) { if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) {
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "3pt", 2);
eim.showClearEffect(mapId, "3pt", 2);
eim.giveEventPlayersStageReward(3);
} }
} }
} }

View File

@@ -8,7 +8,9 @@ function act() {
eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1); eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1);
if (eim.getIntProperty("glpq2") == 5) { //all 5 done if (eim.getIntProperty("glpq2") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "2pt", 2); eim.showClearEffect(mapId, "2pt", 2);
eim.giveEventPlayersStageReward(2);
} }
} else if (mapId == 610030300) { } else if (mapId == 610030300) {
eim.dropMessage(6, "The Mage Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!"); eim.dropMessage(6, "The Mage Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!");
@@ -16,7 +18,9 @@ function act() {
rm.getMap().moveEnvironment("menhir3", 1); rm.getMap().moveEnvironment("menhir3", 1);
if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) { if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) {
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "3pt", 2); eim.showClearEffect(mapId, "3pt", 2);
eim.giveEventPlayersStageReward(3);
} }
} }
} }

View File

@@ -8,7 +8,9 @@ function act() {
eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1); eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1);
if (eim.getIntProperty("glpq2") == 5) { //all 5 done if (eim.getIntProperty("glpq2") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "2pt", 2); eim.showClearEffect(mapId, "2pt", 2);
eim.giveEventPlayersStageReward(2);
} }
} else if (mapId == 610030300) { } else if (mapId == 610030300) {
eim.dropMessage(6, "The Thief Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!"); eim.dropMessage(6, "The Thief Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!");
@@ -16,7 +18,9 @@ function act() {
rm.getMap().moveEnvironment("menhir4", 1); rm.getMap().moveEnvironment("menhir4", 1);
if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) { if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) {
rm.mapMessage(6, "The Antellion grants you access to the next portal! Proceed!"); rm.mapMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "3pt", 2); eim.showClearEffect(mapId, "3pt", 2);
eim.giveEventPlayersStageReward(3);
} }
} }
} }

View File

@@ -8,7 +8,9 @@ function act() {
eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1); eim.setIntProperty("glpq2", eim.getIntProperty("glpq2") + 1);
if (eim.getIntProperty("glpq2") == 5) { //all 5 done if (eim.getIntProperty("glpq2") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "2pt", 2); eim.showClearEffect(mapId, "2pt", 2);
eim.giveEventPlayersStageReward(2);
} }
} else if (mapId == 610030300) { } else if (mapId == 610030300) {
eim.dropMessage(6, "The Pirate Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!"); eim.dropMessage(6, "The Pirate Sigil has been activated! You hear gears turning! The Menhir Defense System is active! Run!");
@@ -16,7 +18,9 @@ function act() {
rm.getMap().moveEnvironment("menhir5", 1); rm.getMap().moveEnvironment("menhir5", 1);
if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) { if (eim.getIntProperty("glpq3") == 5 && eim.getIntProperty("glpq3_p") == 5) {
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(mapId, "3pt", 2); eim.showClearEffect(mapId, "3pt", 2);
eim.giveEventPlayersStageReward(3);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1); eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1);
if (eim.getIntProperty("glpq5") == 5) { //all 5 done if (eim.getIntProperty("glpq5") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030500, "5pt", 2); eim.showClearEffect(610030500, "5pt", 2);
eim.giveEventPlayersStageReward(5);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1); eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1);
if (eim.getIntProperty("glpq5") == 5) { //all 5 done if (eim.getIntProperty("glpq5") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030500, "5pt", 2); eim.showClearEffect(610030500, "5pt", 2);
eim.giveEventPlayersStageReward(5);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1); eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1);
if (eim.getIntProperty("glpq5") == 5) { //all 5 done if (eim.getIntProperty("glpq5") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030500, "5pt", 2); eim.showClearEffect(610030500, "5pt", 2);
eim.giveEventPlayersStageReward(5);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1); eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1);
if (eim.getIntProperty("glpq5") == 5) { //all 5 done if (eim.getIntProperty("glpq5") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030500, "5pt", 2); eim.showClearEffect(610030500, "5pt", 2);
eim.giveEventPlayersStageReward(5);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1); eim.setIntProperty("glpq5", eim.getIntProperty("glpq5") + 1);
if (eim.getIntProperty("glpq5") == 5) { //all 5 done if (eim.getIntProperty("glpq5") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030500, "5pt", 2); eim.showClearEffect(610030500, "5pt", 2);
eim.giveEventPlayersStageReward(5);
} }
} }
} }

View File

@@ -0,0 +1,21 @@
var fid = "glpq_s";
function action() {
rm.mapMessage(6, "All stirges have disappeared.");
rm.getMap().killAllMonsters(true);
eim.setIntProperty(fid, 777);
}
function touch() {
var eim = rm.getEventInstance();
if(eim.getIntProperty(fid) == 5) action();
eim.setIntProperty(fid, eim.getIntProperty(fid) + 1);
}
function untouch() {
var eim = rm.getEventInstance();
if(eim.getIntProperty(fid) == 5) action();
eim.setIntProperty(fid, eim.getIntProperty(fid) - 1);
}

View File

@@ -0,0 +1,22 @@
function action() { //flame0, im assuming this is topleft
var flames = Array("a1", "a2", "b1", "b2", "c1", "c2");
for (var i = 0; i < flames.length; i++) {
rm.getMap().toggleEnvironment(flames[i]);
}
}
var fid = "glpq_f0";
function touch() {
var eim = rm.getEventInstance();
if(eim.getIntProperty(fid) == 0) action();
eim.setIntProperty(fid, eim.getIntProperty(fid) + 1);
}
function untouch() {
var eim = rm.getEventInstance();
if(eim.getIntProperty(fid) == 1) action();
eim.setIntProperty(fid, eim.getIntProperty(fid) - 1);
}

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1); eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1);
if (eim.getIntProperty("glpq4") == 5) { //all 5 done if (eim.getIntProperty("glpq4") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030400, "4pt", 2); eim.showClearEffect(610030400, "4pt", 2);
eim.giveEventPlayersStageReward(4);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1); eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1);
if (eim.getIntProperty("glpq4") == 5) { //all 5 done if (eim.getIntProperty("glpq4") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030400, "4pt", 2); eim.showClearEffect(610030400, "4pt", 2);
eim.giveEventPlayersStageReward(4);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1); eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1);
if (eim.getIntProperty("glpq4") == 5) { //all 5 done if (eim.getIntProperty("glpq4") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030400, "4pt", 2); eim.showClearEffect(610030400, "4pt", 2);
eim.giveEventPlayersStageReward(4);
} }
} }
} }

View File

@@ -5,7 +5,9 @@ function act() {
eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1); eim.setIntProperty("glpq4", eim.getIntProperty("glpq4") + 1);
if (eim.getIntProperty("glpq4") == 5) { //all 5 done if (eim.getIntProperty("glpq4") == 5) { //all 5 done
eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!"); eim.dropMessage(6, "The Antellion grants you access to the next portal! Proceed!");
eim.showClearEffect(610030400, "4pt", 2); eim.showClearEffect(610030400, "4pt", 2);
eim.giveEventPlayersStageReward(4);
} }
} }
} }

Some files were not shown because too many files have changed in this diff Show More