Compare commits

...

104 Commits

Author SHA1 Message Date
Aleos
e0cb658b7f Merge branch 'master' into feature/store_taxes 2022-09-17 00:13:46 -04:00
Aleos
f8cd4aa8c7 Implements petautobonus script commands (#7053)
* Fixes #7038.
* Implements script commands: petautobonus, petautobonus2, and petautobonus3.
* This allows pets to utilize the same autobonus features that players can use without having to check for the equipped item position.
Thanks to @EditorFc's suggestion and @Lemongrass3110!
2022-09-16 12:46:53 -04:00
Jittapan Pluemsumran
ee5ba2d889 Fixed potential crash via skill GN_FIRE_EXPANSION. (#7267) 2022-09-16 00:40:26 +07:00
idk-whoami
17cb93909e Just fixed a typo (#7263) 2022-09-13 13:11:04 +02:00
Aleos
05923b3ded Adds a battle config for Guild Skill saving (#7262)
* Fixes #7256.
* Adds battle config guild_skill_relog_type to allow the ability to save Guild Skill cooldowns on relog or reset them.
* Adjusts the check to account for any new Guild Skills.
Thanks to @Xypr0 and @Lemongrass3110!
2022-09-12 16:57:46 -04:00
Lemongrass3110
38b8d5a994 Initial release of item package selection (#7239)
Thanks to @aleos89 and @Atemo

Co-authored-by: Atemo <capucrath@gmail.com>
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-09-12 22:06:04 +02:00
Kanin Temsrisuk
421e49e1c4 Check for invalid Reject Sword cases (#7174)
* If the target is dead, break out of the remaining checks and calculations.
Thanks to @Lemongrass3110!
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-09-12 12:36:49 -04:00
Atemo
f490aeb6fa Updated mapcache (#7260) 2022-09-12 16:29:47 +02:00
idk-whoami
58a7f36c92 Corrected script for some item #10 (#7177)
* Corrected script for some item #10
* add some items JRO costume

Thanks to @Atemo
2022-09-12 14:29:08 +02:00
Akkarinage
4a4cc26252 Modified the Bug Report Issue Template (#7242)
Maybe if it's easier to read, it may get filled out properly? Maybe. I live in hope.

The final output from the template is unchanged except for slight formatting - but the hidden text that gives instructions to the users is now laid out in a way that should cause them to flow from one question to the next. Hopefully.
2022-09-12 10:58:54 +01:00
Akkarinage
df46dd9455 Updated Gunslinger Job Change Quest Reward Items (#7223)
* Checked against reliable source to confirm items.

Added a check instead of a separate file as only the items have changed between Pre-RE and RE.
2022-09-12 10:49:04 +01:00
Lemongrass3110
96e3981c68 Fixed some issue with clif_loadConfirm (#5204)
Fixes #5203
Fixes #5278
Fixes #5376

Thanks to @aleos89 for his help and everyone else involved in reporting, commenting and testing.
2022-09-11 20:49:31 +02:00
Aleos
a38b65da49 Fixes Lif - Brain Surgery SP bonus (#7257)
* Fixes #7221.
* Corrects the SP bonus of Lif's Brain Surgery to be skill_lv%.
Thanks to @Daraen1!
2022-09-09 12:11:19 -04:00
Atemo
a53d8604c9 Updated the english name of some items (#7254) 2022-09-07 18:54:41 +02:00
Atemo
75ab6738e0 Added missing status flag for Active_Monster_Transform and Monster_Transform (#7253)
Fixed #7247

Thanks to @jmsngls !
2022-09-07 18:52:30 +02:00
Aleos
4a43856271 Adjusts Enchanting Shadow behavior (#7124)
* Fixes #7104.
* Implements Shadow Scar as a timer on units.
* Implements the official packet for Shadow Scar counter.
* Enchanting Shadow can now be triggered by skills as well as melee.
* Removes the hit count limit.
* Adjusts the damage rate of Shadow Wounds to increase by 3%.
* Adjusts the duration of Shadow Scar from 30 seconds to 15.
Thanks to @eppc0330 and @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-09-06 17:05:19 -04:00
Aleos
534bc706d0 Fixes Offertorium and Magnificat stacking (#7249)
* Fixes #7241.
* Offertorium and Magnificat are able to cancel each other out.
Thanks to @LadyNanuia!
2022-09-06 09:45:01 -04:00
Singe Horizontal
957efd823f Several status fixes (#7216)
* Fixes #7215.
* Fixes endows not being removed on death and staying while switching weapon.
* Fixes some statuses that must disappear when logging off: Strip skills, Asura SP Regen Malus, Critical Explosion, NPC Change Undead.
* Monsters in StoneWait are correctly prevented from attacking.
2022-09-06 08:52:27 -04:00
Lemongrass3110
8629c6445a Initial release of item enchant UI (#7186)
Thanks to @aleos89, @Atemo @idk-whoami
2022-09-05 00:52:37 +02:00
Lemongrass3110
3c43669425 Added some missing ifdefs for old clients (#7237)
Fixes #7236

Thanks to @Akkarinage
2022-09-03 22:52:21 +02:00
Lemongrass3110
c29fef7323 Fixed billing slots (#7219)
The login-server ignored the value stored in the `character_slots` column of the `login` table.
Also some additional logic fixes and safeguards.

Thanks to @Pokye
2022-09-03 19:41:19 +02:00
Lemongrass3110
df57b5b7d4 Added mob name support to some script commands (#7228)
Thanks to @Atemo for the idea.
2022-09-03 19:07:28 +02:00
Aleos
02a4831728 Fixes a compile error for older clients (#7235) 2022-09-03 12:42:37 -04:00
Aleos
0f3d5f8dbd Fixes pre-re item table loading (#7232)
* Follow up to 17751aa and 33fb756.
* Reverts 33fb756.
* Moves Gradable index check to renewal mode.
2022-09-03 10:33:31 -04:00
Atemo
6542df071f Added several missing items (#7213)
* Added several missing items according to KRO item description up to august 2022
* Updated the gradable part of the new items
* Added missing grade on Thanos helmets
2022-09-03 12:32:13 +02:00
Aleos
6b7d6e6841 Fixes an issue with whisper unblocks (#7231)
* When attempting to unblock players via /in, players with short names would sometimes not get unblocked.
Thanks to @Tokeiburu!
2022-09-02 11:02:43 -04:00
Jittapan Pluemsumran
33fb75684a Fixed a crash caused by wrong attribute ordering. Fixes #7229 (#7230) 2022-09-02 20:30:23 +07:00
Lemongrass3110
6cb5b5bac6 Implemented the /call command (#7225)
Fixes #7139.
Thanks to @idk-whoami
2022-09-01 16:01:13 -04:00
Atemo
9be64f55dc laphine_synthesis script command update (#7222)
* Added the item ID/name as parameter for laphine_synthesis script command

Thanks to @Lemongrass3110 !
2022-08-31 21:39:34 +02:00
Atemo
177d57ee68 getmonsterinfo update (#7227)
* Added the constant MOB_ID to getmonsterinfo script command
* Added the possibility to use the monster name as argument

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-08-31 21:35:01 +02:00
Aleos
a2ce09fd56 Resolves spawn direction not saving at relog (#7210)
* Fixes #7195.
* Adds a new save field for battle config spawn_direction which was not working for players who log out and in.
Thanks to @SapitoSucio and @Lemongrass3110!
2022-08-30 12:50:50 -04:00
Lemongrass3110
329158ac93 Better error message for YAML syntax errors (#7217)
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-08-30 11:15:26 +02:00
Atemo
7c3bb6124a Added missing increase of the versioning (#7220)
Follow up 17751aa4d7
2022-08-29 16:28:54 +02:00
Atemo
17751aa4d7 Added 'Gradable' in item DB (#7218)
* Added 'Gradable' in item DB
** The field defines if the item can be graded (renewal). (Default: false)

Thanks to @attackjom, @Lemongrass3110 !
2022-08-29 13:28:09 +02:00
Lemongrass3110
5f4fd5c98b Fixed some more SC_STONEWAIT issues (#7212)
Fixed PR_STRECOVERY not clearing SC_STONEWAIT
Fixed that ending SC_STONEWAIT manually still triggered SC_STONE

Thanks to @Singe-Horizontal and @aleos89
2022-08-28 17:02:37 +02:00
Vincent Stumpf
c751ca6b74 Client Navigation Generator (#6023)
Creates navigation files for the client.
2022-08-26 21:31:45 -07:00
Lemongrass3110
b1b371f4b8 Cleaned up status_change_end (#7211)
* Removed leftover old debug info that made it necessary to the hide the real function behind a define.
* Introduced a C++ default argument for timer id, as the timer id is only needed a single time, when the status expires naturally.
* Replaced all currently existing calls that had INVALID_TIMER as argument and made use of the new default argument.
2022-08-26 22:23:40 -04:00
Singe Horizontal
a03644fc53 Fix Aspersio not removing scroll enchant (#7203)
Fixes #7202
2022-08-24 23:09:19 +02:00
Null il3ol2ed
44d3edf99d Updated runserver.bat (#7206) 2022-08-24 22:43:04 +02:00
Lemongrass3110
a0eb9d5ee2 Initial release of item reform UI (#7185)
Thanks to @idk-whoami, @Benq28021997, @datawulf, @Atemo and @aleos89

Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-08-24 22:24:13 +02:00
Lemongrass3110
b68e59f743 Updates github CI version for Ubuntu (#7204)
Changed clang minimum version to version 6
Removed unsupported clang versions from version matrix
2022-08-23 08:53:39 +02:00
Atemo
a2747b2023 Script command for enchantgrade (#7180)
* Added several commands to manage the enchantment grade of equipment
* Added grade atcommand
** Works like refine atcommand for grade system

Thanks to @Lemongrass3110 !
2022-08-22 22:41:40 +02:00
Balfear
798e09e8c9 Update enchan_rockridge.txt (#7193)
Armor dealer should sell Granpa_Beard not Granpa_Beard_F.
Added custom restock every week.
2022-08-20 17:03:38 +02:00
Lemongrass3110
ae74eb8404 Initial release of reputation UI (#7184)
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-08-18 17:50:40 +02:00
Aleos
e90fa9e8f7 Allow PK damage modifiers to affect flat damage (#7126) 2022-08-17 19:19:40 -04:00
Lemongrass3110
a88e25a8e3 Fixed returned mails from deleted chars (#7181)
Fixes #7161

Thanks to @Pokye
2022-08-18 00:44:23 +02:00
Lemongrass3110
df9ef6fa79 Fixed memory consumption of caches (#7064)
Thanks to @aleos89
2022-08-18 00:06:47 +02:00
Singe Horizontal
846dfd9bb4 Fixes after song visual effect bug (#7190)
* Fixes #7163.
* Resolves an issue where the Moonlight effect would be displayed when ending a dance/song.
2022-08-17 12:17:13 -04:00
Aleos
9759909f82 Add checks to ignore renewal DEF (#7150)
* Fixes #7143.
* Resolves an issue where Dragon Breath, Dragon Breath - Water, Cart Cannon, and Arms Cannon were not properly reducing damage based on the target's defense.
Thanks to @LadyNanuia, @Lemongrass3110, @attackjom!
2022-08-16 15:32:07 -04:00
Lemongrass3110
25f104c50d Added sql upgrade file for web-server 2022-08-16 17:53:56 +02:00
Vincent Stumpf
0ac52d0bb4 Initial support for web service for newer clients (#5731)
Co-authored-by: Jittapan Pluemsumran <secret@rathena.org>
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
2022-08-16 15:10:18 +02:00
Vincent Stumpf
5d105b5736 cleanup a bit of cbasetypes (#7179) 2022-08-15 10:26:10 +02:00
Atemo
33e080545a Added training zone (#7176)
* Removed Dummy mobs in prontera
* Truncated the name of the mobs in the training area, the name being too long only the relevant information is kept

Thanks to @Balferian !
2022-08-14 20:49:12 +02:00
Aleos
77b4b3ccea Fixes a couple mob skill conditions (#7151)
* Fixes #7141.
* Follow up to 36b9b94.
* Fixes an issue with mob skill conditions closedattacked and longrangeattacked not triggering for skills with no aMotion.
Thanks to @datawulf!
2022-08-12 15:13:26 -04:00
Aleos
3418221dba Fixes skill_keep_using timer mismatch (#7127)
* Fixes #7095.
* Resolves an issue where skill_keep_using was not resetting the timer ID after the timer ends.
* Cleans up the check when applying the timer to confirm a timer doesn't already exist.
Thanks to @eppc0330!
2022-08-12 14:55:21 -04:00
Aleos
365439943a Cleans up Dancing cancellation (#7166)
* Follow up to 724257e.
* Fixes an issue where the val4 value was cleared too early resulting in the move state not being cleared properly.
2022-08-11 08:36:26 -04:00
idk-whoami
df3d7d4bd1 Corrected script for some item #9 (#7115)
Thanks to @Atemo
2022-08-10 14:53:51 +02:00
Kanin Temsrisuk
3587ef6923 Adds missing MaxAPrate constant (#7169)
* Adds missing constant to script_constants.hpp.
2022-08-10 08:16:32 -04:00
Lemongrass3110
c06492def6 Implemented map specific drops (#7156)
Thanks to @Atemo and @aleos89.
2022-08-09 19:15:13 +02:00
Atemo
c5031982d2 Allow the player to stand on a cell occupied by disabled/hidden npc (#7154)
Fixed #7153
2022-08-07 21:54:53 +02:00
Aleos
e3c2db65c4 Updates the behavior of Overheat (#7157)
* Overheat is now triggered via damage received, not damage dealt.
* Corrects an issue where the HP damage would not trigger because the Overheat status would end too early.
* Damage will no longer cause a flinch.
* General cleanups.
2022-08-06 21:55:20 -04:00
Aleos
724257ee1a Fixes pre-renewal duet dancing (#7160)
* Fixes #7134.
* Resolves an issue where duet songs resulted in the partner not being able to move when canceling the song early.
Thanks to @hnomkeng!
2022-08-05 10:02:15 -04:00
Keitenai
cda284f123 Cleaned up (#7164)
minor follow up to 7336058
2022-08-05 11:47:55 +02:00
Atemo
c6c534a3eb Correction of the item script of the item "Hourglass Necklace" (#7159)
Fixed #7155

Thanks to @kujourin !
2022-08-02 21:46:24 +02:00
Atemo
498c4fe2b3 Removed duplicate combos (#7158)
Removed the duplicate combos introduced in e3cb3fa01f
2022-08-02 17:46:38 +02:00
Aleos
922d309643 Fixes script command rentalcountitem (#7122)
* Fixes #7121.
* Fixes an issue with normal items getting mixed into the rental count.
Thanks to @Cukinaru and @Lemongrass3110!
2022-08-02 08:51:24 -04:00
Aleos
a0bc2c0c3d Fixes script command equip (#7149)
* Fixes #7144.
* Follow up to 8038e71.
* Fixes an inverted check.
Thanks to @voyfmyuh!
2022-08-01 10:45:40 -04:00
Cydh
cc16f46885 Follow up 98cf6920, suggestion leftover 2022-02-10 08:08:09 +07:00
Cydh Ramdh
98cf69206a Apply suggestions from code review
Co-authored-by: Aleos <aleos89@users.noreply.github.com>
2022-02-10 08:03:36 +07:00
Cydh
a9754cc198 Merge branch 'master' into feature/store_taxes
# Conflicts:
#	src/map/battle.cpp
#	src/map/battle.hpp
#	src/map/clif.hpp
2022-02-05 04:24:55 +07:00
Cydh
5c00d26e42 Fixed yaml2sql compilation error 2021-10-13 21:31:19 +07:00
Cydh
efb25cde9a Follow up e86daf339c
* Wrong nodesExist condition
2021-10-13 13:12:49 +07:00
Cydh
ad8501cd1d Merge branch 'master' into feature/store_taxes
# Conflicts:
#	conf/msg_conf/map_msg.conf
#	src/map/battle.cpp
#	src/map/battle.hpp
#	src/map/vending.cpp
2021-10-13 12:35:01 +07:00
aleos
e86daf339c General cleanups and fixes 2021-04-01 09:46:12 -04:00
Aleos
725ae2e899 Merge branch 'master' into feature/store_taxes 2021-04-01 08:34:07 -04:00
Cydh
2d681f2061 Compilation fixes of csv2yaml 2019-11-21 10:39:15 +07:00
Cydh
812895b98a Merge branch 'master' into feature/store_taxes 2019-11-21 10:29:14 +07:00
Cydh
0c4ae23f0d Fixes LGTM alerts 2019-11-20 21:16:41 +07:00
Cydh
b0fdf80961 Follow up and clean up 2019-11-20 20:23:20 +07:00
Cydh
4d4f0eb1b8 Implemented new YML database for Tax Config
* Credits to @aleos89
2019-11-20 18:20:19 +07:00
Aleos
faafa5661e Merge branch 'master' into feature/store_taxes 2019-04-19 22:26:45 -04:00
Aleos
b1299f54b1 Merge branch 'master' into feature/store_taxes 2019-02-18 15:19:38 -05:00
Aleos
27e1c40818 Merge branch 'master' into feature/store_taxes 2018-08-31 10:54:44 -04:00
Aleos
6ffc505066 Merge branch 'master' into feature/store_taxes 2018-07-26 13:44:40 -04:00
Aleos
eef0561fc1 Merge branch 'master' into feature/store_taxes 2018-06-24 10:36:16 -04:00
Cydh Ramdh
eaa7fdf2d0 Bug fixed & clean up
* A little clean up for 212ce7f
* Removed unused configs: vending_tax and vending_tax_min
* Fixed VAT didn't moved when item cleared from vending list. Thanks to @Badarosk0 @ecdarreola
2018-06-24 06:34:18 +07:00
Lemongrass3110
6eae3bf74b Follow up to e605adb 2018-06-14 22:21:59 +02:00
Lemongrass3110
e605adbd17 Merge branch 'master' into feature/store_taxes
# Conflicts:
#	conf/msg_conf/map_msg.conf
#	src/map/battle.cpp
#	src/map/battle.hpp
#	src/map/vending.cpp
#	src/map/vending.hpp
2018-06-14 22:20:16 +02:00
Aleos
060838b9d8 Merge branch 'master' into feature/store_taxes 2018-05-09 10:39:54 -04:00
aleos89
04606d25d4 Follow up to 3286468
* Should not be pointer type.
2018-04-16 14:07:08 -04:00
aleos89
3286468786 Follow up to 212ce7f
* Corrected the way vectors are cleared.
2018-04-16 14:03:34 -04:00
aleos89
5690891c40 Follow up to 212ce7f
* Added missing includes.
2018-04-16 13:55:48 -04:00
aleos89
e61ea13ad8 Follow up to 212ce7f
* Added missing header defines.
2018-04-16 13:50:23 -04:00
aleos89
fa93bbd90c Follow up to 212ce7f
* Fixed a compile error.
2018-04-16 13:40:15 -04:00
aleos89
212ce7fd25 Added the ability to reload the tax database
* Attempts to refresh VAT for Vendors and Buyingstores.
* Miscellaneous cleanups.
2018-04-16 13:32:39 -04:00
aleos89
024a5de8dc Small cleanups
* Follow up to 0f88530.
* Removed underscores from YAML labels to follow standard.
2018-04-10 13:31:17 -04:00
aleos89
0f88530860 Corrected a message configuration conflict
* Resolved a conflict with the Refine UI messages.
Thanks to @Haikenz!
2018-04-10 13:21:04 -04:00
Aleos
1031189146 Merge branch 'master' into feature/store_taxes 2018-04-10 13:10:22 -04:00
aleos89
12768c49bc Merge branch 'feature/store_taxes' of https://github.com/rathena/rathena into feature/store_taxes 2018-04-02 14:05:28 -04:00
aleos89
a5897a1c3c Cleaned up and added documentation for Taxes 2018-04-02 14:04:58 -04:00
Aleos
68c8f6e30a Merge branch 'master' into feature/store_taxes 2018-04-02 13:53:22 -04:00
Lemongrass3110
de46196963 Merge branch 'master' into feature/store_taxes
# Conflicts:
#	src/map/battle.cpp
#	src/map/battle.hpp
2018-02-02 17:36:23 +01:00
Cydh Ramdh
dc0512a3b8 Follow up 77fec5825e
* Fixed missing reference for `sort` & `find_if`
2018-01-01 16:45:40 +07:00
Cydh Ramdh
77fec5825e Introducing new Store Taxes
* Replacement of Vending Tax config
* Added tax for Buying Store
* Allow multiple taxes & minimum transactions to support 2015 clients or newer
2018-01-01 07:35:49 +07:00
202 changed files with 56928 additions and 2251 deletions

View File

@@ -1,6 +1,6 @@
---
name: Bug report
about: Create a report to help us improve
about: Create an Issue that details broken or unexpected behaviour
title: ''
labels: type:bug
assignees: ''
@@ -8,31 +8,67 @@ assignees: ''
---
<!-- NOTE: Anything within these brackets will be hidden on the preview of the Issue. -->
<!-- NOTE: Failure to fill out this template correctly may cause a repository maintainer to close your Issue. -->
* **rAthena Hash**:
<!-- Please specify the rAthena [GitHub hash](https://help.github.com/articles/autolinked-references-and-urls/#commit-shas) on which you encountered this issue.
## Required Basic Information
<!-- STEP 1 ~ Specify Github Hash
Please specify the rAthena [GitHub hash](https://help.github.com/articles/autolinked-references-and-urls/#commit-shas) on which you encountered this issue.
How to get your GitHub Hash:
1. cd your/rAthena/directory/
2. git rev-parse --short HEAD
3. Copy the resulting hash.
-->
* **Client Date**:
**rAthena Hash**:
<!-- Please specify the client date you used. -->
* **Server Mode**:
<!-- STEP 2 ~ Specify the client date you are using when this Issue occured. -->
<!-- Which mode does your server use: Pre-Renewal or Renewal? -->
**Client Date**:
* **Description of Issue**:
* Result: <!-- Describe the issue that you experienced in detail. -->
* Expected Result: <!-- Describe what you would expect to happen in detail. -->
* How to Reproduce: <!-- If you have not stated in the description of the result already, please give us a short guide how we can reproduce your issue. -->
* Official Information: <!-- If possible, provide information from official servers (kRO or other sources) which prove that the result is wrong. Please take into account that iRO (especially iRO Wiki) is not always the same as kRO. -->
<!-- * _NOTE: Make sure you quote ``` `@atcommands` ``` just like this so that you do not tag uninvolved GitHub users!_ -->
* **Modifications that may affect results**:
<!-- * Please provide any information that could influence the expected result. -->
<!-- * This can be either configurations you changed, database values you changed, or even external source modifications. -->
<!-- STEP 3 ~ Specify the server-mode you are using when this Issue occured.
Options: Pre-Renewal / Renewal -->
**Server Mode**:
## Required Detailed Information
<!-- STEP 4 ~ Answer the following questions in as much detail as possible.
The more information you provide, the easier it will be to confirm and fix an Issue.
NOTE: Make sure you quote ``` `@atcommands` ``` just like this so that you do not tag uninvolved GitHub users!
NOTE: When pasting code, you can use codeblocks through the editor, or by placing your code between three backticks like this: ``` code here ```
TIP: When answering each question, you can remove the "help-comments" so you can type single-line answers.
TIP: Above this box there is a "preview" tab which will show you what your Issue will look like after you submit it. Please use it.
-->
<!-- Describe the issue that you experienced in detail. -->
**Result**:
<!-- Describe what you would expect to happen in detail. -->
**Expected Result**:
<!-- If you have not stated in the description of the result already, please give us a short guide how we can reproduce your issue. -->
**How to Reproduce**:
<!-- If possible, provide information from official servers (kRO or other sources) which prove that the result is wrong. Please take into account that iRO (especially iRO Wiki) is not always the same as kRO. -->
**Official Information**:
<!-- STEP 5 ~ If you are using any modifications, especially in /src/, you must type them here.
Even the smallest changes can cause things to break. We need to know what you have customized.
This can be either configurations you changed, database values you changed, or even external source modifications. -->
**Modifications that may affect results**:
<!-- STEP 6 ~ Re-read your Issue above before submitting it, ensuring every question has been answered correctly. -->

View File

@@ -22,11 +22,11 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
os: [ubuntu-18.04]
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
# Version list can be found on https://github.com/marketplace/actions/install-clang
clang: ['3.9', '4.0', '5.0', '6.0', '7', '8', '9', '10', '11'] #, '12', '13']
clang: ['6.0', '7', '8', '9', '10', '11'] #, '12', '13']
steps:
- uses: actions/checkout@v2

View File

@@ -22,8 +22,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
steps:

View File

@@ -22,8 +22,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['7', '8', '9', '10']

View File

@@ -22,8 +22,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['10']

View File

@@ -22,8 +22,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['10']

View File

@@ -22,8 +22,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
# Older versions of GCC are not available via unaltered aptitude repo lists.
gcc: ['10']

View File

@@ -25,8 +25,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# The ubuntu-latest label currently points to ubuntu-18.04.
# Available: ubuntu-20.04, ubuntu-18.04
# The ubuntu-latest label currently points to ubuntu-20.04.
# Available: ubuntu-22.04, ubuntu-20.04
os: [ubuntu-latest]
# Only a single version of GCC is required for validating NPC scripts and database changes.
gcc: ['10']

18
.gitignore vendored
View File

@@ -1,6 +1,5 @@
/autom4te.cache/output.0
/autom4te.cache/requests
/autom4te.cache/traces.0
autom4te.cache/
#Global
.vscode
.Apple*
@@ -42,6 +41,7 @@ Thumbs.db
/map-server
/mapcache
/nbproject
/web-server
/yaml2sql
/yamlupgrade
@@ -56,6 +56,10 @@ Thumbs.db
# /3rdparty/yaml-cpp/
/3rdparty/yaml-cpp/Makefile
# /3rdparty/httplib/
/3rdparty/httplib/Makefile
/3rdparty/httplib/obj
# /db/
/db/import
@@ -92,6 +96,10 @@ Thumbs.db
/src/map/obj_sql
/src/map/pcre.hpp
# /src/web
/src/web/Makefile
/src/web/obj
# /src/tool/
/src/tool/Makefile
/src/tool/obj_all
@@ -125,6 +133,7 @@ Thumbs.db
/mapserv.bat
/runserver.bat
/serv.bat
/webserv.bat
/yaml2sql.bat
/yamlupgrade.bat
@@ -135,3 +144,6 @@ Thumbs.db
# CMakeFiles
/CMakeFiles/
# generated files
generated

View File

@@ -47,6 +47,7 @@ macro( CONFIGURE_WITH_LOCAL_OR_SYSTEM name )
endmacro( CONFIGURE_WITH_LOCAL_OR_SYSTEM )
add_subdirectory( httplib )
add_subdirectory( libconfig )
add_subdirectory( mysql )
add_subdirectory( pcre )

1
3rdparty/README.txt vendored
View File

@@ -1,6 +1,7 @@
This folder contains everything related to 3rdparty code or tools.
cmake - scripts for the cmake build system (http://www.cmake.org)
httplib - library for http web service (https://github.com/yhirose/cpp-httplib/commit/a9cf09795170a72372cbeb3feef3851b859c0e33)
libconfig - library for processing structured configuration files (http://www.hyperrealm.com/libconfig/)
mysql - library for MySQL Community Server (http://www.mysql.com)
pcre - library for Perl Compatible Regular Expressions (http://www.pcre.org)

38
3rdparty/httplib/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,38 @@
cmake_minimum_required(VERSION 2.8)
if ( NOT ENABLE_WEB_SERVER )
return()
endif( NOT ENABLE_WEB_SERVER )
SET (this_target httplib)
PROJECT(${this_target})
find_path ( HTTPLIB_INCLUDE_DIRS "httplib.h"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}"
NO_DEFAULT_PATH )
find_path ( HTTPLIB_SOURCE_DIR "httplib.cc"
PATHS "${CMAKE_CURRENT_SOURCE_DIR}"
NO_DEFAULT_PATH )
mark_as_advanced( HTTPLIB_INCLUDE_DIRS )
mark_as_advanced( HTTPLIB_SOURCE_DIR )
set ( HTTPLIB_HEADERS
"${HTTPLIB_INCLUDE_DIRS}/httplib.h"
CACHE INTERNAL "httplib headers" )
set ( HTTPLIB_SOURCES
"${HTTPLIB_SOURCE_DIR}/httplib.cc"
CACHE INTERNAL "httplib sources" )
set ( HTTPLIB_DEFINITIONS
"-std=c++11"
CACHE INTERNAL "http definitions" )
include_directories( ${HTTPLIB_INCLUDE_DIRS} ${HTTPLIB_SOURCE_DIR} )
ADD_LIBRARY( ${this_target} STATIC ${HTTPLIB_SOURCES} )
if (NOT WIN32)
target_compile_definitions(${this_target} PUBLIC "CPPHTTPLIB_SEND_FLAGS=MSG_NOSIGNAL")
endif()

43
3rdparty/httplib/Makefile.in vendored Normal file
View File

@@ -0,0 +1,43 @@
HTTPLIB_OBJ = $(shell find * -type f -name "*.cc" | sed -e "s/\.cc/\.o/g")
HTTPLIB_DIR_OBJ = $(HTTPLIB_OBJ:%=obj/%)
HTTPLIB_H = $(shell find * -type f -name "*.h")
HTTPLIB_AR = obj/httplib.a
CXXFLAG =-std=c++11
HTTPLIB_DEPENDS=httplib
@SET_MAKE@
#####################################################################
.PHONY : all clean help httplib
all: $(HTTPLIB_DEPENDS)
clean:
@echo " CLEAN httplib"
@rm -rf obj *.o
help:
@echo "possible targets are 'all' 'clean' 'help'"
@echo "'httplib' - build $(HTTPLIB_AR)
@echo "'all' - builds $(HTTPLIB_DIR_OBJ)"
@echo "'clean' - deletes $(HTTPLIB_DIR_OBJ)"
@echo "'help' - outputs this message"
#####################################################################
obj:
@echo " MKDIR obj"
@mkdir -p obj
obj/%.o: %.cc $(HTTPLIB_H)
@echo " CXX $<"
@@CXX@ $(CXXFLAG) @CFLAGS_AR@ @CPPFLAGS@ -DCPPHTTPLIB_SEND_FLAGS=MSG_NOSIGNAL -g -c $(OUTPUT_OPTION) $<
httplib: obj $(HTTPLIB_DIR_OBJ) $(HTTPLIB_AR)
$(HTTPLIB_AR): $(HTTPLIB_DIR_OBJ)
@echo " AR $@"
@@AR@ rcs obj/httplib.a $(HTTPLIB_DIR_OBJ)

6482
3rdparty/httplib/httplib.cc vendored Normal file

File diff suppressed because it is too large Load Diff

1904
3rdparty/httplib/httplib.h vendored Normal file

File diff suppressed because it is too large Load Diff

160
3rdparty/httplib/httplib.vcxproj vendored Normal file
View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="httplib.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="httplib.cc" />
</ItemGroup>
<PropertyGroup Label="Globals">
<Keyword>Win32Proj</Keyword>
<RootNamespace>libconfig</RootNamespace>
<ProjectGuid>{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir).vs\build\</OutDir>
<IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="httplib.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="httplib.cc">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -226,6 +226,10 @@ endif()
message( STATUS "Detecting networking library (socket/nsl/ws2_32) - done" )
endif()
#
# enable web server?
#
option( ENABLE_WEB_SERVER "Build web-server (default=ON)" ON )
#
# Test for big endian

View File

@@ -4,11 +4,12 @@ HAVE_MYSQL=@HAVE_MYSQL@
OMAP=@OMAP@
ifeq ($(HAVE_MYSQL),yes)
ALL_DEPENDS=server tools
SERVER_DEPENDS=common login char map import
SERVER_DEPENDS=common login char map web import
COMMON_DEPENDS=libconfig rapidyaml yaml-cpp
LOGIN_DEPENDS=libconfig common
CHAR_DEPENDS=libconfig common rapidyaml
MAP_DEPENDS=libconfig common rapidyaml
WEB_DEPENDS=libconfig common yaml-cpp httplib
else
ALL_DEPENDS=needs_mysql
SERVER_DEPENDS=needs_mysql
@@ -16,6 +17,7 @@ else
LOGIN_DEPENDS=needs_mysql
CHAR_DEPENDS=needs_mysql
MAP_DEPENDS=needs_mysql
WEB_DEPENDS=needs_mysql
endif
@@ -25,6 +27,7 @@ endif
login \
char \
map \
web \
tools \
import \
clean help \
@@ -49,11 +52,15 @@ char: $(CHAR_DEPENDS)
map: $(MAP_DEPENDS)
@$(MAKE) -C src/map server
web: $(WEB_DEPENDS)
@$(MAKE) -C src/web server
libconfig:
@$(MAKE) -C 3rdparty/libconfig
tools:
@$(MAKE) -C src/tool
@$(MAKE) -C src/map tools
rapidyaml:
@$(MAKE) -C 3rdparty/rapidyaml
@@ -61,6 +68,9 @@ rapidyaml:
yaml-cpp:
@$(MAKE) -C 3rdparty/yaml-cpp
httplib:
@$(MAKE) -C 3rdparty/httplib
import:
# 1) create conf/import folder
# 2) add missing files
@@ -81,9 +91,11 @@ clean:
@$(MAKE) -C 3rdparty/libconfig $@
@$(MAKE) -C 3rdparty/rapidyaml $@
@$(MAKE) -C 3rdparty/yaml-cpp $@
@$(MAKE) -C 3rdparty/httplib $@
@$(MAKE) -C src/login $@
@$(MAKE) -C src/char $@
@$(MAKE) -C src/map $@
@$(MAKE) -C src/web $@
@$(MAKE) -C src/tool $@
help:
@@ -93,9 +105,11 @@ help:
@echo "'libconfig' - builds object files of libconfig"
@echo "'rapidyaml' - builds object files of rapidyaml"
@echo "'yaml-cpp' - builds object files of yaml-cpp"
@echo "'httplib' - builds object files of httplib"
@echo "'login' - builds login server"
@echo "'char' - builds char server"
@echo "'map' - builds map server"
@echo "'web' - builds web server"
@echo "'tools' - builds all the tools in src/tools"
@echo "'import' - builds conf/import, conf/msg_conf/import and db/import folders from their template folders (x-tmpl)"
@echo "'all' - builds all the above targets"

View File

@@ -61,7 +61,7 @@ watch_serv(){
#now checking status and looping
count=0;
while true; do
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
LOGFILE="$LOG_DIR/$i.launch.log"
LOGRUN="$LOG_DIR/$i.log"
@@ -89,7 +89,7 @@ watch_serv(){
restart(){
$0 stop
if [ $1 ]; then sleep $1; fi
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
FIFO="$1_fifo"
while true; do
@@ -117,7 +117,7 @@ case $1 in
else
echo "Logging is disabled"
fi
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
start_serv $i $ENLOG
done
@@ -128,7 +128,7 @@ case $1 in
if [ -z $2 ]; then Restart_count=10; else Restart_count=$2; fi
if [ -z $3 ]; then Restart_sleep=3; else Restart_sleep=$3; fi
echo "Going to watch rAthena for restart_count = $Restart_count, restart_sleep = $Restart_sleep"
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
start_serv $i 1
done
@@ -136,7 +136,7 @@ case $1 in
echo "Watching rAthena now."
;;
'stop')
for i in ${M_SRV} ${C_SRV} ${L_SRV}
for i in ${W_SRV} ${M_SRV} ${C_SRV} ${L_SRV}
do
PIDFILE=.${i}.pid
if [ -e ./${PIDFILE} ]; then
@@ -158,20 +158,20 @@ case $1 in
restart
;;
'status')
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
get_status ${i}
if [ ${PSRUN} ]; then echo "'${i}' is running p${PSRUN}"; else echo "'${i}' seems to be down"; fi
done
;;
'val_runonce')
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
valgrind --leak-check=full --show-leak-kinds=all ./$i --run-once > "log/$i.runonce.leak"
done
;;
'valchk')
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
valgrind --leak-check=full --show-leak-kinds=all ./$i > "log/$i.runonce.leak"
done

View File

@@ -664,6 +664,9 @@ Body:
- Command: refine
Help: |
Params: <equip position> <+/- amount>
- Command: grade
Help: |
Params: <equip position> <+/- amount>
- Command: produce
Help: |
Params: <equip name or equip ID> <element> <# of very's>

View File

@@ -118,12 +118,6 @@ client_reshuffle_dice: yes
// NOTE: Enabling this option degrades performance.
client_sort_storage: no
// Do we allow to change guilde emblem during woe_time?
emblem_woe_change: yes
// How many transparent pixel can be found in emblem before detected as invalid? (Note 2)
emblem_transparency_limit: 80
// Update enemy position while in invisible state? (Note 1)
// NOTE: Set to 'no' will make client won't update enemy position unless the players have "Intravision" effect.
// So that will help client handling WPE - Maya Purple Hack stuff.

View File

@@ -17,7 +17,13 @@ guild_exp_limit: 50
guild_max_castles: 0
// Activate guild skills delay by relog?
// Official setting is 5 minutes (300000 ms), otherwise allow guild leaders to relog to cancel the 5 minute delay.
// 0 - Save cooldown and resume on relog.
// 1 - Don't save cooldown and restart the timer on relog.
// Default on official servers: 1 for Pre-renewal, 0 for Renewal
//guild_skill_relog_type: 0
// Delay in milliseconds that are applied to guild skills.
// Official setting is 5 minutes (300000 ms).
// Note: This was changed in renewal in favor of individual skill cooldown.
guild_skill_relog_delay: 300000

View File

@@ -16,16 +16,6 @@ vending_max_value: 1000000000
// If set to yes, the rest of the zeny above the char's capacity will disappear.
vending_over_max: yes
// Tax to apply to all vending transactions (eg: 10000 = 100%, 50 = 0.50%)
// When a tax is applied, the item's full price is charged to the buyer, but
// the vender will not get the whole price paid (they get 100% - this tax).
vending_tax: 500
// Minimum total of purchase until taxes are applied.
// Officially there is no tax for anything less than 100 million zeny.
// 0 will apply taxes to all transactions.
vending_tax_min: 100000000
// Show the buyer's name when successfully vended an item
buyer_name: yes

View File

@@ -183,3 +183,6 @@ mail_delay: 1000
// Hides items from the player's favorite tab from being sold to a NPC. (Note 1)
hide_fav_sell: no
// Display tax info given from conf/tax.yml (Note 1)
display_tax_info: yes

40
conf/import-tmpl/tax.yml Normal file
View File

@@ -0,0 +1,40 @@
# This file is a part of rAthena.
# Copyright(C) 2019 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Tax Database
###########################################################################
#
# Tax Settings
#
###########################################################################
# Type Tax type. Valid types are TAX_SELLING for vending and TAX_BUYING for buyingstore.
# InTotal Tax applied for total transaction. Supports unlimited entries.
# - MinimalValue Minimum Zeny value before Tax is applied. (Default: 0)
# Tax Tax percentage applied to MinimalValue. (Default: 0)
# EachEntry Tax by selling entry. Supports unlimited entries.
# - MinimalValue Minimum Zeny value before Tax is applied. (Default: 0)
# Tax Tax percentage applied to MinimalValue. (Default: 0)
###########################################################################
Header:
Type: TAX_DB
Version: 1
#Body:
# - Type: TAX_SELLING
# - Type: TAX_BUYING

View File

View File

@@ -15,6 +15,12 @@ party_share_level: 15
// Amount of status points a new character will start with
start_status_points: 48
// Do we allow to change guild emblem during woe_time?
emblem_woe_change: yes
// How many transparent pixel can be found in emblem before detected as invalid? (Note 2)
emblem_transparency_limit: 80
// You can specify the codepage to use in your MySQL tables here.
// (Note that this feature requires MySQL 4.1+)
//default_codepage:
@@ -58,6 +64,13 @@ map_server_id: ragnarok
map_server_pw: ragnarok
map_server_db: ragnarok
// MySQL Web Server
web_server_ip: 127.0.0.1
web_server_port: 3306
web_server_id: ragnarok
web_server_pw: ragnarok
web_server_db: ragnarok
// MySQL Log Database
log_db_ip: 127.0.0.1
log_db_port: 3306
@@ -152,6 +165,14 @@ market_table: market
roulette_table: db_roulette
guild_storage_log: guild_storage_log
// Web Database Tables
// NOTE: The web server reads the login (login) and char (guild) tables, so it needs
// the ability to connect to those databases.
guild_emblems: guild_emblems
user_configs: user_configs
char_configs: char_configs
merchant_configs: merchant_configs
// Use SQL item_db, mob_db and mob_skill_db for the map server? (yes/no)
use_sql_db: no

View File

@@ -167,6 +167,11 @@ client_hash_check: off
// This is required for new clients that get data via an additional API over HTTP
use_web_auth_token: yes
// Delay (in milliseconds) disabling webtoken after character logs off
// There's a race condition when the client logs off. The char-server could revoke the token before
// the client can save the changed configs.
disable_webtoken_delay: 10000
// Client MD5 hashes
// The client with the specified hash can be used to log in by players with
// a group_id equal to or greater than the given value.

View File

@@ -1503,5 +1503,44 @@ map: 1@jorchs
map: 1@jorlab
map: 1@whl
// Extended Jobs
map: 1@exhn
map: 1@exds
map: 2@exds
map: 1@exse
map: 1@exnw
map: 1@exsr
map: 1@exsh
// Varmundt's Biosphere
map: bl_grass
map: bl_lava
map: bl_ice
map: bl_death
// Clock Tower: Unknown Basement
map: clock_01
// Ragnarok Festival
map: rag_fes
map: rag_fes_a
// 20th Anniversary
map: memohall
map: 1@dime
// Fantasy maps
map: prt_elib
map: 1@vrcas
map: 1@vrev
map: 1@vrgen
map: 1@vrpo
// ??
map: 1@pdb
map: airplane2
map: vr_bob
//------------------------- Clone Maps ---------------------------
//------------------------- Extra Maps ---------------------------

View File

@@ -840,7 +840,14 @@
773: This command requires packet version 2016-10-12 or newer.
774: This command is disabled via configuration.
775: You have already opened the refine UI.
//776-781 reserved for tax system
// Tax:
776: [ Tax Information ]
777: %s : %u %c %.2f%% => %u
778: [ Total Transaction Tax ]
779: Tax: %.2f%% Minimal Transaction: %u
780: %s : %.0f => %.0f
781: Tax database has been reloaded.
782: Star Emperor
783: Soul Reaper
@@ -924,7 +931,10 @@
// General packet version check messages
828: This command requires packet version %s or newer.
//829-899 free
// Enchant UI
829: Enchanting is not possible for your item's enchant grade.
//830-899 free
//------------------------------------
// More atcommands message
@@ -1786,5 +1796,9 @@
1517: Cannot add fame to class '%s'.
1518: %d points were added to '%s'.
// @grade
1519: Please enter a position and an amount (usage: @grade <equip position> <+/- amount>).
1520: %d items have been graded.
//Custom translations
import: conf/msg_conf/import/map_msg_eng_conf.txt

View File

@@ -0,0 +1,3 @@
// rAthena msg_athena.conf
// Message Configuration of web-server
// -----------------------

88
conf/tax.yml Normal file
View File

@@ -0,0 +1,88 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Tax Database
###########################################################################
#
# Tax Settings
#
###########################################################################
# Type Tax type. Valid types are TAX_SELLING for vending and TAX_BUYING for buyingstore.
# InTotal Tax applied for total transaction. Supports unlimited entries.
# - MinimalValue Minimum Zeny value before Tax is applied. (Default: 0)
# Tax Tax percentage applied to MinimalValue. (Default: 0)
# EachEntry Tax by selling entry. Supports unlimited entries.
# - MinimalValue Minimum Zeny value before Tax is applied. (Default: 0)
# Tax Tax percentage applied to MinimalValue. (Default: 0)
###########################################################################
Header:
Type: TAX_DB
Version: 1
Body:
# Zeny received for the seller will be reduced after taxes from the total selling price but the buyer pays just the total selling price
- Type: TAX_SELLING
InTotal:
- MinimalValue: 0
Tax: 0
EachEntry:
# 10% if >= 100,000,001
- MinimalValue: 100000001
Tax: 1000
# 8% if >= 10,000,001
- MinimalValue: 10000001
Tax: 800
# 6% if >= 1,000,001
- MinimalValue: 1000001
Tax: 600
# 4% if >= 100,001
- MinimalValue: 100001
Tax: 400
# 2% if >= 10,001
- MinimalValue: 10001
Tax: 200
# Zeny received for the seller will be the total selling price but the buyer must pay taxes for the total selling price
- Type: TAX_BUYING
InTotal:
- MinimalValue: 0
Tax: 0
# Tax by buying entry
EachEntry:
# 10% if >= 100,000,001
- MinimalValue: 100000001
Tax: 1000
# 8% if >= 10,000,001
- MinimalValue: 10000001
Tax: 800
# 6% if >= 1,000,001
- MinimalValue: 1000001
Tax: 600
# 4% if >= 100,001
- MinimalValue: 100001
Tax: 400
# 2% if >= 10,001
- MinimalValue: 10001
Tax: 200
Footer:
Imports:
- Path: conf/import/tax.yml

56
conf/web_athena.conf Normal file
View File

@@ -0,0 +1,56 @@
// rAthena Web Server configuration file.
// Note: "Comments" are all text on the right side of a double slash "//"
// Whatever text is commented will not be parsed by the servers, and serves
// only as information/reference.
// The web server listens on the interface with this IP address.
// NOTE: This allows you to run multiple servers on multiple interfaces
// while using the same ports for each server.
//bind_ip: 127.0.0.1
// Web Server Port
web_port: 8888
//Time-stamp format which will be printed before all messages.
//Can at most be 20 characters long.
//Common formats:
// %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format)
// %H:%M:%S (hour:minute:second, 24 hour format)
// %d/%b/%Y (day/Month/year)
//For full format information, consult the strftime() manual.
//timestamp_format: [%d/%b %H:%M]
//If redirected output contains escape sequences (color codes)
stdout_with_ansisequence: no
//Makes server log selected message types to a file in the /log/ folder
//1: Log Warning Messages
//2: Log Error and SQL Error messages.
//4: Log Debug Messages
//Example: "console_msg_log: 7" logs all 3 kinds
//Messages logged by this overrides console_silent setting
console_msg_log: 0
// File path to store the console messages above
console_log_filepath: ./log/web-msg_log.log
//Makes server output more silent by omitting certain types of messages:
//1: Hide Information messages
//2: Hide Status messages
//4: Hide Notice Messages
//8: Hide Warning Messages
//16: Hide Error and SQL Error messages.
//32: Hide Debug Messages
//Example: "console_silent: 7" Hides information, status and notice messages (1+2+4)
console_silent: 0
// Print requests and responses?
// This is useful for debugging purposes, it will print the entire
// request and response for each transaction.
print_req_res: off
// Allow GIF images to be uploaded as guild emblem?
allow_gifs: yes
import: conf/import/web_conf.txt

149
configure vendored
View File

@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Revision.
# From configure.ac Revision.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69.
#
@@ -642,6 +642,7 @@ ac_ct_CC
CFLAGS
CC
SET_MAKE
OWEB
OMAP
OCHR
OLOG
@@ -674,6 +675,7 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -712,6 +714,7 @@ with_maxconn
with_outputlogin
with_outputchar
with_outputmap
with_outputweb
with_mysql
with_MYSQL_CFLAGS
with_MYSQL_LIBS
@@ -768,6 +771,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1020,6 +1024,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1157,7 +1170,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1310,6 +1323,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1367,9 +1381,10 @@ Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-maxconn[=ARG] optionally set the maximum connections the core can
handle. By default the system header value will be used.
This will only be the compile time limit, make sure
you set the correct limit with ulimit on your OS.
handle. By default the system header value will be
used. This will only be the compile time limit, make
sure you set the correct limit with ulimit on your
OS.
--with-outputlogin[=ARG]
Specify the login-serv output name (defaults to
login-server)
@@ -1377,6 +1392,8 @@ Optional Packages:
char-server)
--with-outputmap[=ARG] Specify the map-serv output name (defaults to
map-server)
--with-outputweb[=ARG] Specify the web-serv output name (defaults to
web-server)
--with-mysql[=ARG] optionally specify the path to the mysql_config
executable
--with-MYSQL_CFLAGS=ARG specify MYSQL_CFLAGS manually (instead of using
@@ -1718,44 +1735,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_cxx_check_header_compile
# ac_fn_c_try_compile LINENO
# --------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
rm -f conftest.$ac_objext
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then :
ac_retval=0
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
# ac_fn_cxx_try_link LINENO
# -------------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
@@ -1802,6 +1781,44 @@ fi
} # ac_fn_cxx_try_link
# ac_fn_c_try_compile LINENO
# --------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
rm -f conftest.$ac_objext
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then :
ac_retval=0
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
# ac_fn_cxx_check_func LINENO FUNC VAR
# ------------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2740,12 +2757,14 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_config_files="$ac_config_files Makefile src/common/Makefile"
ac_config_files="$ac_config_files 3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile 3rdparty/rapidyaml/Makefile"
ac_config_files="$ac_config_files 3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile 3rdparty/rapidyaml/Makefile 3rdparty/httplib/Makefile"
ac_config_files="$ac_config_files src/char/Makefile src/login/Makefile"
ac_config_files="$ac_config_files src/map/Makefile src/tool/Makefile"
ac_config_files="$ac_config_files src/web/Makefile"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
@@ -3284,11 +3303,10 @@ rm -f core conftest.err conftest.$ac_objext \
$as_echo "$have_linux_epoll" >&6; }
fi
if test x$enable_epoll,$have_linux_epoll = xyes,no; then
as_fn_error $? "epoll support explicitly enabled but not available" "$LINENO" 5
as_fn_error $? "epoll support explicitly enabled but not available" "$LINENO" 5
fi
#
# debug
#
@@ -3464,18 +3482,24 @@ fi
#
# Optionally set the max number of network conenctions
# the core will be support
# Optionally set the maximum number of network connections
# the core will be able to handle
#
# Check whether --with-maxconn was given.
if test "${with_maxconn+set}" = set; then :
withval=$with_maxconn;
if ! test "$withval" -ge 0 -o "$withval" -lt 0 2>&- ; then
as_fn_error $? "Invalid argument --with-maxconn=$withval ... stopping" "$LINENO" 5
else
CPPFLAGS="$CPPFLAGS -DMAXCONN=$withval"
fi
if ! test "$withval" -ge 0 -o "$withval" -lt 0 2>&- ; then
as_fn_error $? "Invalid argument --with-maxconn=$withval ... stopping" "$LINENO" 5
else
CPPFLAGS="$CPPFLAGS -DMAXCONN=$withval"
fi
else
CPPFLAGS="$CPPFLAGS"
fi
@@ -3520,6 +3544,18 @@ OMAP=$output_map
# Check whether --with-outputweb was given.
if test "${with_outputweb+set}" = set; then :
withval=$with_outputweb; output_web="$withval"
else
output_web="web-server"
fi
OWEB=$output_web
#
# Optionally specify the path to mysql_config
#
@@ -7027,7 +7063,6 @@ fi
#
# Host specific stuff
#
@@ -7092,8 +7127,8 @@ $as_echo "$as_me: CFLAGS_AR= $CFLAGS_AR" >&6;}
$as_echo "$as_me: LDFLAGS= $LDFLAGS" >&6;}
#AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
#AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN])
{ $as_echo "$as_me:${as_lineno-$LINENO}: output name = $output_login, $output_char, $output_map" >&5
$as_echo "$as_me: output name = $output_login, $output_char, $output_map" >&6;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: output name = $output_login, $output_char, $output_map, $output_web" >&5
$as_echo "$as_me: output name = $output_login, $output_char, $output_map, $output_web" >&6;}
###############################################################################
cat >confcache <<\_ACEOF
@@ -7807,10 +7842,12 @@ do
"3rdparty/libconfig/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/libconfig/Makefile" ;;
"3rdparty/yaml-cpp/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/yaml-cpp/Makefile" ;;
"3rdparty/rapidyaml/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/rapidyaml/Makefile" ;;
"3rdparty/httplib/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/httplib/Makefile" ;;
"src/char/Makefile") CONFIG_FILES="$CONFIG_FILES src/char/Makefile" ;;
"src/login/Makefile") CONFIG_FILES="$CONFIG_FILES src/login/Makefile" ;;
"src/map/Makefile") CONFIG_FILES="$CONFIG_FILES src/map/Makefile" ;;
"src/tool/Makefile") CONFIG_FILES="$CONFIG_FILES src/tool/Makefile" ;;
"src/web/Makefile") CONFIG_FILES="$CONFIG_FILES src/web/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac

View File

@@ -8,9 +8,10 @@ AC_LANG([C++])
AC_LANG_COMPILER_REQUIRE
AC_CONFIG_SRCDIR([src/common/cbasetypes.hpp])
AC_CONFIG_FILES([Makefile src/common/Makefile])
AC_CONFIG_FILES([3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile 3rdparty/rapidyaml/Makefile])
AC_CONFIG_FILES([3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile 3rdparty/rapidyaml/Makefile 3rdparty/httplib/Makefile])
AC_CONFIG_FILES([src/char/Makefile src/login/Makefile])
AC_CONFIG_FILES([src/map/Makefile src/tool/Makefile])
AC_CONFIG_FILES([src/web/Makefile])
AC_GNU_SOURCE
@@ -46,7 +47,7 @@ AC_ARG_ENABLE(
[packetver],
AC_HELP_STRING(
[--enable-packetver=ARG],
[Sets the PACKETVER define. (see src/common/mmo.h)]
[Sets the PACKETVER define. (see src/common/mmo.hpp)]
),
[enable_packetver="$enableval"],
[enable_packetver=""]
@@ -302,7 +303,8 @@ AC_ARG_WITH(
[maxconn],
AC_HELP_STRING(
[--with-maxconn@<:@=ARG@:>@],
[optionally set the maximum connections the core can handle. By default the system header value is used.]
[optionally set the maximum connections the core can handle. By default the system header value will be used.
This will only be the compile time limit, make sure you set the correct limit with ulimit on your OS.]
),
[
if ! test "$withval" -ge 0 -o "$withval" -lt 0 2>&- ; then
@@ -353,6 +355,17 @@ AC_ARG_WITH(
)
AC_SUBST([OMAP],$output_map)
AC_ARG_WITH(
[outputweb],
AC_HELP_STRING(
[--with-outputweb@<:@=ARG@:>@],
[Specify the web-serv output name (defaults to web-server)]
),
[output_web="$withval"],
[output_web="web-server"]
)
AC_SUBST([OWEB],$output_web)
#
# Optionally specify the path to mysql_config
@@ -635,7 +648,7 @@ if test "$enable_lto" != "no" ; then
fi
AC_DEFUN(AC_CHECK_COMPILER_WFLAG,
AC_DEFUN([AC_CHECK_COMPILER_WFLAG],
[
AC_MSG_CHECKING([whether $CC supports -W$1])
OLD_CFLAGS="$CFLAGS"
@@ -670,7 +683,7 @@ AC_DEFUN(AC_CHECK_COMPILER_WFLAG,
]
)
AC_DEFUN(AC_CHECK_COMPILER_WNOFLAG,
AC_DEFUN([AC_CHECK_COMPILER_WNOFLAG],
[
AC_MSG_CHECKING([whether $CC supports -Wno-$1])
OLD_CFLAGS="$CFLAGS"
@@ -1301,7 +1314,6 @@ AC_SUBST([PCRE_VERSION])
AC_SUBST([PCRE_LIBS])
AC_SUBST([PCRE_CFLAGS])
#
# Host specific stuff
#
@@ -1356,7 +1368,7 @@ AC_MSG_NOTICE([CFLAGS_AR= $CFLAGS_AR])
AC_MSG_NOTICE([LDFLAGS= $LDFLAGS])
#AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
#AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN])
AC_MSG_NOTICE([output name = $output_login, $output_char, $output_map])
AC_MSG_NOTICE([output name = $output_login, $output_char, $output_map, $output_web])
###############################################################################
AC_OUTPUT

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
#Body:
# THQ Quest Items

View File

@@ -0,0 +1,72 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Enchant Database
###########################################################################
#
# Item Enchant Settings
#
###########################################################################
# - Id Client side LUA index.
# TargetItems: List of possible target items.
# <item name> Item name of possible target item.
# MinimumRefine Minimum refine of the target item. (Default: 0)
# MinimumEnchantgrade Minimum enchant grade of the target item. (Default: 0)
# AllowRandomOptions Enable random options in the target item. (Default: true)
# Reset: Reset options. (Default: null)
# Chance Chance of successful reset. (Default: 0)
# Price Price for resetting enchants. (Default: 0)
# Materials: Items required for resetting enchants. (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
# Order: Order in which the slots can be enchanted.
# Overwriting via import will clear the currently defined order.
# - Slot Number of the slot (0-3).
# Slots: Enchant options.
# - Slot Number of the slot (0-3).
# Price Price required for the normal enchant process. (Default: 0)
# Materials: Items required for the normal enchant process. (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
# Chance Base chance for the normal enchant process. (Default: 100000)
# EnchantgradeBonus: Additional bonus chance increase per enchant grade. (Default: null)
# - Enchantgrade Enchant grade required for the bonus.
# Chance Additional chance that is added to the base chance.
# Enchants: Available enchants for the normal enchant process per enchant grade. (Default: null)
# - Enchantgrade Enchant grade of the item to be enchanted.
# Items: Available enchants for the normal enchant process on the given enchant grade. (Default: null)
# - Item Item name of the available enchant item.
# Chance Chance to get this specific enchant item.
# PerfectEnchants: Available perfect enchants (100% chance + selectable) for this slot. (Default: null)
# - Item Item name of the available enchant item.
# Price Price required for this perfect enchant. (Default: 0)
# Materials: Items required for this perfect enchant. (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
# Upgrades: Available enchant upgrades for this slot. (Default: null)
# - Enchant Item name of the enchant item available for upgrade.
# Upgrade Item name of the enchant it can be upgrade to.
# Price Price required for this enchant upgrade. (Default: 0)
# Materials: Items required for this enchant upgrade (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
###########################################################################
Header:
Type: ITEM_ENCHANT_DB
Version: 1

View File

@@ -0,0 +1,39 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Package Database
###########################################################################
#
# Item Package Settings
#
###########################################################################
# - Item Item that triggers Item Package Selection.
# Groups: Groups that can be selected.
# - Group Group ID that can be selected (has to match the client's LUA file).
# Items: Items that will be given out.
# - Item Item that will be given out.
# Amount Amount of the item. (Default: 1)
# To remove an item via import set amount to 0.
# RentalHours Rental time in hours. (Default: 0)
# Refine Refine level of the item. (Default: 0)
# RandomOptionGroup Name of the random option group that will be applied. (Default: none)
###########################################################################
Header:
Type: ITEM_PACKAGE_DB
Version: 1

View File

@@ -0,0 +1,44 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Reform Database
###########################################################################
#
# Item Reform Settings
#
###########################################################################
# - Item Item that triggers Item Reform UI.
# BaseItems: Items that can be reformed.
# - BaseItem Item that can be reformed.
# MinimumRefine Minimum refine level of the required items. (Default: 0)
# MaximumRefine Maximum refine level of the required items. (Default: MAX_REFINE)
# RequiredRandomOptions Amount of random options have to be in the item. (Default: 0)
# CardsAllowed Allow cards in the target item. (Default: true)
# Materials: Additional items needed for the reformation. (Default: none)
# - Material Material item that is needed.
# Amount Amount of the material item that is needed. (Default: 1)
# ResultItem Item after the reform.
# ChangeRefine Increase or decrease the refine during reformation. (Default: 0)
# RandomOptionGroup Name of the random option group that will be applied. (Default: none)
# ClearSlots Remove cards and socket enchants during reformation. (Default: false)
# RemoveEnchantgrade Remove enchantgrade during reformation. (Default: false)
###########################################################################
Header:
Type: ITEM_REFORM_DB
Version: 1

View File

@@ -0,0 +1,44 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Map Drop Database
###########################################################################
#
# Map Drop Settings
#
###########################################################################
# - Map Name of the map.
# GlobalDrops Drops for all monsters on this map. (Default: empty)
# These drops are unaffected by server drop rate and cannot be stolen.
# - Index Unique index of the drop.
# Item Item name.
# Rate Drop rate of item.
# RandomOptionGroup Random Option Group applied to item on drop. (Default: None)
# SpecificDrops Drops for specific monsters on this map. (Default: empty)
# - Monster Monster name.
# Drops Drops for this specific monster. (Default: empty)
# These drops are unaffected by server drop rate and cannot be stolen.
# - Index Unique index of the drop.
# Item Item name.
# Rate Drop rate of item.
# RandomOptionGroup Random Option Group applied to item on drop. (Default: None)
###########################################################################
Header:
Type: MAP_DROP_DB
Version: 1

View File

@@ -0,0 +1,34 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Reputation Database
###########################################################################
#
# Reputation Settings
#
###########################################################################
# - Id Client side index.
# Name Name of the reputation type.
# Variable Name of the variable that will store the reputation. (Default: RepPoints<id>)
# Minimum Minimum amount of points. (Default: INT64_MIN)
# Maximum Maximum amount of points. (Default: INT64_MAX)
###########################################################################
Header:
Type: REPUTATION_DB
Version: 1

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
Footer:
Imports:

78
db/item_enchant.yml Normal file
View File

@@ -0,0 +1,78 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Enchant Database
###########################################################################
#
# Item Enchant Settings
#
###########################################################################
# - Id Client side LUA index.
# TargetItems: List of possible target items.
# <item name> Item name of possible target item.
# MinimumRefine Minimum refine of the target item. (Default: 0)
# MinimumEnchantgrade Minimum enchant grade of the target item. (Default: 0)
# AllowRandomOptions Enable random options in the target item. (Default: true)
# Reset: Reset options. (Default: null)
# Chance Chance of successful reset. (Default: 0)
# Price Price for resetting enchants. (Default: 0)
# Materials: Items required for resetting enchants. (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
# Order: Order in which the slots can be enchanted.
# Overwriting via import will clear the currently defined order.
# - Slot Number of the slot (0-3).
# Slots: Enchant options.
# - Slot Number of the slot (0-3).
# Price Price required for the normal enchant process. (Default: 0)
# Materials: Items required for the normal enchant process. (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
# Chance Base chance for the normal enchant process. (Default: 100000)
# EnchantgradeBonus: Additional bonus chance increase per enchant grade. (Default: null)
# - Enchantgrade Enchant grade required for the bonus.
# Chance Additional chance that is added to the base chance.
# Enchants: Available enchants for the normal enchant process per enchant grade. (Default: null)
# - Enchantgrade Enchant grade of the item to be enchanted.
# Items: Available enchants for the normal enchant process on the given enchant grade. (Default: null)
# - Item Item name of the available enchant item.
# Chance Chance to get this specific enchant item.
# PerfectEnchants: Available perfect enchants (100% chance + selectable) for this slot. (Default: null)
# - Item Item name of the available enchant item.
# Price Price required for this perfect enchant. (Default: 0)
# Materials: Items required for this perfect enchant. (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
# Upgrades: Available enchant upgrades for this slot. (Default: null)
# - Enchant Item name of the enchant item available for upgrade.
# Upgrade Item name of the enchant it can be upgrade to.
# Price Price required for this enchant upgrade. (Default: 0)
# Materials: Items required for this enchant upgrade (Default: null)
# - Material Item name of the required item.
# Amount Amount of the required item. (Default: 1)
###########################################################################
Header:
Type: ITEM_ENCHANT_DB
Version: 1
Footer:
Imports:
- Path: db/re/item_enchant.yml
Mode: Renewal
- Path: db/import/item_enchant.yml

45
db/item_packages.yml Normal file
View File

@@ -0,0 +1,45 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Package Database
###########################################################################
#
# Item Package Settings
#
###########################################################################
# - Item Item that triggers Item Package Selection.
# Groups: Groups that can be selected.
# - Group Group ID that can be selected (has to match the client's LUA file).
# Items: Items that will be given out.
# - Item Item that will be given out.
# Amount Amount of the item. (Default: 1)
# To remove an item via import set amount to 0.
# RentalHours Rental time in hours. (Default: 0)
# Refine Refine level of the item. (Default: 0)
# RandomOptionGroup Name of the random option group that will be applied. (Default: none)
###########################################################################
Header:
Type: ITEM_PACKAGE_DB
Version: 1
Footer:
Imports:
- Path: db/re/item_packages.yml
Mode: Renewal
- Path: db/import/item_packages.yml

50
db/item_reform.yml Normal file
View File

@@ -0,0 +1,50 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Reform Database
###########################################################################
#
# Item Reform Settings
#
###########################################################################
# - Item Item that triggers Item Reform UI.
# BaseItems: Items that can be reformed.
# - BaseItem Item that can be reformed.
# MinimumRefine Minimum refine level of the required items. (Default: 0)
# MaximumRefine Maximum refine level of the required items. (Default: MAX_REFINE)
# RequiredRandomOptions Amount of random options have to be in the item. (Default: 0)
# CardsAllowed Allow cards in the target item. (Default: true)
# Materials: Additional items needed for the reformation. (Default: none)
# - Material Material item that is needed.
# Amount Amount of the material item that is needed. (Default: 1)
# ResultItem Item after the reform.
# ChangeRefine Increase or decrease the refine during reformation. (Default: 0)
# RandomOptionGroup Name of the random option group that will be applied. (Default: none)
# ClearSlots Remove cards and socket enchants during reformation. (Default: false)
# RemoveEnchantgrade Remove enchantgrade during reformation. (Default: false)
###########################################################################
Header:
Type: ITEM_REFORM_DB
Version: 1
Footer:
Imports:
- Path: db/re/item_reform.yml
Mode: Renewal
- Path: db/import/item_reform.yml

Binary file not shown.

50
db/map_drops.yml Normal file
View File

@@ -0,0 +1,50 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Map Drop Database
###########################################################################
#
# Map Drop Settings
#
###########################################################################
# - Map Name of the map.
# GlobalDrops Drops for all monsters on this map. (Default: empty)
# These drops are unaffected by server drop rate and cannot be stolen.
# - Index Unique index of the drop.
# Item Item name.
# Rate Drop rate of item.
# RandomOptionGroup Random Option Group applied to item on drop. (Default: None)
# SpecificDrops Drops for specific monsters on this map. (Default: empty)
# - Monster Monster name.
# Drops Drops for this specific monster. (Default: empty)
# These drops are unaffected by server drop rate and cannot be stolen.
# - Index Unique index of the drop.
# Item Item name.
# Rate Drop rate of item.
# RandomOptionGroup Random Option Group applied to item on drop. (Default: None)
###########################################################################
Header:
Type: MAP_DROP_DB
Version: 1
Footer:
Imports:
- Path: db/re/map_drops.yml
Mode: Renewal
- Path: db/import/map_drops.yml

View File

@@ -1161,7 +1161,30 @@ air_if
1@jorchs
1@jorlab
1@whl
1@exhn
1@exds
2@exds
1@exse
1@exnw
1@exsr
1@exsh
bl_grass
bl_lava
bl_ice
bl_death
clock_01
rag_fes
rag_fes_a
memohall
1@dime
prt_elib
1@vrcas
1@vrev
1@vrgen
1@vrpo
1@pdb
airplane2
vr_bob
//======================================================================================
// - Other/Extra maps -

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
Footer:
Imports:

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
Body:
- Id: 1101

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
Body:
- Id: 670

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
Body:
- Id: 501

View File

@@ -79,6 +79,7 @@ Body:
DurationLookup: NPC_PETRIFYATTACK
States:
NoCast: true
NoAttack: true
Opt1: StoneWait
Flags:
SendOption: true
@@ -352,6 +353,8 @@ Body:
DurationLookup: AS_ENCHANTPOISON
CalcFlags:
Atk_Ele: true
Flags:
RemoveOnUnequipWeapon: true
End:
Aspersio: true
Fireweapon: true
@@ -494,6 +497,7 @@ Body:
Earthweapon: true
Shadowweapon: true
Ghostweapon: true
Enchantarms: true
- Status: Benedictio
Icon: EFST_BENEDICTIO
DurationLookup: PR_BENEDICTIO
@@ -519,8 +523,6 @@ Body:
FailedMado: true
NoSave: true
SuperNoviceAngel: true
Fail:
Offertorium: true
- Status: Gloria
Icon: EFST_GLORIA
DurationLookup: PR_GLORIA
@@ -751,6 +753,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Stripshield
Icon: EFST_NOEQUIPSHIELD
DurationLookup: RG_STRIPSHIELD
@@ -762,6 +765,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Striparmor
Icon: EFST_NOEQUIPARMOR
DurationLookup: RG_STRIPARMOR
@@ -773,6 +777,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Striphelm
Icon: EFST_NOEQUIPHELM
DurationLookup: RG_STRIPHELM
@@ -784,6 +789,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Cp_Weapon
Icon: EFST_PROTECTWEAPON
DurationLookup: AM_CP_WEAPON
@@ -931,6 +937,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Explosionspirits
Icon: EFST_EXPLOSIONSPIRITS
DurationLookup: MO_EXPLOSIONSPIRITS
@@ -942,6 +949,7 @@ Body:
Flags:
Debuff: true
NoClearance: true
NoSave: true
- Status: Combo
Flags:
NoClearbuff: true
@@ -978,7 +986,7 @@ Body:
CalcFlags:
Atk_Ele: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -993,7 +1001,7 @@ Body:
CalcFlags:
Atk_Ele: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1008,7 +1016,7 @@ Body:
CalcFlags:
Atk_Ele: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1023,7 +1031,7 @@ Body:
CalcFlags:
Atk_Ele: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1325,6 +1333,7 @@ Body:
Flags:
Debuff: true
NoClearance: true
NoSave: true
End:
Blessing: true
Increaseagi: true
@@ -5445,6 +5454,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
SendVal1: true
NoForcedEnd: true
- Status: Angel_Protect
Icon: EFST_ANGEL_PROTECT
@@ -6106,6 +6116,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
SendVal1: true
NoForcedEnd: true
- Status: Ljosalfar
Icon: EFST_LJOSALFAR

File diff suppressed because it is too large Load Diff

View File

@@ -44,6 +44,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)
@@ -85,7 +86,7 @@
Header:
Type: ITEM_DB
Version: 2
Version: 3
Footer:
Imports:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

18096
db/re/item_enchant.yml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -26140,7 +26140,7 @@ Body:
SubGroups:
- SubGroup: 0
List:
- Item: Sea_Otter_Mini_Fan
- Item: SeeOtter_Fan
RandomOptionGroup: FAN_UPGRADE_KIT
- Group: SUIT_UPGRADE_KIT
SubGroups:
@@ -26637,9 +26637,9 @@ Body:
SubGroups:
- SubGroup: 1
List:
- Item: S_Almighty_Earring
- Item: S_AllMighty_Earring
Rate: 1
- Item: S_Almighty_Pendant
- Item: S_AllMighty_Pendant
Rate: 1
- Group: GEMSTONESHADOW_MIX
SubGroups:
@@ -26748,12 +26748,12 @@ Body:
SubGroups:
- SubGroup: 0
List:
- Item: S_Kingbird_Ancient_Armor
- Item: S_KingbirdAncient_Armor
- Group: CRITICALHIT_MIX
SubGroups:
- SubGroup: 0
List:
- Item: S_Cri_Hit_Armor
- Item: S_CriticalHit_Armor
- Group: BS_ITEM_M_S_2
SubGroups:
- SubGroup: 0
@@ -26907,7 +26907,7 @@ Body:
List:
- Item: SurviveOrb_K
Rate: 1
- Item: Survive_Circlet_
- Item: Survive_Circlet_K
Rate: 1
- Group: BS_ITEM_M_S_28
SubGroups:
@@ -27509,7 +27509,7 @@ Body:
SubGroups:
- SubGroup: 0
List:
- Item: Wickebines_Black_Cat_Ears
- Item: Whikebain_Ears_K
- Group: ENCHANTSTONE_RECIPE_9M
SubGroups:
- SubGroup: 1
@@ -27850,9 +27850,9 @@ Body:
Rate: 4
- Item: S_Bearer's_Shoes_II
Rate: 4
- Item: S_Almighty_Earring
- Item: S_AllMighty_Earring
Rate: 4
- Item: S_Almighty_Pendant
- Item: S_AllMighty_Pendant
Rate: 4
- Item: S_All_Race_Shoes
Rate: 4
@@ -27920,7 +27920,7 @@ Body:
Rate: 4
- Item: S_Hard_Champion_Shoes
Rate: 4
- Item: S_Kingbird_Ancient_Armor
- Item: S_KingbirdAncient_Armor
Rate: 4
- Item: S_Rebellion_Armor
Rate: 4
@@ -29413,14 +29413,14 @@ Body:
SubGroups:
- SubGroup: 0
List:
- Item: Up_Thousand_Sun
- Item: Up_OneSkyOneSun
RefineMinimum: 7
RefineMaximum: 7
- Group: SPIRIT_PENDULUM_CUBE
SubGroups:
- SubGroup: 0
List:
- Item: Up_Spirit_Pendulum_
- Item: Up_SoulWeight
RefineMinimum: 7
RefineMaximum: 7
- Group: CRIMSON_ROSE_CUBE
@@ -29441,21 +29441,21 @@ Body:
SubGroups:
- SubGroup: 0
List:
- Item: Up_Golden_Lord_Launcher
- Item: Up_Golden_L_Launcher
RefineMinimum: 7
RefineMaximum: 7
- Group: THE_BLACK_CUBE
SubGroups:
- SubGroup: 0
List:
- Item: Up_The_Black
- Item: Up_The_Black_Gatling
RefineMinimum: 7
RefineMaximum: 7
- Group: DEMON_SLAYER_SHOT_CUBE
SubGroups:
- SubGroup: 0
List:
- Item: Up_Demon_Slayer_Shot
- Item: Up_Demon_S_Shot
RefineMinimum: 7
RefineMaximum: 7
- Group: RUNE_CRAFT_MATERIALS
@@ -31074,7 +31074,7 @@ Body:
Rate: 100
- Item: Avenger
Rate: 100
- Item: Aeon_Staff
- Item: Iron_Staff
Rate: 100
- Item: Oriental_Sword
Rate: 100
@@ -31125,25 +31125,353 @@ Body:
List:
- Item: Blacksmith_Blessing
Amount: 2
- Group: Bs_Item_M_S_53
- Group: BS_ITEM_M_S_53
SubGroups:
- SubGroup: 0
List:
- Item: Shadow_Refine_Hammer
Amount: 2
- Group: Bs_Item_M_S_54
- Group: BS_ITEM_M_S_54
SubGroups:
- SubGroup: 0
List:
- Item: Mightysoul_Essence
- Group: Bs_Item_M_S_55
- Group: BS_ITEM_M_S_55
SubGroups:
- SubGroup: 0
List:
- Item: M_Dimension_Essence
- Group: Bs_Item_M_S_56
- Group: BS_ITEM_M_S_56
SubGroups:
- SubGroup: 0
List:
- Item: Enchant_Ticket
Amount: 2
- Group: ENCHANT_STONE_BOX28
SubGroups:
- SubGroup: 1
List:
- Item: M_PATKStone_Robe
Rate: 10
- Item: R_PATKStone_Robe
Rate: 10
- Item: POWStone_Robe_D
Rate: 10
- Item: ConStone_Robe_D
Rate: 10
- Item: Critical_Stone_Robe
Rate: 20
- Item: SPdrainStone_Robe_D
Rate: 40
- Item: SPdrainStone_Top
Rate: 80
- Item: CastStone_Robe
Rate: 80
- Item: ASPDStone_Top
Rate: 150
- Item: ASPDStone_Robe_D
Rate: 80
- Item: HPdrainStone_Robe_D
Rate: 80
- Item: GreenFloor_Bottom
Rate: 160
- Item: ExplodingEffect_Middle
Rate: 160
- Item: StarEmperorStone_Garment
Rate: 80
- Item: GunslingerStone_Robe
Rate: 80
- Item: SoulReaperStone_Robe
Rate: 80
- Item: StarStone_Top3
Rate: 80
- Item: StarStone_Middle3
Rate: 80
- Item: StarStone_Bottom3
Rate: 80
- Item: RebelStone_Top3
Rate: 80
- Item: RebelStone_Middle3
Rate: 80
- Item: RebelStone_Bottom3
Rate: 80
- Item: ReaperStone_Top3
Rate: 80
- Item: ReaperStone_Middle3
Rate: 80
- Item: ReaperStone_Bottom3
Rate: 80
- Item: aegis_100465
Rate: 160
- Item: aegis_100495
Rate: 160
- Item: Magic_Stone_Top
Rate: 240
- Item: Magic_Stone_Middle
Rate: 240
- Item: Magic_Stone_Bottom
Rate: 240
- Item: StarGladiatorStone_Top
Rate: 150
- Item: StarGladiatorStone_Middle
Rate: 150
- Item: StarGladiatorStone_Bottom
Rate: 150
- Item: GunslingerStone_Top
Rate: 150
- Item: GunslingerStone_Middle
Rate: 150
- Item: GunslingerStone_Bottom
Rate: 150
- Item: SoulLinkerStone_Top
Rate: 150
- Item: SoulLinkerStone_Middle
Rate: 150
- Item: SoulLinkerStone_Bottom
Rate: 150
- Item: Melee_Stone_Top
Rate: 240
- Item: Melee_Stone_Middle
Rate: 240
- Item: Melee_Stone_Bottom
Rate: 240
- Item: Range_Stone_Top
Rate: 240
- Item: Range_Stone
Rate: 240
- Item: Range_Stone_Bottom
Rate: 240
- Item: aegis_100496
Rate: 360
- Item: aegis_100497
Rate: 360
- Item: aegis_100498
Rate: 360
- Item: aegis_100499
Rate: 360
- Item: aegis_100500
Rate: 360
- Item: aegis_100501
Rate: 360
- Item: CastingStone_Top
Rate: 360
- Item: CastingStone_Middle
Rate: 360
- Item: CastingStone_Bottom
Rate: 360
- Item: Critical_Stone
Rate: 360
- Item: Critical_Stone_Top
Rate: 360
- Item: Critical_Stone_Bottom
Rate: 360
- Group: S_FULLPENE_EARRING
SubGroups:
- SubGroup: 0
List:
- Item: S_FullPene_Earring
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLPENE_PENDANT
SubGroups:
- SubGroup: 0
List:
- Item: S_FullPene_Pendant
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLPENE_ARMOR
SubGroups:
- SubGroup: 0
List:
- Item: S_FullPene_Armor
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLPENE_SHOES
SubGroups:
- SubGroup: 0
List:
- Item: S_FullPene_Shoes
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLTEMP_EARRING
SubGroups:
- SubGroup: 0
List:
- Item: S_FullTemp_Earring
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLTEMP_PENDANT
SubGroups:
- SubGroup: 0
List:
- Item: S_FullTemp_Pendant
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLTEMP_ARMOR
SubGroups:
- SubGroup: 0
List:
- Item: S_FullTemp_Armor
RefineMinimum: 7
RefineMaximum: 10
- Group: S_FULLTEMP_SHOES
SubGroups:
- SubGroup: 0
List:
- Item: S_FullTemp_Shoes
RefineMinimum: 7
RefineMaximum: 10
- Group: S_DURABLE_WEAPON
SubGroups:
- SubGroup: 0
List:
- Item: S_Durable_Weapon
RefineMinimum: 7
RefineMaximum: 10
- Group: S_DURABLE_SHIELD
SubGroups:
- SubGroup: 0
List:
- Item: S_Durable_Shield
RefineMinimum: 7
RefineMaximum: 10
- Group: S_CLEVER_WEAPON
SubGroups:
- SubGroup: 0
List:
- Item: S_Clever_Weapon
RefineMinimum: 7
RefineMaximum: 10
- Group: S_CLEVER_SHIELD
SubGroups:
- SubGroup: 0
List:
- Item: S_Clever_Shield
RefineMinimum: 7
RefineMaximum: 10
- Group: S_ALLMIGHTY_EARRING
SubGroups:
- SubGroup: 0
List:
- Item: S_AllMighty_Earring
RefineMinimum: 7
RefineMaximum: 10
- Group: S_ALLMIGHTY_PENDANT
SubGroups:
- SubGroup: 0
List:
- Item: S_AllMighty_Pendant
RefineMinimum: 7
RefineMaximum: 10
- Group: S_TRUEGEM_EARRING
SubGroups:
- SubGroup: 0
List:
- Item: S_TrueGem_Earring
RefineMinimum: 7
RefineMaximum: 10
- Group: S_TRUEGEM_PENDANT
SubGroups:
- SubGroup: 0
List:
- Item: S_TrueGem_Pendant
RefineMinimum: 7
RefineMaximum: 10
- Group: S_TRUEGEM_SHOES
SubGroups:
- SubGroup: 0
List:
- Item: S_TrueGem_Shoes
RefineMinimum: 7
RefineMaximum: 10
- Group: S_TRUEGEM_ARMOR
SubGroups:
- SubGroup: 0
List:
- Item: S_TrueGem_Armor
RefineMinimum: 7
RefineMaximum: 10
- Group: S_PERFECTSIZE_WEAPON
SubGroups:
- SubGroup: 0
List:
- Item: S_PerfectSize_Weapon
RefineMinimum: 7
RefineMaximum: 10
- Group: S_PERFECTSIZE_ARMOR
SubGroups:
- SubGroup: 0
List:
- Item: S_PerfectSize_Armor
RefineMinimum: 7
RefineMaximum: 10
- Group: S_M_MAMMOTH_EARRING
SubGroups:
- SubGroup: 0
List:
- Item: S_M_Mammoth_Earring
RefineMinimum: 7
RefineMaximum: 10
- Group: S_M_MAMMOTH_PENDANT
SubGroups:
- SubGroup: 0
List:
- Item: S_M_Mammoth_Pendant
RefineMinimum: 7
RefineMaximum: 10
- Group: S_M_MAMMOTH_ARMOR
SubGroups:
- SubGroup: 0
List:
- Item: S_M_Mammoth_Armor
RefineMinimum: 7
RefineMaximum: 10
- Group: S_M_MAMMOTH_SHOES
SubGroups:
- SubGroup: 0
List:
- Item: S_M_Mammoth_Shoes
RefineMinimum: 7
RefineMaximum: 10
- Group: S_SPELLCASTER_EARRING
SubGroups:
- SubGroup: 0
List:
- Item: S_SpellCaster_Earring
RefineMinimum: 7
RefineMaximum: 10
- Group: S_SPELLCASTER_PENDANT
SubGroups:
- SubGroup: 0
List:
- Item: S_SpellCaster_Pendant
RefineMinimum: 7
RefineMaximum: 10
- Group: S_SPELLCASTER_ARMOR
SubGroups:
- SubGroup: 0
List:
- Item: S_SpellCaster_Armor
RefineMinimum: 7
RefineMaximum: 10
- Group: S_SPELLCASTER_SHOES
SubGroups:
- SubGroup: 0
List:
- Item: S_SpellCaster_Shoes
RefineMinimum: 7
RefineMaximum: 10
- Group: S_ABSORB_WEAPON
SubGroups:
- SubGroup: 0
List:
- Item: S_Absorb_Weapon
RefineMinimum: 7
RefineMaximum: 10
- Group: S_ABSORB_SHIELD
SubGroups:
- SubGroup: 0
List:
- Item: S_Absorb_Shield
RefineMinimum: 7
RefineMaximum: 10

531
db/re/item_packages.yml Normal file
View File

@@ -0,0 +1,531 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Item Package Database
###########################################################################
#
# Item Package Settings
#
###########################################################################
# - Item Item that triggers Item Package Selection.
# Groups: Groups that can be selected.
# - Group Group ID that can be selected (has to match the client's LUA file).
# Items: Items that will be given out.
# - Item Item that will be given out.
# Amount Amount of the item. (Default: 1)
# To remove an item via import set amount to 0.
# RentalHours Rental time in hours. (Default: 0)
# Refine Refine level of the item. (Default: 0)
# RandomOptionGroup Name of the random option group that will be applied. (Default: none)
###########################################################################
Header:
Type: ITEM_PACKAGE_DB
Version: 1
Body:
- Item: Select_Example1
Groups:
- Group: 0
Items:
- Item: Cotton_Shirt
Refine: 7
# RandomOptionGroup: TODO <insert random option group name>
- Item: Shoes
Refine: 5
# RandomOptionGroup: TODO <insert random option group name>
- Item: Muffler
Refine: 3
# RandomOptionGroup: TODO <insert random option group name>
- Item: Event_Pierrot_Nose
RentalHours: 24
# RandomOptionGroup: TODO <insert random option group name>
- Group: 1
Items:
- Item: Red_Potion
Amount: 100
- Item: Orange_Potion
Amount: 50
- Item: White_Potion
Amount: 10
- Group: 2
Items:
- Item: Jellopy
Amount: 10
- Item: Hinalle
- Item: Yellow_Gemstone
Amount: 3
- Item: Azure_Jewel
- Item: Spore_Doll
Amount: 2
- Item: Select_Example2
Groups:
- Group: 0
Items:
- Item: Knife
Refine: 4
# RandomOptionGroup: TODO <insert random option group name>
- Item: Cotton_Shirt
Refine: 4
# RandomOptionGroup: TODO <insert random option group name>
- Item: Red_Potion
Amount: 100
- Item: Ring
RentalHours: 24
# RandomOptionGroup: TODO <insert random option group name>
- Group: 1
Items:
- Item: Tsurugi
Refine: 5
# RandomOptionGroup: TODO <insert random option group name>
- Item: Padded_Armor
Refine: 5
# RandomOptionGroup: TODO <insert random option group name>
- Item: Yellow_Potion
Amount: 50
- Group: 2
Items:
- Item: Sword
Refine: 20
# RandomOptionGroup: TODO <insert random option group name>
- Item: Guard
RentalHours: 168
Refine: 5
# RandomOptionGroup: TODO <insert random option group name>
- Item: White_Herb
Amount: 100
- Group: 3
Items:
- Item: Fabre_Card
- Item: Pupa_Card
- Item: Drops_Card
- Item: Poring__Card
- Item: Lunatic_Card
- Item: Pecopeco_Egg_Card
- Item: Picky_Card
- Item: Chonchon_Card
- Item: Wilow_Card
- Item: Picky__Card
- Item: Thief_Bug_Egg_Card
- Item: Andre_Egg_Card
- Item: Roda_Frog_Card
- Item: Condor_Card
- Item: Thief_Bug_Card
- Item: Savage_Babe_Card
- Item: Andre_Larva_Card
- Item: Hornet_Card
- Item: Farmiliar_Card
- Item: Rocker_Card
- Group: 4
Items:
- Item: Poring_Card
- Group: 5
Items:
- Item: LI_Nyangvine_Box3_26
Amount: 5
- Group: 6
Items:
- Item: C_Hair_Of_The_Strong
# RandomOptionGroup: TODO <insert random option group name>
- Item: C_Imp_Hat
# RandomOptionGroup: TODO <insert random option group name>
- Group: 7
Items:
- Item: C_Classical_Fhat
- Group: 8
Items:
- Item: Wing_Of_Fly
Amount: 3
RentalHours: 24
- Item: Wing_Of_Butterfly
Amount: 5
RentalHours: 168
- Item: Old_Blue_Box
RentalHours: 1
- Group: 9
Items:
- Item: Red_Potion
Amount: 10
- Item: Red_Potion
Amount: 5
- Item: Red_Potion
- Item: Red_Potion
Amount: 3
RentalHours: 1
- Group: 10
Items:
- Item: Guard_
- Item: Guard_
- Item: Guard_
- Group: 11
Items:
- Item: Orange_Potion
Amount: 800
- Item: Boost_Armor_Box
Groups:
- Group: 0
Items:
- Item: Attacker_Booster_Plate_
- Item: Attacker_Booster_Manteau_
- Item: Attacker_Booster_Greaves_
- Item: Attacker_Booster_Ring
- Item: Boost_Up_1
Amount: 3
- Group: 1
Items:
- Item: Ranger_Booster_Suits_
- Item: Ranger_Booster_Manteau_
- Item: Ranger_Booster_Boots_
- Item: Range_Booster_Brooch
- Item: Boost_Up_1
Amount: 3
- Group: 2
Items:
- Item: Elemental_Booster_Robe_
- Item: Elemental_Booster_Muffler_
- Item: Elemental_Booster_Shoes_
- Item: Elemental_Booster_Earring
- Item: Boost_Up_1
Amount: 3
- Group: 3
Items:
- Item: Defender_Booster_Robe_
- Item: Defender_Booster_Muffler_
- Item: Defender_Booster_Shoes_
- Item: Defender_Booster_Earring
- Item: Boost_Up_1
Amount: 3
- Item: Special_Coin_Pack
Groups:
- Group: 0
Items:
- Item: EP17_1_EVT39
Amount: 3
- Item: EP17_1_EVT02
Amount: 18
- Group: 1
Items:
- Item: BarMealTicket
Amount: 20
- Group: 2
Items:
- Item: Ep18_Amethyst_Fragment
Amount: 20
- Group: 3
Items:
- Item: Ep19_Snow_Flower
Amount: 20
- Item: Metal_W_Box
Groups:
- Group: 0
Items:
- Item: Metal_Two_Hand_Sword
Refine: 7
- Group: 1
Items:
- Item: Metal_Lance
Refine: 7
- Group: 2
Items:
- Item: Metal_Mace
Refine: 7
- Group: 3
Items:
- Item: Metal_Two_Handed_Axe
Refine: 7
- Group: 4
Items:
- Item: Metal_Dagger
Refine: 7
- Group: 5
Items:
- Item: Metal_Book
Refine: 7
- Group: 6
Items:
- Item: Metal_Staff
Refine: 7
- Group: 7
Items:
- Item: Metal_Katar
Refine: 7
- Group: 8
Items:
- Item: Metal_Bow
Refine: 7
- Group: 9
Items:
- Item: Metal_Revolver
Refine: 7
- Group: 10
Items:
- Item: Metal_Foxtail
Refine: 7
- Item: Memento_Box
Groups:
- Group: 0
Items:
- Item: Booster_Mask_A
- Group: 1
Items:
- Item: Booster_Mask_B
- Group: 2
Items:
- Item: Booster_Mask_C
- Item: P_Memento_Box
Groups:
- Group: 0
Items:
- Item: Booster_Scarf_A
- Group: 1
Items:
- Item: Booster_Scarf_B
- Group: 2
Items:
- Item: Booster_Scarf_C
- Item: Booster_Hat_Box
Groups:
- Group: 0
Items:
- Item: C_Pretty_Rabbit_Hood_E
- Group: 1
Items:
- Item: C_Black_Cat_Hood_kr
- Group: 2
Items:
- Item: C_Squirrel_Ear_Hat_Kr
- Group: 3
Items:
- Item: C_Black_Moon_Cat_kr
- Item: Booster_Back_Box
Groups:
- Group: 0
Items:
- Item: C_School_Bag_RD_E
- Group: 1
Items:
- Item: C_School_Bag_BL
- Group: 2
Items:
- Item: C_School_Bag_BU
- Group: 3
Items:
- Item: C_School_Bag_PU
- Item: aegis_101470
Groups:
- Group: 0
Items:
- Item: Minus_Str
Amount: 6
- Group: 1
Items:
- Item: Minus_Agi
Amount: 6
- Group: 2
Items:
- Item: Minus_Vit
Amount: 6
- Group: 3
Items:
- Item: Minus_Int
Amount: 6
- Group: 4
Items:
- Item: Minus_Dex
Amount: 6
- Group: 5
Items:
- Item: Minus_Luk
Amount: 6
- Group: 6
Items:
- Item: Minus_Str
- Item: Minus_Agi
- Item: Minus_Vit
- Item: Minus_Int
- Item: Minus_Dex
- Item: Minus_Luk
- Item: aegis_101471
Groups:
- Group: 0
Items:
- Item: Fire_Bottle
Amount: 50
- Group: 1
Items:
- Item: Acid_Bottle
Amount: 50
- Group: 2
Items:
- Item: MenEater_Plant_Bottle
Amount: 50
- Group: 3
Items:
- Item: Coating_Bottle
Amount: 50
- Group: 4
Items:
- Item: Mini_Bottle
Amount: 50
- Item: aegis_101542
Groups:
- Group: 0
Items:
- Item: aegis_101543
- Group: 1
Items:
- Item: aegis_101544
- Group: 2
Items:
- Item: aegis_101545
- Group: 3
Items:
- Item: aegis_101546
- Item: aegis_101547
Groups:
- Group: 0
Items:
- Item: aegis_101548
- Group: 1
Items:
- Item: aegis_101549
- Group: 2
Items:
- Item: aegis_101550
- Group: 3
Items:
- Item: aegis_101551
- Item: aegis_101552
Groups:
- Group: 0
Items:
- Item: aegis_101553
- Group: 1
Items:
- Item: aegis_101554
- Item: aegis_101555
Groups:
- Group: 0
Items:
- Item: aegis_101556
- Group: 1
Items:
- Item: aegis_101557
- Item: aegis_101563
Groups:
- Group: 0
Items:
- Item: Ignis_CapK
- Group: 1
Items:
- Item: Phantom_Cap
- Group: 2
Items:
- Item: Stripe_Hat
- Group: 3
Items:
- Item: Clock_Casket_RD
- Group: 4
Items:
- Item: Large_Sorcerer_Crown
- Group: 5
Items:
- Item: Scorpio_Diadem_K
- Group: 6
Items:
- Item: Sagittarius_DiademK
- Item: aegis_101565
Groups:
- Group: 0
Items:
- Item: Class_Sha_R_M_Melee
- Group: 1
Items:
- Item: Class_Sha_R_M_Magic
- Group: 2
Items:
- Item: Skill_Sha_R_M_Melee
- Group: 3
Items:
- Item: Skill_Sha_R_M_Magic
- Item: aegis_101654
Groups:
- Group: 0
Items:
- Item: aegis_101655
- Group: 1
Items:
- Item: aegis_101656
- Item: aegis_101657
Groups:
- Group: 0
Items:
- Item: aegis_101658
- Group: 1
Items:
- Item: aegis_101659
- Group: 2
Items:
- Item: aegis_101660
- Group: 3
Items:
- Item: aegis_101661
- Item: aegis_101662
Groups:
- Group: 0
Items:
- Item: aegis_101663
- Group: 1
Items:
- Item: aegis_101664
- Item: aegis_101727
Groups:
- Group: 0
Items:
- Item: aegis_101717
- Group: 1
Items:
- Item: aegis_101718
- Group: 2
Items:
- Item: aegis_101719
- Group: 3
Items:
- Item: aegis_101720
- Item: aegis_101728
Groups:
- Group: 0
Items:
- Item: aegis_101721
- Group: 1
Items:
- Item: aegis_101722
- Group: 2
Items:
- Item: aegis_101723
- Group: 3
Items:
- Item: aegis_101724
- Item: aegis_101729
Groups:
- Group: 0
Items:
- Item: aegis_101725
- Group: 1
Items:
- Item: aegis_101726

6894
db/re/item_reform.yml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -364,8 +364,8 @@ Body:
- Item: S_Gemstone_Shield_II
- Item: S_Bearer's_Armor_II
- Item: S_Bearer's_Shoes_II
- Item: S_Almighty_Earring
- Item: S_Almighty_Pendant
- Item: S_AllMighty_Earring
- Item: S_AllMighty_Pendant
- Item: S_Tempest_Shield
- Item: S_Tempest_Shoes
- Item: S_Magic_Executioner_Holy_Water_Armor
@@ -416,8 +416,8 @@ Body:
- Item: S_Magical_Armor
- Item: S_Immune_Athena_Shield
- Item: S_Hard_Champion_Shoes
- Item: S_Kingbird_Ancient_Armor
- Item: S_Cri_Hit_Armor
- Item: S_KingbirdAncient_Armor
- Item: S_CriticalHit_Armor
- Item: S_Rebellion_Armor
- Item: S_Kagerou_Armor
- Item: S_Oboro_Armor
@@ -1853,7 +1853,7 @@ Body:
- Item: Fan_Upgrade_Kit
RewardGroup: FAN_UPGRADE_KIT
Requirements:
- Item: Sea_Otter_Mini_Fan
- Item: SeeOtter_Fan
- Item: Suit_Upgrade_Kit
RewardGroup: SUIT_UPGRADE_KIT
Requirements:
@@ -3202,7 +3202,7 @@ Body:
RewardGroup: IRON_STAFF_CUBE
MinimumRefine: 9
Requirements:
- Item: Aeon_Staff
- Item: Iron_Staff
- Item: Blue_Crystal_Staff_Cube
RewardGroup: BLUE_CRYSTAL_STAFF_CUBE
MinimumRefine: 9
@@ -3696,8 +3696,8 @@ Body:
# - Item: S_Gemstone_Shield_II
# - Item: S_Bearer's_Armor_II
# - Item: S_Bearer's_Shoes_II
# - Item: S_Almighty_Earring
# - Item: S_Almighty_Pendant
# - Item: S_AllMighty_Earring
# - Item: S_AllMighty_Pendant
# - Item: S_Tempest_Shield
# - Item: S_Tempest_Shoes
# - Item: S_Magic_Executioner_Holy_Water_Armor
@@ -3748,8 +3748,8 @@ Body:
# - Item: S_Magical_Armor
# - Item: S_Immune_Athena_Shield
# - Item: S_Hard_Champion_Shoes
# - Item: S_Kingbird_Ancient_Armor
# - Item: S_Cri_Hit_Armor
# - Item: S_KingbirdAncient_Armor
# - Item: S_CriticalHit_Armor
# - Item: S_Rebellion_Armor
# - Item: S_Kagerou_Armor
# - Item: S_Oboro_Armor

View File

@@ -494,8 +494,8 @@ Body:
- Item: S_Gemstone_Shield_II
- Item: S_Bearer's_Armor_II
- Item: S_Bearer's_Shoes_II
- Item: S_Almighty_Earring
- Item: S_Almighty_Pendant
- Item: S_AllMighty_Earring
- Item: S_AllMighty_Pendant
- Item: S_All_Race_Shoes
- Item: S_All_Race_Shield
- Item: S_Blitz_Weapon
@@ -550,8 +550,8 @@ Body:
- Item: S_Magical_Armor
- Item: S_Immune_Athena_Shield
- Item: S_Hard_Champion_Shoes
- Item: S_Kingbird_Ancient_Armor
- Item: S_Cri_Hit_Armor
- Item: S_KingbirdAncient_Armor
- Item: S_CriticalHit_Armor
- Item: S_Thief_earring
- Item: S_Archer_earring
- Item: S_Rebellion_Armor
@@ -1226,8 +1226,8 @@ Body:
- Item: S_Gemstone_Shield_II
- Item: S_Bearer's_Armor_II
- Item: S_Bearer's_Shoes_II
- Item: S_Almighty_Earring
- Item: S_Almighty_Pendant
- Item: S_AllMighty_Earring
- Item: S_AllMighty_Pendant
- Item: S_All_Race_Shoes
- Item: S_All_Race_Shield
- Item: S_Blitz_Weapon
@@ -1282,8 +1282,8 @@ Body:
- Item: S_Magical_Armor
- Item: S_Immune_Athena_Shield
- Item: S_Hard_Champion_Shoes
- Item: S_Kingbird_Ancient_Armor
- Item: S_Cri_Hit_Armor
- Item: S_KingbirdAncient_Armor
- Item: S_CriticalHit_Armor
- Item: S_Tempest_Weapon
- Item: S_Tempest_Armor
- Item: S_PerfectSize_Weapon
@@ -2036,8 +2036,8 @@ Body:
- Item: S_Gemstone_Shield_II
- Item: S_Bearer's_Armor_II
- Item: S_Bearer's_Shoes_II
- Item: S_Almighty_Earring
- Item: S_Almighty_Pendant
- Item: S_AllMighty_Earring
- Item: S_AllMighty_Pendant
- Item: S_All_Race_Shoes
- Item: S_All_Race_Shield
- Item: S_Blitz_Weapon
@@ -2092,8 +2092,8 @@ Body:
- Item: S_Magical_Armor
- Item: S_Immune_Athena_Shield
- Item: S_Hard_Champion_Shoes
- Item: S_Kingbird_Ancient_Armor
- Item: S_Cri_Hit_Armor
- Item: S_KingbirdAncient_Armor
- Item: S_CriticalHit_Armor
- Item: S_Thief_earring
- Item: S_Archer_earring
- Item: S_Rebellion_Armor
@@ -2496,7 +2496,7 @@ Body:
- Item: Magic_Sword
- Item: Sword_Of_Bluefire
- Item: Avenger
- Item: Aeon_Staff
- Item: Iron_Staff
- Item: Oriental_Sword
- Item: Undine_Spear_K
- Item: Exoricists_Bible_
@@ -2554,12 +2554,12 @@ Body:
- Item: Up_Fog_Dew_Sword
- Item: Up_Humma_Clear
- Item: Up_Master_Soul_Rifle
- Item: Up_Golden_Lord_Launcher
- Item: Up_The_Black
- Item: Up_Demon_Slayer_Shot
- Item: Up_Golden_L_Launcher
- Item: Up_The_Black_Gatling
- Item: Up_Demon_S_Shot
- Item: Up_Crimson_Rose
- Item: Up_Thousand_Sun
- Item: Up_Spirit_Pendulum_
- Item: Up_OneSkyOneSun
- Item: Up_SoulWeight
- Item: Ancient_Hero_Wisdom
RandomOptionGroup: ANCIENT_HERO_WISDOM
TargetItems:
@@ -2570,7 +2570,7 @@ Body:
- Item: Magic_Sword
- Item: Sword_Of_Bluefire
- Item: Avenger
- Item: Aeon_Staff
- Item: Iron_Staff
- Item: Oriental_Sword
- Item: Undine_Spear_K
- Item: Exoricists_Bible_
@@ -2628,12 +2628,12 @@ Body:
- Item: Up_Fog_Dew_Sword
- Item: Up_Humma_Clear
- Item: Up_Master_Soul_Rifle
- Item: Up_Golden_Lord_Launcher
- Item: Up_The_Black
- Item: Up_Demon_Slayer_Shot
- Item: Up_Golden_L_Launcher
- Item: Up_The_Black_Gatling
- Item: Up_Demon_S_Shot
- Item: Up_Crimson_Rose
- Item: Up_Thousand_Sun
- Item: Up_Spirit_Pendulum_
- Item: Up_OneSkyOneSun
- Item: Up_SoulWeight
- Item: Boost_Up_1
ResultRefine: 10
MaximumRefine: 9
@@ -3881,7 +3881,7 @@ Body:
- Item: Magic_Sword
- Item: Sword_Of_Bluefire
- Item: Avenger
- Item: Aeon_Staff
- Item: Iron_Staff
- Item: Oriental_Sword
- Item: Undine_Spear_K
- Item: Exoricists_Bible_
@@ -4215,12 +4215,12 @@ Body:
# - Item: Up_Fog_Dew_Sword
# - Item: Up_Humma_Clear
# - Item: Up_Master_Soul_Rifle
# - Item: Up_Golden_Lord_Launcher
# - Item: Up_The_Black
# - Item: Up_Demon_Slayer_Shot
# - Item: Up_Golden_L_Launcher
# - Item: Up_The_Black_Gatling
# - Item: Up_Demon_S_Shot
# - Item: Up_Crimson_Rose
# - Item: Up_Thousand_Sun
# - Item: Up_Spirit_Pendulum_
# - Item: Up_OneSkyOneSun
# - Item: Up_SoulWeight
# - Item: Great_Hero_Wisdom
# TargetItems:
# - Item: Up_Oriental_Sword
@@ -4252,12 +4252,12 @@ Body:
# - Item: Up_Fog_Dew_Sword
# - Item: Up_Humma_Clear
# - Item: Up_Master_Soul_Rifle
# - Item: Up_Golden_Lord_Launcher
# - Item: Up_The_Black
# - Item: Up_Demon_Slayer_Shot
# - Item: Up_Golden_L_Launcher
# - Item: Up_The_Black_Gatling
# - Item: Up_Demon_S_Shot
# - Item: Up_Crimson_Rose
# - Item: Up_Thousand_Sun
# - Item: Up_Spirit_Pendulum_
# - Item: Up_OneSkyOneSun
# - Item: Up_SoulWeight
- Item: Vampire_Box_IL
ResultRefineMinimum: 7
ResultRefineMaximum: 10

44
db/re/map_drops.yml Normal file
View File

@@ -0,0 +1,44 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Map Drop Database
###########################################################################
#
# Map Drop Settings
#
###########################################################################
# - Map Name of the map.
# GlobalDrops Drops for all monsters on this map. (Default: empty)
# These drops are unaffected by server drop rate and cannot be stolen.
# - Index Unique index of the drop.
# Item Item name.
# Rate Drop rate of item.
# RandomOptionGroup Random Option Group applied to item on drop. (Default: None)
# SpecificDrops Drops for specific monsters on this map. (Default: empty)
# - Monster Monster name.
# Drops Drops for this specific monster. (Default: empty)
# These drops are unaffected by server drop rate and cannot be stolen.
# - Index Unique index of the drop.
# Item Item name.
# Rate Drop rate of item.
# RandomOptionGroup Random Option Group applied to item on drop. (Default: None)
###########################################################################
Header:
Type: MAP_DROP_DB
Version: 1

View File

@@ -75054,7 +75054,7 @@ Body:
DamageMotion: 420
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Decayed_Nail
Rate: 3000
@@ -75088,7 +75088,7 @@ Body:
DamageMotion: 384
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Mementos
Rate: 2500
@@ -75126,7 +75126,7 @@ Body:
Modes:
Detector: true
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Withered_Flower
Rate: 2500
@@ -75164,7 +75164,7 @@ Body:
Modes:
Detector: true
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Sticky_Mucus
Rate: 3000
@@ -75202,7 +75202,7 @@ Body:
Modes:
Detector: true
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Immortal_Heart
Rate: 2500
@@ -75236,7 +75236,7 @@ Body:
DamageMotion: 192
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Decayed_Nail
Rate: 3000
@@ -75270,7 +75270,7 @@ Body:
DamageMotion: 576
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Horrendous_Mouth
Rate: 3500
@@ -75306,7 +75306,7 @@ Body:
DamageMotion: 504
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Skel_Bone
Rate: 3500
@@ -75342,7 +75342,7 @@ Body:
DamageMotion: 396
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1000
- Item: Immortal_Heart
Rate: 2000
@@ -75378,7 +75378,7 @@ Body:
DamageMotion: 480
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1500
- Item: Realgar_Wine
Rate: 5000
@@ -75416,7 +75416,7 @@ Body:
Modes:
Detector: true
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 1500
- Item: Tendon
Rate: 2500
@@ -75452,9 +75452,9 @@ Body:
DamageMotion: 360
Ai: 04
Drops:
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 10000
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 10000
- Item: Evil_Horn
Rate: 2000
@@ -75516,9 +75516,9 @@ Body:
Drops:
- Item: Evil_Horn
Rate: 2000
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 10000
- Item: Shard_of_Gray
- Item: Gray_Shard
Rate: 10000
# - Id: 2962
# AegisName: E_DEVILING
@@ -76132,7 +76132,7 @@ Body:
Rate: 200
- Item: Fruit_Of_Mastela
Rate: 200
- Item: Morocc's_Minion_Card
- Item: MinionOfMorocc_Card
Rate: 1
StealProtected: true
- Id: 3000
@@ -77138,7 +77138,7 @@ Body:
Rate: 10000
- Item: Fruit_Of_Mastela
Rate: 200
- Item: Grim_Reaper_Ankou_Card
- Item: ReaperAnkou_Card
Rate: 1
StealProtected: true
# - Id: 3030
@@ -93927,52 +93927,521 @@ Body:
# AegisName: MD_AIRBOAT_BOSS3
# - Id: 21063
# AegisName: MD_AIRBOAT_BOSS4
# - Id: 21064
# AegisName: S_DUMMY_100_SMALL
# - Id: 21065
# AegisName: S_DUMMY_100_MEDIUM
# - Id: 21066
# AegisName: S_DUMMY_100_LARGE
# - Id: 21067
# AegisName: S_DUMMY_100_NOTHING
# - Id: 21068
# AegisName: S_DUMMY_100_DRAGON
# - Id: 21069
# AegisName: S_DUMMY_100_ANIMAL
# - Id: 21070
# AegisName: S_DUMMY_100_HUMAN
# - Id: 21071
# AegisName: S_DUMMY_100_INSECT
# - Id: 21072
# AegisName: S_DUMMY_100_FISH
# - Id: 21073
# AegisName: S_DUMMY_100_DEMON
# - Id: 21074
# AegisName: S_DUMMY_100_PLANT
# - Id: 21075
# AegisName: S_DUMMY_100_ANGEL
# - Id: 21076
# AegisName: S_DUMMY_100_UNDEAD
# - Id: 21077
# AegisName: S_DUMMY_100_NOTHING2
# - Id: 21078
# AegisName: S_DUMMY_100_WATER
# - Id: 21079
# AegisName: S_DUMMY_100_GROUND
# - Id: 21080
# AegisName: S_DUMMY_100_FIRE
# - Id: 21081
# AegisName: S_DUMMY_100_WIND
# - Id: 21082
# AegisName: S_DUMMY_100_POISON
# - Id: 21083
# AegisName: S_DUMMY_100_SAINT
# - Id: 21084
# AegisName: S_DUMMY_100_DARKNESS
# - Id: 21085
# AegisName: S_DUMMY_100_TELEKINESIS
# - Id: 21086
# AegisName: S_DUMMY_100_UNDEAD2
- Id: 21064
AegisName: S_DUMMY_100_SMALL
Name: Training Dummy (Small)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Small
Race: Formless
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21065
AegisName: S_DUMMY_100_MEDIUM
Name: Training Dummy (Medium)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21066
AegisName: S_DUMMY_100_LARGE
Name: Training Dummy (Large)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Large
Race: Formless
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21067
AegisName: S_DUMMY_100_NOTHING
Name: Training Dummy (Neutral)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21068
AegisName: S_DUMMY_100_DRAGON
Name: Training Dummy (Dragon)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Dragon
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21069
AegisName: S_DUMMY_100_ANIMAL
Name: Training Dummy (Brute)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Brute
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21070
AegisName: S_DUMMY_100_HUMAN
Name: Training Dummy (Human)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Demihuman
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21071
AegisName: S_DUMMY_100_INSECT
Name: Training Dummy (Insect)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Insect
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21072
AegisName: S_DUMMY_100_FISH
Name: Training Dummy (Fish)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Fish
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21073
AegisName: S_DUMMY_100_DEMON
Name: Training Dummy (Demon)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Demon
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21074
AegisName: S_DUMMY_100_PLANT
Name: Training Dummy (Plant)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Plant
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21075
AegisName: S_DUMMY_100_ANGEL
Name: Training Dummy (Angel)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Angel
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21076
AegisName: S_DUMMY_100_UNDEAD
Name: Training Dummy (Undead)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Undead
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21077
AegisName: S_DUMMY_100_NOTHING2
# Name: Training Dummy (Neutral Lv1)
Name: Dummy (Neutral Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Neutral
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 482
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21078
AegisName: S_DUMMY_100_WATER
# Name: Training Dummy (Water Lv1)
Name: Dummy (Water Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Water
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21079
AegisName: S_DUMMY_100_GROUND
# Name: Training Dummy (Earth Lv1)
Name: Dummy (Earth Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Earth
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21080
AegisName: S_DUMMY_100_FIRE
# Name: Training Dummy (Fire Lv1)
Name: Dummy (Fire Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Fire
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21081
AegisName: S_DUMMY_100_WIND
# Name: Training Dummy (Wind Lv1)
Name: Dummy (Wind Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Wind
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21082
AegisName: S_DUMMY_100_POISON
# Name: Training Dummy (Poison Lv1)
Name: Dummy (Poison Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Poison
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21083
AegisName: S_DUMMY_100_SAINT
# Name: Training Dummy (Holy Lv1)
Name: Dummy (Holy Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Holy
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21084
AegisName: S_DUMMY_100_DARKNESS
# Name: Training Dummy (Dark Lv1)
Name: Dummy (Dark Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Dark
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21085
AegisName: S_DUMMY_100_TELEKINESIS
# Name: Training Dummy (Ghost Lv1)
Name: Dummy (Ghost Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Ghost
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
- Id: 21086
AegisName: S_DUMMY_100_UNDEAD2
# Name: Training Dummy (Undead Lv1)
Name: Dummy (Undead Lv1)
Level: 100
Hp: 2000000000
Attack: 10
Attack2: 10
AttackRange: 1
SkillRange: 10
ChaseRange: 12
Size: Medium
Race: Formless
Element: Undead
ElementLevel: 1
WalkSpeed: 1000
AttackDelay: 1672
AttackMotion: 672
DamageMotion: 480
Class: Boss
Modes:
NoRandomWalk: true
TeleportBlock: true
# - Id: 21087
# AegisName: S_DUMMY_100_HUMANP
# - Id: 21088

View File

@@ -12736,3 +12736,51 @@
20836,ABR_MOTHER_NET@ABR_NET_SUPPORT,attack,8604,1,10000,500,5000,yes,self,always,0,,,,,,,
20837,ABR_INFINITY@ABR_INFINITY_BUSTER,chase,8605,1,10000,500,5000,yes,target,always,0,,,,,,,
20837,ABR_INFINITY@ABR_INFINITY_BUSTER,attack,8605,1,10000,500,5000,yes,target,always,0,,,,,,,
// Training Ground outside Prontera
21064,S_DUMMY_100_SMALL@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21064,S_DUMMY_100_SMALL@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21065,S_DUMMY_100_MEDIUM@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21065,S_DUMMY_100_MEDIUM@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21066,S_DUMMY_100_LARGE@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21066,S_DUMMY_100_LARGE@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21067,S_DUMMY_100_NOTHING@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21067,S_DUMMY_100_NOTHING@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21068,S_DUMMY_100_DRAGON@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21068,S_DUMMY_100_DRAGON@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21069,S_DUMMY_100_ANIMAL@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21069,S_DUMMY_100_ANIMAL@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21070,S_DUMMY_100_HUMAN@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21070,S_DUMMY_100_HUMAN@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21071,S_DUMMY_100_INSECT@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21071,S_DUMMY_100_INSECT@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21072,S_DUMMY_100_FISH@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21072,S_DUMMY_100_FISH@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21073,S_DUMMY_100_DEMON@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21073,S_DUMMY_100_DEMON@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21074,S_DUMMY_100_PLANT@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21074,S_DUMMY_100_PLANT@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21075,S_DUMMY_100_ANGEL@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21075,S_DUMMY_100_ANGEL@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21076,S_DUMMY_100_UNDEAD@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21076,S_DUMMY_100_UNDEAD@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21077,S_DUMMY_100_NOTHING2@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21077,S_DUMMY_100_NOTHING2@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21078,S_DUMMY_100_WATER@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21078,S_DUMMY_100_WATER@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21079,S_DUMMY_100_GROUND@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21079,S_DUMMY_100_GROUND@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21080,S_DUMMY_100_FIRE@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21080,S_DUMMY_100_FIRE@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21081,S_DUMMY_100_WIND@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21081,S_DUMMY_100_WIND@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21082,S_DUMMY_100_POISON@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21082,S_DUMMY_100_POISON@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21083,S_DUMMY_100_SAINT@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21083,S_DUMMY_100_SAINT@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21084,S_DUMMY_100_DARKNESS@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21084,S_DUMMY_100_DARKNESS@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21085,S_DUMMY_100_TELEKINESIS@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21085,S_DUMMY_100_TELEKINESIS@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21086,S_DUMMY_100_UNDEAD2@NPC_ALLHEAL,attack,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,
21086,S_DUMMY_100_UNDEAD2@NPC_ALLHEAL,idle,687,1,10000,0,500,no,self,myhpltmaxrate,90,,,,,,,

View File

@@ -877,9 +877,9 @@ Body:
.@i = getpetinfo(PETINFO_INTIMATE);
if (.@i >= PET_INTIMATE_LOYAL) {
autobonus "{ bonus2 bSubEle,Ele_Neutral,2; heal 100,0; }",100,5000,BF_SHORT|BF_NORMAL;
petautobonus "{ bonus2 bSubEle,Ele_Neutral,2; heal 100,0; }",100,5000,BF_SHORT|BF_NORMAL;
} else if (.@i >= PET_INTIMATE_CORDIAL) {
autobonus "{ bonus2 bSubEle,Ele_Neutral,2; heal 100,0; }",100,3000,BF_SHORT|BF_NORMAL;
petautobonus "{ bonus2 bSubEle,Ele_Neutral,2; heal 100,0; }",100,3000,BF_SHORT|BF_NORMAL;
}
- Mob: MEDUSA
TameItem: Splendid_Mirror
@@ -1511,15 +1511,15 @@ Body:
if (.@i >= PET_INTIMATE_LOYAL) {
bonus bCritical,6;
bonus bHit,6;
autobonus "{ bonus2 bHPRegenRate,500,1000; bonus2 bSPRegenRate,20,1000; }",30,5000,BF_WEAPON|BF_SHORT;
petautobonus "{ bonus2 bHPRegenRate,500,1000; bonus2 bSPRegenRate,20,1000; }",30,5000,BF_WEAPON|BF_SHORT;
} else if (.@i >= PET_INTIMATE_CORDIAL) {
bonus bCritical,5;
bonus bHit,5;
autobonus "{ bonus2 bHPRegenRate,400,1000; bonus2 bSPRegenRate,10,1000; }",30,5000,BF_WEAPON|BF_SHORT;
petautobonus "{ bonus2 bHPRegenRate,400,1000; bonus2 bSPRegenRate,10,1000; }",30,5000,BF_WEAPON|BF_SHORT;
} else if (.@i >= PET_INTIMATE_NEUTRAL) {
bonus bCritical,4;
bonus bHit,4;
autobonus "{ bonus2 bHPRegenRate,300,1000; }",20,5000,BF_WEAPON|BF_SHORT;
petautobonus "{ bonus2 bHPRegenRate,300,1000; }",20,5000,BF_WEAPON|BF_SHORT;
} else {
bonus bCritical,3;
bonus bHit,3;
@@ -1667,11 +1667,11 @@ Body:
if (.@i >= PET_INTIMATE_LOYAL) {
bonus bCritical,5;
bonus bHit,5;
autobonus "{ bonus2 bHPRegenRate,400,1000; }",20,5000,BF_WEAPON|BF_SHORT;
petautobonus "{ bonus2 bHPRegenRate,400,1000; }",20,5000,BF_WEAPON|BF_SHORT;
} else if (.@i >= PET_INTIMATE_CORDIAL) {
bonus bCritical,4;
bonus bHit,4;
autobonus "{ bonus2 bHPRegenRate,300,1000; }",20,5000,BF_WEAPON|BF_SHORT;
petautobonus "{ bonus2 bHPRegenRate,300,1000; }",20,5000,BF_WEAPON|BF_SHORT;
} else if (.@i >= PET_INTIMATE_NEUTRAL) {
bonus bCritical,3;
bonus bHit,3;
@@ -1780,10 +1780,10 @@ Body:
if (.@i >= PET_INTIMATE_LOYAL) {
bonus bMaxSP,150;
autobonus "{ bonus2 bSPRegenRate,40,1000; }",30,5000,BF_MAGIC;
petautobonus "{ bonus2 bSPRegenRate,40,1000; }",30,5000,BF_MAGIC;
} else if (.@i >= PET_INTIMATE_CORDIAL) {
bonus bMaxSP,150;
autobonus "{ bonus2 bSPRegenRate,30,1000; }",30,5000,BF_MAGIC;
petautobonus "{ bonus2 bSPRegenRate,30,1000; }",30,5000,BF_MAGIC;
} else if (.@i >= PET_INTIMATE_NEUTRAL) {
bonus bMaxSP,100;
} else {

56
db/re/reputation.yml Normal file
View File

@@ -0,0 +1,56 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Reputation Database
###########################################################################
#
# Reputation Settings
#
###########################################################################
# - Id Client side index.
# Name Name of the reputation type.
# Variable Name of the variable that will store the reputation. (Default: RepPoints<id>)
# Minimum Minimum amount of points. (Default: INT64_MIN)
# Maximum Maximum amount of points. (Default: INT64_MAX)
###########################################################################
Header:
Type: REPUTATION_DB
Version: 1
Body:
- Id: 1
Name: Orc Village
Variable: RepPointsOrc
Minimum: -3000
Maximum: 3000
- Id: 2
Name: Goblin Village
Variable: RepPointsGoblin
Minimum: -3000
Maximum: 3000
- Id: 3
Name: Grey Wolf Village
Variable: RepPointsWolf
Minimum: -5000
Maximum: 5000
- Id: 4
Name: Isgard
Variable: RepPointsIsgard
Minimum: -3000
Maximum: 3000

View File

@@ -37451,7 +37451,7 @@ Body:
CastCancel: true
AfterCastActDelay: 500
Duration1: 180000
Duration2: 30000
Duration2: 15000
Cooldown: 150000
FixedCastTime: 2000
Requires:

View File

@@ -80,6 +80,7 @@ Body:
DurationLookup: NPC_PETRIFYATTACK
States:
NoCast: true
NoAttack: true
Opt1: StoneWait
Flags:
SendOption: true
@@ -363,6 +364,8 @@ Body:
DurationLookup: AS_ENCHANTPOISON
CalcFlags:
Atk_Ele: true
Flags:
RemoveOnUnequipWeapon: true
End:
Aspersio: true
Fireweapon: true
@@ -532,7 +535,7 @@ Body:
FailedMado: true
NoSave: true
SuperNoviceAngel: true
Fail:
End:
Offertorium: true
- Status: Gloria
Icon: EFST_GLORIA
@@ -767,6 +770,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Stripshield
Icon: EFST_NOEQUIPSHIELD
DurationLookup: RG_STRIPSHIELD
@@ -778,6 +782,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Striparmor
Icon: EFST_NOEQUIPARMOR
DurationLookup: RG_STRIPARMOR
@@ -789,6 +794,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Striphelm
Icon: EFST_NOEQUIPHELM
DurationLookup: RG_STRIPHELM
@@ -800,6 +806,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Cp_Weapon
Icon: EFST_PROTECTWEAPON
DurationLookup: AM_CP_WEAPON
@@ -947,6 +954,7 @@ Body:
NoDispell: true
NoBanishingBuster: true
NoClearance: true
NoSave: true
- Status: Explosionspirits
Icon: EFST_EXPLOSIONSPIRITS
DurationLookup: MO_EXPLOSIONSPIRITS
@@ -958,6 +966,7 @@ Body:
Flags:
Debuff: true
NoClearance: true
NoSave: true
- Status: Combo
Flags:
NoClearbuff: true
@@ -994,7 +1003,7 @@ Body:
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1009,7 +1018,7 @@ Body:
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1024,7 +1033,7 @@ Body:
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1039,7 +1048,7 @@ Body:
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
RemoveOnUnequipWeapon: true
End:
Encpoison: true
Aspersio: true
@@ -1341,6 +1350,7 @@ Body:
Flags:
Debuff: true
NoClearance: true
NoSave: true
End:
Blessing: true
Increaseagi: true
@@ -2650,7 +2660,6 @@ Body:
- Status: Inchealrate
Icon: EFST_HEALPLUS
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
@@ -6050,27 +6059,16 @@ Body:
- Status: 2011rwc_Scroll
Icon: EFST_2011RWC_SCROLL
CalcFlags:
Str: true
Agi: true
Vit: true
Int: true
Dex: true
Luk: true
Batk: true
Matk: true
Aspd: true
MaxHp: true
MaxSp: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
End:
Food_Str_Cash: true
Food_Agi_Cash: true
Food_Vit_Cash: true
Food_Int_Cash: true
Food_Dex_Cash: true
Food_Luk_Cash: true
- Status: Jp_Event04
Icon: EFST_JP_EVENT04
Flags:
@@ -8166,3 +8164,239 @@ Body:
NoClearbuff: true
End:
Sub_Weaponproperty: true
- Status: Almighty
Icon: EFST_ALMIGHTY
CalcFlags:
Str: true
Agi: true
Vit: true
Int: true
Dex: true
Luk: true
Batk: true
Matk: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
End:
Food_Str_Cash: true
Food_Agi_Cash: true
Food_Vit_Cash: true
Food_Int_Cash: true
Food_Dex_Cash: true
Food_Luk_Cash: true
UltimateCook: true
- Status: UltimateCook
Icon: EFST_ULTIMATECOOK
CalcFlags:
Str: true
Agi: true
Vit: true
Int: true
Dex: true
Luk: true
Batk: true
Matk: true
Flags:
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
End:
Food_Str_Cash: true
Food_Agi_Cash: true
Food_Vit_Cash: true
Food_Int_Cash: true
Food_Dex_Cash: true
Food_Luk_Cash: true
Almighty: true
- Status: M_DefScroll
Icon: EFST_M_DEFSCROLL
CalcFlags:
Def: true
Mdef: true
Flags:
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Infinity_Drink
Icon: EFST_INFINITY_DRINK
CalcFlags:
All: true
Flags:
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Mental_Potion
Icon: EFST_TARGET_ASPD
CalcFlags:
All: true
Flags:
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Limit_Power_Booster
Icon: EFST_LIMIT_POWER_BOOSTER
CalcFlags:
All: true
Flags:
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Combat_Pill
Icon: EFST_GM_BATTLE
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Combat_Pill2
Icon: EFST_GM_BATTLE2
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: MysticPowder
Icon: EFST_MYSTICPOWDER
CalcFlags:
Luk: true
Flee: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: SparkCandy
Icon: EFST_STEAMPACK
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: MagicCandy
Icon: EFST_MAGIC_CANDY
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Acaraje
Icon: EFST_ACARAJE
CalcFlags:
Hit: true
Aspd: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: PopeCookie
Icon: EFST_POPECOOKIE
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Vitalize_Potion
Icon: EFST_VITALIZE_POTION
CalcFlags:
All: true
Flags:
NoClearbuff: true
NoBanishingBuster: true
NoClearance: true
- Status: Cup_Of_Boza
Icon: EFST_CUP_OF_BOZA
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: SKF_MATK
Icon: EFST_SKF_MATK
CalcFlags:
Matk: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: SKF_ATK
Icon: EFST_SKF_ATK
CalcFlags:
Batk: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: SKF_ASPD
Icon: EFST_SKF_ASPD
CalcFlags:
Aspd: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: SKF_CAST
Icon: EFST_SKF_CAST
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Beef_Rib_Stew
Icon: EFST_BEEF_RIB_STEW
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true
- Status: Pork_Rib_Stew
Icon: EFST_PORK_RIB_STEW
CalcFlags:
All: true
Flags:
NoRemoveOnDead: true
NoClearbuff: true
NoDispell: true
NoBanishingBuster: true
NoClearance: true

40
db/reputation.yml Normal file
View File

@@ -0,0 +1,40 @@
# This file is a part of rAthena.
# Copyright(C) 2022 rAthena Development Team
# https://rathena.org - https://github.com/rathena
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###########################################################################
# Reputation Database
###########################################################################
#
# Reputation Settings
#
###########################################################################
# - Id Client side index.
# Name Name of the reputation type.
# Variable Name of the variable that will store the reputation. (Default: RepPoints<id>)
# Minimum Minimum amount of points. (Default: INT64_MIN)
# Maximum Maximum amount of points. (Default: INT64_MAX)
###########################################################################
Header:
Type: REPUTATION_DB
Version: 1
Footer:
Imports:
- Path: db/re/reputation.yml
Mode: Renewal
- Path: db/import/reputation.yml

View File

@@ -729,6 +729,23 @@ Refines an equipped item by the specified amount.
---------------------------------------
@grade <equip position> <+/- amount>
Enchantgrade an equipped item by the specified amount.
0: All Equipment
1: Lower Headgear
2: Right Hand
4: Garment
8: Left Accessory
16: Body Armor
32: Left Hand
64: Shoes
128: Right Accessory
256: Top Headgear
512: Mid Headgear
---------------------------------------
@repairall
Repairs all broken items in your inventory.

View File

@@ -219,6 +219,10 @@ Refineable: Defines if the item can be refined.
---------------------------------------
Gradable: Defines if the item can be graded.
---------------------------------------
View: For normal items, defines a replacement view-sprite for the item.
---------------------------------------

View File

@@ -978,6 +978,11 @@ Only the special labels which are not associated with any script command are
listed here. There are other kinds of labels which may be triggered in a similar
manner, but they are described with their associated commands.
OnNaviGenerate:
This special label triggers when running the map-server-generator binary. It is used
in combination with 'naviregisterwarp' to register extra warps for an npc.
On<label name>:
These special labels are used with Mob scripts mostly, and script commands
@@ -3578,14 +3583,15 @@ This command does not count skills which are set as flag 4 (permament granted) (
---------------------------------------
*getmonsterinfo(<mob ID>,<type>)
*getmonsterinfo(<mob name>,<type>)
This function will look up the monster with the specified ID number in the
mob database and return the info set by TYPE argument.
This function will look up the monster with the specified <mob ID> or <mob name> in the
mob database and return the info set by <type> argument.
It will return -1 if there is no such monster (or the type value is invalid),
or "null" if you requested the monster's name.
Valid types are:
MOB_NAME - monster's name, if there is no such monster "null" is returned
MOB_NAME - monster's japanese name, if there is no such monster "null" is returned
MOB_LV - monster's level
MOB_MAXHP - monster's maximum hp
MOB_BASEEXP - monster's base experience
@@ -3610,6 +3616,7 @@ Valid types are:
MOB_ELEMENT - monster's element(doesn't return the element level, only the element ID)
MOB_MODE - monster's mode
MOB_MVPEXP - monster's mvp experience
MOB_ID - monster's ID
For more details, see the sample in 'doc/sample/getmonsterinfo.txt'.
@@ -4748,6 +4755,8 @@ quite a few item scripts. For more examples check just about any official script
*getitem2 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>};
*getitem3 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*getitem3 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*getitem4 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*getitem4 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
This command will give an amount of specified items to the invoking character.
If an optional account ID is specified, and the target character is currently
@@ -4838,6 +4847,14 @@ this really cause.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'getitem4' is advance version of 'getitem3' that also use the grade as additional values.
Valid grades are:
ENCHANTGRADE_NONE - No grade
ENCHANTGRADE_D - Grade D
ENCHANTGRADE_C - Grade C
ENCHANTGRADE_B - Grade B
ENCHANTGRADE_A - Grade A
Example to get Crimson Weapon with Ghost property:
// +9 Crimson Dagger [2]
setarray .@OptID[0],RDMOPT_WEAPON_ATTR_TELEKINESIS;
@@ -4867,6 +4884,8 @@ Valid bound types are:
*getitembound2 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>{,<account ID>};
*getitembound3 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*getitembound3 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*getitembound4 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*getitembound4 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
This command behaves identically to 'getitem2', but the items created will be
bound to the target character as specified by the bound type. All items created
@@ -4880,6 +4899,14 @@ For a list of bound types see 'getitembound'.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'getitembound4' is advance version of 'getitembound3' that also use the grade as additional values.
Valid grades are:
ENCHANTGRADE_NONE - No grade
ENCHANTGRADE_D - Grade D
ENCHANTGRADE_C - Grade C
ENCHANTGRADE_B - Grade B
ENCHANTGRADE_A - Grade A
Example to get Crimson Weapon with Ghost property:
// +9 Crimson Dagger [2]
setarray .@OptID[0],RDMOPT_WEAPON_ATTR_TELEKINESIS;
@@ -4935,6 +4962,8 @@ Note: 'countitem' will not count any item with a rental timer. Use 'rentalcounti
*rentitem2 "<item name>",<time>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account_id>};
*rentitem3 <item id>,<time>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account_id>};
*rentitem3 "<item name>",<time>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account_id>};
*rentitem4 <item id>,<time>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account_id>};
*rentitem4 "<item name>",<time>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account_id>};
Creates a rental item in the attached character's inventory. The item will expire
in <time> seconds and be automatically deleted. See 'rentitem' for further details.
@@ -4946,6 +4975,14 @@ See 'getitem2' for an explanation of the expanded parameters.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'rentitem4' is advance version of 'rentitem3' that also use the grade as additional values.
Valid grades are:
ENCHANTGRADE_NONE - No grade
ENCHANTGRADE_D - Grade D
ENCHANTGRADE_C - Grade C
ENCHANTGRADE_B - Grade B
ENCHANTGRADE_A - Grade A
Example to get Crimson Weapon with Ghost property:
// +9 Crimson Dagger [2]
setarray .@OptID[0],RDMOPT_WEAPON_ATTR_TELEKINESIS;
@@ -4975,6 +5012,8 @@ If <canShowEffect> flag is set to true, it will show a pillar effect on the grou
*makeitem2 "<item name>",<amount>,"<map name>",<X>,<Y>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<canShowEffect>};
*makeitem3 <item id>,<amount>,"<map name>",<X>,<Y>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<canShowEffect>};
*makeitem3 "<item name>",<amount>,"<map name>",<X>,<Y>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<canShowEffect>};
*makeitem4 <item id>,<amount>,"<map name>",<X>,<Y>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<canShowEffect>};
*makeitem4 "<item name>",<amount>,"<map name>",<X>,<Y>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<canShowEffect>};
This command will create an item on the specified cell of a map. See 'makeitem' for
further details.
@@ -4986,6 +5025,14 @@ See 'getitem2' for an explanation of the expanded parameters.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'makeitem4' is advance version of 'makeitem3' that also use the grade as additional values.
Valid grades are:
ENCHANTGRADE_NONE - No grade
ENCHANTGRADE_D - Grade D
ENCHANTGRADE_C - Grade C
ENCHANTGRADE_B - Grade B
ENCHANTGRADE_A - Grade A
Example to get Crimson Weapon with Ghost property:
// 0.5% chance to get +0 Valkyrie Shield [1]
// with Neutral Resistance +10% and 5% damage reduction from Demi-Human or Player
@@ -5063,6 +5110,8 @@ If player is not in a guild or storage is open, 'guildstoragedelitem' will retur
*delitem2 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>};
*delitem3 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*delitem3 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*delitem4 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
*delitem4 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
This command will remove a specified amount of items from the invoking/target character.
See 'getitem2' for an explanation of the expanded parameters.
@@ -5072,6 +5121,8 @@ See 'getitem2' for an explanation of the expanded parameters.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'delitem4' is advance version of 'delitem3' that also use the grade as criteria.
---------------------------------------
*delitemidx <index>{,<amount>{,<char id>}}
@@ -5154,6 +5205,8 @@ If player is not in a guild or storage is open, 'guildstoragecountitem' will ret
*countitem2("<item name>",<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<accountID>})
*countitem3(<item id>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
*countitem3("<item name>",<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
*countitem4(<item id>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
*countitem4("<item name>",<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
Expanded version of 'countitem' function, used for created/carded/forged items.
@@ -5166,6 +5219,8 @@ See 'getitem2' for an explanation of the expanded parameters.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'countitem4' is advance version of 'countitem3' that also use the grade as criteria.
---------------------------------------
*cartcountitem2(<item id>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<accountID>})
@@ -5195,6 +5250,8 @@ invoking character has in the inventory.
*rentalcountitem2("<item name>",<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<accountID>})
*rentalcountitem3(<item id>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
*rentalcountitem3("<item name>",<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
*rentalcountitem4(<item id>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
*rentalcountitem4("<item name>",<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<grade>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<accountID>})
Expanded version of 'rentalcountitem' function, used for created/carded/forged items.
@@ -5207,6 +5264,8 @@ See 'getitem2' for an explanation of the expanded parameters.
<RandomValueArray> : Array variable of item random option's value.
<RandomParamArray> : Array variable of item random option's param.
'rentalcountitem4' is advance version of 'rentalcountitem3' that also use the grade as criteria.
---------------------------------------
*countbound({<bound type>{,<char_id>}})
@@ -6117,9 +6176,7 @@ kind in 'doc/item_bonus.txt'.
*autobonus3 <bonus script>,<rate>,<duration>,<skill id>,{<other script>};
*autobonus3 <bonus script>,<rate>,<duration>,"<skill name>",{<other script>};
These commands are meant to be used in item scripts. They will probably work
outside item scripts, but the bonus will not persist for long. They, as
expected, refer only to an invoking character.
These commands are meant to be used in item scripts only! See 'petautobonus' for pet usage.
What these commands do is 'attach' a script to the player which will get
executed on attack (or when attacked in the case of autobonus2).
@@ -6473,12 +6530,14 @@ Examples:
---------------------------------------
*monster "<map name>",<x>,<y>,"<name to show>",<mob id>,<amount>{,"<event label>",<size>,<ai>};
*monster "<map name>",<x>,<y>,"<name to show>","<mob name>",<amount>{,"<event label>",<size>,<ai>};
*areamonster "<map name>",<x1>,<y1>,<x2>,<y2>,"<name to show>",<mob id>,<amount>{,"<event label>",<size>,<ai>};
*areamonster "<map name>",<x1>,<y1>,<x2>,<y2>,"<name to show>","<mob name>",<amount>{,"<event label>",<size>,<ai>};
This command will spawn a monster on the specified coordinates on the specified
map. If the script is invoked by a character, a special map name, "this", will
be recognized to mean the name of the map the invoking character is located at.
This command works fine in the item scripts.
This command will spawn <amount> monsters with <mob id> or <mob name> on the specified
coordinates on the specified map. If the script is invoked by a character, a special
<map name>, "this", will be recognized to mean the name of the map the invoking character
is located at. This command works fine in item scripts.
The same command arguments mean the same things as described above in the
beginning of this document when talking about permanent monster spawns. Monsters
@@ -6557,11 +6616,13 @@ For more good examples see just about any official 2-1 or 2-2 job quest script.
*areamobuseskill "<map name>",<x>,<y>,<range>,<mob id>,<skill id>,<skill level>,<cast time>,<cancelable>,<emotion>,<target type>;
*areamobuseskill "<map name>",<x>,<y>,<range>,<mob id>,"<skill name>",<skill level>,<cast time>,<cancelable>,<emotion>,<target type>;
*areamobuseskill "<map name>",<x>,<y>,<range>,"<mob name>",<skill id>,<skill level>,<cast time>,<cancelable>,<emotion>,<target type>;
*areamobuseskill "<map name>",<x>,<y>,<range>,"<mob name>","<skill name>",<skill level>,<cast time>,<cancelable>,<emotion>,<target type>;
This command will make all monsters of the specified mob ID in the specified
area use the specified skill. Map name, x, and y define the center of the area,
This command will make all monsters of the specified <mob id> or <mob name> in the specified
area use the specified skill. <map name>, <x>, and <y> define the center of the area,
which extending <range> cells in each direction (ex: a range of 3 would create
a 7x7 square). The skill can be specified by skill ID or name. <cast time> is in
a 7x7 square). The skill can be specified by <skill id> or <skill name>. <cast time> is in
milliseconds (1000 = 1 second), and the rest should be self-explanatory.
<target type> can be:
@@ -8140,14 +8201,14 @@ This feature requires packet version 2015-11-04 or newer.
---------------------------------------
*laphine_synthesis()
*laphine_synthesis({<item id>})
*laphine_synthesis({<"item name">})
Opens the laphine synthesis UI for the attached player.
Opens the laphine synthesis UI for <item ID> or <item name> for the attached player.
If run from within an item script <item ID> or <item name> is optional.
This feature requires packet version 2016-06-01 or newer.
This function is intended for use in item scripts.
---------------------------------------
*laphine_upgrade()
@@ -8174,6 +8235,40 @@ Opens the enchantgrade UI for the attached character or the player given by the
This command requires packet version 2020-07-24 or newer.
---------------------------------------
*set_reputation_points(<type>,<points>{,<char id>})
Sets the reputation points via <points> for reputation group <type> for the attached player or the given character ID.
<type> is the client side index as stored in the Id field of the reputation.yml database files.
---------------------------------------
*get_reputation_points(<type>{,<char id>})
Gets the reputation points for reputation group <type> for the attached player or the given character ID.
<type> is the client side index as stored in the Id field of the reputation.yml database files.
---------------------------------------
*item_reform({<item id>{,<char id>}})
*item_reform({<"item name">{,<char id>}})
Opens the item reform UI for <item ID> or <item name> for the attached player or the given character ID.
If run from within an item script <item ID> or <item name> is optional.
This feature requires packet version 2021-11-03 or newer.
---------------------------------------
*item_enchant(<client side LUA index>{,<char ID>});
Opens the enchant UI for the attached character or the player given by the <char ID> parameter.
If the player exceeds 70% weight the client will not open the enchant UI and will trigger an
error message instead.
This command requires packet version 2021-11-03 or newer.
---------------------------------------
\\
6,1.- Unit-related commands
@@ -9370,6 +9465,20 @@ with the given character id.
---------------------------------------
*naviregisterwarp("<Name of Link>", "<dest_map>", <dest_x>, <dest_y>)
Only useful when using the map-server-generator. Registers an extra warp from this
npc to the destination map/x/y for the generated client files.
---------------------------------------
*navihide
Only useful when using the map-server-generator. Hides this npc and all links from
this npc in the navigation generation.
---------------------------------------
========================
|7.- Instance commands.|
========================
@@ -10202,6 +10311,15 @@ Value of 'rate' is between 1 and 100. 100 = 100%
---------------------------------------
*petautobonus <bonus script>,<rate>,<duration>{,<flag>,{<other script>}};
*petautobonus2 <bonus script>,<rate>,<duration>{,<flag>,{<other script>}};
*petautobonus3 <bonus script>,<rate>,<duration>,<skill id>,{<other script>};
*petautobonus3 <bonus script>,<rate>,<duration>,"<skill name>",{<other script>};
See 'autobonus' for more details.
---------------------------------------
===========================
|11.- Homunculus commands.|
===========================

View File

@@ -27,6 +27,7 @@
# EquipLevelMin Minimum required level to equip. (Default: 0)
# EquipLevelMax Maximum level that can equip. (Default: 0)
# Refineable If the item can be refined. (Default: false)
# Gradable If the item can be graded. (Default: false)
# View View sprite of an item. (Default: 0)
# AliasName Another item's AegisName that will be sent to the client instead of this item's AegisName. (Default: null)
# Flags: Item flags. (Default: null)

View File

@@ -80,6 +80,7 @@ CREATE TABLE `item_db2_re` (
`equip_level_min` tinyint(3) unsigned DEFAULT NULL,
`equip_level_max` tinyint(3) unsigned DEFAULT NULL,
`refineable` tinyint(1) unsigned DEFAULT NULL,
`gradable` tinyint(1) unsigned DEFAULT NULL,
`view` smallint(5) unsigned DEFAULT NULL,
`alias_name` varchar(50) DEFAULT NULL,
`flag_buyingstore` tinyint(1) unsigned DEFAULT NULL,

View File

@@ -80,6 +80,7 @@ CREATE TABLE `item_db_re` (
`equip_level_min` tinyint(3) unsigned DEFAULT NULL,
`equip_level_max` tinyint(3) unsigned DEFAULT NULL,
`refineable` tinyint(1) unsigned DEFAULT NULL,
`gradable` tinyint(1) unsigned DEFAULT NULL,
`view` smallint(5) unsigned DEFAULT NULL,
`alias_name` varchar(50) DEFAULT NULL,
`flag_buyingstore` tinyint(1) unsigned DEFAULT NULL,

View File

@@ -1,12 +1,13 @@
L_SRV=login-server
C_SRV=char-server
M_SRV=map-server
W_SRV=web-server
INST_PATH=/opt
PKG=rathena
PKG_PATH=$INST_PATH/$PKG
check_files() {
for i in ${L_SRV} ${C_SRV} ${M_SRV}
for i in ${L_SRV} ${C_SRV} ${M_SRV} ${W_SRV}
do
if [ ! -f ./$i ]; then
echo "$i does not exist... exiting..."

View File

@@ -526,6 +526,707 @@ S9: Restrict("RE");
Go("paramk",97,17);
S10: Go("turbo_room",99,114);
OnNaviGenerate:
// for non-prontera warpers, just give it warp to prontera
// this cuts down the number of links considerably
if (strnpcinfo(4) != "prontera") {
naviregisterwarp("Warper > Prontera", "prontera", 155, 183);
end;
}
naviregisterwarp("Warper > Prontera", "prontera", 155, 183);
naviregisterwarp("Warper > Alberta", "alberta", 28, 234);
naviregisterwarp("Warper > Al De Baran", "aldebaran", 140, 131);
naviregisterwarp("Warper > Amatsu", "amatsu", 198, 84);
naviregisterwarp("Warper > Ayothaya", "ayothaya", 208, 166);
naviregisterwarp("Warper > Einbech", "einbech",63,35);
naviregisterwarp("Warper > Einbroch", "einbroch",64,200);
naviregisterwarp("Warper > Geffen", "geffen",119,59);
naviregisterwarp("Warper > Hugel", "hugel",96,145);
naviregisterwarp("Warper > Izlude", "izlude",128,(checkre(3)?146:114));
naviregisterwarp("Warper > Jawaii", "jawaii",251,132);
naviregisterwarp("Warper > Juno", "yuno",157,51);
naviregisterwarp("Warper > Kunlun", "gonryun",160,120);
naviregisterwarp("Warper > Lighthalzen", "lighthalzen",158,92);
naviregisterwarp("Warper > Luoyang", "louyang",217,100);
naviregisterwarp("Warper > Lutie", "xmas",147,134);
naviregisterwarp("Warper > Manuk", "manuk",282,138);
naviregisterwarp("Warper > Midgarts Expedition Camp", "mid_camp",210,288);
naviregisterwarp("Warper > Morocc", "morocc",156,93);
naviregisterwarp("Warper > Moscovia", "moscovia",223,184);
naviregisterwarp("Warper > Nameless Island", "nameless_n",256,215);
naviregisterwarp("Warper > Niflheim", "niflheim",202,174);
naviregisterwarp("Warper > Payon", "payon",179,100);
naviregisterwarp("Warper > Rachel", "rachel",130,110);
naviregisterwarp("Warper > Splendide", "splendide",201,147);
naviregisterwarp("Warper > Thor Camp", "thor_camp",246,68);
naviregisterwarp("Warper > Umbala", "umbala",97,153);
naviregisterwarp("Warper > Veins", "veins",216,123);
if (checkre(0)) {
naviregisterwarp("Warper > Brasilis", "brasilis", 196, 217);
naviregisterwarp("Warper > Dewata", "dewata",200,180);
naviregisterwarp("Warper > Eclage", "ecl_in01",48,53);
naviregisterwarp("Warper > El Dicastes", "dicastes01",198,187);
naviregisterwarp("Warper > Lasagna", "lasagna",193,182);
naviregisterwarp("Warper > Malangdo", "malangdo",140,114);
naviregisterwarp("Warper > Malaya", "malaya",231,200);
naviregisterwarp("Warper > Mora", "mora",55,146);
}
// fields
naviregisterwarp("Warper > Amatsu Field", "ama_fild01", 190, 197);
naviregisterwarp("Warper > Ayothaya Field", "ayo_fild01", 173, 134);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Ayothaya Field", "ayo_fild02", 212, 150);
}
if (checkre(0)) {
naviregisterwarp("Warper > Bifrost Field", "bif_fild01", 193, 220);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Bifrost Field", "bif_fild02", 220, 187);
}
naviregisterwarp("Warper > Brasilis Field", "bra_fild01", 74, 32);
}
naviregisterwarp("Warper > Comodo Field", "cmd_fild01", 180, 178);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Comodo Field", "cmd_fild02", 231, 160);
naviregisterwarp("Warper > Comodo Field", "cmd_fild03", 191, 172);
naviregisterwarp("Warper > Comodo Field", "cmd_fild04", 228, 194);
if (!checkre(0)) {
naviregisterwarp("Warper > Comodo Field", "cmd_fild05", 224, 203);
}
naviregisterwarp("Warper > Comodo Field", "cmd_fild06", 190, 223);
naviregisterwarp("Warper > Comodo Field", "cmd_fild07", 234, 177);
naviregisterwarp("Warper > Comodo Field", "cmd_fild08", 194, 175);
naviregisterwarp("Warper > Comodo Field", "cmd_fild09", 172, 172);
}
if (checkre(0)) {
naviregisterwarp("Warper > Dewata Field", "dew_fild01", 371, 212);
naviregisterwarp("Warper > Eclage Field", "ecl_fild01", 97, 314);
}
naviregisterwarp("Warper > Einbroch Field", "ein_fild01", 142, 225);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Einbroch Field", "ein_fild03", 187, 228);
naviregisterwarp("Warper > Einbroch Field", "ein_fild04", 185, 173);
naviregisterwarp("Warper > Einbroch Field", "ein_fild05", 216, 173);
naviregisterwarp("Warper > Einbroch Field", "ein_fild06", 195, 148);
naviregisterwarp("Warper > Einbroch Field", "ein_fild07", 272, 220);
naviregisterwarp("Warper > Einbroch Field", "ein_fild08", 173, 214);
naviregisterwarp("Warper > Einbroch Field", "ein_fild09", 207, 174);
if (!checkre(0)) {
naviregisterwarp("Warper > Einbroch Field", "ein_fild02", 182, 141);
naviregisterwarp("Warper > Einbroch Field", "ein_fild10", 196, 200);
}
}
if (checkre(0)) {
naviregisterwarp("Warper > El Dicastes Field", "dic_fild01", 143, 132);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > El Dicastes Field", "dic_fild02", 143, 217);
}
}
naviregisterwarp("Warper > Geffen Field 0", "gef_fild00", 46, 199);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Geffen Field 1", "gef_fild01", 213, 204);
naviregisterwarp("Warper > Geffen Field 2", "gef_fild02", 195, 212);
naviregisterwarp("Warper > Geffen Field 3", "gef_fild03", 257, 192);
naviregisterwarp("Warper > Geffen Field 4", "gef_fild04", 188, 171);
naviregisterwarp("Warper > Geffen Field 5", "gef_fild05", 166, 263);
naviregisterwarp("Warper > Geffen Field 6", "gef_fild06", 248, 158);
naviregisterwarp("Warper > Geffen Field 7", "gef_fild07", 195, 191);
naviregisterwarp("Warper > Geffen Field 8", "gef_fild08", 186, 183);
naviregisterwarp("Warper > Geffen Field 9", "gef_fild09", 221, 117);
naviregisterwarp("Warper > Geffen Field 10", "gef_fild10", 178, 218);
naviregisterwarp("Warper > Geffen Field 11", "gef_fild11", 136, 328);
naviregisterwarp("Warper > Geffen Field 13", "gef_fild13", 235, 235);
if (checkre(0)) {
naviregisterwarp("Warper > Geffen Field 12", "gef_fild12", 240, 181);
naviregisterwarp("Warper > Geffen Field 14", "gef_fild14", 211, 185);
}
}
naviregisterwarp("Warper > Kunlun Field 1", "gon_fild01", 220, 227);
naviregisterwarp("Warper > Hugel Field 1", "hu_fild01", 268, 101);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Hugel Field 2", "hu_fild02", 222, 193);
naviregisterwarp("Warper > Hugel Field 4", "hu_fild04", 252, 189);
naviregisterwarp("Warper > Hugel Field 5", "hu_fild05", 196, 106);
naviregisterwarp("Warper > Hugel Field 6", "hu_fild06", 216, 220);
if (!checkre(0)) {
naviregisterwarp("Warper > Hugel Field 3", "hu_fild03", 232, 185);
naviregisterwarp("Warper > Hugel Field 7", "hu_fild07", 227, 197);
}
}
if (checkre(0)) {
naviregisterwarp("Warper > Lasagna Field 1", "lasa_fild01", 344, 371);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Lasagna Field 2", "lasa_fild02", 20, 98);
}
}
naviregisterwarp("Warper > Lighthalzen Field 1", "lhz_fild01", 240, 179);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Lighthalzen Field 2", "lhz_fild02", 185, 235);
naviregisterwarp("Warper > Lighthalzen Field 3", "lhz_fild03", 240, 226);
}
naviregisterwarp("Warper > Luoyang Field 1", "lou_fild01", 229, 187);
naviregisterwarp("Warper > Lutie Field 1", "xmas_fild01", 115, 145);
if (checkre(0)) {
naviregisterwarp("Warper > Malaya Field 1", "ma_fild01", 40, 272);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Malaya Field 2", "ma_fild02", 207, 180);
}
}
naviregisterwarp("Warper > Manuk Field 1", "man_fild01", 35, 236);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Manuk Field 2", "man_fild02", 35, 262);
naviregisterwarp("Warper > Manuk Field 3", "man_fild03", 84, 365);
}
naviregisterwarp("Warper > Mjolnir Field 1", "mjolnir_01", 204, 120);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Mjolnir Field 2", "mjolnir_02", 175, 193);
naviregisterwarp("Warper > Mjolnir Field 3", "mjolnir_03", 208, 213);
naviregisterwarp("Warper > Mjolnir Field 4", "mjolnir_04", 179, 180);
naviregisterwarp("Warper > Mjolnir Field 5", "mjolnir_05", 181, 240);
naviregisterwarp("Warper > Mjolnir Field 6", "mjolnir_06", 195, 270);
naviregisterwarp("Warper > Mjolnir Field 7", "mjolnir_07", 235, 202);
naviregisterwarp("Warper > Mjolnir Field 8", "mjolnir_08", 188, 215);
naviregisterwarp("Warper > Mjolnir Field 9", "mjolnir_09", 205, 144);
naviregisterwarp("Warper > Mjolnir Field 10", "mjolnir_10", 245, 223);
naviregisterwarp("Warper > Mjolnir Field 11", "mjolnir_11", 180, 206);
naviregisterwarp("Warper > Mjolnir Field 12", "mjolnir_12", 196, 208);
}
naviregisterwarp("Warper > Moscovia Field 1", "mosk_fild01", 82, 104);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Moscovia Field 2", "mosk_fild02", 131, 147);
}
naviregisterwarp("Warper > Niflheim Field 1", "nif_fild01", 215, 229);
if (!.OnlyFirstFld) {
naviregisterwarp("Warer > Niflheim Field 2", "nif_fild02", 167, 234);
}
naviregisterwarp("Warper > Payon Forest 1", "pay_fild01", 158, 206);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Payon Forest 2", "pay_fild02", 151, 219);
naviregisterwarp("Warper > Payon Forest 3", "pay_fild03", 205, 148);
naviregisterwarp("Warper > Payon Forest 4", "pay_fild04", 186, 247);
naviregisterwarp("Warper > Payon Forest 6", "pay_fild06", 193, 235);
naviregisterwarp("Warper > Payon Forest 7", "pay_fild07", 200, 177);
naviregisterwarp("Warper > Payon Forest 8", "pay_fild08", 137, 189);
naviregisterwarp("Warper > Payon Forest 9", "pay_fild09", 201, 224);
naviregisterwarp("Warper > Payon Forest 10", "pay_fild10", 160, 205);
if (!checkre(0)) {
naviregisterwarp("Warper > Payon Forest 5", "pay_fild05", 134, 204);
naviregisterwarp("Warper > Payon Forest 11", "pay_fild11", 194, 150);
}
}
naviregisterwarp("Warper > Prontera Field 0", "prt_fild00", 208, 227);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Prontera Field 1", "prt_fild01", 190, 206);
naviregisterwarp("Warper > Prontera Field 2", "prt_fild02", 240, 206);
naviregisterwarp("Warper > Prontera Field 3", "prt_fild03", 190, 143);
naviregisterwarp("Warper > Prontera Field 4", "prt_fild04", 307, 252);
naviregisterwarp("Warper > Prontera Field 5", "prt_fild05", 239, 213);
naviregisterwarp("Warper > Prontera Field 6", "prt_fild06", 185, 188);
naviregisterwarp("Warper > Prontera Field 7", "prt_fild07", 193, 194);
naviregisterwarp("Warper > Prontera Field 8", "prt_fild08", 187, 218);
naviregisterwarp("Warper > Prontera Field 9", "prt_fild09", 210, 183);
naviregisterwarp("Warper > Prontera Field 10", "prt_fild10", 195, 149);
naviregisterwarp("Warper > Prontera Field 11", "prt_fild11", 198, 164);
}
naviregisterwarp("Warper > Rachel Field 1", "ra_fild01", 192, 162);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Rachel Field 3", "ra_fild03", 202, 206);
naviregisterwarp("Warper > Rachel Field 4", "ra_fild04", 202, 208);
naviregisterwarp("Warper > Rachel Field 5", "ra_fild05", 225, 202);
naviregisterwarp("Warper > Rachel Field 6", "ra_fild06", 202, 214);
naviregisterwarp("Warper > Rachel Field 8", "ra_fild08", 217, 201);
naviregisterwarp("Warper > Rachel Field 12", "ra_fild12", 175, 200);
if (!checkre(0)) {
naviregisterwarp("Warper > Rachel Field 2", "ra_fild02", 235, 166);
naviregisterwarp("Warper > Rachel Field 7", "ra_fild07", 263, 196);
naviregisterwarp("Warper > Rachel Field 9", "ra_fild09", 87, 121);
naviregisterwarp("Warper > Rachel Field 10", "ra_fild10", 277, 181);
naviregisterwarp("Warper > Rachel Field 11", "ra_fild11", 221, 185);
naviregisterwarp("Warper > Rachel Field 13", "ra_fild13", 174, 197);
}
}
if (.Satan_Morocc) {
naviregisterwarp("Warper > Sograt Desert 1", "moc_fild01", 219, 205);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Sograt Desert 2", "moc_fild02", 177, 206);
naviregisterwarp("Warper > Sograt Desert 3", "moc_fild03", 194, 182);
naviregisterwarp("Warper > Sograt Desert 7", "moc_fild07", 224, 170);
naviregisterwarp("Warper > Sograt Desert 11", "moc_fild11", 198, 216);
naviregisterwarp("Warper > Sograt Desert 12", "moc_fild12", 156, 187);
naviregisterwarp("Warper > Sograt Desert 13", "moc_fild13", 185, 263);
naviregisterwarp("Warper > Sograt Desert 16", "moc_fild16", 206, 228);
naviregisterwarp("Warper > Sograt Desert 17", "moc_fild17", 208, 238);
naviregisterwarp("Warper > Sograt Desert 18", "moc_fild18", 209, 223);
naviregisterwarp("Warper > Sograt Desert 19", "moc_fild19", 85, 97);
naviregisterwarp("Warper > Sograt Desert 20", "moc_fild20", 207, 202);
naviregisterwarp("Warper > Sograt Desert 21", "moc_fild21", 31, 195);
naviregisterwarp("Warper > Sograt Desert 22", "moc_fild22", 38, 195);
}
} else {
naviregisterwarp("Warper > Sograt Desert 1", "moc_fild01", 219, 205);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Sograt Desert 2", "moc_fild02", 177, 206);
naviregisterwarp("Warper > Sograt Desert 3", "moc_fild03", 194, 182);
naviregisterwarp("Warper > Sograt Desert 4", "moc_fild04", 146, 297);
naviregisterwarp("Warper > Sograt Desert 5", "moc_fild05", 204, 197);
naviregisterwarp("Warper > Sograt Desert 6", "moc_fild06", 275, 302);
naviregisterwarp("Warper > Sograt Desert 7", "moc_fild07", 224, 170);
naviregisterwarp("Warper > Sograt Desert 8", "moc_fild08", 139, 123);
naviregisterwarp("Warper > Sograt Desert 9", "moc_fild09", 101, 110);
naviregisterwarp("Warper > Sograt Desert 10", "moc_fild10", 341, 39);
naviregisterwarp("Warper > Sograt Desert 11", "moc_fild11", 198, 216);
naviregisterwarp("Warper > Sograt Desert 12", "moc_fild12", 156, 187);
naviregisterwarp("Warper > Sograt Desert 13", "moc_fild13", 185, 263);
naviregisterwarp("Warper > Sograt Desert 14", "moc_fild14", 223, 222);
naviregisterwarp("Warper > Sograt Desert 15", "moc_fild15", 170, 257);
naviregisterwarp("Warper > Sograt Desert 16", "moc_fild16", 206, 228);
naviregisterwarp("Warper > Sograt Desert 17", "moc_fild17", 208, 238);
naviregisterwarp("Warper > Sograt Desert 18", "moc_fild18", 209, 223);
naviregisterwarp("Warper > Sograt Desert 19", "moc_fild19", 85, 97);
}
}
naviregisterwarp("Warper > Splendide Field 1", "spl_fild01", 175, 186);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Splendide Field 2", "spl_fild02", 236, 184);
naviregisterwarp("Warper > Splendide Field 3", "spl_fild03", 188, 204);
}
naviregisterwarp("Warper > Umbala Field 1", "um_fild01", 217, 206);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Umbala Field 2", "um_fild02", 223, 221);
naviregisterwarp("Warper > Umbala Field 3", "um_fild03", 237, 215);
naviregisterwarp("Warper > Umbala Field 4", "um_fild04", 202, 197);
}
naviregisterwarp("Warper > Veins Field 1", "ve_fild01", 186, 175);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Veins Field 2", "ve_fild02", 196, 370);
naviregisterwarp("Warper > Veins Field 3", "ve_fild03", 222, 45);
naviregisterwarp("Warper > Veins Field 4", "ve_fild04", 51, 250);
naviregisterwarp("Warper > Veins Field 6", "ve_fild06", 150, 223);
naviregisterwarp("Warper > Veins Field 7", "ve_fild07", 149, 307);
if (!checkre(0)) {
naviregisterwarp("Warper > Veins Field 5", "ve_fild05", 202, 324);
}
}
naviregisterwarp("Warper > Juno Field 1", "yuno_fild01", 189, 224);
if (!.OnlyFirstFld) {
naviregisterwarp("Warper > Juno Field 2", "yuno_fild02", 192, 207);
naviregisterwarp("Warper > Juno Field 3", "yuno_fild03", 221, 157);
naviregisterwarp("Warper > Juno Field 4", "yuno_fild04", 226, 199);
naviregisterwarp("Warper > Juno Field 6", "yuno_fild06", 187, 232);
naviregisterwarp("Warper > Juno Field 7", "yuno_fild07", 231, 174);
naviregisterwarp("Warper > Juno Field 8", "yuno_fild08", 196, 203);
naviregisterwarp("Warper > Juno Field 9", "yuno_fild09", 183, 214);
naviregisterwarp("Warper > Juno Field 11", "yuno_fild11", 195, 226);
naviregisterwarp("Warper > Juno Field 12", "yuno_fild12", 210, 304);
if (!checkre(0)) {
naviregisterwarp("Warper > Juno Field 5", "yuno_fild05", 223, 177);
naviregisterwarp("Warper > Juno Field 10", "yuno_fild10", 200, 124);
}
}
naviregisterwarp("Warper > Abyss Lakes 1", "abyss_01", 261, 272);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Abyss Lakes 2", "abyss_02", 275, 270);
naviregisterwarp("Warper > Abyss Lakes 3", "abyss_03", 116, 27);
}
naviregisterwarp("Warper > Amatsu Dungeon 1", "ama_dun01", 228, 11);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Amatsu Dungeon 2", "ama_dun02", 34, 41);
naviregisterwarp("Warper > Amatsu Dungeon 3", "ama_dun03", 119, 14);
}
naviregisterwarp("Warper > Anthell 1", "anthell01", 35, 262);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Anthell 2", "anthell02", 168, 170);
}
naviregisterwarp("Warper > Ancient Shrine Maze", "ayo_dun01", 275, 19);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Inside Ancient Shrine", "ayo_dun02", 24, 26);
}
naviregisterwarp("Warper > Beach Dungeon 1", "beach_dun", 266, 67);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Beach Dungeon 2", "beach_dun2", 255, 244);
naviregisterwarp("Warper > Beach Dungeon 3", "beach_dun3", 23, 260);
}
naviregisterwarp("Warper > Bio Lab 1", "lhz_dun01", 150, 288);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Bio Lab 2", "lhz_dun02", 150, 18);
naviregisterwarp("Warper > Bio Lab 3", "lhz_dun03", 140, 134);
if (checkre(0)) {
naviregisterwarp("Warper > Bio Lab 4", "lhz_dun04", 244, 52);
}
}
naviregisterwarp("Warper > Brasilis Dungeon 1", "bra_dun01", 87, 47);
if (!.OnlyFirstDun) {
if (checkre(0)) {
naviregisterwarp("Warper > Brasilis Dungeon 2", "bra_dun02", 262, 262);
}
}
naviregisterwarp("Warper > Byalan Dungeon 1", "iz_dun00", 168, 168);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Byalan Dungeon 2", "iz_dun01", 253, 252);
naviregisterwarp("Warper > Byalan Dungeon 3", "iz_dun02", 236, 204);
naviregisterwarp("Warper > Byalan Dungeon 4", "iz_dun03", 32, 63);
naviregisterwarp("Warper > Byalan Dungeon 5", "iz_dun04", 26, 27);
if (checkre(0)) {
naviregisterwarp("Warper > Byalan Dungeon 6", "iz_dun05", 141, 187);
}
}
naviregisterwarp("Warper > Clock Tower 1", "c_tower1", 199, 159);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Clock Tower 2", "c_tower2", 148, 283);
naviregisterwarp("Warper > Clock Tower 3", "c_tower3", 65, 147);
naviregisterwarp("Warper > Clock Tower 4", "c_tower4", 56, 155);
naviregisterwarp("Warper > Basement 1", "alde_dun01", 297, 25);
naviregisterwarp("Warper > Basement 2", "alde_dun02", 127, 169);
naviregisterwarp("Warper > Basement 3", "alde_dun03", 277, 178);
naviregisterwarp("Warper > Basement 4", "alde_dun04", 268, 74);
}
naviregisterwarp("Warper > Coal Mines 1", "mjo_dun01", 52, 17);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Coal Mines 2", "mjo_dun02", 381, 343);
naviregisterwarp("Warper > Coal Mines 3", "mjo_dun03", 302, 262);
}
naviregisterwarp("Warper > Culvert 1", "prt_sewb1", 131, 247);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Culvert 2", "prt_sewb2", 19, 19);
naviregisterwarp("Warper > Culvert 3", "prt_sewb3", 180, 169);
naviregisterwarp("Warper > Culvert 4", "prt_sewb4", 100, 92);
}
naviregisterwarp("Warper > Cursed Abbey 1", "abbey01", 51, 14);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Cursed Abbey 2", "abbey02", 150, 11);
naviregisterwarp("Warper > Cursed Abbey 3", "abbey03", 120, 10);
}
if (checkre(0)) {
naviregisterwarp("Warper > Dewata Dungeon 1", "dew_dun01", 285, 160);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Dewata Dungeon 2", "dew_dun02", 299, 29);
}
}
naviregisterwarp("Warper > Einbroch Dungeon 1", "ein_dun01", 22, 14);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Einbroch Dungeon 2", "ein_dun02", 292, 290);
}
naviregisterwarp("Warper > Gefenia 1", "gefenia01", 40, 103);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Gefenia 2", "gefenia02", 203, 34);
naviregisterwarp("Warper > Gefenia 3", "gefenia03", 266, 168);
naviregisterwarp("Warper > Gefenia 4", "gefenia04", 130, 272);
}
naviregisterwarp("Warper > Geffen Dungeon 1", "gef_dun00", 104, 99);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Geffen Dungeon 2", "gef_dun01", 115, 236);
naviregisterwarp("Warper > Geffen Dungeon 3", "gef_dun02", 106, 132);
naviregisterwarp("Warper > Geffen Dungeon 4", "gef_dun03", 203, 200);
}
naviregisterwarp("Warper > Entrance", "glast_01", 370, 304);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Castle 1", "gl_cas01", 199, 29);
naviregisterwarp("Warper > Castle 2", "gl_cas02", 104, 25);
naviregisterwarp("Warper > Chivalry 1", "gl_knt01", 150, 15);
naviregisterwarp("Warper > Chivalry 2", "gl_knt02", 157, 287);
naviregisterwarp("Warper > Churchyard", "gl_chyard", 147, 15);
naviregisterwarp("Warper > Culvert 1", "gl_sew01", 258, 255);
naviregisterwarp("Warper > Culvert 2", "gl_sew02", 108, 291);
naviregisterwarp("Warper > Culvert 3", "gl_sew03", 171, 283);
naviregisterwarp("Warper > Culvert 4", "gl_sew04", 68, 277);
naviregisterwarp("Warper > St. Abbey", "gl_church", 156, 7);
naviregisterwarp("Warper > Staircase Dungeon", "gl_step", 12, 7);
naviregisterwarp("Warper > Underground Cave 1", "gl_dun01", 133, 271);
naviregisterwarp("Warper > Underground Cave 2", "gl_dun02", 224, 274);
naviregisterwarp("Warper > Underground Prison 1", "gl_prison", 14, 70);
naviregisterwarp("Warper > Underground Prison 2", "gl_prison1", 150, 14);
}
naviregisterwarp("Warper > Kunlun Dungeon 1", "gon_dun01", 153, 53);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Kunlun Dungeon 2", "gon_dun02", 28, 113);
naviregisterwarp("Warper > Kunlun Dungeon 3", "gon_dun03", 68, 16);
}
naviregisterwarp("Warper > Hidden Dungeon 1", "prt_maze01", 176, 7);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Hidden Dungeon 2", "prt_maze02", 93, 20);
naviregisterwarp("Warper > Hidden Dungeon 3", "prt_maze03", 23, 8);
}
naviregisterwarp("Warper > Ice Dungeon 1", "ice_dun01", 157, 14);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Ice Dungeon 2", "ice_dun02", 151, 155);
naviregisterwarp("Warper > Ice Dungeon 3", "ice_dun03", 149, 22);
naviregisterwarp("Warper > Ice Dungeon 4", "ice_dun04", 33, 158);
}
naviregisterwarp("Warper > Entrance", "jupe_cave", 140, 51);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Juperos 1", "juperos_01", 53, 247);
naviregisterwarp("Warper > Juperos 2", "juperos_02", 37, 63);
naviregisterwarp("Warper > Core", "jupe_core", 150, 285);
}
naviregisterwarp("Warper > Kiel Dungeon 1", "kh_dun01", 28, 226);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Kiel Dungeon 2", "kh_dun02", 41, 198);
}
if (checkre(0)) {
naviregisterwarp("Warper > Lasagna Dungeon 1", "lasa_dun01", 24, 143);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Lasagna Dungeon 2", "lasa_dun02", 22, 171);
naviregisterwarp("Warper > Lasagna Dungeon 3", "lasa_dun03", 190, 18);
}
}
naviregisterwarp("Warper > The Royal Tomb", "lou_dun01", 218, 196);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Inside the Royal Tomb", "lou_dun02", 282, 20);
naviregisterwarp("Warper > Suei Long Gon", "lou_dun03", 165, 38);
}
naviregisterwarp("Warper > Magma Dungeon 1", "mag_dun01", 126, 68);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Magma Dungeon 2", "mag_dun02", 47, 30);
}
if (checkre(0)) {
naviregisterwarp("Warper > Malangdo Dungeon 1", "mal_dun01", 33, 230);
}
naviregisterwarp("Warper > Moscovia Dungeon 1", "mosk_dun01", 189, 48);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Moscovia Dungeon 2", "mosk_dun02", 165, 30);
naviregisterwarp("Warper > Moscovia Dungeon 3", "mosk_dun03", 32, 135);
}
naviregisterwarp("Warper > Nidhogg's Dungeon 1", "nyd_dun01", 61, 239);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Nidhogg's Dungeon 2", "nyd_dun02", 60, 271);
}
naviregisterwarp("Warper > Odin Temple 1", "odin_tem01", 298, 167);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Odin Temple 2", "odin_tem02", 224, 149);
naviregisterwarp("Warper > Odin Temple 3", "odin_tem03", 266, 280);
}
naviregisterwarp("Warper > Orc Dungeon 1", "orcsdun01", 32, 170);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Orc Dungeon 2", "orcsdun02", 21, 185);
}
naviregisterwarp("Warper > Payon Dungeon 1", "pay_dun00", 21, 183);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Payon Dungeon 2", "pay_dun01", 19, 33);
naviregisterwarp("Warper > Payon Dungeon 3", "pay_dun02", 19, 63);
naviregisterwarp("Warper > Payon Dungeon 4", "pay_dun03", 155, 159);
naviregisterwarp("Warper > Payon Dungeon 5", "pay_dun04", 201, 204);
}
naviregisterwarp("Warper > Pyramids 1", "moc_pryd01", 192, 9);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Pyramids 2", "moc_pryd02", 10, 192);
naviregisterwarp("Warper > Pyramids 3", "moc_pryd03", 100, 92);
naviregisterwarp("Warper > Pyramids 4", "moc_pryd04", 181, 11);
naviregisterwarp("Warper > Basement 1", "moc_pryd05", 94, 96);
naviregisterwarp("Warper > Basement 2", "moc_pryd06", 192, 8);
if (checkre(0)) {
naviregisterwarp("Warper > Basement 1 - Nightmare Mode", "moc_prydn1", 94, 96);
naviregisterwarp("Warper > Basement 2 - Nightmare Mode", "moc_prydn2", 192, 8);
}
}
naviregisterwarp("Warper > Rachel Sanctuary 1", "ra_san01", 140, 11);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Rachel Sanctuary 2", "ra_san02", 32, 21);
naviregisterwarp("Warper > Rachel Sanctuary 3", "ra_san03", 8, 149);
naviregisterwarp("Warper > Rachel Sanctuary 4", "ra_san04", 204, 218);
naviregisterwarp("Warper > Rachel Sanctuary 5", "ra_san05", 150, 9);
}
if (checkre(0)) {
naviregisterwarp("Warper > Scaraba Hole 1", "dic_dun01", 364, 44);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Scaraba Hole 2", "dic_dun02", 101, 141);
}
}
naviregisterwarp("Warper > Sphinx 1", "in_sphinx1", 288, 9);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Sphinx 2", "in_sphinx2", 149, 81);
naviregisterwarp("Warper > Sphinx 3", "in_sphinx3", 210, 54);
naviregisterwarp("Warper > Sphinx 4", "in_sphinx4", 10, 222);
naviregisterwarp("Warper > Sphinx 5", "in_sphinx5", 100, 99);
}
naviregisterwarp("Warper > Sunken Ship 1", "treasure01", 69, 24);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Sunken Ship 2", "treasure02", 102, 27);
}
naviregisterwarp("Warper > Thanatos Tower 1", "tha_t01", 150, 39);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Thanatos Tower 2", "tha_t02", 150, 136);
naviregisterwarp("Warper > Thanatos Tower 3", "tha_t03", 220, 158);
naviregisterwarp("Warper > Thanatos Tower 4", "tha_t04", 59, 143);
naviregisterwarp("Warper > Thanatos Tower 5", "tha_t05", 62, 11);
naviregisterwarp("Warper > Thanatos Tower 6", "tha_t06", 89, 221);
naviregisterwarp("Warper > Thanatos Tower 7", "tha_t07", 35, 166);
naviregisterwarp("Warper > Thanatos Tower 8", "tha_t08", 93, 148);
naviregisterwarp("Warper > Thanatos Tower 9", "tha_t09", 29, 107);
naviregisterwarp("Warper > Thanatos Tower 10", "tha_t10", 159, 138);
naviregisterwarp("Warper > Thanatos Tower 11", "tha_t11", 19, 20);
naviregisterwarp("Warper > Thanatos Tower 12", "tha_t12", 130, 52);
}
naviregisterwarp("Warper > Thor Volcano 1", "thor_v01", 21, 228);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Thor Volcano 2", "thor_v02", 75, 205);
naviregisterwarp("Warper > Thor Volcano 3", "thor_v03", 34, 272);
}
naviregisterwarp("Warper > Toy Factory 1", "xmas_dun01", 205, 15);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Toy Factory 2", "xmas_dun02", 129, 133);
}
naviregisterwarp("Warper > Entrance", "tur_dun01", 154, 49);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Turtle Dungeon 1", "tur_dun02", 148, 261);
naviregisterwarp("Warper > Turtle Dungeon 2", "tur_dun03", 132, 189);
naviregisterwarp("Warper > Turtle Dungeon 3", "tur_dun04", 100, 192);
}
naviregisterwarp("Warper > Carpenter's Shop in the Tree", "um_dun01", 42, 31);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Passage to a Foreign World", "um_dun02", 48, 30);
naviregisterwarp("Warper > Hvergermil's Fountain", "yggdrasil01", 204, 78);
}
if (checkre(0)) {
naviregisterwarp("Warper > Bifrost Tower 1", "ecl_tdun01", 57, 13);
if (!.OnlyFirstDun) {
naviregisterwarp("Warper > Bifrost Tower 2", "ecl_tdun02", 64, 88);
naviregisterwarp("Warper > Bifrost Tower 3", "ecl_tdun03", 45, 14);
naviregisterwarp("Warper > Bifrost Tower 4", "ecl_tdun04", 26, 23);
}
}
// castles
naviregisterwarp("Warper > Neuschwanstein", "alde_gld", 48, 83);
naviregisterwarp("Warper > Hohenschwangau", "alde_gld", 95, 249);
naviregisterwarp("Warper > Nuenberg", "alde_gld", 142, 85);
naviregisterwarp("Warper > Wuerzburg", "alde_gld", 239, 242);
naviregisterwarp("Warper > Rothenburg", "alde_gld", 264, 90);
naviregisterwarp("Warper > Repherion", "gef_fild13", 214, 75);
naviregisterwarp("Warper > Eeyolbriggar", "gef_fild13", 308, 240);
naviregisterwarp("Warper > Yesnelph", "gef_fild13", 143, 240);
naviregisterwarp("Warper > Bergel", "gef_fild13", 193, 278);
naviregisterwarp("Warper > Mersetzdeitz", "gef_fild13", 305, 87);
naviregisterwarp("Warper > Bright Arbor", "pay_gld", 121, 233);
naviregisterwarp("Warper > Scarlet Palace", "pay_gld", 295, 116);
naviregisterwarp("Warper > Holy Shadow", "pay_gld", 317, 293);
naviregisterwarp("Warper > Sacred Altar", "pay_gld", 140, 160);
naviregisterwarp("Warper > Bamboo Grove Hill", "pay_gld", 204, 266);
naviregisterwarp("Warper > Kriemhild", "prt_gld", 134, 65);
naviregisterwarp("Warper > Swanhild", "prt_gld", 240, 128);
naviregisterwarp("Warper > Fadhgridh", "prt_gld", 153, 137);
naviregisterwarp("Warper > Skoegul", "prt_gld", 111, 240);
naviregisterwarp("Warper > Gondul", "prt_gld", 208, 240);
naviregisterwarp("Warper > Mardol", "aru_gld", 158, 272);
naviregisterwarp("Warper > Cyr", "aru_gld", 83, 47);
naviregisterwarp("Warper > Horn", "aru_gld", 68, 155);
naviregisterwarp("Warper > Gefn", "aru_gld", 299, 345);
naviregisterwarp("Warper > Banadis", "aru_gld", 292, 107);
naviregisterwarp("Warper > Himinn", "sch_gld", 293, 100);
naviregisterwarp("Warper > Andlangr", "sch_gld", 288, 252);
naviregisterwarp("Warper > Viblainn", "sch_gld", 97, 196);
naviregisterwarp("Warper > Hljod", "sch_gld", 137, 90);
naviregisterwarp("Warper > Skidbladnir", "sch_gld", 71, 315);
if (checkre(0)) {
naviregisterwarp("Warper > Kafragarten 1", "te_alde_gld", 48, 83);
naviregisterwarp("Warper > Kafragarten 2", "te_alde_gld", 95, 249);
naviregisterwarp("Warper > Kafragarten 3", "te_alde_gld", 142, 85);
naviregisterwarp("Warper > Kafragarten 4", "te_alde_gld", 239, 242);
naviregisterwarp("Warper > Kafragarten 5", "te_alde_gld", 264, 90);
naviregisterwarp("Warper > Gloria 1", "te_prt_gld", 134, 65);
naviregisterwarp("Warper > Gloria 2", "te_prt_gld", 240, 128);
naviregisterwarp("Warper > Gloria 3", "te_prt_gld", 153, 137);
naviregisterwarp("Warper > Gloria 4", "te_prt_gld", 111, 240);
naviregisterwarp("Warper > Gloria 5", "te_prt_gld", 208, 240);
}
// guild dungeons
naviregisterwarp("Warper > Baldur F1", "gld_dun01", 119, 93);
naviregisterwarp("Warper > Luina F1", "gld_dun02", 39, 161);
naviregisterwarp("Warper > Valkyrie F1", "gld_dun03", 50, 44);
naviregisterwarp("Warper > Britoniah F1", "gld_dun04", 116, 45);
naviregisterwarp("Warper > Arunafeltz", "arug_dun01", 199, 195);
naviregisterwarp("Warper > Schwarzwald", "schg_dun01", 200,124);
if (checkre(0)) {
naviregisterwarp("Warper > Baldur F2", "gld_dun01_2", 119, 93);
naviregisterwarp("Warper > Hall of Abyss", "gld2_pay", 120, 130);
naviregisterwarp("Warper > Luina F2", "gld_dun02_2", 39, 161);
naviregisterwarp("Warper > Hall of Abyss", "gld2_ald", 147, 155);
naviregisterwarp("Warper > Valkyrie F2", "gld_dun03_2", 50, 44);
naviregisterwarp("Warper > Hall of Abyss", "gld2_prt", 140, 132);
naviregisterwarp("Warper > Britoniah F2", "gld_dun04_2", 116, 45);
naviregisterwarp("Warper > Hall of Abyss", "gld2_gef", 152, 118);
naviregisterwarp("Warper > Kafragarten", "teg_dun01", 42, 36);
naviregisterwarp("Warper > Gloria", "teg_dun02", 26, 160);
}
end;
// instances
naviregisterwarp("Warper > Endless Tower", "e_tower", 72, 112);
naviregisterwarp("Warper > Nidhoggur's Nest", "nyd_dun02", 95, 193);
naviregisterwarp("Warper > Orc's Memory", "gef_fild10", 240, 198);
naviregisterwarp("Warper > Sealed Shrine", "monk_test", 306, 143);
if (checkre(0)) {
naviregisterwarp("Warper > Bakonawa Lake", "ma_scene01", 172, 175);
naviregisterwarp("Warper > Bangungot Hospital 2F", "ma_dun01", 151, 8);
naviregisterwarp("Warper > Buwaya Cave", "ma_fild02", 316, 317);
naviregisterwarp("Warper > Devil Tower", "dali02", 137, 115);
naviregisterwarp("Warper > Eclage Interior", "ecl_hub01", 129, 12);
naviregisterwarp("Warper > Faceworms Nest", "dali", 85, 64);
naviregisterwarp("Warper > Geffen Magic Tournament", "dali", 94, 141);
naviregisterwarp("Warper > Ghost Palace", "dali02", 46, 128);
naviregisterwarp("Warper > Hazy Forest", "bif_fild01", 161, 334);
naviregisterwarp("Warper > Horror Toy Factory", "xmas", 234, 298);
naviregisterwarp("Warper > Malangdo Culvert", "mal_in01", 164, 21);
naviregisterwarp("Warper > Octopus Cave", "mal_dun01", 152, 230);
naviregisterwarp("Warper > Old Glast Heim", "glast_01", 204, 268);
naviregisterwarp("Warper > Sarah and Fenrir", "dali02", 92, 141);
naviregisterwarp("Warper > Sara Memory", "dali", 133, 108);
naviregisterwarp("Warper > Wolfchev's Laboratory", "lhz_dun04", 148, 269);
}
// special
naviregisterwarp("Warper > Auction Hall", "auction_01", 22, 68);
naviregisterwarp("Warper > Battlegrounds", "bat_room", 154, 150);
naviregisterwarp("Warper > Casino", "cmd_in02", 179, 129);
naviregisterwarp("Warper > Kunlun Arena", "gon_test", 48, 10);
naviregisterwarp("Warper > Izlude Arena", "arena_room", 100, 88);
naviregisterwarp("Warper > Monster Race Arena", "p_track01", 62, 41);
naviregisterwarp("Warper > Turbo Track", "turbo_room", 99, 114);
if (checkre(0)) {
naviregisterwarp("Warper > Dimensional Rift", "dali", 113, 82);
naviregisterwarp("Warper > Eden Group Headquarters", "moc_para01", 31, 14);
naviregisterwarp("Warper > Para Market", "paramk", 97, 17);
}
OnInit:
.Satan_Morocc = true; // false will enable moc_fild 4,5,6,8,9,10,14,15 while disable moc_fild 20,21,22 Default is true.
.OnlyFirstFld = false; // true will teleport to the first level of the Fields Default is false.

View File

@@ -183,10 +183,15 @@ que_ng,152,167,3 script Master Miller 901,{
callfunc "Job_Change",Job_Gunslinger;
set GUNS_Q,6;
completequest 6024;
if (rand(1,2) == 1) {
getitem 13100,1; // Six_Shooter
if (checkre(0)) {
getitem 13180,1; // Novice_Rifle
getitem 12149,2; // Bullet_Case
getitem 12151,1; // Bullet_Case_Silver
} else {
getitem 13150,1; // Branch
if (rand(2))
getitem 13100,1; // Six_Shooter
else
getitem 13150,1; // Branch
}
close;
}

View File

@@ -883,7 +883,7 @@ OnTimer28500:
mes "Hey there, are you alive?";
mes "I did not expect to meet someone who is still alive.";
next;
.@item_name_req$ = getitemname(6672);// Shard_of_Gray
.@item_name_req$ = getitemname(6672);// Gray_Shard
mes "[King]";
mes "Do you possibly have the ^006400" + .@item_name_req$ + "^000000?";
mes "Can you give it to me?";

View File

@@ -371,6 +371,11 @@ job4_tro mapflag nobranch
2@ch_t mapflag nobranch
3@ch_t mapflag nobranch
//============================================================
// Training Ground outside Prontera
//============================================================
tra_fild mapflag nobranch
//============================================================
// Episode 18 - Direction of Prayer
//============================================================

View File

@@ -446,7 +446,7 @@ har_in01,19,86,4 script Weapon Dealer#rockridge01 1_F_02,{
- marketshop armor_rockridge_1 -1,2247:500000:10,2248:500000:10,5018:700000:10
- marketshop armor_rockridge_2 -1,5067:700000:10,5071:700000:10,5075:700000:10
- marketshop armor_rockridge_3 -1,2267:100000:10,2268:500000:10,5155:5000:10
- marketshop armor_rockridge_3 -1,2267:100000:10,2268:500000:10,2241:5000:10
- marketshop armor_rockridge_4 -1,5067:700000:10,5071:700000:10,5075:700000:10,31144:1500000:3
har_in01,16,86,4 script Armor Dealer#rockridge02 1_M_04,{
@@ -499,6 +499,22 @@ har_in01,16,86,4 script Armor Dealer#rockridge02 1_M_04,{
else if (.@day == FRIDAY)
callshop "armor_rockridge_4", 1;
end;
OnSun0000: // custom restock, no official info
npcshopupdate "armor_rockridge_1",2247,0,10;
npcshopupdate "armor_rockridge_1",2248,0,10;
npcshopupdate "armor_rockridge_1",5018,0,10;
npcshopupdate "armor_rockridge_2",5067,0,10;
npcshopupdate "armor_rockridge_2",5071,0,10;
npcshopupdate "armor_rockridge_2",5075,0,10;
npcshopupdate "armor_rockridge_3",2267,0,10;
npcshopupdate "armor_rockridge_3",2268,0,10;
npcshopupdate "armor_rockridge_3",2241,0,10;
npcshopupdate "armor_rockridge_4",5067,0,10;
npcshopupdate "armor_rockridge_4",5071,0,10;
npcshopupdate "armor_rockridge_4",5075,0,10;
npcshopupdate "armor_rockridge_4",31144,0,3;
end;
}
har_in01,34,84,3 shop Tool Dealer#rockridge00 1_F_03,611:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,610:-1

View File

@@ -11,7 +11,7 @@ dali02,51,130,4 script Dimension Traveler 4_F_SHABBY,{
mes "- You cannot proceed because you have too many items with you. -";
close;
}
.@item_name_req$ = getitemname(6672);// Shard_of_Gray
.@item_name_req$ = getitemname(6672);// Gray_Shard
mes "[Dimension Traveler]";
mes "Adventurer friend, <ITEM>[" + .@item_name_req$ + "]<INFO>6672</INFO></ITEM> is what I need. How about exchanging it with something I have?";
next;

View File

@@ -1401,11 +1401,11 @@ mal_in01,20,107,3 script Lace La Zard#cos_ect 4_FROG,{
25797, 29427, "Increases damage of Knuckle Arrow by 15%.", // SuraStone_Robe2 SuraStone_Robe2_
25801, 29614, "Increases damage of Diamond Dust by 15%.", // SorcererStone_Robe2 SorcererStone_Robe2_
25805, 29618, "Increases damage of Fatal Menace by 15%.", // ShadowchaserStone_Robe2 ShadowchaserStone_Robe2_
25842, 29654, "Increases damage of Eswhoo by 20%.", // SoulReaperStone_Robe SoulReaperStone_Robe_
25849, 29658, "Increases damage of Falling Star, Solar Burst and Full Moon Kick by 20%.", // StarEmperorStone_Garment StarEmperorStone_Garment_
25842, 29654, "Increases damage of Eswhoo by 20%.", // SoulReaperStone_Robe Soulreaper_Robe
25849, 29658, "Increases damage of Falling Star, Solar Burst and Full Moon Kick by 20%.", // StarEmperorStone_Garment Staremperor_Robe
25853, 29662, "Increases damage of Swirling Petal by 25%.", // KagerouStone_Robe KagerouStone_Robe_
25854, 29663, "Increases damage of Flaming Petals by 20%.", // OboroStone_Robe OboroStone_Robe_
25858, 29667, "Increases damage of Hammer of God and Round Trip by 20%.", // GunslingerStone_Robe GunslingerStone_Robe_
25858, 29667, "Increases damage of Hammer of God and Round Trip by 20%.", // GunslingerStone_Robe Rebellion_Robe
25862, 29671, "Increases damage of Picky Peck and Catnip Meteor by 20%.", // DoramStone_Robe DoramStone_Robe_
1000011, 310003, "Increases damage of Aimed Bolt by 15%.", // RangerStone_II_Garment Ranger_Robe2
1000015, 310007, "Increases damage of Arms Cannon by 15%.", // MechanicStone_II_Garment Mechanic_Robe2

View File

@@ -10,6 +10,7 @@
//= Spawns monsters in towns.
//===== Additional Comments: =================================
//= 1.0 First version, Renewal spawns.
//= 1.1 Removed Dummy monsters.
//============================================================
//==================================================
@@ -26,11 +27,11 @@ brasilis,96,50,8,8 monster Strange Hydra 2081,5,5000
alb_ship,0,0 monster Strange Mouse 2057,25
//==================================================
// Prontera, Training Dummy Area
// Prontera, Training Dummy Area (removed)
//==================================================
prontera,251,77 monster Dummy Lv50 2409,1,5000
prontera,259,77 monster Dummy Lv50 2409,1,5000
prontera,251,66 monster Dummy Lv100 2410,1,5000
prontera,259,66 monster Dummy Lv100 2410,1,5000
prontera,251,55 monster Dummy Lv150 2411,1,5000
prontera,259,55 monster Dummy Lv150 2411,1,5000
// prontera,251,77 monster Dummy Lv50 2409,1,5000
// prontera,259,77 monster Dummy Lv50 2409,1,5000
// prontera,251,66 monster Dummy Lv100 2410,1,5000
// prontera,259,66 monster Dummy Lv100 2410,1,5000
// prontera,251,55 monster Dummy Lv150 2411,1,5000
// prontera,259,55 monster Dummy Lv150 2411,1,5000

49
npc/re/mobs/tra_fild.txt Normal file
View File

@@ -0,0 +1,49 @@
//===== rAthena Script =======================================
//= Training Zone
//===== Description: =========================================
//= Training Dummy monster spawn script.
//===== Changelog: ===========================================
//= 1.0 Initial Release [Capuche]
//============================================================
tra_fild,57,159 monster Dummy (Small) 21064,1
tra_fild,57,145 monster Dummy (Small) 21064,1
tra_fild,57,131 monster Dummy (Small) 21064,1
tra_fild,70,159 monster Dummy (Medium) 21065,1
tra_fild,70,145 monster Dummy (Medium) 21065,1
tra_fild,70,131 monster Dummy (Medium) 21065,1
tra_fild,83,159 monster Dummy (Large) 21066,1
tra_fild,83,145 monster Dummy (Large) 21066,1
tra_fild,83,131 monster Dummy (Large) 21066,1
tra_fild,101,159 monster Dummy (Small) 21064,1
tra_fild,101,145 monster Dummy (Small) 21064,1
tra_fild,101,131 monster Dummy (Small) 21064,1
tra_fild,114,159 monster Dummy (Medium) 21065,1
tra_fild,114,145 monster Dummy (Medium) 21065,1
tra_fild,114,131 monster Dummy (Medium) 21065,1
tra_fild,127,159 monster Dummy (Large) 21066,1
tra_fild,127,145 monster Dummy (Large) 21066,1
tra_fild,127,131 monster Dummy (Large) 21066,1
tra_fild,66,70 monster Dummy (Neutral Lv1) 21077,1
tra_fild,74,70 monster Dummy (Water Lv1) 21078,1
tra_fild,82,70 monster Dummy (Earth Lv1) 21079,1
tra_fild,90,70 monster Dummy (Fire Lv1) 21080,1
tra_fild,98,70 monster Dummy (Wind Lv1) 21081,1
tra_fild,106,70 monster Dummy (Poison Lv1) 21082,1
tra_fild,114,70 monster Dummy (Holy Lv1) 21083,1
tra_fild,122,70 monster Dummy (Dark Lv1) 21084,1
tra_fild,130,70 monster Dummy (Ghost Lv1) 21085,1
tra_fild,138,70 monster Dummy (Undead Lv1) 21086,1
tra_fild,66,50 monster Dummy (Neutral) 21067,1
tra_fild,74,50 monster Dummy (Dragon) 21068,1
tra_fild,82,50 monster Dummy (Brute) 21069,1
tra_fild,90,50 monster Dummy (Human) 21070,1
tra_fild,98,50 monster Dummy (Insect) 21071,1
tra_fild,106,50 monster Dummy (Fish) 21072,1
tra_fild,114,50 monster Dummy (Demon) 21073,1
tra_fild,122,50 monster Dummy (Plant) 21074,1
tra_fild,130,50 monster Dummy (Angel) 21075,1
tra_fild,138,50 monster Dummy (Undead) 21076,1

View File

@@ -8,6 +8,7 @@ npc: npc/re/mobs/int_land.txt
npc: npc/re/mobs/prt_cas.txt
npc: npc/re/mobs/special_border_area.txt
npc: npc/re/mobs/towns.txt
npc: npc/re/mobs/tra_fild.txt
npc: npc/re/mobs/verus.txt
// -------------------------- Dungeons --------------------------

View File

@@ -53,6 +53,7 @@ npc: npc/re/warps/other/paradise.txt
npc: npc/re/warps/other/s_workshop.txt
npc: npc/re/warps/other/sign.txt
npc: npc/re/warps/other/special_border_area.txt
npc: npc/re/warps/other/TrainingZone.txt
npc: npc/re/warps/other/un_myst.txt
npc: npc/re/warps/other/verus.txt
npc: npc/re/warps/guildcastles.txt

View File

@@ -0,0 +1,91 @@
//===== rAthena Script =======================================
//= Training Zone
//===== Description: =========================================
//= NPC warp related to the training zone.
//===== Changelog: ===========================================
//= 1.0 Initial Release [Capuche]
//============================================================
prontera,246,62,3 script Training Instructor#sol1 8W_SOLDIER,{
mes "[Training Instructor]";
mes "If you want to train in a wider area, I'll let you in.";
next;
mes "[Training Instructor]";
mes "The training ground is divided into two main areas.";
next;
mes "[Training Instructor]";
mes "Upper area where you can check the applied force based on monster size.";
next;
mes "[Training Instructor]";
mes "The lower area where you can check the force applied depending on the monster's attribute and form.";
next;
mes "[Training Instructor]";
mes "Where would you like to enter?";
next;
switch( select( "Upper area", "Lower area", "Do not enter" ) ) {
case 1:
mes "[Training Instructor]";
mes "Then I will guide you.";
close2;
warp "tra_fild",112,167;
end;
case 2:
mes "[Training Instructor]";
mes "Then I will guide you.";
close2;
warp "tra_fild",111,74;
end;
case 3:
mes "[Training Instructor]";
mes "If you need guidance, come to me.";
close;
}
}
tra_fild,111,79,3 script Training Instructor#sol3 8W_SOLDIER,{
mes "[Training Instructor]";
mes "Are you sure you want to move to the upper section?";
next;
switch( select( "Move", "Do not move", "Warp to Prontera." ) ) {
case 1:
mes "[Training Instructor]";
mes "Go to upper section!!!";
close2;
warp "tra_fild",112,167;
end;
case 2:
mes "[Training Instructor]";
mes "Talk to me if you need to move.";
close;
case 3:
mes "[Training Instructor]";
mes "I'll warp you.";
close2;
warp "prontera",246,60;
end;
}
}
tra_fild,112,171,3 script Training Instructor#sol2 8W_SOLDIER,{
mes "[Training Instructor]";
mes "Are you sure you want to move to the lower section?";
next;
switch( select( "Move", "Do not move", "Warp to Prontera." ) ) {
case 1:
mes "[Training Instructor]";
mes "Go to lower section!!!";
close2;
warp "tra_fild",111,74;
end;
case 2:
mes "[Training Instructor]";
mes "Talk to me if you need to move.";
close;
case 3:
mes "[Training Instructor]";
mes "I'll warp you.";
close2;
warp "prontera",246,60;
end;
}
}

View File

@@ -84,6 +84,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml2sql", "src\tool\yaml2s
{352B45B3-FE88-4431-9D89-48CF811446DB} = {352B45B3-FE88-4431-9D89-48CF811446DB}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web-server", "src\web\web-server.vcxproj", "{5809F27D-65B5-46A3-A340-C8685A8C09F4}"
ProjectSection(ProjectDependencies) = postProject
{F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559} = {F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559}
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6} = {7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "httplib", "3rdparty\httplib\httplib.vcxproj", "{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yamlupgrade", "src\tool\yamlupgrade.vcxproj", "{9115C6D1-520A-4540-B4FE-95F3C923FE2C}"
ProjectSection(ProjectDependencies) = postProject
{61D6A599-6BED-4154-A9FC-40553BD972E0} = {61D6A599-6BED-4154-A9FC-40553BD972E0}
@@ -181,6 +189,22 @@ Global
{CDBBB260-B245-44EC-80FB-3F9421885E40}.Release|Win32.Build.0 = Release|Win32
{CDBBB260-B245-44EC-80FB-3F9421885E40}.Release|x64.ActiveCfg = Release|x64
{CDBBB260-B245-44EC-80FB-3F9421885E40}.Release|x64.Build.0 = Release|x64
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Debug|Win32.ActiveCfg = Debug|Win32
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Debug|Win32.Build.0 = Debug|Win32
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Debug|x64.ActiveCfg = Debug|x64
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Debug|x64.Build.0 = Debug|x64
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Release|Win32.ActiveCfg = Release|Win32
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Release|Win32.Build.0 = Release|Win32
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Release|x64.ActiveCfg = Release|x64
{5809F27D-65B5-46A3-A340-C8685A8C09F4}.Release|x64.Build.0 = Release|x64
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Debug|Win32.ActiveCfg = Debug|Win32
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Debug|Win32.Build.0 = Debug|Win32
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Debug|x64.ActiveCfg = Debug|x64
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Debug|x64.Build.0 = Debug|x64
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Release|Win32.ActiveCfg = Release|Win32
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Release|Win32.Build.0 = Release|Win32
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Release|x64.ActiveCfg = Release|x64
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6}.Release|x64.Build.0 = Release|x64
{9115C6D1-520A-4540-B4FE-95F3C923FE2C}.Debug|Win32.ActiveCfg = Debug|Win32
{9115C6D1-520A-4540-B4FE-95F3C923FE2C}.Debug|Win32.Build.0 = Debug|Win32
{9115C6D1-520A-4540-B4FE-95F3C923FE2C}.Debug|x64.ActiveCfg = Debug|x64
@@ -213,6 +237,8 @@ Global
{61D6A599-6BED-4154-A9FC-40553BD972E0} = {6ABA1767-6242-4CA0-BA22-A30972DC8918}
{5A9059F2-4933-49A2-BEE6-CC67F66FA070} = {9F328FE9-129D-4C0C-820B-BE4AA5996652}
{CDBBB260-B245-44EC-80FB-3F9421885E40} = {9F328FE9-129D-4C0C-820B-BE4AA5996652}
{5809F27D-65B5-46A3-A340-C8685A8C09F4} = {6D9F5D00-2988-4812-844D-D155C4F588DC}
{7A1A25BC-2CF7-44B2-8CAF-B4273B510FC6} = {6ABA1767-6242-4CA0-BA22-A30972DC8918}
{9115C6D1-520A-4540-B4FE-95F3C923FE2C} = {9F328FE9-129D-4C0C-820B-BE4AA5996652}
{492E2981-34F4-3A6A-BFD9-46096C641203} = {6ABA1767-6242-4CA0-BA22-A30972DC8918}
EndGlobalSection

View File

@@ -10,6 +10,7 @@ For a new install, the following needs to be imported into the 'ragnarok' schema
Note: The schema name is defined in `conf/inter_athena.conf::map_server_db`.
* main.sql - Contains tables for normal server usage.
* web.sql - Contains tables for the web service
* roulette_default_data.sql - Contains data for the client's roulette game.
For a new install, the following needs to be imported into the 'log' schema:
@@ -72,3 +73,7 @@ To run these queries the user requires the [FILE](https://dev.mysql.com/doc/refm
* item_db_to_txt.sql - Dumps the __pre-renewal__ item data table to TXT format.
* item_db2_re_to_txt.sql - Dumps the __renewal__ item data table (import) to TXT format.
* item_db2_to_txt.sql - Dumps the __pre-renewal__ item data table (import) to TXT format.
### Notes
---
The web-server must be able to read the `login` and `guild` tables from the `login-server` and `char-server`, respectively.

View File

@@ -82,6 +82,7 @@ CREATE TABLE `item_db2_re` (
`equip_level_min` tinyint(3) unsigned DEFAULT NULL,
`equip_level_max` tinyint(3) unsigned DEFAULT NULL,
`refineable` tinyint(1) unsigned DEFAULT NULL,
`gradable` tinyint(1) unsigned DEFAULT NULL,
`view` smallint(5) unsigned DEFAULT NULL,
`alias_name` varchar(50) DEFAULT NULL,
`flag_buyingstore` tinyint(1) unsigned DEFAULT NULL,

View File

@@ -82,6 +82,7 @@ CREATE TABLE `item_db_re` (
`equip_level_min` tinyint(3) unsigned DEFAULT NULL,
`equip_level_max` tinyint(3) unsigned DEFAULT NULL,
`refineable` tinyint(1) unsigned DEFAULT NULL,
`gradable` tinyint(1) unsigned DEFAULT NULL,
`view` smallint(5) unsigned DEFAULT NULL,
`alias_name` varchar(50) DEFAULT NULL,
`flag_buyingstore` tinyint(1) unsigned DEFAULT NULL,

View File

@@ -810,7 +810,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`we
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_mage`,`job_sage`,`job_wizard`,`class_upper`,`class_third_upper`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2039,'Wizardy_Staff_IL','Illusion Wizardry Staff','Weapon','2hStaff',2400,150,250,1,2,true,true,true,true,true,true,true,4,100,true,'.@val = min(getrefine(),10)/2;\nbonus bInt,(6+.@val);\nbonus bDex,(2+.@val);');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`attack`,`magic_attack`,`range`,`slots`,`job_wizard`,`class_third`,`class_third_upper`,`class_third_baby`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (2040,'Probation_Staff','Trial Warlock\'s Staff','Weapon','2hStaff',20,60,200,1,1,true,true,true,true,true,true,3,100,true,100,true,true,true,true,true,true,true,'bonus bUnbreakableWeapon;\nbonus2 bSkillAtk,"WL_EARTHSTRAIN",20;\nbonus bMatk,6*(min(BaseLevel,160)/10);\nif (getrefine()>=7) {\n bonus bMatkRate,getskilllv("WZ_STORMGUST");\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`attack`,`magic_attack`,`range`,`slots`,`job_wizard`,`class_third`,`class_third_upper`,`class_third_baby`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2046,'Novice_Warlock\'s_Staff','Novice Warlock\'s Staff','Weapon','2hStaff',70,170,1,1,true,true,true,true,true,true,3,100,true,'bonus bMatkRate,5;\n.@r = getrefine();\nif (.@r>=7) {\n bonus2 bSkillAtk,"WL_CRIMSONROCK",15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_wizard`,`class_third`,`class_third_upper`,`class_third_baby`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2048,'Aeon_Staff','Aeon Staff','Weapon','2hStaff',800,100,200,1,2,true,true,true,true,true,true,4,100,true,'bonus bUnbreakableWeapon;\n.@r = getrefine();\nbonus bMatk,10*(.@r/2);\nbonus2 bSkillAtk,"WL_EARTHSTRAIN",12*(.@r/3);\nif (.@r>=9) {\n bonus bVariableCastrate,-10;\n}\nif (.@r>=11) {\n bonus2 bSkillCooldown,"WL_EARTHSTRAIN",-1000;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_wizard`,`class_third`,`class_third_upper`,`class_third_baby`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2048,'Iron_Staff','Aeon Staff','Weapon','2hStaff',800,100,200,1,2,true,true,true,true,true,true,4,100,true,'bonus bUnbreakableWeapon;\n.@r = getrefine();\nbonus bMatk,10*(.@r/2);\nbonus2 bSkillAtk,"WL_EARTHSTRAIN",12*(.@r/3);\nif (.@r>=9) {\n bonus bVariableCastrate,-10;\n}\nif (.@r>=11) {\n bonus2 bSkillCooldown,"WL_EARTHSTRAIN",-1000;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_acolyte`,`job_mage`,`job_monk`,`job_priest`,`job_sage`,`job_soullinker`,`job_wizard`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2049,'Blue_Flame_Cane','Blue Flame Cane','Weapon','2hStaff',20,800,110,300,1,2,true,true,true,true,true,true,true,true,true,4,175,true,'.@r = getrefine;\nbonus bInt,7;\nbonus bMatkRate,.@r/2;\nbonus bUnbreakableWeapon;\nif (.@r>=9)\n .@val = 15;\nelse if (.@r>=7)\n .@val = 5;\nif (.@r>=11)\n bonus2 bSubSize,Size_All,20;\nif (.@r>=13)\n bonus bDelayrate,-15;\nbonus2 bMagicAtkEle,Ele_Fire,.@val;\nbonus2 bMagicAtkEle,Ele_Earth,.@val;\nbonus2 bMagicAtkEle,Ele_Water,.@val;\nbonus2 bMagicAtkEle,Ele_Holy,.@val;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_mage`,`job_sage`,`job_soullinker`,`job_wizard`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2051,'Illusion_Survivor\'s_Staff','Illusion Survivor\'s Staff','Weapon','2hStaff',1200,100,240,1,2,true,true,true,true,true,true,4,120,true,'.@r = getrefine();\nbonus bDex,2;\nbonus bInt,2;\nbonus bMaxHP,600;\nbonus bUnbreakableWeapon;\nbonus bMatkRate,(.@r/2);\nif (.@r >= 7) {\n bonus2 bMagicAddSize,Size_Small,15;\n bonus2 bMagicAddSize,Size_Medium,15;\n if (.@r >= 9) {\n bonus2 bSubSize,Size_Small,15;\n bonus2 bSubSize,Size_Medium,15;\n if (.@r >= 11) {\n bonus2 bSubDefEle,Ele_Water,15;\n bonus2 bSubDefEle,Ele_Wind,15;\n bonus2 bSubDefEle,Ele_Earth,15;\n bonus2 bSubDefEle,Ele_Fire,15;\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_novice`,`job_priest`,`job_supernovice`,`job_wizard`,`class_upper`,`class_third`,`class_third_upper`,`class_third_baby`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (2053,'Abyss_Staff','Abyss Staff','Weapon','2hStaff',2400,120,270,1,1,true,true,true,true,true,true,true,true,true,true,4,165,true,'bonus2 bSubRace,RC_Player_Human,30;\n.@r = getrefine();\nbonus bHealPower,.@r*2;\nif (.@r>=7) {\n bonus2 bMagicAddClass,Class_All,5;\n bonus2 bSubRace,RC_Player_Human,5;\n}\nif (.@r>=9) {\n bonus2 bMagicAddClass,Class_All,5;\n bonus2 bSubRace,RC_Player_Human,5;\n}\nbonus bUnbreakableWeapon;');
@@ -3219,7 +3219,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`defense`,`slots`,`location_armor`,`armor_level`,`equip_level_min`,`script`) VALUES (15250,'Beginner\'s_Suit','Beginner\'s Suit','Armor',40,1,true,1,100,'bonus bAllStats,1;\nbonus bMaxHP,400;\nbonus bMaxSP,100;\nbonus2 bAddClass,Class_All,2;\nbonus2 bMagicAddClass,Class_All,2;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`slots`,`location_armor`,`armor_level`,`equip_level_min`,`refineable`,`script`) VALUES (15278,'Overwhelm_Str_Armor','Soaring Physical Armor','Armor',2000,120,1,true,1,1,true,'.@r = getrefine();\nbonus bBaseAtk,50;\nif (.@r > 2)\n bonus2 bAddClass,Class_All,.@r/3*2;\nif (.@r > 6) {\n bonus2 bIgnoreDefRaceRate,RC_Brute,30;\n bonus2 bIgnoreDefRaceRate,RC_Demon,30;\n}\nif (.@r > 8) {\n bonus2 bAddRace,RC_Brute,10;\n bonus2 bAddRace,RC_Demon,10;\n}\nif (.@r > 10) {\n bonus2 bAddEle,Ele_Earth,10;\n bonus2 bAddEle,Ele_Wind,10;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`slots`,`location_armor`,`armor_level`,`equip_level_min`,`refineable`,`script`) VALUES (15279,'Overwhelm_Int_Armor','Robust Magical Armor','Armor',900,60,1,true,1,1,true,'.@r = getrefine();\nbonus bMatk,50;\nif (.@r > 2)\n bonus bMatkRate,.@r/3*2;\nif (.@r > 6) {\n bonus2 bIgnoreMdefRaceRate,RC_Brute,30;\n bonus2 bIgnoreMdefRaceRate,RC_Demon,30;\n}\nif (.@r > 8) {\n bonus2 bMagicAddRace,RC_Demon,10;\n bonus2 bMagicAddRace,RC_Brute,10;\n}\nif (.@r > 10) {\n bonus2 bMagicAddEle,Ele_Earth,10;\n bonus2 bMagicAddEle,Ele_Wind,10;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (15280,'S_Cri_Hit_Armor','Critical Hit Shadow Armor','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\n.@val = 7;\nbonus bBaseAtk,15;\nif (.@r > 1) {\n bonus bCritAtkRate,(.@r/2);\n if (.@r >= 7) {\n .@val += 7;\n }\n}\nbonus bCritical,.@val;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (15280,'S_CriticalHit_Armor','Critical Hit Shadow Armor','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\n.@val = 7;\nbonus bBaseAtk,15;\nif (.@r > 1) {\n bonus bCritAtkRate,(.@r/2);\n if (.@r >= 7) {\n .@val += 7;\n }\n}\nbonus bCritical,.@val;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_armor`,`armor_level`,`equip_level_min`,`refineable`,`script`) VALUES (15283,'Armor_of_Rosary','Mighty Black Threaded Armor','Armor',20,800,60,1,true,1,100,true,'.@r = getrefine();\nbonus bBaseAtk,10;\nbonus2 bIgnoreDefRaceRate,RC_All,10;\nif (.@r>=7) {\n bonus bBaseAtk,20;\n bonus2 bIgnoreDefRaceRate,RC_All,20;\n}\nif (.@r>=8) {\n bonus bBaseAtk,20;\n bonus2 bIgnoreDefRaceRate,RC_All,20;\n bonus bUnbreakableArmor;\n}\nif (.@r>=9) {\n bonus bBaseAtk,30;\n bonus2 bIgnoreDefRaceRate,RC_All,20;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`job_blacksmith`,`class_third`,`class_third_upper`,`class_third_baby`,`location_armor`,`armor_level`,`equip_level_min`,`refineable`,`script`) VALUES (15343,'Supplement_Part_Str_','Supplement Part STR','Armor',25000,2000,80,1,true,true,true,true,true,1,130,true,'bonus2 bAddClass,Class_All,5+(getrefine()/4);');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`job_blacksmith`,`class_third`,`class_third_upper`,`class_third_baby`,`location_armor`,`armor_level`,`equip_level_min`,`refineable`,`script`) VALUES (15344,'Upgrade_Part_Plate_','Upgrade Part - Gloves','Armor',25000,3000,110,1,true,true,true,true,true,1,130,true,'.@r = getrefine();\n.@val = 10;\nif (.@r>6) {\n bonus2 bSubSize,Size_Large,10;\n bonus2 bMagicSubSize,Size_Large,10;\n if (.@r>8) {\n .@val += 5;\n }\n}\nbonus2 bSubSize,Size_Small,.@val;\nbonus2 bMagicSubSize,Size_Small,.@val;\nbonus2 bSubSize,Size_Medium,.@val;\nbonus2 bMagicSubSize,Size_Medium,.@val;');
@@ -3857,7 +3857,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19131,'Radio_Antenna_','Radio Antenna','Armor',1500,2,1,true,1,1,true,347,'bonus bMdef,5;\nbonus bCritical,5;\nbonus bFlee,5;\nskill "MG_LIGHTNINGBOLT",1;\nbonus4 bAutoSpellWhenHit,"MG_THUNDERSTORM",5,30,1;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`slots`,`job_all`,`job_novice`,`job_supernovice`,`location_head_mid`,`armor_level`,`view`,`script`) VALUES (19132,'Masquerade_','Masquerade','Armor',20,100,1,true,false,false,true,1,78,'bonus2 bAddRace,RC_DemiHuman,3;\nbonus2 bAddRace,RC_Player_Human,3;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_head_mid`,`location_head_low`,`armor_level`,`equip_level_min`,`view`,`script`) VALUES (19133,'Odin_Mask_','Odin\'s Mask','Armor',20,100,1,1,true,true,1,1,480,'bonus2 bSubClass,Class_Boss,2;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19134,'Wickebines_Black_Cat_Ears','Wickebine\'s Black Cat Ears','Armor',20,200,4,1,true,1,1,true,368,'bonus bFlee,10;\nbonus bCritAtkRate,10;\nautobonus "{ bonus2 bIgnoreMdefClassRate,Class_Normal,100; bonus2 bIgnoreMdefClassRate,Class_Boss,100; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_STEAL; }";');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19134,'Whikebain_Ears_K','Wickebine\'s Black Cat Ears','Armor',20,200,4,1,true,1,1,true,368,'bonus bFlee,10;\nbonus bCritAtkRate,10;\nautobonus "{ bonus2 bIgnoreMdefClassRate,Class_Normal,100; bonus2 bIgnoreMdefClassRate,Class_Boss,100; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_STEAL; }";');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_head_top`,`armor_level`,`refineable`,`view`,`script`) VALUES (19135,'Spirit_Of_Chung_E','Spirit of Green Maiden','Armor',20,10,true,1,true,882,'.@r = getrefine();\nbonus2 bDropAddClass,Class_All,(.@r/2);\nbonus2 bExpAddClass,Class_All,(.@r/2);\nbonus bMaxHPrate,2*(.@r/4);\nbonus bMaxSPrate,2*(.@r/4);\nif (.@r>=9) {\n bonus bHPrecovRate,40;\n bonus bSPrecovRate,40;\n}\nif (.@r>=12) {\n bonus bMaxHPrate,3;\n bonus bMaxSPrate,3;\n}\nautobonus "{ bonus bCritAtkRate,30; bonus bMatkRate,30; }",1,5000,BF_WEAPON|BF_MAGIC,"{ active_transform 1519,5000; }";');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`slots`,`location_head_top`,`armor_level`,`refineable`,`view`,`script`) VALUES (19136,'Spirit_Of_Chung_E_','Spirit of Green Maiden','Armor',20,10,1,true,1,true,882,'.@r = getrefine();\nbonus2 bDropAddClass,Class_All,(.@r/2);\nbonus2 bExpAddClass,Class_All,(.@r/2);\nbonus bMaxHPrate,(.@r/4);\nbonus bMaxSPrate,(.@r/4);\nif (.@r>=9) {\n bonus bHPrecovRate,40;\n bonus bSPrecovRate,40;\n}\nif (.@r>=12) {\n bonus bMaxHPrate,3;\n bonus bMaxSPrate,3;\n}\nautobonus "{ bonus bCritAtkRate,30; bonus bMatkRate,30; }",1,5000,BF_WEAPON|BF_MAGIC,"{ active_transform 1519,5000; }";');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_head_low`,`armor_level`,`equip_level_min`,`view`,`script`) VALUES (19137,'Strawberry_In_Mouth_','Strawberry Mouth Guard','Armor',20,100,true,1,80,861,'bonus bVit,2;\nbonus bLongAtkDef,5;\nbonus bShortWeaponDamageReturn,5;\nif (Baselevel>=100) {\n bonus bMaxHP,2000;\n}\nelse {\n bonus bMaxHP,200;\n}');
@@ -3938,7 +3938,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`slots`,`loca
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`refineable`,`view`,`script`) VALUES (19263,'General_Helmet_','General\'s Helm','Armor',20,800,12,1,true,1,true,729,'.@r = getrefine();\nbonus bBaseAtk,(.@r/2)*15;\nif (.@r>6) {\n bonus bAspdRate,10;\n}\nif (.@r>8) {\n bonus bAspd,1;\n bonus2 bAddClass,Class_All,5;\n}\nif (.@r>10) {\n bonus bCritAtkRate,15;\n}\n.@val = max(min(.@r-15,5),0);\nbonus bFixedCast,-.@val*100;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`refineable`,`view`,`script`) VALUES (19264,'GoldFish_Hat','Gold Fish Head Hat','Armor',20,400,2,1,true,1,true,1645,'.@r = getrefine();\nif (.@r>8) {\n bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,10,1;\n}\nif (.@r<6) {\n autobonus "{ bonus2 bMagicAtkEle,Ele_Holy,10; }",10,60000,BF_MAGIC,"{ specialeffect2 EF_ASPERSIO; }";\n}\nelse {\n autobonus "{ bonus2 bMagicAtkEle,Ele_Holy,10; }",(10+(.@r*2)),60000,BF_MAGIC,"{ specialeffect2 EF_ASPERSIO; }";\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`refineable`,`view`,`script`) VALUES (19265,'Smoky_TransformHat','Smokie Transformation Leaf','Armor',600,7,1,true,1,true,1646,'.@r = getrefine();\nbonus2 bMagicAtkEle,Ele_All,.@r;\nautobonus "{ .@r = getrefine(); bonus3 bAutoSpell,\\"MG_COLDBOLT\\",2,50; bonus3 bAutoSpell,\\"MG_FIREBOLT\\",2,50; bonus3 bAutoSpell,\\"MG_LIGHTNINGBOLT\\",2,50; bonus3 bAutoSpell,\\"WZ_EARTHSPIKE\\",2,50; if (.@r>=7) { bonus3 bAutoSpell,\\"WZ_FROSTNOVA\\",5,40; if (.@r>=8) { bonus3 bAutoSpell,\\"MG_THUNDERSTORM\\",5,30; if (BaseLevel>100) { if (.@r>=9) { bonus3 bAutoSpell,\\"WL_HELLINFERNO\\",5,20; if (.@r>=10) { bonus3 bAutoSpell,\\"WL_CHAINLIGHTNING\\",3,10; } } } } } }",1,5000,BF_WEAPON,"{ active_transform 1056,5000; /*SMOKIE*/ }";');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19266,'Survive_Circlet_','Survivor\'s Circlet','Armor',500,10,1,true,1,1,true,1220,'.@r = getrefine();\nbonus bInt,3;\nbonus bMatk,10*(.@r/2)+(BaseLevel > 129 ? 50 : 0);\nif (.@r >= 10) {\n bonus bMatkRate,5;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19266,'Survive_Circlet_K','Survivor\'s Circlet','Armor',500,10,1,true,1,1,true,1220,'.@r = getrefine();\nbonus bInt,3;\nbonus bMatk,10*(.@r/2)+(BaseLevel > 129 ? 50 : 0);\nif (.@r >= 10) {\n bonus bMatkRate,5;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`location_head_low`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19267,'SurviveOrb_K','Survivor\'s Orb','Armor',300,2,true,1,1,true,1488,'bonus bMdef,2;\nbonus bVariableCastrate,-2;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`location_head_low`,`armor_level`,`view`,`script`) VALUES (19268,'FaceWorm_Breath','Gigant Snake\'s Breath','Armor',20,300,2,true,1,1050,'bonus2 bMagicAtkEle,Ele_Fire,1;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`slots`,`location_head_top`,`armor_level`,`equip_level_min`,`refineable`,`view`,`script`) VALUES (19269,'Angel_Of_Happiness_J','Happy Flapping Angel Wings','Armor',20,500,2,1,true,1,30,true,1251,'.@r = getrefine();\n.@a = 15;\nif (.@r >= 7)\n .@a += 15;\nif (.@r>=8)\n bonus2 bResEff,Eff_Stone,10000;\nif (.@r>=9)\n .@a += 20;\nbonus2 bAddRace2,RC2_CLOCKTOWER,.@a;\nbonus2 bMagicAddRace2,RC2_CLOCKTOWER,.@a;\nbonus2 bSubRace2,RC2_CLOCKTOWER,.@a;\nbonus3 bAddClassDropItem,1061,1193,50;\nbonus3 bAddClassDropItem,1061,1275,50;\nbonus3 bAddClassDropItem,1061,2920,50;\nbonus3 bAddClassDropItem,1061,1016,50;\nbonus3 bAddClassDropItem,1061,1101,50;\nbonus3 bAddClassDropItem,1061,1102,50;\nbonus3 bAddClassDropItem,1061,2917,50;\nbonus3 bAddClassDropItem,1061,2916,50;\nbonus3 bAddClassDropItem,1061,1270,50;\nbonus3 bAddClassDropItem,1061,1269,50;\nbonus3 bAddClassDropItem,1061,1209,50;\nbonus3 bAddClassDropItem,1061,1378,50;\nbonus3 bAddClassDropItem,1061,1109,50;\nbonus3 bAddClassDropItem,1061,1111,50;\nbonus3 bAddClassDropItem,1061,1377,50;\nbonus3 bAddClassDropItem,1061,1205,50;\nbonus3 bAddClassDropItem,1061,1213,50;\nbonus3 bAddClassDropItem,1061,1131,50;\nbonus3 bAddClassDropItem,1061,1219,50;\nbonus3 bAddClassDropItem,1061,1191,50;\nbonus3 bAddClassDropItem,1061,1203,50;\nbonus3 bAddClassDropItem,1061,2919,50;\nbonus3 bAddClassDropItem,1061,2479,50;\nbonus3 bAddClassDropItem,1061,2478,50;\nbonus3 bAddClassDropItem,1061,1189,50;\nbonus3 bAddClassDropItem,1061,1686,50;\nbonus3 bAddClassDropItem,1061,1190,50;\nbonus3 bAddClassDropItem,1061,1087,50;\nbonus3 bAddClassDropItem,1061,1023,50;\nbonus3 bAddClassDropItem,1061,2923,50;\nbonus3 bAddClassDropItem,1061,2921,50;\nbonus3 bAddClassDropItem,1061,1216,50;\nbonus3 bAddClassDropItem,1061,1199,50;\nbonus3 bAddClassDropItem,1061,1195,50;\nbonus3 bAddClassDropItem,1061,1281,50;\nbonus3 bAddClassDropItem,1061,1215,50;\nbonus3 bAddClassDropItem,1061,1622,50;\nbonus3 bAddClassDropItem,1061,2918,50;\nbonus3 bAddClassDropItem,1061,3074,50;\nbonus3 bAddClassDropItem,1061,1204,50;\nbonus3 bAddClassDropItem,1061,1179,50;');
@@ -5633,8 +5633,8 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_sha
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_shield`,`equip_level_min`,`refineable`,`script`) VALUES (24336,'S_Gemstone_Shield_II','Gemstone Shadow Shield II','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bDef,5;\nif (.@r >= 7) {\n bonus bUseSPrate,-3;\n}\nelse {\n bonus bUseSPrate,-2;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24337,'S_Bearer\'s_Armor_II','Bearer\'s Shadow Armor II','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bMDef,1;\nif (.@r >= 7) {\n bonus bMaxHPrate,3;\n}\nelse {\n bonus bMaxHPrate,1;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_shoes`,`equip_level_min`,`refineable`,`script`) VALUES (24338,'S_Bearer\'s_Shoes_II','Bearer\'s Shadow Shoes II','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bMaxSP,50;\nif (.@r >= 7) {\n bonus bMaxHPrate,3;\n}\nelse {\n bonus bMaxHPrate,1;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_right_accessory`,`equip_level_min`,`refineable`,`script`) VALUES (24339,'S_Almighty_Earring','Almighty Shadow Earring','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bAllStats,.@r;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_left_accessory`,`equip_level_min`,`refineable`,`script`) VALUES (24340,'S_Almighty_Pendant','Almighty Shadow Pendant','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bAllStats,.@r;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_right_accessory`,`equip_level_min`,`refineable`,`script`) VALUES (24339,'S_AllMighty_Earring','Almighty Shadow Earring','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bAllStats,.@r;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_left_accessory`,`equip_level_min`,`refineable`,`script`) VALUES (24340,'S_AllMighty_Pendant','Almighty Shadow Pendant','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bAllStats,.@r;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_shoes`,`equip_level_min`,`refineable`,`script`) VALUES (24341,'S_All_Race_Shoes','All Race Shadow Shoes','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nif (.@r >= 9) {\n .@val = 5;\n} else if (.@r >= 7) {\n .@val = 3;\n}\nelse {\n .@val = 2;\n}\nbonus2 bAddRace,RC_All,.@val;\nbonus2 bMagicAddRace,RC_All,.@val;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_shield`,`equip_level_min`,`refineable`,`script`) VALUES (24342,'S_All_Race_Shield','All Race Shadow Shield','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nif (.@r >= 9) {\n .@val = 3;\n} else if (.@r >= 7) {\n .@val = 2;\n}\nelse {\n .@val = 1;\n}\nbonus2 bSubRace,RC_All,.@val;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_weapon`,`equip_level_min`,`refineable`,`script`) VALUES (24343,'S_Blitz_Weapon','Blitz Shadow Weapon','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bBaseAtk,.@r;\nbonus bMatk,.@r;\nbonus bAspdRate,5+.@r/2;\nif (.@r >= 7) {\n bonus bAspd,1;\n if (.@r >= 9) {\n bonus bDelayrate,-1;\n }\n}');
@@ -5695,7 +5695,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_sha
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24398,'S_Magical_Armor','Magical Shadow Armor','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bMatk,20;\nif (.@r >= 9) {\n bonus bMatkRate,5;\n} else if (.@r >= 7) {\n bonus bMatkRate,2;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_shield`,`equip_level_min`,`refineable`,`script`) VALUES (24399,'S_Immune_Athena_Shield','Immune Athena Shadow Shield','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bDef,50+20*(.@r/2);');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_shoes`,`equip_level_min`,`refineable`,`script`) VALUES (24400,'S_Hard_Champion_Shoes','Hard Champion Shadow Shoes','Shadowgear',true,1,true,'.@r = getrefine()/2;\nbonus bMaxHP,.@r*10+200;\nbonus bMaxSP,100;\nbonus bMaxHPrate,.@r;\nbonus bMaxSPrate,.@r;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24401,'S_Kingbird_Ancient_Armor','Kingbird Ancient Shadow Armor','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bBaseAtk,15;\nbonus bLongAtkRate,.@r/2;\nif (.@r >= 7) {\n bonus bHit,30;\n}\nelse {\n bonus bHit,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24401,'S_KingbirdAncient_Armor','Kingbird Ancient Shadow Armor','Shadowgear',true,1,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus bBaseAtk,15;\nbonus bLongAtkRate,.@r/2;\nif (.@r >= 7) {\n bonus bHit,30;\n}\nelse {\n bonus bHit,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`job_gunslinger`,`job_rebellion`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24402,'S_Rebellion_Armor','Rebellion Shadow Armor','Shadowgear',10,true,true,true,100,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus2 bSkillCooldown,"RL_HEAT_BARREL",-1000*(1+.@r/2);');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`job_kagerouoboro`,`job_ninja`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24403,'S_Kagerou_Armor','Kagerou Shadow Armor','Shadowgear',10,true,true,true,100,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus2 bSkillAtk,"KO_HUUMARANKA",20+.@r*5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`job_kagerouoboro`,`job_ninja`,`location_shadow_armor`,`equip_level_min`,`refineable`,`script`) VALUES (24404,'S_Oboro_Armor','Oboro Shadow Armor','Shadowgear',10,true,true,true,100,true,'.@r = getrefine();\nbonus bMaxHP,.@r*10;\nbonus2 bSkillAtk,"NJ_KOUENKA",20+.@r*5;\nbonus2 bSkillAtk,"NJ_HYOUSENSOU",20+.@r*5;\nbonus2 bSkillAtk,"NJ_HUUJIN",20+.@r*5;');
@@ -6199,7 +6199,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`slots`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`equip_level_min`,`script`) VALUES (28434,'Boxer_Glove','Fist Fighter\'s Glove','Armor',20,400,1,true,true,1,90,'bonus bStr,2;\nbonus bMaxSP,100;\nbonus2 bAddRace,RC_All,2;\nskill "MO_ABSORBSPIRITS",1;\nif (readparam(bStr)>99)\n bonus2 bAddRace,RC_All,5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`slots`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`equip_level_min`,`script`) VALUES (28437,'ArchPriest_Glove','Hibram\'s Gloves','Armor',20,400,1,true,true,1,90,'skill "AL_HEAL",3;\nbonus bInt,2;\nbonus bMatkRate,2;\nbonus bUseSPrate,-5;\nif (readparam(bInt)>=110)\n bonus bMatkRate,5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`slots`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`equip_level_min`,`script`) VALUES (28438,'Fairy_Leaf_Powder','Fairy Leaf Powder','Armor',20,400,1,true,true,1,90,'bonus bDex,2;\nbonus bDelayrate,-5;\nbonus bLongAtkRate,2;\nskill "SM_MAGNUM",3;\nif (readparam(bDex)>=100)\n bonus bLongAtkRate,5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`slots`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`script`) VALUES (28439,'Sea_Otter_Mini_Fan','Sea Otter Mini Fan','Armor',100,1,true,true,1,'bonus bAllStats,1;\nbonus2 bExpAddClass,Class_All,5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`slots`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`script`) VALUES (28439,'SeeOtter_Fan','Sea Otter Mini Fan','Armor',100,1,true,true,1,'bonus bAllStats,1;\nbonus2 bExpAddClass,Class_All,5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`slots`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`script`) VALUES (28440,'FurSeal_Fan','Seal Mini Fan','Armor',3000000,100,1,true,true,1,'bonus2 bExpAddClass,Class_All,5;\nbonus bAllStats,1;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`job_rogue`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`equip_level_min`,`script`) VALUES (28441,'Vigilante_Bedge','Vigilante Badge','Armor',200,2,true,true,true,true,true,true,1,100,'bonus bFlee,10;\nbonus bLongAtkRate,5;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`defense`,`job_barddancer`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_accessory`,`location_left_accessory`,`armor_level`,`equip_level_min`,`script`) VALUES (28442,'Hippie_Feather','Hippie Feather','Armor',200,2,true,true,true,true,true,true,1,100,'bonus bCritical,5;\nbonus bFlee,5;');
@@ -7544,7 +7544,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`at
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_stargladiator`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540004,'Ep172_1h_Book','Sloth Text','Weapon','Book',500,210,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bUnbreakableWeapon;\nbonus2 bSkillAtk,"SJ_NEWMOONKICK",10;\nbonus bBaseAtk,12*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SJ_NEWMOONKICK",15;\n}\nif (.@r>=9) {\n bonus bAspdRate,10;\n}\nif (.@r>=11) {\n bonus2 bSkillAtk,"SJ_FULLMOONKICK",25;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_sage`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540005,'Ep172_1h_Book2','Sloth Bible','Weapon','Book',700,160,220,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nautobonus "{ bonus2 bSubClass,Class_Normal,15; bonus2 bSPRegenRate,300,1000; }",1,5000,BF_WEAPON|BF_MAGIC;\nbonus bVariableCastrate,-3*(.@r/3);\nbonus bMatk,6*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",25;\n}\nif (.@r>=9) {\n bonus bAspdRate,10;\n}\nif (.@r>=11) {\n bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",30;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`attack`,`range`,`job_sage`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (540009,'SB_B_Book','Spell Bolt Booster Book','Weapon','Book',150,1,true,true,true,true,true,4,100,true,100,true,true,true,true,true,true,true,'.@r = getrefine();\nbonus bUnbreakableWeapon;\nbonus bMatkRate,2;\nbonus bMatk,160+(3*.@r)+3*(min(BaseLevel,195)/15);\nif (.@r>=7) {\n .@val = getskilllv("SA_AUTOSPELL");\n bonus2 bMagicAtkEle,Ele_Fire,.@val;\n bonus2 bMagicAtkEle,Ele_Earth,.@val;\n bonus2 bMagicAtkEle,Ele_Water,.@val;\n bonus2 bMagicAtkEle,Ele_Wind,.@val;\n}\nif (.@r>=9) {\n bonus bAspd,1;\n bonus2 bSkillAtk,"WZ_HEAVENDRIVE",25;\n bonus2 bSkillAtk,"WZ_EARTHSPIKE",25;\n bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",25;\n}\nif (.@r>=11) {\n bonus2 bMagicAtkEle,Ele_Fire,15;\n bonus2 bMagicAtkEle,Ele_Earth,15;\n bonus2 bMagicAtkEle,Ele_Water,15;\n bonus2 bMagicAtkEle,Ele_Wind,15;\n bonus bAspd,1;\n}\nif (.@r>=13) {\n bonus2 bSkillAtk,"WZ_HEAVENDRIVE",15;\n bonus2 bSkillAtk,"WZ_EARTHSPIKE",15;\n bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_stargladiator`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540010,'Up_Thousand_Sun','Patent One Sky One Sun','Weapon','Book',1100,200,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bBaseAtk,.@r/2*15;\nbonus bShortAtkRate,4*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SJ_PROMINENCEKICK",20;\n bonus bAspdRate,10;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"SJ_SOLARBURST",25;\n}\nif (.@r>=11) {\n bonus2 bAddSize,Size_All,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_stargladiator`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540010,'Up_OneSkyOneSun','Patent One Sky One Sun','Weapon','Book',1100,200,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bBaseAtk,.@r/2*15;\nbonus bShortAtkRate,4*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SJ_PROMINENCEKICK",20;\n bonus bAspdRate,10;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"SJ_SOLARBURST",25;\n}\nif (.@r>=11) {\n bonus2 bAddSize,Size_All,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_priest`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540011,'Up_Demon_Hunting_Bible','Patent Exorcist\'s Bible','Weapon','Book',20,700,205,190,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bBaseAtk,.@r/2*10;\nbonus bMatk,.@r/2*10;\nbonus2 bSkillAtk,"AB_DUPLELIGHT",25*(.@r/3);\nbonus2 bSkillAtk,"AB_JUDEX",25*(.@r/3);\nif (.@r>=7) {\n bonus bAspdRate,10;\n bonus2 bMagicAtkEle,Ele_Holy,15;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"AB_DUPLELIGHT",30;\n bonus2 bSkillAtk,"AB_JUDEX",30;\n}\nif (.@r>=11) {\n .@i = getskilllv("AB_JUDEX");\n bonus3 bAutoSpell,"AB_JUDEX",(.@i > 5 ? .@i : 5),100;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_sage`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540019,'Adulter_F_M_Book','Adulter Fides Magic Book','Weapon','Book',1200,170,200,1,2,true,true,true,true,true,4,180,true,'.@r = getrefine();\nbonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10;\nbonus bMatk,12*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",20;\n if (.@r>=9) {\n bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-1000;\n if (.@r>=11) {\n bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",25;\n if (.@r>=12) {\n bonus2 bMagicAtkEle,Ele_Neutral,15;\n }\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_sage`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (540020,'Adulter_F_P_Book','Adulter Fides Poison Book','Weapon','Book',1300,170,200,1,2,true,true,true,true,true,4,180,true,'.@r = getrefine();\nbonus2 bSkillAtk,"SO_POISON_BUSTER",10;\nbonus bMatk,12*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SO_POISON_BUSTER",20;\n if (.@r>=9) {\n bonus2 bSkillCooldown,"SO_POISON_BUSTER",-1000;\n if (.@r>=11) {\n bonus2 bSkillAtk,"SO_POISON_BUSTER",25;\n if (.@r>=12) {\n bonus2 bMagicAtkEle,Ele_Poison,15;\n }\n }\n }\n}');
@@ -7570,7 +7570,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`at
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_sage`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550012,'Up_Shadow_Staff_K','Patent Shadow Staff','Weapon','Staff',20,750,40,195,1,2,true,true,true,true,true,4,150,true,'bonus bUnbreakableWeapon;\n.@r = getrefine();\nbonus bMatk,.@r/2*15;\nbonus2 bSkillAtk,"SO_EARTHGRAVE",12*(.@r/3);\nif (.@r>=7) {\n bonus2 bMagicAtkEle,Ele_Earth,15;\n bonus2 bMagicAtkEle,Ele_Neutral,15;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",25;\n bonus bVariableCastrate,-7;\n}\nif (.@r>=11) {\n bonus bVariableCastrate,-8;\n bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-1000;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_sage`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550013,'Up_Freezing_Rod','Patent Chilling Cane','Weapon','Staff',750,40,195,1,2,true,true,true,true,true,4,150,true,'bonus bUnbreakableWeapon;\n.@r = getrefine();\nbonus bMatk,.@r/2*10;\nbonus2 bSkillAtk,"SO_DIAMONDDUST",.@r/3*12;\nif (.@r>=7) {\n bonus2 bMagicAddEle,Ele_All,15;\n bonus2 bSkillAtk,"SO_VARETYR_SPEAR",15;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20;\n bonus bVariableCastrate,-7;\n}\nif (.@r>=11) {\n bonus bVariableCastrate,-8;\n bonus2 bSkillCooldown,"SO_VARETYR_SPEAR",-2000;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_summoner`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550014,'Up_MeawFoxtail','Patent Meowmeow Foxtail','Weapon','Staff',20,1200,350,350,1,2,true,true,4,150,true,'bonus bUnbreakableWeapon;\n.@r = getrefine();\nbonus bMatk,15*(.@r/2);\nbonus bBaseAtk,15*(.@r/2);\nbonus2 bAddClass,Class_All,2*(.@r/3);\nbonus bMatkRate,2*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",25;\n bonus2 bSkillAtk,"SU_SV_STEMSPEAR",25;\n}\nif (.@r>=9) {\n bonus bVariableCastrate,-10;\n bonus bAspdRate,10;\n}\nif (.@r>=11) {\n bonus2 bSkillAtk,"SU_PICKYPECK",25;\n bonus2 bSkillAtk,"SU_CN_METEOR",25;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_soullinker`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550015,'Up_Spirit_Pendulum_','Patent Spirit Pendulum','Weapon','Staff',1200,70,190,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bMatk,15*(.@r/2);\nbonus2 bMagicAddEle,Ele_All,2*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SP_SPA",15;\n bonus bVariableCastrate,-10;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"SP_SWHOO",20;\n}\nif (.@r>=11) {\n autobonus "{ bonus2 bSPRegenRate,230,10000; }",70,10000,BF_MAGIC;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_soullinker`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550015,'Up_SoulWeight','Patent Spirit Pendulum','Weapon','Staff',1200,70,190,1,2,true,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bMatk,15*(.@r/2);\nbonus2 bMagicAddEle,Ele_All,2*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SP_SPA",15;\n bonus bVariableCastrate,-10;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"SP_SWHOO",20;\n}\nif (.@r>=11) {\n autobonus "{ bonus2 bSPRegenRate,230,10000; }",70,10000,BF_MAGIC;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_priest`,`class_third`,`class_third_upper`,`class_third_baby`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550024,'Adulter_F_Wand','Adulter Fides Wand','Weapon','Staff',1500,160,210,1,2,true,true,true,true,true,4,180,true,'.@r = getrefine();\nbonus bUnbreakableWeapon;\nbonus2 bSkillAtk,"AB_ADORAMUS",10;\nbonus bMatk,12*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"AB_ADORAMUS",20;\n if (.@r>=9) {\n bonus2 bMagicAddSize,Size_All,15;\n if (.@r>=11) {\n bonus2 bSkillAtk,"AB_ADORAMUS",25;\n if (.@r>=12) {\n bonus2 bMagicAtkEle,Ele_Holy,15;\n }\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_soullinker`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550025,'Adulter_F_S_Stick','Adulter Fides Soul Stick','Weapon','Staff',1900,160,205,1,2,true,true,4,180,true,'.@r = getrefine();\nbonus bUnbreakableWeapon;\nbonus2 bSkillAtk,"SP_SWHOO",10;\nbonus bMatk,12*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SP_SWHOO",20;\n if (.@r>=9) {\n bonus bVariableCastrate,-10;\n if (.@r>=11) {\n bonus2 bSkillAtk,"SP_SWHOO",25;\n if (.@r>=12) {\n bonus2 bMagicAtkEle,Ele_Holy,15;\n bonus2 bMagicAtkEle,Ele_Fire,15;\n bonus2 bMagicAtkEle,Ele_Earth,15;\n bonus2 bMagicAtkEle,Ele_Water,15;\n bonus2 bMagicAtkEle,Ele_Wind,15;\n bonus2 bMagicAtkEle,Ele_Ghost,15;\n bonus2 bMagicAtkEle,Ele_Dark,15;\n }\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`magic_attack`,`range`,`slots`,`job_soullinker`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (550026,'Adulter_F_D_Wand','Adulter Fides Dark Wand','Weapon','Staff',1600,160,220,1,2,true,true,4,180,true,'.@r = getrefine();\nbonus bUnbreakableWeapon;\nbonus2 bSkillAtk,"SP_CURSEEXPLOSION",10;\nbonus bMatk,12*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"SP_CURSEEXPLOSION",20;\n if (.@r>=9) {\n bonus2 bMagicAddSize,Size_All,15;\n if (.@r>=11) {\n bonus2 bSkillAtk,"SP_CURSEEXPLOSION",25;\n if (.@r>=12) {\n bonus2 bMagicAtkEle,Ele_Dark,15;\n }\n }\n }\n}');
@@ -7736,13 +7736,13 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`pr
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (810002,'Adulter_F_Rifle','Adulter Fides Rifle','Weapon','Rifle',1500,280,9,2,true,true,true,4,180,true,'.@r = getrefine();\nbonus bUnbreakableWeapon;\nbonus2 bSkillAtk,"RL_HAMMER_OF_GOD",10;\nbonus bBaseAtk,18*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",20;\n if (.@r>=9) {\n bonus2 bSkillCooldown,"RL_HAMMER_OF_GOD",-8000;\n if (.@r>=11) {\n bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",25;\n if (.@r>=12) {\n bonus bLongAtkRate,15;\n }\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`attack`,`range`,`job_gunslinger`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (810003,'2Para_Rifle_GS','Paradise Gunslinger Rifle','Weapon','Rifle',180,9,true,true,true,3,45,100,true,true,true,true,true,true,true,'bonus2 bAddClass,Class_All,3;\nif (BaseLevel>=60)\n bonus bLongAtkRate,10;\nif (BaseLevel>=75)\n bonus2 bSkillAtk,"GS_TRACKING",10;\nif (BaseLevel>=90)\n bonus2 bSkillAtk,"GS_TRACKING",15;');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_gunslinger`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (820000,'Ep172_1h_Shotgun','Lust Shatter','Weapon','Shotgun',1600,310,9,2,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus bSplashRange,1;\nbonus2 bSkillAtk,"RL_SLUGSHOT",10;\nbonus bAspdRate,3*(.@r/3);\nbonus bBaseAtk,6*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_S_STORM",10;\n bonus2 bSkillAtk,"RL_SLUGSHOT",15;\n}\nif (.@r>=9) {\n bonus2 bSkillCooldown,"RL_S_STORM",-1000;\n bonus2 bSkillCooldown,"RL_SLUGSHOT",-2000;\n}\nif (.@r>=11) {\n autobonus3 "{ bonus2 bSkillAtk,\\"RL_S_STORM\\",25; }",1000,10000,"RL_SLUGSHOT";\n bonus2 bSkillAtk,"RL_SLUGSHOT",25;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (820001,'Up_Demon_Slayer_Shot','Patent Demon Slayer Shot','Weapon','Shotgun',2300,295,9,2,true,true,true,4,150,true,'.@r = getrefine();\nbonus bSplashRange,1;\nbonus bLongAtkRate,3*(.@r/2);\nbonus bMaxSPrate,2*(.@r/3);\nif (.@r>=7) {\n bonus2 bAddClass,Class_Boss,15;\n bonus2 bAddRace,RC_Undead,15;\n bonus2 bAddRace,RC_Demon,15;\n}\nif (.@r>=9) {\n autobonus3 "{ bonus bBaseAtk,50; bonus bLongAtkRate,10; }",1000,90000,"RL_P_ALTER";\n}\nif (.@r>=11) {\n bonus2 bSkillAtk,"RL_BANISHING_BUSTER",35;\n bonus2 bSkillAtk,"RL_S_STORM",35;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (820001,'Up_Demon_S_Shot','Patent Demon Slayer Shot','Weapon','Shotgun',2300,295,9,2,true,true,true,4,150,true,'.@r = getrefine();\nbonus bSplashRange,1;\nbonus bLongAtkRate,3*(.@r/2);\nbonus bMaxSPrate,2*(.@r/3);\nif (.@r>=7) {\n bonus2 bAddClass,Class_Boss,15;\n bonus2 bAddRace,RC_Undead,15;\n bonus2 bAddRace,RC_Demon,15;\n}\nif (.@r>=9) {\n autobonus3 "{ bonus bBaseAtk,50; bonus bLongAtkRate,10; }",1000,90000,"RL_P_ALTER";\n}\nif (.@r>=11) {\n bonus2 bSkillAtk,"RL_BANISHING_BUSTER",35;\n bonus2 bSkillAtk,"RL_S_STORM",35;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (820002,'Adulter_F_Shotgun','Adulter Fides Shotgun','Weapon','Shotgun',2000,320,9,2,true,true,true,4,180,true,'.@r = getrefine();\nbonus bSplashRange,1;\nbonus2 bSkillAtk,"RL_S_STORM",10;\nbonus bBaseAtk,18*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_S_STORM",20;\n if (.@r>=9) {\n bonus2 bSkillCooldown,"RL_S_STORM",-1000;\n if (.@r>=11) {\n bonus2 bSkillAtk,"RL_S_STORM",25;\n if (.@r>=12) {\n bonus bLongAtkRate,15;\n }\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (830000,'Boost_Gatling','Booster Gatling','Weapon','Gatling',170,9,2,true,true,true,4,100,true,'bonus2 bAddClass,Class_All,5;\n.@r = getrefine();\nbonus bBaseAtk,.@r*3;\nbonus bBaseAtk,min(BaseLevel,180)/15*3;\nif (.@r>=7) {\n bonus bLongAtkRate,getskilllv("GS_SINGLEACTION");\n}\nif (.@r>=9) {\n bonus bLongAtkRate,10;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_gunslinger`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (830001,'Ep172_1h_Gatling','Lust Crusher','Weapon','Gatling',2000,230,9,2,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus2 bSkillAtk,"RL_FIRE_RAIN",10;\nbonus bAspdRate,3*(.@r/3);\nbonus bBaseAtk,6*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_R_TRIP",10;\n bonus2 bSkillAtk,"RL_FIRE_RAIN",15;\n}\nif (.@r>=9) {\n bonus2 bSkillCooldown,"RL_FIRE_RAIN",-2000;\n}\nif (.@r>=11) {\n autobonus3 "{ bonus2 bSkillAtk,\\"RL_R_TRIP\\",15; }",1000,10000,"RL_FIRE_RAIN";\n bonus2 bSkillAtk,"RL_FIRE_RAIN",25;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (830002,'Up_The_Black','Patent The Black','Weapon','Gatling',3000,225,9,2,true,true,true,4,150,true,'.@r = getrefine();\nbonus bBaseAtk,15*(.@r/2);\nbonus bLongAtkRate,4*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_R_TRIP",20;\n bonus2 bSkillUseSPrate,"RL_R_TRIP",10;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"RL_R_TRIP",15;\n autobonus3 "{ bonus bBaseAtk,50; bonus bLongAtkRate,10; }",1000,90000,"RL_P_ALTER";\n}\nif (.@r>=11) {\n bonus2 bAddSize,Size_All,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (830002,'Up_The_Black_Gatling','Patent The Black','Weapon','Gatling',3000,225,9,2,true,true,true,4,150,true,'.@r = getrefine();\nbonus bBaseAtk,15*(.@r/2);\nbonus bLongAtkRate,4*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_R_TRIP",20;\n bonus2 bSkillUseSPrate,"RL_R_TRIP",10;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"RL_R_TRIP",15;\n autobonus3 "{ bonus bBaseAtk,50; bonus bLongAtkRate,10; }",1000,90000,"RL_P_ALTER";\n}\nif (.@r>=11) {\n bonus2 bAddSize,Size_All,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (830003,'Adulter_F_Gatling','Adulter Fides Gatling Gun','Weapon','Gatling',1500,250,9,2,true,true,true,4,180,true,'.@r = getrefine();\nbonus2 bSkillAtk,"RL_R_TRIP",10;\nbonus bBaseAtk,18*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_R_TRIP",20;\n if (.@r>=9) {\n bonus2 bAddSize,Size_All,15;\n if (.@r>=11) {\n bonus2 bSkillAtk,"RL_R_TRIP",25;\n if (.@r>=12) {\n bonus bLongAtkRate,15;\n }\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`attack`,`range`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (830004,'3Para_Gatling_RL','Paradise Rebellion Gatling Gun','Weapon','Gatling',200,9,true,true,true,4,100,100,true,true,true,true,true,true,true,'.@a = getskilllv("GS_SINGLEACTION");\nbonus2 bAddClass,Class_All,5;\nbonus bLongAtkRate,1*.@a;\nif (BaseLevel>=105) {\n bonus2 bSkillCooldown,"RL_FIRE_RAIN",-1000;\n bonus2 bSkillAtk,"RL_FIRE_RAIN",25;\n bonus2 bSkillAtk,"RL_R_TRIP",25;\n if (BaseLevel>=110) {\n bonus bLongAtkRate,10;\n bonus2 bAddSize,Size_All,15;\n if (BaseLevel>=115) {\n bonus2 bSkillAtk,"RL_FIRE_RAIN",15;\n bonus2 bSkillAtk,"RL_R_TRIP",15;\n }\n }\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_gunslinger`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (840000,'Ep172_1h_Grenade','Lust Boom','Weapon','Grenade',2400,330,9,2,true,true,true,true,4,150,true,'.@r = getrefine();\nbonus2 bSkillAtk,"RL_H_MINE",10;\nbonus bAspdRate,3*(.@r/3);\nbonus bBaseAtk,6*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_D_TAIL",10;\n bonus2 bSkillAtk,"RL_H_MINE",10;\n}\nif (.@r>=9) {\n bonus2 bSkillCooldown,"RL_D_TAIL",-1000;\n bonus2 bSkillCooldown,"RL_H_MINE",-1000;\n}\nif (.@r>=11) {\n autobonus3 "{ bonus2 bSkillAtk,\\"RL_D_TAIL\\",25; }",1000,10000,"RL_C_MARKER";\n bonus2 bSkillAtk,"RL_H_MINE",25;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (840001,'Up_Golden_Lord_Launcher','Patent Golden Lord Launcher','Weapon','Grenade',20,2400,350,9,2,true,true,true,4,150,true,'.@r = getrefine();\nbonus bLongAtkRate,3*(.@r/2);\nbonus bBaseAtk,20*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_D_TAIL",15;\n bonus2 bSkillCooldown,"RL_D_TAIL",-1000;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"RL_D_TAIL",20;\n}\nif (.@r>=11) {\n bonus2 bAddEle,Ele_All,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`price_buy`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (840001,'Up_Golden_L_Launcher','Patent Golden Lord Launcher','Weapon','Grenade',20,2400,350,9,2,true,true,true,4,150,true,'.@r = getrefine();\nbonus bLongAtkRate,3*(.@r/2);\nbonus bBaseAtk,20*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_D_TAIL",15;\n bonus2 bSkillCooldown,"RL_D_TAIL",-1000;\n}\nif (.@r>=9) {\n bonus2 bSkillAtk,"RL_D_TAIL",20;\n}\nif (.@r>=11) {\n bonus2 bAddEle,Ele_All,15;\n}');
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`subtype`,`weight`,`attack`,`range`,`slots`,`job_rebellion`,`location_left_hand`,`location_right_hand`,`weapon_level`,`equip_level_min`,`refineable`,`script`) VALUES (840002,'Adulter_F_Launcher','Adulter Fides Launcher','Weapon','Grenade',3000,350,9,2,true,true,true,4,180,true,'.@r = getrefine();\nbonus2 bSkillAtk,"RL_D_TAIL",10;\nbonus bBaseAtk,18*(.@r/3);\nif (.@r>=7) {\n bonus2 bSkillAtk,"RL_D_TAIL",20;\n if (.@r>=9) {\n bonus2 bSkillCooldown,"RL_D_TAIL",-2000;\n if (.@r>=11) {\n bonus2 bSkillAtk,"RL_D_TAIL",25;\n if (.@r>=12) {\n bonus bLongAtkRate,15;\n }\n }\n }\n}');

View File

@@ -1893,7 +1893,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (6658
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`) VALUES (6665,'RWC_Inicializer','RWC Inicializer','Etc',10,100,true);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (6669,'Jade_Leaf','Emerald Leaf','Etc',10);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`flag_buyingstore`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6671,'Geffen_Coin_Magic_Tournament','Geffen Coin Magic Tournament','Etc',10,true,100,true,true,true,true,true,true);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`flag_buyingstore`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6672,'Shard_of_Gray','Shard of Gray','Etc',10,true,100,true,true,true,true,true,true);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`flag_buyingstore`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6672,'Gray_Shard','Shard of Gray','Etc',10,true,100,true,true,true,true,true,true);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6673,'Bossnia_Tickets','Bossnia Tickets','Etc',10,100,true,true,true,true,true,true,true,true);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6674,'GM_Coin','GM Coin','Etc',10,100,true,true,true,true,true,true,true);
REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6681,'XMAS_Cookie','Christmas Cookie','Etc',20,10,100,true,true,true,true,true,true);

View File

@@ -177,7 +177,7 @@ CREATE TABLE IF NOT EXISTS `picklog` (
`id` int(11) NOT NULL auto_increment,
`time` datetime NOT NULL,
`char_id` int(11) NOT NULL default '0',
`type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Y','Z','Q','H','J','W','0','1','2') NOT NULL default 'P',
`type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Y','Z','Q','H','J','W','0','1','2','3') NOT NULL default 'P',
`nameid` int(10) unsigned NOT NULL default '0',
`amount` int(11) NOT NULL default '1',
`refine` tinyint(3) unsigned NOT NULL default '0',

View File

@@ -282,6 +282,8 @@ CREATE TABLE IF NOT EXISTS `char` (
`title_id` INT(11) unsigned NOT NULL default '0',
`show_equip` tinyint(3) unsigned NOT NULL default '0',
`inventory_slots` smallint(6) NOT NULL default '100',
`body_direction` tinyint(1) unsigned NOT NULL default '0',
`disable_call` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`char_id`),
UNIQUE KEY `name_key` (`name`),
KEY `account_id` (`account_id`),

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