Merge branch 'master' into feat/postgresql-database
# Conflicts: # database/sql/1-db_database.sql # docker-compose.yml # pom.xml # scripts/npc/mapleTV.js # src/main/java/net/server/Server.java
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
wrapperVersion=3.3.2
|
||||
distributionType=only-script
|
||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
|
||||
@@ -57,15 +57,20 @@ We will set up the following:
|
||||
- Client - the client is the application used to _play the game_, i.e. MapleStory.exe.
|
||||
|
||||
### 1 - Database
|
||||
You will start by installing the database server and client, and then run some scripts to prepare it for the server.
|
||||
You will start by installing the database server and database client. Then you will connect to the server with the client to create a new database schema.
|
||||
|
||||
#### Steps
|
||||
|
||||
1. Download and install [MySQL Community Server 8+](https://dev.mysql.com/downloads/mysql/). You will have to set a root password, make sure you don't lose it because you will need it later.
|
||||
1. Download and install [MySQL Community Server 8+](https://dev.mysql.com/downloads/mysql/). You will have to set a root password. Make sure you don't lose it because you will need it later.
|
||||
2. Download and install [HeidiSQL](https://www.heidisql.com/download.php).
|
||||
3. Open HeidiSQL and connect to the database ("New" -> "Session in root folder" -> fill in password -> "Open").
|
||||
4. Run all four scripts located in database/sql in order. Starting with ``1-db_database.sql`` and ending with ``4-db-admin.sql``. In HeidiSQL: "File" -> "Run SQL File...".
|
||||
5. The database is ready!
|
||||
3. Connect to the database:
|
||||
1. Open HeidiSQL
|
||||
2. Create a new Session: "New" -> fill in your password -> "Save"
|
||||
3. Connect to the database: click on your saved session -> "Open"
|
||||
4. Create a new database schema:
|
||||
1. In the opened session, right-click on the session name in the menu on the left
|
||||
2. "Create new" -> "Database" -> database name should be "cosmic" -> "OK"
|
||||
5. Done. The database is now ready. Once the Cosmic server starts, it will create tables and populate some of them with initial data.
|
||||
|
||||
### 2 - Server
|
||||
You will start by cloning the repository, then configure the database properties and lastly start the server.
|
||||
@@ -88,39 +93,22 @@ Support for Docker is also provided out of the box, as an alternative to running
|
||||
|
||||
Making changes becomes a bit more tedious though as you have to rebuild the server image via `docker compose up --build`.
|
||||
|
||||
On the first launch, the database container will run the scripts which may take so long that the server fails to start. In that case, just wait until the database is done running the scripts and then retry (Ctrl+C and re-run the command).
|
||||
|
||||
#### Jar
|
||||
Another option is to start the server from a terminal by running a jar file. You first need to build the jar file from source which requires [Maven](https://maven.apache.org/).
|
||||
Another option is to start the server from a terminal by running a jar file. You first need to build the jar file from source which requires [Maven](https://maven.apache.org/). Fortunately, [Maven Wrapper](https://maven.apache.org/wrapper/) is provided so you don't have to install Maven separately.
|
||||
|
||||
Building the jar file is as easy as running ``mvn clean package``. The project is configured to produce a "fat" jar which contains all dependencies (by utilizing the _maven-assembly-plugin_). Note that the WZ XML files are __not__ included in the jar.
|
||||
Building the jar file is as easy as running ``./mvnw.cmd clean package``. The project is configured to produce a "fat" jar which contains all dependencies (by utilizing the _maven-assembly-plugin_). Note that the WZ XML files are __not__ included in the jar.
|
||||
|
||||
To run the jar, a ``launch.bat`` file is provided for convenience. Simply double-click it and the server will start in a new terminal window.
|
||||
|
||||
Alternatively, run the jar file from the terminal. Just remember to provide the `wz-path` system property pointing to your wz directory.
|
||||
|
||||
### 3 - Client
|
||||
You will start by installing the game with the old installer, then overwrite some WZ files with our custom ones, and lastly get the localhost executable in place.
|
||||
The client files are located in a separate repository: https://github.com/P0nk/Cosmic-client
|
||||
|
||||
#### Steps
|
||||
|
||||
1. Download _MapleGlobal-v83-setup.exe_ from my [Google Drive](https://drive.google.com/drive/folders/1hgnb92MGL6xqEp9szEMBh0K9pSJcJ6IT). This is the official installer from back then.
|
||||
2. Install it in a directory of your choice.
|
||||
3. Delete the following files from the installation directory: _HShield_ (entire directory), _ASPLnchr.exe_, _MapleStory.exe_, and _Patcher.exe_.
|
||||
4. Download _CosmicWZ-2024-07-17-v0.14.0.zip_ from my [Google Drive](https://drive.google.com/drive/folders/1hgnb92MGL6xqEp9szEMBh0K9pSJcJ6IT).
|
||||
5. Unzip it and copy all .wz-files into the installation directory. Replace the existing ones.
|
||||
6. Download _HeavenMS-localhost-WINDOW.exe_ from [hostr.co](https://hostr.co/amuX5SLeeVZx). This is a client modified to connect to your localhost instead of Nexon's server (along with some fixes and custom changes).
|
||||
- Your antivirus will likely detect the file as a trojan or similar and automatically delete it. To prevent this from happening, add your _Downloads_ directory and the installation directory as exclusions in your antivirus software. On W11, this is under "Virus & threat protection settings" -> "Add or remove exclusions".
|
||||
7. Move _HeavenMS-localhost-WINDOW.exe_ into the installation directory.
|
||||
8. Done! Double-click the exe and the game should start.
|
||||
- The client may be a bit fiddly. Sometimes it won't start, but if you see "Client connected" in the server console it's a good indication. Try spam-clicking it like 10+ times, that usually works for me.
|
||||
|
||||
**Important note about localhost clients**: these executables are red-flagged by antivirus tools as potentially malicious software.
|
||||
This happens due to the reverse engineering methods that were applied onto these software artifacts.
|
||||
The one provided here has been in use for years already and posed no harm so far, so it is assumed to be safe.
|
||||
Follow the installation guide in the README.
|
||||
|
||||
### 4 - Getting into the game
|
||||
The client has started, and you're looking at the login screen.
|
||||
You have successfully started the client, and you're looking at the login screen.
|
||||
|
||||
#### Logging in
|
||||
At this point, you can log in to the admin account using the following credentials:
|
||||
@@ -129,7 +117,7 @@ At this point, you can log in to the admin account using the following credentia
|
||||
* Pin: "0000"
|
||||
* Pic: "000000"
|
||||
|
||||
Or create a regular account by typing in your desired username & password and attempting to log in. This "automatic registration" feature lets you create new accounts to play around with. It is enabled by default (see _config.yaml_).
|
||||
You can also create a new regular account by typing in your desired username & password and attempting to log in. This "automatic registration" feature lets you create new accounts to play around with. It is enabled by default (see _config.yaml_).
|
||||
|
||||
#### Entering the game
|
||||
Create a new character as you normally would, and then select it to enter the game. Hooray, finally we're in!
|
||||
@@ -144,21 +132,14 @@ That's it, have fun playing around in game!
|
||||
Some slightly more advanced concepts that might be useful once you're up and running.
|
||||
|
||||
### Host on remote server
|
||||
You don't have to host the server on your local machine to play. It's possible to host on a remote server such as a VPS or even a dedicated server.
|
||||
You don't have to host the server on your local machine to play. It's possible to host on a remote server such as a VPS or a dedicated server.
|
||||
|
||||
I leave it to you to figure out the server hosting part, but once you have that running you'll need to edit the client exe to point to your remote server ip.
|
||||
|
||||
#### Edit client ip
|
||||
1. Download and install a hex editor: [HxD](https://mh-nexus.de/en/hxd/)
|
||||
2. Start HxD and open your client exe (I recommend making a copy of it first). At this point you should see a bunch of hex codes and a "Decoded text" column to the right of it.
|
||||
3. Ctrl+f and search for Text-string "127.0.0.1". You should find three occurrences right above each other.
|
||||
4. Place your cursor before the first "127" and start typing the desired ip, overwriting what is already there. Do the same on the other two and click on Save.
|
||||
5. Done! Now the client will attempt to connect to that ip address instead when you launch it.
|
||||
I leave it to you to figure out the server hosting part, but once you have that running you'll need to edit the client ip to point to your remote server ip.
|
||||
|
||||
### WZ files
|
||||
WZ files are the asset/data files required by the client and server. Typically, [HaRepacker-resurrected](https://github.com/lastbattle/Harepacker-resurrected) is used to handle (view, edit, export) the .wz files.
|
||||
WZ files are the asset/data files required by the client and server. Typically, the [HaRepacker-resurrected](https://github.com/lastbattle/Harepacker-resurrected) tool is used to manage (view, edit, export) the .wz files.
|
||||
|
||||
The client can read the .wz files directly, but the server requires them in XML format. The server also does not make use of the sprites, which is the motivation for different kinds of exporting.
|
||||
The client can read the .wz files directly, but the server requires them to be in XML format. The server does not make use of the sprites, which is the motivation for different kinds of exporting.
|
||||
HaRepacker allows you to export to "Private server", which is the .img files packaged in the .wz stripped of sprites and converted to XML. This takes much less disk space.
|
||||
|
||||
This server requires custom .wz files (unfortunately), as you may have noted during installation of the client. The intention is for these to be removed eventually and to solely run on vanilla .wz files.
|
||||
@@ -172,10 +153,3 @@ This server requires custom .wz files (unfortunately), as you may have noted dur
|
||||
Make sure to always export from the client .wz files to the server XML, and not the other way around.
|
||||
|
||||
Editing the client .wz without exporting to the server may lead to strange behavior.
|
||||
|
||||
### Client features
|
||||
For more information about the client and its features, see [HeavenMS on GitHub](https://github.com/ronancpl/HeavenMS#download-items).
|
||||
|
||||
Some notable features:
|
||||
* Opens in window mode by default
|
||||
* Uncapped max speed
|
||||
|
||||
@@ -288,10 +288,6 @@ server:
|
||||
USE_MAKER_PERMISSIVE_ATKUP: false #Allows players to use attack-based strengthening gems on non-weapon items.
|
||||
USE_MAKER_FEE_HEURISTICS: true #Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side).
|
||||
|
||||
#Custom Configuration
|
||||
USE_ENABLE_CUSTOM_NPC_SCRIPT: false #Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay) or quests.
|
||||
USE_STARTER_MERGE: false #Allows any players to use the Equipment Merge custom mechanic (as opposed to the high-level, Maker lv3 requisites).
|
||||
|
||||
#Commands Configuration
|
||||
BLOCK_GENERATE_CASH_ITEM: false #Prevents creation of cash items with the item/drop command.
|
||||
USE_WHOLE_SERVER_RANKING: false #Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of separated by worlds.
|
||||
|
||||
+1
-21499
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,316 +0,0 @@
|
||||
#THIS SQL IS OPTIONAL, TO BE USED AFTER 'db_drops.sql'
|
||||
#THIS REQUIRES PROVIDED WZ FILES
|
||||
|
||||
USE `cosmic`;
|
||||
|
||||
# Scroll shop at Asia, chair shop at Kino Konoko, potion shop at T-1337
|
||||
INSERT INTO `shops` (`shopid`,`npcid`) VALUES
|
||||
(2082014,2082014),
|
||||
(9110002,9110002),
|
||||
(9201101,9201101);
|
||||
|
||||
INSERT IGNORE INTO `shopitems` (`shopid`, `itemid`, `price`, `pitch`, `position`) VALUES
|
||||
(2082014, 2040004, 480000, 0, 1),
|
||||
(2082014, 2040025, 500000, 0, 2),
|
||||
(2082014, 2040029, 500000, 0, 3),
|
||||
(2082014, 2040017, 500000, 0, 4),
|
||||
(2082014, 2040301, 400000, 0, 5),
|
||||
(2082014, 2040317, 400000, 0, 6),
|
||||
(2082014, 2040321, 400000, 0, 7),
|
||||
(2082014, 2040413, 400000, 0, 8),
|
||||
(2082014, 2040418, 400000, 0, 9),
|
||||
(2082014, 2040501, 250000, 0, 10),
|
||||
(2082014, 2040513, 250000, 0, 11),
|
||||
(2082014, 2040516, 250000, 0, 12),
|
||||
(2082014, 2040532, 250000, 0, 13),
|
||||
(2082014, 2040613, 400000, 0, 14),
|
||||
(2082014, 2040701, 450000, 0, 15),
|
||||
(2082014, 2040704, 450000, 0, 16),
|
||||
(2082014, 2040707, 450000, 0, 17),
|
||||
(2082014, 2040804, 550000, 0, 18),
|
||||
(2082014, 2040817, 550000, 0, 19),
|
||||
(2082014, 2040914, 480000, 0, 20),
|
||||
(2082014, 2040919, 480000, 0, 21),
|
||||
(2082014, 2041007, 470000, 0, 22),
|
||||
(2082014, 2041010, 470000, 0, 23),
|
||||
(2082014, 2041013, 500000, 0, 24),
|
||||
(2082014, 2041016, 500000, 0, 25),
|
||||
(2082014, 2041019, 500000, 0, 26),
|
||||
(2082014, 2041022, 500000, 0, 27),
|
||||
(2082014, 2044901, 520000, 0, 28),
|
||||
(2082014, 2044701, 520000, 0, 29),
|
||||
(2082014, 2043001, 520000, 0, 30),
|
||||
(2082014, 2043801, 520000, 0, 31),
|
||||
(2082014, 2044601, 520000, 0, 32),
|
||||
(2082014, 2040727, 50000, 0, 33),
|
||||
(2082014, 2041058, 50000, 0, 34),
|
||||
(2082014, 2040807, 1000000, 0, 35),
|
||||
(2082014, 2040005, 22000, 0, 36),
|
||||
(2082014, 2040026, 23000, 0, 37),
|
||||
(2082014, 2040031, 23000, 0, 38),
|
||||
(2082014, 2040016, 23000, 0, 39),
|
||||
(2082014, 2040302, 25000, 0, 40),
|
||||
(2082014, 2040318, 25000, 0, 41),
|
||||
(2082014, 2040323, 25000, 0, 42),
|
||||
(2082014, 2040412, 20000, 0, 43),
|
||||
(2082014, 2040419, 20000, 0, 44),
|
||||
(2082014, 2040502, 25000, 0, 45),
|
||||
(2082014, 2040514, 25000, 0, 46),
|
||||
(2082014, 2040517, 25000, 0, 47),
|
||||
(2082014, 2040534, 25000, 0, 48),
|
||||
(2082014, 2040612, 20000, 0, 49),
|
||||
(2082014, 2040702, 20000, 0, 50),
|
||||
(2082014, 2040705, 25000, 0, 51),
|
||||
(2082014, 2040708, 20000, 0, 52),
|
||||
(2082014, 2040805, 100000, 0, 53),
|
||||
(2082014, 2040816, 100000, 0, 54),
|
||||
(2082014, 2040915, 55000, 0, 55),
|
||||
(2082014, 2040920, 55000, 0, 56),
|
||||
(2082014, 2041008, 38000, 0, 57),
|
||||
(2082014, 2041011, 38000, 0, 58),
|
||||
(2082014, 2041014, 40000, 0, 59),
|
||||
(2082014, 2041017, 40000, 0, 60),
|
||||
(2082014, 2041020, 40000, 0, 61),
|
||||
(2082014, 2041023, 40000, 0, 62),
|
||||
(2082014, 2044902, 50000, 0, 63),
|
||||
(2082014, 2044702, 50000, 0, 64),
|
||||
(2082014, 2043002, 50000, 0, 65),
|
||||
(2082014, 2043802, 50000, 0, 66),
|
||||
(2082014, 2044602, 50000, 0, 67),
|
||||
(2082014, 2049200, 170000, 0, 68),
|
||||
(2082014, 2049201, 220000, 0, 69),
|
||||
(2082014, 2049202, 170000, 0, 70),
|
||||
(2082014, 2049203, 220000, 0, 71),
|
||||
(2082014, 2049204, 170000, 0, 72),
|
||||
(2082014, 2049205, 220000, 0, 73),
|
||||
(2082014, 2049206, 170000, 0, 74),
|
||||
(2082014, 2049207, 220000, 0, 75),
|
||||
(2082014, 2049208, 140000, 0, 76),
|
||||
(2082014, 2049209, 170000, 0, 77),
|
||||
(2082014, 2049210, 140000, 0, 78),
|
||||
(2082014, 2049211, 170000, 0, 79),
|
||||
(2082014, 2040101, 540000, 0, 80),
|
||||
(2082014, 2040100, 700000, 0, 81),
|
||||
(2082014, 2040106, 540000, 0, 82),
|
||||
(2082014, 2040105, 700000, 0, 83),
|
||||
(2082014, 2040201, 540000, 0, 84),
|
||||
(2082014, 2040200, 700000, 0, 85),
|
||||
(2082014, 2040206, 540000, 0, 86),
|
||||
(2082014, 2040205, 700000, 0, 87),
|
||||
(2082014, 2070016, 120000000, 0, 88),
|
||||
(2082014, 2070018, 190000000, 0, 89),
|
||||
(2082014, 2030007, 1800000, 0, 90),
|
||||
(2082014, 4001017, 60000000, 0, 91);
|
||||
|
||||
UPDATE shopitems SET price = 11*price WHERE (`position` >= 33 and `position` <= 79 and `shopid` = 2082014);
|
||||
|
||||
INSERT IGNORE INTO `shopitems` (`shopid`, `itemid`, `price`, `pitch`, `position`) VALUES
|
||||
(1031100, 3010015, 20000, 0, 100),
|
||||
(9110002, 3010019, 7700000, 0, 92),
|
||||
(9110002, 3010008, 10000000, 0, 96),
|
||||
(9110002, 3010007, 10000000, 0, 100),
|
||||
(9201020, 3010009, 4200000, 0, 96),
|
||||
(9201020, 3010014, 7000000, 0, 100),
|
||||
(1081000, 3010013, 4000000, 0, 100),
|
||||
(9201101, 2022338, 2100000, 0, 100),
|
||||
(9201101, 2022339, 2800000, 0, 104),
|
||||
(9201101, 2022340, 4000000, 0, 108),
|
||||
(9201101, 2022341, 2800000, 0, 112),
|
||||
(9201101, 2022342, 2000000, 0, 116),
|
||||
(9201101, 2022343, 4700000, 0, 120),
|
||||
(9201101, 2022344, 5000000, 0, 124),
|
||||
(9201101, 2022345, 4000000, 0, 128),
|
||||
(9201101, 2002028, 5000000, 0, 132),
|
||||
(9201101, 2022544, 100000, 0, 136),
|
||||
(9201101, 2022545, 4400000, 0, 140),
|
||||
(9201101, 2020027, 2100000, 0, 144),
|
||||
(9201101, 2022113, 1800000, 0, 148),
|
||||
(9201101, 2022121, 12000000, 0, 152),
|
||||
(9201101, 2022123, 12000000, 0, 156),
|
||||
(9201101, 2022277, 5300000, 0, 160),
|
||||
(9201101, 2012008, 4200000, 0, 164),
|
||||
(9201101, 2022251, 3800000, 0, 168);
|
||||
|
||||
-- Thanks to Vcoc
|
||||
-- GMShop: Sacks, GmEquip, Cheese & Onyx, Utils,
|
||||
-- Arrows, Bullets, Throwings and Capsules,
|
||||
-- Others, Equips, Mounts, Scrolls.
|
||||
|
||||
DELETE FROM `shopitems` WHERE `shopid`=1337;
|
||||
INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `position`) VALUES
|
||||
(1337, 2100036, 1, 1),
|
||||
(1337, 2100035, 1, 2),
|
||||
(1337, 2100034, 1, 3),
|
||||
(1337, 2100033, 1, 4),
|
||||
(1337, 2100007, 1, 5),
|
||||
(1337, 2100006, 1, 6),
|
||||
(1337, 2100005, 1, 7),
|
||||
(1337, 2100004, 1, 8),
|
||||
(1337, 2100003, 1, 9),
|
||||
(1337, 2100002, 1, 10),
|
||||
(1337, 2100001, 1, 11),
|
||||
(1337, 1002959, 1, 12),
|
||||
(1337, 1002140, 1, 13),
|
||||
(1337, 1042003, 1, 14),
|
||||
(1337, 1062007, 1, 15),
|
||||
(1337, 1322013, 1, 16),
|
||||
(1337, 1072010, 1, 17),
|
||||
(1337, 2022179, 1, 18),
|
||||
(1337, 2022273, 1, 19),
|
||||
(1337, 2041200, 1, 20),
|
||||
(1337, 4006001, 1, 21),
|
||||
(1337, 4001017, 1, 22),
|
||||
(1337, 4031179, 1, 23),
|
||||
(1337, 2070018, 1, 24),
|
||||
(1337, 2060004, 1, 25),
|
||||
(1337, 2061004, 1, 26),
|
||||
(1337, 2330005, 1, 27),
|
||||
(1337, 2332000, 1, 28),
|
||||
(1337, 2331000, 1, 29),
|
||||
(1337, 5072000, 1, 30),
|
||||
(1337, 5390000, 1, 31),
|
||||
(1337, 5390001, 1, 32),
|
||||
(1337, 5390002, 1, 33),
|
||||
(1337, 5390005, 1, 34),
|
||||
(1337, 5390006, 1, 35),
|
||||
(1337, 1492013, 1, 36),
|
||||
(1337, 1482013, 1, 37),
|
||||
(1337, 1452044, 1, 38),
|
||||
(1337, 1472052, 1, 39),
|
||||
(1337, 1462039, 1, 40),
|
||||
(1337, 1332050, 1, 41),
|
||||
(1337, 1312031, 1, 42),
|
||||
(1337, 1322052, 1, 43),
|
||||
(1337, 1302059, 1, 44),
|
||||
(1337, 1442045, 1, 45),
|
||||
(1337, 1432038, 1, 46),
|
||||
(1337, 1382036, 1, 47),
|
||||
(1337, 1412026, 1, 48),
|
||||
(1337, 1422028, 1, 49),
|
||||
(1337, 1402036, 1, 50),
|
||||
(1337, 1372032, 1, 51),
|
||||
(1337, 1122000, 1, 52),
|
||||
(1337, 1082149, 1, 53),
|
||||
(1337, 1912000, 1, 54),
|
||||
(1337, 1902000, 1, 55),
|
||||
(1337, 1902001, 1, 56),
|
||||
(1337, 1902002, 1, 57),
|
||||
(1337, 1912005, 1, 58),
|
||||
(1337, 1902005, 1, 59),
|
||||
(1337, 1902006, 1, 60),
|
||||
(1337, 1902007, 1, 61),
|
||||
(1337, 1912011, 1, 62),
|
||||
(1337, 1902015, 1, 63),
|
||||
(1337, 1902016, 1, 64),
|
||||
(1337, 1902017, 1, 65),
|
||||
(1337, 1902018, 1, 66),
|
||||
(1337, 2044908, 1, 67),
|
||||
(1337, 2044815, 1, 68),
|
||||
(1337, 2044512, 1, 69),
|
||||
(1337, 2044712, 1, 70),
|
||||
(1337, 2044612, 1, 71),
|
||||
(1337, 2043312, 1, 72),
|
||||
(1337, 2043117, 1, 73),
|
||||
(1337, 2043217, 1, 74),
|
||||
(1337, 2043023, 1, 75),
|
||||
(1337, 2044417, 1, 76),
|
||||
(1337, 2044317, 1, 77),
|
||||
(1337, 2043812, 1, 78),
|
||||
(1337, 2044117, 1, 79),
|
||||
(1337, 2044217, 1, 80),
|
||||
(1337, 2044025, 1, 81),
|
||||
(1337, 2043712, 1, 82),
|
||||
(1337, 2340000, 1, 83),
|
||||
(1337, 2040807, 1, 84),
|
||||
(1337, 2210032, 1, 85),
|
||||
(1337, 2050004, 1, 86);
|
||||
|
||||
-- Thanks to DietStory v1.02 dev team
|
||||
INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `pitch`, `position`) VALUES
|
||||
(1200001, 3010001, 1000, 0, 1),
|
||||
(1200001, 1092003, 2000, 0, 2),
|
||||
(1200001, 1072063, 10000, 0, 3),
|
||||
(1200001, 1072062, 10000, 0, 4),
|
||||
(1200001, 1072017, 10000, 0, 5),
|
||||
(1200001, 1072049, 5000, 0, 6),
|
||||
(1200001, 1072048, 5000, 0, 7),
|
||||
(1200001, 1072008, 5000, 0, 8),
|
||||
(1200001, 1072005, 50, 0, 9),
|
||||
(1200001, 1072038, 50, 0, 10),
|
||||
(1200001, 1072037, 50, 0, 11),
|
||||
(1200001, 1072001, 50, 0, 12),
|
||||
(1200001, 1062001, 4800, 0, 13),
|
||||
(1200001, 1062000, 4800, 0, 14),
|
||||
(1200001, 1060004, 2800, 0, 15),
|
||||
(1200001, 1060007, 1000, 0, 16),
|
||||
(1200001, 1041012, 3000, 0, 17),
|
||||
(1200001, 1041004, 3000, 0, 18),
|
||||
(1200001, 1040014, 3000, 0, 19),
|
||||
(1200001, 1040013, 3000, 0, 20),
|
||||
(1200001, 1002001, 3000, 0, 21),
|
||||
(1200001, 1002019, 2000, 0, 22),
|
||||
(1200001, 1002134, 800, 0, 23),
|
||||
(1200001, 1002133, 800, 0, 24),
|
||||
(1200001, 1002132, 800, 0, 25),
|
||||
(1200001, 1002069, 450, 0, 26),
|
||||
(1200001, 1002068, 450, 0, 27),
|
||||
(1200001, 1002067, 450, 0, 28),
|
||||
(1200001, 1002066, 450, 0, 29),
|
||||
(1200001, 1002014, 1000, 0, 30),
|
||||
(1200001, 1002008, 500, 0, 31),
|
||||
(1200001, 1332007, 1000, 0, 32),
|
||||
(1200001, 1312000, 3000, 0, 33),
|
||||
(1200001, 1302007, 3000, 0, 34),
|
||||
(1200001, 1322005, 50, 0, 35),
|
||||
(1200001, 1312004, 50, 0, 36),
|
||||
(1200001, 1302000, 50, 0, 37),
|
||||
(1200002, 2330000, 600, 0, 104),
|
||||
(1200002, 2070000, 500, 0, 108),
|
||||
(1200002, 2061000, 1, 0, 120),
|
||||
(1200002, 2060000, 1, 0, 124),
|
||||
(1200002, 2030000, 400, 0, 132),
|
||||
(1200002, 2020028, 3000, 0, 136),
|
||||
(1200002, 2010004, 310, 0, 140),
|
||||
(1200002, 2010003, 100, 0, 144),
|
||||
(1200002, 2010001, 106, 0, 148),
|
||||
(1200002, 2010002, 50, 0, 152),
|
||||
(1200002, 2010000, 30, 0, 156),
|
||||
(1200002, 2002005, 500, 0, 160),
|
||||
(1200002, 2002004, 500, 0, 164),
|
||||
(1200002, 2002002, 500, 0, 168),
|
||||
(1200002, 2002001, 400, 0, 172),
|
||||
(1200002, 2002000, 500, 0, 176),
|
||||
(1200002, 2000006, 620, 0, 180),
|
||||
(1200002, 2000003, 200, 0, 184),
|
||||
(1200002, 2000002, 320, 0, 188),
|
||||
(1200002, 2000001, 160, 0, 192),
|
||||
(1200002, 2000000, 50, 0, 196),
|
||||
(1301000, 2330000, 600, 0, 104),
|
||||
(1301000, 2070000, 500, 0, 108),
|
||||
(1301000, 2061000, 1, 0, 112),
|
||||
(1301000, 2060000, 1, 0, 116),
|
||||
(1301000, 2030000, 400, 0, 124),
|
||||
(1301000, 2022000, 1650, 0, 128),
|
||||
(1301000, 2022003, 1100, 0, 132),
|
||||
(1301000, 2002005, 500, 0, 136),
|
||||
(1301000, 2002004, 500, 0, 140),
|
||||
(1301000, 2002002, 500, 0, 144),
|
||||
(1301000, 2002001, 400, 0, 148),
|
||||
(1301000, 2002000, 500, 0, 152),
|
||||
(1301000, 2000006, 620, 0, 156),
|
||||
(1301000, 2000003, 200, 0, 160),
|
||||
(1301000, 2000002, 320, 0, 164),
|
||||
(1301000, 2000001, 160, 0, 168),
|
||||
(1301000, 2000000, 50, 0, 172);
|
||||
|
||||
# adding missing pirate items at Singapore npc's
|
||||
INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `pitch`, `position`) VALUES
|
||||
(9270019, 1492006, 160000, 0, 80),
|
||||
(9270019, 1492005, 100000, 0, 84),
|
||||
(9270019, 1492004, 75000, 0, 88),
|
||||
(9270019, 1482006, 150000, 0, 92),
|
||||
(9270019, 1482005, 100000, 0, 96),
|
||||
(9270019, 1482004, 75000, 0, 100),
|
||||
(9270020, 1052113, 120000, 0, 92),
|
||||
(9270020, 1052110, 100000, 0, 96),
|
||||
(9270020, 1002625, 75000, 0, 100);
|
||||
@@ -1,87 +0,0 @@
|
||||
-- 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 */;
|
||||
@@ -1,602 +0,0 @@
|
||||
Oblivion Monk Trainee : Dark Katinas (Male)
|
||||
Star Pixie : Star Pixie Starpiece
|
||||
Star Pixie : Blue White-Line Boots
|
||||
Spirit Viking : Scroll for Knuckler for Accuracy 10%
|
||||
Spirit Viking : Spirit Viking Card
|
||||
Spirit Viking : Dark Battle Lord
|
||||
Spirit Viking : Heaven Justice
|
||||
Iron Boar : Maroon Jangoon Boots
|
||||
Iron Boar : Gold Tail
|
||||
Iron Boar : Justice Katara
|
||||
Voodoo : Steel Pow
|
||||
Green Hobi : Pin Hov Charm
|
||||
Green Hobi : Blue Stud
|
||||
Zombie Lupin : Equip Enhancement Scroll
|
||||
Zombie Lupin : Gold Mask
|
||||
Reinforced Mithril Mutae : Reinforced Mithril Mutae Card
|
||||
Yeti : Gold Tail
|
||||
Blue Kentaurus : Kentaurus Marrow
|
||||
Blue Kentaurus : Infinity Wrath
|
||||
Iruvata : Iruvata Card
|
||||
Iruvata : Heaven Justice
|
||||
Snowman : Red-Bean Soup
|
||||
White Fang : White Fang Tail
|
||||
White Fang : Blue Jangoon Boots
|
||||
Green Cornian : Cornian Marrow
|
||||
Green Cornian : [Mastery Book] Venom
|
||||
Green Cornian : Red Katte (Female)
|
||||
Dodo : Whale Helmet
|
||||
Dodo : Scroll for Overall Armor for STR 60%
|
||||
Dodo : [Mastery Book] Slash Storm 20
|
||||
Dodo : Dark Katte (Female)
|
||||
Ultra Gray : Ultra Gray Card
|
||||
Lorang : Lorang Claws
|
||||
Lorang : Dark Piette Pants
|
||||
Buffoon : Buffoon Grandpa Clock
|
||||
Buffoon : Blue Battle Lord
|
||||
Buffoon : Blue Stud
|
||||
Buffoon : Infinity Wrath
|
||||
Flaming Raccoon : Kinoko Ramen (Salt)
|
||||
Red Kentaurus : Kentaurus Flame
|
||||
Red Kentaurus : Scroll for Knuckler for Accuracy 60%
|
||||
Red Kentaurus : Serpent Tongue
|
||||
Red Kentaurus : Dragon Tail
|
||||
Red Kentaurus : Heavenly Katara
|
||||
Mighty Maple Eater : Fireman Axe
|
||||
Tauromacis : Ascalon Katara
|
||||
Tauromacis : Black Pirate Bandana
|
||||
Krappy : Krappi Card
|
||||
Roloduck : Blue Hunter Armor
|
||||
Roloduck : Blue Hunter Pants
|
||||
Crow : Fish Cake (Skewer)
|
||||
Male Mannequin : Male Mannequin Fedora
|
||||
Male Mannequin : Dark Scroll for Accessory for STR 70%
|
||||
Male Mannequin : Male Mannequin Card
|
||||
Male Mannequin : Majestic Katara
|
||||
Leader B : Leader B Charm
|
||||
Leader B : Kinoko Ramen (Roasted Pork)
|
||||
Typhon : Dark Scroll for Cape for Weapon Def 70%
|
||||
Leader A : Leader A Shades
|
||||
Leader A : Dark Scroll for Cape for Magic Def 70%
|
||||
Leader A : Serpent Tongue
|
||||
Soul Teddy : Scroll for Pole Arm for Accuracy 10%
|
||||
Soul Teddy : Steel Pow
|
||||
Soul Teddy : Heavenly Katara
|
||||
Beetle : Beetle Horn
|
||||
Beetle : Equip Enhancement Scroll
|
||||
Beetle : Ascalon Katara
|
||||
Froscola : Blue Battle Lord
|
||||
White Yeti and King Pepe : Scroll for Pole Arm for Accuracy 10%
|
||||
White Yeti and King Pepe : King Pepe Scroll for One-handed BW Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Dagger Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Two-handed Sword Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Two-handed Axe Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Two-handed BW Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Spear Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Polearm Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Wand Magic Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Staff Magic Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Bow Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Crossbow Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Thief Attacks 60%
|
||||
White Yeti and King Pepe : King Pepe Scroll for Knuckle Attacks 60%
|
||||
Harp : Harp Tail Feather
|
||||
Harp : Scroll for Knuckler for Accuracy 100%
|
||||
Harp : Heavenly Katara
|
||||
Harp : Infinity Wrath
|
||||
Lucida : Green Pirate Bottom
|
||||
Lucida : Brown Stud
|
||||
Lucida : Brown Stud Pants
|
||||
Jr. Grupin : Equip Enhancement Scroll
|
||||
Iron Hog : Iron Hog Metal Hoof
|
||||
Sophilia Doll : Fireman Axe
|
||||
Sophilia Doll : Maroon Jangoon Boots
|
||||
Tiru : Tiru Feather
|
||||
Female Mannequin : Female Mannequin Wig
|
||||
Female Mannequin : Dark Scroll for Accessory for STR 70%
|
||||
Female Mannequin : Female Mannequin Card
|
||||
Female Mannequin : Majestic Katara
|
||||
Poison Golem Level 3 : Poison Golem Card
|
||||
Malady : Malady Experimental Frog
|
||||
Malady : Potential Scroll
|
||||
Malady : Steel Pow
|
||||
Vikerola : Dark Battle Lord
|
||||
Wooden Target Dummy : Wooden Target Dummy Card
|
||||
Wooden Target Dummy : Brown Stud
|
||||
Wooden Target Dummy : Brown Stud Pants
|
||||
Cynical Orange Mushroom : Basic Archer Glove
|
||||
Extra A : Littleman A Badge
|
||||
Extra A : Gold Snowboard
|
||||
Extra B : Littleman B Name Plate
|
||||
Extra B : Fairy Honey
|
||||
Extra B : Brown Jangoon Boots
|
||||
Hodori : Majestic Katara
|
||||
Extra C : Littleman C Necklace
|
||||
Extra D : Cat Eye
|
||||
Extra D : Gold Snowboard
|
||||
Extra D : Serpent Tongue
|
||||
King Sage Cat : Scroll for Pole Arm for Accuracy 10%
|
||||
King Sage Cat : Heaven Justice
|
||||
King Sage Cat : Dragon Tail
|
||||
King Sage Cat : Infinity Wrath
|
||||
Homunscullo : Homunsculer Sand
|
||||
Homunscullo : Homunsculer Blood
|
||||
D. Roy : D. Roy Card
|
||||
Nospeed : Arwen Glass Shoes
|
||||
Ribbon Pig : Pig Ribbon
|
||||
Ribbon Pig : Champion Katara
|
||||
Grim Phantom Watch : [Storybook] Black Book
|
||||
Grim Phantom Watch : Grim Phantom Watch Card
|
||||
Qualm Guardian : Blue Katte (Female)
|
||||
Qualm Guardian : Blue Katina Boots
|
||||
Yeti Doll : Justice Katara
|
||||
King Bloctopus : Green White-Line Boots
|
||||
Bigfoot : Bigfoot Toe
|
||||
Green King Goblin : Black Pirate Bandana
|
||||
Dreamy Ghost : Kinoko Ramen (Roasted Pork)
|
||||
MT-09 : MT-09 Fuel
|
||||
Gryphon : Duck Tube [1]
|
||||
Gryphon : Serpent Tongue
|
||||
Risell Squid : Dark Pirate Bottom
|
||||
Dark Axe Stump : Stump Teardrop
|
||||
Blue Wyvern : Equip Enhancement Scroll
|
||||
Nest Golem : Blue Katinas (Male)
|
||||
Cheap Amplifier : Dark Scroll for Accessory for STR 70%
|
||||
Cheap Amplifier : Cheap Amplifier Card
|
||||
Manon : Manon Tail
|
||||
Manon : Manon Cry
|
||||
Saitie : Parwen Entry Pass
|
||||
Saitie : Red Battle Lord
|
||||
Drumming Bunny : Shoes Production Manual
|
||||
Drumming Bunny : Scroll for Pole Arm for Accuracy 10%
|
||||
Drumming Bunny : Gold Snowboard
|
||||
Drumming Bunny : Lion Fang
|
||||
Dyle : Scroll for Knuckler for Accuracy 60%
|
||||
Crimson Tree : Crimson Wood
|
||||
Crimson Tree : Crimson Wood
|
||||
Blue Flower Serpent : Blue Flower Serpent Card
|
||||
Blue Flower Serpent : Scroll for Pole Arm for Accuracy 100%
|
||||
Blue Flower Serpent : Cat Eye
|
||||
Spirit of Rock : Spirit of Rock Music Score
|
||||
Spirit of Rock : Dark Scroll for Accessory for STR 70%
|
||||
Spirit of Rock : Rock Spirit Card
|
||||
Prototype Lord : Prototype Lord Card
|
||||
Seruf : Lion Fang
|
||||
Seruf : Serpent Tongue
|
||||
Dark Wyvern : Blue Katina Boots
|
||||
Mateon : Mateon Tentacle
|
||||
Mateon : Equip Enhancement Scroll
|
||||
Mateon : Dark Pennance
|
||||
Mateon : Gold Pendant
|
||||
Mr. Anchor : [Storybook] Black Book
|
||||
Master Robo : Lion Fang
|
||||
Master Robo : Brown Jangoon Boots
|
||||
Master Robo : Gold Wings
|
||||
Ginseng Jar : Ginseng Jar Card
|
||||
Scuba Pepe : Equip Enhancement Scroll
|
||||
Ghost Pirate : Blue Battle Lord
|
||||
Ghost Pirate : Green Pirate Bottom
|
||||
Ghost Pirate : Heavenly Katara
|
||||
Leatty : Green White-Line Boots
|
||||
Tiv : Tiv Feather
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for One-handed BW Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Dagger Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Two-handed Sword Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Two-handed Axe Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Two-handed BW Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Spear Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Polearm Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Wand Magic Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Staff Magic Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Bow Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Claw Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Crossbow Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Thief Attacks 60%
|
||||
Gold Yeti and King Pepe : King Pepe Scroll for Knuckle Attacks 60%
|
||||
Gold Yeti and King Pepe : Maroon Jangoon Boots
|
||||
Slime : Champion Katara
|
||||
Rodeo : Brown Stud
|
||||
Rodeo : Brown Stud Pants
|
||||
Octopus : Champion Katara
|
||||
Luster Pixie : Luster Pixie Sunpiece
|
||||
Luster Pixie : Luster Pixie Card
|
||||
Nightshadow : Heaven Justice
|
||||
Nightshadow : Infinity Wrath
|
||||
Dual Beetle : Dual Beetle Horn
|
||||
Skeleton Soldier : Skeleton Soldier Card
|
||||
Master Death Teddy : Green Battle Lord
|
||||
Master Death Teddy : Bloodsoaked Katara
|
||||
Sakura Cellion : Maroon Jangoon Boots
|
||||
Pig : Pig Head
|
||||
Fire Boar : Fire Boar Tooth
|
||||
Fire Boar : Arwen Glass Shoes
|
||||
Fire Boar : Fire Boar Card
|
||||
Panda Teddy : Maroon Jangoon Boots
|
||||
Morphed Blin : Serpent Tongue
|
||||
Morphed Blin : Steel Pow
|
||||
Lunar Pixie : Lunar Pixie Moonpiece
|
||||
Lunar Pixie : Gold Wings
|
||||
Curse Eye : "Blackbull" deed to the land
|
||||
Curse Eye : Gold Snowboard
|
||||
Jr. Cellion : Cat Eye
|
||||
Barnard Gray : Barnard Gray Card
|
||||
Faust : Lupin Banana
|
||||
Faust : Lion Fang
|
||||
Faust : Serpent Tongue
|
||||
Gatekeeper : Gate Keeper Card
|
||||
Gatekeeper : Red Battle Lord
|
||||
Griffey : [Mastery Book] Flame Wheel 20
|
||||
Griffey : Meteor Katara
|
||||
Shark : Heaven Justice
|
||||
Deep Buffoon : Deep Buffoon Rock Piece
|
||||
Deep Buffoon : Blue Stud
|
||||
Deep Buffoon : Blazing Dragon Katara
|
||||
Melon Bubble Tea : Melon Bubble Tea Card
|
||||
Melon Bubble Tea : Maroon Jangoon Boots
|
||||
Tino : Tino Feather
|
||||
Bone Fish : Equip Enhancement Scroll
|
||||
Bone Fish : Potential Scroll
|
||||
I.AM.ROBOT : Lion Fang
|
||||
I.AM.ROBOT : Serpent Tongue
|
||||
Lilynouch : Knight Mask
|
||||
Lilynouch : [Mastery Book] Dragon Breath
|
||||
Dark Pepe : Serpent Coil
|
||||
Dark Pepe : Serpent Coil
|
||||
Toy Trojan : Toy Soldier Sword
|
||||
Toy Trojan : Justice Katara
|
||||
Sparker : Scroll for Knuckler for Accuracy 100%
|
||||
Sparker : Justice Katara
|
||||
Dark Drake : Dark Drake Horn
|
||||
Electrophant : Serpent Tongue
|
||||
Electrophant : Lion Fang
|
||||
Tick-Tock : Tick-Tock Egg
|
||||
Mecateon : Mecateon Laser Gun
|
||||
Mecateon : Majestic Katara
|
||||
Helmet Pepe : King Pepe Scroll for Polearm Attacks 60%
|
||||
Helmet Pepe : King Pepe Scroll for Wand Magic Attacks 60%
|
||||
Blue Mushroom : Thermal Fabric
|
||||
Blue Mushroom : Purple Jewelry Shoes
|
||||
Ratz : One-Handed Mace Forging Manual
|
||||
Snow Witch : Ice Tears
|
||||
Flyeye : Flyeye Wing
|
||||
Flyeye : Flyeye Card
|
||||
Headless Horseman : Devil Sunrise
|
||||
Royal Guard : Royal Guard Card
|
||||
Royal Guard : Scroll for Knuckler for Accuracy 10%
|
||||
Royal Guard : Heaven Justice
|
||||
Royal Guard : Dark Battle Lord
|
||||
Triple Rumo : Blue Jangoon Boots
|
||||
Triple Rumo : Brown Jangoon Boots
|
||||
Pianus : Miniature Pianus
|
||||
Pianus : Pianus Scream
|
||||
Pianus : Scroll for Overall Armor for STR 60%
|
||||
Pianus : [Mastery Book] Blaze 20
|
||||
Pianus : Blue Katte (Female)
|
||||
Pianus : Blue Katinas (Male)
|
||||
Rombot : Rombot Memory Card
|
||||
Rombot : Serpent Tongue
|
||||
Roid : Potential Scroll
|
||||
Roid : Equip Enhancement Scroll
|
||||
Robby : Robby Electronic Induction Device
|
||||
Robby : Robby Card
|
||||
Robby : Blue Stud
|
||||
Blue Snail : Grey/Brown Training Shirt
|
||||
Blue Snail : Grey/Brown Training Pants
|
||||
Afterlord : Afterlord Card
|
||||
Afterlord : Scroll for Overall Armor for STR 60%
|
||||
Afterlord : Heaven Gate
|
||||
Afterlord : Bloodsoaked Katara
|
||||
Block Golem : Block Golem Card
|
||||
Lyka : Guardian Horn
|
||||
Lyka : Dark Katinas (Male)
|
||||
Jr. Wraith : Equip Enhancement Scroll
|
||||
Jr. Wraith : Potential Scroll
|
||||
Sentinel : Fireman Axe
|
||||
Ice Drake : Blue Battle Lord
|
||||
Ice Drake : Gold Mask
|
||||
Overlord A : Overlord A Card
|
||||
Overlord B : Overlord B Card
|
||||
Latest Hits Compilation : Dark Scroll for Accessory for STR 70%
|
||||
Latest Hits Compilation : Latest Hits Compilation Card
|
||||
Water Goblin : Serpent Coil
|
||||
Water Goblin : Serpent Coil
|
||||
Retz : Retz Card
|
||||
Retz : Cat Eye
|
||||
Retz : Blue Jangoon Boots
|
||||
Hoodoo : Steel Pow
|
||||
Pink Bean : Pink Bean Card
|
||||
Pink Bean : [Mastery Book] Maple Warrior 30
|
||||
Paper Lantern Ghost : Fish Cake (Skewer)
|
||||
Paper Lantern Ghost : Cat Eye
|
||||
Cold Shark : Frozen Shark Fin
|
||||
Cold Eye : Icicles
|
||||
Croco : Potential Scroll
|
||||
Croco : Gold Pendant
|
||||
Croco : Majestic Katara
|
||||
Bubble Fish : Bubble Fish Thoughts
|
||||
Officer Skeleton : Serpent Coil
|
||||
Officer Skeleton : Serpent Coil
|
||||
Murumuru : Murumuru Furball
|
||||
Zeno : Black Pirate Bandana
|
||||
Panda : Ascalon Katara
|
||||
Panda : Black Pirate Bandana
|
||||
Iron Mutae : Iron Mutae Card
|
||||
Snail : Red Mini Skirt
|
||||
Hankie : Hankie Panfluit
|
||||
Hankie : Heaven Justice
|
||||
Silver Slime : Silver Slime Card
|
||||
Silver Slime : Beige Elf Shoes
|
||||
Zeta Gray : Zeta Gray Card
|
||||
Zeta Gray : Dark Piette Pants
|
||||
Zombie Mushroom : The Charm of the Undead
|
||||
Zombie Mushroom : Hunter Bow
|
||||
Zombie Mushroom : Guardian Katara
|
||||
Pepe : Majestic Katara
|
||||
Grupin : Icicles
|
||||
Grupin : Equip Enhancement Scroll
|
||||
Hobi : Hov Shorts
|
||||
Yabber Doo : Beige Elf Shoes
|
||||
Royal Cactus : Dark Hunter Armor
|
||||
Royal Cactus : Dark Hunter Pants
|
||||
Dual Ghost Pirate : Dual Pirate Propeller
|
||||
Dual Ghost Pirate : Infinity Wrath
|
||||
Memory Monk Trainee : [Mastery Book] Venom 30
|
||||
Memory Monk Trainee : Devil Sunrise
|
||||
Coolie Zombie : Zombie Lost Tooth
|
||||
Coolie Zombie : [Storybook] Black Book
|
||||
Coolie Zombie : Brown Stud
|
||||
Coolie Zombie : Brown Stud Pants
|
||||
Blood Harp : Blood Harp Crown
|
||||
Blood Harp : Heavenly Katara
|
||||
Black Kentaurus : Kentaurus Skull
|
||||
Black Kentaurus : Gold Arund
|
||||
Black Kentaurus : Blazing Dragon Katara
|
||||
Rash : Rash Furball
|
||||
Rash : Anasthetic Powder
|
||||
Imperial Guard : Imperial Guard Card
|
||||
The Book Ghost : The Book Ghost Sheet of Paper
|
||||
The Book Ghost : Blue Jangoon Boots
|
||||
Drake : Drake Meat
|
||||
Drake : Drake Blood
|
||||
Oblivion Guardian : [Mastery Book] Blessing of the Onyx 30
|
||||
Zakum3 : [Skill Book] Advanced Combo
|
||||
Zakum3 : [Mastery Book] Smoke Bomb
|
||||
Zakum3 : [Mastery Book] Sanctuary
|
||||
Zakum3 : [Mastery Book] Venom
|
||||
Zakum3 : [Mastery Book] Crossbow Expert
|
||||
Zakum3 : Zakum Helmet (1)
|
||||
Zakum3 : Devil Sunrise
|
||||
Zakum3 : Zakum Tree Branch
|
||||
Jr. Newtie : Equip Enhancement Scroll
|
||||
Jr. Newtie : Devil Sunrise
|
||||
Jr. Newtie : Red Katte (Female)
|
||||
Jr. Pepe : Jr. Pepe Fish
|
||||
Miner Zombie : Zombie Lost Tooth
|
||||
Miner Zombie : Zombie Lost Gold Tooth
|
||||
Miner Zombie : Minor Zombie Card
|
||||
Miner Zombie : Ascalon Katara
|
||||
Aufheben : Aufheben Time Sand
|
||||
Aufheben : Aufheben Card
|
||||
Eye of Time : Scroll for Overall Armor for STR 60%
|
||||
Eye of Time : Scroll for Knuckler for Accuracy 60%
|
||||
Eye of Time : Heaven Gate
|
||||
Psycho Jack : Fireman Axe
|
||||
Psycho Jack : Red Hunter Armor
|
||||
Psycho Jack : Red Hunter Pants
|
||||
Psycho Jack : Red White-Line Boots
|
||||
Death Teddy : Blazing Dragon Katara
|
||||
Bain : Bain Spiky Collar
|
||||
Bain : Gold Arund
|
||||
Dark Nependeath : Equip Enhancement Scroll
|
||||
Dark Nependeath : Dark Piette Pants
|
||||
Timu : Timu Feather
|
||||
Mano : Rainbow Colored Snail Shell
|
||||
Dark Stone Golem : Dark Stone Golem Card
|
||||
Scorpion : Cat Eye Stone
|
||||
King Clang : Lorang Claws
|
||||
King Clang : Clang Claws
|
||||
Nependeath : Nependeath Honey
|
||||
Phantom Watch : Dragon Tail
|
||||
Phantom Watch : Dark Pirate Bottom
|
||||
Reinforced Iron Mutae : Reinforced Iron Mutae Card
|
||||
Master Chronos : Brown Jangoon Boots
|
||||
Crimson Balrog the Kidnapper : [Skill Book] Dragon Breath
|
||||
Lazy Buffy : Heavenly Katara
|
||||
Red Slime : Kinoko Ramen (Salt)
|
||||
Evil Eye : Cat Eye
|
||||
Maverick Type D : Maverick Type D Card
|
||||
Maverick Type D : Green Battle Lord
|
||||
Maverick Type A : Maverick Type A Card
|
||||
Maverick Type A : Infinity Wrath
|
||||
Klock : Heavenly Katara
|
||||
Tiguru : Tiguru Feather
|
||||
Tortie : Lion Fang
|
||||
Shade : Someone Hat
|
||||
Dunas : Dunas Time Sand
|
||||
Dunas : Dunas Card
|
||||
Timer : Scroll for Knuckler for Accuracy 60%
|
||||
Timer : Serpent Coil
|
||||
Timer : Serpent Coil
|
||||
Maverick Type S : Maverick Type S Card
|
||||
Poison Poopa : Poison Poopa Poisonous Spikes
|
||||
Poison Poopa : Blue White-Line Boots
|
||||
Murupia : Murupia Furball
|
||||
Chief Gray : Chief Gray Sign
|
||||
Chief Gray : Chief Gray Card
|
||||
Chief Gray : Dark Pennance
|
||||
Skelosaurus : Meteor Katara
|
||||
Oberon : Oberon Time Sand
|
||||
Oberon : Oberon Card
|
||||
Mr. Alli : Mr. Alli Leather
|
||||
Mr. Alli : Lion Fang
|
||||
Cellion : Maroon Jangoon Boots
|
||||
Qualm Monk Trainee : [Mastery Book] Blessing of the Onyx 20
|
||||
Chronos : Chronos Egg
|
||||
Kiyo : Kiyo Beak
|
||||
Cherry Bubble Tea : Cherry Bubble Tea Card
|
||||
Cherry Bubble Tea : Maroon Jangoon Boots
|
||||
Pink Teddy : Teddy Yellow Ribbon
|
||||
Pink Teddy : White/Purple Gift Box
|
||||
Rexton : [Mastery Book] Spirit Claw
|
||||
Master of Disguise : The Lost Treasure [1]
|
||||
Master of Disguise : The Lost Treasure [2]
|
||||
Master of Disguise : The Lost Treasure [3]
|
||||
Master of Disguise : The Lost Treasure [4]
|
||||
Master of Disguise : The Lost Treasure [5]
|
||||
Neo Huroid : Gold Mask
|
||||
Jr. Pepe Doll : Guardian Katara
|
||||
Dual Birk : Dual Birk Tiny Tail
|
||||
Muru : Muru Furball
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for One-handed BW Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Dagger Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Two-handed Sword Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Two-handed Axe Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Two-handed BW Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Spear Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Polearm Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Bow Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Crossbow Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Wand Magic Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Staff Magic Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Thief Attacks 60%
|
||||
Grey Yeti and King Pepe : King Pepe Scroll for Knuckle Attacks 60%
|
||||
Wild Kargo : Gold Wings
|
||||
Bubbling : Bubbling Large Bubble
|
||||
Bubbling : Blue Jewelry Shoes
|
||||
Bubbling : Champion Katara
|
||||
Papulatus : [Mastery Book] High Mastery 30
|
||||
Papulatus : Red Katte (Female)
|
||||
Papulatus : Red Katinas (Male)
|
||||
Plateon : Plateon Helmet
|
||||
Plateon : Serpent Tongue
|
||||
Nightghost : Ghost Headband
|
||||
Nightghost : Serpent Coil
|
||||
Nightghost : Serpent Coil
|
||||
Mango Bubble Tea : Mango Bubble Tea Card
|
||||
Mango Bubble Tea : Maroon Jangoon Boots
|
||||
Homunculus : Homunculus Card
|
||||
Homunculus : Green Pirate Bottom
|
||||
Homunculus : Brown Stud
|
||||
Homunculus : Brown Stud Pants
|
||||
Orange Mushroom : Hunter Bow
|
||||
Orange Mushroom : Basic Archer Glove
|
||||
Scarf Plead : Worn-Out Muffler
|
||||
Scarf Plead : Green Hunter Armor
|
||||
Scarf Plead : Green Hunter Pants
|
||||
Female Boss : Lady Boss Comb
|
||||
Female Boss : Devil Sunrise
|
||||
Hogul : Hogul Card
|
||||
Memory Guardian : Meteor Katara
|
||||
Poison Mushroom : King Pepe Scroll for Two-handed Sword Attacks 60%
|
||||
Poison Mushroom : King Pepe Scroll for Two-handed Axe Attacks 60%
|
||||
Poison Mushroom : Justice Katara
|
||||
Homun : Gold Pendant
|
||||
Homun : Ascalon Katara
|
||||
Greatest Oldies : Dark Scroll for Accessory for STR 70%
|
||||
Greatest Oldies : Greatest Oldies Card
|
||||
Kid Mannequin : Kid Mannequin Bunny Suit
|
||||
Kid Mannequin : Dark Scroll for Accessory for STR 70%
|
||||
Kid Mannequin : Kid Mannequin Card
|
||||
Kid Mannequin : Justice Katara
|
||||
Dark Rash : Dark Rash Furball
|
||||
Cerebes : Beige Elf Shoes
|
||||
Grizzly : Equip Enhancement Scroll
|
||||
Lioner : Gold Tail
|
||||
Lioner : Majestic Katara
|
||||
Red Wyvern : Equip Enhancement Scroll
|
||||
Gigantic Spirit Viking : Gigantic Spirit Viking Card
|
||||
Gigantic Spirit Viking : Heaven Gate
|
||||
Gigantic Spirit Viking : Red Battle Lord
|
||||
Gigantic Spirit Viking : Beige Elf Shoes
|
||||
Hector : Blue Jangoon Boots
|
||||
Hector : Serpent Coil
|
||||
Hector : Serpent Coil
|
||||
Crimson Balrog : [Storybook] Crimson Balrog Proposal
|
||||
Memory Monk : [Mastery Book] High Mastery 30
|
||||
Lupin : Lupin Banana
|
||||
Tae Roon : Mind And Heart Medicine
|
||||
Birk : Birk Chewed Grass
|
||||
Birk : Dark Battle Lord
|
||||
Birk : Blazing Dragon Katara
|
||||
Clang : Clang Claws
|
||||
Clang : Lion Fang
|
||||
Straw Target Dummy : Straw Target Dummy Card
|
||||
Royal Guard Pepe : King Pepe Scroll for Crossbow Attacks 60%
|
||||
Royal Guard Pepe : King Pepe Scroll for Thief Attacks 60%
|
||||
Royal Guard Pepe : King Pepe Scroll for Knuckle Attacks 60%
|
||||
Blue King Goblin : Blue Stud
|
||||
Nightmare : Blue Jangoon Boots
|
||||
Renegade Spores : King Pepe Scroll for One-handed BW Attacks 60%
|
||||
Renegade Spores : King Pepe Scroll for Dagger Attacks 60%
|
||||
Renegade Spores : Potential Scroll
|
||||
Prime Minister : King Pepe Scroll for One-handed BW Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Dagger Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Two-handed Sword Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Two-handed Axe Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Two-handed BW Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Spear Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Polearm Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Wand Magic Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Staff Magic Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Bow Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Crossbow Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Thief Attacks 60%
|
||||
Prime Minister : King Pepe Scroll for Knuckle Attacks 60%
|
||||
Prime Minister : Lion Fang
|
||||
Prime Minister : Serpent Tongue
|
||||
Prime Minister : Justice Katara
|
||||
Prime Minister : Guardian Katara
|
||||
Ear Plug Plead : Ear Muffs
|
||||
Oly Oly : Somebody Tire
|
||||
Samiho : Samiho Card
|
||||
Charmer : Charmer Flute
|
||||
Murupa : Murupa Furball
|
||||
Murukun : Murukun Furball
|
||||
Bob : Bob Snail Shell
|
||||
Horny Mushroom : Guardian Katara
|
||||
Brown Teddy : Teddy Cotton
|
||||
Brown Teddy : Equip Enhancement Scroll
|
||||
Brown Teddy : Guardian Katara
|
||||
Thanatos : Thanatos' Strap
|
||||
Thanatos : [Storybook] Black Book
|
||||
Thanatos : Dark Battle Lord
|
||||
Mummydog : Mummydog Card
|
||||
Dark Cornian : Devil Sunrise
|
||||
Dark Cornian : Red Katinas (Male)
|
||||
Intoxicated Pig : King Pepe Scroll for Two-handed BW Attacks 60%
|
||||
Intoxicated Pig : King Pepe Scroll for Spear Attacks 60%
|
||||
Red Flower Serpent : Red Flower Serpent Card
|
||||
Red Flower Serpent : Gold Mask
|
||||
Propelly : Lion Fang
|
||||
Propelly : Fireman Axe
|
||||
Propelly : Dark Pennance
|
||||
Platoon Chronos : Equip Enhancement Scroll
|
||||
Platoon Chronos : Serpent Tongue
|
||||
Chirppy : Fireman Axe
|
||||
Chirppy : Red Hunter Armor
|
||||
Chirppy : Red White-Line Boots
|
||||
Planey : Brown Jangoon Boots
|
||||
Zombie Mushmom : Zombie Mushmom Card
|
||||
Dark Leatty : Black Guise
|
||||
Dark Leatty : Green White-Line Boots
|
||||
Ligator : Equip Enhancement Scroll
|
||||
Male Boss : Boss Pomade
|
||||
Cloud Fox : Sushi (Salmon)
|
||||
Cloud Fox : Fish Cake (Skewer)
|
||||
Cloud Fox : Cat Eye
|
||||
Bodyguard B : Bodyguard B Bullet Shell
|
||||
Baby Typhon : Dark Scroll for Cape for Weapon Def 70%
|
||||
Bodyguard A : Bodyguard A Tie Pin
|
||||
Ergoth : Ergoth Jawbone
|
||||
Annoyed Zombie Mushroom : The Charm of the Undead
|
||||
Annoyed Zombie Mushroom : Hunter Bow
|
||||
Cico : Seahorse Horn
|
||||
Robo : Blue Jangoon Boots
|
||||
Wraith : Cat Eye
|
||||
Wraith : Gold Pendant
|
||||
Red Drake : Dark Piette Pants
|
||||
Killa Bee : Cat Eye
|
||||
Skeledog : Skeledog Bone
|
||||
Skeledog : Maroon Jangoon Boots
|
||||
Windraider : Scroll for Gloves for DEX 15%
|
||||
Tutorial Muru : Tutorial Muru Furball
|
||||
@@ -1,13 +0,0 @@
|
||||
# Migrations
|
||||
The files contained in this directory are intended to be run manually when transitioning from an earlier version of Cosmic to a more recent one.
|
||||
|
||||
Not every version comes with an associated migration script. Only those with breaking changes such as removal of custom assets that would otherwise crash the client.
|
||||
|
||||
This is a temporary solution until automatic database migrations are in place.
|
||||
|
||||
## How to
|
||||
Each script is only intended to be run __once__.
|
||||
|
||||
When a new migration is available, simply run the SQL script in HeidiSQL (or other SQL client of choice).
|
||||
|
||||
If there are multiple new migrations that you haven't run, run them in order starting with the lowest version and ending with the highest version.
|
||||
@@ -1,6 +0,0 @@
|
||||
/* Manually run this script in MySQL Workbench or some other database client
|
||||
to migrate your old (pre Jan 19th 2022) monsterbook table to the new version */
|
||||
ALTER TABLE cosmic.`monsterbook`
|
||||
CHANGE COLUMN `charid` `charid` INT(11) NOT NULL,
|
||||
ADD PRIMARY KEY (`charid`, `cardid`),
|
||||
ADD CONSTRAINT `FK_monsterbook_1` FOREIGN KEY (`charid`) REFERENCES `characters` (`id`) ON UPDATE CASCADE ON DELETE CASCADE;
|
||||
@@ -1,2 +0,0 @@
|
||||
DELETE FROM shopitems
|
||||
WHERE itemid = 2030100; # Return Scroll - Banished Area (a custom item added in HeavenMS)
|
||||
@@ -1,7 +0,0 @@
|
||||
---- 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)
|
||||
@@ -32,7 +32,6 @@ services:
|
||||
- "3307:3306"
|
||||
volumes:
|
||||
- ./database/docker-db-data:/var/lib/mysql
|
||||
- ./database/sql:/docker-entrypoint-initdb.d
|
||||
|
||||
pg_db:
|
||||
image: postgres:15.0
|
||||
|
||||
@@ -480,9 +480,7 @@
|
||||
5590000 - High-Five Stamp - Can equip items that are 5 levels above your current level.
|
||||
5021026 - Gift Box Throwing Stars - A gift box that can be freely thrown around. Using the #cThrowing Star# will create an orbital effect.\n\nThis item cannot be deleted.
|
||||
5010073 - Miss Popular - Well, lookie here. Someone�s certainly become popular with the guys. Turn this effect on and off by assigning it to a shortcut key from the keyboard settings menu.
|
||||
|
||||
5010074 - Mr. Popular - Well, lookie here. Someone�s certainly become popular with the girls. Turn this effect on and off by assigning it to a shortcut key from the keyboard settings menu.
|
||||
|
||||
5240027 - Golden Drumstick - A drumstick that can be consumed only by #cBaby Tiger#. It recovers hunger and #cincreases Closeness by 100.#
|
||||
5390005 - Cute Tiger Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a tiger background for your avatar.
|
||||
5390006 - Roaring Tiger Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a screen shaked.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
0 - Light - (no description)
|
||||
1 - Tanned - (no description)
|
||||
2 - Dark - (no description)
|
||||
3 - Pale - (no description)
|
||||
4 - Blue - (no description)
|
||||
5 - Green - (no description)
|
||||
9 - White - (no description)
|
||||
10 - Pink - (no description)
|
||||
11 - Brown - (no description)
|
||||
@@ -0,0 +1,2 @@
|
||||
0 - Male - (no description)
|
||||
1 - Female - (no description)
|
||||
@@ -0,0 +1,70 @@
|
||||
0 - Beginner - (no description)
|
||||
100 - Warrior - (no description)
|
||||
110 - Fighter - (no description)
|
||||
111 - Crusader - (no description)
|
||||
112 - Hero - (no description)
|
||||
120 - Page - (no description)
|
||||
121 - White Knight - (no description)
|
||||
122 - Paladin - (no description)
|
||||
130 - Spearman - (no description)
|
||||
131 - Dragon Knight - (no description)
|
||||
132 - Dark Knight - (no description)
|
||||
200 - Magician - (no description)
|
||||
210 - Fp Wizard - (no description)
|
||||
211 - Fp Mage - (no description)
|
||||
212 - Fp Archmage - (no description)
|
||||
220 - Il Wizard - (no description)
|
||||
221 - Il Mage - (no description)
|
||||
222 - Il Archmage - (no description)
|
||||
230 - Cleric - (no description)
|
||||
231 - Priest - (no description)
|
||||
232 - Bishop - (no description)
|
||||
300 - Bowman - (no description)
|
||||
310 - Hunter - (no description)
|
||||
311 - Ranger - (no description)
|
||||
312 - Bow Master - (no description)
|
||||
320 - Crossbowman - (no description)
|
||||
321 - Sniper - (no description)
|
||||
322 - Crossbow Master - (no description)
|
||||
400 - Thief - (no description)
|
||||
410 - Assassin - (no description)
|
||||
411 - Hermit - (no description)
|
||||
412 - Night Lord - (no description)
|
||||
420 - Bandit - (no description)
|
||||
421 - Chief Bandit - (no description)
|
||||
422 - Shadower - (no description)
|
||||
500 - Pirate - (no description)
|
||||
510 - Brawler - (no description)
|
||||
511 - Marauder - (no description)
|
||||
512 - Buccaneer - (no description)
|
||||
520 - Gunslinger - (no description)
|
||||
521 - Outlaw - (no description)
|
||||
522 - Corsair - (no description)
|
||||
800 - Maple Leaf Brigadier - (no description)
|
||||
900 - Gm - (no description)
|
||||
910 - Super Gm - (no description)
|
||||
1000 - Noblesse - (no description)
|
||||
1100 - Dawn Warrior 1 - (no description)
|
||||
1110 - Dawn Warrior 2 - (no description)
|
||||
1111 - Dawn Warrior 3 - (no description)
|
||||
1200 - Blaze Wizard 1 - (no description)
|
||||
1210 - Blaze Wizard 2 - (no description)
|
||||
1211 - Blaze Wizard 3 - (no description)
|
||||
1212 - Blaze Wizard 4 - (no description)
|
||||
1300 - Wind Archer 1 - (no description)
|
||||
1310 - Wind Archer 2 - (no description)
|
||||
1311 - Wind Archer 3 - (no description)
|
||||
1312 - Wind Archer 4 - (no description)
|
||||
1400 - Night Walker 1 - (no description)
|
||||
1410 - Night Walker 2 - (no description)
|
||||
1411 - Night Walker 3 - (no description)
|
||||
1412 - Night Walker 4 - (no description)
|
||||
1500 - Thunder Breaker 1 - (no description)
|
||||
1510 - Thunder Breaker 2 - (no description)
|
||||
1511 - Thunder Breaker 3 - (no description)
|
||||
1512 - Thunder Breaker 4 - (no description)
|
||||
2000 - Legend - (no description)
|
||||
2100 - Aran 1 - (no description)
|
||||
2110 - Aran 2 - (no description)
|
||||
2111 - Aran 3 - (no description)
|
||||
2112 - Aran 4 - (no description)
|
||||
@@ -36,10 +36,7 @@
|
||||
5000044 - Orange tiger - They are very gentle and obedient in nature, easily becoming friendly with the owner, which in turn speeds up the level-up process.
|
||||
5000045 - Skunk - Calm and quiet by nature, the easy-going, eccentric Skunk has a rather humorous and pompous outlook on life, the finer things are what it enjoys.
|
||||
5000026 - Sun Wu Kong - Sun Wu Kong ran out of Tang Shan Zhang. He is lazy and moody but can be changed with love.
|
||||
5000040 - ??? ?? - ??? ??? ??? ??? ???????. ??? ????? ??? ?????, ??? ? ?? ??? ??? ???? ??? ?? ????. \n#c??: ?? ??, ??? ??, ??? ?? ???&?? ??, ?? ??, ???? ??, MP ????#
|
||||
5000042 - Kino - A happy-go-lucky, orange mushroom that loves shiny stones.
|
||||
5000043 - ???? - ??? ????, ?? ??? ??? ???????. ??? ?? ? ????, ??? ??? ???? ??? ?? ????. \n#c??: ????, ?????#
|
||||
5000046 - ?? - ???? ?? ?? ???? ???? ??? ???????. \n#c??:????, ?????#
|
||||
5000047 - Robo - A special egg that becomes a mythical Robo upon hatching.
|
||||
5000048 - Baby Robo - A Baby Robo hatched out of the special Capsule. At Level 15, the pet can be evolved into a full-fledged Adult Robo with the help of Garnox the NPC using the Rock of Evolution.
|
||||
5000049 - Blue Robo - Mysterious magical powers aligned and sucessfully evolved the Baby Robo into a Blue Robo!
|
||||
|
||||
@@ -0,0 +1,259 @@
|
||||
#!/bin/sh
|
||||
# ----------------------------------------------------------------------------
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Apache Maven Wrapper startup batch script, version 3.3.2
|
||||
#
|
||||
# Optional ENV vars
|
||||
# -----------------
|
||||
# JAVA_HOME - location of a JDK home dir, required when download maven via java source
|
||||
# MVNW_REPOURL - repo url base for downloading maven distribution
|
||||
# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
|
||||
# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
set -euf
|
||||
[ "${MVNW_VERBOSE-}" != debug ] || set -x
|
||||
|
||||
# OS specific support.
|
||||
native_path() { printf %s\\n "$1"; }
|
||||
case "$(uname)" in
|
||||
CYGWIN* | MINGW*)
|
||||
[ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
|
||||
native_path() { cygpath --path --windows "$1"; }
|
||||
;;
|
||||
esac
|
||||
|
||||
# set JAVACMD and JAVACCMD
|
||||
set_java_home() {
|
||||
# For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
|
||||
if [ -n "${JAVA_HOME-}" ]; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACCMD="$JAVA_HOME/jre/sh/javac"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACCMD="$JAVA_HOME/bin/javac"
|
||||
|
||||
if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
|
||||
echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
|
||||
echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
JAVACMD="$(
|
||||
'set' +e
|
||||
'unset' -f command 2>/dev/null
|
||||
'command' -v java
|
||||
)" || :
|
||||
JAVACCMD="$(
|
||||
'set' +e
|
||||
'unset' -f command 2>/dev/null
|
||||
'command' -v javac
|
||||
)" || :
|
||||
|
||||
if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
|
||||
echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# hash string like Java String::hashCode
|
||||
hash_string() {
|
||||
str="${1:-}" h=0
|
||||
while [ -n "$str" ]; do
|
||||
char="${str%"${str#?}"}"
|
||||
h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
|
||||
str="${str#?}"
|
||||
done
|
||||
printf %x\\n $h
|
||||
}
|
||||
|
||||
verbose() { :; }
|
||||
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
|
||||
|
||||
die() {
|
||||
printf %s\\n "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
trim() {
|
||||
# MWRAPPER-139:
|
||||
# Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
|
||||
# Needed for removing poorly interpreted newline sequences when running in more
|
||||
# exotic environments such as mingw bash on Windows.
|
||||
printf "%s" "${1}" | tr -d '[:space:]'
|
||||
}
|
||||
|
||||
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
|
||||
while IFS="=" read -r key value; do
|
||||
case "${key-}" in
|
||||
distributionUrl) distributionUrl=$(trim "${value-}") ;;
|
||||
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
|
||||
esac
|
||||
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
|
||||
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
|
||||
|
||||
case "${distributionUrl##*/}" in
|
||||
maven-mvnd-*bin.*)
|
||||
MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
|
||||
case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
|
||||
*AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
|
||||
:Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
|
||||
:Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
|
||||
:Linux*x86_64*) distributionPlatform=linux-amd64 ;;
|
||||
*)
|
||||
echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
|
||||
distributionPlatform=linux-amd64
|
||||
;;
|
||||
esac
|
||||
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
|
||||
;;
|
||||
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
|
||||
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
|
||||
esac
|
||||
|
||||
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
||||
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
|
||||
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
|
||||
distributionUrlName="${distributionUrl##*/}"
|
||||
distributionUrlNameMain="${distributionUrlName%.*}"
|
||||
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
|
||||
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
|
||||
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
|
||||
|
||||
exec_maven() {
|
||||
unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
|
||||
exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
|
||||
}
|
||||
|
||||
if [ -d "$MAVEN_HOME" ]; then
|
||||
verbose "found existing MAVEN_HOME at $MAVEN_HOME"
|
||||
exec_maven "$@"
|
||||
fi
|
||||
|
||||
case "${distributionUrl-}" in
|
||||
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
|
||||
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
|
||||
esac
|
||||
|
||||
# prepare tmp dir
|
||||
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
|
||||
clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
|
||||
trap clean HUP INT TERM EXIT
|
||||
else
|
||||
die "cannot create temp dir"
|
||||
fi
|
||||
|
||||
mkdir -p -- "${MAVEN_HOME%/*}"
|
||||
|
||||
# Download and Install Apache Maven
|
||||
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
|
||||
verbose "Downloading from: $distributionUrl"
|
||||
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||
|
||||
# select .zip or .tar.gz
|
||||
if ! command -v unzip >/dev/null; then
|
||||
distributionUrl="${distributionUrl%.zip}.tar.gz"
|
||||
distributionUrlName="${distributionUrl##*/}"
|
||||
fi
|
||||
|
||||
# verbose opt
|
||||
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
|
||||
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
|
||||
|
||||
# normalize http auth
|
||||
case "${MVNW_PASSWORD:+has-password}" in
|
||||
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
|
||||
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
|
||||
esac
|
||||
|
||||
if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
|
||||
verbose "Found wget ... using wget"
|
||||
wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
|
||||
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
|
||||
verbose "Found curl ... using curl"
|
||||
curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
|
||||
elif set_java_home; then
|
||||
verbose "Falling back to use Java to download"
|
||||
javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
|
||||
targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||
cat >"$javaSource" <<-END
|
||||
public class Downloader extends java.net.Authenticator
|
||||
{
|
||||
protected java.net.PasswordAuthentication getPasswordAuthentication()
|
||||
{
|
||||
return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
|
||||
}
|
||||
public static void main( String[] args ) throws Exception
|
||||
{
|
||||
setDefault( new Downloader() );
|
||||
java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
|
||||
}
|
||||
}
|
||||
END
|
||||
# For Cygwin/MinGW, switch paths to Windows format before running javac and java
|
||||
verbose " - Compiling Downloader.java ..."
|
||||
"$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
|
||||
verbose " - Running Downloader.java ..."
|
||||
"$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
|
||||
fi
|
||||
|
||||
# If specified, validate the SHA-256 sum of the Maven distribution zip file
|
||||
if [ -n "${distributionSha256Sum-}" ]; then
|
||||
distributionSha256Result=false
|
||||
if [ "$MVN_CMD" = mvnd.sh ]; then
|
||||
echo "Checksum validation is not supported for maven-mvnd." >&2
|
||||
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
|
||||
exit 1
|
||||
elif command -v sha256sum >/dev/null; then
|
||||
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
|
||||
distributionSha256Result=true
|
||||
fi
|
||||
elif command -v shasum >/dev/null; then
|
||||
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
|
||||
distributionSha256Result=true
|
||||
fi
|
||||
else
|
||||
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
|
||||
echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ $distributionSha256Result = false ]; then
|
||||
echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
|
||||
echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# unzip and move
|
||||
if command -v unzip >/dev/null; then
|
||||
unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
|
||||
else
|
||||
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
|
||||
fi
|
||||
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
|
||||
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
|
||||
|
||||
clean || :
|
||||
exec_maven "$@"
|
||||
@@ -0,0 +1,149 @@
|
||||
<# : batch portion
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||
@REM or more contributor license agreements. See the NOTICE file
|
||||
@REM distributed with this work for additional information
|
||||
@REM regarding copyright ownership. The ASF licenses this file
|
||||
@REM to you under the Apache License, Version 2.0 (the
|
||||
@REM "License"); you may not use this file except in compliance
|
||||
@REM with the License. You may obtain a copy of the License at
|
||||
@REM
|
||||
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||
@REM
|
||||
@REM Unless required by applicable law or agreed to in writing,
|
||||
@REM software distributed under the License is distributed on an
|
||||
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
@REM KIND, either express or implied. See the License for the
|
||||
@REM specific language governing permissions and limitations
|
||||
@REM under the License.
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Apache Maven Wrapper startup batch script, version 3.3.2
|
||||
@REM
|
||||
@REM Optional ENV vars
|
||||
@REM MVNW_REPOURL - repo url base for downloading maven distribution
|
||||
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
|
||||
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
|
||||
@SET __MVNW_CMD__=
|
||||
@SET __MVNW_ERROR__=
|
||||
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
|
||||
@SET PSModulePath=
|
||||
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
|
||||
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
|
||||
)
|
||||
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
|
||||
@SET __MVNW_PSMODULEP_SAVE=
|
||||
@SET __MVNW_ARG0_NAME__=
|
||||
@SET MVNW_USERNAME=
|
||||
@SET MVNW_PASSWORD=
|
||||
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
|
||||
@echo Cannot start maven from wrapper >&2 && exit /b 1
|
||||
@GOTO :EOF
|
||||
: end batch / begin powershell #>
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
if ($env:MVNW_VERBOSE -eq "true") {
|
||||
$VerbosePreference = "Continue"
|
||||
}
|
||||
|
||||
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
|
||||
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
|
||||
if (!$distributionUrl) {
|
||||
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
|
||||
}
|
||||
|
||||
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
|
||||
"maven-mvnd-*" {
|
||||
$USE_MVND = $true
|
||||
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
|
||||
$MVN_CMD = "mvnd.cmd"
|
||||
break
|
||||
}
|
||||
default {
|
||||
$USE_MVND = $false
|
||||
$MVN_CMD = $script -replace '^mvnw','mvn'
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
||||
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
|
||||
if ($env:MVNW_REPOURL) {
|
||||
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
|
||||
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
|
||||
}
|
||||
$distributionUrlName = $distributionUrl -replace '^.*/',''
|
||||
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
|
||||
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
|
||||
if ($env:MAVEN_USER_HOME) {
|
||||
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
|
||||
}
|
||||
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
|
||||
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
|
||||
|
||||
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
|
||||
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
|
||||
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
||||
exit $?
|
||||
}
|
||||
|
||||
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
|
||||
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
|
||||
}
|
||||
|
||||
# prepare tmp dir
|
||||
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
|
||||
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
|
||||
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
|
||||
trap {
|
||||
if ($TMP_DOWNLOAD_DIR.Exists) {
|
||||
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
||||
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
||||
}
|
||||
}
|
||||
|
||||
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
|
||||
|
||||
# Download and Install Apache Maven
|
||||
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
|
||||
Write-Verbose "Downloading from: $distributionUrl"
|
||||
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||
|
||||
$webclient = New-Object System.Net.WebClient
|
||||
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
|
||||
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
|
||||
}
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
|
||||
|
||||
# If specified, validate the SHA-256 sum of the Maven distribution zip file
|
||||
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
|
||||
if ($distributionSha256Sum) {
|
||||
if ($USE_MVND) {
|
||||
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
|
||||
}
|
||||
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
|
||||
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
|
||||
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
|
||||
}
|
||||
}
|
||||
|
||||
# unzip and move
|
||||
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
|
||||
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
|
||||
try {
|
||||
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
|
||||
} catch {
|
||||
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
|
||||
Write-Error "fail to move MAVEN_HOME"
|
||||
}
|
||||
} finally {
|
||||
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
||||
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
||||
}
|
||||
|
||||
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>cosmic-maplestory</groupId>
|
||||
@@ -51,24 +50,25 @@
|
||||
<mainClass>net.server.Server</mainClass>
|
||||
|
||||
<!-- Maven plugins -->
|
||||
<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version> <!-- For running unit tests -->
|
||||
<maven-jar-plugin.version>3.4.1</maven-jar-plugin.version> <!-- Disabled. (for building thin jar) -->
|
||||
<maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version> <!-- For running unit tests -->
|
||||
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version> <!-- Disabled. (for building thin jar) -->
|
||||
<maven-assembly-plugin.version>3.7.1
|
||||
</maven-assembly-plugin.version> <!-- For packaging the executable fat jar -->
|
||||
|
||||
<!-- Dependencies -->
|
||||
<slf4j-api.version>2.0.13</slf4j-api.version> <!-- Logging facade -->
|
||||
<log4j.version>2.23.1</log4j.version> <!-- Slf4j implementation -->
|
||||
<slf4j-api.version>2.0.17</slf4j-api.version> <!-- Logging facade -->
|
||||
<log4j.version>2.25.0</log4j.version> <!-- Slf4j implementation -->
|
||||
<graalvm-js.version>23.0.4</graalvm-js.version>
|
||||
<graalvm-js-scriptengine.version>24.0.1</graalvm-js-scriptengine.version> <!-- ScriptEngine implementation -->
|
||||
<netty.version>4.1.109.Final</netty.version> <!-- Networking -->
|
||||
<netty.version>4.2.2.Final</netty.version> <!-- Networking -->
|
||||
<yamlbeans.version>1.17</yamlbeans.version> <!-- Config file -->
|
||||
<jcip-annotations.version>1.0</jcip-annotations.version> <!-- Annotations for concurrency documentation -->
|
||||
<HikariCP.version>5.1.0</HikariCP.version> <!-- Database connection pool -->
|
||||
<mysql-connector-j.version>8.4.0</mysql-connector-j.version> <!-- MySQL JDBC driver -->
|
||||
<jdbi-version>3.45.1</jdbi-version> <!-- Convenience wrapper around JDBC -->
|
||||
<junit.version>5.10.2</junit.version> <!-- Unit test -->
|
||||
<mockito.version>5.11.0</mockito.version> <!-- Unit test -->
|
||||
<HikariCP.version>6.3.0</HikariCP.version> <!-- Database connection pool -->
|
||||
<mysql-connector-j.version>9.3.0</mysql-connector-j.version> <!-- MySQL JDBC driver -->
|
||||
<jdbi-version>3.49.5</jdbi-version> <!-- Convenience wrapper around JDBC -->
|
||||
<liquibase-core.version>4.32.0</liquibase-core.version> <!-- Database migrations -->
|
||||
<junit.version>5.13.1</junit.version> <!-- Unit test -->
|
||||
<mockito.version>5.18.0</mockito.version> <!-- Unit test -->
|
||||
<testcontainers.version>1.20.1</testcontainers.version> <!-- Docker test with real temporary database -->
|
||||
<postgresql.version>42.5.4</postgresql.version> <!-- PostgreSQL JDBC driver -->
|
||||
<flyway.version>9.15.1</flyway.version> <!-- Database migration -->
|
||||
@@ -125,7 +125,11 @@
|
||||
<artifactId>flyway-core</artifactId>
|
||||
<version>${flyway.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.liquibase</groupId>
|
||||
<artifactId>liquibase-core</artifactId>
|
||||
<version>${liquibase-core.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Networking -->
|
||||
<dependency>
|
||||
|
||||
+3
-199
@@ -21,25 +21,13 @@ var cpqMaxLvl = 50;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
var refineRocks = true; // enables moon rock, star rock
|
||||
var refineCrystals = true; // enables common crystals
|
||||
var refineSpecials = true; // enables lithium, special crystals
|
||||
var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_CPQ) {
|
||||
if (YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
status = 0;
|
||||
action(1, 0, 4);
|
||||
} else {
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -239,9 +227,6 @@ function action(mode, type, selection) {
|
||||
} else {
|
||||
if (status == 0) {
|
||||
var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l";
|
||||
if (YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
cm.sendSimple(talk);
|
||||
} else if (status == 1) {
|
||||
if (selection == 0) {
|
||||
@@ -269,24 +254,6 @@ function action(mode, type, selection) {
|
||||
cm.warp(980030000, 0);
|
||||
cm.dispose();
|
||||
|
||||
} else if (selection == 4) {
|
||||
var selStr = "Very well, instead I offer a steadfast #bore refining#k service for you, taxing #r" + ((feeMultiplier * 100) | 0) + "%#k over the usual fee to synthetize them. What will you do?#b";
|
||||
|
||||
var options = ["Refine mineral ores", "Refine jewel ores"];
|
||||
if (refineCrystals) {
|
||||
options.push("Refine crystal ores");
|
||||
}
|
||||
if (refineRocks) {
|
||||
options.push("Refine plates/jewels");
|
||||
}
|
||||
|
||||
for (var i = 0; i < options.length; i++) {
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
|
||||
cm.sendSimple(selStr);
|
||||
|
||||
status = 76;
|
||||
}
|
||||
} else if (status == 2) {
|
||||
select = selection;
|
||||
@@ -445,170 +412,7 @@ function action(mode, type, selection) {
|
||||
} else if (status == 66) {
|
||||
cm.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
if (selection == 0) {
|
||||
allDone = refineItems(0); // minerals
|
||||
} else if (selection == 1) {
|
||||
allDone = refineItems(1); // jewels
|
||||
} else if (selection == 2 && refineCrystals) {
|
||||
allDone = refineItems(2); // crystals
|
||||
} else if (selection == 2 && !refineCrystals || selection == 3) {
|
||||
allDone = refineRockItems(); // moon/star rock
|
||||
}
|
||||
|
||||
if (allDone) {
|
||||
cm.sendOk("Done. Thanks for showing up~.");
|
||||
} else {
|
||||
cm.sendOk("Done. Be aware some of the items #rcould not be synthetized#k because either you have a lack of space on your ETC inventory or there's not enough mesos to cover the fee.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getRefineFee(fee) {
|
||||
return ((feeMultiplier * fee) | 0);
|
||||
}
|
||||
|
||||
function isRefineTarget(refineType, refineItemid) {
|
||||
if (refineType == 0) { //mineral refine
|
||||
return refineItemid >= 4010000 && refineItemid <= 4010007 && !(refineItemid == 4010007 && !refineSpecials);
|
||||
} else if (refineType == 1) { //jewel refine
|
||||
return refineItemid >= 4020000 && refineItemid <= 4020008 && !(refineItemid == 4020008 && !refineSpecials);
|
||||
} else if (refineType == 2) { //crystal refine
|
||||
return refineItemid >= 4004000 && refineItemid <= 4004004 && !(refineItemid == 4004004 && !refineSpecials);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getRockRefineTarget(refineItemid) {
|
||||
if (refineItemid >= 4011000 && refineItemid <= 4011006) {
|
||||
return 0;
|
||||
} else if (refineItemid >= 4021000 && refineItemid <= 4021008) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function refineItems(refineType) {
|
||||
var allDone = true;
|
||||
|
||||
var refineFees = [[300, 300, 300, 500, 500, 500, 800, 270], [500, 500, 500, 500, 500, 500, 500, 1000, 3000], [5000, 5000, 5000, 5000, 1000000]];
|
||||
var itemCount = {};
|
||||
|
||||
const InventoryType = Java.type('client.inventory.InventoryType');
|
||||
var iter = cm.getPlayer().getInventory(InventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
|
||||
if (isRefineTarget(refineType, itemid)) {
|
||||
var ic = itemCount[itemid];
|
||||
|
||||
if (ic != undefined) {
|
||||
itemCount[itemid] += it.getQuantity();
|
||||
} else {
|
||||
itemCount[itemid] = it.getQuantity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var key in itemCount) {
|
||||
var itemqty = itemCount[key];
|
||||
var itemid = parseInt(key);
|
||||
|
||||
var refineQty = ((itemqty / 10) | 0);
|
||||
if (refineQty <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if (cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
break;
|
||||
} else if (refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
function refineRockItems() {
|
||||
var allDone = true;
|
||||
var minItems = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
|
||||
var minRocks = [2147483647, 2147483647];
|
||||
|
||||
var rockItems = [4011007, 4021009];
|
||||
var rockFees = [10000, 15000];
|
||||
|
||||
const InventoryType = Java.type('client.inventory.InventoryType');
|
||||
var iter = cm.getPlayer().getInventory(InventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
var rockRefine = getRockRefineTarget(itemid);
|
||||
if (rockRefine >= 0) {
|
||||
var rockItem = ((itemid % 100) | 0);
|
||||
var itemqty = it.getQuantity();
|
||||
|
||||
minItems[rockRefine][rockItem] += itemqty;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < minRocks.length; i++) {
|
||||
for (var j = 0; j < minItems[i].length; j++) {
|
||||
if (minRocks[i] > minItems[i][j]) {
|
||||
minRocks[i] = minItems[i][j];
|
||||
}
|
||||
}
|
||||
if (minRocks[i] <= 0 || minRocks[i] == 2147483647) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var refineQty = minRocks[i];
|
||||
while (true) {
|
||||
var fee = getRefineFee(rockFees[i] * refineQty);
|
||||
if (cm.canHold(rockItems[i], refineQty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
|
||||
var j;
|
||||
if (i == 0) {
|
||||
for (j = 4011000; j < 4011007; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
} else {
|
||||
for (j = 4021000; j < 4021009; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
}
|
||||
|
||||
break;
|
||||
} else if (refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
}
|
||||
+5
-200
@@ -3,6 +3,7 @@
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Ronan (HeavenMS)
|
||||
3.0 - Third Version by Jayd - translated CPQ contents to English and added Pirate items
|
||||
Special thanks to 頼晏 (ryantpayton) for also stepping in to translate CPQ scripts.
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
@@ -20,25 +21,13 @@ var cpqMaxLvl = 50;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
var refineRocks = true; // enables moon rock, star rock
|
||||
var refineCrystals = true; // enables common crystals
|
||||
var refineSpecials = true; // enables lithium, special crystals
|
||||
var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_CPQ) {
|
||||
if (YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
status = 0;
|
||||
action(1, 0, 4);
|
||||
} else {
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -238,9 +227,6 @@ function action(mode, type, selection) {
|
||||
} else {
|
||||
if (status == 0) {
|
||||
var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l";
|
||||
if (YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
cm.sendSimple(talk);
|
||||
} else if (status == 1) {
|
||||
if (selection == 0) {
|
||||
@@ -268,24 +254,6 @@ function action(mode, type, selection) {
|
||||
cm.warp(980030000, 0);
|
||||
cm.dispose();
|
||||
|
||||
} else if (selection == 4) {
|
||||
var selStr = "Very well, instead I offer a steadfast #bore refining#k service for you, taxing #r" + ((feeMultiplier * 100) | 0) + "%#k over the usual fee to synthetize them. What will you do?#b";
|
||||
|
||||
var options = ["Refine mineral ores", "Refine jewel ores"];
|
||||
if (refineCrystals) {
|
||||
options.push("Refine crystal ores");
|
||||
}
|
||||
if (refineRocks) {
|
||||
options.push("Refine plates/jewels");
|
||||
}
|
||||
|
||||
for (var i = 0; i < options.length; i++) {
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
|
||||
cm.sendSimple(selStr);
|
||||
|
||||
status = 76;
|
||||
}
|
||||
} else if (status == 2) {
|
||||
select = selection;
|
||||
@@ -439,175 +407,12 @@ function action(mode, type, selection) {
|
||||
cm.sendNext("Oh, and do not worry about turning into a ghost. In the Monster Carnival, #byou will not lose EXP after death#k. So it's really an experience like no other!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
cm.sendNext("#bProtector#k is basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
}
|
||||
} else if (status == 66) {
|
||||
cm.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
if (selection == 0) {
|
||||
allDone = refineItems(0); // minerals
|
||||
} else if (selection == 1) {
|
||||
allDone = refineItems(1); // jewels
|
||||
} else if (selection == 2 && refineCrystals) {
|
||||
allDone = refineItems(2); // crystals
|
||||
} else if (selection == 2 && !refineCrystals || selection == 3) {
|
||||
allDone = refineRockItems(); // moon/star rock
|
||||
}
|
||||
|
||||
if (allDone) {
|
||||
cm.sendOk("Done. Thanks for showing up~.");
|
||||
} else {
|
||||
cm.sendOk("Done. Be aware some of the items #rcould not be synthetized#k because either you have a lack of space on your ETC inventory or there's not enough mesos to cover the fee.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getRefineFee(fee) {
|
||||
return ((feeMultiplier * fee) | 0);
|
||||
}
|
||||
|
||||
function isRefineTarget(refineType, refineItemid) {
|
||||
if (refineType == 0) { //mineral refine
|
||||
return refineItemid >= 4010000 && refineItemid <= 4010007 && !(refineItemid == 4010007 && !refineSpecials);
|
||||
} else if (refineType == 1) { //jewel refine
|
||||
return refineItemid >= 4020000 && refineItemid <= 4020008 && !(refineItemid == 4020008 && !refineSpecials);
|
||||
} else if (refineType == 2) { //crystal refine
|
||||
return refineItemid >= 4004000 && refineItemid <= 4004004 && !(refineItemid == 4004004 && !refineSpecials);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getRockRefineTarget(refineItemid) {
|
||||
if (refineItemid >= 4011000 && refineItemid <= 4011006) {
|
||||
return 0;
|
||||
} else if (refineItemid >= 4021000 && refineItemid <= 4021008) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function refineItems(refineType) {
|
||||
var allDone = true;
|
||||
|
||||
var refineFees = [[300, 300, 300, 500, 500, 500, 800, 270], [500, 500, 500, 500, 500, 500, 500, 1000, 3000], [5000, 5000, 5000, 5000, 1000000]];
|
||||
var itemCount = {};
|
||||
|
||||
const InventoryType = Java.type('client.inventory.InventoryType');
|
||||
var iter = cm.getPlayer().getInventory(InventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
|
||||
if (isRefineTarget(refineType, itemid)) {
|
||||
var ic = itemCount[itemid];
|
||||
|
||||
if (ic != undefined) {
|
||||
itemCount[itemid] += it.getQuantity();
|
||||
} else {
|
||||
itemCount[itemid] = it.getQuantity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var key in itemCount) {
|
||||
var itemqty = itemCount[key];
|
||||
var itemid = parseInt(key);
|
||||
|
||||
var refineQty = ((itemqty / 10) | 0);
|
||||
if (refineQty <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if (cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
break;
|
||||
} else if (refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
function refineRockItems() {
|
||||
var allDone = true;
|
||||
var minItems = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
|
||||
var minRocks = [2147483647, 2147483647];
|
||||
|
||||
var rockItems = [4011007, 4021009];
|
||||
var rockFees = [10000, 15000];
|
||||
|
||||
const InventoryType = Java.type('client.inventory.InventoryType');
|
||||
var iter = cm.getPlayer().getInventory(InventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
var rockRefine = getRockRefineTarget(itemid);
|
||||
if (rockRefine >= 0) {
|
||||
var rockItem = ((itemid % 100) | 0);
|
||||
var itemqty = it.getQuantity();
|
||||
|
||||
minItems[rockRefine][rockItem] += itemqty;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < minRocks.length; i++) {
|
||||
for (var j = 0; j < minItems[i].length; j++) {
|
||||
if (minRocks[i] > minItems[i][j]) {
|
||||
minRocks[i] = minItems[i][j];
|
||||
}
|
||||
}
|
||||
if (minRocks[i] <= 0 || minRocks[i] == 2147483647) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var refineQty = minRocks[i];
|
||||
while (true) {
|
||||
var fee = getRefineFee(rockFees[i] * refineQty);
|
||||
if (cm.canHold(rockItems[i], refineQty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
|
||||
var j;
|
||||
if (i == 0) {
|
||||
for (j = 4011000; j < 4011007; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
} else {
|
||||
for (j = 4021000; j < 4021009; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
}
|
||||
|
||||
break;
|
||||
} else if (refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
}
|
||||
+9
-205
@@ -3,6 +3,7 @@
|
||||
1.0 - First Version by Drago (MapleStorySA)
|
||||
2.0 - Second Version by Ronan (HeavenMS)
|
||||
3.0 - Third Version by Jayd - translated CPQ contents to English and added Pirate items
|
||||
Special thanks to 頼晏 (ryantpayton) for also stepping in to translate CPQ scripts.
|
||||
---------------------------------------------------------------------------------------------------
|
||||
**/
|
||||
|
||||
@@ -20,25 +21,13 @@ var cpqMaxLvl = 50;
|
||||
var cpqMinAmt = 2;
|
||||
var cpqMaxAmt = 6;
|
||||
|
||||
// Ronan's custom ore refiner NPC
|
||||
var refineRocks = true; // enables moon rock, star rock
|
||||
var refineCrystals = true; // enables common crystals
|
||||
var refineSpecials = true; // enables lithium, special crystals
|
||||
var feeMultiplier = 7.0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_CPQ) {
|
||||
if (YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
status = 0;
|
||||
action(1, 0, 4);
|
||||
} else {
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
cm.sendOk("The Monster Carnival is currently unavailable.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -59,6 +48,7 @@ function action(mode, type, selection) {
|
||||
status--;
|
||||
}
|
||||
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (cm.getPlayer().getMapId() == 980000010) {
|
||||
if (status == 0) {
|
||||
cm.sendNext("I hope you had fun at the Monster Carnival!");
|
||||
@@ -222,9 +212,9 @@ function action(mode, type, selection) {
|
||||
}
|
||||
} else {
|
||||
var party = cm.getParty().getMembers();
|
||||
if ((selection >= 0 && selection <= 3) && party.size() < 1) {
|
||||
if ((selection >= 0 && selection <= 3) && party.size() < (YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 2)) {
|
||||
cm.sendOk("You need at least 2 players to participate in the battle!");
|
||||
} else if ((selection >= 4 && selection <= 5) && party.size() < 1) {
|
||||
} else if ((selection >= 4 && selection <= 5) && party.size() < (YamlConfig.config.server.USE_ENABLE_SOLO_EXPEDITIONS ? 1 : 3)) {
|
||||
cm.sendOk("You need at least 3 players to participate in the battle!");
|
||||
} else {
|
||||
cm.cpqLobby(selection);
|
||||
@@ -237,11 +227,6 @@ function action(mode, type, selection) {
|
||||
} else {
|
||||
if (status == 0) {
|
||||
var talk = "What would you like to do? If you have never participate in the Monster Carnival, you will need to know a few things before participating! \r\n#b#L0# Go to the Monster Carnival 1.#l \r\n#L3# Go to the Monster Carnival 2.#l \r\n#L1# Learn about the Monster Carnival.#l\r\n#L2# Trade #t4001129#.#l";
|
||||
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
talk += "\r\n#L4# ... Can I just refine my ores?#l";
|
||||
}
|
||||
cm.sendSimple(talk);
|
||||
} else if (status == 1) {
|
||||
if (selection == 0) {
|
||||
@@ -269,24 +254,6 @@ function action(mode, type, selection) {
|
||||
cm.warp(980030000, 0);
|
||||
cm.dispose();
|
||||
|
||||
} else if (selection == 4) {
|
||||
var selStr = "Very well, instead I offer a steadfast #bore refining#k service for you, taxing #r" + ((feeMultiplier * 100) | 0) + "%#k over the usual fee to synthetize them. What will you do?#b";
|
||||
|
||||
var options = ["Refine mineral ores", "Refine jewel ores"];
|
||||
if (refineCrystals) {
|
||||
options.push("Refine crystal ores");
|
||||
}
|
||||
if (refineRocks) {
|
||||
options.push("Refine plates/jewels");
|
||||
}
|
||||
|
||||
for (var i = 0; i < options.length; i++) {
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
|
||||
cm.sendSimple(selStr);
|
||||
|
||||
status = 76;
|
||||
}
|
||||
} else if (status == 2) {
|
||||
select = selection;
|
||||
@@ -310,7 +277,7 @@ function action(mode, type, selection) {
|
||||
}
|
||||
} else if (select == 2) {//S2 Warrior 26 S3 Magician 6 S4 Bowman 6 S5 Thief 8
|
||||
status = 10;
|
||||
cm.sendSimple("Please make sure you have #t4001129# for the weapon you want. Select the weapon you would like to trade #t4001129#. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page(1/2)#l");
|
||||
cm.sendSimple("Please make sure you have # t4001129 # for the weapon you want. Select the weapon you would like to trade # t4001129 #. The choices I have are really good, and I'm not the one who speaks to the people who say it! \r\n#b#L0# #z1302004# (" + n3 + " coins)#l\r\n#L1# #z1402006# (" + n3 + " coins)#l\r\n#L2# #z1302009# (" + n4 + " coins)#l\r\n#L3# #z1402007# (" + n4 + " coins)#l\r\n#L4# #z1302010# (" + n5 + " coins)#l\r\n#L5# #z1402003# (" + n5 + " coins)#l\r\n#L6# #z1312006# (" + n3 + " coins)#l\r\n#L7# #z1412004# (" + n3 + " coins)#l\r\n#L8# #z1312007# (" + n4 + " coins)#l\r\n#L9# #z1412005# (" + n4 + " coins)#l\r\n#L10# #z1312008# (" + n5 + " coins)#l\r\n#L11# #z1412003# (" + n5 + " coins)#l\r\n#L12# Continue to the next page (1/2)#l");
|
||||
} else if (select == 3) {
|
||||
status = 20;
|
||||
cm.sendSimple("Select the weapon you would like to trade. The weapons I have here are extremely attractive. See for yourself! \r\n#b#L0# #z1372001# (" + n3 + " coins)#l\r\n#L1# #z1382018# (" + n3 + " coins)#l\r\n#L2# #z1372012# (" + n4 + " coins)#l\r\n#L3# #z1382019# (" + n4 + " coins)#l\r\n#L4# #z1382001# (" + n5 + " coins)#l\r\n#L5# #z1372007# (" + n5 + " coins)#l");
|
||||
@@ -440,175 +407,12 @@ function action(mode, type, selection) {
|
||||
cm.sendNext("Oh, and do not worry about turning into a ghost. In the Monster Carnival, #byou will not lose EXP after death#k. So it's really an experience like no other!");
|
||||
cm.dispose();
|
||||
} else if (select == 2) {
|
||||
cm.sendNext("#bProtetor#k basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
cm.sendNext("#bProtector#k is basically an invoked item that drastically increases the abilities of the monsters invoked by your group. Protector works until it is demolished by the opposing group, so I'm hoping you'll summon several monsters first, and then bring the Protector.");
|
||||
}
|
||||
} else if (status == 66) {
|
||||
cm.sendNext("Lastly, while in the Monster Carnival, #byou can not use items / recovery potions that you carry around with you. #kMeanwhile, the monsters let these items fall for good. when, and when you #bget them, the item will immediately activate#k. That's why it's important to know when to get these items.");
|
||||
cm.dispose();
|
||||
} else if (status == 77) {
|
||||
var allDone;
|
||||
|
||||
if (selection == 0) {
|
||||
allDone = refineItems(0); // minerals
|
||||
} else if (selection == 1) {
|
||||
allDone = refineItems(1); // jewels
|
||||
} else if (selection == 2 && refineCrystals) {
|
||||
allDone = refineItems(2); // crystals
|
||||
} else if (selection == 2 && !refineCrystals || selection == 3) {
|
||||
allDone = refineRockItems(); // moon/star rock
|
||||
}
|
||||
|
||||
if (allDone) {
|
||||
cm.sendOk("Done. Thanks for showing up~.");
|
||||
} else {
|
||||
cm.sendOk("Done. Be aware some of the items #rcould not be synthetized#k because either you have a lack of space on your ETC inventory or there's not enough mesos to cover the fee.");
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getRefineFee(fee) {
|
||||
return ((feeMultiplier * fee) | 0);
|
||||
}
|
||||
|
||||
function isRefineTarget(refineType, refineItemid) {
|
||||
if (refineType == 0) { //mineral refine
|
||||
return refineItemid >= 4010000 && refineItemid <= 4010007 && !(refineItemid == 4010007 && !refineSpecials);
|
||||
} else if (refineType == 1) { //jewel refine
|
||||
return refineItemid >= 4020000 && refineItemid <= 4020008 && !(refineItemid == 4020008 && !refineSpecials);
|
||||
} else if (refineType == 2) { //crystal refine
|
||||
return refineItemid >= 4004000 && refineItemid <= 4004004 && !(refineItemid == 4004004 && !refineSpecials);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function getRockRefineTarget(refineItemid) {
|
||||
if (refineItemid >= 4011000 && refineItemid <= 4011006) {
|
||||
return 0;
|
||||
} else if (refineItemid >= 4021000 && refineItemid <= 4021008) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function refineItems(refineType) {
|
||||
var allDone = true;
|
||||
|
||||
var refineFees = [[300, 300, 300, 500, 500, 500, 800, 270], [500, 500, 500, 500, 500, 500, 500, 1000, 3000], [5000, 5000, 5000, 5000, 1000000]];
|
||||
var itemCount = {};
|
||||
|
||||
const InventoryType = Java.type('client.inventory.InventoryType');
|
||||
var iter = cm.getPlayer().getInventory(InventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
|
||||
if (isRefineTarget(refineType, itemid)) {
|
||||
var ic = itemCount[itemid];
|
||||
|
||||
if (ic != undefined) {
|
||||
itemCount[itemid] += it.getQuantity();
|
||||
} else {
|
||||
itemCount[itemid] = it.getQuantity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var key in itemCount) {
|
||||
var itemqty = itemCount[key];
|
||||
var itemid = parseInt(key);
|
||||
|
||||
var refineQty = ((itemqty / 10) | 0);
|
||||
if (refineQty <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
itemqty = refineQty * 10;
|
||||
|
||||
var fee = getRefineFee(refineFees[refineType][(itemid % 100) | 0] * refineQty);
|
||||
if (cm.canHold(itemid + 1000, refineQty, itemid, itemqty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
cm.gainItem(itemid, -itemqty);
|
||||
cm.gainItem(itemid + (itemid != 4010007 ? 1000 : 1001), refineQty);
|
||||
|
||||
break;
|
||||
} else if (refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
|
||||
function refineRockItems() {
|
||||
var allDone = true;
|
||||
var minItems = [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
|
||||
var minRocks = [2147483647, 2147483647];
|
||||
|
||||
var rockItems = [4011007, 4021009];
|
||||
var rockFees = [10000, 15000];
|
||||
|
||||
const InventoryType = Java.type('client.inventory.InventoryType');
|
||||
var iter = cm.getPlayer().getInventory(InventoryType.ETC).iterator();
|
||||
while (iter.hasNext()) {
|
||||
var it = iter.next();
|
||||
var itemid = it.getItemId();
|
||||
var rockRefine = getRockRefineTarget(itemid);
|
||||
if (rockRefine >= 0) {
|
||||
var rockItem = ((itemid % 100) | 0);
|
||||
var itemqty = it.getQuantity();
|
||||
|
||||
minItems[rockRefine][rockItem] += itemqty;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < minRocks.length; i++) {
|
||||
for (var j = 0; j < minItems[i].length; j++) {
|
||||
if (minRocks[i] > minItems[i][j]) {
|
||||
minRocks[i] = minItems[i][j];
|
||||
}
|
||||
}
|
||||
if (minRocks[i] <= 0 || minRocks[i] == 2147483647) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var refineQty = minRocks[i];
|
||||
while (true) {
|
||||
var fee = getRefineFee(rockFees[i] * refineQty);
|
||||
if (cm.canHold(rockItems[i], refineQty) && cm.getMeso() >= fee) {
|
||||
cm.gainMeso(-fee);
|
||||
|
||||
var j;
|
||||
if (i == 0) {
|
||||
for (j = 4011000; j < 4011007; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
} else {
|
||||
for (j = 4021000; j < 4021009; j++) {
|
||||
cm.gainItem(j, -refineQty);
|
||||
}
|
||||
cm.gainItem(j, refineQty);
|
||||
}
|
||||
|
||||
break;
|
||||
} else if (refineQty <= 1) {
|
||||
allDone = false;
|
||||
break;
|
||||
} else {
|
||||
refineQty--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allDone;
|
||||
}
|
||||
}
|
||||
+3
-121
@@ -17,127 +17,9 @@
|
||||
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/>.
|
||||
*/
|
||||
/* Coco
|
||||
Refining NPC:
|
||||
* Chaos scroll SYNTHETIZER (rofl)
|
||||
*
|
||||
* @author RonanLana (ronancpl)
|
||||
*/
|
||||
|
||||
var status = 0;
|
||||
var selectedType = -1;
|
||||
var selectedItem = -1;
|
||||
var item;
|
||||
var mats;
|
||||
var matQty;
|
||||
var cost;
|
||||
var qty;
|
||||
var equip;
|
||||
var last_use; //last item is a use item
|
||||
/* Coco */
|
||||
|
||||
function start() {
|
||||
cm.getPlayer().setCS(true);
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == 1) {
|
||||
status++;
|
||||
} else {
|
||||
cm.sendOk("Oh, ok... Talk back to us when you want to make business.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (status == 0) {
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
cm.sendOk("Hi, I'm #b#p" + cm.getNpc() + "##k.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
var selStr = "Hey traveler! Come, come closer... We offer a #bhuge opportunity of business#k to you. If you want to know what it is, keep listening...";
|
||||
cm.sendNext(selStr);
|
||||
} else if (status == 1) {
|
||||
var selStr = "We've got here the knowledge to synthetize the mighty #b#t2049100##k! Of course, making one is not an easy task... But worry not! Just gather some material to me and a fee of #b1,200,000 mesos#k for our services to #bobtain it#k. You still want to do it?";
|
||||
cm.sendYesNo(selStr);
|
||||
} else if (status == 2) {
|
||||
//selectedItem = selection;
|
||||
selectedItem = 0;
|
||||
|
||||
var itemSet = [2049100, 7777777];
|
||||
var matSet = new Array([4031203, 4001356, 4000136, 4000082, 4001126, 4080100, 4000021, 4003005]);
|
||||
var matQtySet = new Array([100, 60, 40, 80, 10, 8, 200, 120]);
|
||||
var costSet = [1200000, 7777777];
|
||||
item = itemSet[selectedItem];
|
||||
mats = matSet[selectedItem];
|
||||
matQty = matQtySet[selectedItem];
|
||||
cost = costSet[selectedItem];
|
||||
|
||||
var prompt = "So, you want us to make some #t" + item + "#? In that case, how many do you want us to make?";
|
||||
cm.sendGetNumber(prompt, 1, 1, 100)
|
||||
} else if (status == 3) {
|
||||
qty = (selection > 0) ? selection : (selection < 0 ? -selection : 1);
|
||||
last_use = false;
|
||||
|
||||
var prompt = "You want us to make ";
|
||||
if (qty == 1) {
|
||||
prompt += "a #t" + item + "#?";
|
||||
} else {
|
||||
prompt += qty + " #t" + item + "#?";
|
||||
}
|
||||
|
||||
prompt += " In that case, we're going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b";
|
||||
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++) {
|
||||
prompt += "\r\n#i" + mats[i] + "# " + matQty[i] * qty + " #t" + mats[i] + "#";
|
||||
}
|
||||
} else {
|
||||
prompt += "\r\n#i" + mats + "# " + matQty * qty + " #t" + mats + "#";
|
||||
}
|
||||
|
||||
if (cost > 0) {
|
||||
prompt += "\r\n#i4031138# " + cost * qty + " meso";
|
||||
}
|
||||
cm.sendYesNo(prompt);
|
||||
} else if (status == 4) {
|
||||
var complete = true;
|
||||
|
||||
if (cm.getMeso() < cost * qty) {
|
||||
cm.sendOk("Come on! We're not here doing you a favor! We all need money to live properly, so bring the cash so we make deal and start the synthesis.");
|
||||
} else if (!cm.canHold(item, qty)) {
|
||||
cm.sendOk("You didn't check if you got a slot to spare on your inventory before our business, no?");
|
||||
} else {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; complete && i < mats.length; i++) {
|
||||
if (matQty[i] * qty == 1) {
|
||||
complete = cm.haveItem(mats[i]);
|
||||
} else {
|
||||
complete = cm.haveItem(mats[i], matQty[i] * qty);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
complete = cm.haveItem(mats, matQty * qty);
|
||||
}
|
||||
|
||||
if (!complete) {
|
||||
cm.sendOk("You kidding, right? We won't be able to start the process without all the ingredients at hands. Go get all of them and then talk to us!");
|
||||
} else {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++) {
|
||||
cm.gainItem(mats[i], -matQty[i] * qty);
|
||||
}
|
||||
} else {
|
||||
cm.gainItem(mats, -matQty * qty);
|
||||
}
|
||||
cm.gainMeso(-cost * qty);
|
||||
cm.gainItem(item, qty);
|
||||
cm.sendOk("Wow... can't believe it worked! To think for a moment that it could f... Ahem. Of course it worked, all work of ours are very efficient! Nice doing business with you.");
|
||||
}
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
cm.sendDefault();
|
||||
cm.dispose();
|
||||
}
|
||||
+2
-201
@@ -19,208 +19,9 @@
|
||||
*/
|
||||
/* NPC: Agent E (9000036)
|
||||
Victoria Road : Henesys
|
||||
|
||||
Refining NPC:
|
||||
* Accessories refiner
|
||||
*
|
||||
* @author Ronan Lana
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
var selectedType = -1;
|
||||
var selectedItem = -1;
|
||||
var item;
|
||||
var items;
|
||||
var mats;
|
||||
var matQty;
|
||||
var cost;
|
||||
var qty = 1;
|
||||
var equip;
|
||||
var maxEqp = 0;
|
||||
|
||||
function start() {
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
cm.sendOk("Hi, I'm #b#p" + cm.getNpc() + "##k.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
cm.getPlayer().setCS(true);
|
||||
var selStr = "Hello, I am the #bAccessory NPC Crafter#k! My works are widely recognized to be too fine, up to the point at which all my items mimic not only the appearance but too the attributes of them! Everything I charge is some 'ingredients' to make them and, of course, a fee for my services. On what kind of equipment are you interessed?#b";
|
||||
var options = ["Pendants", "Face accessories", "Eye accessories", "Belts & medals", "Rings"/*,"#t4032496#"*/];
|
||||
for (var i = 0; i < options.length; i++) {
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
cm.sendSimple(selStr);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
status++;
|
||||
if (mode != 1) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (status == 0) {
|
||||
if (selection == 0) { //pendants
|
||||
var selStr = "Well, I've got these pendants on my repertoire:#b";
|
||||
items = [1122018, 1122007, 1122001, 1122003, 1122004, 1122006, 1122002, 1122005, 1122058];
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
selStr += "\r\n#L" + i + "##t" + items[i] + "##b";
|
||||
}
|
||||
} else if (selection == 1) { //face accessory
|
||||
var selStr = "Hmm, face accessories? There you go: #b";
|
||||
items = [1012181, 1012182, 1012183, 1012184, 1012185, 1012186, 1012108, 1012109, 1012110, 1012111];
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
selStr += "\r\n#L" + i + "##t" + items[i] + "##b";
|
||||
}
|
||||
} else if (selection == 2) { //eye accessory
|
||||
var selStr = "Got hard sight? Okay, so which glasses do you want me to make?#b";
|
||||
items = [1022073, 1022088, 1022103, 1022089, 1022082];
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
selStr += "\r\n#L" + i + "##t" + items[i] + "##b";
|
||||
}
|
||||
} else if (selection == 3) { //belt & medal
|
||||
var selStr = "Hmm... For these, things get a little tricky. Since these items are too short and too similar one another, I don't really know what item will emerge when I finish the synthesis. Still wanna try for something?";
|
||||
items = [];
|
||||
maxEqp = 0;
|
||||
|
||||
for (var x = 1132005; x < 1132017; maxEqp++, x++) {
|
||||
items[maxEqp] = x;
|
||||
}
|
||||
|
||||
for (var x = 1142000; x < 1142102; maxEqp++, x++) {
|
||||
items[maxEqp] = x;
|
||||
}
|
||||
|
||||
for (var x = 1142107; x < 1142121; maxEqp++, x++) {
|
||||
items[maxEqp] = x;
|
||||
}
|
||||
|
||||
for (var x = 1142122; x < 1142143; maxEqp++, x++) {
|
||||
items[maxEqp] = x;
|
||||
}
|
||||
selStr += "\r\n#L" + i + "##bTry it!#b";
|
||||
|
||||
} else if (selection == 4) { //ring refine
|
||||
var selStr = "Rings, huh? These are my specialty, go check it yourself!#b";
|
||||
items = [1112407, 1112408, 1112401, 1112413, 1112414, 1112405, 1112402];
|
||||
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
selStr += "\r\n#L" + i + "##t" + items[i] + "##b";
|
||||
}
|
||||
|
||||
}/*else if (selection == 5) { //make necklace
|
||||
var selStr = "Need to make #t4032496#?#b";
|
||||
items = [4032496];
|
||||
for (var i = 0; i < items.length; i++)
|
||||
selStr += "\r\n#L" + i + "##t" + items[i] + "##l";
|
||||
}*/
|
||||
selectedType = selection;
|
||||
cm.sendSimple(selStr);
|
||||
} else if (status == 1) {
|
||||
if (selectedType != 3) {
|
||||
selectedItem = selection;
|
||||
}
|
||||
|
||||
if (selectedType == 0) { //pendant refine
|
||||
var matSet = [[4003004, 4030012, 4001356, 4000026], [4000026, 4001356, 4000073, 4001006], [4001343, 4011002, 4003004, 4003005], [4001343, 4011006, 4003004, 4003005], [4000091, 4011005, 4003004, 4003005], [4000091, 4011001, 4003004, 4003005], [4000469, 4011000, 4003004, 4003005], [4000469, 4011004, 4003004, 4003005], [1122007, 4003002, 4000413]];
|
||||
var matQtySet = [[20, 20, 5, 1], [5, 5, 10, 1], [10, 2, 20, 4], [10, 1, 20, 4], [15, 3, 30, 6], [15, 3, 30, 6], [20, 5, 20, 8], [20, 4, 40, 8], [1, 1, 1]];
|
||||
var costSet = [150000, 500000, 200000, 200000, 300000, 300000, 400000, 400000, 2500000];
|
||||
} else if (selectedType == 1) { //face accessory refine
|
||||
var matSet = [[4006000, 4003004], [4006000, 4003004, 4000026], [4006000, 4003004, 4000026, 4000082, 4003002], [4006000, 4003005], [4006000, 4003005, 4000026], [4006000, 4003005, 4000026, 4000082, 4003002], [4001006, 4011008], [4001006, 4011008], [4001006, 4011008], [4001006, 4011008]];
|
||||
var matQtySet = [[5, 5], [5, 5, 5], [5, 5, 5, 5, 1], [5, 5], [5, 5, 5], [5, 5, 5, 5, 1], [1, 1], [1, 1], [1, 1], [1, 1]];
|
||||
var costSet = [100000, 200000, 300000, 125000, 250000, 375000, 500000, 500000, 500000, 500000, 25000, 25000, 25000, 25000];
|
||||
} else if (selectedType == 2) { //eye accessory refine
|
||||
var matSet = [[4001006, 4003002, 4000082, 4031203], [4001005, 4011008], [4001005, 4011008], [4001005, 4011008, 4000082], [4001006, 4003002, 4003000, 4003001]];
|
||||
var matQtySet = [[2, 2, 5, 10], [3, 2], [4, 3], [5, 3, 10], [2, 2, 10, 5]];
|
||||
var costSet = [250000, 250000, 300000, 400000, 200000];
|
||||
} else if (selectedType == 3) { //belt & medals refine
|
||||
var matSet = [[4001006, 4003005, 4003004], [7777, 7777]];
|
||||
var matQtySet = [[2, 5, 10], [7777, 7777]];
|
||||
var costSet = [15000, 7777];
|
||||
} else if (selectedType == 4) { //ring refine
|
||||
var matSet = [[4003001, 4001344, 4006000], [4003001, 4001344, 4006000], [4021004, 4011008], [4011008, 4001006], [1112413, 2022039], [1112414, 4000176], [4011007, 4021009]];
|
||||
var matQtySet = [[2, 2, 2], [2, 2, 2], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]];
|
||||
var costSet = [10000, 10000, 10000, 20000, 15000, 15000, 10000];
|
||||
}/*else if (selectedType == 5) { //necklace refine
|
||||
var matSet = [[4011007, 4011008, 4021009]];
|
||||
var matQtySet = [[1, 1, 1]];
|
||||
var costSet = [10000];
|
||||
}*/
|
||||
|
||||
if (selectedType == 3) {
|
||||
selectedItem = Math.floor(Math.random() * maxEqp);
|
||||
item = items[selectedItem];
|
||||
mats = matSet[0];
|
||||
matQty = matQtySet[0];
|
||||
cost = costSet[0];
|
||||
} else {
|
||||
item = items[selectedItem];
|
||||
mats = matSet[selectedItem];
|
||||
matQty = matQtySet[selectedItem];
|
||||
cost = costSet[selectedItem];
|
||||
}
|
||||
|
||||
var prompt = "You want me to make ";
|
||||
if (selectedType != 3) {
|
||||
if (qty == 1) {
|
||||
prompt += "a #b#t" + item + "##k?";
|
||||
} else {
|
||||
prompt += "#b" + qty + " #t" + item + "##k?";
|
||||
}
|
||||
} else {
|
||||
prompt += "a #bbelt#k or a #bmedal#k?";
|
||||
}
|
||||
|
||||
prompt += " Right! I will need some items to make that item. Make sure you have a #bfree slot#k in your inventory!#b";
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++) {
|
||||
prompt += "\r\n#i" + mats[i] + "# " + (matQty[i] * qty) + " #t" + mats[i] + "#";
|
||||
}
|
||||
} else {
|
||||
prompt += "\r\n#i" + mats + "# " + (matQty * qty) + " #t" + mats + "#";
|
||||
}
|
||||
if (cost > 0) {
|
||||
prompt += "\r\n#i4031138# " + (cost * qty) + " meso";
|
||||
}
|
||||
cm.sendYesNo(prompt);
|
||||
} else if (status == 2) {
|
||||
if (cm.getMeso() < (cost * qty)) {
|
||||
cm.sendOk("This is the fee I charge to make my items! No credit.");
|
||||
} else {
|
||||
var complete = true;
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; complete && i < mats.length; i++) {
|
||||
if (!cm.haveItem(mats[i], matQty[i] * qty)) {
|
||||
complete = false;
|
||||
}
|
||||
}
|
||||
} else if (!cm.haveItem(mats, matQty * qty)) {
|
||||
complete = false;
|
||||
}
|
||||
|
||||
if (!complete) {
|
||||
cm.sendOk("Are you sure you got all the items required? Double check it!");
|
||||
} else {
|
||||
if (cm.canHold(item, qty)) {
|
||||
if (mats instanceof Array) {
|
||||
for (var i = 0; i < mats.length; i++) {
|
||||
cm.gainItem(mats[i], -(matQty[i] * qty));
|
||||
}
|
||||
} else {
|
||||
cm.gainItem(mats, -(matQty * qty));
|
||||
}
|
||||
cm.gainMeso(-(cost * qty));
|
||||
|
||||
cm.gainItem(item, qty);
|
||||
cm.sendOk("The item is done! Take and try this piece of art yourself.");
|
||||
} else {
|
||||
cm.sendOk("You got no free slot on your inventory.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
cm.sendDefault();
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
+2
-65
@@ -19,72 +19,9 @@
|
||||
*/
|
||||
/* Dalair
|
||||
Medal NPC.
|
||||
|
||||
NPC Equipment Merger:
|
||||
* @author Ronan Lana
|
||||
*/
|
||||
|
||||
var status;
|
||||
var mergeFee = 50000;
|
||||
var name;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && type > 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1) {
|
||||
status++;
|
||||
} else {
|
||||
status--;
|
||||
}
|
||||
|
||||
if (status == 0) {
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
cm.sendOk("The medal ranking system is currently unavailable...");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
var levelLimit = !cm.getPlayer().isCygnus() ? 160 : 110;
|
||||
var selStr = "The medal ranking system is currently unavailable... Therefore, I am providing the #bEquipment Merge#k service! ";
|
||||
|
||||
const MakerProcessor = Java.type('client.processor.action.MakerProcessor');
|
||||
if (!YamlConfig.config.server.USE_STARTER_MERGE && (cm.getPlayer().getLevel() < levelLimit || MakerProcessor.getMakerSkillLevel(cm.getPlayer()) < 3)) {
|
||||
selStr += "However, you must have #rMaker level 3#k and at least #rlevel 110#k (Cygnus Knight), #rlevel 160#k (other classes) and a fund of #r" + cm.numberWithCommas(mergeFee) + " mesos#k to use the service.";
|
||||
cm.sendOk(selStr);
|
||||
cm.dispose();
|
||||
} else if (cm.getMeso() < mergeFee) {
|
||||
selStr += "I'm sorry, but this service tax is of #r" + cm.numberWithCommas(mergeFee) + " mesos#k, which it seems you unfortunately don't have right now... Please, stop by again later.";
|
||||
cm.sendOk(selStr);
|
||||
cm.dispose();
|
||||
} else {
|
||||
selStr += "For the fee of #r" + cm.numberWithCommas(mergeFee) + "#k mesos, merge unnecessary equipments in your inventory into your currently equipped gears to get stat boosts into them, statups based on the attributes of the items used on the merge!";
|
||||
cm.sendNext(selStr);
|
||||
}
|
||||
} else if (status == 1) {
|
||||
selStr = "#rWARNING#b: Make sure you have your items ready to merge at the slots #rAFTER#b the item you have selected to merge.#k Any items #bunder#k the item selected will be merged thoroughly.\r\n\r\nNote that equipments receiving bonuses from merge are going to become #rUntradeable#k thereon, and equipments that already received the merge bonus #rcannot be used for merge#k.\r\n\r\n";
|
||||
cm.sendGetText(selStr);
|
||||
} else if (status == 2) {
|
||||
name = cm.getText();
|
||||
|
||||
if (cm.getPlayer().mergeAllItemsFromName(name)) {
|
||||
cm.gainMeso(-mergeFee);
|
||||
cm.sendOk("Merging complete! Thanks for using the service and enjoy your new equipment stats.");
|
||||
} else {
|
||||
cm.sendOk("There is no #b'" + name + "'#k in your #bEQUIP#k inventory!");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
cm.sendOk("The medal ranking system is currently unavailable...");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
+2
-47
@@ -19,54 +19,9 @@
|
||||
*/
|
||||
/* NPC: Donation Box (9000041)
|
||||
Victoria Road : Henesys
|
||||
|
||||
NPC Bazaar:
|
||||
* @author Ronan Lana
|
||||
*/
|
||||
|
||||
var options = ["EQUIP", "USE", "SET-UP", "ETC"];
|
||||
var name;
|
||||
var status;
|
||||
var selectedType = 0;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
cm.sendOk("The medal ranking system is currently unavailable...");
|
||||
cm.dispose();
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
status++;
|
||||
if (mode != 1) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (status == 0) {
|
||||
const YamlConfig = Java.type('config.YamlConfig');
|
||||
if (!YamlConfig.config.server.USE_ENABLE_CUSTOM_NPC_SCRIPT) {
|
||||
cm.sendOk("The medal ranking system is currently unavailable...");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
var selStr = "Hello, I am the #bBazaar NPC#k! Sell to me any item on your inventory you don't need. #rWARNING#b: Make sure you have your items ready to sell at the slots #rAFTER#b the item you have selected to sell.#k Any items #bunder#k the item selected will be sold thoroughly.";
|
||||
for (var i = 0; i < options.length; i++) {
|
||||
selStr += "\r\n#L" + i + "# " + options[i] + "#l";
|
||||
}
|
||||
cm.sendSimple(selStr);
|
||||
} else if (status == 1) {
|
||||
selectedType = selection;
|
||||
cm.sendGetText("From what item on your #r" + options[selectedType] + "#k inventory do you want to start the transaction?");
|
||||
} else if (status == 2) {
|
||||
name = cm.getText();
|
||||
var res = cm.getPlayer().sellAllItemsFromName(selectedType + 1, name);
|
||||
|
||||
if (res > -1) {
|
||||
cm.sendOk("Transaction complete! You received #r" + cm.numberWithCommas(res) + " mesos#k from this action.");
|
||||
} else {
|
||||
cm.sendOk("There is no #b'" + name + "'#k in your #b" + options[selectedType] + "#k inventory!");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,7 @@ function action(mode, type, selection) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (cm.getMeso < price) {
|
||||
if (cm.getMeso() < price) {
|
||||
cm.sendOk("Please check and see if you have " + price + " mesos to enter this place.");
|
||||
} else {
|
||||
cm.gainMeso(-price);
|
||||
|
||||
+2
-26
@@ -21,30 +21,6 @@
|
||||
Default Maple TV
|
||||
*/
|
||||
|
||||
var status;
|
||||
|
||||
function start() {
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
cm.dispose();
|
||||
} else {
|
||||
if (mode == 0 && type > 0) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
if (mode == 1) {
|
||||
status++;
|
||||
} else {
|
||||
status--;
|
||||
}
|
||||
|
||||
if (status == 0) {
|
||||
// do nothing
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
cm.dispose();
|
||||
}
|
||||
@@ -25,7 +25,6 @@ package client;
|
||||
import client.autoban.AutobanManager;
|
||||
import client.creator.CharacterFactoryRecipe;
|
||||
import client.inventory.Equip;
|
||||
import client.inventory.Equip.StatUpgrade;
|
||||
import client.inventory.Inventory;
|
||||
import client.inventory.InventoryProof;
|
||||
import client.inventory.InventoryType;
|
||||
@@ -264,7 +263,7 @@ public class Character extends AbstractCharacterObject {
|
||||
private final Pet[] pets = new Pet[3];
|
||||
private PlayerShop playerShop = null;
|
||||
private Shop shop = null;
|
||||
private SkinColor skinColor = SkinColor.NORMAL;
|
||||
private SkinColor skinColor = SkinColor.LIGHT;
|
||||
private Storage storage = null;
|
||||
private Trade trade = null;
|
||||
private MonsterBook monsterbook;
|
||||
@@ -8756,245 +8755,6 @@ public class Character extends AbstractCharacterObject {
|
||||
}
|
||||
}
|
||||
|
||||
public int sellAllItemsFromName(byte invTypeId, String name) {
|
||||
//player decides from which inventory items should be sold.
|
||||
InventoryType type = InventoryType.getByType(invTypeId);
|
||||
|
||||
Inventory inv = getInventory(type);
|
||||
inv.lockInventory();
|
||||
try {
|
||||
Item it = inv.findByName(name);
|
||||
if (it == null) {
|
||||
return (-1);
|
||||
}
|
||||
|
||||
ItemInformationProvider ii = ItemInformationProvider.getInstance();
|
||||
return (sellAllItemsFromPosition(ii, type, it.getPosition()));
|
||||
} finally {
|
||||
inv.unlockInventory();
|
||||
}
|
||||
}
|
||||
|
||||
public int sellAllItemsFromPosition(ItemInformationProvider ii, InventoryType type, short pos) {
|
||||
int mesoGain = 0;
|
||||
|
||||
Inventory inv = getInventory(type);
|
||||
inv.lockInventory();
|
||||
try {
|
||||
for (short i = pos; i <= inv.getSlotLimit(); i++) {
|
||||
if (inv.getItem(i) == null) {
|
||||
continue;
|
||||
}
|
||||
mesoGain += standaloneSell(getClient(), ii, type, i, inv.getItem(i).getQuantity());
|
||||
}
|
||||
} finally {
|
||||
inv.unlockInventory();
|
||||
}
|
||||
|
||||
return (mesoGain);
|
||||
}
|
||||
|
||||
private int standaloneSell(Client c, ItemInformationProvider ii, InventoryType type, short slot, short quantity) {
|
||||
if (quantity == 0xFFFF || quantity == 0) {
|
||||
quantity = 1;
|
||||
}
|
||||
|
||||
Inventory inv = getInventory(type);
|
||||
inv.lockInventory();
|
||||
try {
|
||||
Item item = inv.getItem(slot);
|
||||
if (item == null) { //Basic check
|
||||
return (0);
|
||||
}
|
||||
|
||||
int itemid = item.getItemId();
|
||||
if (ItemConstants.isRechargeable(itemid)) {
|
||||
quantity = item.getQuantity();
|
||||
} else if (ItemId.isWeddingToken(itemid) || ItemId.isWeddingRing(itemid)) {
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (quantity < 0) {
|
||||
return (0);
|
||||
}
|
||||
short iQuant = item.getQuantity();
|
||||
if (iQuant == 0xFFFF) {
|
||||
iQuant = 1;
|
||||
}
|
||||
|
||||
if (quantity <= iQuant && iQuant > 0) {
|
||||
InventoryManipulator.removeFromSlot(c, type, (byte) slot, quantity, false);
|
||||
int recvMesos = ii.getPrice(itemid, quantity);
|
||||
if (recvMesos > 0) {
|
||||
gainMeso(recvMesos, false);
|
||||
return (recvMesos);
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
} finally {
|
||||
inv.unlockInventory();
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasMergeFlag(Item item) {
|
||||
return (item.getFlag() & ItemConstants.MERGE_UNTRADEABLE) == ItemConstants.MERGE_UNTRADEABLE;
|
||||
}
|
||||
|
||||
private static void setMergeFlag(Item item) {
|
||||
short flag = item.getFlag();
|
||||
flag |= ItemConstants.MERGE_UNTRADEABLE;
|
||||
flag |= ItemConstants.UNTRADEABLE;
|
||||
item.setFlag(flag);
|
||||
}
|
||||
|
||||
private List<Equip> getUpgradeableEquipped() {
|
||||
List<Equip> list = new LinkedList<>();
|
||||
|
||||
ItemInformationProvider ii = ItemInformationProvider.getInstance();
|
||||
for (Item item : getInventory(InventoryType.EQUIPPED)) {
|
||||
if (ii.isUpgradeable(item.getItemId())) {
|
||||
list.add((Equip) item);
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private static List<Equip> getEquipsWithStat(List<Pair<Equip, Map<StatUpgrade, Short>>> equipped, StatUpgrade stat) {
|
||||
List<Equip> equippedWithStat = new LinkedList<>();
|
||||
|
||||
for (Pair<Equip, Map<StatUpgrade, Short>> eq : equipped) {
|
||||
if (eq.getRight().containsKey(stat)) {
|
||||
equippedWithStat.add(eq.getLeft());
|
||||
}
|
||||
}
|
||||
|
||||
return equippedWithStat;
|
||||
}
|
||||
|
||||
public boolean mergeAllItemsFromName(String name) {
|
||||
InventoryType type = InventoryType.EQUIP;
|
||||
|
||||
Inventory inv = getInventory(type);
|
||||
inv.lockInventory();
|
||||
try {
|
||||
Item it = inv.findByName(name);
|
||||
if (it == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Map<StatUpgrade, Float> statups = new LinkedHashMap<>();
|
||||
mergeAllItemsFromPosition(statups, it.getPosition());
|
||||
|
||||
List<Pair<Equip, Map<StatUpgrade, Short>>> upgradeableEquipped = new LinkedList<>();
|
||||
Map<Equip, List<Pair<StatUpgrade, Integer>>> equipUpgrades = new LinkedHashMap<>();
|
||||
for (Equip eq : getUpgradeableEquipped()) {
|
||||
upgradeableEquipped.add(new Pair<>(eq, eq.getStats()));
|
||||
equipUpgrades.put(eq, new LinkedList<Pair<StatUpgrade, Integer>>());
|
||||
}
|
||||
|
||||
/*
|
||||
for (Entry<StatUpgrade, Float> es : statups.entrySet()) {
|
||||
System.out.println(es);
|
||||
}
|
||||
*/
|
||||
|
||||
for (Entry<StatUpgrade, Float> e : statups.entrySet()) {
|
||||
Double ev = Math.sqrt(e.getValue());
|
||||
|
||||
Set<Equip> extraEquipped = new LinkedHashSet<>(equipUpgrades.keySet());
|
||||
List<Equip> statEquipped = getEquipsWithStat(upgradeableEquipped, e.getKey());
|
||||
float extraRate = (float) (0.2 * Math.random());
|
||||
|
||||
if (!statEquipped.isEmpty()) {
|
||||
float statRate = 1.0f - extraRate;
|
||||
|
||||
int statup = (int) Math.ceil((ev * statRate) / statEquipped.size());
|
||||
for (Equip statEq : statEquipped) {
|
||||
equipUpgrades.get(statEq).add(new Pair<>(e.getKey(), statup));
|
||||
extraEquipped.remove(statEq);
|
||||
}
|
||||
}
|
||||
|
||||
if (!extraEquipped.isEmpty()) {
|
||||
int statup = (int) Math.round((ev * extraRate) / extraEquipped.size());
|
||||
if (statup > 0) {
|
||||
for (Equip extraEq : extraEquipped) {
|
||||
equipUpgrades.get(extraEq).add(new Pair<>(e.getKey(), statup));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dropMessage(6, "EQUIPMENT MERGE operation results:");
|
||||
for (Entry<Equip, List<Pair<StatUpgrade, Integer>>> eqpUpg : equipUpgrades.entrySet()) {
|
||||
List<Pair<StatUpgrade, Integer>> eqpStatups = eqpUpg.getValue();
|
||||
if (!eqpStatups.isEmpty()) {
|
||||
Equip eqp = eqpUpg.getKey();
|
||||
setMergeFlag(eqp);
|
||||
|
||||
String showStr = " '" + ItemInformationProvider.getInstance().getName(eqp.getItemId()) + "': ";
|
||||
String upgdStr = eqp.gainStats(eqpStatups).getLeft();
|
||||
|
||||
this.forceUpdateItem(eqp);
|
||||
|
||||
showStr += upgdStr;
|
||||
dropMessage(6, showStr);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
} finally {
|
||||
inv.unlockInventory();
|
||||
}
|
||||
}
|
||||
|
||||
public void mergeAllItemsFromPosition(Map<StatUpgrade, Float> statups, short pos) {
|
||||
Inventory inv = getInventory(InventoryType.EQUIP);
|
||||
inv.lockInventory();
|
||||
try {
|
||||
for (short i = pos; i <= inv.getSlotLimit(); i++) {
|
||||
standaloneMerge(statups, getClient(), InventoryType.EQUIP, i, inv.getItem(i));
|
||||
}
|
||||
} finally {
|
||||
inv.unlockInventory();
|
||||
}
|
||||
}
|
||||
|
||||
private void standaloneMerge(Map<StatUpgrade, Float> statups, Client c, InventoryType type, short slot, Item item) {
|
||||
short quantity;
|
||||
ItemInformationProvider ii = ItemInformationProvider.getInstance();
|
||||
if (item == null || (quantity = item.getQuantity()) < 1 || ii.isCash(item.getItemId()) || !ii.isUpgradeable(item.getItemId()) || hasMergeFlag(item)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Equip e = (Equip) item;
|
||||
for (Entry<StatUpgrade, Short> s : e.getStats().entrySet()) {
|
||||
Float newVal = statups.get(s.getKey());
|
||||
|
||||
float incVal = s.getValue().floatValue();
|
||||
switch (s.getKey()) {
|
||||
case incPAD:
|
||||
case incMAD:
|
||||
case incPDD:
|
||||
case incMDD:
|
||||
incVal = (float) Math.log(incVal);
|
||||
break;
|
||||
}
|
||||
|
||||
if (newVal != null) {
|
||||
newVal += incVal;
|
||||
} else {
|
||||
newVal = incVal;
|
||||
}
|
||||
|
||||
statups.put(s.getKey(), newVal);
|
||||
}
|
||||
|
||||
InventoryManipulator.removeFromSlot(c, type, (byte) slot, quantity, false);
|
||||
}
|
||||
|
||||
public void setShop(Shop shop) {
|
||||
this.shop = shop;
|
||||
}
|
||||
|
||||
@@ -22,14 +22,15 @@
|
||||
package client;
|
||||
|
||||
public enum SkinColor {
|
||||
NORMAL(0),
|
||||
DARK(1),
|
||||
BLACK(2),
|
||||
LIGHT(0),
|
||||
TANNED(1),
|
||||
DARK(2),
|
||||
PALE(3),
|
||||
BLUE(4),
|
||||
GREEN(5),
|
||||
WHITE(9),
|
||||
PINK(10);
|
||||
PINK(10),
|
||||
BROWN(11);
|
||||
|
||||
final int id;
|
||||
|
||||
|
||||
@@ -137,10 +137,6 @@ public class ServerConfig {
|
||||
public boolean USE_MAKER_PERMISSIVE_ATKUP;
|
||||
public boolean USE_MAKER_FEE_HEURISTICS;
|
||||
|
||||
//Custom Configuration
|
||||
public boolean USE_ENABLE_CUSTOM_NPC_SCRIPT;
|
||||
public boolean USE_STARTER_MERGE;
|
||||
|
||||
//Commands Configuration
|
||||
public boolean BLOCK_GENERATE_CASH_ITEM;
|
||||
public boolean USE_WHOLE_SERVER_RANKING;
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package database;
|
||||
|
||||
import liquibase.Liquibase;
|
||||
import liquibase.UpdateSummaryOutputEnum;
|
||||
import liquibase.database.jvm.JdbcConnection;
|
||||
import liquibase.exception.LiquibaseException;
|
||||
import liquibase.resource.ClassLoaderResourceAccessor;
|
||||
import tools.DatabaseConnection;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* Apply changes to the database so that the server and database work in harmony.
|
||||
*
|
||||
* @author Ponk
|
||||
*/
|
||||
public class DatabaseMigrations {
|
||||
private static final String ROOT_CHANGELOG_FILE = "db/changelog-root.xml";
|
||||
|
||||
public static void runDatabaseMigrations() {
|
||||
suppressLiquibaseLogs();
|
||||
runLiquibaseUpdate();
|
||||
}
|
||||
|
||||
private static void suppressLiquibaseLogs() {
|
||||
Logger liquibaseLogger = Logger.getLogger("liquibase");
|
||||
liquibaseLogger.setLevel(Level.WARNING);
|
||||
}
|
||||
|
||||
private static void runLiquibaseUpdate() {
|
||||
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||
liquibase.database.DatabaseConnection databaseConnection = new JdbcConnection(connection);
|
||||
Liquibase liquibase = new Liquibase(ROOT_CHANGELOG_FILE, new ClassLoaderResourceAccessor(),
|
||||
databaseConnection);
|
||||
liquibase.setShowSummaryOutput(UpdateSummaryOutputEnum.LOG);
|
||||
liquibase.update();
|
||||
} catch (SQLException | LiquibaseException e) {
|
||||
throw new RuntimeException("Failed to run database migrations", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -57,6 +57,7 @@ import database.maker.MakerInfoProvider;
|
||||
import database.maker.MakerRepository;
|
||||
import database.migration.FlywayRunner;
|
||||
import database.monsterbook.MonsterCardRepository;
|
||||
import database.DatabaseMigrations;
|
||||
import database.note.NoteDao;
|
||||
import database.shop.ShopDao;
|
||||
import net.ChannelDependencies;
|
||||
@@ -713,6 +714,8 @@ public class Server {
|
||||
throw new IllegalStateException("Failed to initiate a connection to the database");
|
||||
}
|
||||
|
||||
DatabaseMigrations.runDatabaseMigrations();
|
||||
|
||||
channelDependencies = registerChannelDependencies(pgDbConnection);
|
||||
|
||||
final ExecutorService initExecutor = Executors.newFixedThreadPool(10);
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
package tools.mapletools;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* This tool takes the large drop-data.sql file as input, and removes all duplicate drops.
|
||||
* A drop is considered to be a duplicate if it has the same dropperid/mobid & itemid as another drop.
|
||||
* The first drop encountered in the input is kept, and any subsequent duplicates are removed.
|
||||
* <p>
|
||||
* Note about duplicate drops: duplicate drops are supposed to exist.
|
||||
* For example, Zakum should be able to drop multiple Zakum helmets. This is vanilla MapleStory behavior.
|
||||
* <p>
|
||||
* This tool is mostly useful during the migration from the old scripts to the new scripts in Liquibase,
|
||||
* since the old scripts relied on a combination of unique database constraint on mobid+itemid
|
||||
* and the INSERT IGNORE feature of MySQL to prevent duplicates. The INSERT IGNORE would attempt to insert the drop,
|
||||
* and if there was a duplicate it would fail and thereby be skipped.
|
||||
* In the new scripts, the unique constraint has been removed (because duplicate drops should be allowed),
|
||||
* so all the (previously ignored) inserts would succeed, and we end up with a bunch of duplicates.
|
||||
*
|
||||
* @author Ponk
|
||||
*/
|
||||
public class RemoveDuplicateDrops {
|
||||
// Precondition: copy from src/main/resources/db/(...)drop-data.sql to tools/input/drop-data.sql
|
||||
private static final Path DROP_DATA_INPUT_FILE = ToolConstants.getInputFile("drop-data.sql");
|
||||
private static final Path DROP_DATA_OUTPUT_FILE = ToolConstants.getOutputFile("drop-data_no-duplicates.sql");
|
||||
private static final Path REMOVED_LINES_OUTPUT_FILE = ToolConstants.getOutputFile("drop-data_removed-lines.sql");
|
||||
private static final Pattern INSERT_VALUE_PATTERN = Pattern.compile(".*\\((?<mob>\\d+), (?<item>\\d+), \\d+, \\d+, \\d+, \\d+\\).*");
|
||||
|
||||
private record DropIdentifier(int mobId, int itemId) {
|
||||
}
|
||||
|
||||
private record ProcessingResult(List<String> retainedLines, List<String> removedLines) {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Instant start = Instant.now();
|
||||
|
||||
System.out.printf("Reading %s%n", DROP_DATA_INPUT_FILE);
|
||||
List<String> lines = readDropDataLines();
|
||||
System.out.printf("Read %d lines%n", lines.size());
|
||||
|
||||
System.out.println("Removing duplicate drops...");
|
||||
ProcessingResult processingResult = removeDuplicateDrops(lines);
|
||||
System.out.printf("Removed %d lines%n", processingResult.removedLines.size());
|
||||
|
||||
System.out.println("Writing output to " + DROP_DATA_OUTPUT_FILE);
|
||||
writeDropDataOutput(processingResult.retainedLines);
|
||||
System.out.println("Writing removed lines to " + REMOVED_LINES_OUTPUT_FILE);
|
||||
writeRemovedLinesOutput(processingResult.removedLines);
|
||||
|
||||
Duration totalDuration = Duration.between(start, Instant.now());
|
||||
System.out.printf("Done! Total elapsed time: %d%n", totalDuration.toMillis());
|
||||
}
|
||||
|
||||
private static List<String> readDropDataLines() {
|
||||
try {
|
||||
return Files.readAllLines(DROP_DATA_INPUT_FILE);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to read input file", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static ProcessingResult removeDuplicateDrops(List<String> lines) {
|
||||
Set<DropIdentifier> encounteredDrops = new HashSet<>();
|
||||
List<String> retainedLines = new ArrayList<>();
|
||||
List<String> removedLines = new ArrayList<>();
|
||||
for (String line : lines) {
|
||||
Optional<DropIdentifier> optDropIdentifier = parseDropIdentifier(line);
|
||||
if (optDropIdentifier.isEmpty()) {
|
||||
retainedLines.add(line);
|
||||
continue;
|
||||
}
|
||||
|
||||
DropIdentifier dropIdentifier = optDropIdentifier.get();
|
||||
if (encounteredDrops.contains(dropIdentifier)) {
|
||||
removedLines.add(line);
|
||||
} else {
|
||||
encounteredDrops.add(dropIdentifier);
|
||||
retainedLines.add(line);
|
||||
}
|
||||
}
|
||||
|
||||
return new ProcessingResult(retainedLines, removedLines);
|
||||
}
|
||||
|
||||
private static Optional<DropIdentifier> parseDropIdentifier(String line) {
|
||||
Matcher matcher = INSERT_VALUE_PATTERN.matcher(line);
|
||||
if (!matcher.matches()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
int mobId = Integer.parseInt(matcher.group("mob"));
|
||||
int itemId = Integer.parseInt(matcher.group("item"));
|
||||
return Optional.of(new DropIdentifier(mobId, itemId));
|
||||
}
|
||||
|
||||
private static void writeDropDataOutput(List<String> retainedLines) {
|
||||
try (PrintWriter pw = new PrintWriter(Files.newOutputStream(DROP_DATA_OUTPUT_FILE))) {
|
||||
retainedLines.forEach(pw::println);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to write drop data output file", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void writeRemovedLinesOutput(List<String> removedLines) {
|
||||
try (PrintWriter pw = new PrintWriter(Files.newOutputStream(REMOVED_LINES_OUTPUT_FILE))) {
|
||||
removedLines.forEach(pw::println);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to write removed lines output file", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package tools.mapletools;
|
||||
|
||||
import server.life.MonsterStats;
|
||||
import tools.Pair;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
@@ -10,119 +9,135 @@ import java.nio.file.Path;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author RonanLana
|
||||
* <p>
|
||||
* This application traces missing meso drop data on the underlying DB (that must be
|
||||
* This application normalizes skillbook drop chances on the underlying DB (that must be
|
||||
* defined on the DatabaseConnection file of this project) and generates a
|
||||
* SQL file that proposes missing drop entries for the drop_data table.
|
||||
* <p>
|
||||
* The meso range is calculated accordingly with the target mob stats, such as level
|
||||
* and if it's a boss or not, similarly as how it has been done for the actual meso
|
||||
* drops.
|
||||
* The drop chances are calculated based on the mob level. Bosses get a higher drop chance.
|
||||
* Legend skillbooks gain a boost in drop chance (for some reason).
|
||||
*
|
||||
* @author RonanLana
|
||||
* @author Ponk
|
||||
*/
|
||||
public class SkillbookChanceFetcher {
|
||||
private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("skillbook_drop_data.sql");
|
||||
private static final Map<Pair<Integer, Integer>, Integer> skillbookChances = new HashMap<>();
|
||||
|
||||
private static PrintWriter printWriter;
|
||||
private static Map<Integer, MonsterStats> mobStats;
|
||||
private record DropIdentifier(int mobId, int itemId) {}
|
||||
|
||||
private static List<Map.Entry<Pair<Integer, Integer>, Integer>> sortedSkillbookChances() {
|
||||
List<Map.Entry<Pair<Integer, Integer>, Integer>> skillbookChancesList = new ArrayList<>(skillbookChances.entrySet());
|
||||
public static void main(String[] args) {
|
||||
Instant start = Instant.now();
|
||||
|
||||
skillbookChancesList.sort((o1, o2) -> {
|
||||
if (o1.getKey().getLeft().equals(o2.getKey().getLeft())) {
|
||||
return o1.getKey().getRight() < o2.getKey().getRight() ? -1 : (o1.getKey().getRight().equals(o2.getKey().getRight()) ? 0 : 1);
|
||||
System.out.println("Fetching all skillbook drops from the database...");
|
||||
List<DropIdentifier> skillbookDrops = fetchAllSkillbookDrops();
|
||||
System.out.printf("Found %d skillbook drops%n", skillbookDrops.size());
|
||||
|
||||
// load mob stats from WZ
|
||||
Map<Integer, MonsterStats> mobStats = MonsterStatFetcher.getAllMonsterStats();
|
||||
|
||||
System.out.println("Calculating drop chances...");
|
||||
Map<DropIdentifier, Integer> skillbookChances = calculateSkillbookDropChances(skillbookDrops, mobStats);
|
||||
|
||||
System.out.println("Writing output file...");
|
||||
generateSkillbookChanceUpdateFile(skillbookChances);
|
||||
|
||||
Duration totalDuration = Duration.between(start, Instant.now());
|
||||
System.out.printf("Done! Total elapsed time: %d ms", totalDuration.toMillis());
|
||||
}
|
||||
|
||||
private static List<DropIdentifier> fetchAllSkillbookDrops() {
|
||||
String sql = """
|
||||
SELECT dropperid, itemid
|
||||
FROM drop_data
|
||||
WHERE itemid >= 2280000
|
||||
AND itemid < 2300000""";
|
||||
try (Connection con = SimpleDatabaseConnection.getConnection();
|
||||
PreparedStatement ps = con.prepareStatement(sql);
|
||||
ResultSet rs = ps.executeQuery()) {
|
||||
List<DropIdentifier> skillbookDrops = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
int mobId = rs.getInt("dropperid");
|
||||
int itemId = rs.getInt("itemid");
|
||||
skillbookDrops.add(new DropIdentifier(mobId, itemId));
|
||||
}
|
||||
return skillbookDrops;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to fetch all skillbook drops", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static Map<DropIdentifier, Integer> calculateSkillbookDropChances(List<DropIdentifier> skillbookDrops,
|
||||
Map<Integer, MonsterStats> mobStats) {
|
||||
Map<DropIdentifier, Integer> skillbookChances = new HashMap<>();
|
||||
for (DropIdentifier drop : skillbookDrops) {
|
||||
int expectedChance = 250;
|
||||
|
||||
if (mobStats.get(drop.mobId) != null) {
|
||||
int level = mobStats.get(drop.mobId).getLevel();
|
||||
expectedChance *= Math.max(2, (level - 80) / 15);
|
||||
|
||||
if (mobStats.get(drop.mobId).isBoss()) {
|
||||
expectedChance *= 20;
|
||||
}
|
||||
} else {
|
||||
expectedChance = 1287;
|
||||
}
|
||||
|
||||
return (o1.getKey().getLeft() < o2.getKey().getLeft()) ? -1 : 1;
|
||||
});
|
||||
if (isLegendSkillUpgradeBook(drop.itemId)) { // drop rate of Legends seems to be higher than explorers, in retrospect from values in DB
|
||||
expectedChance *= 3;
|
||||
}
|
||||
|
||||
return skillbookChancesList;
|
||||
skillbookChances.put(drop, expectedChance);
|
||||
}
|
||||
|
||||
return skillbookChances;
|
||||
}
|
||||
|
||||
private static boolean isLegendSkillUpgradeBook(int itemid) {
|
||||
int itemidBranch = itemid / 10000;
|
||||
return (itemidBranch == 228 && itemid >= 2280013 || itemidBranch == 229 && itemid >= 2290126); // drop rate of Legends are higher
|
||||
return (itemidBranch == 228 && itemid >= 2280013 || itemidBranch == 229 && itemid >= 2290126); // drop rate of Legends are higher
|
||||
}
|
||||
|
||||
private static void fetchSkillbookDropChances() {
|
||||
Connection con = SimpleDatabaseConnection.getConnection();
|
||||
|
||||
try {
|
||||
PreparedStatement ps = con.prepareStatement("SELECT dropperid, itemid FROM drop_data WHERE itemid >= 2280000 AND itemid < 2300000");
|
||||
ResultSet rs = ps.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
int mobid = rs.getInt("dropperid");
|
||||
int itemid = rs.getInt("itemid");
|
||||
|
||||
int expectedChance = 250;
|
||||
|
||||
if (mobStats.get(mobid) != null) {
|
||||
int level = mobStats.get(mobid).getLevel();
|
||||
expectedChance *= Math.max(2, (level - 80) / 15);
|
||||
|
||||
if (mobStats.get(mobid).isBoss()) {
|
||||
expectedChance *= 20;
|
||||
} else {
|
||||
expectedChance *= 1;
|
||||
}
|
||||
} else {
|
||||
expectedChance = 1287;
|
||||
}
|
||||
|
||||
if (isLegendSkillUpgradeBook(itemid)) { // drop rate of Legends seems to be higher than explorers, in retrospect from values in DB
|
||||
expectedChance *= 3;
|
||||
}
|
||||
|
||||
skillbookChances.put(new Pair<>(mobid, itemid), expectedChance);
|
||||
}
|
||||
|
||||
rs.close();
|
||||
ps.close();
|
||||
con.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void printSkillbookChanceUpdateSqlHeader() {
|
||||
printWriter.println(" # SQL File autogenerated from the MapleSkillbookChanceFetcher feature by Ronan Lana.");
|
||||
printWriter.println(" # Generated data takes into account mob stats such as level and boss for the chance rates.");
|
||||
printWriter.println();
|
||||
|
||||
printWriter.println(" REPLACE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES");
|
||||
}
|
||||
|
||||
private static void generateSkillbookChanceUpdateFile() {
|
||||
private static void generateSkillbookChanceUpdateFile(Map<DropIdentifier, Integer> skillbookChances) {
|
||||
try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
|
||||
printWriter = pw;
|
||||
printSkillbookChanceUpdateSqlHeader(pw);
|
||||
|
||||
printSkillbookChanceUpdateSqlHeader();
|
||||
|
||||
List<Map.Entry<Pair<Integer, Integer>, Integer>> skillbookChancesList = sortedSkillbookChances();
|
||||
for (Map.Entry<Pair<Integer, Integer>, Integer> e : skillbookChancesList) {
|
||||
printWriter.println("(" + e.getKey().getLeft() + ", " + e.getKey().getRight() + ", 1, 1, 0, "
|
||||
+ e.getValue() + "),");
|
||||
List<Map.Entry<DropIdentifier, Integer>> skillbookChancesList = sortedSkillbookChances(skillbookChances);
|
||||
for (Map.Entry<DropIdentifier, Integer> e : skillbookChancesList) {
|
||||
pw.println("(%d, %d, 1, 1, 0, %d),".formatted(e.getKey().mobId, e.getKey().itemId, e.getValue()));
|
||||
}
|
||||
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Failed to write output file", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// load mob stats from WZ
|
||||
mobStats = MonsterStatFetcher.getAllMonsterStats();
|
||||
private static void printSkillbookChanceUpdateSqlHeader(PrintWriter pw) {
|
||||
pw.println(" # SQL File autogenerated from the SkillbookChanceFetcher feature by Ronan Lana.");
|
||||
pw.println(" # Generated data takes into account mob stats such as level and boss for the chance rates.");
|
||||
pw.println();
|
||||
|
||||
fetchSkillbookDropChances();
|
||||
generateSkillbookChanceUpdateFile();
|
||||
pw.println(" REPLACE INTO drop_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES");
|
||||
}
|
||||
|
||||
private static List<Map.Entry<DropIdentifier, Integer>> sortedSkillbookChances(
|
||||
Map<DropIdentifier, Integer> skillbookChances) {
|
||||
List<Map.Entry<DropIdentifier, Integer>> skillbookChancesList = new ArrayList<>(skillbookChances.entrySet());
|
||||
skillbookChancesList.sort(mobIdAscThenItemIdAscComparator());
|
||||
return skillbookChancesList;
|
||||
}
|
||||
|
||||
private static Comparator<Map.Entry<DropIdentifier, Integer>> mobIdAscThenItemIdAscComparator() {
|
||||
return Comparator.comparing((Map.Entry<DropIdentifier, Integer> entry) -> entry.getKey().mobId)
|
||||
.thenComparing(entry -> entry.getKey().itemId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
|
||||
|
||||
<changeSet id="101" author="Ponk">
|
||||
<sqlFile path="db/data/101-shops-data.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="102" author="Ponk">
|
||||
<sqlFile path="db/data/102-shopitems-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="111" author="Ponk">
|
||||
<sqlFile path="db/data/111-makercreate-data.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="112" author="Ponk">
|
||||
<sqlFile path="db/data/112-makerrecipe-data.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="113" author="Ponk">
|
||||
<sqlFile path="db/data/113-makerreward-data.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="114" author="Ponk">
|
||||
<sqlFile path="db/data/114-makerreagent-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="121" author="Ponk">
|
||||
<sqlFile path="db/data/121-monstercard-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="131" author="Ponk">
|
||||
<sqlFile path="db/data/131-reactordrops-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="141" author="Ponk">
|
||||
<sqlFile path="db/data/141-specialcashitems-data.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="142" author="Ponk">
|
||||
<sqlFile path="db/data/142-nxcoupons-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="151" author="Ponk">
|
||||
<sqlFile path="db/data/151-global-drop-data.sql"/>
|
||||
</changeSet>
|
||||
<changeSet id="152" author="Ponk">
|
||||
<sqlFile path="db/data/152-drop-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="161" author="Ponk">
|
||||
<sqlFile path="db/data/161-admin-data.sql"/>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
|
||||
|
||||
<include file="changelog-tables.xml" relativeToChangelogFile="true"/>
|
||||
<include file="changelog-data.xml" relativeToChangelogFile="true"/>
|
||||
|
||||
<!-- If you have any additional changesets you would like to run at the end, create an "extensions" directory and put them in there. -->
|
||||
<!-- All changesets will run in alphanumeric order based on their filename. Read Liquibase documentation on "includeAll" for more info. -->
|
||||
<includeAll path="extensions" relativeToChangelogFile="true" errorIfMissingOrEmpty="false"/>
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
|
||||
|
||||
<changeSet id="1" author="Ponk">
|
||||
<sqlFile path="db/tables/001-account.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="2" author="Ponk">
|
||||
<sqlFile path="db/tables/002-character.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="3" author="Ponk">
|
||||
<sqlFile path="db/tables/003-inventory.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="4" author="Ponk">
|
||||
<sqlFile path="db/tables/004-skill.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="5" author="Ponk">
|
||||
<sqlFile path="db/tables/005-pet.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="6" author="Ponk">
|
||||
<sqlFile path="db/tables/006-quest.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="7" author="Ponk">
|
||||
<sqlFile path="db/tables/007-guild.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="8" author="Ponk">
|
||||
<sqlFile path="db/tables/008-keymap.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="9" author="Ponk">
|
||||
<sqlFile path="db/tables/009-drop.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="10" author="Ponk">
|
||||
<sqlFile path="db/tables/010-storage.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="11" author="Ponk">
|
||||
<sqlFile path="db/tables/011-shop.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="12" author="Ponk">
|
||||
<sqlFile path="db/tables/012-character-state.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="13" author="Ponk">
|
||||
<sqlFile path="db/tables/013-cashshop.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="14" author="Ponk">
|
||||
<sqlFile path="db/tables/014-gift.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="15" author="Ponk">
|
||||
<sqlFile path="db/tables/015-marriage.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="16" author="Ponk">
|
||||
<sqlFile path="db/tables/016-monsterbook.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="17" author="Ponk">
|
||||
<sqlFile path="db/tables/017-family.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="18" author="Ponk">
|
||||
<sqlFile path="db/tables/018-transfer.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="19" author="Ponk">
|
||||
<sqlFile path="db/tables/019-mts.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="20" author="Ponk">
|
||||
<sqlFile path="db/tables/020-maker.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="21" author="Ponk">
|
||||
<sqlFile path="db/tables/021-field-object.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="22" author="Ponk">
|
||||
<sqlFile path="db/tables/022-ban.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="23" author="Ponk">
|
||||
<sqlFile path="db/tables/023-bosslog.sql"/>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="24" author="Ponk">
|
||||
<sqlFile path="db/tables/024-duey.sql"/>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
@@ -0,0 +1,111 @@
|
||||
INSERT INTO shops (shopid, npcid)
|
||||
VALUES (11000, 11000),
|
||||
(11100, 11100),
|
||||
(21000, 21000),
|
||||
(1001000, 1001000),
|
||||
(1001001, 1001001),
|
||||
(1001100, 1001100),
|
||||
(1011000, 1011000),
|
||||
(1011001, 1011001),
|
||||
(1011100, 1011100),
|
||||
(1012004, 1012004),
|
||||
(1021000, 1021000),
|
||||
(1021001, 1021001),
|
||||
(1021100, 1021100),
|
||||
(1031000, 1031000),
|
||||
(1031001, 1031001),
|
||||
(1031100, 1031100),
|
||||
(1032103, 1032103),
|
||||
(1051000, 1051000),
|
||||
(1051001, 1051001),
|
||||
(1051002, 1051002),
|
||||
(1052104, 1052104),
|
||||
(1061001, 1061001),
|
||||
(1061002, 1061002),
|
||||
(1081000, 1081000),
|
||||
(1091000, 1091000),
|
||||
(1091001, 1091001),
|
||||
(1091002, 1091002),
|
||||
(1093000, 1093000),
|
||||
(1100001, 1100001),
|
||||
(1100002, 1100002),
|
||||
(2010004, 2010004),
|
||||
(2012003, 2012003),
|
||||
(2012004, 2012004),
|
||||
(2012005, 2012005),
|
||||
(2020001, 2020001),
|
||||
(2022000, 2022000),
|
||||
(2022001, 2022001),
|
||||
(2022002, 2022002),
|
||||
(2030009, 2030009),
|
||||
(2040049, 2040049),
|
||||
(2040051, 2040051),
|
||||
(2041002, 2041002),
|
||||
(2041003, 2041003),
|
||||
(2041006, 2041006),
|
||||
(2041014, 2041014),
|
||||
(2041016, 2041016),
|
||||
(2050000, 2050000),
|
||||
(2050003, 2050003),
|
||||
(2051000, 2051000),
|
||||
(2060003, 2060003),
|
||||
(2060004, 2060004),
|
||||
(2060007, 2060007),
|
||||
(2070001, 2070001),
|
||||
(2070002, 2070002),
|
||||
(2070003, 2070003),
|
||||
(2080001, 2080001),
|
||||
(2080002, 2080002),
|
||||
(2080003, 2080003),
|
||||
(2080004, 2080004),
|
||||
(2090001, 2090001),
|
||||
(2090002, 2090002),
|
||||
(2090003, 2090003),
|
||||
(2090006, 2090006),
|
||||
(2093000, 2093000),
|
||||
(2093001, 2093001),
|
||||
(2093002, 2093002),
|
||||
(2100002, 2100002),
|
||||
(2100003, 2100003),
|
||||
(2100004, 2100004),
|
||||
(2110001, 2110001),
|
||||
(2130000, 2130000),
|
||||
(9110003, 9110003),
|
||||
(9110004, 9110004),
|
||||
(9110005, 9110005),
|
||||
(9110006, 9110006),
|
||||
(9110007, 9110007),
|
||||
(9120000, 9120000),
|
||||
(9120002, 9120002),
|
||||
(9120004, 9120004),
|
||||
(9120019, 9120019),
|
||||
(9201020, 9201020),
|
||||
(9201058, 9201058),
|
||||
(9201059, 9201059),
|
||||
(9201060, 9201060),
|
||||
(9201099, 9201099),
|
||||
(9270019, 9270019),
|
||||
(9270020, 9270020),
|
||||
(9270021, 9270021),
|
||||
(9270022, 9270022),
|
||||
(9270027, 9270027),
|
||||
(9999992, 9001002),
|
||||
(9999993, 9001002),
|
||||
(9999994, 9001002),
|
||||
(9999995, 9001002),
|
||||
(9999996, 9001002),
|
||||
(9999997, 9001002),
|
||||
(9999998, 9001002),
|
||||
(9999999, 9001002),
|
||||
(1337, 11000),
|
||||
(9000069, 9000069),
|
||||
(1338, 9090000),
|
||||
(9270055, 9270055),
|
||||
(9270056, 9270056),
|
||||
(9270057, 9270057),
|
||||
(9270065, 9270065),
|
||||
(57, 2002001),
|
||||
(1052116, 1052116),
|
||||
(1301000, 1301000),
|
||||
(1200001, 1200001),
|
||||
(1200002, 1200002);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,837 @@
|
||||
# generated with the SkillMakerFetcher tool
|
||||
INSERT INTO makercreatedata (id, itemid, req_level, req_maker_level, req_meso, req_item, req_equip, catalyst,
|
||||
quantity, tuc)
|
||||
VALUES (0, 4250000, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250100, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250200, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250300, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250400, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250500, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250600, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250700, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250800, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4250900, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4251000, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4251100, 45, 1, 110000, 0, 0, 0, 1, 0),
|
||||
(0, 4251300, 75, 2, 165000, 0, 0, 0, 1, 0),
|
||||
(0, 4251400, 75, 2, 165000, 0, 0, 0, 1, 0),
|
||||
(0, 4250001, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250101, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250201, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250301, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250401, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250501, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250601, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250701, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250801, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4250901, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4251001, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4251101, 45, 1, 330000, 0, 0, 0, 1, 0),
|
||||
(0, 4251301, 75, 2, 495000, 0, 0, 0, 1, 0),
|
||||
(0, 4251401, 75, 2, 495000, 0, 0, 0, 1, 0),
|
||||
(0, 4250002, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250102, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250202, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250302, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250402, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250502, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250602, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250702, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250802, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4250902, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4251002, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4251102, 45, 2, 550000, 0, 0, 0, 1, 0),
|
||||
(0, 4251302, 75, 3, 825000, 0, 0, 0, 1, 0),
|
||||
(0, 4251402, 75, 3, 825000, 0, 0, 0, 1, 0),
|
||||
(0, 4001174, 45, 1, 0, 4031966, 0, 0, 1, 0),
|
||||
(0, 4001175, 50, 1, 0, 4031967, 0, 0, 1, 0),
|
||||
(0, 4001176, 55, 1, 0, 4031968, 0, 0, 10, 0),
|
||||
(0, 4001177, 60, 1, 0, 4031969, 0, 0, 100, 0),
|
||||
(0, 4001178, 65, 1, 0, 4031970, 0, 0, 5, 0),
|
||||
(0, 4001179, 70, 1, 0, 4031971, 0, 0, 7, 0),
|
||||
(0, 4001180, 75, 2, 0, 4031972, 0, 0, 1, 0),
|
||||
(0, 4001181, 80, 2, 0, 4031973, 0, 0, 1, 0),
|
||||
(0, 4001182, 85, 2, 0, 4031974, 0, 0, 6, 0),
|
||||
(0, 4001183, 90, 2, 0, 4031975, 0, 0, 30, 0),
|
||||
(0, 4001184, 95, 2, 0, 4031976, 0, 0, 2, 0),
|
||||
(0, 4001185, 100, 2, 0, 4031977, 0, 0, 1, 0),
|
||||
(0, 4031980, 105, 2, 0, 4031979, 0, 0, 1, 0),
|
||||
(0, 4001186, 105, 3, 0, 4031978, 0, 0, 1, 0),
|
||||
(0, 4032334, 150, 1, 0, 0, 0, 0, 1, 0),
|
||||
(0, 4032312, 70, 1, 0, 0, 0, 0, 1, 0),
|
||||
(0, 2041058, 50, 1, 55000, 0, 1122013, 0, 1, 0),
|
||||
(0, 2040727, 50, 1, 55000, 0, 1122013, 0, 1, 0),
|
||||
(0, 4260007, 105, 3, 2200000, 4001126, 0, 0, 5, 0),
|
||||
(0, 4260008, 105, 3, 5500000, 4001126, 0, 0, 10, 0),
|
||||
(1, 1002028, 45, 1, 55000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002085, 45, 1, 50000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002086, 45, 1, 41000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002022, 50, 1, 60000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002100, 50, 1, 60000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002101, 50, 1, 60000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002029, 55, 1, 82000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002084, 55, 1, 82000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002030, 65, 1, 93000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002094, 65, 1, 93000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002095, 65, 1, 93000, 0, 0, 4130018, 1, 1),
|
||||
(1, 1002338, 75, 2, 146000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002339, 75, 2, 146000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002340, 75, 2, 146000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002528, 85, 2, 161000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002529, 85, 2, 161000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002530, 85, 2, 161000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002531, 85, 2, 161000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002532, 85, 2, 161000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002377, 95, 2, 184000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002378, 95, 2, 184000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002379, 95, 2, 184000, 0, 0, 4130018, 1, 2),
|
||||
(1, 1002551, 105, 3, 308000, 0, 0, 4130018, 1, 3),
|
||||
(1, 1002790, 115, 3, 352000, 0, 0, 4130018, 1, 3),
|
||||
(1, 1002776, 115, 3, 352000, 0, 0, 4130018, 1, 3),
|
||||
(1, 1040087, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040088, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040089, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041087, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041088, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041089, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040090, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040091, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040092, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040093, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041091, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041092, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041093, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040102, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040103, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040104, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041097, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041098, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1041099, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(1, 1040111, 85, 2, 123000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1040112, 85, 2, 123000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1040113, 85, 2, 123000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1041119, 85, 2, 146000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1041120, 85, 2, 146000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1041121, 85, 2, 146000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1040120, 95, 2, 153000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1040121, 95, 2, 153000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1040122, 95, 2, 153000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1041122, 95, 2, 153000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1041123, 95, 2, 153000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1041124, 95, 2, 153000, 0, 0, 4130019, 1, 2),
|
||||
(1, 1060076, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060077, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060078, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061086, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061087, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061088, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060079, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060080, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060081, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060082, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061090, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061091, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061092, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060090, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060091, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060092, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061096, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061097, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1061098, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(1, 1060100, 85, 2, 107000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1060101, 85, 2, 107000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1060102, 85, 2, 107000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1061118, 85, 2, 130000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1061119, 85, 2, 130000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1061120, 85, 2, 130000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1060109, 95, 2, 138000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1060110, 95, 2, 138000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1060111, 95, 2, 138000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1061121, 95, 2, 138000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1061122, 95, 2, 138000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1061123, 95, 2, 138000, 0, 0, 4130020, 1, 2),
|
||||
(1, 1050080, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1050081, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1050082, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1050083, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1051077, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1051078, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1051079, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1051080, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(1, 1052075, 105, 3, 352000, 0, 0, 4130021, 1, 3),
|
||||
(1, 1052160, 115, 3, 418000, 0, 0, 4130021, 1, 3),
|
||||
(1, 1052155, 115, 3, 418000, 0, 0, 4130021, 1, 3),
|
||||
(1, 1072132, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072133, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072134, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072135, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072147, 55, 1, 39000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072148, 55, 1, 39000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072149, 55, 1, 39000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072154, 65, 1, 47000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072155, 65, 1, 47000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072156, 65, 1, 47000, 0, 0, 4130001, 1, 1),
|
||||
(1, 1072210, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072211, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072212, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072196, 85, 2, 115000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072197, 85, 2, 115000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072198, 85, 2, 115000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072220, 95, 2, 138000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072221, 95, 2, 138000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072222, 95, 2, 138000, 0, 0, 4130001, 1, 2),
|
||||
(1, 1072273, 105, 3, 231000, 0, 0, 4130001, 1, 3),
|
||||
(1, 1072361, 115, 3, 264000, 0, 0, 4130001, 1, 3),
|
||||
(1, 1072355, 115, 3, 264000, 0, 0, 4130001, 1, 3),
|
||||
(1, 1082009, 45, 1, 50000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082010, 45, 1, 55000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082011, 45, 1, 60000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082059, 55, 1, 66000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082060, 55, 1, 71000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082061, 55, 1, 77000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082103, 65, 1, 82000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082104, 65, 1, 88000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082105, 65, 1, 93000, 0, 0, 4130000, 1, 1),
|
||||
(1, 1082114, 75, 2, 161000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082115, 75, 2, 165000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082116, 75, 2, 168000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082117, 75, 2, 168000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082128, 85, 2, 184000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082129, 85, 2, 188000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082130, 85, 2, 191000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082139, 95, 2, 207000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082140, 95, 2, 210000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082141, 95, 2, 214000, 0, 0, 4130000, 1, 2),
|
||||
(1, 1082168, 105, 3, 330000, 0, 0, 4130000, 1, 3),
|
||||
(1, 1082239, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(1, 1082234, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(1, 1092004, 45, 1, 82000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092009, 55, 1, 99000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092010, 55, 1, 104000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092011, 55, 1, 104000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092015, 65, 1, 110000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092016, 65, 1, 115000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092017, 65, 1, 115000, 0, 0, 4130022, 1, 1),
|
||||
(1, 1092023, 75, 2, 168000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092024, 75, 2, 176000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092025, 75, 2, 176000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092026, 85, 2, 184000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092027, 85, 2, 191000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092028, 85, 2, 191000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092036, 95, 2, 199000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092037, 95, 2, 207000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092038, 95, 2, 214000, 0, 0, 4130022, 1, 2),
|
||||
(1, 1092060, 105, 3, 231000, 0, 0, 4130022, 1, 3),
|
||||
(1, 1092058, 115, 3, 385000, 0, 0, 4130022, 1, 3),
|
||||
(1, 1302010, 45, 1, 66000, 0, 0, 4130002, 1, 1),
|
||||
(1, 1312008, 45, 1, 77000, 0, 0, 4130003, 1, 1),
|
||||
(1, 1322017, 45, 1, 77000, 0, 0, 4130004, 1, 1),
|
||||
(1, 1402003, 45, 1, 110000, 0, 0, 4130005, 1, 1),
|
||||
(1, 1412003, 45, 1, 77000, 0, 0, 4130006, 1, 1),
|
||||
(1, 1422005, 45, 1, 82000, 0, 0, 4130007, 1, 1),
|
||||
(1, 1432004, 45, 1, 82000, 0, 0, 4130008, 1, 1),
|
||||
(1, 1442005, 45, 1, 82000, 0, 0, 4130009, 1, 1),
|
||||
(1, 1302011, 55, 1, 82000, 0, 0, 4130002, 1, 1),
|
||||
(1, 1312009, 55, 1, 104000, 0, 0, 4130003, 1, 1),
|
||||
(1, 1322018, 55, 1, 104000, 0, 0, 4130004, 1, 1),
|
||||
(1, 1402011, 55, 1, 126000, 0, 0, 4130005, 1, 1),
|
||||
(1, 1412007, 55, 1, 104000, 0, 0, 4130006, 1, 1),
|
||||
(1, 1422009, 55, 1, 104000, 0, 0, 4130007, 1, 1),
|
||||
(1, 1432006, 55, 1, 104000, 0, 0, 4130008, 1, 1),
|
||||
(1, 1442010, 55, 1, 137000, 0, 0, 4130009, 1, 1),
|
||||
(1, 1302012, 65, 1, 137000, 0, 0, 4130002, 1, 1),
|
||||
(1, 1312010, 65, 1, 165000, 0, 0, 4130003, 1, 1),
|
||||
(1, 1322019, 65, 1, 137000, 0, 0, 4130004, 1, 1),
|
||||
(1, 1402012, 65, 1, 143000, 0, 0, 4130005, 1, 1),
|
||||
(1, 1412008, 65, 1, 137000, 0, 0, 4130006, 1, 1),
|
||||
(1, 1422010, 65, 1, 137000, 0, 0, 4130007, 1, 1),
|
||||
(1, 1432007, 65, 1, 137000, 0, 0, 4130008, 1, 1),
|
||||
(1, 1442008, 65, 1, 165000, 0, 0, 4130009, 1, 1),
|
||||
(1, 1322020, 70, 1, 165000, 0, 0, 4130004, 1, 1),
|
||||
(1, 1302018, 75, 2, 231000, 0, 0, 4130002, 1, 2),
|
||||
(1, 1312011, 75, 2, 269000, 0, 0, 4130003, 1, 2),
|
||||
(1, 1322028, 75, 2, 269000, 0, 0, 4130004, 1, 2),
|
||||
(1, 1402004, 75, 2, 231000, 0, 0, 4130005, 1, 2),
|
||||
(1, 1402015, 75, 2, 231000, 0, 0, 4130005, 1, 2),
|
||||
(1, 1412009, 75, 2, 238000, 0, 0, 4130006, 1, 2),
|
||||
(1, 1422012, 75, 2, 238000, 0, 0, 4130007, 1, 2),
|
||||
(1, 1432010, 75, 2, 238000, 0, 0, 4130008, 1, 2),
|
||||
(1, 1442019, 75, 2, 269000, 0, 0, 4130009, 1, 2),
|
||||
(1, 1302023, 85, 2, 269000, 0, 0, 4130002, 1, 2),
|
||||
(1, 1312015, 85, 2, 308000, 0, 0, 4130003, 1, 2),
|
||||
(1, 1322029, 85, 2, 308000, 0, 0, 4130004, 1, 2),
|
||||
(1, 1402005, 85, 2, 308000, 0, 0, 4130005, 1, 2),
|
||||
(1, 1402016, 85, 2, 308000, 0, 0, 4130005, 1, 2),
|
||||
(1, 1412010, 85, 2, 284000, 0, 0, 4130006, 1, 2),
|
||||
(1, 1422013, 85, 2, 284000, 0, 0, 4130007, 1, 2),
|
||||
(1, 1432011, 85, 2, 284000, 0, 0, 4130008, 1, 2),
|
||||
(1, 1442020, 85, 2, 346000, 0, 0, 4130009, 1, 2),
|
||||
(1, 1302056, 95, 2, 369000, 0, 0, 4130002, 1, 2),
|
||||
(1, 1312030, 95, 2, 361000, 0, 0, 4130003, 1, 2),
|
||||
(1, 1322045, 95, 2, 361000, 0, 0, 4130004, 1, 2),
|
||||
(1, 1402035, 95, 2, 361000, 0, 0, 4130005, 1, 2),
|
||||
(1, 1412021, 95, 2, 377000, 0, 0, 4130006, 1, 2),
|
||||
(1, 1422027, 95, 2, 346000, 0, 0, 4130007, 1, 2),
|
||||
(1, 1432030, 95, 2, 377000, 0, 0, 4130008, 1, 2),
|
||||
(1, 1442044, 95, 2, 361000, 0, 0, 4130009, 1, 2),
|
||||
(1, 1302059, 105, 3, 605000, 0, 0, 4130002, 1, 3),
|
||||
(1, 1312031, 105, 3, 583000, 0, 0, 4130003, 1, 3),
|
||||
(1, 1322052, 105, 3, 528000, 0, 0, 4130004, 1, 3),
|
||||
(1, 1402036, 105, 3, 605000, 0, 0, 4130005, 1, 3),
|
||||
(1, 1412026, 105, 3, 572000, 0, 0, 4130006, 1, 3),
|
||||
(1, 1422028, 105, 3, 561000, 0, 0, 4130007, 1, 3),
|
||||
(1, 1432038, 105, 3, 583000, 0, 0, 4130008, 1, 3),
|
||||
(1, 1442045, 105, 3, 627000, 0, 0, 4130009, 1, 3),
|
||||
(1, 1302086, 115, 3, 748000, 0, 0, 4130002, 1, 3),
|
||||
(1, 1312038, 115, 3, 638000, 0, 0, 4130003, 1, 3),
|
||||
(1, 1322061, 115, 3, 539000, 0, 0, 4130004, 1, 3),
|
||||
(1, 1402047, 115, 3, 715000, 0, 0, 4130005, 1, 3),
|
||||
(1, 1412034, 115, 3, 715000, 0, 0, 4130006, 1, 3),
|
||||
(1, 1422038, 115, 3, 616000, 0, 0, 4130007, 1, 3),
|
||||
(1, 1432049, 115, 3, 627000, 0, 0, 4130008, 1, 3),
|
||||
(1, 1442067, 115, 3, 682000, 0, 0, 4130009, 1, 3),
|
||||
(1, 1302081, 115, 3, 748000, 0, 0, 4130002, 1, 3),
|
||||
(1, 1312037, 115, 3, 638000, 0, 0, 4130003, 1, 3),
|
||||
(1, 1322060, 115, 3, 539000, 0, 0, 4130004, 1, 3),
|
||||
(1, 1402046, 115, 3, 715000, 0, 0, 4130005, 1, 3),
|
||||
(1, 1412033, 115, 3, 715000, 0, 0, 4130006, 1, 3),
|
||||
(1, 1422037, 115, 3, 616000, 0, 0, 4130007, 1, 3),
|
||||
(1, 1432047, 115, 3, 627000, 0, 0, 4130008, 1, 3),
|
||||
(1, 1442063, 115, 3, 682000, 0, 0, 4130009, 1, 3),
|
||||
(2, 1002215, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002216, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002217, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002218, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002242, 55, 1, 28000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002243, 55, 1, 28000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002244, 55, 1, 28000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002245, 55, 1, 28000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002246, 55, 1, 28000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002252, 65, 1, 44000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002253, 65, 1, 44000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002254, 65, 1, 44000, 0, 0, 4130018, 1, 1),
|
||||
(2, 1002271, 75, 2, 73000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002272, 75, 2, 73000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002273, 75, 2, 73000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002274, 75, 2, 73000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002363, 85, 2, 84000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002364, 85, 2, 84000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002365, 85, 2, 84000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002366, 85, 2, 84000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002398, 95, 2, 96000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002399, 95, 2, 96000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002400, 95, 2, 96000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002401, 95, 2, 96000, 0, 0, 4130018, 1, 2),
|
||||
(2, 1002773, 105, 3, 165000, 0, 0, 4130018, 1, 3),
|
||||
(2, 1002791, 115, 3, 187000, 0, 0, 4130018, 1, 3),
|
||||
(2, 1002777, 115, 3, 187000, 0, 0, 4130018, 1, 3),
|
||||
(2, 1050045, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050046, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050047, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050048, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050049, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051030, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051031, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051032, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051033, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051034, 43, 1, 50000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050053, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050054, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050055, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050056, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051044, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051045, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051046, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051047, 53, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050067, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050068, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050069, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050070, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051052, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051053, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051054, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1051055, 63, 1, 66000, 0, 0, 4130021, 1, 1),
|
||||
(2, 1050072, 73, 2, 123000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050073, 73, 2, 123000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050074, 73, 2, 123000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051056, 73, 2, 123000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051057, 73, 2, 123000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051058, 73, 2, 123000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050092, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050093, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050094, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050095, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051094, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051095, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051096, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051097, 83, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050102, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050103, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050104, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1050105, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051101, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051102, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051103, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1051104, 93, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(2, 1052076, 103, 3, 319000, 0, 0, 4130021, 1, 3),
|
||||
(2, 1052161, 115, 3, 374000, 0, 0, 4130021, 1, 3),
|
||||
(2, 1052156, 115, 3, 374000, 0, 0, 4130021, 1, 3),
|
||||
(2, 1072140, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072141, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072142, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072143, 45, 1, 30000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072136, 55, 1, 33000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072137, 55, 1, 33000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072138, 55, 1, 33000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072139, 55, 1, 33000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072157, 65, 1, 44000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072158, 65, 1, 44000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072159, 65, 1, 44000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072160, 65, 1, 44000, 0, 0, 4130001, 1, 1),
|
||||
(2, 1072177, 75, 2, 77000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072178, 75, 2, 77000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072179, 75, 2, 77000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072206, 85, 2, 92000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072207, 85, 2, 92000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072208, 85, 2, 92000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072209, 85, 2, 92000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072223, 95, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072224, 95, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072225, 95, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072226, 95, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(2, 1072268, 105, 3, 198000, 0, 0, 4130001, 1, 3),
|
||||
(2, 1072362, 115, 3, 242000, 0, 0, 4130001, 1, 3),
|
||||
(2, 1072356, 115, 3, 242000, 0, 0, 4130001, 1, 3),
|
||||
(2, 1082080, 45, 1, 55000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082081, 45, 1, 44000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082082, 45, 1, 50000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082086, 55, 1, 58000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082087, 55, 1, 63000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082088, 55, 1, 69000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082098, 65, 1, 77000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082099, 65, 1, 80000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082100, 65, 1, 82000, 0, 0, 4130000, 1, 1),
|
||||
(2, 1082121, 75, 2, 153000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082122, 75, 2, 157000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082123, 75, 2, 161000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082131, 85, 2, 176000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082132, 85, 2, 180000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082133, 85, 2, 180000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082134, 85, 2, 184000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082151, 95, 2, 199000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082152, 95, 2, 203000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082153, 95, 2, 203000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082154, 95, 2, 207000, 0, 0, 4130000, 1, 2),
|
||||
(2, 1082164, 105, 3, 330000, 0, 0, 4130000, 1, 3),
|
||||
(2, 1082240, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(2, 1082235, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(2, 1092057, 115, 3, 385000, 0, 0, 4130022, 1, 3),
|
||||
(2, 1372007, 43, 1, 110000, 0, 0, 4130010, 1, 1),
|
||||
(2, 1382006, 50, 1, 82000, 0, 0, 4130011, 1, 1),
|
||||
(2, 1372014, 53, 1, 126000, 0, 0, 4130010, 1, 1),
|
||||
(2, 1382007, 60, 1, 110000, 0, 0, 4130011, 1, 1),
|
||||
(2, 1372015, 63, 1, 143000, 0, 0, 4130010, 1, 1),
|
||||
(2, 1382010, 70, 1, 137000, 0, 0, 4130011, 1, 1),
|
||||
(2, 1372016, 73, 2, 223000, 0, 0, 4130010, 1, 2),
|
||||
(2, 1382008, 80, 2, 238000, 0, 0, 4130011, 1, 2),
|
||||
(2, 1372009, 83, 2, 250000, 0, 0, 4130010, 1, 2),
|
||||
(2, 1382035, 90, 2, 292000, 0, 0, 4130011, 1, 2),
|
||||
(2, 1372010, 93, 2, 277000, 0, 0, 4130010, 1, 2),
|
||||
(2, 1372032, 103, 3, 506000, 0, 0, 4130010, 1, 3),
|
||||
(2, 1382036, 105, 3, 517000, 0, 0, 4130011, 1, 3),
|
||||
(2, 1372045, 115, 3, 561000, 0, 0, 4130010, 1, 3),
|
||||
(2, 1382059, 115, 3, 572000, 0, 0, 4130011, 1, 3),
|
||||
(2, 1372044, 115, 3, 561000, 0, 0, 4130010, 1, 3),
|
||||
(2, 1382057, 115, 3, 572000, 0, 0, 4130011, 1, 3),
|
||||
(4, 1002211, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002212, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002213, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002214, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002267, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002268, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002269, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002270, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002286, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002287, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002288, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002289, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(4, 1002275, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002276, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002277, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002278, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002402, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002403, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002404, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002405, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002406, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002407, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002408, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(4, 1002547, 105, 3, 165000, 0, 0, 4130018, 1, 3),
|
||||
(4, 1002792, 115, 3, 187000, 0, 0, 4130018, 1, 3),
|
||||
(4, 1002778, 115, 3, 187000, 0, 0, 4130018, 1, 3),
|
||||
(4, 1050051, 45, 1, 52000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050052, 45, 1, 52000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051037, 45, 1, 52000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051038, 45, 1, 52000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051039, 45, 1, 52000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050058, 55, 1, 58000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050059, 55, 1, 58000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050060, 55, 1, 58000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051041, 55, 1, 58000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051042, 55, 1, 58000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051043, 55, 1, 58000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050061, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050062, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050063, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050064, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051062, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051063, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051064, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1051065, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(4, 1050075, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050076, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050077, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050078, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051066, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051067, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051068, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051069, 75, 2, 107000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050088, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050089, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050090, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050091, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051082, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051083, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051084, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051085, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050106, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050107, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1050108, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051105, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051106, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1051107, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(4, 1052071, 105, 3, 330000, 0, 0, 4130021, 1, 3),
|
||||
(4, 1052162, 115, 3, 396000, 0, 0, 4130021, 1, 3),
|
||||
(4, 1052157, 115, 3, 396000, 0, 0, 4130021, 1, 3),
|
||||
(4, 1072122, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072123, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072124, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072125, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072144, 55, 1, 36000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072145, 55, 1, 36000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072146, 55, 1, 36000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072164, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072165, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072166, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072167, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(4, 1072182, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072183, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072184, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072185, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072203, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072204, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072205, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072227, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072228, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072229, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(4, 1072269, 105, 3, 198000, 0, 0, 4130001, 1, 3),
|
||||
(4, 1072363, 115, 3, 220000, 0, 0, 4130001, 1, 3),
|
||||
(4, 1072357, 115, 3, 220000, 0, 0, 4130001, 1, 3),
|
||||
(4, 1082083, 45, 1, 58000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082084, 45, 1, 47000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082085, 45, 1, 52000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082089, 55, 1, 60000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082090, 55, 1, 66000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082091, 55, 1, 71000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082106, 65, 1, 77000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082107, 65, 1, 82000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082108, 65, 1, 88000, 0, 0, 4130000, 1, 1),
|
||||
(4, 1082109, 75, 2, 153000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082110, 75, 2, 157000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082111, 75, 2, 157000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082112, 75, 2, 161000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082125, 85, 2, 176000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082126, 85, 2, 180000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082127, 85, 2, 184000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082158, 95, 2, 199000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082159, 95, 2, 203000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082160, 95, 2, 207000, 0, 0, 4130000, 1, 2),
|
||||
(4, 1082163, 105, 3, 330000, 0, 0, 4130000, 1, 3),
|
||||
(4, 1082241, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(4, 1082236, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(4, 1452008, 45, 1, 110000, 0, 0, 4130012, 1, 1),
|
||||
(4, 1462007, 45, 1, 93000, 0, 0, 4130013, 1, 1),
|
||||
(4, 1452004, 55, 1, 137000, 0, 0, 4130012, 1, 1),
|
||||
(4, 1462008, 55, 1, 132000, 0, 0, 4130013, 1, 1),
|
||||
(4, 1452009, 65, 1, 165000, 0, 0, 4130012, 1, 1),
|
||||
(4, 1452010, 65, 1, 165000, 0, 0, 4130012, 1, 1),
|
||||
(4, 1452011, 65, 1, 165000, 0, 0, 4130012, 1, 1),
|
||||
(4, 1462009, 65, 1, 165000, 0, 0, 4130013, 1, 1),
|
||||
(4, 1452012, 75, 2, 269000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1452013, 75, 2, 269000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1452014, 75, 2, 269000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1452015, 75, 2, 269000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1462010, 75, 2, 269000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1462011, 75, 2, 269000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1462012, 75, 2, 269000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1462013, 75, 2, 269000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1452017, 85, 2, 308000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1462018, 85, 2, 308000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1452019, 95, 2, 346000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1452020, 95, 2, 346000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1452021, 95, 2, 346000, 0, 0, 4130012, 1, 2),
|
||||
(4, 1462015, 95, 2, 346000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1462016, 95, 2, 346000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1462017, 95, 2, 346000, 0, 0, 4130013, 1, 2),
|
||||
(4, 1452044, 105, 3, 550000, 0, 0, 4130012, 1, 3),
|
||||
(4, 1462039, 105, 3, 550000, 0, 0, 4130013, 1, 3),
|
||||
(4, 1452059, 115, 3, 605000, 0, 0, 4130012, 1, 3),
|
||||
(4, 1462051, 115, 3, 605000, 0, 0, 4130013, 1, 3),
|
||||
(4, 1452057, 115, 3, 605000, 0, 0, 4130012, 1, 3),
|
||||
(4, 1462050, 115, 3, 605000, 0, 0, 4130013, 1, 3),
|
||||
(8, 1002207, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002208, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002209, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002210, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002247, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002248, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002249, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002281, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002282, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002283, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002284, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002285, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(8, 1002327, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002328, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002329, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002330, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002323, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002324, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002325, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002326, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002380, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002381, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002382, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002383, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(8, 1002550, 105, 3, 165000, 0, 0, 4130018, 1, 3),
|
||||
(8, 1002793, 115, 3, 209000, 0, 0, 4130018, 1, 3),
|
||||
(8, 1002779, 115, 3, 209000, 0, 0, 4130018, 1, 3),
|
||||
(8, 1040094, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040095, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040096, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040097, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041077, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041078, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041079, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041080, 45, 1, 41000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040098, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040099, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040100, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041094, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041095, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041096, 55, 1, 50000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040105, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040106, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040107, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041100, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041101, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041102, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1041103, 65, 1, 55000, 0, 0, 4130019, 1, 1),
|
||||
(8, 1040108, 75, 2, 107000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1040109, 75, 2, 107000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1040110, 75, 2, 107000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041105, 75, 2, 107000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041106, 75, 2, 107000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041107, 75, 2, 107000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1040115, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1040116, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1040117, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1040118, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041115, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041116, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041117, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1041118, 85, 2, 138000, 0, 0, 4130019, 1, 2),
|
||||
(8, 1060083, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060084, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060085, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060086, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061076, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061077, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061078, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061079, 45, 1, 33000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060087, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060088, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060089, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061093, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061094, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061095, 55, 1, 41000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060093, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060094, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060095, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061099, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061100, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061101, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1061102, 65, 1, 50000, 0, 0, 4130020, 1, 1),
|
||||
(8, 1060097, 75, 2, 92000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1060098, 75, 2, 92000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1060099, 75, 2, 92000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061104, 75, 2, 92000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061105, 75, 2, 92000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061106, 75, 2, 92000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1060104, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1060105, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1060106, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1060107, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061114, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061115, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061116, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1061117, 85, 2, 123000, 0, 0, 4130020, 1, 2),
|
||||
(8, 1050096, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1050097, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1050098, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1050099, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1051090, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1051091, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1051092, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1051093, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(8, 1052072, 105, 3, 330000, 0, 0, 4130021, 1, 3),
|
||||
(8, 1052163, 115, 3, 396000, 0, 0, 4130021, 1, 3),
|
||||
(8, 1052158, 115, 3, 396000, 0, 0, 4130021, 1, 3),
|
||||
(8, 1072128, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072129, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072130, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072131, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072150, 55, 1, 36000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072151, 55, 1, 36000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072152, 55, 1, 39000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072161, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072162, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072163, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(8, 1072172, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072173, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072174, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072192, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072193, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072194, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072195, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072213, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072214, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072215, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072216, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(8, 1072272, 105, 3, 215000, 0, 0, 4130001, 1, 3),
|
||||
(8, 1072364, 115, 3, 248000, 0, 0, 4130001, 1, 3),
|
||||
(8, 1072358, 115, 3, 248000, 0, 0, 4130001, 1, 3),
|
||||
(8, 1082065, 45, 1, 47000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082066, 45, 1, 52000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082067, 45, 1, 50000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082092, 55, 1, 60000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082093, 55, 1, 66000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082094, 55, 1, 71000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082095, 65, 1, 82000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082096, 65, 1, 88000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082097, 65, 1, 93000, 0, 0, 4130000, 1, 1),
|
||||
(8, 1082118, 75, 2, 153000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082119, 75, 2, 157000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082120, 75, 2, 161000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082142, 85, 2, 165000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082143, 85, 2, 165000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082144, 85, 2, 165000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082135, 95, 2, 199000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082136, 95, 2, 203000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082137, 95, 2, 203000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082138, 95, 2, 207000, 0, 0, 4130000, 1, 2),
|
||||
(8, 1082167, 105, 3, 330000, 0, 0, 4130000, 1, 3),
|
||||
(8, 1082242, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(8, 1082237, 115, 3, 363000, 0, 0, 4130000, 1, 3),
|
||||
(8, 1092059, 115, 3, 385000, 0, 0, 4130022, 1, 3),
|
||||
(8, 1332003, 45, 1, 121000, 0, 0, 4130014, 1, 1),
|
||||
(8, 1472018, 45, 1, 55000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472019, 45, 1, 57000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472020, 45, 1, 57000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472021, 45, 1, 60000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1332016, 45, 1, 121000, 0, 0, 4130014, 1, 1),
|
||||
(8, 1332015, 55, 1, 137000, 0, 0, 4130014, 1, 1),
|
||||
(8, 1472022, 55, 1, 137000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472023, 55, 1, 140000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472024, 55, 1, 140000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472025, 55, 1, 143000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1332017, 55, 1, 137000, 0, 0, 4130014, 1, 1),
|
||||
(8, 1332018, 65, 1, 154000, 0, 0, 4130014, 1, 1),
|
||||
(8, 1472026, 65, 1, 165000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472027, 65, 1, 167000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472028, 65, 1, 167000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1472029, 65, 1, 170000, 0, 0, 4130015, 1, 1),
|
||||
(8, 1332019, 65, 1, 154000, 0, 0, 4130014, 1, 1),
|
||||
(8, 1472031, 75, 2, 308000, 0, 0, 4130015, 1, 2),
|
||||
(8, 1332022, 75, 2, 238000, 0, 0, 4130014, 1, 2),
|
||||
(8, 1332023, 75, 2, 238000, 0, 0, 4130014, 1, 2),
|
||||
(8, 1332027, 85, 2, 261000, 0, 0, 4130014, 1, 2),
|
||||
(8, 1472033, 85, 2, 346000, 0, 0, 4130015, 1, 2),
|
||||
(8, 1332026, 85, 2, 261000, 0, 0, 4130014, 1, 2),
|
||||
(8, 1332052, 95, 2, 308000, 0, 0, 4130014, 1, 2),
|
||||
(8, 1472053, 95, 2, 392000, 0, 0, 4130015, 1, 2),
|
||||
(8, 1332051, 95, 2, 308000, 0, 0, 4130014, 1, 2),
|
||||
(8, 1332050, 105, 3, 495000, 0, 0, 4130014, 1, 3),
|
||||
(8, 1472051, 105, 3, 627000, 0, 0, 4130015, 1, 3),
|
||||
(8, 1472052, 105, 3, 627000, 0, 0, 4130015, 1, 3),
|
||||
(8, 1332049, 105, 3, 495000, 0, 0, 4130014, 1, 3),
|
||||
(8, 1332075, 115, 3, 550000, 0, 0, 4130014, 1, 3),
|
||||
(8, 1332076, 115, 3, 550000, 0, 0, 4130014, 1, 3),
|
||||
(8, 1472071, 115, 3, 693000, 0, 0, 4130015, 1, 3),
|
||||
(8, 1332073, 115, 3, 550000, 0, 0, 4130014, 1, 3),
|
||||
(8, 1332074, 115, 3, 561000, 0, 0, 4130014, 1, 3),
|
||||
(8, 1472068, 115, 3, 693000, 0, 0, 4130015, 1, 3),
|
||||
(16, 1002631, 45, 1, 22000, 0, 0, 4130018, 1, 1),
|
||||
(16, 1002634, 55, 1, 30000, 0, 0, 4130018, 1, 1),
|
||||
(16, 1002637, 65, 1, 47000, 0, 0, 4130018, 1, 1),
|
||||
(16, 1002640, 75, 2, 77000, 0, 0, 4130018, 1, 2),
|
||||
(16, 1002643, 85, 2, 88000, 0, 0, 4130018, 1, 2),
|
||||
(16, 1002646, 95, 2, 100000, 0, 0, 4130018, 1, 2),
|
||||
(16, 1002649, 105, 3, 165000, 0, 0, 4130018, 1, 3),
|
||||
(16, 1002794, 115, 3, 187000, 0, 0, 4130018, 1, 3),
|
||||
(16, 1002780, 115, 3, 187000, 0, 0, 4130018, 1, 3),
|
||||
(16, 1052116, 45, 1, 52000, 0, 0, 4130021, 1, 1),
|
||||
(16, 1052119, 55, 1, 55000, 0, 0, 4130021, 1, 1),
|
||||
(16, 1052122, 65, 1, 63000, 0, 0, 4130021, 1, 1),
|
||||
(16, 1052125, 75, 2, 138000, 0, 0, 4130021, 1, 2),
|
||||
(16, 1052128, 85, 2, 153000, 0, 0, 4130021, 1, 2),
|
||||
(16, 1052131, 95, 2, 184000, 0, 0, 4130021, 1, 2),
|
||||
(16, 1052134, 105, 3, 330000, 0, 0, 4130021, 1, 3),
|
||||
(16, 1052164, 115, 3, 396000, 0, 0, 4130021, 1, 3),
|
||||
(16, 1052159, 115, 3, 396000, 0, 0, 4130021, 1, 3),
|
||||
(16, 1072303, 45, 1, 28000, 0, 0, 4130001, 1, 1),
|
||||
(16, 1072306, 55, 1, 36000, 0, 0, 4130001, 1, 1),
|
||||
(16, 1072309, 65, 1, 50000, 0, 0, 4130001, 1, 1),
|
||||
(16, 1072312, 75, 2, 84000, 0, 0, 4130001, 1, 2),
|
||||
(16, 1072315, 85, 2, 107000, 0, 0, 4130001, 1, 2),
|
||||
(16, 1072318, 95, 2, 130000, 0, 0, 4130001, 1, 2),
|
||||
(16, 1072321, 105, 3, 198000, 0, 0, 4130001, 1, 3),
|
||||
(16, 1072365, 115, 3, 220000, 0, 0, 4130001, 1, 3),
|
||||
(16, 1072359, 115, 3, 220000, 0, 0, 4130001, 1, 3),
|
||||
(16, 1082198, 45, 1, 47000, 0, 0, 4130000, 1, 1),
|
||||
(16, 1082201, 55, 1, 60000, 0, 0, 4130000, 1, 1),
|
||||
(16, 1082204, 65, 1, 82000, 0, 0, 4130000, 1, 1),
|
||||
(16, 1082207, 75, 2, 153000, 0, 0, 4130000, 1, 2),
|
||||
(16, 1082210, 85, 2, 176000, 0, 0, 4130000, 1, 2),
|
||||
(16, 1082213, 95, 2, 203000, 0, 0, 4130000, 1, 2),
|
||||
(16, 1082216, 105, 3, 330000, 0, 0, 4130000, 1, 3),
|
||||
(16, 1082243, 115, 3, 369000, 0, 0, 4130000, 1, 3),
|
||||
(16, 1082238, 115, 3, 369000, 0, 0, 4130000, 1, 3),
|
||||
(16, 1482007, 45, 1, 71000, 0, 0, 4130016, 1, 1),
|
||||
(16, 1492007, 45, 1, 77000, 0, 0, 4130017, 1, 1),
|
||||
(16, 1482008, 55, 1, 132000, 0, 0, 4130016, 1, 1),
|
||||
(16, 1492008, 55, 1, 137000, 0, 0, 4130017, 1, 1),
|
||||
(16, 1482009, 65, 1, 165000, 0, 0, 4130016, 1, 1),
|
||||
(16, 1492009, 65, 1, 170000, 0, 0, 4130017, 1, 1),
|
||||
(16, 1482010, 75, 2, 269000, 0, 0, 4130016, 1, 2),
|
||||
(16, 1492010, 75, 2, 269000, 0, 0, 4130017, 1, 2),
|
||||
(16, 1482011, 85, 2, 300000, 0, 0, 4130016, 1, 2),
|
||||
(16, 1492011, 85, 2, 308000, 0, 0, 4130017, 1, 2),
|
||||
(16, 1482012, 95, 2, 338000, 0, 0, 4130016, 1, 2),
|
||||
(16, 1492012, 95, 2, 346000, 0, 0, 4130017, 1, 2),
|
||||
(16, 1482013, 105, 3, 561000, 0, 0, 4130016, 1, 3),
|
||||
(16, 1492013, 105, 3, 572000, 0, 0, 4130017, 1, 3),
|
||||
(16, 1482024, 115, 3, 616000, 0, 0, 4130016, 1, 3),
|
||||
(16, 1492025, 115, 3, 627000, 0, 0, 4130017, 1, 3),
|
||||
(16, 1482023, 115, 3, 616000, 0, 0, 4130016, 1, 3),
|
||||
(16, 1492023, 115, 3, 627000, 0, 0, 4130017, 1, 3);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,99 @@
|
||||
INSERT INTO makerrewarddata (itemid, rewardid, quantity, prob)
|
||||
VALUES (4250000, 4250000, 1, 14),
|
||||
(4250000, 4250001, 1, 5),
|
||||
(4250000, 4250002, 1, 1),
|
||||
(4250100, 4250100, 1, 14),
|
||||
(4250100, 4250101, 1, 5),
|
||||
(4250100, 4250102, 1, 1),
|
||||
(4250200, 4250200, 1, 14),
|
||||
(4250200, 4250201, 1, 5),
|
||||
(4250200, 4250202, 1, 1),
|
||||
(4250300, 4250300, 1, 14),
|
||||
(4250300, 4250301, 1, 5),
|
||||
(4250300, 4250302, 1, 1),
|
||||
(4250400, 4250400, 1, 14),
|
||||
(4250400, 4250401, 1, 5),
|
||||
(4250400, 4250402, 1, 1),
|
||||
(4250500, 4250500, 1, 14),
|
||||
(4250500, 4250501, 1, 5),
|
||||
(4250500, 4250502, 1, 1),
|
||||
(4250600, 4250600, 1, 14),
|
||||
(4250600, 4250601, 1, 5),
|
||||
(4250600, 4250602, 1, 1),
|
||||
(4250700, 4250700, 1, 14),
|
||||
(4250700, 4250701, 1, 5),
|
||||
(4250700, 4250702, 1, 1),
|
||||
(4250800, 4250800, 1, 75),
|
||||
(4250800, 4250801, 1, 24),
|
||||
(4250800, 4250802, 1, 1),
|
||||
(4250900, 4250900, 1, 75),
|
||||
(4250900, 4250901, 1, 24),
|
||||
(4250900, 4250902, 1, 1),
|
||||
(4251000, 4251000, 1, 75),
|
||||
(4251000, 4251001, 1, 24),
|
||||
(4251000, 4251002, 1, 1),
|
||||
(4251100, 4251100, 1, 75),
|
||||
(4251100, 4251101, 1, 24),
|
||||
(4251100, 4251102, 1, 1),
|
||||
(4251300, 4251300, 1, 27),
|
||||
(4251300, 4251301, 1, 12),
|
||||
(4251300, 4251302, 1, 1),
|
||||
(4251400, 4251400, 1, 27),
|
||||
(4251400, 4251401, 1, 12),
|
||||
(4251400, 4251402, 1, 1),
|
||||
(4250001, 4250001, 1, 3),
|
||||
(4250001, 4250000, 9, 2),
|
||||
(4250101, 4250101, 1, 3),
|
||||
(4250101, 4250100, 9, 2),
|
||||
(4250201, 4250201, 1, 3),
|
||||
(4250201, 4250200, 9, 2),
|
||||
(4250301, 4250301, 1, 3),
|
||||
(4250301, 4250300, 9, 2),
|
||||
(4250401, 4250401, 1, 3),
|
||||
(4250401, 4250400, 9, 2),
|
||||
(4250501, 4250501, 1, 3),
|
||||
(4250501, 4250500, 9, 2),
|
||||
(4250601, 4250601, 1, 3),
|
||||
(4250601, 4250600, 9, 2),
|
||||
(4250701, 4250701, 1, 3),
|
||||
(4250701, 4250700, 9, 2),
|
||||
(4250801, 4250801, 1, 3),
|
||||
(4250801, 4250800, 9, 2),
|
||||
(4250901, 4250901, 1, 3),
|
||||
(4250901, 4250900, 9, 2),
|
||||
(4251001, 4251001, 1, 3),
|
||||
(4251001, 4251000, 9, 2),
|
||||
(4251101, 4251101, 1, 3),
|
||||
(4251101, 4251100, 9, 2),
|
||||
(4251301, 4251301, 1, 1),
|
||||
(4251301, 4251300, 9, 1),
|
||||
(4251401, 4251401, 1, 1),
|
||||
(4251401, 4251400, 9, 1),
|
||||
(4250002, 4250002, 1, 3),
|
||||
(4250002, 4250001, 9, 7),
|
||||
(4250102, 4250102, 1, 3),
|
||||
(4250102, 4250101, 9, 7),
|
||||
(4250202, 4250202, 1, 3),
|
||||
(4250202, 4250201, 9, 7),
|
||||
(4250302, 4250302, 1, 3),
|
||||
(4250302, 4250301, 9, 7),
|
||||
(4250402, 4250402, 1, 3),
|
||||
(4250402, 4250401, 9, 7),
|
||||
(4250502, 4250502, 1, 3),
|
||||
(4250502, 4250501, 9, 7),
|
||||
(4250602, 4250602, 1, 3),
|
||||
(4250602, 4250601, 9, 7),
|
||||
(4250702, 4250702, 1, 3),
|
||||
(4250702, 4250701, 9, 7),
|
||||
(4250802, 4250802, 1, 3),
|
||||
(4250802, 4250801, 9, 7),
|
||||
(4250902, 4250902, 1, 3),
|
||||
(4250902, 4250901, 9, 7),
|
||||
(4251002, 4251002, 1, 3),
|
||||
(4251002, 4251001, 9, 7),
|
||||
(4251102, 4251102, 1, 3),
|
||||
(4251102, 4251101, 9, 7),
|
||||
(4251302, 4251302, 1, 1),
|
||||
(4251302, 4251301, 9, 4),
|
||||
(4251402, 4251402, 1, 1),
|
||||
(4251402, 4251401, 9, 4);
|
||||
@@ -0,0 +1,47 @@
|
||||
# generated with the SkillMakerReagentIndexer tool
|
||||
INSERT INTO makerreagentdata (itemid, stat, value)
|
||||
VALUES (4250000, "incPAD", 1),
|
||||
(4250001, "incPAD", 2),
|
||||
(4250002, "incPAD", 3),
|
||||
(4250100, "incMAD", 1),
|
||||
(4250101, "incMAD", 2),
|
||||
(4250102, "incMAD", 3),
|
||||
(4250200, "incACC", 2),
|
||||
(4250201, "incACC", 3),
|
||||
(4250202, "incACC", 5),
|
||||
(4250300, "incEVA", 2),
|
||||
(4250301, "incEVA", 3),
|
||||
(4250302, "incEVA", 5),
|
||||
(4250400, "incSpeed", 2),
|
||||
(4250401, "incSpeed", 3),
|
||||
(4250402, "incSpeed", 5),
|
||||
(4250500, "incJump", 1),
|
||||
(4250501, "incJump", 2),
|
||||
(4250502, "incJump", 3),
|
||||
(4250600, "incMaxHP", 10),
|
||||
(4250601, "incMaxHP", 20),
|
||||
(4250602, "incMaxHP", 30),
|
||||
(4250700, "incMaxMP", 10),
|
||||
(4250701, "incMaxMP", 20),
|
||||
(4250702, "incMaxMP", 30),
|
||||
(4250800, "incSTR", 2),
|
||||
(4250801, "incSTR", 3),
|
||||
(4250802, "incSTR", 5),
|
||||
(4250900, "incINT", 2),
|
||||
(4250901, "incINT", 3),
|
||||
(4250902, "incINT", 5),
|
||||
(4251000, "incLUK", 2),
|
||||
(4251001, "incLUK", 3),
|
||||
(4251002, "incLUK", 5),
|
||||
(4251100, "incDEX", 2),
|
||||
(4251101, "incDEX", 3),
|
||||
(4251102, "incDEX", 5),
|
||||
(4251200, "incReqLevel", -1),
|
||||
(4251201, "incReqLevel", -2),
|
||||
(4251202, "incReqLevel", -3),
|
||||
(4251300, "randOption", 1),
|
||||
(4251301, "randOption", 2),
|
||||
(4251302, "randOption", 3),
|
||||
(4251400, "randStat", 2),
|
||||
(4251401, "randStat", 3),
|
||||
(4251402, "randStat", 5);
|
||||
@@ -0,0 +1,344 @@
|
||||
INSERT INTO monstercarddata (cardid, mobid)
|
||||
VALUES (2380000, 100100),
|
||||
(2380001, 100101),
|
||||
(2380015, 100130),
|
||||
(2380016, 100131),
|
||||
(2380017, 100132),
|
||||
(2380018, 100133),
|
||||
(2380019, 100134),
|
||||
(2380002, 120100),
|
||||
(2380003, 130100),
|
||||
(2380004, 130101),
|
||||
(2380005, 210100),
|
||||
(2380011, 1110100),
|
||||
(2380008, 1110101),
|
||||
(2380014, 1110130),
|
||||
(2380010, 1120100),
|
||||
(2381000, 1130100),
|
||||
(2381001, 1140100),
|
||||
(2381082, 1140130),
|
||||
(2380006, 1210100),
|
||||
(2380009, 1210101),
|
||||
(2380007, 1210102),
|
||||
(2380012, 1210103),
|
||||
(2381004, 2100100),
|
||||
(2381005, 2100101),
|
||||
(2381010, 2100102),
|
||||
(2381023, 2100103),
|
||||
(2381028, 2100104),
|
||||
(2381015, 2100105),
|
||||
(2381019, 2100106),
|
||||
(2381025, 2100107),
|
||||
(2381030, 2100108),
|
||||
(2381007, 2110200),
|
||||
(2381020, 2110300),
|
||||
(2381031, 2110301),
|
||||
(2381008, 2130100),
|
||||
(2381006, 2130103),
|
||||
(2388000, 2220000),
|
||||
(2381002, 2220100),
|
||||
(2381024, 2230100),
|
||||
(2381016, 2230101),
|
||||
(2381022, 2230102),
|
||||
(2381011, 2230103),
|
||||
(2381027, 2230104),
|
||||
(2381013, 2230105),
|
||||
(2381021, 2230106),
|
||||
(2381017, 2230107),
|
||||
(2381009, 2230108),
|
||||
(2381026, 2230109),
|
||||
(2381014, 2230110),
|
||||
(2381018, 2230111),
|
||||
(2381083, 2230131),
|
||||
(2381029, 2230200),
|
||||
(2381003, 2300100),
|
||||
(2381032, 3000000),
|
||||
(2381033, 3000001),
|
||||
(2381034, 3000005),
|
||||
(2381035, 3000006),
|
||||
(2382008, 3100101),
|
||||
(2381036, 3100102),
|
||||
(2382002, 3110100),
|
||||
(2382004, 3110101),
|
||||
(2382005, 3110102),
|
||||
(2382009, 3110300),
|
||||
(2382010, 3110301),
|
||||
(2382024, 3110302),
|
||||
(2382036, 3110303),
|
||||
(2382003, 3210100),
|
||||
(2382011, 3210200),
|
||||
(2382012, 3210201),
|
||||
(2382013, 3210202),
|
||||
(2382025, 3210203),
|
||||
(2382015, 3210204),
|
||||
(2382016, 3210205),
|
||||
(2382026, 3210206),
|
||||
(2382017, 3210207),
|
||||
(2382028, 3210208),
|
||||
(2382027, 3210450),
|
||||
(2382029, 3210800),
|
||||
(2388025, 3220000),
|
||||
(2388029, 3220001),
|
||||
(2382018, 3230100),
|
||||
(2382019, 3230101),
|
||||
(2382030, 3230102),
|
||||
(2382033, 3230103),
|
||||
(2382007, 3230104),
|
||||
(2382020, 3230200),
|
||||
(2382021, 3230300),
|
||||
(2382022, 3230302),
|
||||
(2382031, 3230303),
|
||||
(2382034, 3230304),
|
||||
(2382038, 3230305),
|
||||
(2382032, 3230306),
|
||||
(2382000, 3230307),
|
||||
(2382037, 3230308),
|
||||
(2382001, 3230400),
|
||||
(2382035, 3230405),
|
||||
(2382092, 3300000),
|
||||
(2382093, 3300001),
|
||||
(2382094, 3300002),
|
||||
(2382095, 3300003),
|
||||
(2382096, 3300004),
|
||||
(2388067, 3300005),
|
||||
(2388068, 3300006),
|
||||
(2388069, 3300007),
|
||||
(2388070, 3300008),
|
||||
(2382057, 4110300),
|
||||
(2382072, 4110301),
|
||||
(2383007, 4110302),
|
||||
(2382065, 4130100),
|
||||
(2383001, 4130101),
|
||||
(2383003, 4130102),
|
||||
(2383004, 4130103),
|
||||
(2388030, 4220000),
|
||||
(2382039, 4230100),
|
||||
(2382040, 4230101),
|
||||
(2383008, 4230102),
|
||||
(2382053, 4230103),
|
||||
(2383009, 4230104),
|
||||
(2382052, 4230105),
|
||||
(2382064, 4230106),
|
||||
(2382047, 4230107),
|
||||
(2382058, 4230108),
|
||||
(2382054, 4230109),
|
||||
(2382066, 4230110),
|
||||
(2382048, 4230111),
|
||||
(2382062, 4230112),
|
||||
(2382041, 4230113),
|
||||
(2382049, 4230114),
|
||||
(2383002, 4230115),
|
||||
(2382042, 4230116),
|
||||
(2382055, 4230117),
|
||||
(2382067, 4230118),
|
||||
(2382050, 4230119),
|
||||
(2382061, 4230120),
|
||||
(2383000, 4230121),
|
||||
(2382059, 4230123),
|
||||
(2382056, 4230124),
|
||||
(2382063, 4230125),
|
||||
(2383005, 4230126),
|
||||
(2382043, 4230200),
|
||||
(2382044, 4230201),
|
||||
(2382068, 4230300),
|
||||
(2382069, 4230400),
|
||||
(2382045, 4230500),
|
||||
(2382051, 4230501),
|
||||
(2382060, 4230502),
|
||||
(2382070, 4230503),
|
||||
(2382071, 4230504),
|
||||
(2383006, 4230505),
|
||||
(2383010, 4230506),
|
||||
(2382046, 4230600),
|
||||
(2383011, 4240000),
|
||||
(2382076, 4250000),
|
||||
(2383056, 4250001),
|
||||
(2383048, 5090000),
|
||||
(2383049, 5090001),
|
||||
(2383013, 5100000),
|
||||
(2383017, 5100002),
|
||||
(2383014, 5100003),
|
||||
(2383034, 5100004),
|
||||
(2383024, 5100005),
|
||||
(2383016, 5110300),
|
||||
(2383028, 5110301),
|
||||
(2383042, 5110302),
|
||||
(2383020, 5120000),
|
||||
(2383021, 5120001),
|
||||
(2383022, 5120002),
|
||||
(2383023, 5120003),
|
||||
(2383026, 5120100),
|
||||
(2383035, 5120500),
|
||||
(2383025, 5120501),
|
||||
(2383027, 5120502),
|
||||
(2383015, 5120503),
|
||||
(2383018, 5120504),
|
||||
(2383041, 5120505),
|
||||
(2383032, 5120506),
|
||||
(2383012, 5130100),
|
||||
(2383030, 5130101),
|
||||
(2383039, 5130102),
|
||||
(2383019, 5130103),
|
||||
(2383031, 5130104),
|
||||
(2383033, 5130105),
|
||||
(2383037, 5130107),
|
||||
(2383038, 5130108),
|
||||
(2383040, 5140000),
|
||||
(2383043, 5150000),
|
||||
(2383036, 5150001),
|
||||
(2381012, 5200000),
|
||||
(2381037, 5200001),
|
||||
(2381038, 5200002),
|
||||
(2388003, 5220000),
|
||||
(2388002, 5220002),
|
||||
(2388005, 5220003),
|
||||
(2388052, 5220004),
|
||||
(2383057, 5250000),
|
||||
(2383059, 5250001),
|
||||
(2383058, 5250002),
|
||||
(2382006, 5300000),
|
||||
(2382014, 5300001),
|
||||
(2383029, 5300100),
|
||||
(2382023, 5400000),
|
||||
(2384010, 6090000),
|
||||
(2384037, 6090001),
|
||||
(2384039, 6090003),
|
||||
(2384040, 6090004),
|
||||
(2384011, 6110300),
|
||||
(2384018, 6110301),
|
||||
(2383044, 6130100),
|
||||
(2388006, 6130101),
|
||||
(2383045, 6130102),
|
||||
(2384000, 6130200),
|
||||
(2383046, 6130202),
|
||||
(2383047, 6130203),
|
||||
(2384008, 6130204),
|
||||
(2384002, 6130207),
|
||||
(2384017, 6130208),
|
||||
(2384013, 6130209),
|
||||
(2388007, 6220000),
|
||||
(2388031, 6220001),
|
||||
(2384001, 6230100),
|
||||
(2384007, 6230200),
|
||||
(2384012, 6230300),
|
||||
(2384004, 6230400),
|
||||
(2384005, 6230401),
|
||||
(2384014, 6230500),
|
||||
(2384006, 6230600),
|
||||
(2384015, 6230601),
|
||||
(2384003, 6230602),
|
||||
(2384009, 6300000),
|
||||
(2388008, 6300005),
|
||||
(2384032, 6300100),
|
||||
(2384016, 6400000),
|
||||
(2388017, 6400006),
|
||||
(2388026, 6400008),
|
||||
(2385003, 6400100),
|
||||
(2384038, 7090000),
|
||||
(2384034, 7110300),
|
||||
(2384031, 7110301),
|
||||
(2384030, 7130000),
|
||||
(2384026, 7130001),
|
||||
(2384027, 7130002),
|
||||
(2385001, 7130003),
|
||||
(2385005, 7130004),
|
||||
(2385012, 7130010),
|
||||
(2385013, 7130020),
|
||||
(2384020, 7130100),
|
||||
(2384036, 7130101),
|
||||
(2385004, 7130102),
|
||||
(2384029, 7130103),
|
||||
(2384025, 7130104),
|
||||
(2384035, 7130200),
|
||||
(2385020, 7130300),
|
||||
(2384021, 7130400),
|
||||
(2384022, 7130401),
|
||||
(2384023, 7130402),
|
||||
(2384024, 7130500),
|
||||
(2384033, 7130501),
|
||||
(2384028, 7130600),
|
||||
(2385002, 7130601),
|
||||
(2385010, 7140000),
|
||||
(2385015, 7160000),
|
||||
(2388010, 7220000),
|
||||
(2388009, 7220001),
|
||||
(2388013, 7220002),
|
||||
(2385023, 8090000),
|
||||
(2385008, 8110300),
|
||||
(2385006, 8140000),
|
||||
(2385007, 8140001),
|
||||
(2385011, 8140002),
|
||||
(2385009, 8140100),
|
||||
(2385016, 8140101),
|
||||
(2385017, 8140102),
|
||||
(2385018, 8140103),
|
||||
(2385014, 8140110),
|
||||
(2385019, 8140111),
|
||||
(2384019, 8140200),
|
||||
(2385000, 8140300),
|
||||
(2385021, 8140500),
|
||||
(2386000, 8140600),
|
||||
(2385022, 8140700),
|
||||
(2386001, 8140701),
|
||||
(2386005, 8140702),
|
||||
(2386006, 8140703),
|
||||
(2386002, 8141000),
|
||||
(2386009, 8141100),
|
||||
(2386003, 8141300),
|
||||
(2386004, 8142000),
|
||||
(2386007, 8142100),
|
||||
(2386010, 8143000),
|
||||
(2386012, 8150100),
|
||||
(2386014, 8150101),
|
||||
(2386011, 8150200),
|
||||
(2386016, 8150201),
|
||||
(2386008, 8150300),
|
||||
(2386013, 8150301),
|
||||
(2386015, 8150302),
|
||||
(2387000, 8160000),
|
||||
(2387001, 8170000),
|
||||
(2388018, 8180000),
|
||||
(2388019, 8180001),
|
||||
(2386017, 8190000),
|
||||
(2387004, 8190002),
|
||||
(2387002, 8190003),
|
||||
(2387003, 8190004),
|
||||
(2385025, 8200000),
|
||||
(2386021, 8200001),
|
||||
(2386022, 8200002),
|
||||
(2386023, 8200003),
|
||||
(2386024, 8200004),
|
||||
(2387006, 8200005),
|
||||
(2387007, 8200006),
|
||||
(2387008, 8200007),
|
||||
(2387009, 8200008),
|
||||
(2387010, 8200009),
|
||||
(2387011, 8200010),
|
||||
(2387012, 8200011),
|
||||
(2387013, 8200012),
|
||||
(2388015, 8220000),
|
||||
(2388016, 8220001),
|
||||
(2388032, 8220002),
|
||||
(2388033, 8220003),
|
||||
(2388040, 8220004),
|
||||
(2388041, 8220005),
|
||||
(2388042, 8220006),
|
||||
(2388053, 8220007),
|
||||
(2388054, 8220009),
|
||||
(2388022, 8500002),
|
||||
(2388020, 8510000),
|
||||
(2388023, 8800002),
|
||||
(2388024, 8810018),
|
||||
(2388043, 8820001),
|
||||
(2388055, 8830000),
|
||||
(2388001, 9300003),
|
||||
(2388004, 9300012),
|
||||
(2388021, 9300028),
|
||||
(2388012, 9300039),
|
||||
(2388011, 9300105),
|
||||
(2388014, 9300139),
|
||||
(2388039, 9300182),
|
||||
(2388046, 9300215),
|
||||
(2380013, 9300274),
|
||||
(2388028, 9500317),
|
||||
(2388027, 9500320);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
INSERT INTO specialcashitems (id, sn, modifier, info)
|
||||
VALUES (1, 10000617, 1024, 1);
|
||||
@@ -0,0 +1,41 @@
|
||||
INSERT INTO nxcoupons (couponid, rate, activeday, starthour, endhour)
|
||||
VALUES (211000, 2, 254, 18, 20),
|
||||
(211004, 2, 124, 7, 11),
|
||||
(211005, 2, 124, 10, 14),
|
||||
(211006, 2, 124, 13, 17),
|
||||
(211007, 2, 124, 16, 20),
|
||||
(211008, 2, 124, 19, 23),
|
||||
(211009, 2, 130, 7, 11),
|
||||
(211010, 2, 130, 10, 14),
|
||||
(211011, 2, 130, 13, 17),
|
||||
(5211012, 2, 130, 16, 20),
|
||||
(5211013, 2, 130, 19, 23),
|
||||
(5211014, 2, 254, 7, 11),
|
||||
(5211015, 2, 254, 10, 14),
|
||||
(5211016, 2, 254, 13, 17),
|
||||
(5211017, 2, 254, 16, 20),
|
||||
(5211018, 2, 254, 19, 23),
|
||||
(5211037, 2, 124, 0, 4),
|
||||
(5211038, 2, 130, 0, 4),
|
||||
(5211039, 2, 254, 0, 4),
|
||||
(5211040, 2, 124, 3, 7),
|
||||
(5211041, 2, 130, 3, 7),
|
||||
(5211042, 2, 254, 3, 7),
|
||||
(5211043, 2, 124, 6, 10),
|
||||
(5211044, 2, 130, 6, 10),
|
||||
(5211045, 2, 254, 6, 10),
|
||||
(5211046, 2, 254, 0, 24),
|
||||
(5211048, 2, 254, 0, 24),
|
||||
(5211049, 2, 254, 0, 24),
|
||||
(5211052, 3, 255, 0, 24),
|
||||
(5211060, 3, 255, 0, 24),
|
||||
(5360000, 2, 254, 0, 24),
|
||||
(5360001, 2, 254, 7, 11),
|
||||
(5360002, 2, 254, 10, 14),
|
||||
(5360003, 2, 254, 13, 17),
|
||||
(5360004, 2, 254, 16, 20),
|
||||
(5360005, 2, 254, 19, 23),
|
||||
(5360006, 2, 254, 0, 4),
|
||||
(5360007, 2, 254, 3, 7),
|
||||
(5360008, 2, 254, 6, 10),
|
||||
(5360042, 2, 254, 0, 24);
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO drop_data_global (continent, itemid, minimum_quantity, maximum_quantity, questid, chance, comments)
|
||||
VALUES (-1, 4031865, 1, 1, 0, 2000, 'NX Card 100 PTS'),
|
||||
(-1, 4031866, 1, 1, 0, 500, 'NX Card 250 PTS'),
|
||||
(-1, 4001126, 1, 2, 0, 500, 'Maple Leaf'),
|
||||
(-1, 2049100, 1, 1, 0, 50, 'Chaos Scroll 60%'),
|
||||
(-1, 2340000, 1, 1, 0, 50, 'White Scroll');
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
INSERT INTO accounts (`name`, password, pin, pic, birthday, nxcredit, maplepoint, nxprepaid, characterslots, gender,
|
||||
tos)
|
||||
VALUES ('admin', '$2y$12$aFD9BDeUocDMY1X4tDYDyeJw/HhkQwCQWs3KAY7gCaRG0cpqJcaL.', '0000', '000000',
|
||||
'2005-05-11', 1000000, 1000000, 1000000, 3, 0, 1);
|
||||
|
||||
INSERT INTO characters (accountid, world, `name`, level, exp,
|
||||
str, dex, luk, `int`, hp, mp, maxhp, maxmp, meso, job, skincolor, gender,
|
||||
hair, face, ap, map, spawnpoint, gm, equipslots, useslots,
|
||||
setupslots, etcslots)
|
||||
VALUES ((SELECT id FROM accounts WHERE `name` = 'admin'), 0, 'Admin', 1, 0,
|
||||
12, 5, 4, 4, 50, 5, 50, 5, 100000000, 0, 0, 0,
|
||||
30030, 20000, 500, 10000, 2, 6, 96, 96,
|
||||
96, 96);
|
||||
|
||||
INSERT INTO inventoryitems (type, characterid, itemid, inventorytype,
|
||||
position, quantity, owner, flag, giftFrom)
|
||||
VALUES (1, (SELECT id FROM characters WHERE `name` = 'Admin'), 4161001, 4,
|
||||
1, 1, '', 0, ''),
|
||||
(1, (SELECT id FROM characters WHERE `name` = 'Admin'), 1040002, -1,
|
||||
-5, 1, '', 0, ''),
|
||||
(1, (SELECT id FROM characters WHERE `name` = 'Admin'), 1060002, -1,
|
||||
-6, 1, '', 0, ''),
|
||||
(1, (SELECT id FROM characters WHERE `name` = 'Admin'), 1072001, -1,
|
||||
-7, 1, '', 0, ''),
|
||||
(1, (SELECT id FROM characters WHERE `name` = 'Admin'), 1302000, -1,
|
||||
-11, 1, '', 0, '');
|
||||
|
||||
INSERT INTO inventoryequipment (inventoryitemid, upgradeslots, watk, wdef)
|
||||
VALUES ((SELECT inventoryitemid
|
||||
FROM inventoryitems ii
|
||||
INNER JOIN characters chr ON chr.id = ii.characterid
|
||||
WHERE itemid = 1040002
|
||||
AND position = -5
|
||||
AND chr.`name` = 'Admin'), 7, 0, 3),
|
||||
((SELECT inventoryitemid
|
||||
FROM inventoryitems ii
|
||||
INNER JOIN characters chr ON chr.id = ii.characterid
|
||||
WHERE itemid = 1060002
|
||||
AND position = -6
|
||||
AND chr.`name` = 'Admin'), 7, 0, 2),
|
||||
((SELECT inventoryitemid
|
||||
FROM inventoryitems ii
|
||||
INNER JOIN characters chr ON chr.id = ii.characterid
|
||||
WHERE itemid = 1072001
|
||||
AND position = -7
|
||||
AND chr.`name` = 'Admin'), 5, 0, 2),
|
||||
((SELECT inventoryitemid
|
||||
FROM inventoryitems ii
|
||||
INNER JOIN characters chr ON chr.id = ii.characterid
|
||||
WHERE itemid = 1302000
|
||||
AND position = -11
|
||||
AND chr.`name` = 'Admin'), 7, 17, 0);
|
||||
|
||||
INSERT INTO keymap (characterid, `key`, type, action)
|
||||
VALUES ((SELECT id FROM characters WHERE `name` = 'Admin'),18,4,0),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),65,6,106),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),2,4,10),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),23,4,1),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),3,4,12),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),4,4,13),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),5,4,18),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),6,4,24),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),16,4,8),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),17,4,5),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),19,4,4),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),25,4,19),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),26,4,14),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),27,4,15),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),31,4,2),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),34,4,17),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),35,4,11),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),37,4,3),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),38,4,20),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),40,4,16),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),43,4,9),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),44,5,50),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),45,5,51),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),46,4,6),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),50,4,7),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),56,5,53),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),59,6,100),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),60,6,101),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),61,6,102),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),62,6,103),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),63,6,104),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),64,6,105),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),57,5,54),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),48,4,22),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),29,5,52),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),7,4,21),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),24,4,25),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),33,4,26),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),41,4,23),
|
||||
((SELECT id FROM characters WHERE `name` = 'Admin'),39,4,27);
|
||||
|
||||
INSERT INTO storages (accountid, world, slots, meso)
|
||||
VALUES ((SELECT id FROM accounts WHERE `name` = 'admin'),0, 24,1000000000);
|
||||
@@ -0,0 +1,38 @@
|
||||
CREATE TABLE accounts
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(13) NOT NULL DEFAULT '',
|
||||
password VARCHAR(128) NOT NULL DEFAULT '',
|
||||
pin VARCHAR(10) NOT NULL DEFAULT '',
|
||||
pic VARCHAR(26) NOT NULL DEFAULT '',
|
||||
loggedin TINYINT NOT NULL DEFAULT '0',
|
||||
lastlogin TIMESTAMP NULL DEFAULT NULL,
|
||||
createdat TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
birthday DATE NOT NULL DEFAULT '2005-05-11',
|
||||
banned TINYINT NOT NULL DEFAULT '0',
|
||||
banreason TEXT,
|
||||
macs TINYTEXT,
|
||||
nxCredit INT DEFAULT NULL,
|
||||
maplePoint INT DEFAULT NULL,
|
||||
nxPrepaid INT DEFAULT NULL,
|
||||
characterslots TINYINT NOT NULL DEFAULT '3',
|
||||
gender TINYINT NOT NULL DEFAULT '10',
|
||||
tempban TIMESTAMP NOT NULL DEFAULT '2005-05-11 00:00:00',
|
||||
greason TINYINT NOT NULL DEFAULT '0',
|
||||
tos TINYINT NOT NULL DEFAULT '0',
|
||||
sitelogged TEXT,
|
||||
webadmin INT DEFAULT '0',
|
||||
nick VARCHAR(20) DEFAULT NULL,
|
||||
mute INT DEFAULT '0',
|
||||
email VARCHAR(45) DEFAULT NULL,
|
||||
ip TEXT,
|
||||
rewardpoints INT NOT NULL DEFAULT '0',
|
||||
votepoints INT NOT NULL DEFAULT '0',
|
||||
hwid VARCHAR(12) NOT NULL DEFAULT '',
|
||||
language INT NOT NULL DEFAULT '2',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY `name` (`name`),
|
||||
KEY ranking1 (id, banned),
|
||||
INDEX (id, `name`),
|
||||
INDEX (id, nxCredit, maplePoint, nxPrepaid)
|
||||
);
|
||||
@@ -0,0 +1,84 @@
|
||||
CREATE TABLE characters
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
accountid INT NOT NULL DEFAULT '0',
|
||||
world INT NOT NULL DEFAULT '0',
|
||||
`name` VARCHAR(13) NOT NULL DEFAULT '',
|
||||
level INT NOT NULL DEFAULT '1',
|
||||
exp INT NOT NULL DEFAULT '0',
|
||||
gachaexp INT NOT NULL DEFAULT '0',
|
||||
str INT NOT NULL DEFAULT '12',
|
||||
dex INT NOT NULL DEFAULT '5',
|
||||
luk INT NOT NULL DEFAULT '4',
|
||||
`int` INT NOT NULL DEFAULT '4',
|
||||
hp INT NOT NULL DEFAULT '50',
|
||||
mp INT NOT NULL DEFAULT '5',
|
||||
maxhp INT NOT NULL DEFAULT '50',
|
||||
maxmp INT NOT NULL DEFAULT '5',
|
||||
meso INT NOT NULL DEFAULT '0',
|
||||
hpMpUsed INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
job INT NOT NULL DEFAULT '0',
|
||||
skincolor INT NOT NULL DEFAULT '0',
|
||||
gender INT NOT NULL DEFAULT '0',
|
||||
fame INT NOT NULL DEFAULT '0',
|
||||
fquest INT NOT NULL DEFAULT '0',
|
||||
hair INT NOT NULL DEFAULT '0',
|
||||
face INT NOT NULL DEFAULT '0',
|
||||
ap INT NOT NULL DEFAULT '0',
|
||||
sp VARCHAR(128) NOT NULL DEFAULT '0,0,0,0,0,0,0,0,0,0',
|
||||
map INT NOT NULL DEFAULT '0',
|
||||
spawnpoint INT NOT NULL DEFAULT '0',
|
||||
gm TINYINT NOT NULL DEFAULT '0',
|
||||
party INT NOT NULL DEFAULT '0',
|
||||
buddyCapacity INT NOT NULL DEFAULT '25',
|
||||
createdate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`rank` INT UNSIGNED NOT NULL DEFAULT '1',
|
||||
rankMove INT NOT NULL DEFAULT '0',
|
||||
jobRank INT UNSIGNED NOT NULL DEFAULT '1',
|
||||
jobRankMove INT NOT NULL DEFAULT '0',
|
||||
guildid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
guildrank INT UNSIGNED NOT NULL DEFAULT '5',
|
||||
messengerid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
messengerposition INT UNSIGNED NOT NULL DEFAULT '4',
|
||||
mountlevel INT NOT NULL DEFAULT '1',
|
||||
mountexp INT NOT NULL DEFAULT '0',
|
||||
mounttiredness INT NOT NULL DEFAULT '0',
|
||||
omokwins INT NOT NULL DEFAULT '0',
|
||||
omoklosses INT NOT NULL DEFAULT '0',
|
||||
omokties INT NOT NULL DEFAULT '0',
|
||||
matchcardwins INT NOT NULL DEFAULT '0',
|
||||
matchcardlosses INT NOT NULL DEFAULT '0',
|
||||
matchcardties INT NOT NULL DEFAULT '0',
|
||||
MerchantMesos INT DEFAULT '0',
|
||||
HasMerchant TINYINT DEFAULT '0',
|
||||
equipslots INT NOT NULL DEFAULT '24',
|
||||
useslots INT NOT NULL DEFAULT '24',
|
||||
setupslots INT NOT NULL DEFAULT '24',
|
||||
etcslots INT NOT NULL DEFAULT '24',
|
||||
familyId INT NOT NULL DEFAULT '-1',
|
||||
monsterbookcover INT NOT NULL DEFAULT '0',
|
||||
allianceRank INT NOT NULL DEFAULT '5',
|
||||
vanquisherStage INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
ariantPoints INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
dojoPoints INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
lastDojoStage INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
finishedDojoTutorial TINYINT UNSIGNED NOT NULL DEFAULT '0',
|
||||
vanquisherKills INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
summonValue INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
partnerId INT NOT NULL DEFAULT '0',
|
||||
marriageItemId INT NOT NULL DEFAULT '0',
|
||||
reborns INT NOT NULL DEFAULT '0',
|
||||
PQPoints INT NOT NULL DEFAULT '0',
|
||||
dataString VARCHAR(64) NOT NULL DEFAULT '',
|
||||
lastLogoutTime TIMESTAMP NOT NULL DEFAULT '2015-01-01 05:00:00',
|
||||
lastExpGainTime TIMESTAMP NOT NULL DEFAULT '2015-01-01 05:00:00',
|
||||
partySearch TINYINT NOT NULL DEFAULT '1',
|
||||
jailexpire BIGINT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id),
|
||||
KEY accountid (accountid),
|
||||
KEY party (party),
|
||||
KEY ranking1 (`level`, exp),
|
||||
KEY ranking2 (gm, job),
|
||||
INDEX (id, accountid, world),
|
||||
INDEX (id, accountid, `name`)
|
||||
);
|
||||
@@ -0,0 +1,58 @@
|
||||
CREATE TABLE inventoryitems
|
||||
(
|
||||
inventoryitemid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
type TINYINT UNSIGNED NOT NULL,
|
||||
characterid INT DEFAULT NULL,
|
||||
accountid INT DEFAULT NULL,
|
||||
itemid INT NOT NULL DEFAULT '0',
|
||||
inventorytype INT NOT NULL DEFAULT '0',
|
||||
position INT NOT NULL DEFAULT '0',
|
||||
quantity INT NOT NULL DEFAULT '0',
|
||||
owner TINYTEXT NOT NULL,
|
||||
petid INT NOT NULL DEFAULT '-1',
|
||||
flag INT NOT NULL,
|
||||
expiration BIGINT NOT NULL DEFAULT '-1',
|
||||
giftFrom VARCHAR(26) NOT NULL,
|
||||
PRIMARY KEY (inventoryitemid),
|
||||
KEY CHARID (characterid)
|
||||
);
|
||||
|
||||
CREATE TABLE inventoryequipment
|
||||
(
|
||||
inventoryequipmentid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
inventoryitemid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
upgradeslots INT NOT NULL DEFAULT '0',
|
||||
level INT NOT NULL DEFAULT '0',
|
||||
str INT NOT NULL DEFAULT '0',
|
||||
dex INT NOT NULL DEFAULT '0',
|
||||
`int` INT NOT NULL DEFAULT '0',
|
||||
luk INT NOT NULL DEFAULT '0',
|
||||
hp INT NOT NULL DEFAULT '0',
|
||||
mp INT NOT NULL DEFAULT '0',
|
||||
watk INT NOT NULL DEFAULT '0',
|
||||
matk INT NOT NULL DEFAULT '0',
|
||||
wdef INT NOT NULL DEFAULT '0',
|
||||
mdef INT NOT NULL DEFAULT '0',
|
||||
acc INT NOT NULL DEFAULT '0',
|
||||
avoid INT NOT NULL DEFAULT '0',
|
||||
hands INT NOT NULL DEFAULT '0',
|
||||
speed INT NOT NULL DEFAULT '0',
|
||||
jump INT NOT NULL DEFAULT '0',
|
||||
locked INT NOT NULL DEFAULT '0',
|
||||
vicious INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
itemlevel INT NOT NULL DEFAULT '1',
|
||||
itemexp INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
ringid INT NOT NULL DEFAULT '-1',
|
||||
PRIMARY KEY (inventoryequipmentid),
|
||||
KEY INVENTORYITEMID (inventoryitemid)
|
||||
);
|
||||
|
||||
CREATE TABLE inventorymerchant
|
||||
(
|
||||
inventorymerchantid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
inventoryitemid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
characterid INT DEFAULT NULL,
|
||||
bundles INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (inventorymerchantid),
|
||||
KEY INVENTORYITEMID (inventoryitemid)
|
||||
);
|
||||
@@ -0,0 +1,35 @@
|
||||
CREATE TABLE skills
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
skillid INT NOT NULL DEFAULT '0',
|
||||
characterid INT NOT NULL DEFAULT '0',
|
||||
skilllevel INT NOT NULL DEFAULT '0',
|
||||
masterlevel INT NOT NULL DEFAULT '0',
|
||||
expiration BIGINT NOT NULL DEFAULT '-1',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE INDEX skillpair (skillid, characterid),
|
||||
FOREIGN KEY (characterid) REFERENCES characters (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE cooldowns
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
charid INT NOT NULL,
|
||||
SkillID INT NOT NULL,
|
||||
length BIGINT UNSIGNED NOT NULL,
|
||||
StartTime BIGINT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE skillmacros
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL DEFAULT '0',
|
||||
position TINYINT NOT NULL DEFAULT '0',
|
||||
skill1 INT NOT NULL DEFAULT '0',
|
||||
skill2 INT NOT NULL DEFAULT '0',
|
||||
skill3 INT NOT NULL DEFAULT '0',
|
||||
name VARCHAR(13) DEFAULT NULL,
|
||||
shout TINYINT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,20 @@
|
||||
CREATE TABLE pets
|
||||
(
|
||||
petid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
name VARCHAR(13) DEFAULT NULL,
|
||||
level INT UNSIGNED NOT NULL,
|
||||
closeness INT UNSIGNED NOT NULL,
|
||||
fullness INT UNSIGNED NOT NULL,
|
||||
summoned TINYINT NOT NULL DEFAULT '0',
|
||||
flag INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (petid)
|
||||
);
|
||||
|
||||
CREATE TABLE petignores
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
petid INT UNSIGNED NOT NULL,
|
||||
itemid INT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT fk_petignorepetid FOREIGN KEY (petid) REFERENCES pets (petid) ON DELETE CASCADE # thanks Optimist for noticing queries over petid taking too long, shavit for pointing out an improvement using foreign key
|
||||
);
|
||||
@@ -0,0 +1,68 @@
|
||||
CREATE TABLE questactions
|
||||
(
|
||||
questactionid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
questid INT NOT NULL DEFAULT '0',
|
||||
status INT NOT NULL DEFAULT '0',
|
||||
data BLOB NOT NULL,
|
||||
PRIMARY KEY (questactionid)
|
||||
);
|
||||
|
||||
CREATE TABLE questprogress
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
queststatusid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
progressid INT NOT NULL DEFAULT '0',
|
||||
progress VARCHAR(15) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE questrequirements
|
||||
(
|
||||
questrequirementid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
questid INT NOT NULL DEFAULT '0',
|
||||
status INT NOT NULL DEFAULT '0',
|
||||
data BLOB NOT NULL,
|
||||
PRIMARY KEY (questrequirementid)
|
||||
);
|
||||
|
||||
CREATE TABLE queststatus
|
||||
(
|
||||
queststatusid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL DEFAULT '0',
|
||||
quest INT NOT NULL DEFAULT '0',
|
||||
status INT NOT NULL DEFAULT '0',
|
||||
time INT NOT NULL DEFAULT '0',
|
||||
expires BIGINT NOT NULL DEFAULT '0',
|
||||
forfeited INT NOT NULL DEFAULT '0',
|
||||
completed INT NOT NULL DEFAULT '0',
|
||||
info TINYINT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (queststatusid)
|
||||
);
|
||||
|
||||
CREATE TABLE area_info
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
charid INT NOT NULL,
|
||||
area INT NOT NULL,
|
||||
info VARCHAR(200) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE eventstats
|
||||
(
|
||||
characterid INT UNSIGNED NOT NULL,
|
||||
name VARCHAR(11) NOT NULL DEFAULT '0' COMMENT '0',
|
||||
info INT NOT NULL,
|
||||
PRIMARY KEY (characterid)
|
||||
);
|
||||
|
||||
CREATE TABLE medalmaps
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
queststatusid INT UNSIGNED NOT NULL,
|
||||
mapid INT NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY queststatusid (queststatusid)
|
||||
);
|
||||
@@ -0,0 +1,69 @@
|
||||
CREATE TABLE guilds
|
||||
(
|
||||
guildid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
leader INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
GP INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
logo INT UNSIGNED DEFAULT NULL,
|
||||
logoColor SMALLINT UNSIGNED NOT NULL DEFAULT '0',
|
||||
name VARCHAR(45) NOT NULL,
|
||||
rank1title VARCHAR(45) NOT NULL DEFAULT 'Master',
|
||||
rank2title VARCHAR(45) NOT NULL DEFAULT 'Jr. Master',
|
||||
rank3title VARCHAR(45) NOT NULL DEFAULT 'Member',
|
||||
rank4title VARCHAR(45) NOT NULL DEFAULT 'Member',
|
||||
rank5title VARCHAR(45) NOT NULL DEFAULT 'Member',
|
||||
capacity INT UNSIGNED NOT NULL DEFAULT '10',
|
||||
logoBG INT UNSIGNED DEFAULT NULL,
|
||||
logoBGColor SMALLINT UNSIGNED NOT NULL DEFAULT '0',
|
||||
notice VARCHAR(101) DEFAULT NULL,
|
||||
signature INT NOT NULL DEFAULT '0',
|
||||
allianceId INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (guildid),
|
||||
INDEX (guildid, name)
|
||||
);
|
||||
|
||||
CREATE TABLE bbs_replies
|
||||
(
|
||||
replyid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
threadid INT UNSIGNED NOT NULL,
|
||||
postercid INT UNSIGNED NOT NULL,
|
||||
timestamp BIGINT UNSIGNED NOT NULL,
|
||||
content VARCHAR(26) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (replyid)
|
||||
);
|
||||
|
||||
CREATE TABLE bbs_threads
|
||||
(
|
||||
threadid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
postercid INT UNSIGNED NOT NULL,
|
||||
name VARCHAR(26) NOT NULL DEFAULT '',
|
||||
timestamp BIGINT UNSIGNED NOT NULL,
|
||||
icon SMALLINT UNSIGNED NOT NULL,
|
||||
replycount SMALLINT UNSIGNED NOT NULL DEFAULT '0',
|
||||
startpost TEXT NOT NULL,
|
||||
guildid INT UNSIGNED NOT NULL,
|
||||
localthreadid INT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (threadid)
|
||||
);
|
||||
|
||||
CREATE TABLE alliance
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
name VARCHAR(13) NOT NULL,
|
||||
capacity INT UNSIGNED NOT NULL DEFAULT '2',
|
||||
notice VARCHAR(20) NOT NULL DEFAULT '',
|
||||
rank1 VARCHAR(11) NOT NULL DEFAULT 'Master',
|
||||
rank2 VARCHAR(11) NOT NULL DEFAULT 'Jr. Master',
|
||||
rank3 VARCHAR(11) NOT NULL DEFAULT 'Member',
|
||||
rank4 VARCHAR(11) NOT NULL DEFAULT 'Member',
|
||||
rank5 VARCHAR(11) NOT NULL DEFAULT 'Member',
|
||||
PRIMARY KEY (id),
|
||||
INDEX (name)
|
||||
);
|
||||
|
||||
CREATE TABLE allianceguilds
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
allianceid INT NOT NULL DEFAULT '-1',
|
||||
guildid INT NOT NULL DEFAULT '-1',
|
||||
PRIMARY KEY (id)
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE keymap
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL DEFAULT '0',
|
||||
`key` INT NOT NULL DEFAULT '0',
|
||||
type INT NOT NULL DEFAULT '0',
|
||||
action INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE quickslotkeymapped
|
||||
(
|
||||
accountid INT NOT NULL,
|
||||
keymap BIGINT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (accountid),
|
||||
FOREIGN KEY (accountid) REFERENCES accounts (id) ON DELETE CASCADE
|
||||
);
|
||||
@@ -0,0 +1,38 @@
|
||||
CREATE TABLE drop_data
|
||||
(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
dropperid INT NOT NULL,
|
||||
itemid INT NOT NULL DEFAULT '0',
|
||||
minimum_quantity INT NOT NULL DEFAULT '1',
|
||||
maximum_quantity INT NOT NULL DEFAULT '1',
|
||||
questid INT NOT NULL DEFAULT '0',
|
||||
chance INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id),
|
||||
KEY mobid (dropperid),
|
||||
INDEX (dropperid, itemid)
|
||||
);
|
||||
|
||||
CREATE TABLE drop_data_global
|
||||
(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
continent TINYINT NOT NULL DEFAULT '-1',
|
||||
itemid INT NOT NULL DEFAULT '0',
|
||||
minimum_quantity INT NOT NULL DEFAULT '1',
|
||||
maximum_quantity INT NOT NULL DEFAULT '1',
|
||||
questid INT NOT NULL DEFAULT '0',
|
||||
chance INT NOT NULL DEFAULT '0',
|
||||
comments VARCHAR(45) DEFAULT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY mobid (continent) USING BTREE
|
||||
);
|
||||
|
||||
CREATE TABLE reactordrops
|
||||
(
|
||||
reactordropid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
reactorid INT NOT NULL,
|
||||
itemid INT NOT NULL,
|
||||
chance INT NOT NULL,
|
||||
questid INT NOT NULL DEFAULT '-1',
|
||||
PRIMARY KEY (reactordropid),
|
||||
KEY reactorid (reactorid)
|
||||
);
|
||||
@@ -0,0 +1,19 @@
|
||||
CREATE TABLE storages
|
||||
(
|
||||
storageid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
accountid INT NOT NULL DEFAULT '0',
|
||||
world INT NOT NULL,
|
||||
slots INT NOT NULL DEFAULT '0',
|
||||
meso INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (storageid)
|
||||
);
|
||||
|
||||
CREATE TABLE fredstorage
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
cid INT UNSIGNED NOT NULL,
|
||||
daynotes INT UNSIGNED NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY cid_2 (cid),
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE shops
|
||||
(
|
||||
shopid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
npcid INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (shopid)
|
||||
);
|
||||
|
||||
CREATE TABLE shopitems
|
||||
(
|
||||
shopitemid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
shopid INT UNSIGNED NOT NULL,
|
||||
itemid INT NOT NULL,
|
||||
price INT NOT NULL,
|
||||
pitch INT NOT NULL DEFAULT '0',
|
||||
position INT NOT NULL COMMENT 'sort is an arbitrary field designed to give leeway when modifying shops. The lowest number is 104 and it increments by 4 for each item to allow decent space for swapping/inserting/removing items.',
|
||||
PRIMARY KEY (shopitemid)
|
||||
)
|
||||
@@ -0,0 +1,63 @@
|
||||
CREATE TABLE playerdiseases
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
charid INT NOT NULL,
|
||||
disease INT NOT NULL,
|
||||
mobskillid INT NOT NULL,
|
||||
mobskilllv INT NOT NULL,
|
||||
length INT NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE buddies
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
buddyid INT NOT NULL,
|
||||
pending TINYINT NOT NULL DEFAULT '0',
|
||||
`group` VARCHAR(17) DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE savedlocations
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
locationtype ENUM ('FREE_MARKET','WORLDTOUR','FLORINA','INTRO','SUNDAY_MARKET','MIRROR','EVENT','BOSSPQ','HAPPYVILLE','DEVELOPER','MONSTER_CARNIVAL') NOT NULL,
|
||||
map INT NOT NULL,
|
||||
portal INT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE famelog
|
||||
(
|
||||
famelogid INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL DEFAULT '0',
|
||||
characterid_to INT NOT NULL DEFAULT '0',
|
||||
`when` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (famelogid),
|
||||
KEY characterid (characterid),
|
||||
FOREIGN KEY (characterid) REFERENCES characters (id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE trocklocations
|
||||
(
|
||||
trockid INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
mapid INT NOT NULL,
|
||||
vip INT NOT NULL,
|
||||
PRIMARY KEY (trockid)
|
||||
);
|
||||
|
||||
CREATE TABLE characterexplogs
|
||||
(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
world_exp_rate INT,
|
||||
exp_coupon INT,
|
||||
gained_exp BIGINT,
|
||||
current_exp INT,
|
||||
exp_gain_time DATETIME,
|
||||
charid INT NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
FOREIGN KEY (charid) REFERENCES characters (id) ON DELETE CASCADE
|
||||
)
|
||||
@@ -0,0 +1,46 @@
|
||||
CREATE TABLE wishlists
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
charid INT NOT NULL,
|
||||
sn INT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE specialcashitems
|
||||
(
|
||||
id INT NOT NULL,
|
||||
sn INT NOT NULL,
|
||||
modifier INT NOT NULL COMMENT '1024 is add/remove',
|
||||
info INT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE nxcode
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
code VARCHAR(17) NOT NULL UNIQUE,
|
||||
retriever VARCHAR(13) DEFAULT NULL,
|
||||
expiration BIGINT UNSIGNED NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE nxcode_items
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
codeid INT NOT NULL,
|
||||
type INT NOT NULL DEFAULT '5',
|
||||
item INT NOT NULL DEFAULT '4000000',
|
||||
quantity INT NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE nxcoupons
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
couponid INT NOT NULL DEFAULT '0',
|
||||
rate INT NOT NULL DEFAULT '0',
|
||||
activeday INT NOT NULL DEFAULT '0',
|
||||
starthour INT NOT NULL DEFAULT '0',
|
||||
endhour INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
)
|
||||
@@ -0,0 +1,38 @@
|
||||
CREATE TABLE gifts
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`to` INT NOT NULL,
|
||||
`from` VARCHAR(13) NOT NULL,
|
||||
message TINYTEXT NOT NULL,
|
||||
sn INT UNSIGNED NOT NULL,
|
||||
ringid INT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE notes
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
`to` VARCHAR(13) NOT NULL DEFAULT '',
|
||||
`from` VARCHAR(13) NOT NULL DEFAULT '',
|
||||
message TEXT NOT NULL,
|
||||
timestamp BIGINT UNSIGNED NOT NULL,
|
||||
fame INT NOT NULL DEFAULT '0',
|
||||
deleted INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE newyear
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
senderid INT NOT NULL DEFAULT '-1',
|
||||
sendername VARCHAR(13) DEFAULT '',
|
||||
receiverid INT NOT NULL DEFAULT '-1',
|
||||
receivername VARCHAR(13) DEFAULT '',
|
||||
message VARCHAR(120) DEFAULT '',
|
||||
senderdiscard TINYINT NOT NULL DEFAULT '0',
|
||||
receiverdiscard TINYINT NOT NULL DEFAULT '0',
|
||||
received TINYINT NOT NULL DEFAULT '0',
|
||||
timesent BIGINT UNSIGNED NOT NULL,
|
||||
timereceived BIGINT UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE marriages
|
||||
(
|
||||
marriageid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
husbandid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
wifeid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (marriageid)
|
||||
);
|
||||
|
||||
CREATE TABLE rings
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
partnerRingId INT NOT NULL DEFAULT '0',
|
||||
partnerChrId INT NOT NULL DEFAULT '0',
|
||||
itemid INT NOT NULL DEFAULT '0',
|
||||
partnername VARCHAR(255) NOT NULL,
|
||||
PRIMARY KEY (id) USING BTREE
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE monsterbook
|
||||
(
|
||||
charid INT NOT NULL,
|
||||
cardid INT NOT NULL,
|
||||
level INT NOT NULL DEFAULT '1',
|
||||
PRIMARY KEY (charid, cardid),
|
||||
FOREIGN KEY (charid) REFERENCES characters (id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE monstercarddata
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
cardid INT NOT NULL DEFAULT '0',
|
||||
mobid INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id) USING BTREE,
|
||||
UNIQUE KEY id (id)
|
||||
);
|
||||
@@ -0,0 +1,25 @@
|
||||
CREATE TABLE family_character
|
||||
(
|
||||
cid INT NOT NULL,
|
||||
familyid INT NOT NULL,
|
||||
seniorid INT NOT NULL,
|
||||
reputation INT NOT NULL DEFAULT '0',
|
||||
todaysrep INT NOT NULL DEFAULT '0',
|
||||
totalreputation INT NOT NULL DEFAULT '0',
|
||||
reptosenior INT NOT NULL DEFAULT '0',
|
||||
precepts VARCHAR(200) DEFAULT NULL,
|
||||
lastresettime BIGINT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (cid),
|
||||
INDEX (cid, familyid),
|
||||
FOREIGN KEY (cid) REFERENCES characters (`id`) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE family_entitlement
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
charid INT NOT NULL,
|
||||
entitlementid INT NOT NULL,
|
||||
timestamp BIGINT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id),
|
||||
INDEX (charid)
|
||||
);
|
||||
@@ -0,0 +1,23 @@
|
||||
CREATE TABLE namechanges
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
old VARCHAR(13) NOT NULL,
|
||||
new VARCHAR(13) NOT NULL,
|
||||
requestTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
completionTime TIMESTAMP NULL,
|
||||
PRIMARY KEY (id),
|
||||
INDEX (characterid)
|
||||
);
|
||||
|
||||
CREATE TABLE worldtransfers
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
`from` TINYINT NOT NULL,
|
||||
`to` TINYINT NOT NULL,
|
||||
requestTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
completionTime TIMESTAMP NULL,
|
||||
PRIMARY KEY (id),
|
||||
INDEX (characterid)
|
||||
);
|
||||
@@ -0,0 +1,52 @@
|
||||
CREATE TABLE mts_cart
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
cid INT NOT NULL,
|
||||
itemid INT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE mts_items
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
tab INT NOT NULL DEFAULT '0',
|
||||
type INT NOT NULL DEFAULT '0',
|
||||
itemid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
quantity INT NOT NULL DEFAULT '1',
|
||||
seller INT NOT NULL DEFAULT '0',
|
||||
price INT NOT NULL DEFAULT '0',
|
||||
bid_incre INT DEFAULT '0',
|
||||
buy_now INT DEFAULT '0',
|
||||
position INT DEFAULT '0',
|
||||
upgradeslots INT DEFAULT '0',
|
||||
level INT DEFAULT '0',
|
||||
itemlevel INT NOT NULL DEFAULT '1',
|
||||
itemexp INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
ringid INT NOT NULL DEFAULT '-1',
|
||||
str INT DEFAULT '0',
|
||||
dex INT DEFAULT '0',
|
||||
`int` INT DEFAULT '0',
|
||||
luk INT DEFAULT '0',
|
||||
hp INT DEFAULT '0',
|
||||
mp INT DEFAULT '0',
|
||||
watk INT DEFAULT '0',
|
||||
matk INT DEFAULT '0',
|
||||
wdef INT DEFAULT '0',
|
||||
mdef INT DEFAULT '0',
|
||||
acc INT DEFAULT '0',
|
||||
avoid INT DEFAULT '0',
|
||||
hands INT DEFAULT '0',
|
||||
speed INT DEFAULT '0',
|
||||
jump INT DEFAULT '0',
|
||||
locked INT DEFAULT '0',
|
||||
isequip INT DEFAULT '0',
|
||||
owner VARCHAR(16) DEFAULT '',
|
||||
sellername VARCHAR(16) NOT NULL,
|
||||
sell_ends VARCHAR(16) NOT NULL,
|
||||
transfer INT DEFAULT '0',
|
||||
vicious INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
flag INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
expiration BIGINT NOT NULL DEFAULT '-1',
|
||||
giftFrom VARCHAR(26) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,39 @@
|
||||
CREATE TABLE makercreatedata
|
||||
(
|
||||
id TINYINT UNSIGNED NOT NULL,
|
||||
itemid INT NOT NULL,
|
||||
req_level TINYINT UNSIGNED NOT NULL,
|
||||
req_maker_level TINYINT UNSIGNED NOT NULL,
|
||||
req_meso INT NOT NULL,
|
||||
req_item INT NOT NULL,
|
||||
req_equip INT NOT NULL,
|
||||
catalyst INT NOT NULL,
|
||||
quantity SMALLINT NOT NULL,
|
||||
tuc TINYINT NOT NULL,
|
||||
PRIMARY KEY (id, itemid)
|
||||
);
|
||||
|
||||
CREATE TABLE makerrecipedata
|
||||
(
|
||||
itemid INT NOT NULL,
|
||||
req_item INT NOT NULL,
|
||||
count SMALLINT NOT NULL,
|
||||
PRIMARY KEY (itemid, req_item)
|
||||
);
|
||||
|
||||
CREATE TABLE makerrewarddata
|
||||
(
|
||||
itemid INT NOT NULL,
|
||||
rewardid INT NOT NULL,
|
||||
quantity SMALLINT NOT NULL,
|
||||
prob TINYINT UNSIGNED NOT NULL DEFAULT '100',
|
||||
PRIMARY KEY (itemid, rewardid)
|
||||
);
|
||||
|
||||
CREATE TABLE makerreagentdata
|
||||
(
|
||||
itemid INT NOT NULL,
|
||||
stat VARCHAR(20) NOT NULL,
|
||||
value SMALLINT NOT NULL,
|
||||
PRIMARY KEY (itemid)
|
||||
);
|
||||
@@ -0,0 +1,63 @@
|
||||
CREATE TABLE playernpcs
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
name VARCHAR(13) NOT NULL,
|
||||
hair INT NOT NULL,
|
||||
face INT NOT NULL,
|
||||
skin INT NOT NULL,
|
||||
gender INT NOT NULL DEFAULT '0',
|
||||
x INT NOT NULL,
|
||||
cy INT NOT NULL DEFAULT '0',
|
||||
world INT NOT NULL DEFAULT '0',
|
||||
map INT NOT NULL DEFAULT '0',
|
||||
dir INT NOT NULL DEFAULT '0',
|
||||
scriptid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
fh INT NOT NULL DEFAULT '0',
|
||||
rx0 INT NOT NULL DEFAULT '0',
|
||||
rx1 INT NOT NULL DEFAULT '0',
|
||||
worldrank INT NOT NULL DEFAULT '0',
|
||||
overallrank INT NOT NULL DEFAULT '0',
|
||||
worldjobrank INT NOT NULL DEFAULT '0',
|
||||
job INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id) USING BTREE
|
||||
);
|
||||
|
||||
CREATE TABLE playernpcs_equip
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
npcid INT NOT NULL DEFAULT '0',
|
||||
equipid INT NOT NULL,
|
||||
type INT NOT NULL DEFAULT '0',
|
||||
equippos INT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE playernpcs_field
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
world INT NOT NULL,
|
||||
map INT NOT NULL,
|
||||
step TINYINT NOT NULL DEFAULT '0',
|
||||
podium SMALLINT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE plife
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
world INT NOT NULL DEFAULT '-1',
|
||||
map INT NOT NULL DEFAULT '0',
|
||||
life INT NOT NULL DEFAULT '0',
|
||||
type VARCHAR(1) NOT NULL DEFAULT 'n',
|
||||
cy INT NOT NULL DEFAULT '0',
|
||||
f INT NOT NULL DEFAULT '0',
|
||||
fh INT NOT NULL DEFAULT '0',
|
||||
rx0 INT NOT NULL DEFAULT '0',
|
||||
rx1 INT NOT NULL DEFAULT '0',
|
||||
x INT NOT NULL DEFAULT '0',
|
||||
y INT NOT NULL DEFAULT '0',
|
||||
hide INT NOT NULL DEFAULT '0',
|
||||
mobtime INT NOT NULL DEFAULT '0',
|
||||
team INT NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,52 @@
|
||||
CREATE TABLE hwidaccounts
|
||||
(
|
||||
accountid INT NOT NULL DEFAULT '0',
|
||||
hwid VARCHAR(40) NOT NULL DEFAULT '',
|
||||
relevance TINYINT NOT NULL DEFAULT '0',
|
||||
expiresat TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (accountid, hwid)
|
||||
);
|
||||
|
||||
CREATE TABLE hwidbans
|
||||
(
|
||||
hwidbanid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
hwid VARCHAR(30) NOT NULL,
|
||||
PRIMARY KEY (hwidbanid),
|
||||
UNIQUE KEY hwid_2 (hwid)
|
||||
);
|
||||
|
||||
CREATE TABLE ipbans
|
||||
(
|
||||
ipbanid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
ip VARCHAR(40) NOT NULL DEFAULT '',
|
||||
aid VARCHAR(40) DEFAULT NULL,
|
||||
PRIMARY KEY (ipbanid)
|
||||
);
|
||||
|
||||
CREATE TABLE macbans
|
||||
(
|
||||
macbanid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
mac VARCHAR(30) NOT NULL,
|
||||
aid VARCHAR(40) DEFAULT NULL,
|
||||
PRIMARY KEY (macbanid),
|
||||
UNIQUE KEY mac_2 (mac)
|
||||
);
|
||||
|
||||
CREATE TABLE macfilters
|
||||
(
|
||||
macfilterid INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
filter VARCHAR(30) NOT NULL,
|
||||
PRIMARY KEY (macfilterid)
|
||||
);
|
||||
|
||||
CREATE TABLE reports
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
reporttime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
reporterid INT NOT NULL,
|
||||
victimid INT NOT NULL,
|
||||
reason TINYINT NOT NULL,
|
||||
chatlog TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
CREATE TABLE bosslog_daily
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
bosstype ENUM ('ZAKUM','HORNTAIL','PINKBEAN','SCARGA','PAPULATUS') NOT NULL,
|
||||
attempttime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE bosslog_weekly
|
||||
(
|
||||
id INT NOT NULL AUTO_INCREMENT,
|
||||
characterid INT NOT NULL,
|
||||
bosstype ENUM ('ZAKUM','HORNTAIL','PINKBEAN','SCARGA','PAPULATUS') NOT NULL,
|
||||
attempttime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
@@ -0,0 +1,23 @@
|
||||
CREATE TABLE dueypackages
|
||||
(
|
||||
PackageId INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
ReceiverId INT UNSIGNED NOT NULL,
|
||||
SenderName VARCHAR(13) NOT NULL,
|
||||
Mesos INT UNSIGNED DEFAULT '0',
|
||||
TimeStamp TIMESTAMP NOT NULL DEFAULT '2015-01-01 05:00:00',
|
||||
Message VARCHAR(200) NULL,
|
||||
Checked TINYINT UNSIGNED DEFAULT '1',
|
||||
Type TINYINT UNSIGNED DEFAULT '0',
|
||||
PRIMARY KEY (PackageId)
|
||||
);
|
||||
|
||||
CREATE TABLE dueyitems
|
||||
(
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
PackageId INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
inventoryitemid INT UNSIGNED NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (id),
|
||||
KEY INVENTORYITEMID (inventoryitemid),
|
||||
KEY PackageId (PackageId),
|
||||
FOREIGN KEY (PackageId) REFERENCES dueypackages (PackageId) ON DELETE CASCADE
|
||||
);
|
||||
Reference in New Issue
Block a user