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; }