Scrolls for spike/cold protection + quest completion with equipped items

Added mechanic for the scrolls for spikes on shoes and cold protection
on capes. Fixed an issue where equipped items were being counted towards
materials for quests, therefore showing odds behaviours when completing
it. Fixed some minor issues on the dollhouse quest/event.
This commit is contained in:
ronancpl
2017-05-22 01:49:35 -03:00
parent 514656d238
commit 53927576e7
14 changed files with 152 additions and 115 deletions

View File

@@ -24,8 +24,9 @@
**/
importPackage(Packages.tools);
var returnMap;
var map;
var entryMap = 922000010;
var exitMap = 221024400;
var eventTime = 10; //10 minutes
var eim;
function init() {
@@ -33,59 +34,45 @@ function init() {
}
function playerEntry(eim, player) {
returnMap = em.getChannelServer().getMapFactory().getMap(221024400);
eim = em.getInstance("DollHouse");
map = eim.getMapFactory().getMap(922000010);
player.changeMap(map, map.getPortal(0));
map.shuffleReactors();
eim.getInstanceMap(entryMap).shuffleReactors();
eim.setExclusiveItems([4031094]);
player.changeMap(entryMap, 0);
em.setProperty("noEntry","true");
em.schedule("timeOut", 600000);
player.getClient().getSession().write(MaplePacketCreator.getClock(600));
player.getClient().getSession().write(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000);
}
function playerExit(eim, player) {
em.setProperty("noEntry","false");
player.changeMap(returnMap, returnMap.getPortal(4));
//eim.unregisterPlayer(player); needed no more
em.cancel();
em.disposeInstance("DollHouse");
eim.unregisterPlayer(player);
eim.dispose();
em.setProperty("noEntry","false");
}
function timeOut() {
em.setProperty("noEntry","false");
function scheduledTimeout(eim) {
var player = eim.getPlayers().get(0);
player.changeMap(returnMap, returnMap.getPortal(4));
//eim.unregisterPlayer(player);
em.cancel();
em.disposeInstance("DollHouse");
eim.dispose();
playerExit(eim, eim.getPlayers().get(0));
player.changeMap(exitMap, 4);
}
function playerDisconnected(eim, player) {
em.setProperty("noEntry","false");
player.getMap().removePlayer(player);
player.setMap(returnMap);
//eim.unregisterPlayer(player);
em.cancel();
em.disposeInstance("DollHouse");
eim.dispose();
playerExit(eim, player);
}
function clear(eim) {
em.setProperty("noEntry","false");
var player = eim.getPlayers().get(0);
player.changeMap(returnMap, returnMap.getPortal(4));
//eim.unregisterPlayer(player);
em.cancel();
em.disposeInstance("DollHouse");
eim.unregisterPlayer(player);
player.changeMap(exitMap, 4);
eim.dispose();
em.setProperty("noEntry","false");
}
function cancelSchedule() {
function changedMap(eim, chr, mapid) {
if(mapid != entryMap) playerExit(eim, chr);
}
function dispose() {
}
function cancelSchedule() {}
function dispose() {}

View File

@@ -24,24 +24,39 @@
*/
var greeting;
var status;
function start() {
var greeting = "Thank you for finding the pendulum. Are you ready to return to Eos Tower?";
if (cm.isQuestStarted(3230)) {
if (cm.haveItem(4031094)) {
cm.completeQuest(3230);
cm.gainItem(4031094, -1);
} else
greeting = "You haven't found the pendulum yet. Do you want to go back to Eos Tower?";
}
cm.sendYesNo(greeting);
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode > 0) {
var em = cm.getEventManager("DollHouse");
var eim = em.getInstance("DollHouse");
eim.exitPlayer(cm.getPlayer());
if (mode == -1) {
cm.dispose();
} else {
if (mode == 0 && status == 0) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if(status == 0) {
var greeting = "Thank you for finding the pendulum. Are you ready to return to Eos Tower?";
if (cm.isQuestStarted(3230)) {
if (cm.haveItem(4031094)) {
cm.completeQuest(3230);
cm.gainItem(4031094, -1);
} else
greeting = "You haven't found the pendulum yet. Do you want to go back to Eos Tower?";
}
cm.sendYesNo(greeting);
} else if(status == 1) {
cm.warp(221024400, 4);
cm.dispose();
}
}
cm.dispose();
}