Merge remote-tracking branch 'upstream/master' into Custom-rebirth-npc

This commit is contained in:
James McDowell
2021-05-26 19:44:58 +10:00
318 changed files with 1872 additions and 1719 deletions

View File

@@ -1,3 +1,13 @@
/docs # Project administration files
/handbook .idea
/tools .git
.github
# Not used by the build.
docs
handbook
sql
tools
# Created by the db when using docker-compose, large and causes rebuild issues if sent to the context.
docker-db-data

1
.gitignore vendored
View File

@@ -2,7 +2,6 @@
.idea/ .idea/
*.iml *.iml
/target /target
/docker-db-data
# build files # build files

View File

@@ -1,20 +1,42 @@
# Initial Docker support thanks to xinyifly # Initial Docker support thanks to xinyifly
# Optimisation performed by wejrox
# #
# Build stage # Cosmic JAR creation stage
# #
FROM maven:3.6.3-jdk-8 AS build FROM maven:3.8.1-openjdk-16 AS jar
COPY src /home/app/src
COPY pom.xml /home/app # Build in a separated location which won't have permissions issues.
RUN mvn -f /home/app/pom.xml clean package WORKDIR /opt/cosmic
# Any changes to the pom will affect the entire build, so it should be copied first.
COPY pom.xml ./pom.xml
# Grab all the dependencies listed in the pom early, since it prevents changes to source code from requiring a complete re-download.
# Skip compiling tests since we don't want all the dependecies to be downloaded.
RUN mvn -f ./pom.xml clean dependency:go-offline -Dmaven.test.skip -T 1C
# Source code changes may not change dependencies, so it can go last.
# Skip compiling tests since we don't want all the dependecies to be downloaded for plugins.
COPY src ./src
RUN mvn -f ./pom.xml clean package -Dmaven.test.skip -T 1C
# #
# Package stage # Server creation stage
# #
FROM openjdk:8 FROM openjdk:16
COPY --from=build /home/app/target/Cosmic.jar /usr/local/lib/Cosmic.jar
COPY ./ ./ # Host the server in a location that won't have permissions issues.
WORKDIR /opt/server
# Copy the wizet files first since they're so big and won't change often.
COPY wz ./wz
# Copy the JAR we build earlier.
COPY --from=jar /opt/cosmic/target/Cosmic.jar ./Server.jar
# Scripts are sourced on server startup, so you can mount over them for quicker redeploy.
COPY scripts ./scripts/
# Config is read on server startup, so you can mount over it for quicker redeploy.
COPY config.yaml ./
# Default exposure, although not required if using docker compose.
# This exposes the login server, and channels.
# Format for channels: WWCC, where WW is 75 plus the world number and CC is 75 plus the channel number (both zero indexed).
EXPOSE 8484 7575 7576 7577 EXPOSE 8484 7575 7576 7577
ENTRYPOINT ["java", "-jar", "/usr/local/lib/Cosmic.jar"] ENTRYPOINT ["java", "-jar", "./Server.jar"]

View File

