Boss Daily Entry + Maker enable actions + Duey Quick Delivery
Fixed Legendary Spirit UI getting stuck when trying to apply scrolls in equipments without upgrade slots available. Revised map leasing. Players no longer lose ownership when changing maps. Players are allowed to lease one map each time. Revised expeditions warping players out as soon as the leader leaves the event or the number of players inside gets to be less than the minimum required to enter. Fixed start/complete quest commands not acting properly for some quests. Refactored quest loadouts unnecessarily reloading MapleData. Implemented support for daily boss limit entry, usable on expeditions. Revised potential exploit cases within chair, face expression, quest action, summon damage and mob damage mob handlers. Adjusted displayed date in Duey. Value displayed now should be consistent with the expected expiration time. Refactored damage for friendly mobs getting handled inside packet structure. Implemented support for Quick Delivery from Duey. Fixed Horntail specifically not dropping loots after recent updates. Refactored commands system. All commands are instanced at boot time instead of at every call. Fixed usage of Maker skill not sending MAKER_RESULT packet to players. This automatically reenables the actions button (such as create) in Maker UI. Adjusted minidungeons, now using time limits specified in their respective recipes. Reviewed the "timeLimit" property utilized by maps, which was poised to work on 2 different concepts altogether. Fixed Gaga space event, should be functional now. Added RPS minigame, resources implemented by Arnah. Fixed damage taken from mob auto-destruction not working properly.
This commit is contained in:
@@ -1,185 +0,0 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
var exitMap;
|
||||
var minPlayers = 3;
|
||||
|
||||
function init() {}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
exitMap = em.getChannelServer().getMapFactory().getMap(105090800); // <exit>
|
||||
|
||||
var eim = em.newInstance("4jberserk_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
var mf = eim.getMapFactory();
|
||||
|
||||
var map = mf.getMap(910500200);
|
||||
map.addMapTimer(3*60);
|
||||
em.schedule("timeOut", 20 * 60000);
|
||||
|
||||
//you can't warp up to the rocks until all rogs are dead, I think?
|
||||
eim.setProperty("canWarp","false");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(910500200);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
|
||||
//TODO: hold time across map changes
|
||||
//player.getClient().announce(tools.MaplePacketCreator.getClock(1800));
|
||||
}
|
||||
|
||||
function playerDead(eim, player) {
|
||||
}
|
||||
|
||||
function playerRevive(eim, player) {
|
||||
//if (eim.isLeader(player)) { //check for party leader
|
||||
//boot whole party and end
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
/*/}
|
||||
else { //boot dead player
|
||||
// If only 2 players are left, uncompletable:
|
||||
var party = eim.getPlayers();
|
||||
if (party.size() <= minPlayers) {
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim,party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
else
|
||||
playerExit(eim, player);
|
||||
}*/
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
//if (eim.isLeader(player)) { //check for party leader
|
||||
//boot whole party and end
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
if (party.get(i).equals(player)) {
|
||||
removePlayer(eim, player);
|
||||
}
|
||||
else {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
}
|
||||
eim.dispose();
|
||||
/*/}
|
||||
else { //boot d/ced player
|
||||
// If only 2 players are left, uncompletable:
|
||||
var party = eim.getPlayers();
|
||||
if (party.size() < minPlayers) {
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim,party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
else
|
||||
playerExit(eim, player);
|
||||
}*/
|
||||
}
|
||||
|
||||
function leftParty(eim, player) {
|
||||
// If only 2 players are left, uncompletable:
|
||||
var party = eim.getPlayers();
|
||||
if (true) {
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim,party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
else
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
//boot whole party and end
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap, exitMap.getPortal(0));
|
||||
}
|
||||
|
||||
//for offline players
|
||||
function removePlayer(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
player.getMap().removePlayer(player);
|
||||
player.setMap(exitMap);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++)
|
||||
playerExit(eim, party.get(i));
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {
|
||||
eim.setProperty("canWarp","true");
|
||||
}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function timeOut() {
|
||||
var iter = em.getInstances().iterator();
|
||||
while (iter.hasNext()) {
|
||||
var eim = iter.next();
|
||||
if (eim.getPlayerCount() > 0) {
|
||||
var pIter = eim.getPlayers().iterator();
|
||||
while (pIter.hasNext())
|
||||
playerExit(eim, pIter.next());
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function dispose() {}
|
||||
|
||||
function scheduledTimeout(eim) {}
|
||||
|
||||
function changedLeader(eim, leader) {}
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
/*
|
||||
* @author AngelSL
|
||||
*
|
||||
* 4th Job Rush Quest.
|
||||
* Based on Kerning City PQ script by Stereo
|
||||
*/
|
||||
|
||||
var exitMap;
|
||||
var minPlayers = 3;
|
||||
|
||||
function init() {}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
exitMap = em.getChannelServer().getMapFactory().getMap(105090700); // <exit>
|
||||
|
||||
var eim = em.newInstance("4jrush_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
var mf = eim.getMapFactory();
|
||||
var map = mf.getMap(910500100);
|
||||
map.addMapTimer(20*60);
|
||||
em.schedule("timeOut", 20 * 60000);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(910500100);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
}
|
||||
|
||||
function playerDead(eim, player) {
|
||||
}
|
||||
|
||||
function playerRevive(eim, player) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
if (party.get(i).equals(player)) {
|
||||
removePlayer(eim, player);
|
||||
}
|
||||
else {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function leftParty(eim, player) {
|
||||
// If only 2 players are left, uncompletable:
|
||||
var party = eim.getPlayers();
|
||||
if (true) {
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim,party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
else
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
//boot whole party and end
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap, exitMap.getPortal(0));
|
||||
}
|
||||
|
||||
//for offline players
|
||||
function removePlayer(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
player.getMap().removePlayer(player);
|
||||
player.setMap(exitMap);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
//KPQ does nothing special with winners
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function timeOut() {
|
||||
var iter = em.getInstances().iterator();
|
||||
while (iter.hasNext()) {
|
||||
var eim = iter.next();
|
||||
if (eim.getPlayerCount() > 0) {
|
||||
var pIter = eim.getPlayers().iterator();
|
||||
while (pIter.hasNext()) {
|
||||
playerExit(eim, pIter.next());
|
||||
}
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function dispose() {}
|
||||
|
||||
function scheduledTimeout(eim) {}
|
||||
|
||||
function changedLeader(eim, leader) {}
|
||||
|
||||
@@ -170,7 +170,7 @@ function playerLeft(eim, player) {
|
||||
|
||||
function changedMap(eim, player, mapid) {
|
||||
if (mapid < minMapId || mapid > maxMapId) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
@@ -189,7 +189,7 @@ function changedLeader(eim, leader) {
|
||||
function playerDead(eim, player) {}
|
||||
|
||||
function playerRevive(eim, player) { // player presses ok on the death pop up.
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
@@ -198,7 +198,7 @@ function playerRevive(eim, player) { // player presses ok on the death pop up.
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
@@ -207,7 +207,7 @@ function playerDisconnected(eim, player) {
|
||||
}
|
||||
|
||||
function leftParty(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(false, minPlayers, player)) {
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -170,7 +170,7 @@ function playerLeft(eim, player) {
|
||||
|
||||
function changedMap(eim, player, mapid) {
|
||||
if (mapid < minMapId || mapid > maxMapId) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
@@ -189,7 +189,7 @@ function changedLeader(eim, leader) {
|
||||
function playerDead(eim, player) {}
|
||||
|
||||
function playerRevive(eim, player) { // player presses ok on the death pop up.
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
@@ -198,7 +198,7 @@ function playerRevive(eim, player) { // player presses ok on the death pop up.
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
@@ -207,7 +207,7 @@ function playerDisconnected(eim, player) {
|
||||
}
|
||||
|
||||
function leftParty(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
|
||||
if (eim.isExpeditionTeamLackingNow(false, minPlayers, player)) {
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -241,7 +241,7 @@ function scheduledTimeout(eim) {
|
||||
|
||||
function changedMap(eim, player, mapid) {
|
||||
if (mapid < minMapId || mapid > maxMapId) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
@@ -297,7 +297,7 @@ function changedLeader(eim, leader) {}
|
||||
function playerDead(eim, player) {}
|
||||
|
||||
function playerRevive(eim, player) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
|
||||
end(eim);
|
||||
@@ -309,7 +309,7 @@ function playerRevive(eim, player) {
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
if (eim.isExpeditionTeamLackingNow(true, minPlayers, player)) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.dropMessage(5, "[Expedition] Either the leader has quit the expedition or there is no longer the minimum number of members required to continue it.");
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
|
||||
211
scripts/event/RescueGaga.js
Normal file
211
scripts/event/RescueGaga.js
Normal file
@@ -0,0 +1,211 @@
|
||||
/**
|
||||
* @author: kevintjuh93
|
||||
* @author: Ronan
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 1, maxPlayers = 1;
|
||||
var minLevel = 12, maxLevel = 255;
|
||||
var entryMap = 922240000;
|
||||
var exitMap = 922240200;
|
||||
var recruitMap = 922240200;
|
||||
|
||||
var minMapId = 922240000;
|
||||
var maxMapId = 922240100;
|
||||
|
||||
var eventTime = 3; // 3 minutes
|
||||
|
||||
var lobbyRange = [0, 19];
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
var reqStr = "";
|
||||
|
||||
reqStr += "\r\n Number of players: ";
|
||||
if(maxPlayers - minPlayers >= 1) reqStr += minPlayers + " ~ " + maxPlayers;
|
||||
else reqStr += minPlayers;
|
||||
|
||||
reqStr += "\r\n Level range: ";
|
||||
if(maxLevel - minLevel >= 1) reqStr += minLevel + " ~ " + maxLevel;
|
||||
else reqStr += minLevel;
|
||||
|
||||
reqStr += "\r\n Time limit: ";
|
||||
reqStr += eventTime + " minutes";
|
||||
|
||||
em.setProperty("party", reqStr);
|
||||
}
|
||||
|
||||
function setEventExclusives(eim) {
|
||||
var itemSet = [];
|
||||
eim.setExclusiveItems(itemSet);
|
||||
}
|
||||
|
||||
function setEventRewards(eim) {
|
||||
var itemSet, itemQty, evLevel, expStages;
|
||||
|
||||
evLevel = 1; //Rewards at clear PQ
|
||||
itemSet = [];
|
||||
itemQty = [];
|
||||
eim.setEventRewards(evLevel, itemSet, itemQty);
|
||||
|
||||
expStages = []; //bonus exp given on CLEAR stage signal
|
||||
eim.setEventClearStageExp(expStages);
|
||||
}
|
||||
|
||||
function getEligibleParty(party) { //selects, from the given party, the team that is allowed to attempt this event
|
||||
var eligible = [];
|
||||
var hasLeader = false;
|
||||
|
||||
if(party.size() > 0) {
|
||||
var partyList = party.toArray();
|
||||
|
||||
for(var i = 0; i < party.size(); i++) {
|
||||
var ch = partyList[i];
|
||||
|
||||
if(ch.getMapId() == recruitMap && ch.getLevel() >= minLevel && ch.getLevel() <= maxLevel) {
|
||||
if(ch.isLeader()) hasLeader = true;
|
||||
eligible.push(ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
|
||||
return eligible;
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("RescueGaga_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("stage", "0");
|
||||
eim.setProperty("falls", "0");
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
setEventExclusives(eim);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
|
||||
player.announce(MaplePacketCreator.showEffect("event/space/start"));
|
||||
player.startMapEffect("Please rescue Gaga within the time limit.", 5120027);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
player.changeMap(mapid, 0);
|
||||
player.cancelEffect(2360002);
|
||||
|
||||
end(eim);
|
||||
} else {
|
||||
eim.unregisterPlayer(player);
|
||||
|
||||
player.changeMap(mapid, 0);
|
||||
player.cancelEffect(2360002);
|
||||
}
|
||||
} else if (mapid == maxMapId) {
|
||||
eim.clearPQ();
|
||||
|
||||
var rgaga = player.getEvents().get("rescueGaga");
|
||||
rgaga.complete();
|
||||
}
|
||||
}
|
||||
|
||||
function afterChangedMap(eim, player, mapid) {
|
||||
if (mapid == minMapId) {
|
||||
player.getAbstractPlayerInteraction().useItem(2360002);//HOORAY <3
|
||||
} else {
|
||||
player.cancelEffect(2360002);
|
||||
}
|
||||
}
|
||||
|
||||
function changedLeader(eim, leader) {}
|
||||
|
||||
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) {}
|
||||
|
||||
function disbandParty(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.schedule("spawnGrandpaBunny", 10 * 1000);
|
||||
}
|
||||
|
||||
function spawnGrandpaBunny(eim) {
|
||||
eim.spawnNpc(9001105, new java.awt.Point(175, -20), eim.getInstanceMap(maxMapId));
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
@@ -85,7 +85,9 @@ function setEventRewards(eim) {
|
||||
eim.setEventClearStageMeso(mesoStages);
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
function afterSetup(eim) {
|
||||
em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(1);
|
||||
}
|
||||
|
||||
function setup(channel) {
|
||||
var eim = em.newInstance("Zakum" + channel);
|
||||
@@ -188,6 +190,7 @@ function giveRandomEventReward(eim, player) {
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(0);
|
||||
}
|
||||
|
||||
function isZakum(mob) {
|
||||
@@ -209,4 +212,8 @@ function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
function dispose(eim) {
|
||||
if (!eim.isEventCleared()) {
|
||||
em.getChannelServer().getMapFactory().getMap(211042300).getReactorById(2118002).forceHitReactor(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
function start(ms) {
|
||||
ms.getPlayer().resetEnteredScript();
|
||||
ms.getPlayer().getMap().addMapTimer(180);
|
||||
ms.getPlayer().resetEnteredScript();
|
||||
ms.spawnMonster(9300331, -28, 0);
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
/*
|
||||
*@Author: kevintjuh93
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
var player;
|
||||
|
||||
function start(ms) {
|
||||
player = ms.getPlayer();
|
||||
player.resetEnteredScript();
|
||||
ms.getClient().announce(MaplePacketCreator.showEffect("event/space/start"));
|
||||
player.startMapEffect("Please rescue Gaga within the time limit.", 5120027);
|
||||
var map = player.getMap();
|
||||
if (map.getTimeLeft() > 0) {
|
||||
ms.getClient().announce(MaplePacketCreator.getClock(map.getTimeLeft()));
|
||||
} else {
|
||||
map.addMapTimer(180);
|
||||
}
|
||||
ms.useItem(2360002);//HOORAY <3
|
||||
}
|
||||
32
scripts/npc/9000019.js
Normal file
32
scripts/npc/9000019.js
Normal file
@@ -0,0 +1,32 @@
|
||||
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) {
|
||||
if(cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.ETC).getNumFreeSlot() < 1) {
|
||||
cm.sendNext("Check for a available slot on your ETC inventory.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
cm.getClient().announce(Packages.tools.MaplePacketCreator.openRPSNPC());
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
54
scripts/npc/9001102.js
Normal file
54
scripts/npc/9001102.js
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
* @Author : iAkira, Kevintjuh93
|
||||
**/
|
||||
var status = 0;
|
||||
var selected = 0;
|
||||
|
||||
function start() {
|
||||
if (cm.getPlayer().getMapId() == 100000000) {
|
||||
cm.sendNext("There! Did you see that? You didn't? A UFO just passed... there!! Look, someone is getting dragged into the UFO... arrrrrrgh, it's Gaga! #rGaga just got kidnapped by a UFO!#k");
|
||||
}
|
||||
}
|
||||
|
||||
function action(m,t,s) {
|
||||
if (m > 0) {
|
||||
status++;
|
||||
if (cm.getPlayer().getMapId() == 100000000) { // warper completed
|
||||
if (status == 1) {
|
||||
if (cm.getPlayer().getLevel() >= 12)
|
||||
cm.sendYesNo("What do we do now? It's just a rumor yet, but... I've heard that scary things happen to you if you get kidnapped by aliens... may be that's what happenning to Gaga right now! Please, please rescue Gaga! \r\n #bGaga may be a bit indetermined and clueless, but#k he has a really good heart. I can't let something terrible happen to him. Right! Grandpa from the moon might know how to rescue him! I will send you to the moon, so please go meet Grandpa and rescue Gaga!!!");
|
||||
else
|
||||
cm.sendOk("Oh! It seems you don't reach the level requirements to save Gaga. Please come back when you are level 12 or higher.");
|
||||
|
||||
} else if (status == 2)
|
||||
cm.sendNext("Thank you so much. Please rescue Gaga! Grandpa from the moon will help you.");
|
||||
else if (status == 3) {
|
||||
cm.warp(922240200, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
} else if (m < 1) {
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
77
scripts/npc/9001105.js
Normal file
77
scripts/npc/9001105.js
Normal file
@@ -0,0 +1,77 @@
|
||||
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) {
|
||||
if (cm.getPlayer().getMapId() == 922240200) {
|
||||
cm.sendOk("That's a shame, come back when your ready.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if(status == 0) {
|
||||
if (cm.getMapId() == 922240200) {
|
||||
cm.sendSimple("Did you have something to say...? #b\b\r\n#L0#I want to rescue Gaga.#l\r\n"); //#L1#I want to go to the Space Mine.#l
|
||||
} else if (cm.getMapId() >= 922240000 && cm.getMapId() <= 922240019) {
|
||||
cm.sendYesNo("Don't worry if you fail. You'll have 3 chances. Do you still want to give up?");
|
||||
} else if (cm.getMapId() >= 922240100 && cm.getMapId() <= 922240119) {
|
||||
var text = "You went through so much trouble to rescue Gaga, but it looks like we're back to square one. ";
|
||||
var rgaga = cm.getPlayer().getEvents().get("rescueGaga");
|
||||
if (rgaga.getCompleted() > 10) {
|
||||
text += "Please don't give up until Gaga is rescued. To show you my appreciation for what you've accomplished thus far, I've given you a Spaceship. It's rather worn out, but it should still be operational. Check your #bSkill Window#k.";
|
||||
rgaga.giveSkill(cm.getPlayer());
|
||||
} else
|
||||
text += "Let's go back now.";
|
||||
|
||||
cm.sendNext(text);
|
||||
}
|
||||
} else {
|
||||
if (cm.getPlayer().getMapId() == 922240200) {
|
||||
if (status == 1) {
|
||||
if(selection == 0) {
|
||||
selected = 1;
|
||||
cm.sendNext("Welcome! I heard what happened from Baby Moon Bunny I'm glad you came since I was Planning on requesting some help. Gaga is a friend of mine who has helped me before and often stops by to say hello. Unfortunately, he was kidnapped by aliens.");
|
||||
} else {
|
||||
selected = 2;
|
||||
cm.sendYesNo("At the Space Mine, you can find special ores called #bKrypto Crystals#k that contains the mysterious power of space. #bKrypto Crystals#l are usually emerald in color, but will turn brown if hit with the Spaceship's #bSpace Beam#k. Remember, in order to thwart this alien conspracy, #b10 Brown Krypto Crystal's and 10 Emerald Krypto Crystal's are needed. But since even #b1 Krypto Crystal#k can be of help, brign me as many as possible. Oh, and one more thing! The Space Mines are protected by the Space Mateons. They are extemely strong due to the power of the #Krypto Crystals#k, so don't try to defeat them. Simply concentrate on quickly collecting the crystals.");
|
||||
}
|
||||
} else if (status == 2) {
|
||||
if(selected == 1) {
|
||||
cm.sendYesNo("If we just leave Gaga with the aliens, something terrible will happen to him! I'll let you borrow a spaceship that the Moon Bunnies use for traveling so that you can rescue Gaga.#b Although he might appear a bit indecisive, slow, and immature at times#k, he's really a nice young man. Do you want to go rescue him now?");
|
||||
} else if(selected == 2) {
|
||||
cm.sendOk("Not coded yet, f4.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 3) {
|
||||
var em = cm.getEventManager("RescueGaga");
|
||||
if (em == null) {
|
||||
cm.sendOk("This event is currently unavailable.");
|
||||
} else if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("There is currently someone in this map, come back later.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) {
|
||||
cm.warp(922240200, 0);
|
||||
cm.dispose();
|
||||
} else if (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119) {
|
||||
cm.warp(922240200, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
/**
|
||||
* @Author : iAkira, Kevintjuh93
|
||||
**/
|
||||
var status = 0;
|
||||
var selected = 0;
|
||||
|
||||
function start() {
|
||||
if (cm.getPlayer().getMapId() == 100000000) {
|
||||
cm.sendNext("There! Did you see that? You didn't? A UFO just passed... there!! Look, someone is getting dragged into the UFO... arrrrrrgh, it's Gaga! #rGaga just got kidnapped by a UFO!#k");
|
||||
} else if (cm.getPlayer().getMapId() == 922240200) {
|
||||
cm.sendSimple("Did you have something to say...? #b\b\r\n#L0#I want to rescue Gaga.#l\r\n#L1#I want to go to the Space Mine.#l");
|
||||
} else if (cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) {
|
||||
cm.sendYesNo("Don't worry if you fail. You'll have 3 chances. Do you still want to give up?");
|
||||
} else if (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119) {
|
||||
var text = "You went through so much trouble to rescue Gaga, but it looks like we're back to square one. ";
|
||||
var rgaga = cm.getPlayer().getEvents().get("rescueGaga");
|
||||
if (rgaga.getCompleted() == 10 || rgaga.getCompleted() == 20) {
|
||||
text += "Please don't give up untill Gaga is rescued. To show you my appreciation for what you've accomplished thus far, I've given you a Spaceship. It's rather worn out, but it should still be operational. Check your #bSkill Window#k.";
|
||||
rgaga.giveSkill(cm.getPlayer());
|
||||
} else
|
||||
text += "Let's go back now.";
|
||||
|
||||
cm.sendNext(text);
|
||||
}
|
||||
}
|
||||
|
||||
function action(m,t,s) {
|
||||
if (m > 0) {
|
||||
status++;
|
||||
if (cm.getPlayer().getMapId() == 100000000) { // warper completed
|
||||
if (status == 1) {
|
||||
if (cm.getPlayer().getLevel() >= 12)
|
||||
cm.sendYesNo("What do we do now? It's just a rumor yet, but... I've heard that scary things happen to you if you get kidnapped by aliens... may be that's what happenning to Gaga right now! Please, please rescue Gaga! \r\n #bGaga may be a bit indetermined and clueless, but#k he has a really good heart. I can't let something terrible happen to him. Right! Grandpa from the moon might know how to rescue him! I will send you to the moon, so please go meet Grandpa and rescue Gaga");
|
||||
else
|
||||
cm.sendOk("Oh! it seems you don't reach the level requirements to save Gaga. Please come back when you are level 12 or higher.");
|
||||
|
||||
} else if (status == 2)
|
||||
cm.sendNext("Thank you so much. Please rescue Gaga! Grandpa from the moon will help you.");
|
||||
else if (status == 3) {
|
||||
cm.warp(922240200, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (cm.getPlayer().getMapId() == 922240200) {
|
||||
if (status == 1) {
|
||||
if(s == 0) {
|
||||
selected = 1;
|
||||
cm.sendNext("Welcome! I heard what happened from Baby Moon Bunny I'm glad you came since I was Planning on requesting some help. Gaga is a friend of mine who has helped me before and often stops by to say hello. Unfortunaley, he was kidnapped by aliens.");
|
||||
} else {
|
||||
selected = 2;
|
||||
cm.sendYesNo("At the Space Mine, you can find special ores called #bKrypto Crystals#k that contains the mysterious power of space. #bKrypto Crystals#l are usually emerald in color, but will turn brown if hit with the Spaceship's #bSpace Beam#k. Remember, in order to thwart this alien conspracy, #b10 Brown Krypto Crystal's and 10 Emerald Krypto Crystal's are needed. But since even #b1 Krypto Crystal#k can be of help, brign me as many as possible. Oh, and one more thing! The Space Mines are protected by the Space Mateons. They are extemely strong due to the power of the #Krypto Crystals#k, so don't try to defeat them. Simply concentrate on quickly collecting the crystals.");
|
||||
}
|
||||
} else if (status == 2) {
|
||||
if(selected == 1) {
|
||||
cm.sendYesNo("If we just leave Gaga with the aliens, something terrible will happen to him! I'll let you borrow a spaceship that the Moon Bunnies use for traveling so that you can rescue Gaga.#b Although he might appear a bit indecieve, slow, and immature at times#k, he's really a nice young man. Do you want to go rescue him now?");
|
||||
} else if(selected == 2) {
|
||||
cm.sendOk("Not coded yet, f4.");
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (status == 3) {
|
||||
var number = -1;
|
||||
for (var i = 0; i < 20; i++) {
|
||||
var mapFactory = cm.getClient().getChannelServer().getMapFactory();
|
||||
if (mapFactory.getMap(922240000 + i).getCharacters().isEmpty()) {
|
||||
number = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (number > -1)
|
||||
cm.warp(922240000 + number);
|
||||
else
|
||||
cm.sendOk("There are currently no empty maps, please try again later.");
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
} else if ((cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) || (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119)) {
|
||||
cm.warp(922240200, 0);
|
||||
cm.dispose();
|
||||
}
|
||||
} else if (m < 1) {
|
||||
if(m == 0) {
|
||||
if (cm.getPlayer().getMapId() == 922240200) {
|
||||
cm.sendOk("That's a shame, come back when your ready.");
|
||||
}
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -43,6 +43,7 @@ function writeFeatureTab_PQs() {
|
||||
addFeature("RnJPQ/HorntailPQ/TreasurePQ/ElnathPQ/HolidayPQ.");
|
||||
addFeature("CWKPQ as Expedition-based instance.");
|
||||
addFeature("Scarga/Horntail/Showa/Balrog/Zakum/Pinkbean.");
|
||||
addFeature("Expeditions with entry-limit system available.");
|
||||
addFeature("GuildPQ & queue with multi-lobby system available.");
|
||||
addFeature("Brand-new PQs: BossRushPQ, CafePQ.");
|
||||
addFeature("Mu Lung Dojo.");
|
||||
@@ -57,7 +58,7 @@ function writeFeatureTab_Skills() {
|
||||
addFeature("Reviewed many skills, such as Steal and M. Door.");
|
||||
addFeature("Heal GMS-like: fixed HP gain & Heal skill packet.");
|
||||
addFeature("Improved battleship: HP visible and map-persistent.");
|
||||
addFeature("Maker skill features properly developed.");
|
||||
addFeature("Maker skill features developed - pckts thanks Arnah.");
|
||||
addFeature("Chair Mastery - map chair boosts HP/MP rec.");
|
||||
addFeature("Mu Lung Dojo skills functional.");
|
||||
addFeature("Monster Magnet skill no longer crashes players.");
|
||||
@@ -185,6 +186,7 @@ function writeFeatureTab_Playerpotentials() {
|
||||
addFeature("Optional cash shop inventory separated by classes.");
|
||||
addFeature("Players manage 'same-typed' invites exclusively.");
|
||||
addFeature("Player buffs with conditional active effects.");
|
||||
addFeature("Rock-paper-scissors minigame - thanks Arnah!");
|
||||
}
|
||||
|
||||
function writeFeatureTab_Serverpotentials() {
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
//Author: kevintjuh93
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var fc = eim.getIntProperty("falls");
|
||||
|
||||
if (fc >= 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
} else {
|
||||
eim.setIntProperty("falls", fc + 1);
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,11 +1,15 @@
|
||||
//Author: kevintjuh93
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var fc = eim.getIntProperty("falls");
|
||||
|
||||
if (fc >= 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
} else {
|
||||
eim.setIntProperty("falls", fc + 1);
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,11 +1,15 @@
|
||||
//Author: kevintjuh93
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var fc = eim.getIntProperty("falls");
|
||||
|
||||
if (fc >= 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
} else {
|
||||
eim.setIntProperty("falls", fc + 1);
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,11 +1,15 @@
|
||||
//Author: kevintjuh93
|
||||
|
||||
function enter(pi) {
|
||||
if (pi.getPlayer().getEvents().get("rescueGaga").fallAndGet() > 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
} else
|
||||
var eim = pi.getPlayer().getEventInstance();
|
||||
var fc = eim.getIntProperty("falls");
|
||||
|
||||
if (fc >= 3) {
|
||||
pi.playPortalSound(); pi.warp(922240200, 0);
|
||||
} else {
|
||||
eim.setIntProperty("falls", fc + 1);
|
||||
pi.playPortalSound(); pi.warp(pi.getPlayer().getMapId(), 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -34,6 +34,17 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!pi.haveItem(4001017)) { // thanks Conrad for pointing out missing checks for token item and unused reactor
|
||||
pi.getPlayer().dropMessage(5,"You do not have the Eye of Fire. You may not face the boss.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var react = pi.getMap().getReactorById(2118002);
|
||||
if (react != null && react.getState() > 0) {
|
||||
pi.getPlayer().dropMessage(5,"The entrance is currently blocked.");
|
||||
return false;
|
||||
}
|
||||
|
||||
pi.playPortalSound(); pi.warp(211042400,"west00");
|
||||
return true;
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
//Author: kevintjuh93
|
||||
|
||||
function enter(pi) {
|
||||
pi.getPlayer().getEvents().get("rescueGaga").complete();
|
||||
pi.playPortalSound(); pi.warp(922240100 + (pi.getPlayer().getMapId() - 922240000));
|
||||
pi.getPlayer().cancelEffect(2360002);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user