145 lines
4.6 KiB
JavaScript
145 lines
4.6 KiB
JavaScript
var Orbis_btf;
|
|
var Boat_to_Orbis;
|
|
var Orbis_Boat_Cabin;
|
|
var Orbis_docked;
|
|
var Ellinia_btf;
|
|
var Ellinia_Boat_Cabin;
|
|
var Ellinia_docked;
|
|
|
|
//Time Setting is in millisecond
|
|
var closeTime = 4 * 60 * 1000; //The time to close the gate
|
|
var beginTime = 5 * 60 * 1000; //The time to begin the ride
|
|
var rideTime = 10 * 60 * 1000; //The time that require move to destination
|
|
var invasionStartTime = 3 * 60 * 1000; //The time to balrog ship approach
|
|
var invasionDelayTime = 1 * 60 * 1000; //The time to balrog ship approach
|
|
var invasionDelay = 5 * 1000; //The time that spawn balrog
|
|
|
|
function init() {
|
|
closeTime = em.getTransportationTime(closeTime);
|
|
beginTime = em.getTransportationTime(beginTime);
|
|
rideTime = em.getTransportationTime(rideTime);
|
|
invasionStartTime = em.getTransportationTime(invasionStartTime);
|
|
invasionDelayTime = em.getTransportationTime(invasionDelayTime);
|
|
|
|
Orbis_btf = em.getChannelServer().getMapFactory().getMap(200000112);
|
|
Ellinia_btf = em.getChannelServer().getMapFactory().getMap(101000301);
|
|
Boat_to_Orbis = em.getChannelServer().getMapFactory().getMap(200090010);
|
|
Boat_to_Ellinia = em.getChannelServer().getMapFactory().getMap(200090000);
|
|
Orbis_Boat_Cabin = em.getChannelServer().getMapFactory().getMap(200090011);
|
|
Ellinia_Boat_Cabin = em.getChannelServer().getMapFactory().getMap(200090001);
|
|
Ellinia_docked = em.getChannelServer().getMapFactory().getMap(101000300);
|
|
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
|
|
Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000111);
|
|
|
|
Ellinia_docked.setDocked(true);
|
|
Orbis_docked.setDocked(true);
|
|
|
|
scheduleNew();
|
|
}
|
|
|
|
function scheduleNew() {
|
|
em.setProperty("docked", "true");
|
|
|
|
em.setProperty("entry", "true");
|
|
em.setProperty("haveBalrog", "false");
|
|
em.schedule("stopentry", closeTime);
|
|
em.schedule("takeoff", beginTime);
|
|
}
|
|
|
|
function stopentry() {
|
|
em.setProperty("entry", "false");
|
|
Orbis_Boat_Cabin.clearMapObjects(); //boxes
|
|
Ellinia_Boat_Cabin.clearMapObjects();
|
|
}
|
|
|
|
function takeoff() {
|
|
Orbis_btf.warpEveryone(Boat_to_Ellinia.getId());
|
|
Ellinia_btf.warpEveryone(Boat_to_Orbis.getId());
|
|
Ellinia_docked.broadcastShip(false);
|
|
Orbis_docked.broadcastShip(false);
|
|
|
|
em.setProperty("docked", "false");
|
|
|
|
if (Math.random() < 0.42) {
|
|
em.schedule("approach", (invasionStartTime + Math.trunc((Math.random() * invasionDelayTime))));
|
|
}
|
|
em.schedule("arrived", rideTime);
|
|
}
|
|
|
|
function arrived() {
|
|
Boat_to_Orbis.warpEveryone(Orbis_Station.getId(), 0);
|
|
Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId(), 0);
|
|
Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId(), 1);
|
|
Ellinia_Boat_Cabin.warpEveryone(Ellinia_docked.getId(), 1);
|
|
Orbis_docked.broadcastShip(true);
|
|
Ellinia_docked.broadcastShip(true);
|
|
Boat_to_Orbis.broadcastEnemyShip(false);
|
|
Boat_to_Ellinia.broadcastEnemyShip(false);
|
|
Boat_to_Orbis.killAllMonsters();
|
|
Boat_to_Ellinia.killAllMonsters();
|
|
em.setProperty("haveBalrog", "false");
|
|
scheduleNew();
|
|
}
|
|
|
|
function approach() {
|
|
if (Math.floor(Math.random() * 10) < 10) {
|
|
em.setProperty("haveBalrog", "true");
|
|
Boat_to_Orbis.broadcastEnemyShip(true);
|
|
Boat_to_Ellinia.broadcastEnemyShip(true);
|
|
const PacketCreator = Java.type('tools.PacketCreator');
|
|
Boat_to_Orbis.broadcastMessage(PacketCreator.musicChange("Bgm04/ArabPirate"));
|
|
Boat_to_Ellinia.broadcastMessage(PacketCreator.musicChange("Bgm04/ArabPirate"));
|
|
|
|
em.schedule("invasion", invasionDelay);
|
|
}
|
|
}
|
|
|
|
function invasion() {
|
|
const LifeFactory = Java.type('server.life.LifeFactory');
|
|
|
|
var map1 = Boat_to_Ellinia;
|
|
var pos1 = new java.awt.Point(-538, 143);
|
|
map1.spawnMonsterOnGroundBelow(LifeFactory.getMonster(8150000), pos1);
|
|
map1.spawnMonsterOnGroundBelow(LifeFactory.getMonster(8150000), pos1);
|
|
|
|
var map2 = Boat_to_Orbis;
|
|
var pos2 = new java.awt.Point(339, 148);
|
|
map2.spawnMonsterOnGroundBelow(LifeFactory.getMonster(8150000), pos2);
|
|
map2.spawnMonsterOnGroundBelow(LifeFactory.getMonster(8150000), pos2);
|
|
}
|
|
|
|
function cancelSchedule() {}
|
|
|
|
// ---------- FILLER FUNCTIONS ----------
|
|
|
|
function dispose() {}
|
|
|
|
function setup(eim, leaderid) {}
|
|
|
|
function monsterValue(eim, mobid) {return 0;}
|
|
|
|
function disbandParty(eim, player) {}
|
|
|
|
function playerDisconnected(eim, player) {}
|
|
|
|
function playerEntry(eim, player) {}
|
|
|
|
function monsterKilled(mob, eim) {}
|
|
|
|
function scheduledTimeout(eim) {}
|
|
|
|
function afterSetup(eim) {}
|
|
|
|
function changedLeader(eim, leader) {}
|
|
|
|
function playerExit(eim, player) {}
|
|
|
|
function leftParty(eim, player) {}
|
|
|
|
function clearPQ(eim) {}
|
|
|
|
function allMonstersDead(eim) {}
|
|
|
|
function playerUnregistered(eim, player) {}
|
|
|