@@ -27,8 +27,8 @@ Discord: https://discord.gg/JU5aQapVZK
--- ---
## Tools ## Tools
* **Java 8 SDK** * **Java 16 SDK** - Needed to compile and run Java code. Install manually or through IntelliJ depending on how you prefer to launch the server. Not required for launching with Docker.
* Link: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html * Link: https://jdk.java.net/16/
* **IntelliJ IDEA** - Java IDE and your main tool for working with the source code. Community edition is good enough. * **IntelliJ IDEA** - Java IDE and your main tool for working with the source code. Community edition is good enough.
@@ -136,7 +136,7 @@ If you are using Docker (quick start):
#### Configuring the project #### Configuring the project
The easiest way to set up your project is to load the repository directly into a new IntelliJ project. The easiest way to set up your project is to clone the repository directly into a new IntelliJ project.
1. Install IntelliJ 1. Install IntelliJ
2. Create a new "Project from Version Control..." 2. Create a new "Project from Version Control..."
@@ -147,19 +147,20 @@ The easiest way to set up your project is to load the repository directly into a
1. Install MySQL Server 8 and MySQL Workbench 8. 1. Install MySQL Server 8 and MySQL Workbench 8.
2. Using Workbench, create a new user with username "cosmic_server" and password "snailshell". 2. Using Workbench, create a new user with username "cosmic_server" and password "snailshell".
These are the defaults used in Cosmic. This the default configuration in Cosmic.
* (Optional) Restrict the Schema Privileges for this new user for improved security. * (Optional) Restrict the Schema Privileges for this new user for improved security.
Add a new entry with "Schemas matching pattern: cosmic" and only select "SELECT", "INSERT", "UPDATE", "DELETE" under "Object Rights" Add a new entry with "Schemas matching pattern: cosmic" and only select "SELECT", "INSERT", "UPDATE", "DELETE" under "Object Rights"
3. Run the sql scripts in the "sql" directory of the project in the order indicated by their names. 3. Run the sql scripts in the "database/sql" directory of the project in the order indicated by their names.
* Make sure you are connected to the database with the "root" user. * Make sure you are connected to the database with the "root" user to be able to run the scripts.
* Run scripts through the menu: "File" -> "Run SQL Script" -> select the script file to run -> "Run" * Run scripts one by one through the menu: "File" -> "Run SQL Script" -> select the script file to run -> "Run"
* The 3rd script "3-db_shopupdate" is optional. It adds custom shop items for certain NPCs. * The 3rd script "3-db_shopupdate" is optional. It adds custom shop items for certain NPCs.
* The 4th script "4-db_admin" is also optional, but recommended if you are new. It adds an admin account to simplify the setup.
Use this info when you connect to MySQL Server for the first time: Use this info when you connect to MySQL Server for the first time:
* Server Host: localhost * Server Host: localhost
* Port: 3306 * Port: 3306
* Username: root * Username: root
* Password: whatever you entered in during the installation of MySQL Server * Password: <whatever password you set during MySQL Server installation>
At the end of the execution of these sql scripts, you should have installed a database schema named "cosmic". At the end of the execution of these sql scripts, you should have installed a database schema named "cosmic".
REGISTER YOUR FIRST ACCOUNT to be used in-game by **manually creating** an entry in the table "accounts" in the database with a username and password. REGISTER YOUR FIRST ACCOUNT to be used in-game by **manually creating** an entry in the table "accounts" in the database with a username and password.
@@ -173,7 +174,7 @@ Alternatively, you can use the IP given by Hamachi to use on a Hamachi network,
To launch the server, you may either: To launch the server, you may either:
* Launch inside IntelliJ * Launch inside IntelliJ
* Launch a jar file * Launch a built jar file
* Launch with Docker * Launch with Docker
#### Launch inside IntelliJ #### Launch inside IntelliJ
@@ -185,17 +186,25 @@ To launch the server, you may either:
#### Launch a jar file #### Launch a jar file
1. Create the jar file 1. Create the jar file
* The jar file is created by the Maven assembly plugin in the package lifecycle. * The jar file is created by the Maven assembly plugin in the package lifecycle.
* If you have Maven installed on your computer, simply run the command "mvn clean install" to create the jar file. * If you already have Maven installed, simply run the command "mvn clean install" to create the jar file.
* IntelliJ also comes with built in Maven support. Open a new terminal window inside IntelliJ, type "mvn clean install" (your command should be marked green), then Ctrl+Enter to create the jar file. * IntelliJ also comes with built-in Maven support. Open a new terminal window inside IntelliJ, type "mvn clean install" (your command should now be marked green), then Ctrl+Enter to build the jar file.
2. Launch the jar file 2. Launch the jar file
* Double click on "launch.bat" * Double click on "launch.bat"
#### Launch with Docker #### Launch with Docker
Run the command "docker compose up" at the root of the project. 1. Start Docker
2. Run the command "docker compose up" at the root of the project.
* If you make any changes to the code, make sure you append the "--build" option at the end of the command to force rebuild the server image.
--- ---
### Creating an account and logging into the game ### Creating an account and logging into the game
If you ran the admin sql script, there already exists an account in your database with an admin character on it. You don't need to change its GM level. Log in using these credentials:
* Username: "admin"
* Password: "admin"
* Pin: "0000"
* Pic: "000000"
By default, the server source is set to allow AUTO-REGISTERING. This means that, by simply typing in a "Login ID" and a "Password", you're able to create a new account. By default, the server source is set to allow AUTO-REGISTERING. This means that, by simply typing in a "Login ID" and a "Password", you're able to create a new account.
After creating a character, experiment typing in all-chat "@commands". After creating a character, experiment typing in all-chat "@commands".
@@ -260,10 +269,6 @@ Besides myself for maintaining this repository, credits are to be given to Wizet
Regarding distributability and usage of the code presented here: like it was before, this MapleStory server is open-source. By that, it is meant that anyone is **free to install, use, modify and redistribute the contents**, as long as there is **no kind of commercial trading involved** and the **credits to the original creators are maintained** within the codes. Regarding distributability and usage of the code presented here: like it was before, this MapleStory server is open-source. By that, it is meant that anyone is **free to install, use, modify and redistribute the contents**, as long as there is **no kind of commercial trading involved** and the **credits to the original creators are maintained** within the codes.
This server source should be built and run on Java 8 in order to run properly -- used to be ran in Java 7, thanks kolakcc (Familiar) for the Java 8 support!
Consider using an IDE for setting up the server source into a project. Once mounted the project, build it on your machine and run the server using the "launch.bat" application.
In this project, many gameplay-wise issues generated from either the original WZ files and the server source have been partially or completely solved. Considering the use of the provided edited WZ's and server-side wz.xml files should be of the greatest importance when dealing with this instance of server source, in order to perceive it at it's full potential. My opinion, though! In this project, many gameplay-wise issues generated from either the original WZ files and the server source have been partially or completely solved. Considering the use of the provided edited WZ's and server-side wz.xml files should be of the greatest importance when dealing with this instance of server source, in order to perceive it at it's full potential. My opinion, though!
- In other case, as fallback from the provided ones, consider using **whole clean set**. Selecting part of the provided ones to play pretty much *may eventually* lead to unexpected issues. - In other case, as fallback from the provided ones, consider using **whole clean set**. Selecting part of the provided ones to play pretty much *may eventually* lead to unexpected issues.
@@ -289,17 +294,6 @@ By taking the v83 MapleStory as the angular stone, incrementally look forward to
--- ---
#### Preparing the ambient
For Hamachi:
* Try opening it. It's that simple.
Hamachi is optional, though. You don't have to install Hamachi if you want to make the server just for use on your own machine.
However, if you want to let other players access your server, consider alternatively using port-forwarding methods.
---
#### The MobBookUpdate example #### The MobBookUpdate example
As an example of client WZ editing, consider the MapleMobBookUpdate tool project I developed, it updates all reported drop data on the Monster Book with what is currently being hold on the database: As an example of client WZ editing, consider the MapleMobBookUpdate tool project I developed, it updates all reported drop data on the Monster Book with what is currently being hold on the database:
@@ -350,12 +344,8 @@ Our Discord channel is still available on: https://discord.gg/Q7wKxHX
<hr id="donate" /> <hr id="donate" />
[//]: <> (If you REALLY liked what you have seen on this project, please feel free to donate a little something as a helping hand for my contributions towards Maple development. Also remember to **support Nexon**!)
### Disclaimer ### Disclaimer
[//]: <> (* HeavenMS development is decisively __ONLY accepting donations__ from the Paypal link aforementioned, in the __ronancpl/HeavenMS__ repository readme \(no patreons or other revenue resources\).)
* HeavenMS staff has __no current intention__ to publicly open a server with this source, if that ever comes to happen this note will be lifted. __Don't be scammed!__ * HeavenMS staff has __no current intention__ to publicly open a server with this source, if that ever comes to happen this note will be lifted. __Don't be scammed!__
* This server source is __NOT intended to be stable__ as is. Proper deadlock review and other maintenance contributions are needed in order to make it steps ahead on viability. * This server source is __NOT intended to be stable__ as is. Proper deadlock review and other maintenance contributions are needed in order to make it steps ahead on viability.

View File

@@ -166,7 +166,7 @@ server:
DB_HOST: "localhost" DB_HOST: "localhost"
DB_USER: "cosmic_server" DB_USER: "cosmic_server"
DB_PASS: "snailshell" DB_PASS: "snailshell"
INIT_CONNECTION_POOL_TIMEOUT: 60 # Seconds INIT_CONNECTION_POOL_TIMEOUT: 90 # Seconds
#Login Configuration #Login Configuration
WORLDS: 1 #Initial number of worlds on the server. WORLDS: 1 #Initial number of worlds on the server.

3
database/docker-db-data/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
*
*/
!.gitignore

View File

@@ -20299,8 +20299,6 @@ USE `cosmic`;
(5130106, 2022001, 1, 1, 0, 20000), (5130106, 2022001, 1, 1, 0, 20000),
(6130102, 2022001, 1, 1, 0, 20000), (6130102, 2022001, 1, 1, 0, 20000),
(6130103, 2022001, 1, 1, 0, 20000), (6130103, 2022001, 1, 1, 0, 20000),
(6130200, 2022001, 1, 1, 0, 20000),
(6130201, 2022001, 1, 1, 0, 20000),
(2220000, 1322001, 1, 1, 0, 8000), (2220000, 1322001, 1, 1, 0, 8000),
(9400551, 4031447, 1, 1, 0, 999999); (9400551, 4031447, 1, 1, 0, 999999);

View File

@@ -0,0 +1,87 @@
-- MySQL dump 10.13 Distrib 8.0.22, for Win64 (x86_64)
--
-- Host: 127.0.0.1 Database: cosmic
-- ------------------------------------------------------
-- Server version 8.0.19
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
USE `cosmic`;
--
-- Dumping data for table `accounts`
--
LOCK TABLES `accounts` WRITE;
/*!40000 ALTER TABLE `accounts` DISABLE KEYS */;
INSERT INTO `accounts` VALUES (1,'admin','$2y$12$aFD9BDeUocDMY1X4tDYDyeJw/HhkQwCQWs3KAY7gCaRG0cpqJcaL.','0000','000000',0,'2021-05-24 00:00:01','2021-05-24 00:00:02','2005-05-11',0,NULL,NULL,1000000,1000000,1000000,3,0,'2005-05-11 03:00:00',0,1,NULL,0,NULL,0,NULL,NULL,0,0,'1234-5678',2);
/*!40000 ALTER TABLE `accounts` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `characters`
--
LOCK TABLES `characters` WRITE;
/*!40000 ALTER TABLE `characters` DISABLE KEYS */;
INSERT INTO `characters` VALUES (1,1,0,'Admin',1,0,0,12,5,4,4,50,5,50,5,0,0,0,0,0,0,0,30030,20000,0,'0,0,0,0,0,0,0,0,0,0',10000,2,6,-1,25,'2021-05-24 00:00:03',1,0,1,0,0,5,0,4,1,0,0,0,0,0,0,0,0,0,0,24,24,24,24,-1,0,5,0,0,0,0,0,0,0,0,0,0,0,'','2021-05-24 00:00:04','2015-01-01 05:00:00',1,0);
/*!40000 ALTER TABLE `characters` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `inventoryequipment`
--
LOCK TABLES `inventoryequipment` WRITE;
/*!40000 ALTER TABLE `inventoryequipment` DISABLE KEYS */;
INSERT INTO `inventoryequipment` VALUES (17,22,7,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1,0,-1),(18,23,7,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,-1),(19,24,5,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,-1),(20,25,7,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,1,0,-1);
/*!40000 ALTER TABLE `inventoryequipment` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `inventoryitems`
--
LOCK TABLES `inventoryitems` WRITE;
/*!40000 ALTER TABLE `inventoryitems` DISABLE KEYS */;
INSERT INTO `inventoryitems` VALUES (21,1,1,NULL,4161001,4,1,1,'',-1,0,-1,''),(22,1,1,NULL,1040002,-1,-5,1,'',-1,0,-1,''),(23,1,1,NULL,1060002,-1,-6,1,'',-1,0,-1,''),(24,1,1,NULL,1072001,-1,-7,1,'',-1,0,-1,''),(25,1,1,NULL,1302000,-1,-11,1,'',-1,0,-1,'');
/*!40000 ALTER TABLE `inventoryitems` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `keymap`
--
LOCK TABLES `keymap` WRITE;
/*!40000 ALTER TABLE `keymap` DISABLE KEYS */;
INSERT INTO `keymap` VALUES (161,1,18,4,0),(162,1,65,6,106),(163,1,2,4,10),(164,1,23,4,1),(165,1,3,4,12),(166,1,4,4,13),(167,1,5,4,18),(168,1,6,4,24),(169,1,16,4,8),(170,1,17,4,5),(171,1,19,4,4),(172,1,25,4,19),(173,1,26,4,14),(174,1,27,4,15),(175,1,31,4,2),(176,1,34,4,17),(177,1,35,4,11),(178,1,37,4,3),(179,1,38,4,20),(180,1,40,4,16),(181,1,43,4,9),(182,1,44,5,50),(183,1,45,5,51),(184,1,46,4,6),(185,1,50,4,7),(186,1,56,5,53),(187,1,59,6,100),(188,1,60,6,101),(189,1,61,6,102),(190,1,62,6,103),(191,1,63,6,104),(192,1,64,6,105),(193,1,57,5,54),(194,1,48,4,22),(195,1,29,5,52),(196,1,7,4,21),(197,1,24,4,25),(198,1,33,4,26),(199,1,41,4,23),(200,1,39,4,27);
/*!40000 ALTER TABLE `keymap` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `storages`
--
LOCK TABLES `storages` WRITE;
/*!40000 ALTER TABLE `storages` DISABLE KEYS */;
INSERT INTO `storages` VALUES (1,1,0,4,0);
/*!40000 ALTER TABLE `storages` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

7
database/sql/readme.txt Normal file
View File

@@ -0,0 +1,7 @@
---- Cosmic MySQL Database ----
These SQL files must be executed IN ORDER to set up the database:
- 1-db_database.sql (Tables and some data)
- 2-db_drops.sql (Remaining data: monster drops, reactor drops)
- 3-db_shopupdate.sql (Custom shops - optional, requires provided WZs)
- 4-db_admin (Basic admin account - optional)

View File

@@ -5,8 +5,18 @@ services:
depends_on: depends_on:
- db - db
ports: ports:
# Login server
- "8484:8484" - "8484:8484"
# Channels.
# Format: WWCC, where WW is 75 plus the world number and CC is 75 plus the channel number (both zero indexed).
# In this case, world 1 channels 1-3.
- "7575-7577:7575-7577" - "7575-7577:7575-7577"
volumes:
# Config changes can be reloaded without rebuilding the image.
# Still requires a redeployment as they're sourced on startup.
- ./config.yaml:/opt/server/config.yaml
- ./scripts:/opt/server/scripts
- ./wz:/opt/server/wz
environment: environment:
DB_HOST: "db" DB_HOST: "db"
@@ -18,5 +28,5 @@ services:
MYSQL_USER: "cosmic_server" MYSQL_USER: "cosmic_server"
MYSQL_PASSWORD: "snailshell" MYSQL_PASSWORD: "snailshell"
volumes: volumes:
- ./docker-db-data:/var/lib/mysql - ./database/docker-db-data:/var/lib/mysql
- ./sql:/docker-entrypoint-initdb.d - ./database/sql:/docker-entrypoint-initdb.d

31
pom.xml
View File

@@ -12,23 +12,25 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source> <java.version>16</java.version>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<mainClass>net.server.Server</mainClass> <mainClass>net.server.Server</mainClass>
<log4j.version>2.14.1</log4j.version> <log4j.version>2.14.1</log4j.version>
<graalvm.version>21.1.0</graalvm.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.zaxxer</groupId> <groupId>com.zaxxer</groupId>
<artifactId>HikariCP-java7</artifactId> <artifactId>HikariCP</artifactId>
<version>2.4.13</version> <version>4.0.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.mina</groupId> <groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId> <artifactId>mina-core</artifactId>
<version>2.0.19</version> <version>2.1.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
@@ -38,7 +40,12 @@
<dependency> <dependency>
<groupId>com.esotericsoftware.yamlbeans</groupId> <groupId>com.esotericsoftware.yamlbeans</groupId>
<artifactId>yamlbeans</artifactId> <artifactId>yamlbeans</artifactId>
<version>1.13</version> <version>1.15</version>
</dependency>
<dependency>
<groupId>net.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
<version>1.0</version>
</dependency> </dependency>
<!-- Logging --> <!-- Logging -->
@@ -62,6 +69,18 @@
<artifactId>log4j-slf4j-impl</artifactId> <artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version> <version>${log4j.version}</version>
</dependency> </dependency>
<!-- Scripting -->
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js</artifactId>
<version>${graalvm.version}</version>
</dependency>
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js-scriptengine</artifactId>
<version>${graalvm.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -12,14 +12,14 @@ var maxMapId;
var eventTime; // Max time allotted for the event, in minutes. var eventTime; // Max time allotted for the event, in minutes.
var lobbyRange = [0, 0]; // Range of concurrent lobbies (min range is 0, max range is 7). const maxLobbies = 7; // Max amount of concurrent active lobbies.
function init() { function init() {
// After loading, ChannelServer // After loading, ChannelServer
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {

View File

@@ -31,8 +31,6 @@ var timer2;
var timer3; var timer3;
var timer4; var timer4;
importPackage(Packages.client);
function init() { function init() {
/* /*
if(em.getChannelServer().getId() == 1) { // Only run on channel 1. if(em.getChannelServer().getId() == 1) { // Only run on channel 1.
@@ -58,15 +56,19 @@ function cancelSchedule() {
} }
function start() { function start() {
var world = Packages.net.server.Server.getInstance().getWorld(em.getChannelServer().getWorld()); const Server = Java.type('net.server.Server');
world.setExpRate(8); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
world.broadcastPacket(Packages.tools.MaplePacketCreator.serverNotice(6, "The Bunny Onslaught Survival Scanner (BOSS) has detected an Easter Bunny onslaught soon! The GM team has activated the Emergency XP Pool (EXP) that doubles experience gained for the next two hours!")); var world = Server.getInstance().getWorld(em.getChannelServer().getWorld());
world.setExpRate(8);
world.broadcastPacket(MaplePacketCreator.serverNotice(6, "The Bunny Onslaught Survival Scanner (BOSS) has detected an Easter Bunny onslaught soon! The GM team has activated the Emergency XP Pool (EXP) that doubles experience gained for the next two hours!"));
} }
function stop() { function stop() {
var world = Packages.net.server.Server.getInstance().getWorld(em.getChannelServer().getWorld()); const Server = Java.type('net.server.Server');
world.setExpRate(4); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
world.broadcastPacket(Packages.tools.MaplePacketCreator.serverNotice(6, "Unfortunately the Emergency XP Pool (EXP) has run out of juice for now and needs to recharge causing the EXP rate to go back to normal.")); var world = Server.getInstance().getWorld(em.getChannelServer().getWorld());
world.setExpRate(4);
world.broadcastPacket(MaplePacketCreator.serverNotice(6, "Unfortunately the Emergency XP Pool (EXP) has run out of juice for now and needs to recharge causing the EXP rate to go back to normal."));
} }
// ---------- FILLER FUNCTIONS ---------- // ---------- FILLER FUNCTIONS ----------

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* 3rd Job Event - Bowman * 3rd Job Event - Bowman
**/ **/
importPackage(Packages.tools);
var entryMap = 108010100; var entryMap = 108010100;
var exitMap = 105040305; var exitMap = 105040305;
@@ -31,10 +30,10 @@ var maxMapId = 108010101;
var eventTime = 20; //20 minutes var eventTime = 20; //20 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* 3rd Job Event - Magician * 3rd Job Event - Magician
**/ **/
importPackage(Packages.tools);
var entryMap = 108010200; var entryMap = 108010200;
var exitMap = 100040106; var exitMap = 100040106;
@@ -31,10 +30,10 @@ var maxMapId = 108010201;
var eventTime = 20; //20 minutes var eventTime = 20; //20 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* 3rd Job Event - Kenta's Mount Quest * 3rd Job Event - Kenta's Mount Quest
**/ **/
importPackage(Packages.tools);
var entryMap = 923010000; var entryMap = 923010000;
var exitMap = 923010100; var exitMap = 923010100;
@@ -33,10 +32,10 @@ var eventMaps = [923010000];
var eventTime = 5; //5 minutes var eventTime = 5; //5 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -84,7 +83,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* 3rd Job Event - Pirate * 3rd Job Event - Pirate
**/ **/
importPackage(Packages.tools);
var entryMap = 108010500; var entryMap = 108010500;
var exitMap = 105070200; var exitMap = 105070200;
@@ -31,10 +30,10 @@ var maxMapId = 108010501;
var eventTime = 20; //20 minutes var eventTime = 20; //20 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -46,7 +45,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* 3rd Job Event - Thief * 3rd Job Event - Thief
**/ **/
importPackage(Packages.tools);
var entryMap = 108010400; var entryMap = 108010400;
var exitMap = 107000402; var exitMap = 107000402;
@@ -31,10 +30,10 @@ var maxMapId = 108010401;
var eventTime = 20; //20 minutes var eventTime = 20; //20 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* 3rd Job Event - Warrior * 3rd Job Event - Warrior
**/ **/
importPackage(Packages.tools);
var entryMap = 108010300; var entryMap = 108010300;
var exitMap = 105070001; var exitMap = 105070001;
@@ -31,10 +30,10 @@ var maxMapId = 108010301;
var eventTime = 20; //20 minutes var eventTime = 20; //20 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -30,10 +30,10 @@ var maxMapId = 912020000;
var eventTime = 2; //2 minutes var eventTime = 2; //2 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {

View File

@@ -30,10 +30,10 @@ var maxMapId = 912010200;
var eventTime = 4; //4 minutes var eventTime = 4; //4 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {

View File

@@ -30,10 +30,10 @@ var maxMapId = 912010200;
var eventTime = 4; //4 minutes var eventTime = 4; //4 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {

View File

@@ -1,5 +1,3 @@
importPackage(Packages.tools);
var KC_bfd; var KC_bfd;
var Plane_to_CBD; var Plane_to_CBD;
var CBD_docked; var CBD_docked;

View File

@@ -37,14 +37,14 @@ var maxMapId = 670010800;
var eventTime = 75; // 75 minutes var eventTime = 75; // 75 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -107,7 +107,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers && mask == 3)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers && mask == 3)) eligible = [];
if(onlyMarriedPlayers && hasNotMarried) eligible = []; if(onlyMarriedPlayers && hasNotMarried) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -147,8 +147,11 @@ function setup(level, lobbyid) {
eim.getInstanceMap(670010800).shuffleReactors(); eim.getInstanceMap(670010800).shuffleReactors();
var mapObj = eim.getInstanceMap(670010700); var mapObj = eim.getInstanceMap(670010700);
var mobObj = Packages.server.life.MapleLifeFactory.getMonster(9400536);
mapObj.spawnMonsterOnGroundBelow(mobObj, new Packages.java.awt.Point(942, 478)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var mobObj = MapleLifeFactory.getMonster(9400536);
mapObj.spawnMonsterOnGroundBelow(mobObj, new Point(942, 478));
respawnStages(eim); respawnStages(eim);

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* Event - Scadur's Mount Quest * Event - Scadur's Mount Quest
**/ **/
importPackage(Packages.tools);
var entryMap = 921110000; var entryMap = 921110000;
var exitMap = 211050000; var exitMap = 211050000;
@@ -31,10 +30,10 @@ var maxMapId = 921110000;
var eventTime = 3; //3 minutes var eventTime = 3; //3 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -60,7 +59,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 2); player.changeMap(entryMap, 2);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* Event - Wolves' Mount Quest * Event - Wolves' Mount Quest
**/ **/
importPackage(Packages.tools);
var entryMap = 914030000; var entryMap = 914030000;
var exitMap = 140010210; var exitMap = 140010210;
@@ -31,10 +30,10 @@ var maxMapId = 914030000;
var eventTime = 3; //3 minutes var eventTime = 3; //3 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -61,7 +60,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 1); player.changeMap(entryMap, 1);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -40,16 +40,19 @@ function cancelSchedule() {
} }
function start() { function start() {
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var mapObj = em.getChannelServer().getMapFactory().getMap(800020120); // original mapid was 251010101 var mapObj = em.getChannelServer().getMapFactory().getMap(800020120); // original mapid was 251010101
var mobObj = Packages.server.life.MapleLifeFactory.getMonster(6090002); var mobObj = MapleLifeFactory.getMonster(6090002);
if(mapObj.getMonsterById(6090002) != null) { if(mapObj.getMonsterById(6090002) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
mapObj.spawnMonsterOnGroundBelow(mobObj, new Packages.java.awt.Point(560, 50)); const Point = Java.type('java.awt.Point');
mapObj.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "From amongst the ruins shrouded by the mists, Bamboo Warrior appears.")); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
mapObj.spawnMonsterOnGroundBelow(mobObj, new Point(560, 50));
mapObj.broadcastMessage(MaplePacketCreator.serverNotice(6, "From amongst the ruins shrouded by the mists, Bamboo Warrior appears."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -41,15 +41,19 @@ function cancelSchedule() {
function start() { function start() {
var herbGarden = em.getChannelServer().getMapFactory().getMap(251010102); var herbGarden = em.getChannelServer().getMapFactory().getMap(251010102);
var gcent = Packages.server.life.MapleLifeFactory.getMonster(5220004);
if(herbGarden.getMonsterById(5220004) != null) { if(herbGarden.getMonsterById(5220004) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
herbGarden.spawnMonsterOnGroundBelow(gcent, new Packages.java.awt.Point(560, 50)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
herbGarden.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "From the mists surrounding the herb garden, the gargantuous Giant Centipede appears.")); const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var gcent = MapleLifeFactory.getMonster(5220004);
herbGarden.spawnMonsterOnGroundBelow(gcent, new Point(560, 50));
herbGarden.broadcastMessage(MaplePacketCreator.serverNotice(6, "From the mists surrounding the herb garden, the gargantuous Giant Centipede appears."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -41,15 +41,19 @@ function cancelSchedule() {
function start() { function start() {
var royalCatthusDesert = em.getChannelServer().getMapFactory().getMap(260010201); var royalCatthusDesert = em.getChannelServer().getMapFactory().getMap(260010201);
var deo = Packages.server.life.MapleLifeFactory.getMonster(3220001);
if(royalCatthusDesert.getMonsterById(3220001) != null) { if(royalCatthusDesert.getMonsterById(3220001) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
royalCatthusDesert.spawnMonsterOnGroundBelow(deo, new Packages.java.awt.Point(645, 275)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
royalCatthusDesert.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Deo slowly appeared out of the sand dust.")); const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var deo = MapleLifeFactory.getMonster(3220001);
royalCatthusDesert.spawnMonsterOnGroundBelow(deo, new Point(645, 275));
royalCatthusDesert.broadcastMessage(MaplePacketCreator.serverNotice(6, "Deo slowly appeared out of the sand dust."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -41,17 +41,21 @@ function start() {
var bossMobid = 9400610; var bossMobid = 9400610;
var bossMapid = 677000003; var bossMapid = 677000003;
var bossMsg = "Amdusias has appeared!"; var bossMsg = "Amdusias has appeared!";
var bossPos = new Packages.java.awt.Point(467, 0);
var map = em.getChannelServer().getMapFactory().getMap(bossMapid); var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
if (map.getMonsterById(bossMobid) != null) { if (map.getMonsterById(bossMobid) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
var boss = Packages.server.life.MapleLifeFactory.getMonster(bossMobid); const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var boss = MapleLifeFactory.getMonster(bossMobid);
var bossPos = new Point(467, 0);
map.spawnMonsterOnGroundBelow(boss, bossPos); map.spawnMonsterOnGroundBelow(boss, bossPos);
map.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg)); map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,17 +41,21 @@ function start() {
var bossMobid = 9400609; var bossMobid = 9400609;
var bossMapid = 677000005; var bossMapid = 677000005;
var bossMsg = "Andras has appeared!"; var bossMsg = "Andras has appeared!";
var bossPos = new Packages.java.awt.Point(201, 80);
var map = em.getChannelServer().getMapFactory().getMap(bossMapid); var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
if (map.getMonsterById(bossMobid) != null) { if (map.getMonsterById(bossMobid) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
var boss = Packages.server.life.MapleLifeFactory.getMonster(bossMobid); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var boss = MapleLifeFactory.getMonster(bossMobid);
var bossPos = new Point(201, 80);
map.spawnMonsterOnGroundBelow(boss, bossPos); map.spawnMonsterOnGroundBelow(boss, bossPos);
map.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg)); map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,17 +41,21 @@ function start() {
var bossMobid = 9400613; var bossMobid = 9400613;
var bossMapid = 677000009; var bossMapid = 677000009;
var bossMsg = "Valefor has appeared!"; var bossMsg = "Valefor has appeared!";
var bossPos = new Packages.java.awt.Point(251, -841);
var map = em.getChannelServer().getMapFactory().getMap(bossMapid); var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
if (map.getMonsterById(bossMobid) != null) { if (map.getMonsterById(bossMobid) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
var boss = Packages.server.life.MapleLifeFactory.getMonster(bossMobid); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var boss = MapleLifeFactory.getMonster(bossMobid);
var bossPos = new Point(251, -841);
map.spawnMonsterOnGroundBelow(boss, bossPos); map.spawnMonsterOnGroundBelow(boss, bossPos);
map.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg)); map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,17 +41,21 @@ function start() {
var bossMobid = 9400633; var bossMobid = 9400633;
var bossMapid = 677000012; var bossMapid = 677000012;
var bossMsg = "Astaroth has appeared!"; var bossMsg = "Astaroth has appeared!";
var bossPos = new Packages.java.awt.Point(842, 0);
var map = em.getChannelServer().getMapFactory().getMap(bossMapid); var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
if (map.getMonsterById(bossMobid) != null) { if (map.getMonsterById(bossMobid) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
var boss = Packages.server.life.MapleLifeFactory.getMonster(bossMobid); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var boss = MapleLifeFactory.getMonster(bossMobid);
var bossPos = new Point(842, 0);
map.spawnMonsterOnGroundBelow(boss, bossPos); map.spawnMonsterOnGroundBelow(boss, bossPos);
map.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg)); map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,17 +41,21 @@ function start() {
var bossMobid = 9400612; var bossMobid = 9400612;
var bossMapid = 677000001; var bossMapid = 677000001;
var bossMsg = "Marbas has appeared!"; var bossMsg = "Marbas has appeared!";
var bossPos = new Packages.java.awt.Point(461, 61);
var map = em.getChannelServer().getMapFactory().getMap(bossMapid); var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
if (map.getMonsterById(bossMobid) != null) { if (map.getMonsterById(bossMobid) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
var boss = Packages.server.life.MapleLifeFactory.getMonster(bossMobid); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var boss = MapleLifeFactory.getMonster(bossMobid);
var bossPos = new Point(461, 61);
map.spawnMonsterOnGroundBelow(boss, bossPos); map.spawnMonsterOnGroundBelow(boss, bossPos);
map.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg)); map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,17 +41,21 @@ function start() {
var bossMobid = 9400611; var bossMobid = 9400611;
var bossMapid = 677000007; var bossMapid = 677000007;
var bossMsg = "Crocell has appeared!"; var bossMsg = "Crocell has appeared!";
var bossPos = new Packages.java.awt.Point(171, 50);
var map = em.getChannelServer().getMapFactory().getMap(bossMapid); var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
if (map.getMonsterById(bossMobid) != null) { if (map.getMonsterById(bossMobid) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
var boss = Packages.server.life.MapleLifeFactory.getMonster(bossMobid); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var boss = MapleLifeFactory.getMonster(bossMobid);
var bossPos = new Point(171, 50);
map.spawnMonsterOnGroundBelow(boss, bossPos); map.spawnMonsterOnGroundBelow(boss, bossPos);
map.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg)); map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -26,8 +26,6 @@
ThreeStep - based on xQuasar's King Clang spawner ThreeStep - based on xQuasar's King Clang spawner
**/ **/
importPackage(Packages.server.life);
importPackage(Packages.tools);
function init() { function init() {
scheduleNew(); scheduleNew();
@@ -48,7 +46,12 @@ function start() {
setupTask = em.schedule("start", 3 * 60 * 60 * 1000); setupTask = em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
dangeroudCroko1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(6220000), new Packages.java.awt.Point(90, 119));
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
const Point = Java.type('java.awt.Point');
const spawnpoint = new Point(90, 119);
dangeroudCroko1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(6220000), spawnpoint);
dangeroudCroko1.broadcastMessage(MaplePacketCreator.serverNotice(6, "The huge crocodile Dyle has come out from the swamp.")); dangeroudCroko1.broadcastMessage(MaplePacketCreator.serverNotice(6, "The huge crocodile Dyle has come out from the swamp."));
setupTask = em.schedule("start", 3 * 60 * 60 * 1000); setupTask = em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
var setupTask; var setupTask;
function init() { function init() {
@@ -45,16 +43,20 @@ function cancelSchedule() {
} }
function start() { function start() {
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var eliza = MapleLifeFactory.getMonster(8220000);
var stairwayToTheSky2 = em.getChannelServer().getMapFactory().getMap(200010300); var stairwayToTheSky2 = em.getChannelServer().getMapFactory().getMap(200010300);
var eliza = Packages.server.life.MapleLifeFactory.getMonster(8220000);
if(stairwayToTheSky2.getMonsterById(8220000) != null) { if(stairwayToTheSky2.getMonsterById(8220000) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
stairwayToTheSky2.spawnMonsterOnGroundBelow(eliza, new Packages.java.awt.Point(208, 83)); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
stairwayToTheSky2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Eliza has appeared with a black whirlwind.")); const Point = Java.type('java.awt.Point');
const spawnpoint = new Point(208, 83);
stairwayToTheSky2.spawnMonsterOnGroundBelow(eliza, spawnpoint);
stairwayToTheSky2.broadcastMessage(MaplePacketCreator.serverNotice(6, "Eliza has appeared with a black whirlwind."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,15 +42,19 @@ function cancelSchedule() {
function start() { function start() {
var theForestOfEvil1 = em.getChannelServer().getMapFactory().getMap(100040105); var theForestOfEvil1 = em.getChannelServer().getMapFactory().getMap(100040105);
var faust1 = Packages.server.life.MapleLifeFactory.getMonster(5220002);
if(theForestOfEvil1.getMonsterById(5220002) != null) { if(theForestOfEvil1.getMonsterById(5220002) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
theForestOfEvil1.spawnMonsterOnGroundBelow(faust1, new Packages.java.awt.Point(456, 278)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
theForestOfEvil1.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog.")); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
const Point = Java.type('java.awt.Point');
var faust1 = MapleLifeFactory.getMonster(5220002);
const spawnpoint = new Point(456, 278);
theForestOfEvil1.spawnMonsterOnGroundBelow(faust1, spawnpoint);
theForestOfEvil1.broadcastMessage(MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -43,16 +41,21 @@ function cancelSchedule() {
} }
function start() { function start() {
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var theForestOfEvil2 = em.getChannelServer().getMapFactory().getMap(100040106); var theForestOfEvil2 = em.getChannelServer().getMapFactory().getMap(100040106);
var faust2 = Packages.server.life.MapleLifeFactory.getMonster(5220002); var faust2 = MapleLifeFactory.getMonster(5220002);
if(theForestOfEvil2.getMonsterById(5220002) != null) { if(theForestOfEvil2.getMonsterById(5220002) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
theForestOfEvil2.spawnMonsterOnGroundBelow(faust2, new Packages.java.awt.Point(474, 278)); const Point = Java.type('java.awt.Point');
theForestOfEvil2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog.")); const spawnpoint = new Point(474, 278);
theForestOfEvil2.spawnMonsterOnGroundBelow(faust2, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
theForestOfEvil2.broadcastMessage(MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -43,8 +41,9 @@ function cancelSchedule() {
} }
function start() { function start() {
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var labSecretBasementPath = em.getChannelServer().getMapFactory().getMap(261030000); var labSecretBasementPath = em.getChannelServer().getMapFactory().getMap(261030000);
var chimera = Packages.server.life.MapleLifeFactory.getMonster(8220002); var chimera = MapleLifeFactory.getMonster(8220002);
if(labSecretBasementPath.getMonsterById(8220002) != null) { if(labSecretBasementPath.getMonsterById(8220002) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
@@ -54,8 +53,12 @@ function start() {
var posX; var posX;
var posY = 180; var posY = 180;
posX = (Math.floor(Math.random() * 900) - 900); posX = (Math.floor(Math.random() * 900) - 900);
labSecretBasementPath.spawnMonsterOnGroundBelow(chimera, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
labSecretBasementPath.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Kimera has appeared out of the darkness of the underground with a glitter in her eyes.")); const spawnpoint = new Point(posX, posY);
labSecretBasementPath.spawnMonsterOnGroundBelow(chimera, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
labSecretBasementPath.broadcastMessage(MaplePacketCreator.serverNotice(6, "Kimera has appeared out of the darkness of the underground with a glitter in her eyes."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
var hotSand; var hotSand;
function init() { function init() {
@@ -50,12 +48,18 @@ function start() {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
} }
var kingClang = Packages.server.life.MapleLifeFactory.getMonster(5220001);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var kingClang = MapleLifeFactory.getMonster(5220001);
var posX; var posX;
var posY = 140; var posY = 140;
posX = Math.floor((Math.random() * 2400) - 1600); posX = Math.floor((Math.random() * 2400) - 1600);
hotSand.spawnMonsterOnGroundBelow(kingClang, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
hotSand.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A strange turban shell has appeared on the beach.")); const spawnpoint = new Point(posX, posY);
hotSand.spawnMonsterOnGroundBelow(kingClang, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
hotSand.broadcastMessage(MaplePacketCreator.serverNotice(6, "A strange turban shell has appeared on the beach."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,7 +42,8 @@ function cancelSchedule() {
function start() { function start() {
var goblinForest2 = em.getChannelServer().getMapFactory().getMap(250010504); var goblinForest2 = em.getChannelServer().getMapFactory().getMap(250010504);
var kingSageCat = Packages.server.life.MapleLifeFactory.getMonster(7220002); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var kingSageCat = MapleLifeFactory.getMonster(7220002);
if(goblinForest2.getMonsterById(7220002) != null) { if(goblinForest2.getMonsterById(7220002) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
@@ -53,8 +52,12 @@ function start() {
var posX; var posX;
var posY = 540; var posY = 540;
posX = Math.floor((Math.random() * 1300) - 500); posX = Math.floor((Math.random() * 1300) - 500);
goblinForest2.spawnMonsterOnGroundBelow(kingSageCat, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
goblinForest2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "The ghostly air around here has become stronger. The unpleasant sound of a cat crying can be heard.")); const spawnpoint = new Point(posX, posY);
goblinForest2.spawnMonsterOnGroundBelow(kingSageCat, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
goblinForest2.broadcastMessage(MaplePacketCreator.serverNotice(6, "The ghostly air around here has become stronger. The unpleasant sound of a cat crying can be heard."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,7 +42,8 @@ function cancelSchedule() {
function start() { function start() {
var leviathansCanyon = em.getChannelServer().getMapFactory().getMap(240040401); var leviathansCanyon = em.getChannelServer().getMapFactory().getMap(240040401);
var leviathan = Packages.server.life.MapleLifeFactory.getMonster(8220003); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var leviathan = MapleLifeFactory.getMonster(8220003);
if(leviathansCanyon.getMonsterById(8220003) != null) { if(leviathansCanyon.getMonsterById(8220003) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
@@ -53,8 +52,12 @@ function start() {
var posX; var posX;
var posY = 1125; var posY = 1125;
posX = Math.floor((Math.random() * 600) - 300); posX = Math.floor((Math.random() * 600) - 300);
leviathansCanyon.spawnMonsterOnGroundBelow(leviathan, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
leviathansCanyon.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Leviathan emerges from the canyon and the cold icy wind blows.")); const spawnpoint = new Point(posX, posY);
leviathansCanyon.spawnMonsterOnGroundBelow(leviathan, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
leviathansCanyon.broadcastMessage(MaplePacketCreator.serverNotice(6, "Leviathan emerges from the canyon and the cold icy wind blows."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -26,8 +26,6 @@
ThreeStep - based on xQuasar's King Clang spawner ThreeStep - based on xQuasar's King Clang spawner
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -43,14 +41,19 @@ function cancelSchedule() {
function start() { function start() {
var thicketAroundTheBeach3 = em.getChannelServer().getMapFactory().getMap(104000400); var thicketAroundTheBeach3 = em.getChannelServer().getMapFactory().getMap(104000400);
var mano = Packages.server.life.MapleLifeFactory.getMonster(2220000); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var mano = MapleLifeFactory.getMonster(2220000);
if(thicketAroundTheBeach3.getMonsterById(2220000) != null) { if(thicketAroundTheBeach3.getMonsterById(2220000) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
thicketAroundTheBeach3.spawnMonsterOnGroundBelow(mano, new Packages.java.awt.Point(279, -496)); const Point = Java.type('java.awt.Point');
thicketAroundTheBeach3.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A cool breeze was felt when Mano appeared.")); const spawnpoint = new Point(279, -496);
thicketAroundTheBeach3.spawnMonsterOnGroundBelow(mano, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
thicketAroundTheBeach3.broadcastMessage(MaplePacketCreator.serverNotice(6, "A cool breeze was felt when Mano appeared."));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,7 +42,8 @@ function cancelSchedule() {
function start() { function start() {
var moonRidge = em.getChannelServer().getMapFactory().getMap(222010310); var moonRidge = em.getChannelServer().getMapFactory().getMap(222010310);
var nineTailedFox = Packages.server.life.MapleLifeFactory.getMonster(7220001); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var nineTailedFox = MapleLifeFactory.getMonster(7220001);
if(moonRidge.getMonsterById(7220001) != null) { if(moonRidge.getMonsterById(7220001) != null) {
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
return; return;
@@ -52,8 +51,12 @@ function start() {
var posX; var posX;
var posY = 33; var posY = 33;
posX = Math.floor((Math.random() * 1300) - 800); posX = Math.floor((Math.random() * 1300) - 800);
moonRidge.spawnMonsterOnGroundBelow(nineTailedFox, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
moonRidge.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "As the moon light dims, a long fox cry can be heard and the presence of the old fox can be felt")); const spawnpoint = new Point(posX, posY);
moonRidge.spawnMonsterOnGroundBelow(nineTailedFox, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
moonRidge.broadcastMessage(MaplePacketCreator.serverNotice(6, "As the moon light dims, a long fox cry can be heard and the presence of the old fox can be felt"));
em.schedule("start", 3 * 60 *60 * 1000); em.schedule("start", 3 * 60 *60 * 1000);
} }

View File

@@ -28,8 +28,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -45,7 +43,8 @@ function cancelSchedule() {
function start() { function start() {
var theSeaweedTower = em.getChannelServer().getMapFactory().getMap(230020100); var theSeaweedTower = em.getChannelServer().getMapFactory().getMap(230020100);
var seruf = Packages.server.life.MapleLifeFactory.getMonster(4220001); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var seruf = MapleLifeFactory.getMonster(4220001);
if(theSeaweedTower.getMonsterById(4220001) != null) { if(theSeaweedTower.getMonsterById(4220001) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
@@ -55,8 +54,12 @@ function start() {
var posX; var posX;
var posY = 520; var posY = 520;
posX = Math.floor((Math.random() * 2300) - 1500); posX = Math.floor((Math.random() * 2300) - 1500);
theSeaweedTower.spawnMonsterOnGroundBelow(seruf, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
theSeaweedTower.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A strange shell has appeared from a grove of seaweed")); const spawnpoint = new Point(posX, posY);
theSeaweedTower.spawnMonsterOnGroundBelow(seruf, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
theSeaweedTower.broadcastMessage(MaplePacketCreator.serverNotice(6, "A strange shell has appeared from a grove of seaweed"));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,19 +41,23 @@ function cancelSchedule() {
function start() { function start() {
var snackBarMap = em.getChannelServer().getMapFactory().getMap(105090310); var snackBarMap = em.getChannelServer().getMapFactory().getMap(105090310);
var snackBar = Packages.server.life.MapleLifeFactory.getMonster(8220008);
if (snackBarMap.getMonsterById(8220008) != null || snackBarMap.getMonsterById(8220009) != null) {
if(snackBarMap.getMonsterById(8220008) != null || snackBarMap.getMonsterById(8220009) != null) { em.schedule("start", 3 * 60 * 60 * 1000);
em.schedule("start", 3 * 60 * 60 * 1000); return;
return; }
}
var setPos = [[-626, -604], [735, -600]];
var setPos = [[-626, -604], [735, -600]]; var rndPos = setPos[Math.floor(Math.random() * setPos.length)];
var rndPos = setPos[Math.floor(Math.random() * setPos.length)];
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
snackBarMap.spawnMonsterOnGroundBelow(snackBar, new Packages.java.awt.Point(rndPos[0], rndPos[1])); const Point = Java.type('java.awt.Point');
snackBarMap.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Slowly, a suspicious food stand opens up on a strangely remote place.")); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
em.schedule("start", 3 * 60 *60 * 1000);
var snackBar = MapleLifeFactory.getMonster(8220008);
snackBarMap.spawnMonsterOnGroundBelow(snackBar, new Point(rndPos[0], rndPos[1]));
snackBarMap.broadcastMessage(MaplePacketCreator.serverNotice(6, "Slowly, a suspicious food stand opens up on a strangely remote place."));
em.schedule("start", 3 * 60 * 60 * 1000);
} }
// ---------- FILLER FUNCTIONS ---------- // ---------- FILLER FUNCTIONS ----------

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,7 +42,8 @@ function cancelSchedule() {
function start() { function start() {
var eastRockyMountain5 = em.getChannelServer().getMapFactory().getMap(101030404); var eastRockyMountain5 = em.getChannelServer().getMapFactory().getMap(101030404);
var stumpy = Packages.server.life.MapleLifeFactory.getMonster(3220000); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var stumpy = MapleLifeFactory.getMonster(3220000);
if(eastRockyMountain5.getMonsterById(3220000) != null) { if(eastRockyMountain5.getMonsterById(3220000) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
@@ -54,8 +53,12 @@ function start() {
var posX; var posX;
var posY = 1280; var posY = 1280;
posX = Math.floor((Math.random() * 800) + 400); posX = Math.floor((Math.random() * 800) + 400);
eastRockyMountain5.spawnMonsterOnGroundBelow(stumpy, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
eastRockyMountain5.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Stumpy has appeared with a stumping sound that rings the Stone Mountain.")); const spawnpoint = new Point(posX, posY);
eastRockyMountain5.spawnMonsterOnGroundBelow(stumpy, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
eastRockyMountain5.broadcastMessage(MaplePacketCreator.serverNotice(6, "Stumpy has appeared with a stumping sound that rings the Stone Mountain."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,7 +42,8 @@ function cancelSchedule() {
function start() { function start() {
var territoryOfWanderingBear = em.getChannelServer().getMapFactory().getMap(250010304); var territoryOfWanderingBear = em.getChannelServer().getMapFactory().getMap(250010304);
var taeRoon = Packages.server.life.MapleLifeFactory.getMonster(7220000); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var taeRoon = MapleLifeFactory.getMonster(7220000);
if(territoryOfWanderingBear.getMonsterById(7220000) != null) { if(territoryOfWanderingBear.getMonsterById(7220000) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
@@ -54,8 +53,12 @@ function start() {
var posX; var posX;
var posY = 390; var posY = 390;
posX = Math.floor((Math.random() * 700) - 800); posX = Math.floor((Math.random() * 700) - 800);
territoryOfWanderingBear.spawnMonsterOnGroundBelow(taeRoon, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
territoryOfWanderingBear.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tae Roon has appeared with a soft whistling sound.")); const spawnpoint = new Point(posX, posY);
territoryOfWanderingBear.spawnMonsterOnGroundBelow(taeRoon, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
territoryOfWanderingBear.broadcastMessage(MaplePacketCreator.serverNotice(6, "Tae Roon has appeared with a soft whistling sound."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -26,8 +26,6 @@
ThreeStep - based on xQuasar's King Clang spawner ThreeStep - based on xQuasar's King Clang spawner
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -43,7 +41,8 @@ function cancelSchedule() {
function start() { function start() {
var whirlpoolOfTime = em.getChannelServer().getMapFactory().getMap(220050100); var whirlpoolOfTime = em.getChannelServer().getMapFactory().getMap(220050100);
var timer1 = Packages.server.life.MapleLifeFactory.getMonster(5220003); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var timer1 = MapleLifeFactory.getMonster(5220003);
if(whirlpoolOfTime.getMonsterById(5220003) != null) { if(whirlpoolOfTime.getMonsterById(5220003) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
@@ -53,8 +52,12 @@ function start() {
var posX; var posX;
var posY = 1030; var posY = 1030;
posX = Math.floor((Math.random() * 770) - 770); posX = Math.floor((Math.random() * 770) - 770);
whirlpoolOfTime.spawnMonsterOnGroundBelow(timer1, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
whirlpoolOfTime.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known.")); const spawnpoint = new Point(posX, posY);
whirlpoolOfTime.spawnMonsterOnGroundBelow(timer1, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
whirlpoolOfTime.broadcastMessage(MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -27,8 +27,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -44,7 +42,8 @@ function cancelSchedule() {
function start() { function start() {
var lostTime1 = em.getChannelServer().getMapFactory().getMap(220050000); var lostTime1 = em.getChannelServer().getMapFactory().getMap(220050000);
var timer2 = Packages.server.life.MapleLifeFactory.getMonster(5220003); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var timer2 = MapleLifeFactory.getMonster(5220003);
if(lostTime1.getMonsterById(5220003) != null) { if(lostTime1.getMonsterById(5220003) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
@@ -54,8 +53,12 @@ function start() {
var posX; var posX;
var posY = 1030; var posY = 1030;
posX = Math.floor((Math.random() * 1400) - 1000); posX = Math.floor((Math.random() * 1400) - 1000);
lostTime1.spawnMonsterOnGroundBelow(timer2, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
lostTime1.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known.")); const spawnpoint = new Point(posX, posY);
lostTime1.spawnMonsterOnGroundBelow(timer2, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
lostTime1.broadcastMessage(MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -28,8 +28,6 @@
**/ **/
importPackage(Packages.client);
function init() { function init() {
scheduleNew(); scheduleNew();
} }
@@ -45,7 +43,8 @@ function cancelSchedule() {
function start() { function start() {
var lostTime2 = em.getChannelServer().getMapFactory().getMap(220050200); var lostTime2 = em.getChannelServer().getMapFactory().getMap(220050200);
var timer3 = Packages.server.life.MapleLifeFactory.getMonster(5220003); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var timer3 = MapleLifeFactory.getMonster(5220003);
if(lostTime2.getMonsterById(5220003) != null) { if(lostTime2.getMonsterById(5220003) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
@@ -55,8 +54,12 @@ function start() {
var posX; var posX;
var posY = 1030; var posY = 1030;
posX = Math.floor((Math.random() * 1400) - 700); posX = Math.floor((Math.random() * 1400) - 700);
lostTime2.spawnMonsterOnGroundBelow(timer3, new Packages.java.awt.Point(posX, posY)); const Point = Java.type('java.awt.Point');
lostTime2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known.")); const spawnpoint = new Point(posX, posY);
lostTime2.spawnMonsterOnGroundBelow(timer3, spawnpoint);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
lostTime2.broadcastMessage(MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -41,15 +41,19 @@ function cancelSchedule() {
function start() { function start() {
var graysPrairie = em.getChannelServer().getMapFactory().getMap(221040301); var graysPrairie = em.getChannelServer().getMapFactory().getMap(221040301);
var zeno = Packages.server.life.MapleLifeFactory.getMonster(6220001);
if(graysPrairie.getMonsterById(6220001) != null) { if(graysPrairie.getMonsterById(6220001) != null) {
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
return; return;
} }
graysPrairie.spawnMonsterOnGroundBelow(zeno, new Packages.java.awt.Point(-4224, 776)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
graysPrairie.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Zeno has appeared with a heavy sound of machinery.")); const Point = Java.type('java.awt.Point');
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
var zeno = MapleLifeFactory.getMonster(6220001);
graysPrairie.spawnMonsterOnGroundBelow(zeno, new Point(-4224, 776));
graysPrairie.broadcastMessage(MaplePacketCreator.serverNotice(6, "Zeno has appeared with a heavy sound of machinery."));
em.schedule("start", 3 * 60 * 60 * 1000); em.schedule("start", 3 * 60 * 60 * 1000);
} }

View File

@@ -23,8 +23,6 @@
* @event: Vs Balrog * @event: Vs Balrog
*/ */
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 6, maxPlayers = 30; var minPlayers = 6, maxPlayers = 30;
var minLevel = 50, maxLevel = 255; var minLevel = 50, maxLevel = 255;
@@ -43,14 +41,14 @@ var bossMobId = 8830003;
var eventTime = 60; // 60 minutes var eventTime = 60; // 60 minutes
var releaseClawTime = 1; var releaseClawTime = 1;
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -105,7 +103,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -136,14 +134,17 @@ function releaseLeftClaw(eim) {
function spawnBalrog(eim) { function spawnBalrog(eim) {
var mapObj = eim.getInstanceMap(entryMap); var mapObj = eim.getInstanceMap(entryMap);
mapObj.spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830000), new Packages.java.awt.Point(412, 258)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830002), new Packages.java.awt.Point(412, 258)); const Point = Java.type('java.awt.Point');
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830006), new Packages.java.awt.Point(412, 258)); mapObj.spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830000), new Point(412, 258));
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830002), new Point(412, 258));
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830006), new Point(412, 258));
} }
function spawnSealedBalrog(eim) { function spawnSealedBalrog(eim) {
eim.getInstanceMap(entryMap).spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(bossMobId), new Packages.java.awt.Point(412, 258)); const Point = Java.type('java.awt.Point');
eim.getInstanceMap(entryMap).spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(bossMobId), new Point(412, 258));
} }
function playerEntry(eim, player) { function playerEntry(eim, player) {

View File

@@ -23,8 +23,6 @@
* @event: Vs Balrog * @event: Vs Balrog
*/ */
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 30; var minPlayers = 3, maxPlayers = 30;
var minLevel = 50, maxLevel = 255; var minLevel = 50, maxLevel = 255;
@@ -43,14 +41,14 @@ var bossMobId = 8830010;
var eventTime = 60; // 60 minutes var eventTime = 60; // 60 minutes
var releaseClawTime = 1; var releaseClawTime = 1;
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -105,7 +103,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -136,14 +134,17 @@ function releaseLeftClaw(eim) {
function spawnBalrog(eim) { function spawnBalrog(eim) {
var mapObj = eim.getInstanceMap(entryMap); var mapObj = eim.getInstanceMap(entryMap);
mapObj.spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830007), new Packages.java.awt.Point(412, 258)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830009), new Packages.java.awt.Point(412, 258)); const Point = Java.type('java.awt.Point');
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830013), new Packages.java.awt.Point(412, 258)); mapObj.spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830007), new Point(412, 258));
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830009), new Point(412, 258));
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830013), new Point(412, 258));
} }
function spawnSealedBalrog(eim) { function spawnSealedBalrog(eim) {
eim.getInstanceMap(entryMap).spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(bossMobId), new Packages.java.awt.Point(412, 258)); const Point = Java.type('java.awt.Point');
eim.getInstanceMap(entryMap).spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(bossMobId), new Point(412, 258));
} }
function playerEntry(eim, player) { function playerEntry(eim, player) {

View File

@@ -21,7 +21,6 @@
* @Author Ronan * @Author Ronan
* Event - Balrog Quest * Event - Balrog Quest
**/ **/
importPackage(Packages.tools);
var entryMap = 910520000; var entryMap = 910520000;
var exitMap = 105100100; var exitMap = 105100100;
@@ -31,10 +30,10 @@ var maxMapId = 910520000;
var eventTime = 10; //10 minutes var eventTime = 10; //10 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function init() { function init() {
@@ -63,7 +62,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 1); player.changeMap(entryMap, 1);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }
@@ -96,7 +96,8 @@ function isBalrog(mob) {
function monsterKilled(mob, eim) { function monsterKilled(mob, eim) {
if(isBalrog(mob)) { if(isBalrog(mob)) {
eim.spawnNpc(1061015, new java.awt.Point(0, 115), mob.getMap()); const Point = Java.type('java.awt.Point');
eim.spawnNpc(1061015, new Point(0, 115), mob.getMap());
} }
} }
function monsterValue(eim, mobId) { function monsterValue(eim, mobId) {

View File

@@ -1,7 +1,3 @@
importPackage(Packages.client);
importPackage(Packages.tools);
importPackage(Packages.server.life);
var Orbis_btf; var Orbis_btf;
var Boat_to_Orbis; var Boat_to_Orbis;
var Orbis_Boat_Cabin; var Orbis_Boat_Cabin;
@@ -64,7 +60,9 @@ function takeoff() {
em.setProperty("docked","false"); em.setProperty("docked","false");
if(Math.random() < 0.42) em.schedule("approach", (invasionStartTime + (Math.random() * invasionDelayTime))); if (Math.random() < 0.42) {
em.schedule("approach", (invasionStartTime + Math.trunc((Math.random() * invasionDelayTime))));
}
em.schedule("arrived", rideTime); em.schedule("arrived", rideTime);
} }
@@ -88,6 +86,7 @@ function approach() {
em.setProperty("haveBalrog","true"); em.setProperty("haveBalrog","true");
Boat_to_Orbis.broadcastEnemyShip(true); Boat_to_Orbis.broadcastEnemyShip(true);
Boat_to_Ellinia.broadcastEnemyShip(true); Boat_to_Ellinia.broadcastEnemyShip(true);
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate")); Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate")); Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
@@ -96,6 +95,8 @@ function approach() {
} }
function invasion() { function invasion() {
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var map1 = Boat_to_Ellinia; var map1 = Boat_to_Ellinia;
var pos1 = new java.awt.Point(-538, 143); var pos1 = new java.awt.Point(-538, 143);
map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1); map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1);

View File

@@ -36,14 +36,14 @@ var maxMapId = 970042711;
var eventTime = 5; //5 minutes var eventTime = 5; //5 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -117,7 +117,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -36,14 +36,14 @@ var maxMapId = 610030800;
var eventTime = 2; // 2 minutes for first stg var eventTime = 2; // 2 minutes for first stg
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {

View File

@@ -39,8 +39,6 @@
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
**/ **/
importPackage(Packages.tools);
var Orbis_btf; var Orbis_btf;
var Leafre_btf; var Leafre_btf;
var Cabin_to_Orbis; var Cabin_to_Orbis;

View File

@@ -23,8 +23,6 @@
* @event: Cafe PQ 1 * @event: Cafe PQ 1
*/ */
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 120; var minLevel = 21, maxLevel = 120;
@@ -40,14 +38,14 @@ var eventMaps = [190000000, 190000001, 190000002];
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var couponsNeeded = 400; // total of coupons to complete the event var couponsNeeded = 400; // total of coupons to complete the event
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -102,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
if(eim.isEventCleared()) return; if(eim.isEventCleared()) return;
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob)); var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);

View File

@@ -23,8 +23,6 @@
* @event: Cafe PQ 2 * @event: Cafe PQ 2
*/ */
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 120; var minLevel = 21, maxLevel = 120;
@@ -40,14 +38,14 @@ var eventMaps = [191000000, 191000001];
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var couponsNeeded = 350; // total of coupons to complete the event var couponsNeeded = 350; // total of coupons to complete the event
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -102,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
if(eim.isEventCleared()) return; if(eim.isEventCleared()) return;
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob)); var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);

View File

@@ -23,8 +23,6 @@
* @event: Cafe PQ 3 * @event: Cafe PQ 3
*/ */
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 120; var minLevel = 21, maxLevel = 120;
@@ -40,14 +38,14 @@ var eventMaps = [192000000, 192000001];
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var couponsNeeded = 350; // total of coupons to complete the event var couponsNeeded = 350; // total of coupons to complete the event
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -102,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
if(eim.isEventCleared()) return; if(eim.isEventCleared()) return;
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob)); var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);

View File

@@ -23,8 +23,6 @@
* @event: Cafe PQ 4 * @event: Cafe PQ 4
*/ */
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 120; var minLevel = 21, maxLevel = 120;
@@ -40,14 +38,14 @@ var eventMaps = [195000000, 195010000, 195020000, 195030000];
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var couponsNeeded = 450; // total of coupons to complete the event var couponsNeeded = 450; // total of coupons to complete the event
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -102,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
if(eim.isEventCleared()) return; if(eim.isEventCleared()) return;
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob)); var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);

View File

@@ -23,8 +23,6 @@
* @event: Cafe PQ 5 * @event: Cafe PQ 5
*/ */
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 120; var minLevel = 21, maxLevel = 120;
@@ -40,14 +38,14 @@ var eventMaps = [196000000, 196010000];
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var couponsNeeded = 500; // total of coupons to complete the event var couponsNeeded = 500; // total of coupons to complete the event
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -102,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
if(eim.isEventCleared()) return; if(eim.isEventCleared()) return;
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob)); var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);

View File

@@ -23,8 +23,6 @@
* @event: Cafe PQ 6 * @event: Cafe PQ 6
*/ */
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 120; var minLevel = 21, maxLevel = 120;
@@ -40,14 +38,14 @@ var eventMaps = [197000000, 197010000];
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var couponsNeeded = 300; // total of coupons to complete the event var couponsNeeded = 300; // total of coupons to complete the event
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -102,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
if(eim.isEventCleared()) return; if(eim.isEventCleared()) return;
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(4001007, 0, 1); var itemObj = new Item(4001007, 0, 1);
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);

View File

@@ -35,14 +35,14 @@ var maxMapId = 925010300;
var eventTime = 6; // 6 minutes var eventTime = 6; // 6 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -80,7 +80,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -22,7 +22,6 @@
/** /**
*Dollhouse Event *Dollhouse Event
**/ **/
importPackage(Packages.tools);
var entryMap = 922000010; var entryMap = 922000010;
var exitMap = 221024400; var exitMap = 221024400;
@@ -46,7 +45,8 @@ function playerEntry(eim, player) {
player.changeMap(entryMap, 0); player.changeMap(entryMap, 0);
em.setProperty("noEntry","true"); em.setProperty("noEntry","true");
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60)); player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
} }

View File

@@ -36,14 +36,14 @@ var maxMapId = 922020100;
var eventTime = 20; // 20 minutes var eventTime = 20; // 20 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -100,7 +100,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -36,14 +36,14 @@ var maxMapId = 930000800;
var eventTime = 30; // 30 minutes var eventTime = 30; // 30 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -90,7 +90,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -35,14 +35,14 @@ var maxMapId = 921100300;
var eventTime = 10; // 10 minutes var eventTime = 10; // 10 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -80,7 +80,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -19,7 +19,6 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
importPackage(Packages.tools);
var Orbis_btf; var Orbis_btf;
var Genie_to_Orbis; var Genie_to_Orbis;

View File

@@ -38,14 +38,14 @@ var waitTime = 3; // 3 minutes
var eventTime = 90; // 90 minutes var eventTime = 90; // 90 minutes
var bonusTime = 0.5; // 30 seconds var bonusTime = 0.5; // 30 seconds
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -112,7 +112,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader)) eligible = []; if(!(hasLeader)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -1,5 +1,3 @@
importPackage(Packages.tools);
var returnTo = new Array(200000141, 250000100); var returnTo = new Array(200000141, 250000100);
var rideTo = new Array(250000100, 200000141); var rideTo = new Array(250000100, 200000141);
var birdRide = new Array(200090300, 200090310); var birdRide = new Array(200090300, 200090310);
@@ -33,7 +31,8 @@ function playerEntry(eim, player) {
returnMap = eim.getMapFactory().getMap(returnTo[myRide]); returnMap = eim.getMapFactory().getMap(returnTo[myRide]);
onRide = eim.getMapFactory().getMap(birdRide[myRide]); onRide = eim.getMapFactory().getMap(birdRide[myRide]);
player.changeMap(onRide, onRide.getPortal(0)); player.changeMap(onRide, onRide.getPortal(0));
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000)); player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000));
eim.schedule("timeOut", rideTime); eim.schedule("timeOut", rideTime);
} }

View File

@@ -36,14 +36,14 @@ var maxMapId = 910010400;
var eventTime = 10; // 10 minutes var eventTime = 10; // 10 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -249,8 +249,9 @@ function friendlyItemDrop(eim, mob) {
if (mob.getId() == 9300061) { if (mob.getId() == 9300061) {
var cakes = eim.getIntProperty("bunnyCake") + 1; var cakes = eim.getIntProperty("bunnyCake") + 1;
eim.setIntProperty("bunnyCake", cakes); eim.setIntProperty("bunnyCake", cakes);
mob.getMap().broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "The Moon Bunny made rice cake number " + cakes + ".")); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
mob.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny made rice cake number " + cakes + "."));
} }
} }
@@ -258,7 +259,8 @@ function friendlyDamaged(eim, mob) {
if (mob.getId() == 9300061) { if (mob.getId() == 9300061) {
var bunnyDamage = eim.getIntProperty("bunnyDamaged") + 1; var bunnyDamage = eim.getIntProperty("bunnyDamaged") + 1;
if (bunnyDamage > 5) { if (bunnyDamage > 5) {
broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "The Moon Bunny is feeling sick. Please protect it so it can make delicious rice cakes.")); const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny is feeling sick. Please protect it so it can make delicious rice cakes."));
eim.setIntProperty("bunnyDamaged", 0); eim.setIntProperty("bunnyDamaged", 0);
} }
} }

View File

@@ -25,9 +25,6 @@
// GMS-like event string data thanks to iHealForLove // GMS-like event string data thanks to iHealForLove
importPackage(Packages.client.inventory);
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 21, maxLevel = 30; var minLevel = 21, maxLevel = 30;
@@ -41,14 +38,14 @@ var maxMapId = 889100001;
var eventTime = 15; // 15 minutes var eventTime = 15; // 15 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -113,7 +110,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -277,6 +274,7 @@ function monsterKilled(mob, eim) {
} }
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item((forceDrop || Math.random() < 0.77) ? 4032094 : 4032095, 0, 1); // 77% chance of not fake var itemObj = new Item((forceDrop || Math.random() < 0.77) ? 4032094 : 4032095, 0, 1); // 77% chance of not fake
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);
@@ -305,9 +303,11 @@ function snowmanEvolve(eim, curLevel) {
eim.setIntProperty("snowmanLevel", curLevel + 2); // increment by 2 to decrement by 1 on friendlyKilled eim.setIntProperty("snowmanLevel", curLevel + 2); // increment by 2 to decrement by 1 on friendlyKilled
mapobj.killMonster(snowman, null, false, 2); mapobj.killMonster(snowman, null, false, 2);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var snowman = MapleLifeFactory.getMonster(9400317 + (5 * difficulty) + curLevel); var snowman = MapleLifeFactory.getMonster(9400317 + (5 * difficulty) + curLevel);
mapobj.spawnMonsterOnGroundBelow(snowman, new java.awt.Point(-180, 15)); mapobj.spawnMonsterOnGroundBelow(snowman, new Point(-180, 15));
if(curLevel >= 4) { if(curLevel >= 4) {
mapobj.allowSummonState(false); mapobj.allowSummonState(false);

View File

@@ -25,9 +25,6 @@
// GMS-like event string data thanks to iHealForLove // GMS-like event string data thanks to iHealForLove
importPackage(Packages.client.inventory);
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 31, maxLevel = 40; var minLevel = 31, maxLevel = 40;
@@ -41,14 +38,14 @@ var maxMapId = 889100011;
var eventTime = 20; // 20 minutes var eventTime = 20; // 20 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -113,7 +110,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -277,6 +274,7 @@ function monsterKilled(mob, eim) {
} }
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item((forceDrop || Math.random() < 0.77) ? 4032094 : 4032095, 0, 1); // 77% chance of not fake var itemObj = new Item((forceDrop || Math.random() < 0.77) ? 4032094 : 4032095, 0, 1); // 77% chance of not fake
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);
@@ -305,9 +303,11 @@ function snowmanEvolve(eim, curLevel) {
eim.setIntProperty("snowmanLevel", curLevel + 2); // increment by 2 to decrement by 1 on friendlyKilled eim.setIntProperty("snowmanLevel", curLevel + 2); // increment by 2 to decrement by 1 on friendlyKilled
mapobj.killMonster(snowman, null, false, 2); mapobj.killMonster(snowman, null, false, 2);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var snowman = MapleLifeFactory.getMonster(9400317 + (5 * difficulty) + curLevel); var snowman = MapleLifeFactory.getMonster(9400317 + (5 * difficulty) + curLevel);
mapobj.spawnMonsterOnGroundBelow(snowman, new java.awt.Point(-180, 15)); mapobj.spawnMonsterOnGroundBelow(snowman, new Point(-180, 15));
if(curLevel >= 4) { if(curLevel >= 4) {
mapobj.allowSummonState(false); mapobj.allowSummonState(false);

View File

@@ -25,9 +25,6 @@
// GMS-like event string data thanks to iHealForLove // GMS-like event string data thanks to iHealForLove
importPackage(Packages.client.inventory);
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 3, maxPlayers = 6; var minPlayers = 3, maxPlayers = 6;
var minLevel = 41, maxLevel = 50; var minLevel = 41, maxLevel = 50;
@@ -41,14 +38,14 @@ var maxMapId = 889100021;
var eventTime = 25; // 25 minutes var eventTime = 25; // 25 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -113,7 +110,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -277,6 +274,7 @@ function monsterKilled(mob, eim) {
} }
var mapObj = mob.getMap(); var mapObj = mob.getMap();
const Item = Java.type('client.inventory.Item');
var itemObj = new Item((forceDrop || Math.random() < 0.77) ? 4032094 : 4032095, 0, 1); // 77% chance of not fake var itemObj = new Item((forceDrop || Math.random() < 0.77) ? 4032094 : 4032095, 0, 1); // 77% chance of not fake
var dropper = eim.getPlayers().get(0); var dropper = eim.getPlayers().get(0);
@@ -305,9 +303,11 @@ function snowmanEvolve(eim, curLevel) {
eim.setIntProperty("snowmanLevel", curLevel + 2); // increment by 2 to decrement by 1 on friendlyKilled eim.setIntProperty("snowmanLevel", curLevel + 2); // increment by 2 to decrement by 1 on friendlyKilled
mapobj.killMonster(snowman, null, false, 2); mapobj.killMonster(snowman, null, false, 2);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var snowman = MapleLifeFactory.getMonster(9400317 + (5 * difficulty) + curLevel); var snowman = MapleLifeFactory.getMonster(9400317 + (5 * difficulty) + curLevel);
mapobj.spawnMonsterOnGroundBelow(snowman, new java.awt.Point(-180, 15)); mapobj.spawnMonsterOnGroundBelow(snowman, new Point(-180, 15));
if(curLevel >= 4) { if(curLevel >= 4) {
mapobj.allowSummonState(false); mapobj.allowSummonState(false);

View File

@@ -23,8 +23,6 @@
* @event: Horntail Battle * @event: Horntail Battle
*/ */
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 6, maxPlayers = 30; var minPlayers = 6, maxPlayers = 30;
var minLevel = 100, maxLevel = 255; var minLevel = 100, maxLevel = 255;
@@ -38,14 +36,14 @@ var maxMapId = 240060200;
var eventTime = 120; // 120 minutes var eventTime = 120; // 120 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -97,15 +95,17 @@ function setup(channel) {
eim.getInstanceMap(240060000).resetPQ(level); eim.getInstanceMap(240060000).resetPQ(level);
eim.getInstanceMap(240060100).resetPQ(level); eim.getInstanceMap(240060100).resetPQ(level);
eim.getInstanceMap(240060200).resetPQ(level); eim.getInstanceMap(240060200).resetPQ(level);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var map, mob; var map, mob;
map = eim.getInstanceMap(240060000); map = eim.getInstanceMap(240060000);
mob = MapleLifeFactory.getMonster(8810000); mob = MapleLifeFactory.getMonster(8810000);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(960, 120)); map.spawnMonsterOnGroundBelow(mob, new Point(960, 120));
map = eim.getInstanceMap(240060100); map = eim.getInstanceMap(240060100);
mob = MapleLifeFactory.getMonster(8810001); mob = MapleLifeFactory.getMonster(8810001);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(-420, 120)); map.spawnMonsterOnGroundBelow(mob, new Point(-420, 120));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
setEventRewards(eim); setEventRewards(eim);

View File

@@ -36,14 +36,14 @@ var maxMapId = 240050310;
var eventTime = 25; // 25 minutes var eventTime = 25; // 25 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -36,14 +36,14 @@ var maxMapId = 103000805;
var eventTime = 30; // 30 minutes var eventTime = 30; // 30 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -1,5 +1,3 @@
importPackage(Packages.tools);
var returnTo = new Array(103000100, 103000310); var returnTo = new Array(103000100, 103000310);
var rideTo = new Array(103000310, 103000100); var rideTo = new Array(103000310, 103000100);
var trainRide = new Array(103000301, 103000302); var trainRide = new Array(103000301, 103000302);
@@ -34,7 +32,8 @@ function playerEntry(eim, player) {
returnMap = eim.getMapFactory().getMap(returnTo[myRide]); returnMap = eim.getMapFactory().getMap(returnTo[myRide]);
onRide = eim.getMapFactory().getMap(trainRide[myRide]); onRide = eim.getMapFactory().getMap(trainRide[myRide]);
player.changeMap(onRide, onRide.getPortal(0)); player.changeMap(onRide, onRide.getPortal(0));
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000)); player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000));
player.getClient().announce(MaplePacketCreator.earnTitleMessage("The next stop is at Kerning " + (myRide == 0 ? "Square" : "Subway") + " Station. The exit is to your left.")); player.getClient().announce(MaplePacketCreator.earnTitleMessage("The next stop is at Kerning " + (myRide == 0 ? "Square" : "Subway") + " Station. The exit is to your left."));
eim.schedule("timeOut", rideTime); eim.schedule("timeOut", rideTime);

View File

@@ -36,14 +36,14 @@ var maxMapId = 541010100;
var eventTime = 10; // 10 minutes var eventTime = 10; // 10 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -36,14 +36,14 @@ var maxMapId = 809050016;
var eventTime = 15; // 15 minutes var eventTime = 15; // 15 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -36,14 +36,14 @@ var maxMapId = 922011100;
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -1,6 +1,3 @@
importPackage(Packages.tools);
importPackage(Packages.server.life);
var eventTime = 10 * 60 * 1000; // 10 minutes var eventTime = 10 * 60 * 1000; // 10 minutes
var entryMap = 106021600; var entryMap = 106021600;
var exitMap = 106021402; var exitMap = 106021402;
@@ -34,7 +31,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(difficulty, lobbyId){ function setup(difficulty, lobbyId){
@@ -66,7 +63,9 @@ function respawn(eim){
var weddinghall = eim.getMapInstance(entryMap); var weddinghall = eim.getMapInstance(entryMap);
weddinghall.getPortal(1).setPortalState(false); weddinghall.getPortal(1).setPortalState(false);
weddinghall.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(292, 143)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
weddinghall.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new Point(292, 143));
} else { } else {
eim.schedule("respawn", 10000); eim.schedule("respawn", 10000);
} }

View File

@@ -1,6 +1,3 @@
importPackage(Packages.tools);
importPackage(Packages.server.life);
var eventTime = 10 * 60 * 1000; // 10 minutes var eventTime = 10 * 60 * 1000; // 10 minutes
var entryMap = 106021601; var entryMap = 106021601;
var exitMap = 106021402; var exitMap = 106021402;
@@ -34,7 +31,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(difficulty, lobbyId){ function setup(difficulty, lobbyId){
@@ -57,7 +54,9 @@ function respawn(eim){
var weddinghall = eim.getMapInstance(entryMap); var weddinghall = eim.getMapInstance(entryMap);
weddinghall.getPortal(1).setPortalState(false); weddinghall.getPortal(1).setPortalState(false);
weddinghall.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new java.awt.Point(292, 143)); const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
weddinghall.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), new Point(292, 143));
} else { } else {
eim.schedule("respawn", 10000); eim.schedule("respawn", 10000);
} }

View File

@@ -23,8 +23,6 @@
* @event: Magatia PQ (Alcadno) * @event: Magatia PQ (Alcadno)
*/ */
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 4, maxPlayers = 4; var minPlayers = 4, maxPlayers = 4;
var minLevel = 71, maxLevel = 85; var minLevel = 71, maxLevel = 85;
@@ -38,14 +36,14 @@ var maxMapId = 926110600;
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -100,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -144,11 +142,12 @@ function setup(level, lobbyid) {
eim.getInstanceMap(926110201).shuffleReactors(2518000, 2612004); eim.getInstanceMap(926110201).shuffleReactors(2518000, 2612004);
eim.getInstanceMap(926110202).shuffleReactors(2518000, 2612004); eim.getInstanceMap(926110202).shuffleReactors(2518000, 2612004);
eim.spawnNpc(2112010, new java.awt.Point(252, 243), eim.getInstanceMap(926110203)); const Point = Java.type('java.awt.Point');
eim.spawnNpc(2112010, new java.awt.Point(200, 100), eim.getInstanceMap(926110401)); eim.spawnNpc(2112010, new Point(252, 243), eim.getInstanceMap(926110203));
eim.spawnNpc(2112011, new java.awt.Point(200, 100), eim.getInstanceMap(926110500)); eim.spawnNpc(2112010, new Point(200, 100), eim.getInstanceMap(926110401));
eim.spawnNpc(2112018, new java.awt.Point(200, 100), eim.getInstanceMap(926110600)); eim.spawnNpc(2112011, new Point(200, 100), eim.getInstanceMap(926110500));
eim.spawnNpc(2112018, new Point(200, 100), eim.getInstanceMap(926110600));
respawnStages(eim); respawnStages(eim);
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
@@ -245,15 +244,17 @@ function respawnStages(eim) {
var mapobj = eim.getMapInstance(926110401); var mapobj = eim.getMapInstance(926110401);
var mobcount = mapobj.countMonster(9300150); var mobcount = mapobj.countMonster(9300150);
var mobobj; var mobobj;
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
if(mobcount == 0) { if(mobcount == 0) {
mobobj = MapleLifeFactory.getMonster(9300150); mobobj = MapleLifeFactory.getMonster(9300150);
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-278, -126)); mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-278, -126));
mobobj = MapleLifeFactory.getMonster(9300150); mobobj = MapleLifeFactory.getMonster(9300150);
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-542, -126)); mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-542, -126));
} else if(mobcount == 1) { } else if(mobcount == 1) {
mobobj = MapleLifeFactory.getMonster(9300150); mobobj = MapleLifeFactory.getMonster(9300150);
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-542, -126)); mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-542, -126));
} }
} }
@@ -311,14 +312,16 @@ function yuleteAction(eim) {
var mob1 = 9300143, mob2 = 9300144; var mob1 = 9300143, mob2 = 9300144;
mapobj.destroyNPC(2112010); mapobj.destroyNPC(2112010);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var mobobj1, mobobj2; var mobobj1, mobobj2;
for(var i = 0; i < 5; i++) { for(var i = 0; i < 5; i++) {
mobobj1 = MapleLifeFactory.getMonster(mob1); mobobj1 = MapleLifeFactory.getMonster(mob1);
mobobj2 = MapleLifeFactory.getMonster(mob2); mobobj2 = MapleLifeFactory.getMonster(mob2);
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(-455, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(-455, 135));
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(-455, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(-455, 135));
} }
@@ -326,8 +329,8 @@ function yuleteAction(eim) {
mobobj1 = MapleLifeFactory.getMonster(mob1); mobobj1 = MapleLifeFactory.getMonster(mob1);
mobobj2 = MapleLifeFactory.getMonster(mob2); mobobj2 = MapleLifeFactory.getMonster(mob2);
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(0, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(0, 135));
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(0, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(0, 135));
} }
@@ -335,8 +338,8 @@ function yuleteAction(eim) {
mobobj1 = MapleLifeFactory.getMonster(mob1); mobobj1 = MapleLifeFactory.getMonster(mob1);
mobobj2 = MapleLifeFactory.getMonster(mob2); mobobj2 = MapleLifeFactory.getMonster(mob2);
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(360, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(360, 135));
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(360, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(360, 135));
} }
} }

View File

@@ -23,8 +23,6 @@
* @event: Magatia PQ (Zenumist) * @event: Magatia PQ (Zenumist)
*/ */
importPackage(Packages.server.life);
var isPq = true; var isPq = true;
var minPlayers = 4, maxPlayers = 4; var minPlayers = 4, maxPlayers = 4;
var minLevel = 71, maxLevel = 85; var minLevel = 71, maxLevel = 85;
@@ -38,14 +36,14 @@ var maxMapId = 926100600;
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -100,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -144,11 +142,12 @@ function setup(level, lobbyid) {
eim.getInstanceMap(926100201).shuffleReactors(2518000, 2612004); eim.getInstanceMap(926100201).shuffleReactors(2518000, 2612004);
eim.getInstanceMap(926100202).shuffleReactors(2518000, 2612004); eim.getInstanceMap(926100202).shuffleReactors(2518000, 2612004);
eim.spawnNpc(2112000, new java.awt.Point(252, 243), eim.getInstanceMap(926100203)); const Point = Java.type('java.awt.Point');
eim.spawnNpc(2112000, new java.awt.Point(200, 100), eim.getInstanceMap(926100401)); eim.spawnNpc(2112000, new Point(252, 243), eim.getInstanceMap(926100203));
eim.spawnNpc(2112001, new java.awt.Point(200, 100), eim.getInstanceMap(926100500)); eim.spawnNpc(2112000, new Point(200, 100), eim.getInstanceMap(926100401));
eim.spawnNpc(2112018, new java.awt.Point(200, 100), eim.getInstanceMap(926100600)); eim.spawnNpc(2112001, new Point(200, 100), eim.getInstanceMap(926100500));
eim.spawnNpc(2112018, new Point(200, 100), eim.getInstanceMap(926100600));
respawnStages(eim); respawnStages(eim);
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
@@ -245,15 +244,17 @@ function respawnStages(eim) {
var mapobj = eim.getMapInstance(926100401); var mapobj = eim.getMapInstance(926100401);
var mobcount = mapobj.countMonster(9300150); var mobcount = mapobj.countMonster(9300150);
var mobobj; var mobobj;
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
if(mobcount == 0) { if(mobcount == 0) {
mobobj = MapleLifeFactory.getMonster(9300150); mobobj = MapleLifeFactory.getMonster(9300150);
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-278, -126)); mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-278, -126));
mobobj = MapleLifeFactory.getMonster(9300150); mobobj = MapleLifeFactory.getMonster(9300150);
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-542, -126)); mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-542, -126));
} else if(mobcount == 1) { } else if(mobcount == 1) {
mobobj = MapleLifeFactory.getMonster(9300150); mobobj = MapleLifeFactory.getMonster(9300150);
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-542, -126)); mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-542, -126));
} }
} }
@@ -311,14 +312,16 @@ function yuleteAction(eim) {
var mob1 = 9300143, mob2 = 9300144; var mob1 = 9300143, mob2 = 9300144;
mapobj.destroyNPC(2112000); mapobj.destroyNPC(2112000);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var mobobj1, mobobj2; var mobobj1, mobobj2;
for(var i = 0; i < 5; i++) { for(var i = 0; i < 5; i++) {
mobobj1 = MapleLifeFactory.getMonster(mob1); mobobj1 = MapleLifeFactory.getMonster(mob1);
mobobj2 = MapleLifeFactory.getMonster(mob2); mobobj2 = MapleLifeFactory.getMonster(mob2);
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(-455, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(-455, 135));
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(-455, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(-455, 135));
} }
@@ -326,8 +329,8 @@ function yuleteAction(eim) {
mobobj1 = MapleLifeFactory.getMonster(mob1); mobobj1 = MapleLifeFactory.getMonster(mob1);
mobobj2 = MapleLifeFactory.getMonster(mob2); mobobj2 = MapleLifeFactory.getMonster(mob2);
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(0, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(0, 135));
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(0, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(0, 135));
} }
@@ -335,8 +338,8 @@ function yuleteAction(eim) {
mobobj1 = MapleLifeFactory.getMonster(mob1); mobobj1 = MapleLifeFactory.getMonster(mob1);
mobobj2 = MapleLifeFactory.getMonster(mob2); mobobj2 = MapleLifeFactory.getMonster(mob2);
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(360, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(360, 135));
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(360, 135)); mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(360, 135));
} }
} }

View File

@@ -33,7 +33,7 @@ var maxMapId = 914020000;
var eventTime = 10; // 10 minutes var eventTime = 10; // 10 minutes
var lobbyRange = [0, 7]; const maxLobbies = 7;
function init() {} function init() {}

View File

@@ -36,14 +36,14 @@ var maxMapId = 920011300;
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -36,14 +36,14 @@ var maxMapId = 220080001;
var eventTime = 45; // 45 minutes var eventTime = 45; // 45 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -98,7 +98,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -23,9 +23,6 @@
* @event: Pink Bean Battle * @event: Pink Bean Battle
*/ */
importPackage(Packages.server.life);
importPackage(Packages.client.inventory);
var isPq = true; var isPq = true;
var minPlayers = 6, maxPlayers = 30; var minPlayers = 6, maxPlayers = 30;
var minLevel = 120, maxLevel = 255; var minLevel = 120, maxLevel = 255;
@@ -39,14 +36,14 @@ var maxMapId = 270050300;
var eventTime = 140; // 140 minutes var eventTime = 140; // 140 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -104,10 +101,12 @@ function setup(channel) {
eim.getInstanceMap(270050100).resetPQ(level); eim.getInstanceMap(270050100).resetPQ(level);
eim.getInstanceMap(270050200).resetPQ(level); eim.getInstanceMap(270050200).resetPQ(level);
eim.getInstanceMap(270050300).resetPQ(level); eim.getInstanceMap(270050300).resetPQ(level);
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
const Point = Java.type('java.awt.Point');
var mob = MapleLifeFactory.getMonster(8820000); var mob = MapleLifeFactory.getMonster(8820000);
mob.disableDrops(); mob.disableDrops();
eim.getInstanceMap(270050100).spawnMonsterOnGroundBelow(mob, new java.awt.Point(0, -42)); eim.getInstanceMap(270050100).spawnMonsterOnGroundBelow(mob, new Point(0, -42));
eim.startEventTimer(eventTime * 60000); eim.startEventTimer(eventTime * 60000);
setEventRewards(eim); setEventRewards(eim);
@@ -234,7 +233,8 @@ function spawnJrBoss(mobObj, gotKilled) {
mobObj.getMap().killMonster(mobObj.getId()); mobObj.getMap().killMonster(mobObj.getId());
spawnid = mobObj.getId() - 17; spawnid = mobObj.getId() - 17;
} }
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
var mob = MapleLifeFactory.getMonster(spawnid); var mob = MapleLifeFactory.getMonster(spawnid);
mobObj.getMap().spawnMonsterOnGroundBelow(mob, mobObj.getPosition()); mobObj.getMap().spawnMonsterOnGroundBelow(mob, mobObj.getPosition());
} }
@@ -254,6 +254,7 @@ function monsterKilled(mob, eim) {
if(stage == 5) { if(stage == 5) {
var iid = 4001193; var iid = 4001193;
const Item = Java.type('client.inventory.Item');
var itemObj = new Item(iid, 0, 1); var itemObj = new Item(iid, 0, 1);
var mapObj = eim.getMapFactory().getMap(270050100); var mapObj = eim.getMapFactory().getMap(270050100);
var reactObj = mapObj.getReactorById(2708000); var reactObj = mapObj.getReactorById(2708000);

View File

@@ -38,14 +38,14 @@ var maxMapId = 925100500;
var eventTime = 4; // 4 minutes var eventTime = 4; // 4 minutes
var lobbyRange = [0, 0]; const maxLobbies = 1;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -90,7 +90,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {

View File

@@ -3,8 +3,6 @@
* @author: Ronan * @author: Ronan
*/ */
importPackage(Packages.tools);
var isPq = true; var isPq = true;
var minPlayers = 1, maxPlayers = 1; var minPlayers = 1, maxPlayers = 1;
var minLevel = 12, maxLevel = 255; var minLevel = 12, maxLevel = 255;
@@ -17,14 +15,14 @@ var maxMapId = 922240100;
var eventTime = 3; // 3 minutes var eventTime = 3; // 3 minutes
var lobbyRange = [0, 19]; const maxLobbies = 20;
function init() { function init() {
setEventRequirements(); setEventRequirements();
} }
function setLobbyRange() { function getMaxLobbies() {
return lobbyRange; return maxLobbies;
} }
function setEventRequirements() { function setEventRequirements() {
@@ -79,7 +77,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
} }
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = []; if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
return eligible; return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
} }
function setup(level, lobbyid) { function setup(level, lobbyid) {
@@ -102,7 +100,8 @@ function respawnStages(eim) {}
function playerEntry(eim, player) { function playerEntry(eim, player) {
var map = eim.getMapInstance(entryMap); var map = eim.getMapInstance(entryMap);
player.changeMap(map, map.getPortal(0)); player.changeMap(map, map.getPortal(0));
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
player.announce(MaplePacketCreator.showEffect("event/space/start")); player.announce(MaplePacketCreator.showEffect("event/space/start"));
player.startMapEffect("Please rescue Gaga within the time limit.", 5120027); player.startMapEffect("Please rescue Gaga within the time limit.", 5120027);
} }
@@ -199,7 +198,8 @@ function clearPQ(eim) {
} }
function spawnGrandpaBunny(eim) { function spawnGrandpaBunny(eim) {
eim.spawnNpc(9001105, new java.awt.Point(175, -20), eim.getInstanceMap(maxMapId)); const Point = Java.type('java.awt.Point');
eim.spawnNpc(9001105, new Point(175, -20), eim.getInstanceMap(maxMapId));
} }
function monsterKilled(mob, eim) {} function monsterKilled(mob, eim) {}

View File

@@ -19,8 +19,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
importPackage(Packages.tools);
var entryMap; var entryMap;
var exitMap; var exitMap;
var otherMap; var otherMap;

View File

@@ -19,8 +19,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
importPackage(Packages.tools);
var entryMap; var entryMap;
var exitMap; var exitMap;
var otherMap; var otherMap;

Some files were not shown because too many files have changed in this diff Show More