Merge remote-tracking branch 'upstream/master' into Custom-rebirth-npc
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
/docs
|
||||
/handbook
|
||||
/tools
|
||||
# Project administration files
|
||||
.idea
|
||||
.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
1
.gitignore
vendored
@@ -2,7 +2,6 @@
|
||||
.idea/
|
||||
*.iml
|
||||
/target
|
||||
/docker-db-data
|
||||
|
||||
# build files
|
||||
|
||||
|
||||
42
Dockerfile
42
Dockerfile
@@ -1,20 +1,42 @@
|
||||
# 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
|
||||
COPY src /home/app/src
|
||||
COPY pom.xml /home/app
|
||||
RUN mvn -f /home/app/pom.xml clean package
|
||||
FROM maven:3.8.1-openjdk-16 AS jar
|
||||
|
||||
# Build in a separated location which won't have permissions issues.
|
||||
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
|
||||
COPY --from=build /home/app/target/Cosmic.jar /usr/local/lib/Cosmic.jar
|
||||
COPY ./ ./
|
||||
FROM openjdk:16
|
||||
|
||||
# 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
|
||||
ENTRYPOINT ["java", "-jar", "/usr/local/lib/Cosmic.jar"]
|
||||
ENTRYPOINT ["java", "-jar", "./Server.jar"]
|
||||
|
||||
|
||||
|
||||
52
README.md
52
README.md
@@ -27,8 +27,8 @@ Discord: https://discord.gg/JU5aQapVZK
|
||||
---
|
||||
|
||||
## Tools
|
||||
* **Java 8 SDK**
|
||||
* Link: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
|
||||
* **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://jdk.java.net/16/
|
||||
|
||||
|
||||
* **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
|
||||
|
||||
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
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
* Make sure you are connected to the database with the "root" user.
|
||||
* Run scripts through the menu: "File" -> "Run SQL Script" -> select the script file to run -> "Run"
|
||||
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 to be able to run the scripts.
|
||||
* 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 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:
|
||||
* Server Host: localhost
|
||||
* Port: 3306
|
||||
* 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".
|
||||
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:
|
||||
* Launch inside IntelliJ
|
||||
* Launch a jar file
|
||||
* Launch a built jar file
|
||||
* Launch with Docker
|
||||
|
||||
#### Launch inside IntelliJ
|
||||
@@ -185,17 +186,25 @@ To launch the server, you may either:
|
||||
#### Launch a jar file
|
||||
1. Create the jar file
|
||||
* 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.
|
||||
* 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.
|
||||
* 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 now be marked green), then Ctrl+Enter to build the jar file.
|
||||
2. Launch the jar file
|
||||
* Double click on "launch.bat"
|
||||
|
||||
#### 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
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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 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
|
||||
|
||||
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" />
|
||||
|
||||
[//]: <> (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
|
||||
|
||||
[//]: <> (* 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!__
|
||||
|
||||
* 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.
|
||||
|
||||
@@ -166,7 +166,7 @@ server:
|
||||
DB_HOST: "localhost"
|
||||
DB_USER: "cosmic_server"
|
||||
DB_PASS: "snailshell"
|
||||
INIT_CONNECTION_POOL_TIMEOUT: 60 # Seconds
|
||||
INIT_CONNECTION_POOL_TIMEOUT: 90 # Seconds
|
||||
|
||||
#Login Configuration
|
||||
WORLDS: 1 #Initial number of worlds on the server.
|
||||
|
||||
3
database/docker-db-data/.gitignore
vendored
Normal file
3
database/docker-db-data/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*
|
||||
*/
|
||||
!.gitignore
|
||||
@@ -20299,8 +20299,6 @@ USE `cosmic`;
|
||||
(5130106, 2022001, 1, 1, 0, 20000),
|
||||
(6130102, 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),
|
||||
(9400551, 4031447, 1, 1, 0, 999999);
|
||||
|
||||
87
database/sql/4-db-admin.sql
Normal file
87
database/sql/4-db-admin.sql
Normal 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
7
database/sql/readme.txt
Normal 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)
|
||||
@@ -5,8 +5,18 @@ services:
|
||||
depends_on:
|
||||
- db
|
||||
ports:
|
||||
# Login server
|
||||
- "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"
|
||||
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:
|
||||
DB_HOST: "db"
|
||||
|
||||
@@ -18,5 +28,5 @@ services:
|
||||
MYSQL_USER: "cosmic_server"
|
||||
MYSQL_PASSWORD: "snailshell"
|
||||
volumes:
|
||||
- ./docker-db-data:/var/lib/mysql
|
||||
- ./sql:/docker-entrypoint-initdb.d
|
||||
- ./database/docker-db-data:/var/lib/mysql
|
||||
- ./database/sql:/docker-entrypoint-initdb.d
|
||||
|
||||
31
pom.xml
31
pom.xml
@@ -12,23 +12,25 @@
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<java.version>16</java.version>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
<mainClass>net.server.Server</mainClass>
|
||||
|
||||
<log4j.version>2.14.1</log4j.version>
|
||||
<graalvm.version>21.1.0</graalvm.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<version>2.4.13</version>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>4.0.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.mina</groupId>
|
||||
<artifactId>mina-core</artifactId>
|
||||
<version>2.0.19</version>
|
||||
<version>2.1.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
@@ -38,7 +40,12 @@
|
||||
<dependency>
|
||||
<groupId>com.esotericsoftware.yamlbeans</groupId>
|
||||
<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>
|
||||
|
||||
<!-- Logging -->
|
||||
@@ -62,6 +69,18 @@
|
||||
<artifactId>log4j-slf4j-impl</artifactId>
|
||||
<version>${log4j.version}</version>
|
||||
</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>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -12,14 +12,14 @@ var maxMapId;
|
||||
|
||||
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() {
|
||||
// After loading, ChannelServer
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
|
||||
@@ -31,8 +31,6 @@ var timer2;
|
||||
var timer3;
|
||||
var timer4;
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
/*
|
||||
if(em.getChannelServer().getId() == 1) { // Only run on channel 1.
|
||||
@@ -58,15 +56,19 @@ function cancelSchedule() {
|
||||
}
|
||||
|
||||
function start() {
|
||||
var world = Packages.net.server.Server.getInstance().getWorld(em.getChannelServer().getWorld());
|
||||
world.setExpRate(8);
|
||||
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!"));
|
||||
const Server = Java.type('net.server.Server');
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
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() {
|
||||
var world = Packages.net.server.Server.getInstance().getWorld(em.getChannelServer().getWorld());
|
||||
world.setExpRate(4);
|
||||
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."));
|
||||
const Server = Java.type('net.server.Server');
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
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 ----------
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* 3rd Job Event - Bowman
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010100;
|
||||
var exitMap = 105040305;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 108010101;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* 3rd Job Event - Magician
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010200;
|
||||
var exitMap = 100040106;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 108010201;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* 3rd Job Event - Kenta's Mount Quest
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 923010000;
|
||||
var exitMap = 923010100;
|
||||
@@ -33,10 +32,10 @@ var eventMaps = [923010000];
|
||||
|
||||
var eventTime = 5; //5 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -84,7 +83,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* 3rd Job Event - Pirate
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010500;
|
||||
var exitMap = 105070200;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 108010501;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -46,7 +45,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* 3rd Job Event - Thief
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010400;
|
||||
var exitMap = 107000402;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 108010401;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* 3rd Job Event - Warrior
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 108010300;
|
||||
var exitMap = 105070001;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 108010301;
|
||||
|
||||
var eventTime = 20; //20 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -54,7 +53,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -30,10 +30,10 @@ var maxMapId = 912020000;
|
||||
|
||||
var eventTime = 2; //2 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
||||
@@ -30,10 +30,10 @@ var maxMapId = 912010200;
|
||||
|
||||
var eventTime = 4; //4 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
||||
@@ -30,10 +30,10 @@ var maxMapId = 912010200;
|
||||
|
||||
var eventTime = 4; //4 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var KC_bfd;
|
||||
var Plane_to_CBD;
|
||||
var CBD_docked;
|
||||
|
||||
@@ -37,14 +37,14 @@ var maxMapId = 670010800;
|
||||
|
||||
var eventTime = 75; // 75 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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(onlyMarriedPlayers && hasNotMarried) eligible = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -147,8 +147,11 @@ function setup(level, lobbyid) {
|
||||
eim.getInstanceMap(670010800).shuffleReactors();
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* Event - Scadur's Mount Quest
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 921110000;
|
||||
var exitMap = 211050000;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 921110000;
|
||||
|
||||
var eventTime = 3; //3 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -60,7 +59,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 2);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* Event - Wolves' Mount Quest
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 914030000;
|
||||
var exitMap = 140010210;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 914030000;
|
||||
|
||||
var eventTime = 3; //3 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -61,7 +60,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 1);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -40,16 +40,19 @@ function cancelSchedule() {
|
||||
}
|
||||
|
||||
function start() {
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
mapObj.spawnMonsterOnGroundBelow(mobObj, new Packages.java.awt.Point(560, 50));
|
||||
mapObj.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "From amongst the ruins shrouded by the mists, Bamboo Warrior appears."));
|
||||
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,15 +41,19 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
var herbGarden = em.getChannelServer().getMapFactory().getMap(251010102);
|
||||
var gcent = Packages.server.life.MapleLifeFactory.getMonster(5220004);
|
||||
|
||||
if(herbGarden.getMonsterById(5220004) != null) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
herbGarden.spawnMonsterOnGroundBelow(gcent, new Packages.java.awt.Point(560, 50));
|
||||
herbGarden.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "From the mists surrounding the herb garden, the gargantuous Giant Centipede appears."));
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,15 +41,19 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
var royalCatthusDesert = em.getChannelServer().getMapFactory().getMap(260010201);
|
||||
var deo = Packages.server.life.MapleLifeFactory.getMonster(3220001);
|
||||
|
||||
if(royalCatthusDesert.getMonsterById(3220001) != null) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
royalCatthusDesert.spawnMonsterOnGroundBelow(deo, new Packages.java.awt.Point(645, 275));
|
||||
royalCatthusDesert.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Deo slowly appeared out of the sand dust."));
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,17 +41,21 @@ function start() {
|
||||
var bossMobid = 9400610;
|
||||
var bossMapid = 677000003;
|
||||
var bossMsg = "Amdusias has appeared!";
|
||||
var bossPos = new Packages.java.awt.Point(467, 0);
|
||||
|
||||
var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
|
||||
if (map.getMonsterById(bossMobid) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -41,17 +41,21 @@ function start() {
|
||||
var bossMobid = 9400609;
|
||||
var bossMapid = 677000005;
|
||||
var bossMsg = "Andras has appeared!";
|
||||
var bossPos = new Packages.java.awt.Point(201, 80);
|
||||
|
||||
var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
|
||||
if (map.getMonsterById(bossMobid) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -41,17 +41,21 @@ function start() {
|
||||
var bossMobid = 9400613;
|
||||
var bossMapid = 677000009;
|
||||
var bossMsg = "Valefor has appeared!";
|
||||
var bossPos = new Packages.java.awt.Point(251, -841);
|
||||
|
||||
var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
|
||||
if (map.getMonsterById(bossMobid) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -41,17 +41,21 @@ function start() {
|
||||
var bossMobid = 9400633;
|
||||
var bossMapid = 677000012;
|
||||
var bossMsg = "Astaroth has appeared!";
|
||||
var bossPos = new Packages.java.awt.Point(842, 0);
|
||||
|
||||
var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
|
||||
if (map.getMonsterById(bossMobid) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -41,17 +41,21 @@ function start() {
|
||||
var bossMobid = 9400612;
|
||||
var bossMapid = 677000001;
|
||||
var bossMsg = "Marbas has appeared!";
|
||||
var bossPos = new Packages.java.awt.Point(461, 61);
|
||||
|
||||
var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
|
||||
if (map.getMonsterById(bossMobid) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -41,17 +41,21 @@ function start() {
|
||||
var bossMobid = 9400611;
|
||||
var bossMapid = 677000007;
|
||||
var bossMsg = "Crocell has appeared!";
|
||||
var bossPos = new Packages.java.awt.Point(171, 50);
|
||||
|
||||
var map = em.getChannelServer().getMapFactory().getMap(bossMapid);
|
||||
if (map.getMonsterById(bossMobid) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
map.broadcastMessage(MaplePacketCreator.serverNotice(6, bossMsg));
|
||||
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
importPackage(Packages.server.life);
|
||||
importPackage(Packages.tools);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
@@ -48,7 +46,12 @@ function start() {
|
||||
setupTask = em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
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."));
|
||||
setupTask = em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
var setupTask;
|
||||
|
||||
function init() {
|
||||
@@ -45,16 +43,20 @@ function cancelSchedule() {
|
||||
}
|
||||
|
||||
function start() {
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
var eliza = MapleLifeFactory.getMonster(8220000);
|
||||
var stairwayToTheSky2 = em.getChannelServer().getMapFactory().getMap(200010300);
|
||||
var eliza = Packages.server.life.MapleLifeFactory.getMonster(8220000);
|
||||
|
||||
|
||||
if(stairwayToTheSky2.getMonsterById(8220000) != null) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
stairwayToTheSky2.spawnMonsterOnGroundBelow(eliza, new Packages.java.awt.Point(208, 83));
|
||||
stairwayToTheSky2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Eliza has appeared with a black whirlwind."));
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,15 +42,19 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
var theForestOfEvil1 = em.getChannelServer().getMapFactory().getMap(100040105);
|
||||
var faust1 = Packages.server.life.MapleLifeFactory.getMonster(5220002);
|
||||
|
||||
if(theForestOfEvil1.getMonsterById(5220002) != null) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
theForestOfEvil1.spawnMonsterOnGroundBelow(faust1, new Packages.java.awt.Point(456, 278));
|
||||
theForestOfEvil1.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog."));
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -43,16 +41,21 @@ function cancelSchedule() {
|
||||
}
|
||||
|
||||
function start() {
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
theForestOfEvil2.spawnMonsterOnGroundBelow(faust2, new Packages.java.awt.Point(474, 278));
|
||||
theForestOfEvil2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog."));
|
||||
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -43,8 +41,9 @@ function cancelSchedule() {
|
||||
}
|
||||
|
||||
function start() {
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
@@ -54,8 +53,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 180;
|
||||
posX = (Math.floor(Math.random() * 900) - 900);
|
||||
labSecretBasementPath.spawnMonsterOnGroundBelow(chimera, new Packages.java.awt.Point(posX, posY));
|
||||
labSecretBasementPath.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Kimera has appeared out of the darkness of the underground with a glitter in her eyes."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
var hotSand;
|
||||
|
||||
function init() {
|
||||
@@ -50,12 +48,18 @@ function start() {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
}
|
||||
var kingClang = Packages.server.life.MapleLifeFactory.getMonster(5220001);
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
var kingClang = MapleLifeFactory.getMonster(5220001);
|
||||
var posX;
|
||||
var posY = 140;
|
||||
posX = Math.floor((Math.random() * 2400) - 1600);
|
||||
hotSand.spawnMonsterOnGroundBelow(kingClang, new Packages.java.awt.Point(posX, posY));
|
||||
hotSand.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A strange turban shell has appeared on the beach."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,7 +42,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
@@ -53,8 +52,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 540;
|
||||
posX = Math.floor((Math.random() * 1300) - 500);
|
||||
goblinForest2.spawnMonsterOnGroundBelow(kingSageCat, new Packages.java.awt.Point(posX, posY));
|
||||
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 Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,7 +42,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
@@ -53,8 +52,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 1125;
|
||||
posX = Math.floor((Math.random() * 600) - 300);
|
||||
leviathansCanyon.spawnMonsterOnGroundBelow(leviathan, new Packages.java.awt.Point(posX, posY));
|
||||
leviathansCanyon.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Leviathan emerges from the canyon and the cold icy wind blows."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -43,14 +41,19 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
thicketAroundTheBeach3.spawnMonsterOnGroundBelow(mano, new Packages.java.awt.Point(279, -496));
|
||||
thicketAroundTheBeach3.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A cool breeze was felt when Mano appeared."));
|
||||
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,7 +42,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
return;
|
||||
@@ -52,8 +51,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 33;
|
||||
posX = Math.floor((Math.random() * 1300) - 800);
|
||||
moonRidge.spawnMonsterOnGroundBelow(nineTailedFox, new Packages.java.awt.Point(posX, posY));
|
||||
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 Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -28,8 +28,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -45,7 +43,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
@@ -55,8 +54,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 520;
|
||||
posX = Math.floor((Math.random() * 2300) - 1500);
|
||||
theSeaweedTower.spawnMonsterOnGroundBelow(seruf, new Packages.java.awt.Point(posX, posY));
|
||||
theSeaweedTower.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A strange shell has appeared from a grove of seaweed"));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,19 +41,23 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
var snackBarMap = em.getChannelServer().getMapFactory().getMap(105090310);
|
||||
var snackBar = Packages.server.life.MapleLifeFactory.getMonster(8220008);
|
||||
|
||||
if(snackBarMap.getMonsterById(8220008) != null || snackBarMap.getMonsterById(8220009) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
var setPos = [[-626, -604], [735, -600]];
|
||||
var rndPos = setPos[Math.floor(Math.random() * setPos.length)];
|
||||
|
||||
snackBarMap.spawnMonsterOnGroundBelow(snackBar, new Packages.java.awt.Point(rndPos[0], rndPos[1]));
|
||||
snackBarMap.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Slowly, a suspicious food stand opens up on a strangely remote place."));
|
||||
em.schedule("start", 3 * 60 *60 * 1000);
|
||||
|
||||
if (snackBarMap.getMonsterById(8220008) != null || snackBarMap.getMonsterById(8220009) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
var setPos = [[-626, -604], [735, -600]];
|
||||
var rndPos = setPos[Math.floor(Math.random() * setPos.length)];
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
|
||||
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 ----------
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,7 +42,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
@@ -54,8 +53,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 1280;
|
||||
posX = Math.floor((Math.random() * 800) + 400);
|
||||
eastRockyMountain5.spawnMonsterOnGroundBelow(stumpy, new Packages.java.awt.Point(posX, posY));
|
||||
eastRockyMountain5.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Stumpy has appeared with a stumping sound that rings the Stone Mountain."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,7 +42,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
@@ -54,8 +53,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 390;
|
||||
posX = Math.floor((Math.random() * 700) - 800);
|
||||
territoryOfWanderingBear.spawnMonsterOnGroundBelow(taeRoon, new Packages.java.awt.Point(posX, posY));
|
||||
territoryOfWanderingBear.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tae Roon has appeared with a soft whistling sound."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -43,7 +41,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
@@ -53,8 +52,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 1030;
|
||||
posX = Math.floor((Math.random() * 770) - 770);
|
||||
whirlpoolOfTime.spawnMonsterOnGroundBelow(timer1, new Packages.java.awt.Point(posX, posY));
|
||||
whirlpoolOfTime.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -44,7 +42,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
@@ -54,8 +53,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 1030;
|
||||
posX = Math.floor((Math.random() * 1400) - 1000);
|
||||
lostTime1.spawnMonsterOnGroundBelow(timer2, new Packages.java.awt.Point(posX, posY));
|
||||
lostTime1.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -28,8 +28,6 @@
|
||||
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
function init() {
|
||||
scheduleNew();
|
||||
}
|
||||
@@ -45,7 +43,8 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
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) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
@@ -55,8 +54,12 @@ function start() {
|
||||
var posX;
|
||||
var posY = 1030;
|
||||
posX = Math.floor((Math.random() * 1400) - 700);
|
||||
lostTime2.spawnMonsterOnGroundBelow(timer3, new Packages.java.awt.Point(posX, posY));
|
||||
lostTime2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known."));
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,15 +41,19 @@ function cancelSchedule() {
|
||||
|
||||
function start() {
|
||||
var graysPrairie = em.getChannelServer().getMapFactory().getMap(221040301);
|
||||
var zeno = Packages.server.life.MapleLifeFactory.getMonster(6220001);
|
||||
|
||||
if(graysPrairie.getMonsterById(6220001) != null) {
|
||||
em.schedule("start", 3 * 60 * 60 * 1000);
|
||||
return;
|
||||
}
|
||||
|
||||
graysPrairie.spawnMonsterOnGroundBelow(zeno, new Packages.java.awt.Point(-4224, 776));
|
||||
graysPrairie.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Zeno has appeared with a heavy sound of machinery."));
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Vs Balrog
|
||||
*/
|
||||
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 6, maxPlayers = 30;
|
||||
var minLevel = 50, maxLevel = 255;
|
||||
@@ -43,14 +41,14 @@ var bossMobId = 8830003;
|
||||
var eventTime = 60; // 60 minutes
|
||||
var releaseClawTime = 1;
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -136,14 +134,17 @@ function releaseLeftClaw(eim) {
|
||||
|
||||
function spawnBalrog(eim) {
|
||||
var mapObj = eim.getInstanceMap(entryMap);
|
||||
|
||||
mapObj.spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830000), new Packages.java.awt.Point(412, 258));
|
||||
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830002), new Packages.java.awt.Point(412, 258));
|
||||
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830006), new Packages.java.awt.Point(412, 258));
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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) {
|
||||
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) {
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Vs Balrog
|
||||
*/
|
||||
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 30;
|
||||
var minLevel = 50, maxLevel = 255;
|
||||
@@ -43,14 +41,14 @@ var bossMobId = 8830010;
|
||||
var eventTime = 60; // 60 minutes
|
||||
var releaseClawTime = 1;
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -136,14 +134,17 @@ function releaseLeftClaw(eim) {
|
||||
|
||||
function spawnBalrog(eim) {
|
||||
var mapObj = eim.getInstanceMap(entryMap);
|
||||
|
||||
mapObj.spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830007), new Packages.java.awt.Point(412, 258));
|
||||
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830009), new Packages.java.awt.Point(412, 258));
|
||||
mapObj.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8830013), new Packages.java.awt.Point(412, 258));
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
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) {
|
||||
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) {
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @Author Ronan
|
||||
* Event - Balrog Quest
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 910520000;
|
||||
var exitMap = 105100100;
|
||||
@@ -31,10 +30,10 @@ var maxMapId = 910520000;
|
||||
|
||||
var eventTime = 10; //10 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -63,7 +62,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 1);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
@@ -96,7 +96,8 @@ function isBalrog(mob) {
|
||||
|
||||
function monsterKilled(mob, eim) {
|
||||
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) {
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
importPackage(Packages.client);
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var Orbis_btf;
|
||||
var Boat_to_Orbis;
|
||||
var Orbis_Boat_Cabin;
|
||||
@@ -64,7 +60,9 @@ function takeoff() {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -88,6 +86,7 @@ function approach() {
|
||||
em.setProperty("haveBalrog","true");
|
||||
Boat_to_Orbis.broadcastEnemyShip(true);
|
||||
Boat_to_Ellinia.broadcastEnemyShip(true);
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
|
||||
Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
|
||||
|
||||
@@ -96,6 +95,8 @@ function approach() {
|
||||
}
|
||||
|
||||
function invasion() {
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
|
||||
var map1 = Boat_to_Ellinia;
|
||||
var pos1 = new java.awt.Point(-538, 143);
|
||||
map1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(8150000), pos1);
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 970042711;
|
||||
|
||||
var eventTime = 5; //5 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 610030800;
|
||||
|
||||
var eventTime = 2; // 2 minutes for first stg
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
|
||||
@@ -39,8 +39,6 @@
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var Orbis_btf;
|
||||
var Leafre_btf;
|
||||
var Cabin_to_Orbis;
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Cafe PQ 1
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
@@ -40,14 +38,14 @@ var eventMaps = [190000000, 190000001, 190000002];
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 400; // total of coupons to complete the event
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Cafe PQ 2
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
@@ -40,14 +38,14 @@ var eventMaps = [191000000, 191000001];
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 350; // total of coupons to complete the event
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Cafe PQ 3
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
@@ -40,14 +38,14 @@ var eventMaps = [192000000, 192000001];
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 350; // total of coupons to complete the event
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Cafe PQ 4
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
@@ -40,14 +38,14 @@ var eventMaps = [195000000, 195010000, 195020000, 195030000];
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 450; // total of coupons to complete the event
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Cafe PQ 5
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
@@ -40,14 +38,14 @@ var eventMaps = [196000000, 196010000];
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 500; // total of coupons to complete the event
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(4001007, 0, getDroppedQuantity(mob));
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Cafe PQ 6
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 120;
|
||||
@@ -40,14 +38,14 @@ var eventMaps = [197000000, 197010000];
|
||||
var eventTime = 45; // 45 minutes
|
||||
var couponsNeeded = 300; // total of coupons to complete the event
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -255,6 +253,7 @@ function monsterKilled(mob, eim) {
|
||||
if(eim.isEventCleared()) return;
|
||||
|
||||
var mapObj = mob.getMap();
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(4001007, 0, 1);
|
||||
var dropper = eim.getPlayers().get(0);
|
||||
|
||||
|
||||
@@ -35,14 +35,14 @@ var maxMapId = 925010300;
|
||||
|
||||
var eventTime = 6; // 6 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
/**
|
||||
*Dollhouse Event
|
||||
**/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap = 922000010;
|
||||
var exitMap = 221024400;
|
||||
@@ -46,7 +45,8 @@ function playerEntry(eim, player) {
|
||||
|
||||
player.changeMap(entryMap, 0);
|
||||
em.setProperty("noEntry","true");
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(eventTime * 60));
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 922020100;
|
||||
|
||||
var eventTime = 20; // 20 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 930000800;
|
||||
|
||||
var eventTime = 30; // 30 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -35,14 +35,14 @@ var maxMapId = 921100300;
|
||||
|
||||
var eventTime = 10; // 10 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
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/>.
|
||||
*/
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var Orbis_btf;
|
||||
var Genie_to_Orbis;
|
||||
|
||||
@@ -38,14 +38,14 @@ var waitTime = 3; // 3 minutes
|
||||
var eventTime = 90; // 90 minutes
|
||||
var bonusTime = 0.5; // 30 seconds
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
@@ -112,7 +112,7 @@ function getEligibleParty(party) { //selects, from the given party, the tea
|
||||
}
|
||||
|
||||
if(!(hasLeader)) eligible = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var returnTo = new Array(200000141, 250000100);
|
||||
var rideTo = new Array(250000100, 200000141);
|
||||
var birdRide = new Array(200090300, 200090310);
|
||||
@@ -33,7 +31,8 @@ function playerEntry(eim, player) {
|
||||
returnMap = eim.getMapFactory().getMap(returnTo[myRide]);
|
||||
onRide = eim.getMapFactory().getMap(birdRide[myRide]);
|
||||
player.changeMap(onRide, onRide.getPortal(0));
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.getClient().announce(MaplePacketCreator.getClock(rideTime / 1000));
|
||||
eim.schedule("timeOut", rideTime);
|
||||
}
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 910010400;
|
||||
|
||||
var eventTime = 10; // 10 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -249,8 +249,9 @@ function friendlyItemDrop(eim, mob) {
|
||||
if (mob.getId() == 9300061) {
|
||||
var cakes = eim.getIntProperty("bunnyCake") + 1;
|
||||
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) {
|
||||
var bunnyDamage = eim.getIntProperty("bunnyDamaged") + 1;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
|
||||
// GMS-like event string data thanks to iHealForLove
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 21, maxLevel = 30;
|
||||
@@ -41,14 +38,14 @@ var maxMapId = 889100001;
|
||||
|
||||
var eventTime = 15; // 15 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -277,6 +274,7 @@ function monsterKilled(mob, eim) {
|
||||
}
|
||||
|
||||
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 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
|
||||
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);
|
||||
mapobj.spawnMonsterOnGroundBelow(snowman, new java.awt.Point(-180, 15));
|
||||
mapobj.spawnMonsterOnGroundBelow(snowman, new Point(-180, 15));
|
||||
|
||||
if(curLevel >= 4) {
|
||||
mapobj.allowSummonState(false);
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
|
||||
// GMS-like event string data thanks to iHealForLove
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 31, maxLevel = 40;
|
||||
@@ -41,14 +38,14 @@ var maxMapId = 889100011;
|
||||
|
||||
var eventTime = 20; // 20 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -277,6 +274,7 @@ function monsterKilled(mob, eim) {
|
||||
}
|
||||
|
||||
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 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
|
||||
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);
|
||||
mapobj.spawnMonsterOnGroundBelow(snowman, new java.awt.Point(-180, 15));
|
||||
mapobj.spawnMonsterOnGroundBelow(snowman, new Point(-180, 15));
|
||||
|
||||
if(curLevel >= 4) {
|
||||
mapobj.allowSummonState(false);
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
|
||||
// GMS-like event string data thanks to iHealForLove
|
||||
|
||||
importPackage(Packages.client.inventory);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 3, maxPlayers = 6;
|
||||
var minLevel = 41, maxLevel = 50;
|
||||
@@ -41,14 +38,14 @@ var maxMapId = 889100021;
|
||||
|
||||
var eventTime = 25; // 25 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -277,6 +274,7 @@ function monsterKilled(mob, eim) {
|
||||
}
|
||||
|
||||
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 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
|
||||
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);
|
||||
mapobj.spawnMonsterOnGroundBelow(snowman, new java.awt.Point(-180, 15));
|
||||
mapobj.spawnMonsterOnGroundBelow(snowman, new Point(-180, 15));
|
||||
|
||||
if(curLevel >= 4) {
|
||||
mapobj.allowSummonState(false);
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Horntail Battle
|
||||
*/
|
||||
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 6, maxPlayers = 30;
|
||||
var minLevel = 100, maxLevel = 255;
|
||||
@@ -38,14 +36,14 @@ var maxMapId = 240060200;
|
||||
|
||||
var eventTime = 120; // 120 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
@@ -97,15 +95,17 @@ function setup(channel) {
|
||||
eim.getInstanceMap(240060000).resetPQ(level);
|
||||
eim.getInstanceMap(240060100).resetPQ(level);
|
||||
eim.getInstanceMap(240060200).resetPQ(level);
|
||||
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
var map, mob;
|
||||
map = eim.getInstanceMap(240060000);
|
||||
mob = MapleLifeFactory.getMonster(8810000);
|
||||
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(960, 120));
|
||||
map.spawnMonsterOnGroundBelow(mob, new Point(960, 120));
|
||||
|
||||
map = eim.getInstanceMap(240060100);
|
||||
mob = MapleLifeFactory.getMonster(8810001);
|
||||
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(-420, 120));
|
||||
map.spawnMonsterOnGroundBelow(mob, new Point(-420, 120));
|
||||
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
setEventRewards(eim);
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 240050310;
|
||||
|
||||
var eventTime = 25; // 25 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 103000805;
|
||||
|
||||
var eventTime = 30; // 30 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var returnTo = new Array(103000100, 103000310);
|
||||
var rideTo = new Array(103000310, 103000100);
|
||||
var trainRide = new Array(103000301, 103000302);
|
||||
@@ -34,7 +32,8 @@ function playerEntry(eim, player) {
|
||||
returnMap = eim.getMapFactory().getMap(returnTo[myRide]);
|
||||
onRide = eim.getMapFactory().getMap(trainRide[myRide]);
|
||||
player.changeMap(onRide, onRide.getPortal(0));
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
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."));
|
||||
eim.schedule("timeOut", rideTime);
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 541010100;
|
||||
|
||||
var eventTime = 10; // 10 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 809050016;
|
||||
|
||||
var eventTime = 15; // 15 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 922011100;
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var eventTime = 10 * 60 * 1000; // 10 minutes
|
||||
var entryMap = 106021600;
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(difficulty, lobbyId){
|
||||
@@ -66,7 +63,9 @@ function respawn(eim){
|
||||
|
||||
var weddinghall = eim.getMapInstance(entryMap);
|
||||
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 {
|
||||
eim.schedule("respawn", 10000);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
importPackage(Packages.tools);
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var eventTime = 10 * 60 * 1000; // 10 minutes
|
||||
var entryMap = 106021601;
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(difficulty, lobbyId){
|
||||
@@ -57,7 +54,9 @@ function respawn(eim){
|
||||
|
||||
var weddinghall = eim.getMapInstance(entryMap);
|
||||
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 {
|
||||
eim.schedule("respawn", 10000);
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Magatia PQ (Alcadno)
|
||||
*/
|
||||
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 4, maxPlayers = 4;
|
||||
var minLevel = 71, maxLevel = 85;
|
||||
@@ -38,14 +36,14 @@ var maxMapId = 926110600;
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -144,11 +142,12 @@ function setup(level, lobbyid) {
|
||||
|
||||
eim.getInstanceMap(926110201).shuffleReactors(2518000, 2612004);
|
||||
eim.getInstanceMap(926110202).shuffleReactors(2518000, 2612004);
|
||||
|
||||
eim.spawnNpc(2112010, new java.awt.Point(252, 243), eim.getInstanceMap(926110203));
|
||||
eim.spawnNpc(2112010, new java.awt.Point(200, 100), eim.getInstanceMap(926110401));
|
||||
eim.spawnNpc(2112011, new java.awt.Point(200, 100), eim.getInstanceMap(926110500));
|
||||
eim.spawnNpc(2112018, new java.awt.Point(200, 100), eim.getInstanceMap(926110600));
|
||||
|
||||
const Point = Java.type('java.awt.Point');
|
||||
eim.spawnNpc(2112010, new Point(252, 243), eim.getInstanceMap(926110203));
|
||||
eim.spawnNpc(2112010, new Point(200, 100), eim.getInstanceMap(926110401));
|
||||
eim.spawnNpc(2112011, new Point(200, 100), eim.getInstanceMap(926110500));
|
||||
eim.spawnNpc(2112018, new Point(200, 100), eim.getInstanceMap(926110600));
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
@@ -245,15 +244,17 @@ function respawnStages(eim) {
|
||||
var mapobj = eim.getMapInstance(926110401);
|
||||
var mobcount = mapobj.countMonster(9300150);
|
||||
var mobobj;
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
if(mobcount == 0) {
|
||||
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);
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-542, -126));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-542, -126));
|
||||
} else if(mobcount == 1) {
|
||||
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;
|
||||
|
||||
mapobj.destroyNPC(2112010);
|
||||
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
var mobobj1, mobobj2;
|
||||
for(var i = 0; i < 5; i++) {
|
||||
mobobj1 = MapleLifeFactory.getMonster(mob1);
|
||||
mobobj2 = MapleLifeFactory.getMonster(mob2);
|
||||
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(-455, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(-455, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(-455, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(-455, 135));
|
||||
}
|
||||
|
||||
|
||||
@@ -326,8 +329,8 @@ function yuleteAction(eim) {
|
||||
mobobj1 = MapleLifeFactory.getMonster(mob1);
|
||||
mobobj2 = MapleLifeFactory.getMonster(mob2);
|
||||
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(0, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(0, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(0, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(0, 135));
|
||||
}
|
||||
|
||||
|
||||
@@ -335,8 +338,8 @@ function yuleteAction(eim) {
|
||||
mobobj1 = MapleLifeFactory.getMonster(mob1);
|
||||
mobobj2 = MapleLifeFactory.getMonster(mob2);
|
||||
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(360, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(360, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(360, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(360, 135));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
* @event: Magatia PQ (Zenumist)
|
||||
*/
|
||||
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 4, maxPlayers = 4;
|
||||
var minLevel = 71, maxLevel = 85;
|
||||
@@ -38,14 +36,14 @@ var maxMapId = 926100600;
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -144,11 +142,12 @@ function setup(level, lobbyid) {
|
||||
|
||||
eim.getInstanceMap(926100201).shuffleReactors(2518000, 2612004);
|
||||
eim.getInstanceMap(926100202).shuffleReactors(2518000, 2612004);
|
||||
|
||||
eim.spawnNpc(2112000, new java.awt.Point(252, 243), eim.getInstanceMap(926100203));
|
||||
eim.spawnNpc(2112000, new java.awt.Point(200, 100), eim.getInstanceMap(926100401));
|
||||
eim.spawnNpc(2112001, new java.awt.Point(200, 100), eim.getInstanceMap(926100500));
|
||||
eim.spawnNpc(2112018, new java.awt.Point(200, 100), eim.getInstanceMap(926100600));
|
||||
|
||||
const Point = Java.type('java.awt.Point');
|
||||
eim.spawnNpc(2112000, new Point(252, 243), eim.getInstanceMap(926100203));
|
||||
eim.spawnNpc(2112000, new Point(200, 100), eim.getInstanceMap(926100401));
|
||||
eim.spawnNpc(2112001, new Point(200, 100), eim.getInstanceMap(926100500));
|
||||
eim.spawnNpc(2112018, new Point(200, 100), eim.getInstanceMap(926100600));
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
@@ -245,15 +244,17 @@ function respawnStages(eim) {
|
||||
var mapobj = eim.getMapInstance(926100401);
|
||||
var mobcount = mapobj.countMonster(9300150);
|
||||
var mobobj;
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
if(mobcount == 0) {
|
||||
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);
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj, new Packages.java.awt.Point(-542, -126));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj, new Point(-542, -126));
|
||||
} else if(mobcount == 1) {
|
||||
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;
|
||||
|
||||
mapobj.destroyNPC(2112000);
|
||||
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
const Point = Java.type('java.awt.Point');
|
||||
var mobobj1, mobobj2;
|
||||
for(var i = 0; i < 5; i++) {
|
||||
mobobj1 = MapleLifeFactory.getMonster(mob1);
|
||||
mobobj2 = MapleLifeFactory.getMonster(mob2);
|
||||
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(-455, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(-455, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(-455, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(-455, 135));
|
||||
}
|
||||
|
||||
|
||||
@@ -326,8 +329,8 @@ function yuleteAction(eim) {
|
||||
mobobj1 = MapleLifeFactory.getMonster(mob1);
|
||||
mobobj2 = MapleLifeFactory.getMonster(mob2);
|
||||
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(0, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(0, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(0, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(0, 135));
|
||||
}
|
||||
|
||||
|
||||
@@ -335,8 +338,8 @@ function yuleteAction(eim) {
|
||||
mobobj1 = MapleLifeFactory.getMonster(mob1);
|
||||
mobobj2 = MapleLifeFactory.getMonster(mob2);
|
||||
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Packages.java.awt.Point(360, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Packages.java.awt.Point(360, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj1, new Point(360, 135));
|
||||
mapobj.spawnMonsterOnGroundBelow(mobobj2, new Point(360, 135));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ var maxMapId = 914020000;
|
||||
|
||||
var eventTime = 10; // 10 minutes
|
||||
|
||||
var lobbyRange = [0, 7];
|
||||
const maxLobbies = 7;
|
||||
|
||||
function init() {}
|
||||
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 920011300;
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -36,14 +36,14 @@ var maxMapId = 220080001;
|
||||
|
||||
var eventTime = 45; // 45 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -23,9 +23,6 @@
|
||||
* @event: Pink Bean Battle
|
||||
*/
|
||||
|
||||
importPackage(Packages.server.life);
|
||||
importPackage(Packages.client.inventory);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 6, maxPlayers = 30;
|
||||
var minLevel = 120, maxLevel = 255;
|
||||
@@ -39,14 +36,14 @@ var maxMapId = 270050300;
|
||||
|
||||
var eventTime = 140; // 140 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
@@ -104,10 +101,12 @@ function setup(channel) {
|
||||
eim.getInstanceMap(270050100).resetPQ(level);
|
||||
eim.getInstanceMap(270050200).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);
|
||||
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);
|
||||
setEventRewards(eim);
|
||||
@@ -234,7 +233,8 @@ function spawnJrBoss(mobObj, gotKilled) {
|
||||
mobObj.getMap().killMonster(mobObj.getId());
|
||||
spawnid = mobObj.getId() - 17;
|
||||
}
|
||||
|
||||
|
||||
const MapleLifeFactory = Java.type('server.life.MapleLifeFactory');
|
||||
var mob = MapleLifeFactory.getMonster(spawnid);
|
||||
mobObj.getMap().spawnMonsterOnGroundBelow(mob, mobObj.getPosition());
|
||||
}
|
||||
@@ -254,6 +254,7 @@ function monsterKilled(mob, eim) {
|
||||
|
||||
if(stage == 5) {
|
||||
var iid = 4001193;
|
||||
const Item = Java.type('client.inventory.Item');
|
||||
var itemObj = new Item(iid, 0, 1);
|
||||
var mapObj = eim.getMapFactory().getMap(270050100);
|
||||
var reactObj = mapObj.getReactorById(2708000);
|
||||
|
||||
@@ -38,14 +38,14 @@ var maxMapId = 925100500;
|
||||
|
||||
var eventTime = 4; // 4 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
const maxLobbies = 1;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
* @author: Ronan
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 1, maxPlayers = 1;
|
||||
var minLevel = 12, maxLevel = 255;
|
||||
@@ -17,14 +15,14 @@ var maxMapId = 922240100;
|
||||
|
||||
var eventTime = 3; // 3 minutes
|
||||
|
||||
var lobbyRange = [0, 19];
|
||||
const maxLobbies = 20;
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
function getMaxLobbies() {
|
||||
return maxLobbies;
|
||||
}
|
||||
|
||||
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 = [];
|
||||
return eligible;
|
||||
return Java.to(eligible, Java.type('net.server.world.MaplePartyCharacter[]'));
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
@@ -102,7 +100,8 @@ function respawnStages(eim) {}
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
|
||||
|
||||
const MaplePacketCreator = Java.type('tools.MaplePacketCreator');
|
||||
player.announce(MaplePacketCreator.showEffect("event/space/start"));
|
||||
player.startMapEffect("Please rescue Gaga within the time limit.", 5120027);
|
||||
}
|
||||
@@ -199,7 +198,8 @@ function clearPQ(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) {}
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap;
|
||||
var exitMap;
|
||||
var otherMap;
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
importPackage(Packages.tools);
|
||||
|
||||
var entryMap;
|
||||
var exitMap;
|
||||
var otherMap;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user