Vegas's spell + pet/mounts schedule revamp + CafePQ
Added Vega's Spell feature. Refactored mounts and pets schedules (now one thread runs globally updating stats). Fixed Pet Ignore now saving to DB. Fixed Flash Jump animation not appearing for other players just after changing jobs. Fixed 3rd job, now as a proper event with timeout. Introducing Brand-new PQ: CafePQ.
This commit is contained in:
92
scripts/event/3rdJob_bowman.js
Normal file
92
scripts/event/3rdJob_bowman.js
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
*3rd Job Event - Bowman
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010100;
|
||||
var exitMap = 105040305;
|
||||
|
||||
var minMapId = 108010100;
|
||||
var maxMapId = 108010101;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
playerExit(eim, eim.getPlayers().get(0));
|
||||
player.changeMap(exitMap);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function clear(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap);
|
||||
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose() {}
|
||||
92
scripts/event/3rdJob_magician.js
Normal file
92
scripts/event/3rdJob_magician.js
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
*3rd Job Event - Magician
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010200;
|
||||
var exitMap = 100040106;
|
||||
|
||||
var minMapId = 108010200;
|
||||
var maxMapId = 108010201;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
playerExit(eim, eim.getPlayers().get(0));
|
||||
player.changeMap(exitMap);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function clear(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap);
|
||||
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose() {}
|
||||
92
scripts/event/3rdJob_pirate.js
Normal file
92
scripts/event/3rdJob_pirate.js
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
*3rd Job Event - Pirate
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010500;
|
||||
var exitMap = 105070200;
|
||||
|
||||
var minMapId = 108010500;
|
||||
var maxMapId = 108010501;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
playerExit(eim, eim.getPlayers().get(0));
|
||||
player.changeMap(exitMap);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function clear(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap);
|
||||
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose() {}
|
||||
92
scripts/event/3rdJob_thief.js
Normal file
92
scripts/event/3rdJob_thief.js
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
*3rd Job Event - Thief
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010400;
|
||||
var exitMap = 107000402;
|
||||
|
||||
var minMapId = 108010400;
|
||||
var maxMapId = 108010401;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
playerExit(eim, eim.getPlayers().get(0));
|
||||
player.changeMap(exitMap);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function clear(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap);
|
||||
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose() {}
|
||||
92
scripts/event/3rdJob_warrior.js
Normal file
92
scripts/event/3rdJob_warrior.js
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
*3rd Job Event - Warrior
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010300;
|
||||
var exitMap = 105070001;
|
||||
|
||||
var minMapId = 108010300;
|
||||
var maxMapId = 108010301;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
playerExit(eim, eim.getPlayers().get(0));
|
||||
player.changeMap(exitMap);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function clear(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap);
|
||||
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose() {}
|
||||
@@ -1,144 +0,0 @@
|
||||
importPackage(Packages.client);
|
||||
importPackage(Packages.server.life);
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
function init() {
|
||||
}
|
||||
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
function setClassVars(player) {
|
||||
var returnMapId;
|
||||
var monsterId;
|
||||
var mapId;
|
||||
if (player.getJob().equals(MapleJob.FP_WIZARD) ||
|
||||
player.getJob().equals(MapleJob.IL_WIZARD) ||
|
||||
player.getJob().equals(MapleJob.CLERIC)) {
|
||||
mapId = 108010201;
|
||||
returnMapId = 100040106;
|
||||
monsterId = 9001001;
|
||||
} else if (player.getJob().equals(MapleJob.FIGHTER) ||
|
||||
player.getJob().equals(MapleJob.PAGE) ||
|
||||
player.getJob().equals(MapleJob.SPEARMAN)) {
|
||||
mapId = 108010301;
|
||||
returnMapId = 105070001;
|
||||
monsterId = 9001000;
|
||||
} else if (player.getJob().equals(MapleJob.ASSASSIN) ||
|
||||
player.getJob().equals(MapleJob.BANDIT)) {
|
||||
mapId = 108010401;
|
||||
returnMapId = 107000402;
|
||||
monsterId = 9001003;
|
||||
} else if (player.getJob().equals(MapleJob.HUNTER) ||
|
||||
player.getJob().equals(MapleJob.CROSSBOWMAN)) {
|
||||
mapId = 108010101;
|
||||
returnMapId = 105040305;
|
||||
monsterId = 9001002;
|
||||
} else if (player.getJob().equals(MapleJob.BRAWLER) ||
|
||||
player.getJob().equals(MapleJob.GUNSLINGER)) {
|
||||
mapId = 108010501;
|
||||
returnMapId = 105040305;
|
||||
monsterId = 9001008;
|
||||
}
|
||||
return new Array(mapId, returnMapId, monsterId);
|
||||
}
|
||||
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var info = setClassVars(player);
|
||||
var mapId = info[0];
|
||||
var returnMapId = info[1];
|
||||
var monsterId = info[2];
|
||||
var map = eim.getMapInstance(mapId);
|
||||
map.toggleDrops();
|
||||
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
var mob = map.getMonsterById(monsterId);
|
||||
eim.registerMonster(mob);
|
||||
eim.schedule("warpOut", 20 * 60 * 1000);
|
||||
map.addMapTimer(20 * 60);
|
||||
}
|
||||
|
||||
|
||||
function playerDead(eim, player) {
|
||||
var info = setClassVars(player);
|
||||
var mapId = info[0];
|
||||
var returnMapId = info[1];
|
||||
var monsterId = info[2];
|
||||
player.setHp(1);
|
||||
var returnMap = em.getChannelServer().getMapFactory().getMap(returnMapId);
|
||||
player.changeMap(returnMap, returnMap.getPortal(0));
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
var info = setClassVars(player);
|
||||
var mapId = info[0];
|
||||
var returnMapId = info[1];
|
||||
var monsterId = info[2];
|
||||
eim.unregisterPlayer(player);
|
||||
player.getMap().removePlayer(player);
|
||||
var returnMap = em.getChannelServer().getMapFactory().getMap(returnMapId);
|
||||
player.setMap(returnMap);
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {
|
||||
var winner = eim.getPlayers().get(0);
|
||||
var info = setClassVars(winner);
|
||||
var mapId = info[0];
|
||||
var returnMapId = info[1];
|
||||
var monsterId = info[2];
|
||||
var map = eim.getMapFactory().getMap(mapId);
|
||||
map.spawnItemDrop(winner, winner, new Item(4031059, 0, 1), winner.getPosition(), true, false);
|
||||
eim.schedule("warpOut", 12 * 60 * 1000);
|
||||
map.addMapTimer(12 * 60);
|
||||
}
|
||||
|
||||
function cancelSchedule(eim) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
function warpOut(eim) {
|
||||
var iter = eim.getPlayers().iterator();
|
||||
while (iter.hasNext()) {
|
||||
var player = iter.next();
|
||||
var info = setClassVars(player);
|
||||
var mapId = info[0];
|
||||
var returnMapId = info[1];
|
||||
var monsterId = info[2];
|
||||
var returnMap = em.getChannelServer().getMapFactory().getMap(returnMapId);
|
||||
player.changeMap(returnMap, returnMap.getPortal(0));
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
|
||||
function leftParty(eim, player) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
function disbandParty(eim, player) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function dispose() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
function cancelSchedule(eim) {
|
||||
}
|
||||
@@ -49,13 +49,13 @@ function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel;
|
||||
|
||||
evLevel = 6; //Rewards at event completion
|
||||
itemSet = [1122018, 1122005, 1022088, 1402013, 1032030, 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];
|
||||
itemSet = [3010061, 1122018, 1122005, 1022088, 1402013, 1032030, 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, 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, 1032030, 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];
|
||||
itemSet = [3010063, 1122018, 1122005, 1022088, 1402013, 1032030, 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, 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
|
||||
|
||||
243
scripts/event/CafePQ_1.js
Normal file
243
scripts/event/CafePQ_1.js
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Cafe PQ 1
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
var entryMap = 190000000;
|
||||
var exitMap = 193000000;
|
||||
var recruitMap = 193000000;
|
||||
|
||||
var minMapId = 190000000;
|
||||
var maxMapId = 190000002;
|
||||
|
||||
var eventMaps = [190000000, 190000001, 190000002];
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 400; // total of coupons to complete the event
|
||||
|
||||
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 = [4001007];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [4001014];
|
||||
itemQty = [1];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [20000]; //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("Lan1_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
|
||||
eim.setIntProperty("couponsNeeded", couponsNeeded);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
var mapObj = eim.getInstanceMap(eventMaps[i]);
|
||||
mapObj.resetPQ(level);
|
||||
mapObj.toggleDrops();
|
||||
mapObj.instanceMapForceRespawn();
|
||||
}
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
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 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)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
end(eim);
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
eim.giveEventPlayersStageReward(1);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect(eventMaps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function getDroppedQuantity(mob) {
|
||||
if(mob.getLevel() > 65) {
|
||||
return 5;
|
||||
} else if(mob.getLevel() > 40) {
|
||||
return 2;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
try {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
mapObj.spawnItemDrop(mob, dropper, itemObj, mob.getPosition(), true, false);
|
||||
|
||||
} catch(err) {} // PQ not started yet
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
243
scripts/event/CafePQ_2.js
Normal file
243
scripts/event/CafePQ_2.js
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Cafe PQ 2
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
var entryMap = 191000000;
|
||||
var exitMap = 193000000;
|
||||
var recruitMap = 193000000;
|
||||
|
||||
var minMapId = 191000000;
|
||||
var maxMapId = 191000001;
|
||||
|
||||
var eventMaps = [191000000, 191000001];
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 350; // total of coupons to complete the event
|
||||
|
||||
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 = [4001007];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [4001009];
|
||||
itemQty = [1];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [15000]; //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("Lan2_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
|
||||
eim.setIntProperty("couponsNeeded", couponsNeeded);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
var mapObj = eim.getInstanceMap(eventMaps[i]);
|
||||
mapObj.resetPQ(level);
|
||||
mapObj.toggleDrops();
|
||||
mapObj.instanceMapForceRespawn();
|
||||
}
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
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 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)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
end(eim);
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
eim.giveEventPlayersStageReward(1);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect(eventMaps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function getDroppedQuantity(mob) {
|
||||
if(mob.getLevel() > 65) {
|
||||
return 5;
|
||||
} else if(mob.getLevel() > 40) {
|
||||
return 2;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
try {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
mapObj.spawnItemDrop(mob, dropper, itemObj, mob.getPosition(), true, false);
|
||||
|
||||
} catch(err) {} // PQ not started yet
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
243
scripts/event/CafePQ_3.js
Normal file
243
scripts/event/CafePQ_3.js
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Cafe PQ 3
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
var entryMap = 192000000;
|
||||
var exitMap = 193000000;
|
||||
var recruitMap = 193000000;
|
||||
|
||||
var minMapId = 192000000;
|
||||
var maxMapId = 192000001;
|
||||
|
||||
var eventMaps = [192000000, 192000001];
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 350; // total of coupons to complete the event
|
||||
|
||||
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 = [4001007];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [4001013];
|
||||
itemQty = [1];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [12000]; //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("Lan3_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
|
||||
eim.setIntProperty("couponsNeeded", couponsNeeded);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
var mapObj = eim.getInstanceMap(eventMaps[i]);
|
||||
mapObj.resetPQ(level);
|
||||
mapObj.toggleDrops();
|
||||
mapObj.instanceMapForceRespawn();
|
||||
}
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
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 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)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
end(eim);
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
eim.giveEventPlayersStageReward(1);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect(eventMaps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function getDroppedQuantity(mob) {
|
||||
if(mob.getLevel() > 65) {
|
||||
return 3;
|
||||
} else if(mob.getLevel() > 40) {
|
||||
return 2;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
try {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
mapObj.spawnItemDrop(mob, dropper, itemObj, mob.getPosition(), true, false);
|
||||
|
||||
} catch(err) {} // PQ not started yet
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
243
scripts/event/CafePQ_4.js
Normal file
243
scripts/event/CafePQ_4.js
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Cafe PQ 4
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
var entryMap = 195000000;
|
||||
var exitMap = 193000000;
|
||||
var recruitMap = 193000000;
|
||||
|
||||
var minMapId = 195000000;
|
||||
var maxMapId = 195030000;
|
||||
|
||||
var eventMaps = [195000000, 195010000, 195020000, 195030000];
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 450; // total of coupons to complete the event
|
||||
|
||||
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 = [4001007];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [4001011];
|
||||
itemQty = [1];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [21000]; //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("Lan4_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
|
||||
eim.setIntProperty("couponsNeeded", couponsNeeded);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
var mapObj = eim.getInstanceMap(eventMaps[i]);
|
||||
mapObj.resetPQ(level);
|
||||
mapObj.toggleDrops();
|
||||
mapObj.instanceMapForceRespawn();
|
||||
}
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
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 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)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
end(eim);
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
eim.giveEventPlayersStageReward(1);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect(eventMaps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function getDroppedQuantity(mob) {
|
||||
if(mob.getLevel() > 65) {
|
||||
return 5;
|
||||
} else if(mob.getLevel() > 40) {
|
||||
return 2;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
try {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
mapObj.spawnItemDrop(mob, dropper, itemObj, mob.getPosition(), true, false);
|
||||
|
||||
} catch(err) {} // PQ not started yet
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
243
scripts/event/CafePQ_5.js
Normal file
243
scripts/event/CafePQ_5.js
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Cafe PQ 5
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
var entryMap = 196000000;
|
||||
var exitMap = 193000000;
|
||||
var recruitMap = 193000000;
|
||||
|
||||
var minMapId = 196000000;
|
||||
var maxMapId = 196010000;
|
||||
|
||||
var eventMaps = [196000000, 196010000];
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 500; // total of coupons to complete the event
|
||||
|
||||
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 = [4001007];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [4001012];
|
||||
itemQty = [1];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [25000]; //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("Lan5_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
|
||||
eim.setIntProperty("couponsNeeded", couponsNeeded);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
var mapObj = eim.getInstanceMap(eventMaps[i]);
|
||||
mapObj.resetPQ(level);
|
||||
mapObj.toggleDrops();
|
||||
mapObj.instanceMapForceRespawn();
|
||||
}
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
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 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)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
end(eim);
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
eim.giveEventPlayersStageReward(1);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect(eventMaps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function getDroppedQuantity(mob) {
|
||||
if(mob.getLevel() > 65) {
|
||||
return 5;
|
||||
} else if(mob.getLevel() > 40) {
|
||||
return 2;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
try {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
mapObj.spawnItemDrop(mob, dropper, itemObj, mob.getPosition(), true, false);
|
||||
|
||||
} catch(err) {} // PQ not started yet
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
244
scripts/event/CafePQ_6.js
Normal file
244
scripts/event/CafePQ_6.js
Normal file
@@ -0,0 +1,244 @@
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Cafe PQ 6
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
var entryMap = 197000000;
|
||||
var exitMap = 193000000;
|
||||
var recruitMap = 193000000;
|
||||
|
||||
var minMapId = 197000000;
|
||||
var maxMapId = 197010000;
|
||||
|
||||
var eventMaps = [197000000, 197010000];
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 300; // total of coupons to complete the event
|
||||
|
||||
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 = [4001007];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [4001010];
|
||||
itemQty = [1];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = [10000]; //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("Lan6_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
|
||||
eim.setIntProperty("couponsNeeded", couponsNeeded);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
var mapObj = eim.getInstanceMap(eventMaps[i]);
|
||||
mapObj.resetPQ(level);
|
||||
mapObj.toggleDrops();
|
||||
mapObj.instanceMapForceRespawn();
|
||||
}
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
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 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)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
end(eim);
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function giveRandomEventReward(eim, player) {
|
||||
eim.giveEventReward(player);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
eim.giveEventPlayersStageReward(1);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect(eventMaps[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function getDroppedQuantity(mob) {
|
||||
if(mob.getLevel() > 65) {
|
||||
return 5;
|
||||
} else if(mob.getLevel() > 40) {
|
||||
return 2;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
try {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
var itemObj = new Item(4001007, 0, 1);
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
itemObj.setQuantity(getDroppedQuantity(mob));
|
||||
mapObj.spawnItemDrop(mob, dropper, itemObj, mob.getPosition(), true, false);
|
||||
|
||||
} catch(err) {} // PQ not started yet
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
@@ -60,7 +60,7 @@ function action(mode, type, selection) {
|
||||
if(selection == 0)
|
||||
cm.gainMeso(-1500);
|
||||
cm.getPlayer().saveLocation("FLORINA");
|
||||
cm.warp(110000000);
|
||||
cm.warp(110000000, "st00");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
@@ -23,10 +23,113 @@
|
||||
/*
|
||||
NPC ID: 1052013
|
||||
NPC NAME: Computer
|
||||
@author Vcoc
|
||||
@author Ronan
|
||||
*/
|
||||
|
||||
var status;
|
||||
var pqArea;
|
||||
|
||||
function start() {
|
||||
cm.sendOk("MapleStory.exe stopped working... Please, restart the game.");
|
||||
cm.dispose();
|
||||
}
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && type > 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if(cm.getMapId() != 193000000) {
|
||||
var eim = cm.getEventInstance();
|
||||
|
||||
if(status == 0) {
|
||||
if(!eim.isEventCleared()) {
|
||||
var couponsNeeded = eim.getIntProperty("couponsNeeded");
|
||||
|
||||
if(cm.isEventLeader()) {
|
||||
if(cm.haveItem(4001007, couponsNeeded)) {
|
||||
cm.sendNext("Your team collected all the needed coupons, good work!");
|
||||
cm.gainItem(4001007, couponsNeeded);
|
||||
eim.clearPQ();
|
||||
|
||||
cm.dispose();
|
||||
return;
|
||||
} else {
|
||||
cm.sendYesNo("Your team must collect #r" + couponsNeeded + "#k coupons to complete this event. Talk to me when you have the right amount in hands... Or you want to #bquit now#k? Note that if you quit now #ryour team will be forced to quit#k as well.");
|
||||
}
|
||||
} else {
|
||||
cm.sendYesNo("Your team must collect #r" + couponsNeeded + "#k coupons to complete this event. Let your leader talk to me with the right amount in hands... Or you want to #bquit now#k? Note that if you quit now your team #rmay become undermanned#k to complete this event.");
|
||||
}
|
||||
} else {
|
||||
if(!eim.giveEventReward(cm.getPlayer())) {
|
||||
cm.sendOk("Please make a room on your ETC inventory to receive the prize.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.warp(193000000);
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
} else if(status == 1) {
|
||||
cm.warp(193000000);
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var levels = ["#m190000000#", "#m191000000#", "#m192000000#", "#m195000000#", "#m196000000#", "#m197000000#"];
|
||||
if (status == 0) {
|
||||
var sendStr = "Premium Road is a place of multiple areas with monsters of most various types gathered together, an ideal place for grinding EXP and erasers for the #p1052014#. Select the area you are willing to face:\r\n\r\n#b";
|
||||
for(var i = 0; i < 6; i++) {
|
||||
sendStr += "#L" + i + "#" + levels[i] + "#l\r\n";
|
||||
}
|
||||
|
||||
cm.sendSimple(sendStr);
|
||||
} else if (status == 1) {
|
||||
pqArea = selection + 1;
|
||||
|
||||
em = cm.getEventManager("CafePQ_" + pqArea);
|
||||
if(em == null) {
|
||||
cm.sendOk("The CafePQ_" + pqArea + "has encountered an error.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
cm.sendSimple("#e#b<Party Quest: Premium Road - " + levels[selection] + ">\r\n#k#n" + em.getProperty("party") + "\r\n\r\nThe #p1052014# operates differently than the common ones. They do not use mesos or gachapon tickets, rather #rERASERS#k, that can be obtained by completing the missions held on the Premium Road. To go there, you must find partners and attend to a Party Quest. When teamed up and ready, have your #bparty leader#k talk to me.#b\r\n#L0#I want to participate in the party quest.\r\n#L1#I want to find party members.\r\n#L2#I would like to hear more details.");
|
||||
} else if (status == 2) {
|
||||
if (selection == 0) {
|
||||
if (cm.getParty() == null) {
|
||||
cm.sendOk("You can participate in the party quest only if you are in a party.");
|
||||
cm.dispose();
|
||||
} else if(!cm.isLeader()) {
|
||||
cm.sendOk("Your party leader must talk to me to start this party quest.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
var eli = em.getEligibleParty(cm.getParty());
|
||||
if(eli.size() > 0) {
|
||||
if(!em.startInstance(cm.getParty(), cm.getPlayer().getMap(), 1)) {
|
||||
cm.sendOk("Another party has already entered the #rParty Quest#k in this channel. Please try another channel, or wait for the current party to finish.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
cm.sendOk("You cannot start this party quest yet, because either your party is not in the range size, some of your party members are not eligible to attempt it or they are not in this map. If you're having trouble finding party members, try Party Search.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (selection == 1) {
|
||||
cm.sendOk("Try using a Super Megaphone or asking your buddies or guild to join!");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendOk("#e#b<Party Quest: Premium Road>#k#n\r\nOn the maps ahead, you will face many common-leveled mobs to face on. Grind all the required coupons from them and give it to me. All members will then receive a eraser, corresponding with the level faced. Insert on the machine #bmany of the same eraser or multiple different ones#k to have a better chance on greater prizes.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,13 +20,198 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC ID: 1052014
|
||||
NPC NAME: Vending Machine
|
||||
@author Vcoc
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @npc: Vending Machine
|
||||
* @map: 193000000 - Premium Road - Kerning City Internet Cafe
|
||||
* @func: Cafe PQ Rewarder
|
||||
*/
|
||||
|
||||
var status;
|
||||
|
||||
var itemSet_lv6 = [1442046, 1432018, 1102146, 1102145, 2022094, 2022544, 2022123, 2022310, 2040727, 2041058, 2040817, 4000030, 4003005, 4003000, 4011007, 4021009, 4011008, 3010098];
|
||||
var itemQty_lv6 = [1, 1, 1, 1, 50, 20, 30, 30, 1, 1, 1, 50, 50, 50, 1, 1, 4, 1];
|
||||
|
||||
var itemSet_lv5 = [1382015, 1382016, 1442044, 1382035, 2022310, 2022068, 2022069, 2022190, 2022047, 2040727, 2040924, 2040501, 4000030, 4003005, 4003000, 4011003, 4011006, 4021004, 3010099];
|
||||
var itemQty_lv5 = [1, 1, 1, 1, 30, 70, 70, 50, 50, 1, 1, 1, 30, 30, 40, 3, 2, 3, 1];
|
||||
|
||||
var itemSet_lv4 = [1332029, 1472027, 1462032, 1492019, 2022045, 2022048, 2022094, 2022123, 2022058, 2041304, 2041019, 2040826, 2040758, 4000030, 4003005, 4003000, 4010007, 4011003, 4021003, 3010016, 3010017];
|
||||
var itemQty_lv4 = [1, 1, 1, 1, 70, 60, 40, 30, 100, 1, 1, 1, 1, 15, 15, 30, 8, 1, 1, 1, 1];
|
||||
|
||||
var itemSet_lv3 = [1302058, 1372008, 1422030, 1422031, 1022082, 2022279, 2022120, 2001001, 2001002, 2022071, 2022189, 2040914, 2041001, 2041041, 2041308, 4031203, 4000030, 4003005, 4003000, 4010004, 4010006, 4020000, 4020006, 3010002, 3010003];
|
||||
var itemQty_lv3 = [1, 1, 1, 1, 1, 100, 70, 70, 70, 40, 40, 1, 1, 1, 1, 15, 10, 15, 12, 5, 5, 5, 5, 1, 1];
|
||||
|
||||
var itemSet_lv2 = [1022073, 1012098, 1012101, 1012102, 1012103, 2022055, 2022056, 2022103, 2020029, 2020032, 2020031, 2022191, 2022016, 2043300, 2043110, 2043800, 2041001, 2040903, 4031203, 4000021, 4003005, 4003000, 4003001, 4010000, 4010001, 4010003, 4010004, 4020004, 3010004, 3010005];
|
||||
var itemQty_lv2 = [1, 1, 1, 1, 1, 70, 70, 70, 70, 100, 100, 100, 100, 1, 1, 1, 1, 1, 7, 10, 12, 10, 3, 8, 8, 5, 5, 7, 1, 1];
|
||||
|
||||
var itemSet_lv1 = [1302021, 1302024, 1302033, 1082150, 1002419, 2022053, 2022054, 2020032, 2022057, 2022096, 2022097, 2022192, 2020030, 2010005, 2022041, 2030000, 2040100, 2040004, 2040207, 2048004, 4031203, 4000021, 4003005, 4003000, 4003001, 4010000, 4010001, 4010002, 4010005, 4020004];
|
||||
var itemQty_lv1 = [1, 1, 1, 1, 1, 30, 30, 30, 30, 30, 40, 40, 40, 80, 80, 20, 1, 1, 1, 1, 3, 5, 2, 2, 1, 3, 3, 3, 3, 3];
|
||||
|
||||
var levels = ["Tier 1", "Tier 2", "Tier 3", "Tier 4", "Tier 5", "Tier 6"];
|
||||
|
||||
var tickets = [0, 0, 0, 0, 0, 0];
|
||||
var currentTier;
|
||||
var curItemQty;
|
||||
var curItemSel;
|
||||
var advance = true;
|
||||
|
||||
function start() {
|
||||
cm.sendOk("At the moment, the machine is empty...");
|
||||
cm.dispose();
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && type > 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1 && advance)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
advance = true;
|
||||
|
||||
if(status == 0) {
|
||||
cm.sendNext("This is the vending machine of the Internet Cafe. Place your erasers earned throughout the quests to redeem a prize. You can place #bany amount of erasers#k, however take note that bigger shots improves the reward possibilities!");
|
||||
} else if(status == 1) {
|
||||
var sendStr;
|
||||
currentTier = getRewardTier();
|
||||
|
||||
if(currentTier >= 0) sendStr = "With the erasers you have currently placed, you can retrieve a #r" + levels[currentTier] + "#k prize. Place erasers:";
|
||||
else sendStr = "You have placed no erasers yet. Place erasers:";
|
||||
|
||||
var listStr = "";
|
||||
for(var i = 0; i < tickets.length; i++) {
|
||||
listStr += "#b#L" + i + "##t" + (4001009 + i) + "##k";
|
||||
if(tickets[i] > 0) listStr += " - " + tickets[i] + " erasers";
|
||||
listStr += "#l\r\n";
|
||||
}
|
||||
|
||||
cm.sendSimple(sendStr + "\r\n\r\n" + listStr + "#r#L6#Retrieve a prize!#l#k\r\n");
|
||||
|
||||
} else if(status == 2) {
|
||||
if(selection == 6) {
|
||||
if(currentTier < 0) {
|
||||
cm.sendPrev("You have set no erasers. Insert at least one to claim a prize.");
|
||||
advance = false;
|
||||
} else {
|
||||
givePrize();
|
||||
cm.dispose();
|
||||
}
|
||||
} else {
|
||||
var tickSel = 4001009 + selection;
|
||||
curItemQty = cm.getItemQuantity(tickSel);
|
||||
curItemSel = selection;
|
||||
|
||||
if(curItemQty > 0) {
|
||||
cm.sendGetText("How many of #b#t" + tickSel + "##k do you want to insert on the machine? (#r" + curItemQty + "#k available)#k");
|
||||
} else {
|
||||
cm.sendPrev("You have got #rnone#k of #b#t" + tickSel + "##k to insert on the machine. Click '#rBack#k' to return to the main interface.");
|
||||
advance = false;
|
||||
}
|
||||
}
|
||||
} else if(status == 3) {
|
||||
var text = cm.getText();
|
||||
|
||||
try {
|
||||
var placedQty = parseInt(text);
|
||||
if(isNaN(placedQty) || placedQty < 0) throw true;
|
||||
|
||||
if(placedQty > curItemQty) {
|
||||
cm.sendPrev("You cannot insert the given amount of erasers (#r" + curItemQty + "#k available). Click '#rBack#k' to return to the main interface.");
|
||||
advance = false;
|
||||
} else {
|
||||
tickets[curItemSel] = placedQty;
|
||||
|
||||
cm.sendPrev("Operation succeeded. Click '#rBack#k' to return to the main interface.");
|
||||
advance = false;
|
||||
}
|
||||
} catch(err) {
|
||||
cm.sendPrev("You must enter a positive number of erasers to insert. Click '#rBack#k' to return to the main interface.");
|
||||
advance = false;
|
||||
}
|
||||
|
||||
status = 2;
|
||||
} else {
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getRewardTier() {
|
||||
var points = getPoints();
|
||||
|
||||
if(points <= 6) {
|
||||
if(points <= 0) return -1;
|
||||
else return 0;
|
||||
}
|
||||
if(points >= 46) return 5;
|
||||
|
||||
return Math.floor((points - 6) / 8);
|
||||
}
|
||||
|
||||
function getPoints() {
|
||||
var points = 0;
|
||||
|
||||
for(var i = 0; i < tickets.length; i++) {
|
||||
if(tickets[i] <= 0) continue;
|
||||
|
||||
points += (6 + ((tickets[i] - 1) * getTicketMultiplier(i))); //6 from uniques + rest from each ticket difficulty
|
||||
}
|
||||
|
||||
return points;
|
||||
}
|
||||
|
||||
function getTicketMultiplier(ticket) {
|
||||
if(ticket == 1 || ticket == 3) return 3;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
function givePrize() {
|
||||
var lvTarget, lvQty;
|
||||
|
||||
if(currentTier == 0) {
|
||||
lvTarget = itemSet_lv1;
|
||||
lvQty = itemQty_lv1;
|
||||
} else if(currentTier == 1) {
|
||||
lvTarget = itemSet_lv2;
|
||||
lvQty = itemQty_lv2;
|
||||
} else if(currentTier == 2) {
|
||||
lvTarget = itemSet_lv3;
|
||||
lvQty = itemQty_lv3;
|
||||
} else if(currentTier == 3) {
|
||||
lvTarget = itemSet_lv4;
|
||||
lvQty = itemQty_lv4;
|
||||
} else if(currentTier == 4) {
|
||||
lvTarget = itemSet_lv5;
|
||||
lvQty = itemQty_lv5;
|
||||
} else {
|
||||
lvTarget = itemSet_lv6;
|
||||
lvQty = itemQty_lv6;
|
||||
}
|
||||
|
||||
if(!hasRewardSlot(lvTarget, lvQty)) {
|
||||
cm.sendOk("Check for an available space on your inventory before retrieving a prize.");
|
||||
} else {
|
||||
var rnd = Math.floor(Math.random() * lvTarget.length);
|
||||
|
||||
for(var i = 0; i < tickets.length; i++) {
|
||||
cm.gainItem(4001009 + i, -1 * tickets[i]);
|
||||
}
|
||||
cm.gainItem(lvTarget[rnd], lvQty[rnd]);
|
||||
}
|
||||
}
|
||||
|
||||
function hasRewardSlot(lvTarget, lvQty) {
|
||||
for(var i = 0; i < lvTarget.length; i++) {
|
||||
if(!cm.canHold(lvTarget[i], lvQty[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -20,13 +20,93 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC ID: 1052015
|
||||
NPC NAME: Billy
|
||||
@author Vcoc
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @npc: Billy
|
||||
* @map: 193000000 - Premium Road - Kerning City Internet Cafe
|
||||
* @func: Cafe PQ Reward Announcer
|
||||
*/
|
||||
|
||||
var status;
|
||||
|
||||
var itemSet_lv6 = [1442046, 1432018, 1102146, 1102145, 2022094, 2022544, 2022123, 2022310, 2040727, 2041058, 2040817, 4000030, 4003005, 4003000, 4011007, 4021009, 4011008, 3010098];
|
||||
var itemQty_lv6 = [1, 1, 1, 1, 50, 20, 30, 30, 1, 1, 1, 50, 50, 50, 1, 1, 4, 1];
|
||||
|
||||
var itemSet_lv5 = [1382015, 1382016, 1442044, 1382035, 2022310, 2022068, 2022069, 2022190, 2022047, 2040727, 2040924, 2040501, 4000030, 4003005, 4003000, 4011003, 4011006, 4021004, 3010099];
|
||||
var itemQty_lv5 = [1, 1, 1, 1, 30, 70, 70, 50, 50, 1, 1, 1, 30, 30, 40, 3, 2, 3, 1];
|
||||
|
||||
var itemSet_lv4 = [1332029, 1472027, 1462032, 1492019, 2022045, 2022048, 2022094, 2022123, 2022058, 2041304, 2041019, 2040826, 2040758, 4000030, 4003005, 4003000, 4010007, 4011003, 4021003, 3010016, 3010017];
|
||||
var itemQty_lv4 = [1, 1, 1, 1, 70, 60, 40, 30, 100, 1, 1, 1, 1, 15, 15, 30, 8, 1, 1, 1, 1];
|
||||
|
||||
var itemSet_lv3 = [1302058, 1372008, 1422030, 1422031, 1022082, 2022279, 2022120, 2001001, 2001002, 2022071, 2022189, 2040914, 2041001, 2041041, 2041308, 4031203, 4000030, 4003005, 4003000, 4010004, 4010006, 4020000, 4020006, 3010002, 3010003];
|
||||
var itemQty_lv3 = [1, 1, 1, 1, 1, 100, 70, 70, 70, 40, 40, 1, 1, 1, 1, 15, 10, 15, 12, 5, 5, 5, 5, 1, 1];
|
||||
|
||||
var itemSet_lv2 = [1022073, 1012098, 1012101, 1012102, 1012103, 2022055, 2022056, 2022103, 2020029, 2020032, 2020031, 2022191, 2022016, 2043300, 2043110, 2043800, 2041001, 2040903, 4031203, 4000021, 4003005, 4003000, 4003001, 4010000, 4010001, 4010003, 4010004, 4020004, 3010004, 3010005];
|
||||
var itemQty_lv2 = [1, 1, 1, 1, 1, 70, 70, 70, 70, 100, 100, 100, 100, 1, 1, 1, 1, 1, 7, 10, 12, 10, 3, 8, 8, 5, 5, 7, 1, 1];
|
||||
|
||||
var itemSet_lv1 = [1302021, 1302024, 1302033, 1082150, 1002419, 2022053, 2022054, 2020032, 2022057, 2022096, 2022097, 2022192, 2020030, 2010005, 2022041, 2030000, 2040100, 2040004, 2040207, 2048004, 4031203, 4000021, 4003005, 4003000, 4003001, 4010000, 4010001, 4010002, 4010005, 4020004];
|
||||
var itemQty_lv1 = [1, 1, 1, 1, 1, 30, 30, 30, 30, 30, 40, 40, 40, 80, 80, 20, 1, 1, 1, 1, 3, 5, 2, 2, 1, 3, 3, 3, 3, 3];
|
||||
|
||||
var levels = ["Tier 1", "Tier 2", "Tier 3", "Tier 4", "Tier 5", "Tier 6"];
|
||||
|
||||
function start() {
|
||||
cm.sendOk("Do you keep seeing blue screen? Ahhh... then restart the computer.");
|
||||
cm.dispose();
|
||||
}
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && status == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
var sendStr = "The #bInternet Cafe Party Quest#k rewards players with ticket-like #bfigure erasers#k, that can be used on the vending machine to retrieve prizes. By further increasing the stakes, one can get better prizes, separated by #rtiers#k.\r\n\r\nThe possible rewards for each tier are depicted here:\r\n\r\n#b";
|
||||
for(var i = 0; i < 6; i++) {
|
||||
sendStr += "#L" + i + "#" + levels[i] + "#l\r\n";
|
||||
}
|
||||
|
||||
cm.sendSimple(sendStr);
|
||||
} else if(status == 1) {
|
||||
var lvTarget, lvQty;
|
||||
|
||||
if(selection == 0) {
|
||||
lvTarget = itemSet_lv1;
|
||||
lvQty = itemQty_lv1;
|
||||
} else if(selection == 1) {
|
||||
lvTarget = itemSet_lv2;
|
||||
lvQty = itemQty_lv2;
|
||||
} else if(selection == 2) {
|
||||
lvTarget = itemSet_lv3;
|
||||
lvQty = itemQty_lv3;
|
||||
} else if(selection == 3) {
|
||||
lvTarget = itemSet_lv4;
|
||||
lvQty = itemQty_lv4;
|
||||
} else if(selection == 4) {
|
||||
lvTarget = itemSet_lv5;
|
||||
lvQty = itemQty_lv5;
|
||||
} else {
|
||||
lvTarget = itemSet_lv6;
|
||||
lvQty = itemQty_lv6;
|
||||
}
|
||||
|
||||
var sendStr = "The following items are being awarded at #b" + levels[selection] + "#k:\r\n\r\n";
|
||||
for(var i = 0; i < lvTarget.length; i++) {
|
||||
sendStr += " #L" + i + "# #i" + lvTarget[i] + "# #t" + lvTarget[i] + "#";
|
||||
if(lvQty[i] > 1) sendStr += " (" + lvQty[i] + ")";
|
||||
sendStr += "#l\r\n";
|
||||
}
|
||||
|
||||
cm.sendPrev(sendStr);
|
||||
} else if(status == 2) {
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,34 +19,52 @@
|
||||
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/>.
|
||||
*/
|
||||
/* Door of Dimension
|
||||
/* 1061009 - Door of Dimension
|
||||
Enter 3rd job event
|
||||
*/
|
||||
|
||||
function start() {
|
||||
if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)) {
|
||||
if (cm.getPlayer().getMapId() == 105070001 && (cm.getJobId() >= 110 && cm.getJobId() <= 130))
|
||||
cm.warp(108010300);
|
||||
else if (cm.getPlayer().getMapId() == 105040305 && (cm.getJobId() >= 310 && cm.getJobId() <= 320))
|
||||
cm.warp(108010100);
|
||||
else if (cm.getPlayer().getMapId() == 100040106 && (cm.getJobId() >= 210 && cm.getJobId() <= 230))
|
||||
cm.warp(108010200);
|
||||
else if (cm.getPlayer().getMapId() == 107000402 && (cm.getJobId() >= 410 && cm.getJobId() <= 420))
|
||||
cm.warp(108010400);
|
||||
else if (cm.getPlayer().getMapId() == 105070200 && (cm.getJobId() >= 510 && cm.getJobId() <= 520))
|
||||
cm.warp(108010500);
|
||||
}
|
||||
cm.dispose();
|
||||
/*20 minutes*/
|
||||
function jobString(niche) {
|
||||
if(niche == 1) return "warrior";
|
||||
else if(niche == 2) return "magician";
|
||||
else if(niche == 3) return "bowman";
|
||||
else if(niche == 4) return "thief";
|
||||
else if(niche == 5) return "pirate";
|
||||
|
||||
return "beginner";
|
||||
}
|
||||
|
||||
/*
|
||||
function canEnterDimensionMap(mapid, jobid) {
|
||||
if (mapid == 105070001 && (jobid >= 110 && jobid <= 130))
|
||||
return true;
|
||||
else if (mapid == 105040305 && (jobid >= 310 && jobid <= 320))
|
||||
return true;
|
||||
else if (mapid == 100040106 && (jobid >= 210 && jobid <= 230))
|
||||
return true;
|
||||
else if (mapid == 107000402 && (jobid >= 410 && jobid <= 420))
|
||||
return true;
|
||||
else if (mapid == 105070200 && (jobid >= 510 && jobid <= 520))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
1061010 - Crystal NPC
|
||||
*/
|
||||
/*var em = cm.getEventManager("3rdjob");
|
||||
function start() {
|
||||
if (canEnterDimensionMap(cm.getMapId(), cm.getJob().getId()) && cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)) {
|
||||
var js = jobString(cm.getPlayer().getJob().getJobNiche());
|
||||
|
||||
var em = cm.getEventManager("3rdJob_" + js);
|
||||
if (em == null)
|
||||
cm.sendOk("Sorry, but 3rd job advancement is closed.");
|
||||
else
|
||||
em.newInstance(cm.getPlayer().getName()).registerPlayer(cm.getPlayer());
|
||||
*/
|
||||
cm.sendOk("Sorry, but 3rd job advancement (" + js + ") is closed.");
|
||||
else {
|
||||
if (em.getProperty("noEntry") == "false") {
|
||||
var eim = em.newInstance("3rdjob_" + js);
|
||||
eim.registerPlayer(cm.getPlayer());
|
||||
}
|
||||
else {
|
||||
cm.sendOk("Someone else is already challenging the clone. Please wait until the area is cleared.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
@@ -80,9 +80,10 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
} else
|
||||
access = true;
|
||||
} if (access) {
|
||||
}
|
||||
if (access) {
|
||||
cm.getPlayer().saveLocation("FLORINA");
|
||||
cm.warp(110000000);
|
||||
cm.warp(110000000, "st00");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 3)
|
||||
|
||||
@@ -22,7 +22,7 @@ function action(mode, type, selection) {
|
||||
sel = selection;
|
||||
cm.sendNext("Ok #h #, I will send you to the platform for #m" + (200000110 + (sel * 10)) + "#");
|
||||
}else if (status == 1) {
|
||||
cm.warp(200000110 + (sel * 10));
|
||||
cm.warp(200000110 + (sel * 10), "west00");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
47
scripts/npc/2012012.js
Normal file
47
scripts/npc/2012012.js
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License version 3
|
||||
as published by the Free Software Foundation. You may not use, modify
|
||||
or distribute this program under any other version of the
|
||||
GNU Affero General Public License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
var status;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && type > 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if(status == 0) {
|
||||
cm.sendOk("Can you help me find the Ancient Book? I lost it somewhere in El Nath...");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,7 +95,7 @@ function action(mode, type, selection){
|
||||
if (sel == 0){
|
||||
if (cm.getPlayer().getLevel() >= 70 && cm.getJobId() % 10 == 0){
|
||||
if (status == 0)
|
||||
cm.sendYesNo("Welcome. I'm #b#p2020011##k, the chief of all thieves, ready to share my street knowledge and hard knock life to those willing to listen. You seem ready to make the leap forward, the one ready to take on the challenges of the 3rd job advancement. Too many thieves have come and gone, unable to meet the standards of achieving the 3rd job advancement. What about you? Are you ready to be tested and make the 3th job advancemente?");
|
||||
cm.sendYesNo("Welcome. I'm #b#p2020011##k, the chief of all thieves, ready to share my street knowledge and hard knock life to those willing to listen. You seem ready to make the leap forward, the one ready to take on the challenges of the 3rd job advancement. Too many thieves have come and gone, unable to meet the standards of achieving the 3rd job advancement. What about you? Are you ready to be tested and make the 3th job advancement?");
|
||||
else if (status == 1){
|
||||
cm.getPlayer().setPartyQuestItemObtained("JB3");
|
||||
cm.sendNext("Good. You will be tested on two important aspects of the thief: strength and wisdom. I'll now explain to you the physical half of the test. Remember #b#p1052001##k from Kerning City? Go see him, and he'll give you the details on the first half of the test. Please complete the mission, and get #b#t4031057##k from #p1052001#.");
|
||||
|
||||
@@ -259,25 +259,26 @@ function action(mode, type, selection) {
|
||||
else {
|
||||
if (!cm.haveItem(mats, matQty * qty)) complete=false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!complete)
|
||||
cm.sendOk("Hold it, I can't finish that without all of the proper materials. Bring them first, then we'll talk.");
|
||||
else {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++){
|
||||
cm.gainItem(mats[i], -matQty[i] * qty);
|
||||
|
||||
if (!complete)
|
||||
cm.sendOk("Hold it, I can't finish that without all of the proper materials. Bring them first, then we'll talk.");
|
||||
else {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++){
|
||||
cm.gainItem(mats[i], -matQty[i] * qty);
|
||||
}
|
||||
}
|
||||
else
|
||||
cm.gainItem(mats, -matQty * qty);
|
||||
|
||||
if (cost > 0)
|
||||
cm.gainMeso(-cost * qty);
|
||||
|
||||
cm.gainItem(recvItem, recvQty);
|
||||
cm.sendOk("All done. If you need anything else, you know where to find me.");
|
||||
}
|
||||
else
|
||||
cm.gainItem(mats, -matQty * qty);
|
||||
|
||||
if (cost > 0)
|
||||
cm.gainMeso(-cost * qty);
|
||||
|
||||
cm.gainItem(recvItem, recvQty);
|
||||
cm.sendOk("All done. If you need anything else, you know where to find me.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -200,10 +200,14 @@ function action(mode, type, selection) {
|
||||
|
||||
if(!cm.canHold(item, 1)) {
|
||||
cm.sendOk("Verify for a slot in your inventory first.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
else if (cm.getMeso() < cost)
|
||||
{
|
||||
cm.sendOk("I'm afraid my fees are non-negotiable.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -75,9 +75,9 @@ function action(mode, type, selection) {
|
||||
} else
|
||||
access = true;
|
||||
}
|
||||
if (access == true) {
|
||||
if (access == true) {
|
||||
cm.getPlayer().saveLocation("FLORINA");
|
||||
cm.warp(110000000);
|
||||
cm.warp(110000000, "st00");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 3)
|
||||
|
||||
@@ -183,27 +183,27 @@ function action(mode, type, selection) {
|
||||
}
|
||||
else {
|
||||
if (!cm.haveItem(mats, matQty * qty))complete=false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!complete)
|
||||
cm.sendOk("Please check and see if you have all the necessary items with you. If so, then please check your etc. inventory and see if you have an empty space.");
|
||||
else {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++){
|
||||
cm.gainItem(mats[i], -matQty[i] * qty);
|
||||
|
||||
if (!complete)
|
||||
cm.sendOk("Please check and see if you have all the necessary items with you. If so, then please check your etc. inventory and see if you have an empty space.");
|
||||
else {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++){
|
||||
cm.gainItem(mats[i], -matQty[i] * qty);
|
||||
}
|
||||
}
|
||||
else
|
||||
cm.gainItem(mats, -matQty * qty);
|
||||
|
||||
if (cost > 0)
|
||||
cm.gainMeso(-cost * qty);
|
||||
|
||||
cm.gainItem(recvItem, recvQty);
|
||||
cm.sendOk("There, finished. What do you think, a piece of art, isn't it? Well, if you need anything else, you know where to find me.");
|
||||
}
|
||||
else
|
||||
cm.gainItem(mats, -matQty * qty);
|
||||
|
||||
if (cost > 0)
|
||||
cm.gainMeso(-cost * qty);
|
||||
|
||||
cm.gainItem(recvItem, recvQty);
|
||||
cm.sendOk("There, finished. What do you think, a piece of art, isn't it? Well, if you need anything else, you know where to find me.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
@@ -13,13 +13,20 @@
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC NAME: Cesar (2)
|
||||
NPC ID: 2101014
|
||||
Author: Vcoc
|
||||
Function: AriantPQ
|
||||
*/
|
||||
|
||||
status = -1;
|
||||
var sel;
|
||||
empty = [false, false, false];
|
||||
@@ -36,7 +43,7 @@ function start() {
|
||||
if(cm.getPlayerCount(980010101 + (i * 100)) > 0)
|
||||
continue;
|
||||
else
|
||||
text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "([" + cm.getPlayerCount(980010100 + (i * 100)) + "/" + cm.getPlayer().getAriantSlotsRoom(i) + "] users" + cm.getPlayer().getAriantRoomLeaderName(i) + "/Lv 20~29 )#l";
|
||||
text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "([" + cm.getPlayerCount(980010100 + (i * 100)) + "/" + cm.getPlayer().getAriantSlotsRoom(i) + "] users: " + cm.getPlayer().getAriantRoomLeaderName(i) + ")#l";
|
||||
else{
|
||||
empty[i] = true;
|
||||
text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "( Empty )#l";
|
||||
@@ -95,7 +102,7 @@ function action(mode, type, selection){
|
||||
}else if (status == 2)
|
||||
cm.sendNextPrev("It's simple. If you absorb the power of the monster #b#t2270002##k, then you'll make #b#t4031868##k, which is something Queen Areda loves. The combatant with the most jewels wins the match. It's actually a smart idea to prevent others from absorbing in order to win.");
|
||||
else if (status == 3)
|
||||
cm.sendNextPrev("One thing. #rYou may not use pets for this.#k Understood?~!");
|
||||
cm.sendNextPrev("One thing. Using #b#t2100067##k, you can steal #b#t4031868##k from your enemies. Warning: #rYou may not use pets for this.#k Understood?!");
|
||||
else if (status == 4)
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
@@ -13,13 +13,20 @@
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC NAME: Cesar (3)
|
||||
NPC ID: 2101017
|
||||
Author: Vcoc
|
||||
Function: AriantPQ
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.client);
|
||||
|
||||
@@ -55,10 +62,10 @@ function action(mode, type, selection){
|
||||
if(sel == 0){
|
||||
if(cm.haveItem(2270002))
|
||||
cm.sendNext("You already have #b#t2270002##k.");
|
||||
else if(cm.canHold(2270002) && cm.canHold(2100067)){
|
||||
if(cm.haveItem(2100067))
|
||||
cm.removeAll(2100067);
|
||||
cm.gainItem(2270002, 32);
|
||||
else if(cm.canHold(2270002) && cm.canHold(2100067)){
|
||||
if(cm.haveItem(2100067))
|
||||
cm.removeAll(2100067);
|
||||
cm.gainItem(2270002, 50);
|
||||
cm.gainItem(2100067, 5);
|
||||
cm.sendNext("Now lower the HP of the monsters, and use #b#t2270002##k to absorb their power!");
|
||||
}else
|
||||
@@ -70,6 +77,9 @@ function action(mode, type, selection){
|
||||
cm.sendYesNo("Are you sure you want to leave?"); //No GMS like.
|
||||
} else if (status == 1){
|
||||
if(type == 1){
|
||||
cm.removeAll(4031868);
|
||||
cm.removeAll(2270002);
|
||||
cm.removeAll(2100067);
|
||||
cm.warp(980010020);
|
||||
cm.dispose();
|
||||
return;
|
||||
@@ -78,7 +88,7 @@ function action(mode, type, selection){
|
||||
} else if (status == 2)
|
||||
cm.sendNextPrev("It's simple. If you absorb the power of the monster #b#t2270002##k, then you'll make #b#t4031868##k, which is something Queen Areda loves. The combatant with the most jewels wins the match. It's actually a smart idea to prevent others from absorbing in order to win.");
|
||||
else if (status == 3)
|
||||
cm.sendNextPrev("One thing. #rYou may not use pets for this.#k Understood?~!");
|
||||
cm.sendNextPrev("One thing. Using #b#t2100067##k, you can steal #b#t4031868##k from your enemies. Warning: #rYou may not use pets for this.#k Understood?!");
|
||||
else if (status == 4)
|
||||
cm.dispose();
|
||||
}else{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
This file is part of the OdinMS Maple Story Server
|
||||
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
Matthias Butz <matze@odinms.de>
|
||||
Jan Christian Meyer <vimes@odinms.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
@@ -13,13 +13,20 @@
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU Affero General Public License for more details.
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
NPC NAME: Cesar (1)
|
||||
NPC ID: 2101018
|
||||
Author: Vcoc
|
||||
Function: AriantPQ
|
||||
*/
|
||||
|
||||
status = -1;
|
||||
function start() {
|
||||
if((cm.getPlayer().getLevel() < 19 || cm.getPlayer().getLevel() > 30) && !cm.getPlayer().isGM()){
|
||||
@@ -33,7 +40,7 @@ function start() {
|
||||
function action(mode, type, selection){
|
||||
status++;
|
||||
if (status == 4){
|
||||
cm.getPlayer().saveLocation("ARIANT");
|
||||
cm.getPlayer().saveLocation("MIRROR");
|
||||
cm.warp(980010000, 3);
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
@@ -96,7 +96,8 @@ function action(mode, type, selection) {
|
||||
|
||||
var mapobj = eim.getMapInstance(926100401);
|
||||
var bossobj = MapleLifeFactory.getMonster(9300139);
|
||||
mapobj.spawnMonsterOnGroundBelow(bossobj, new Packages.java.awt.Point(250, 100));
|
||||
|
||||
mapobj.spawnMonsterWithEffect(bossobj, 13, new Packages.java.awt.Point(250, 100));
|
||||
|
||||
eim.setIntProperty("statusStg7", 1);
|
||||
eim.setIntProperty("yuletePassed", -1);
|
||||
@@ -106,7 +107,8 @@ function action(mode, type, selection) {
|
||||
|
||||
var mapobj = eim.getMapInstance(926100401);
|
||||
var bossobj = MapleLifeFactory.getMonster(9300140);
|
||||
mapobj.spawnMonsterOnGroundBelow(bossobj, new Packages.java.awt.Point(250, 100));
|
||||
|
||||
mapobj.spawnMonsterWithEffect(bossobj, 14, new Packages.java.awt.Point(250, 100));
|
||||
|
||||
eim.setIntProperty("statusStg7", 2);
|
||||
eim.setIntProperty("yuletePassed", -1);
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
var status;
|
||||
|
||||
var itemSet_lv6 = [1122018, 1122005, 1022088, 1402013, 1032030, 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];
|
||||
var itemQty_lv6 = [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];
|
||||
var itemSet_lv6 = [3010061, 1122018, 1122005, 1022088, 1402013, 1032030, 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];
|
||||
var itemQty_lv6 = [1, 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];
|
||||
|
||||
var itemSet_lv5 = [1122018, 1122005, 1022088, 1402013, 1032030, 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];
|
||||
var itemQty_lv5 = [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];
|
||||
var itemSet_lv5 = [3010063, 1122018, 1122005, 1022088, 1402013, 1032030, 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];
|
||||
var itemQty_lv5 = [1, 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];
|
||||
|
||||
var itemSet_lv4 = [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];
|
||||
var itemQty_lv4 = [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];
|
||||
|
||||
@@ -27,29 +27,31 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
var selStr = "";
|
||||
if (cm.getLevel() >= 20 && cm.getLevel() <= 30) {
|
||||
/*if (cm.getLevel() >= 20 && cm.getLevel() <= 30) { NOT IMPLEMENTED
|
||||
selStr += "#0# Ariant Coliseum";
|
||||
}
|
||||
} */
|
||||
|
||||
if (cm.getLevel() >= 25) {
|
||||
selStr += "#1# Mu Lung Dojo";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 30 && cm.getLevel() <= 50) {
|
||||
/*if (cm.getLevel() >= 30 && cm.getLevel() <= 50) { NOT IMPLEMENTED
|
||||
selStr += "#2# Monster Carnival 1";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 51 && cm.getLevel() <= 70) {
|
||||
if (cm.getLevel() >= 51 && cm.getLevel() <= 70) { NOT IMPLEMENTED
|
||||
selStr += "#3# Monster Carnival 2";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 40) {
|
||||
if (cm.getLevel() >= 40) { NOT IMPLEMENTED
|
||||
selStr += "#5# Nett's Pyramid";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 25 && cm.getLevel() <= 30) {
|
||||
if (cm.getLevel() >= 25 && cm.getLevel() <= 30) { NOT IMPLEMENTED
|
||||
selStr += "#6# Construction Site";
|
||||
}
|
||||
*/
|
||||
|
||||
cm.sendDimensionalMirror(selStr);
|
||||
}
|
||||
} else if (status == 1) {
|
||||
|
||||
80
scripts/npc/9010022_old.js
Normal file
80
scripts/npc/9010022_old.js
Normal file
@@ -0,0 +1,80 @@
|
||||
importPackage(Packages.client);
|
||||
importPackage(Packages.server.maps);
|
||||
|
||||
var status;
|
||||
var sel;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
if (status == 0) {
|
||||
if (cm.getLevel() < 20) {
|
||||
cm.sendDimensionalMirror("#-1# There is no place for you to transport to from here.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
var selStr = "";
|
||||
if (cm.getLevel() >= 20 && cm.getLevel() <= 30) {
|
||||
selStr += "#0# Ariant Coliseum";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 25) {
|
||||
selStr += "#1# Mu Lung Dojo";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 30 && cm.getLevel() <= 50) {
|
||||
selStr += "#2# Monster Carnival 1";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 51 && cm.getLevel() <= 70) {
|
||||
selStr += "#3# Monster Carnival 2";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 40) {
|
||||
selStr += "#5# Nett's Pyramid";
|
||||
}
|
||||
|
||||
if (cm.getLevel() >= 25 && cm.getLevel() <= 30) {
|
||||
selStr += "#6# Construction Site";
|
||||
}
|
||||
cm.sendDimensionalMirror(selStr);
|
||||
}
|
||||
} else if (status == 1) {
|
||||
cm.getPlayer().saveLocation("MIRROR");
|
||||
switch (selection) {
|
||||
case 0:
|
||||
cm.warp(980010000, 3);
|
||||
break;
|
||||
case 1:
|
||||
cm.warp(925020000, 0);
|
||||
break;
|
||||
case 2:
|
||||
cm.warp(980000000, 3);
|
||||
break;
|
||||
case 3:
|
||||
cm.warp(980030000, 3);
|
||||
break;
|
||||
case 5:
|
||||
cm.warp(926010000);
|
||||
break;
|
||||
case 6:
|
||||
cm.warp(910320000);
|
||||
break;
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ function action(mode, type, selection) {
|
||||
masterybook = cm.getAvailableMasteryBooks();
|
||||
|
||||
if(skillbook.length == 0 && masterybook.length == 0) {
|
||||
cm.sendOk(greeting + "There are no more books available to further improve your job skills for now. Either you maxed out everything or you didn't reach the minimum requisites for some skill books yet.");
|
||||
cm.sendOk(greeting + "There are no more books available to further improve your job skills for now. Either you #bmaxed out everything#k or #byou didn't reach the minimum requisites to use some skill books#k yet.");
|
||||
cm.dispose();
|
||||
|
||||
} else if(skillbook.length > 0 && masterybook.length > 0) {
|
||||
|
||||
@@ -62,10 +62,12 @@ function action(mode, type, selection) {
|
||||
cm.sendYesNo("The plane is taking off soon, are you sure you want to leave now? The ticket is not refundable.");
|
||||
airport = 1;
|
||||
} else if (cm.getMapId() == 540010002) {
|
||||
cm.sendYesNo("We're reaching Kerning City in a minute, are you sure you want to leave now? The ticket is not refundable.");
|
||||
cm.sendOk("We're reaching Kerning City in a minute, please sit down and wait.");
|
||||
cm.dispose();
|
||||
s2k = 1;
|
||||
} else if (cm.getMapId() == 540010101) {
|
||||
cm.sendYesNo("We're reaching Singapore in a minute, are you sure you want to leave now? The ticket is not refundable.");
|
||||
cm.sendOk("We're reaching Singapore in a minute, please sit down and wait.");
|
||||
cm.dispose();
|
||||
k2s = 1;
|
||||
}
|
||||
} else if(status == 1) {
|
||||
|
||||
@@ -60,8 +60,8 @@ function writeSolaxiaCommandsLv5() { //Developer
|
||||
|
||||
addCommand("debugmonster", "");
|
||||
addCommand("debugpacket", "");
|
||||
addCommand("debugnearestportal", "");
|
||||
addCommand("debugnearestspawnpoint", "");
|
||||
addCommand("debugportal", "");
|
||||
addCommand("debugspawnpoint", "");
|
||||
addCommand("debugpos", "");
|
||||
addCommand("debugmap", "");
|
||||
addCommand("debugmobsp", "");
|
||||
@@ -204,6 +204,7 @@ function writeSolaxiaCommandsLv0() { //Common
|
||||
addCommand("whodrops", "");
|
||||
addCommand("dispose", "");
|
||||
addCommand("equiplv", "");
|
||||
addCommand("showrates", "");
|
||||
addCommand("rates", "");
|
||||
addCommand("online", "");
|
||||
addCommand("gm", "");
|
||||
|
||||
4
scripts/portal/catPriest_map.js
Normal file
4
scripts/portal/catPriest_map.js
Normal file
@@ -0,0 +1,4 @@
|
||||
function enter(pi) {
|
||||
pi.warp(925000000, 2);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user