diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml
index 43285ef1ba..f3d2fb934b 100644
--- a/nbproject/private/private.xml
+++ b/nbproject/private/private.xml
@@ -3,13 +3,13 @@
- file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/9201134.js
- file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2030010.js
- file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2091005.js
+ file:/C:/Nexon/MapleSolaxia/src/scripting/event/EventManager.java
+ file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012001.js
+ file:/C:/Nexon/MapleSolaxia/src/net/SendOpcode.java
file:/C:/Nexon/MapleSolaxia/src/server/life/SpawnPoint.java
file:/C:/Nexon/MapleSolaxia/scripts/npc/world0/2012002.js
file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMapFactory.java
- file:/C:/Nexon/MapleSolaxia/src/server/life/MapleMonster.java
+ file:/C:/Nexon/MapleSolaxia/src/tools/MaplePacketCreator.java
file:/C:/Nexon/MapleSolaxia/scripts/event/Boats.js
file:/C:/Nexon/MapleSolaxia/src/server/maps/MapleMap.java
diff --git a/scripts/event/AirPlane.js b/scripts/event/AirPlane.js
index 7348719d71..4d9286cb13 100644
--- a/scripts/event/AirPlane.js
+++ b/scripts/event/AirPlane.js
@@ -22,6 +22,8 @@ function init() {
}
function scheduleNew() {
+ em.setProperty("docked", "true");
+ em.setProperty("entry", "true");
em.schedule("stopEntry", closeTime);
em.schedule("takeoff", beginTime);
}
@@ -31,16 +33,17 @@ function stopEntry() {
}
function takeoff() {
- em.setProperty("entry", "true");
- KC_bfd.warpEveryone(Plane_to_CBD.getId());
- CBD_bfd.warpEveryone(Plane_to_KC.getId());
- em.schedule("arrived", rideTime);
- scheduleNew();
+ em.setProperty("docked","false");
+ KC_bfd.warpEveryone(Plane_to_CBD.getId());
+ CBD_bfd.warpEveryone(Plane_to_KC.getId());
+ em.schedule("arrived", rideTime); //The time that require move to destination
}
function arrived() {
- Plane_to_CBD.warpEveryone(CBD_docked.getId());
- Plane_to_KC.warpEveryone(KC_docked.getId());
+ Plane_to_CBD.warpEveryone(CBD_docked.getId());
+ Plane_to_KC.warpEveryone(KC_docked.getId());
+
+ scheduleNew();
}
function cancelSchedule() {
diff --git a/scripts/event/Boats.js b/scripts/event/Boats.js
index 7dd342bfc6..c2ee975b45 100644
--- a/scripts/event/Boats.js
+++ b/scripts/event/Boats.js
@@ -25,21 +25,22 @@ function init() {
Ellinia_docked = em.getChannelServer().getMapFactory().getMap(101000300);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000111);
- OBoatsetup();
- EBoatsetup();
+
scheduleNew();
}
function scheduleNew() {
+ em.setProperty("docked", "true");
Ellinia_docked.setDocked(true);
Orbis_docked.setDocked(true);
- Ellinia_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
- em.setProperty("docked", "true");
+
em.setProperty("entry", "true");
- em.setProperty("haveBalrog","false");
+ em.setProperty("haveBalrog", "false");
em.schedule("stopentry", closeTime);
em.schedule("takeoff", beginTime);
+
+ Boat_to_Orbis.killAllMonsters();
+ Boat_to_Ellinia.killAllMonsters();
}
function stopentry() {
@@ -48,56 +49,50 @@ function stopentry() {
Ellinia_Boat_Cabin.resetReactors();
}
-
-
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");
- Orbis_btf.warpEveryone(Boat_to_Ellinia.getId());
- Ellinia_btf.warpEveryone(Boat_to_Orbis.getId());
Ellinia_docked.setDocked(false);
Orbis_docked.setDocked(false);
- Ellinia_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
+
em.schedule("invasion", invasionTime);
em.schedule("arrived", rideTime);
}
function arrived() {
- Boat_to_Orbis.warpEveryone(Orbis_Station.getId());
- Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId());
- Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId());
- Ellinia_Boat_Cabin.warpEveryone(Ellinia_docked.getId());
+ Boat_to_Orbis.warpEveryone(Orbis_Station.getId());
+ Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId());
+ Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId());
+ Ellinia_Boat_Cabin.warpEveryone(Ellinia_docked.getId());
+ Orbis_docked.broadcastShip(true);
+ Ellinia_docked.broadcastShip(true);
Boat_to_Orbis.killAllMonsters();
Boat_to_Ellinia.killAllMonsters();
+ em.setProperty("haveBalrog", "false");
scheduleNew();
}
function invasion() {
- var numspawn = 2;
- if(numspawn > 0) {
- for(var i=0; i < numspawn; i++) {
- Boat_to_Orbis.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(485, -221));
- Boat_to_Ellinia.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(-590, -221));
- }
- Boat_to_Orbis.setDocked(true);
- Boat_to_Ellinia.setDocked(true);
- Boat_to_Orbis.broadcastMessage(MaplePacketCreator.boatPacket(true));
- Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.boatPacket(true));
- Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
- Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
+ if (Math.floor(Math.random() * 10) < 10) {
+ var map1 = Boat_to_Ellinia;
+ var pos1 = new java.awt.Point(-538, 143);
+ map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1);
+ map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1);
+
+ var map2 = Boat_to_Orbis;
+ var pos2 = new java.awt.Point(339, 148);
+ map2.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos2);
+ map2.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos2);
+
em.setProperty("haveBalrog","true");
+ Boat_to_Ellinia.broadcastShip(true);
+ Boat_to_Orbis.broadcastShip(true);
}
}
-function OBoatsetup() {
- em.getChannelServer().getMapFactory().getMap(200090011).getPortal("out00").setScriptName("OBoat1");
- em.getChannelServer().getMapFactory().getMap(200090011).getPortal("out01").setScriptName("OBoat2");
-}
-
-function EBoatsetup() {
- em.getChannelServer().getMapFactory().getMap(200090001).getPortal("out00").setScriptName("EBoat1");
- em.getChannelServer().getMapFactory().getMap(200090001).getPortal("out01").setScriptName("EBoat2");
-}
-
function cancelSchedule() {
}
\ No newline at end of file
diff --git a/scripts/event/Cabin.js b/scripts/event/Cabin.js
index cb35d0a89f..b5009c0488 100644
--- a/scripts/event/Cabin.js
+++ b/scripts/event/Cabin.js
@@ -26,7 +26,7 @@
-- By ---------------------------------------------------------------------------------------------
Information
-- Version Info -----------------------------------------------------------------------------------
- 1.5 - Fix for infinity looping [Information]
+ 1.5 - Fix for infinity looping [Information]
1.4 - Ship/boat is now showed
- Removed temp message[Information]
- Credit to Snow/superraz777 for old source
@@ -61,18 +61,18 @@ function init() {
Leafre_docked = em.getChannelServer().getMapFactory().getMap(240000110);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
Leafre_Station = em.getChannelServer().getMapFactory().getMap(240000100);
+
scheduleNew();
}
function scheduleNew() {
- Leafre_docked.setDocked(true);
- Orbis_docked.setDocked(true);
- Leafre_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
em.setProperty("docked", "true");
+ Orbis_docked.setDocked(true);
+ Leafre_docked.setDocked(true);
+
em.setProperty("entry", "true");
- em.schedule("stopEntry", closeTime);
- em.schedule("takeoff", beginTime);
+ em.schedule("stopEntry", closeTime); //The time to close the gate
+ em.schedule("takeoff", beginTime); //The time to begin the ride
}
function stopEntry() {
@@ -80,19 +80,26 @@ function stopEntry() {
}
function takeoff() {
- Leafre_docked.setDocked(false);
- Orbis_docked.setDocked(false);
- Leafre_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- em.setProperty("docked","false");
Orbis_btf.warpEveryone(Cabin_to_Leafre.getId());
Leafre_btf.warpEveryone(Cabin_to_Orbis.getId());
- em.schedule("arrived", rideTime);
+
+ Orbis_docked.broadcastShip(false);
+ Leafre_docked.broadcastShip(false);
+
+ em.setProperty("docked","false");
+ Orbis_docked.setDocked(false);
+ Leafre_docked.setDocked(false);
+
+ em.schedule("arrived", rideTime); //The time that require move to destination
}
function arrived() {
Cabin_to_Orbis.warpEveryone(Orbis_Station.getId());
Cabin_to_Leafre.warpEveryone(Leafre_Station.getId());
+
+ Orbis_docked.broadcastShip(true);
+ Leafre_docked.broadcastShip(true);
+
scheduleNew();
}
diff --git a/scripts/event/Genie.js b/scripts/event/Genie.js
index b3d7cd3d7d..c1dd41b9e1 100644
--- a/scripts/event/Genie.js
+++ b/scripts/event/Genie.js
@@ -40,18 +40,18 @@ function init() {
Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000151);
Ariant_docked = em.getChannelServer().getMapFactory().getMap(260000100);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
+
scheduleNew();
}
function scheduleNew() {
- Ariant_docked.setDocked(true);
- Orbis_docked.setDocked(true);
- Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
em.setProperty("docked", "true");
+ Orbis_docked.setDocked(true);
+ Ariant_docked.setDocked(true);
+
em.setProperty("entry", "true");
- em.schedule("stopEntry", closeTime);
- em.schedule("takeoff", beginTime);
+ em.schedule("stopEntry", closeTime); //The time to close the gate
+ em.schedule("takeoff", beginTime); //The time to begin the ride
}
function stopEntry() {
@@ -59,19 +59,24 @@ function stopEntry() {
}
function takeoff() {
- em.setProperty("docked","false");
Orbis_btf.warpEveryone(Genie_to_Ariant.getId());
Ariant_btf.warpEveryone(Genie_to_Orbis.getId());
- Ariant_docked.setDocked(false);
+ Orbis_docked.broadcastShip(false);
+ Ariant_docked.broadcastShip(false);
+
+ em.setProperty("docked","false");
Orbis_docked.setDocked(false);
- Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- em.schedule("arrived", rideTime);
+ Ariant_docked.setDocked(false);
+
+ em.schedule("arrived", rideTime); //The time that require move to destination
}
function arrived() {
Genie_to_Orbis.warpEveryone(Orbis_Station.getId());
Genie_to_Ariant.warpEveryone(Ariant_docked.getId());
+ Orbis_docked.broadcastShip(true);
+ Ariant_docked.broadcastShip(true);
+
scheduleNew();
}
diff --git a/scripts/event/Hak.js b/scripts/event/Hak.js
index b0a792c654..25618e3db6 100644
--- a/scripts/event/Hak.js
+++ b/scripts/event/Hak.js
@@ -1,5 +1,3 @@
-importPackage(Packages.tools);
-
var returnTo = new Array(200000141, 250000100);
var rideTo = new Array(250000100, 200000141);
var birdRide = new Array(200090300, 200090310);
@@ -7,44 +5,28 @@ var myRide;
var returnMap;
var map;
var docked;
+
var timeOnRide = 60; //Seconds
-var onRide;
function init() {
-}
-
-function setup() {
- var eim = em.newInstance("Hak_" + + em.getProperty("player"));
- return eim;
+ em.setProperty("isRiding","false");
}
function playerEntry(eim, player) {
- if (player.getMapId() == returnTo[0]) {
- myRide = 0;
- } else {
- myRide = 1;
- }
- docked = eim.getEm().getChannelServer().getMapFactory().getMap(rideTo[myRide]);
- returnMap = eim.getMapFactory().getMap(returnTo[myRide]);
- onRide = eim.getMapFactory().getMap(birdRide[myRide]);
+ myRide = em.getProperty("myRide");
+ docked = em.getChannelServer().getMapFactory().getMap(rideTo[myRide]);
+ returnMap = em.getChannelServer().getMapFactory().getMap(returnTo[myRide]);
+ onRide = em.getChannelServer().getMapFactory().getMap(birdRide[myRide]);
+
+ em.setProperty("isRiding","true");
+ em.schedule("timeOut", timeOnRide * 1000);
player.changeMap(onRide, onRide.getPortal(0));
- player.getClient().getSession().write(MaplePacketCreator.getClock(timeOnRide));
- eim.schedule("timeOut", timeOnRide * 1000);
+ player.getClient().getSession().write(tools.MaplePacketCreator.getClock(timeOnRide));
}
-function timeOut() {
- onRide.warpEveryone(docked.getId());
-}
-
-
-
-
function playerDisconnected(eim, player) {
return 0;
}
-function cancelSchedule() {}
-
-function dispose() {
- em.cancelSchedule();
+function cancelSchedule() {
}
\ No newline at end of file
diff --git a/scripts/event/Trains.js b/scripts/event/Trains.js
index 5e1c69fbe0..385e6ca178 100644
--- a/scripts/event/Trains.js
+++ b/scripts/event/Trains.js
@@ -23,18 +23,18 @@ function init() {
Ludibrium_docked = em.getChannelServer().getMapFactory().getMap(220000110);
Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100);
Ludibrium_Station = em.getChannelServer().getMapFactory().getMap(220000100);
+
scheduleNew();
}
function scheduleNew() {
- Ludibrium_docked.setDocked(true);
- Orbis_docked.setDocked(true);
- Ludibrium_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true));
em.setProperty("docked", "true");
+ Orbis_docked.setDocked(true);
+ Ludibrium_docked.setDocked(true);
+
em.setProperty("entry", "true");
- em.schedule("stopEntry", closeTime);
- em.schedule("takeoff", beginTime);
+ em.schedule("stopEntry", closeTime); //The time to close the gate
+ em.schedule("takeoff", beginTime); //The time to begin the ride
}
function stopEntry() {
@@ -42,19 +42,23 @@ function stopEntry() {
}
function takeoff() {
- Ludibrium_docked.setDocked(false);
- Orbis_docked.setDocked(false);
- Ludibrium_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false));
- em.setProperty("docked","false");
Orbis_btf.warpEveryone(Train_to_Ludibrium.getId());
Ludibrium_btf.warpEveryone(Train_to_Orbis.getId());
- em.schedule("arrived", rideTime);
+ Orbis_docked.broadcastShip(false);
+ Ludibrium_docked.broadcastShip(false);
+
+ em.setProperty("docked","false");
+ Orbis_docked.setDocked(false);
+ Ludibrium_docked.setDocked(false);
+
+ em.schedule("arrived", rideTime); //The time that require move to destination
}
function arrived() {
Train_to_Orbis.warpEveryone(Orbis_Station.getId());
Train_to_Ludibrium.warpEveryone(Ludibrium_Station.getId());
+ Orbis_docked.broadcastShip(true);
+ Ludibrium_docked.broadcastShip(true);
scheduleNew();
}
diff --git a/scripts/event/elevator.js b/scripts/event/elevator.js
index 3bcc720390..6be6035ccb 100644
--- a/scripts/event/elevator.js
+++ b/scripts/event/elevator.js
@@ -20,6 +20,9 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
function init() {
+ em.getChannelServer().getMapFactory().getMap(222020100).resetReactors();
+ em.getChannelServer().getMapFactory().getMap(222020200).resetReactors();
+
scheduleNew();
}
diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java
index 5a07d69f7f..8c932edcf7 100644
--- a/src/server/maps/MapleMap.java
+++ b/src/server/maps/MapleMap.java
@@ -99,7 +99,7 @@ public class MapleMap {
private byte monsterRate;
private boolean clock;
private boolean boat;
- private boolean docked;
+ private boolean docked = false;
private String mapName;
private String streetName;
private MapleMapEffect mapEffect = null;
@@ -1278,7 +1278,7 @@ public class MapleMap {
public void startMapEffect(String msg, int itemId) {
startMapEffect(msg, itemId, 30000);
}
-
+
public void startMapEffect(String msg, int itemId, long time) {
if (mapEffect != null) {
return;
@@ -1504,10 +1504,9 @@ public class MapleMap {
Calendar cal = Calendar.getInstance();
chr.getClient().announce((MaplePacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND))));
}
- if (hasBoat() == 2) {
- chr.getClient().announce((MaplePacketCreator.boatPacket(true)));
- } else if (hasBoat() == 1 && (chr.getMapId() != 200090000 || chr.getMapId() != 200090010)) {
- chr.getClient().announce(MaplePacketCreator.boatPacket(false));
+ if (hasBoat() > 0) {
+ if(hasBoat() == 1) chr.getClient().announce((MaplePacketCreator.boatPacket(true)));
+ else chr.getClient().announce(MaplePacketCreator.boatPacket(false));
}
chr.receivePartyMemberHP();
}
@@ -2120,7 +2119,7 @@ public class MapleMap {
}
private int hasBoat() {
- return docked ? 2 : (boat ? 1 : 0);
+ return !boat ? 0 : (docked ? 1 : 2);
}
public void setBoat(boolean hasBoat) {
@@ -2434,4 +2433,8 @@ public class MapleMap {
restoreMapSpawnPoints();
instanceMapFirstSpawn();
}
+
+ public void broadcastShip(final boolean state) {
+ broadcastMessage(MaplePacketCreator.boatPacket(state));
+ }
}
diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java
index 812accec33..7e7fa9bddb 100644
--- a/src/tools/MaplePacketCreator.java
+++ b/src/tools/MaplePacketCreator.java
@@ -4440,6 +4440,7 @@ public class MaplePacketCreator {
return mplew.getPacket();
}
+
public static byte[] boatPacket(boolean type) {//don't think this is correct..
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendOpcode.CONTI_STATE.getValue());