75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
|
var leverSequenceExit = false;
|
||
|
|
||
|
function enterLeverSequence(pi) {
|
||
|
var map = pi.getMap();
|
||
|
|
||
|
var jailn = (pi.getMap().getId() / 10) % 10;
|
||
|
var maxToggles = (jailn == 1) ? 7 : 6;
|
||
|
|
||
|
var mapProp = pi.getEventInstance().getProperty("jail" + jailn);
|
||
|
|
||
|
if (mapProp == null) {
|
||
|
var seq = 0;
|
||
|
|
||
|
for (var i = 1; i <= maxToggles; i++) {
|
||
|
if (Math.random() < 0.5) {
|
||
|
seq += (1 << i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pi.getEventInstance().setProperty("jail" + jailn, seq);
|
||
|
mapProp = seq;
|
||
|
}
|
||
|
|
||
|
mapProp = Number(mapProp);
|
||
|
if (mapProp != 0) {
|
||
|
var countMiss = 0;
|
||
|
for (var i = 1; i <= maxToggles; i++) {
|
||
|
if (!(pi.getMap().getReactorByName("lever" + i).getState() == (mapProp >> i) % 2)) {
|
||
|
countMiss++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const PacketCreator = Java.type('tools.PacketCreator');
|
||
|
if (countMiss > 0) {
|
||
|
map.broadcastMessage(PacketCreator.showEffect("quest/party/wrong_kor"));
|
||
|
map.broadcastMessage(PacketCreator.playSound("Party1/Failed"));
|
||
|
|
||
|
pi.playerMessage(5, "The right combination of levers is needed to pass. " + countMiss + " lever(s) are misplaced.");
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
map.broadcastMessage(PacketCreator.showEffect("quest/party/clear"));
|
||
|
map.broadcastMessage(PacketCreator.playSound("Party1/Clear"));
|
||
|
pi.getEventInstance().setProperty("jail" + jailn, "0");
|
||
|
}
|
||
|
|
||
|
pi.playPortalSound();
|
||
|
pi.warp(pi.getMapId() + 2, 0);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function enterNoMobs(pi) {
|
||
|
var map = pi.getMap();
|
||
|
var mobcount = map.countMonster(9300044);
|
||
|
|
||
|
if (mobcount > 0) {
|
||
|
pi.playerMessage(5, "Please use the levers to defeat all the threats before you proceed.");
|
||
|
return false;
|
||
|
} else {
|
||
|
pi.playPortalSound();
|
||
|
pi.warp(pi.getMapId() + 2, 0);
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function enter(pi) {
|
||
|
var ret;
|
||
|
if (leverSequenceExit) {
|
||
|
ret = enterLeverSequence(pi);
|
||
|
} else {
|
||
|
ret = enterNoMobs(pi);
|
||
|
}
|
||
|
|
||
|
return ret;
|
||
|
}
|