Prechádzať zdrojové kódy

Merge branch 'master' into feature/lapine_synthesis_and_upgrade

aleos 4 rokov pred
rodič
commit
b4ef4db25f
100 zmenil súbory, kde vykonal 12380 pridanie a 2447 odobranie
  1. 8 0
      .github/CONTRIBUTING.md
  2. 10 1
      .github/ISSUE_TEMPLATE/bug_report.md
  3. 35 0
      .github/ISSUE_TEMPLATE/feature_request.md
  4. 1 1
      README.md
  5. 1 0
      conf/battle/guild.conf
  6. 3 0
      conf/battle/player.conf
  7. 2 2
      conf/battle/skill.conf
  8. 2 2
      conf/msg_conf/map_msg.conf
  9. 1 1
      conf/msg_conf/map_msg_chn.conf
  10. 1 1
      conf/msg_conf/map_msg_frn.conf
  11. 1 4
      conf/msg_conf/map_msg_idn.conf
  12. 2 2
      conf/msg_conf/map_msg_por.conf
  13. 1 1
      conf/msg_conf/map_msg_rus.conf
  14. 2 2
      conf/msg_conf/map_msg_spn.conf
  15. 1 1
      conf/msg_conf/map_msg_tha.conf
  16. 0 231
      db/const.txt
  17. 0 4
      db/import-tmpl/item_randomopt_db.txt
  18. 32 0
      db/import-tmpl/item_randomopt_db.yml
  19. 0 1
      db/import-tmpl/item_randomopt_group.txt
  20. 46 0
      db/import-tmpl/item_randomopt_group.yml
  21. 0 14
      db/import-tmpl/level_penalty.txt
  22. 33 0
      db/import-tmpl/level_penalty.yml
  23. 1 1
      db/import-tmpl/skill_db.yml
  24. 38 0
      db/item_randomopt_db.yml
  25. 52 0
      db/item_randomopt_group.yml
  26. 39 0
      db/level_penalty.yml
  27. 0 3
      db/pre-re/guild_skill_tree.yml
  28. 101 202
      db/pre-re/item_db_equip.yml
  29. 76 152
      db/pre-re/item_db_etc.yml
  30. 0 4
      db/pre-re/item_randomopt_db.txt
  31. 0 1
      db/pre-re/item_randomopt_group.txt
  32. 1 7
      db/pre-re/skill_db.yml
  33. 20 0
      db/re/guild_skill_tree.yml
  34. 404 23
      db/re/item_combo_db.txt
  35. 110 223
      db/re/item_db_equip.yml
  36. 109 208
      db/re/item_db_etc.yml
  37. 10 30
      db/re/item_db_usable.yml
  38. 0 224
      db/re/item_randomopt_db.txt
  39. 891 0
      db/re/item_randomopt_db.yml
  40. 0 10
      db/re/item_randomopt_group.txt
  41. 7456 0
      db/re/item_randomopt_group.yml
  42. 0 60
      db/re/level_penalty.txt
  43. 99 0
      db/re/level_penalty.yml
  44. 3 3
      db/re/mob_db.txt
  45. 105 105
      db/re/mob_drop.txt
  46. 28 0
      db/re/mob_skill_db.txt
  47. 51 125
      db/re/skill_db.yml
  48. 1 1
      db/skill_db.yml
  49. 6 0
      doc/item_db.txt
  50. 0 0
      doc/logo.png
  51. 33 4
      doc/script_commands.txt
  52. 1 1
      doc/skill_db.txt
  53. 11 0
      doc/yaml/db/item_randomopt_db.yml
  54. 25 0
      doc/yaml/db/item_randomopt_group.yml
  55. 12 0
      doc/yaml/db/level_penalty.yml
  56. 1 1
      doc/yaml/db/skill_db.yml
  57. 15 12
      npc/custom/woe_controller.txt
  58. 2 2
      npc/jobs/2-1/hunter.txt
  59. 2 2
      npc/kafras/functions_kafras.txt
  60. 2 2
      npc/re/mobs/championmobs.txt
  61. 9 0
      npc/test/ci/5573.txt
  62. 8 0
      sql-files/README.md
  63. 535 102
      sql-files/item_db_re_equip.sql
  64. 618 44
      sql-files/item_db_re_etc.sql
  65. 169 19
      sql-files/item_db_re_usable.sql
  66. 7 0
      sql-files/main.sql
  67. 24 0
      sql-files/tools/item_db2_re_to_txt.sql
  68. 24 0
      sql-files/tools/item_db2_to_txt.sql
  69. 24 0
      sql-files/tools/item_db_re_to_txt.sql
  70. 24 0
      sql-files/tools/item_db_to_txt.sql
  71. 1 0
      sql-files/upgrades/premium_storage.sql
  72. 20 0
      sql-files/upgrades/upgrade_20201105.sql
  73. 32 26
      src/char/char.cpp
  74. 11 10
      src/char/int_auction.cpp
  75. 8 7
      src/char/int_mail.cpp
  76. 8 4
      src/common/database.cpp
  77. 29 19
      src/common/mmo.hpp
  78. 14 1
      src/common/utilities.hpp
  79. 22 10
      src/map/atcommand.cpp
  80. 90 114
      src/map/battle.cpp
  81. 1 0
      src/map/battle.hpp
  82. 1 1
      src/map/buyingstore.cpp
  83. 2 0
      src/map/chrif.cpp
  84. 63 19
      src/map/clif.cpp
  85. 1 1
      src/map/clif.hpp
  86. 14 57
      src/map/clif_packetdb.hpp
  87. 8 0
      src/map/guild.cpp
  88. 4 0
      src/map/intif.cpp
  89. 340 219
      src/map/itemdb.cpp
  90. 76 15
      src/map/itemdb.hpp
  91. 3 1
      src/map/map-server.vcxproj
  92. 5 1
      src/map/map.cpp
  93. 4 2
      src/map/map.hpp
  94. 134 67
      src/map/mob.cpp
  95. 14 3
      src/map/mob.hpp
  96. 27 20
      src/map/npc.cpp
  97. 2 1
      src/map/npc.hpp
  98. 10 1
      src/map/packets.hpp
  99. 106 8
      src/map/packets_struct.hpp
  100. 1 1
      src/map/party.cpp

+ 8 - 0
.github/CONTRIBUTING.md

@@ -7,6 +7,7 @@ Table of Contents
   * [Reporting Bugs](#reporting-bugs)
   * [Suggesting Enhancements](#suggesting-enhancements)
   * [Issue Labels](#issue-labels)
+  * [Local Development Environment](#local-development-environment)
   * [Become a Team Member](#become-a-team-member)
 
 Reporting Bugs
@@ -161,6 +162,13 @@ For the most part you as a user will have no reason to worry about the **Milesto
 [search-rathena-label-typemaintenance]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Amaintenance
 [search-rathena-label-typequestion]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Aquestion
 
+Local Development Environment
+-----------------------------
+
+Developers can get up and running quickly with a Dockerized development environment that installs all dependencies needed to run and develop on rAthena.
+See tools/docker/README.md for details
+
+
 Become a Team Member
 --------------------
 

+ 10 - 1
.github/ISSUE_TEMPLATE.md → .github/ISSUE_TEMPLATE/bug_report.md

@@ -1,3 +1,12 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: type:bug
+assignees: ''
+
+---
+
 <!-- NOTE: Anything within these brackets will be hidden on the preview of the Issue. -->
 
 * **rAthena Hash**: 
@@ -21,7 +30,7 @@ How to get your GitHub Hash:
   * 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. -->
+  * 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**: 

+ 35 - 0
.github/ISSUE_TEMPLATE/feature_request.md

@@ -0,0 +1,35 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: type:enhancement
+assignees: ''
+
+---
+
+<!-- NOTE: Anything within these brackets will be hidden on the preview of the Feature Request. -->
+
+**Is your request related to a missing feature?**
+
+<!--
+  Provide a clear and concise description of what the feature pertains to.
+-->
+
+**Describe the solution you'd like**
+
+<!--
+  Provide a clear and concise description of what you want to happen.
+-->
+
+**Describe alternatives you've considered**
+
+<!--
+  Let us know about other solutions you've tried or researched.
+-->
+
+**Additional context**
+
+<!--
+  Is there anything else you can add about the proposal?
+  You might want to link to related issues here if you haven't already.
+-->

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-<img src="branding/logo.png" align="right" height="90" />
+<img src="doc/logo.png" align="right" height="90" />
 
 # rAthena
 [![Build Status](https://travis-ci.org/rathena/rathena.png?branch=master)](https://travis-ci.org/rathena/rathena) [![Build status](https://ci.appveyor.com/api/projects/status/8574b8nlwd57loda/branch/master?svg=true)](https://ci.appveyor.com/project/rAthenaAPI/rathena/branch/master) [![Total alerts](https://img.shields.io/lgtm/alerts/g/rathena/rathena.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rathena/rathena/alerts/) [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/rathena/rathena.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/rathena/rathena/context:cpp) ![GitHub](https://img.shields.io/github/license/rathena/rathena.svg) ![GitHub repo size](https://img.shields.io/github/repo-size/rathena/rathena.svg)

+ 1 - 0
conf/battle/guild.conf

@@ -18,6 +18,7 @@ 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.
+// Note: This was changed in renewal in favor of individual skill cooldown.
 guild_skill_relog_delay: 300000
 
 // Melee damage adjustments (non skills) for WoE battles (Guild Vs Guild) (Note 2)

+ 3 - 0
conf/battle/player.conf

@@ -74,6 +74,9 @@ max_third_aspd: 193
 // Max ASPD for extended class (Kagerou/Oboro and Rebellion). (Default 193, Highest allowed 199)
 max_extended_aspd: 193
 
+// Max ASPD for Summoner Class (Doram). (Default 193, Highest allowed 199)
+max_summoner_aspd: 193
+
 // Maximum walk speed rate (200 would be capped to twice the normal speed)
 max_walk_speed: 300
 

+ 2 - 2
conf/battle/skill.conf

@@ -341,9 +341,9 @@ arrow_shower_knockback: yes
 stormgust_knockback: yes
 
 // For RENEWAL_CAST (Note 2)
-// By default skill that has '0' value for Fixed Casting Time will use 20% of cast time
+// By default skill that has '-1' value for Fixed Casting Time will use 20% of cast time
 // as Fixed Casting Time, and the rest (80%) as Variable Casting Time.
-// Put it 0 to disable default Fixed Casting Time (just like -1 in the skill_db.yml).
+// Put it 0 to disable default Fixed Casting Time (just like 0 in the skill_db.yml).
 default_fixed_castrate: 20
 
 // On official servers, skills that hit all targets on a path (e.g. Focused Arrow Strike and First Wind) first

+ 2 - 2
conf/msg_conf/map_msg.conf

@@ -752,7 +752,7 @@
 716: Your '%s' is now: %d
 
 // MVP EXP reward message
-717: Congratulations! You are the MVP! Your reward EXP Points are %u !!
+717: Congratulations! You are the MVP! Your reward EXP Points are %llu !!
 
 // @showrate
 718: Personal rate information is not displayed now.
@@ -1339,7 +1339,7 @@
 1244:  ATK:%d~%d  Range:%d~%d~%d  Size:%s  Race: %s  Element: %s (Lv:%d)
 1245:  Drops:
 1246: This monster has no drops.
-1247:  MVP Bonus EXP:%u
+1247:  MVP Bonus EXP:%llu
 1248:  MVP Items:
 1249: This monster has no MVP prizes.
 

+ 1 - 1
conf/msg_conf/map_msg_chn.conf

@@ -1139,7 +1139,7 @@
 1244: 物理攻擊力:%d~%d 攻擊範圍:%d~%d~%d  體型:%s  種族: %s  屬性: %s (Lv:%d)
 1245: 掉落:
 1246: 此魔物不掉落道具.
-1247: MVP額外經驗值:%u
+1247: MVP額外經驗值:%llu
 1248: MVP額外獎勵道具:
 1249: 此魔物無MVP額外獎勵道具.
 

+ 1 - 1
conf/msg_conf/map_msg_frn.conf

@@ -1152,7 +1152,7 @@
 1244:  ATK:%d~%d  Range:%d~%d~%d  Size:%s  Race: %s  Elément: %s (Lv:%d)
 1245:  Drops:
 1246: Ce monstre n'a pas de drops.
-1247:  MVP Bonus EXP:%u
+1247:  MVP Bonus EXP:%llu
 1248:  MVP Items:
 1249: Ce monstre n'a pas de Prix spécial MVP.
 

+ 1 - 4
conf/msg_conf/map_msg_idn.conf

@@ -743,9 +743,6 @@
 715: Point Shop: '%s'
 716: '%s' milikmu saat ini: %d
 
-//Item Group
-717: [%s] mendapatkan [%s] dari '%s'
-
 //@showrate
 718: Informasi mengenai rate pribadi tidak akan ditampilkan lagi.
 719: Informasi mengenai rate pribadi akan ditampilkan kembali.
@@ -1243,7 +1240,7 @@
 1244: ATK:%d~%d  Jarak:%d~%d~%d  Ukuran:%s  Race: %s  Elemen: %s (Lv:%d)
 1245: Barang yang dijatuhkan:
 1246: Monster ini tidak menjatuhkan barang.
-1247: Bonus EXP MVP:%u
+1247: Bonus EXP MVP:%llu
 1248: Item MVP:
 1249: Monster ini tidak memiliki bonus MVP.
 

+ 2 - 2
conf/msg_conf/map_msg_por.conf

@@ -755,7 +755,7 @@
 715: Lista de loja de pontos: '%s'
 716: Seu '%s' agora é: %d
 // MVP EXP reward message
-717: Parabéns! Você é o MVP! Sua recompensa EXP Points are %u !!
+717: Parabéns! Você é o MVP! Sua recompensa EXP Points are %llu !!
 
 // @showrate
 718: As informações de taxa pessoal não são exibidas agora.
@@ -1322,7 +1322,7 @@
 1244:  ATQ:%d~%d  Alcance:%d~%d~%d  Tamanho:%s  Raça: %s  Elemento: %s (Nv:%d)
 1245:  Drops:
 1246: Este monstro não possui drops.
-1247:  EXP Bônus MVP:%u
+1247:  EXP Bônus MVP:%llu
 1248:  Itens MVP:
 1249: Este monstro não possui prêmios MVP.
 

+ 1 - 1
conf/msg_conf/map_msg_rus.conf

@@ -1152,7 +1152,7 @@
 1244:  ATK:%d~%d  Дальность:%d~%d~%d  Размер:%s  Раса: %s  Элемент: %s (Ур.:%d)
 1245:  Предметы:
 1246: С этого монстра не падают предметы.
-1247:  MVP бонус к опыту:%u
+1247:  MVP бонус к опыту:%llu
 1248:  MVP предметы:
 1249:  Этот монстр не имеет MVP призов.
 

+ 2 - 2
conf/msg_conf/map_msg_spn.conf

@@ -745,7 +745,7 @@
 716: Tu '%s' ahora es: %d
 
 // MVP EXP reward message
-717: ¡Enhorabuena! ¡Eres todo un MVP! ¡¡Puntos de experiencia obtenidos: %u!!
+717: ¡Enhorabuena! ¡Eres todo un MVP! ¡¡Puntos de experiencia obtenidos: %llu!!
 
 // @showrate
 718: La información de ratio personal no se mostrará.
@@ -1291,7 +1291,7 @@
 1244:  ATK:%d~%d  Rango:%d~%d~%d  Tamaño:%s  Raza: %s  Elemento: %s (Nv:%d)
 1245: Objetos:
 1246: Este monstruo no tiene ningún objeto.
-1247: Bono de EXP MVP:%u
+1247: Bono de EXP MVP:%llu
 1248: Objetos MVP:
 1249: Este monstruo no tiene ningún objeto de MVP.
 

+ 1 - 1
conf/msg_conf/map_msg_tha.conf

@@ -1145,7 +1145,7 @@
 1244:  ATK:%d~%d  Range:%d~%d~%d  Size:%s  Race: %s  Element: %s (Lv:%d)
 1245:  Drops:
 1246: Monster ¹ÕéäÁèÁբͧµ¡.
-1247:  MVP Bonus EXP:%u
+1247:  MVP Bonus EXP:%llu
 1248:  MVP Items:
 1249: Monster ¹ÕéäÁèÁբͧÃÒ§ÇÑÅ MVP.
 

+ 0 - 231
db/const.txt

@@ -14,237 +14,6 @@
 //                  in field Value. Depending on the implementation values assigned by scripts to parameters will affect
 //                  runtime values, such as Zeny, as well (see pc_readparam/pc_setparam).
 
-RDMOPT_VAR_MAXHPAMOUNT	1
-RDMOPT_VAR_MAXSPAMOUNT	2
-RDMOPT_VAR_STRAMOUNT	3
-RDMOPT_VAR_AGIAMOUNT	4
-RDMOPT_VAR_VITAMOUNT	5
-RDMOPT_VAR_INTAMOUNT	6
-RDMOPT_VAR_DEXAMOUNT	7
-RDMOPT_VAR_LUKAMOUNT	8
-RDMOPT_VAR_MAXHPPERCENT	9
-RDMOPT_VAR_MAXSPPERCENT	10
-RDMOPT_VAR_HPACCELERATION	11
-RDMOPT_VAR_SPACCELERATION	12
-RDMOPT_VAR_ATKPERCENT	13
-RDMOPT_VAR_MAGICATKPERCENT	14
-RDMOPT_VAR_PLUSASPD	15
-RDMOPT_VAR_PLUSASPDPERCENT	16
-RDMOPT_VAR_ATTPOWER	17
-RDMOPT_VAR_HITSUCCESSVALUE	18
-RDMOPT_VAR_ATTMPOWER	19
-RDMOPT_VAR_ITEMDEFPOWER	20
-RDMOPT_VAR_MDEFPOWER	21
-RDMOPT_VAR_AVOIDSUCCESSVALUE	22
-RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE	23
-RDMOPT_VAR_CRITICALSUCCESSVALUE	24
-RDMOPT_ATTR_TOLERACE_NOTHING	25
-RDMOPT_ATTR_TOLERACE_WATER	26
-RDMOPT_ATTR_TOLERACE_GROUND	27
-RDMOPT_ATTR_TOLERACE_FIRE	28
-RDMOPT_ATTR_TOLERACE_WIND	29
-RDMOPT_ATTR_TOLERACE_POISON	30
-RDMOPT_ATTR_TOLERACE_SAINT	31
-RDMOPT_ATTR_TOLERACE_DARKNESS	32
-RDMOPT_ATTR_TOLERACE_TELEKINESIS	33
-RDMOPT_ATTR_TOLERACE_UNDEAD	34
-RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING	35
-RDMOPT_DAMAGE_PROPERTY_NOTHING_USER	36
-RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET	37
-RDMOPT_DAMAGE_PROPERTY_WATER_USER	38
-RDMOPT_DAMAGE_PROPERTY_WATER_TARGET	39
-RDMOPT_DAMAGE_PROPERTY_GROUND_USER	40
-RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET	41
-RDMOPT_DAMAGE_PROPERTY_FIRE_USER	42
-RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET	43
-RDMOPT_DAMAGE_PROPERTY_WIND_USER	44
-RDMOPT_DAMAGE_PROPERTY_WIND_TARGET	45
-RDMOPT_DAMAGE_PROPERTY_POISON_USER	46
-RDMOPT_DAMAGE_PROPERTY_POISON_TARGET	47
-RDMOPT_DAMAGE_PROPERTY_SAINT_USER	48
-RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET	49
-RDMOPT_DAMAGE_PROPERTY_DARKNESS_USER	50
-RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET	51
-RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER	52
-RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET	53
-RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER	54
-RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET	55
-RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER	56
-RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET	57
-RDMOPT_MDAMAGE_PROPERTY_WATER_USER	58
-RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET	59
-RDMOPT_MDAMAGE_PROPERTY_GROUND_USER	60
-RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET	61
-RDMOPT_MDAMAGE_PROPERTY_FIRE_USER	62
-RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET	63
-RDMOPT_MDAMAGE_PROPERTY_WIND_USER	64
-RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET	65
-RDMOPT_MDAMAGE_PROPERTY_POISON_USER	66
-RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET	67
-RDMOPT_MDAMAGE_PROPERTY_SAINT_USER	68
-RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET	69
-RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER	70
-RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET	71
-RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER	72
-RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET	73
-RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER	74
-RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET	75
-RDMOPT_BODY_ATTR_NOTHING	76
-RDMOPT_BODY_ATTR_WATER	77
-RDMOPT_BODY_ATTR_GROUND	78
-RDMOPT_BODY_ATTR_FIRE	79
-RDMOPT_BODY_ATTR_WIND	80
-RDMOPT_BODY_ATTR_POISON	81
-RDMOPT_BODY_ATTR_SAINT	82
-RDMOPT_BODY_ATTR_DARKNESS	83
-RDMOPT_BODY_ATTR_TELEKINESIS	84
-RDMOPT_BODY_ATTR_UNDEAD	85
-//RDMOPT_BODY_ATTR_ALL	86
-RDMOPT_RACE_TOLERACE_NOTHING	87
-RDMOPT_RACE_TOLERACE_UNDEAD	88
-RDMOPT_RACE_TOLERACE_ANIMAL	89
-RDMOPT_RACE_TOLERACE_PLANT	90
-RDMOPT_RACE_TOLERACE_INSECT	91
-RDMOPT_RACE_TOLERACE_FISHS	92
-RDMOPT_RACE_TOLERACE_DEVIL	93
-RDMOPT_RACE_TOLERACE_HUMAN	94
-RDMOPT_RACE_TOLERACE_ANGEL	95
-RDMOPT_RACE_TOLERACE_DRAGON	96
-RDMOPT_RACE_DAMAGE_NOTHING	97
-RDMOPT_RACE_DAMAGE_UNDEAD	98
-RDMOPT_RACE_DAMAGE_ANIMAL	99
-RDMOPT_RACE_DAMAGE_PLANT	100
-RDMOPT_RACE_DAMAGE_INSECT	101
-RDMOPT_RACE_DAMAGE_FISHS	102
-RDMOPT_RACE_DAMAGE_DEVIL	103
-RDMOPT_RACE_DAMAGE_HUMAN	104
-RDMOPT_RACE_DAMAGE_ANGEL	105
-RDMOPT_RACE_DAMAGE_DRAGON	106
-RDMOPT_RACE_MDAMAGE_NOTHING	107
-RDMOPT_RACE_MDAMAGE_UNDEAD	108
-RDMOPT_RACE_MDAMAGE_ANIMAL	109
-RDMOPT_RACE_MDAMAGE_PLANT	110
-RDMOPT_RACE_MDAMAGE_INSECT	111
-RDMOPT_RACE_MDAMAGE_FISHS	112
-RDMOPT_RACE_MDAMAGE_DEVIL	113
-RDMOPT_RACE_MDAMAGE_HUMAN	114
-RDMOPT_RACE_MDAMAGE_ANGEL	115
-RDMOPT_RACE_MDAMAGE_DRAGON	116
-RDMOPT_RACE_CRI_PERCENT_NOTHING	117
-RDMOPT_RACE_CRI_PERCENT_UNDEAD	118
-RDMOPT_RACE_CRI_PERCENT_ANIMAL	119
-RDMOPT_RACE_CRI_PERCENT_PLANT	120
-RDMOPT_RACE_CRI_PERCENT_INSECT	121
-RDMOPT_RACE_CRI_PERCENT_FISHS	122
-RDMOPT_RACE_CRI_PERCENT_DEVIL	123
-RDMOPT_RACE_CRI_PERCENT_HUMAN	124
-RDMOPT_RACE_CRI_PERCENT_ANGEL	125
-RDMOPT_RACE_CRI_PERCENT_DRAGON	126
-RDMOPT_RACE_IGNORE_DEF_PERCENT_NOTHING	127
-RDMOPT_RACE_IGNORE_DEF_PERCENT_UNDEAD	128
-RDMOPT_RACE_IGNORE_DEF_PERCENT_ANIMAL	129
-RDMOPT_RACE_IGNORE_DEF_PERCENT_PLANT	130
-RDMOPT_RACE_IGNORE_DEF_PERCENT_INSECT	131
-RDMOPT_RACE_IGNORE_DEF_PERCENT_FISHS	132
-RDMOPT_RACE_IGNORE_DEF_PERCENT_DEVIL	133
-RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN	134
-RDMOPT_RACE_IGNORE_DEF_PERCENT_ANGEL	135
-RDMOPT_RACE_IGNORE_DEF_PERCENT_DRAGON	136
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_NOTHING	137
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_UNDEAD	138
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANIMAL	139
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLANT	140
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_INSECT	141
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_FISHS	142
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_DEVIL	143
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN	144
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANGEL	145
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_DRAGON	146
-RDMOPT_CLASS_DAMAGE_NORMAL_TARGET	147
-RDMOPT_CLASS_DAMAGE_BOSS_TARGET	148
-RDMOPT_CLASS_DAMAGE_NORMAL_USER	149
-RDMOPT_CLASS_DAMAGE_BOSS_USER	150
-RDMOPT_CLASS_MDAMAGE_NORMAL	151
-RDMOPT_CLASS_MDAMAGE_BOSS	152
-RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL	153
-RDMOPT_CLASS_IGNORE_DEF_PERCENT_BOSS	154
-RDMOPT_CLASS_IGNORE_MDEF_PERCENT_NORMAL	155
-RDMOPT_CLASS_IGNORE_MDEF_PERCENT_BOSS	156
-RDMOPT_DAMAGE_SIZE_SMALL_TARGET	157
-RDMOPT_DAMAGE_SIZE_MIDIUM_TARGET	158
-RDMOPT_DAMAGE_SIZE_LARGE_TARGET	159
-RDMOPT_DAMAGE_SIZE_SMALL_USER	160
-RDMOPT_DAMAGE_SIZE_MIDIUM_USER	161
-RDMOPT_DAMAGE_SIZE_LARGE_USER	162
-RDMOPT_DAMAGE_SIZE_PERFECT	163
-RDMOPT_DAMAGE_CRI_TARGET	164
-RDMOPT_DAMAGE_CRI_USER	165
-RDMOPT_RANGE_ATTACK_DAMAGE_TARGET	166
-RDMOPT_RANGE_ATTACK_DAMAGE_USER	167
-RDMOPT_HEAL_VALUE	168
-RDMOPT_HEAL_MODIFY_PERCENT	169
-RDMOPT_DEC_SPELL_CAST_TIME	170
-RDMOPT_DEC_SPELL_DELAY_TIME	171
-RDMOPT_DEC_SP_CONSUMPTION	172
-//RDMOPT_HP_DRAIN	173
-//RDMOPT_SP_DRAIN	174
-RDMOPT_WEAPON_ATTR_NOTHING	175
-RDMOPT_WEAPON_ATTR_WATER	176
-RDMOPT_WEAPON_ATTR_GROUND	177
-RDMOPT_WEAPON_ATTR_FIRE	178
-RDMOPT_WEAPON_ATTR_WIND	179
-RDMOPT_WEAPON_ATTR_POISON	180
-RDMOPT_WEAPON_ATTR_SAINT	181
-RDMOPT_WEAPON_ATTR_DARKNESS	182
-RDMOPT_WEAPON_ATTR_TELEKINESIS	183
-RDMOPT_WEAPON_ATTR_UNDEAD	184
-RDMOPT_WEAPON_INDESTRUCTIBLE	185
-RDMOPT_BODY_INDESTRUCTIBLE	186
-RDMOPT_MDAMAGE_SIZE_SMALL_TARGET	187
-RDMOPT_MDAMAGE_SIZE_MIDIUM_TARGET	188
-RDMOPT_MDAMAGE_SIZE_LARGE_TARGET	189
-RDMOPT_MDAMAGE_SIZE_SMALL_USER	190
-RDMOPT_MDAMAGE_SIZE_MIDIUM_USER	191
-RDMOPT_MDAMAGE_SIZE_LARGE_USER	192
-RDMOPT_ATTR_TOLERACE_ALL	193
-RDMOPT_RACE_WEAPON_TOLERACE_NOTHING	194
-RDMOPT_RACE_WEAPON_TOLERACE_UNDEAD	195
-RDMOPT_RACE_WEAPON_TOLERACE_ANIMAL	196
-RDMOPT_RACE_WEAPON_TOLERACE_PLANT	197
-RDMOPT_RACE_WEAPON_TOLERACE_INSECT	198
-RDMOPT_RACE_WEAPON_TOLERACE_FISHS	199
-RDMOPT_RACE_WEAPON_TOLERACE_DEVIL	200
-RDMOPT_RACE_WEAPON_TOLERACE_HUMAN	201
-RDMOPT_RACE_WEAPON_TOLERACE_ANGEL	202
-RDMOPT_RACE_WEAPON_TOLERACE_DRAGON	203
-//RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_TARGET	204
-//RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_USER	205
-RDMOPT_RACE_TOLERACE_PLAYER_HUMAN	206
-RDMOPT_RACE_TOLERACE_PLAYER_DORAM	207
-RDMOPT_RACE_DAMAGE_PLAYER_HUMAN	208
-RDMOPT_RACE_DAMAGE_PLAYER_DORAM	209
-RDMOPT_RACE_MDAMAGE_PLAYER_HUMAN	210
-RDMOPT_RACE_MDAMAGE_PLAYER_DORAM	211
-RDMOPT_RACE_CRI_PERCENT_PLAYER_HUMAN	212
-RDMOPT_RACE_CRI_PERCENT_PLAYER_DORAM	213
-RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_HUMAN	214
-RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_DORAM	215
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_HUMAN	216
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_DORAM	217
-//RDMOPT_REFLECT_DAMAGE_PERCENT	218
-RDMOPT_MELEE_ATTACK_DAMAGE_TARGET	219
-RDMOPT_MELEE_ATTACK_DAMAGE_USER	220
-//RDMOPT_ADDSKILLMDAMAGE_NOTHING	221
-//RDMOPT_ADDSKILLMDAMAGE_WATER	222
-//RDMOPT_ADDSKILLMDAMAGE_GROUND	223
-//RDMOPT_ADDSKILLMDAMAGE_FIRE	224
-//RDMOPT_ADDSKILLMDAMAGE_WIND	225
-//RDMOPT_ADDSKILLMDAMAGE_POISON	226
-//RDMOPT_ADDSKILLMDAMAGE_SAINT	227
-//RDMOPT_ADDSKILLMDAMAGE_DARKNESS	228
-//RDMOPT_ADDSKILLMDAMAGE_TELEKINESIS	229
-//RDMOPT_ADDSKILLMDAMAGE_UNDEAD	230
-
 SWORDCLAN	1
 ARCWANDCLAN	2
 GOLDENMACECLAN	3

+ 0 - 4
db/import-tmpl/item_randomopt_db.txt

@@ -1,4 +0,0 @@
-// Items Random Option Database	
-//
-// Structure of Database:
-// ID,{ Bonus Script }

+ 32 - 0
db/import-tmpl/item_randomopt_db.yml

@@ -0,0 +1,32 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2020 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 Random Option Database
+###########################################################################
+#
+# Item Random Option Settings
+#
+###########################################################################
+# - Id          Item Random Option ID matching the ID defined in enumvar.lub in the client.
+#   Option      Item Random Option constant.
+#   Script      Bonus script used for option.
+###########################################################################
+
+Header:
+  Type: RANDOM_OPTION_DB
+  Version: 1

+ 0 - 1
db/import-tmpl/item_randomopt_group.txt

@@ -1 +0,0 @@
-// <randopt_groupid>,<rate>,<randopt_id1>,<randopt_value1>,<randopt_param1>{,<randopt_id2>,<randopt_value2>,<randopt_param2>,<randopt_id3>,<randopt_value3>,<randopt_param3>,<randopt_id4>,<randopt_value4>,<randopt_param4>,<randopt_id5>,<randopt_value5>,<randopt_param5>}

+ 46 - 0
db/import-tmpl/item_randomopt_group.yml

@@ -0,0 +1,46 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2020 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 Random Option Group Database
+###########################################################################
+#
+# Item Random Option Group Settings
+#
+###########################################################################
+# - Id                  Item Random Option Group ID.
+#   Group               Item Random Option Group constant.
+#   Slots:              Slot in which an Item Random Option is guaranteed to be applied. Max of MAX_ITEM_RDM_OPT.
+#     - Slot            Slot number.
+#       Options:        List of possible Item Random Options for slot.
+#         - Option      Item Random Option constant.
+#           MinValue    Minimum value. (Default: 0)
+#           MaxValue    Maximum value. (Default: 0)
+#           Param       Parameter value. (Default: 0)
+#           Chance      Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+#   MaxRandom           Maximum amount of random options applied. These options are not guaranteed to be applied. Max of (MAX_ITEM_RDM_OPT - Total 'Slots'). (Default: 0)
+#   Random:             List of possible Item Random Options for remaining slots. (Optional)
+#     - Option          Item Random Option constant.
+#       MinValue        Minimum value. (Default: 0)
+#       MaxValue        Maximum value. (Default: 0)
+#       Param           Parameter value. (Default: 0)
+#       Chance          Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+###########################################################################
+
+Header:
+  Type: RANDOM_OPTION_GROUP
+  Version: 1

+ 0 - 14
db/import-tmpl/level_penalty.txt

@@ -1,14 +0,0 @@
-// Experience & Drop Rate Modifier Database
-//
-// Structure of Database:
-// Type,Class,Level difference,Rate
-//
-// TYPE:
-//   1=experience, 2=item drop
-// CLASS:
-//   0=Normal monsters, 1=Boss monsters, 2=Guardians
-//
-// Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled.
-
-// EXP modifiers due to level difference
-

+ 33 - 0
db/import-tmpl/level_penalty.yml

@@ -0,0 +1,33 @@
+# 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/>.
+#
+###########################################################################
+# Level Penalty Database
+###########################################################################
+#
+# Level Penalty Settings
+#
+###########################################################################
+# - Type:             Type of Penalty (Exp, Drop, Mvp_Exp, Mvp_Drop)
+#   LevelDifferences: List of level difference between player and monster
+#     - Difference:   Level difference between player and monster
+#       Rate:         Rate applied to original exp or drop rate (0-10000)
+###########################################################################
+
+Header:
+  Type: PENALTY_DB
+  Version: 1

+ 1 - 1
db/import-tmpl/skill_db.yml

@@ -55,7 +55,7 @@
 #   NoNearNPC:                Determines if the skill can be used near a NPC. (Optional)
 #     AdditionalRange         Number of cells from an NPC where the skill can be cast. (Optional)
 #     Type:                   Type of NPC.
-#   CastCancel                Cancel cast when hit. (Default: true)
+#   CastCancel                Cancel cast when hit. (Default: false)
 #   CastDefenseReduction      Defense reduction rate during skill cast. (Default: 0)
 #   CastTime:                 Time to cast the skill in milliseconds. (Default: 0)
 #     - Level                 Skill level.

+ 38 - 0
db/item_randomopt_db.yml

@@ -0,0 +1,38 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2020 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 Random Option Database
+###########################################################################
+#
+# Item Random Option Settings
+#
+###########################################################################
+# - Id          Item Random Option ID matching the ID defined in enumvar.lub in the client.
+#   Option      Item Random Option constant.
+#   Script      Bonus script used for option.
+###########################################################################
+
+Header:
+  Type: RANDOM_OPTION_DB
+  Version: 1
+
+Footer:
+  Imports:
+  - Path: db/re/item_randomopt_db.yml
+    Mode: Renewal
+  - Path: db/import/item_randomopt_db.yml

+ 52 - 0
db/item_randomopt_group.yml

@@ -0,0 +1,52 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2020 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 Random Option Group Database
+###########################################################################
+#
+# Item Random Option Group Settings
+#
+###########################################################################
+# - Id                  Item Random Option Group ID.
+#   Group               Item Random Option Group constant.
+#   Slots:              Slot in which an Item Random Option is guaranteed to be applied. Max of MAX_ITEM_RDM_OPT.
+#     - Slot            Slot number.
+#       Options:        List of possible Item Random Options for slot.
+#         - Option      Item Random Option constant.
+#           MinValue    Minimum value. (Default: 0)
+#           MaxValue    Maximum value. (Default: 0)
+#           Param       Parameter value. (Default: 0)
+#           Chance      Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+#   MaxRandom           Maximum amount of random options applied. These options are not guaranteed to be applied. Max of (MAX_ITEM_RDM_OPT - Total 'Slots'). (Default: 0)
+#   Random:             List of possible Item Random Options for remaining slots. (Optional)
+#     - Option          Item Random Option constant.
+#       MinValue        Minimum value. (Default: 0)
+#       MaxValue        Maximum value. (Default: 0)
+#       Param           Parameter value. (Default: 0)
+#       Chance          Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+###########################################################################
+
+Header:
+  Type: RANDOM_OPTION_GROUP
+  Version: 1
+
+Footer:
+  Imports:
+  - Path: db/re/item_randomopt_group.yml
+    Mode: Renewal
+  - Path: db/import/item_randomopt_group.yml

+ 39 - 0
db/level_penalty.yml

@@ -0,0 +1,39 @@
+# 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/>.
+#
+###########################################################################
+# Level Penalty Database
+###########################################################################
+#
+# Level Penalty Settings
+#
+###########################################################################
+# - Type:             Type of Penalty (Exp, Drop, Mvp_Exp, Mvp_Drop)
+#   LevelDifferences: List of level difference between player and monster
+#     - Difference:   Level difference between player and monster
+#       Rate:         Rate applied to original exp or drop rate (0-10000)
+###########################################################################
+
+Header:
+  Type: PENALTY_DB
+  Version: 1
+
+Footer:
+  Imports:
+  - Path: db/re/level_penalty.yml
+    Mode: Renewal
+  - Path: db/import/level_penalty.yml

+ 0 - 3
db/pre-re/guild_skill_tree.yml

@@ -118,6 +118,3 @@ Body:
 
   - Id: GD_DEVELOPMENT
     MaxLevel: 1
-
-#  - Id: GD_GUILD_STORAGE
-#    MaxLevel: 5

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 101 - 202
db/pre-re/item_db_equip.yml


+ 76 - 152
db/pre-re/item_db_etc.yml

@@ -2794,8 +2794,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -2855,8 +2854,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -2868,8 +2866,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -2929,8 +2926,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -2942,8 +2938,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -2967,8 +2962,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3018,8 +3012,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3069,8 +3062,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3122,8 +3114,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3159,8 +3150,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3186,8 +3176,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3319,8 +3308,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3428,8 +3416,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3477,8 +3464,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3502,8 +3488,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3563,8 +3548,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3652,8 +3636,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3677,8 +3660,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -3798,8 +3780,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4243,8 +4224,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4306,8 +4286,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4319,8 +4298,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4370,8 +4348,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4407,8 +4384,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4432,8 +4408,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4693,8 +4668,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4846,8 +4820,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4885,8 +4858,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4922,8 +4894,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -4961,8 +4932,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5072,8 +5042,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5123,8 +5092,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5160,8 +5128,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5197,8 +5164,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5246,8 +5212,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5309,8 +5274,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5346,8 +5310,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5359,8 +5322,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5386,8 +5348,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5411,8 +5372,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5472,8 +5432,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5485,8 +5444,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5656,8 +5614,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5705,8 +5662,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5784,8 +5740,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5811,8 +5766,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5824,8 +5778,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -5913,8 +5866,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6040,8 +5992,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6053,8 +6004,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6178,8 +6128,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6191,8 +6140,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6528,8 +6476,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6589,8 +6536,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6602,8 +6548,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6655,8 +6600,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6818,8 +6762,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6857,8 +6800,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6870,8 +6812,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6883,8 +6824,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6960,8 +6900,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -6973,8 +6912,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7244,8 +7182,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7333,8 +7270,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7346,8 +7282,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7397,8 +7332,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7422,8 +7356,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7717,8 +7650,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7730,8 +7662,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7755,8 +7686,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7816,8 +7746,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7829,8 +7758,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7902,8 +7830,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7939,8 +7866,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7978,8 +7904,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |
@@ -7991,8 +7916,7 @@ Body:
     Buy: 20
     Weight: 10
     Locations:
-      Right_Accessory: true
-      Left_Accessory: true
+      Both_Accessory: true
     Flags:
       BuyingStore: true
     Script: |

+ 0 - 4
db/pre-re/item_randomopt_db.txt

@@ -1,4 +0,0 @@
-// Items Random Option Database	
-//
-// Structure of Database:
-// ID,{ Bonus Script }

+ 0 - 1
db/pre-re/item_randomopt_group.txt

@@ -1 +0,0 @@
-// <randopt_groupid>,<rate>,<randopt_id1>,<randopt_value1>,<randopt_param1>{,<randopt_id2>,<randopt_value2>,<randopt_param2>,<randopt_id3>,<randopt_value3>,<randopt_param3>,<randopt_id4>,<randopt_value4>,<randopt_param4>,<randopt_id5>,<randopt_value5>,<randopt_param5>}

+ 1 - 7
db/pre-re/skill_db.yml

@@ -55,7 +55,7 @@
 #   NoNearNPC:                Determines if the skill can be used near a NPC. (Optional)
 #     AdditionalRange         Number of cells from an NPC where the skill can be cast. (Optional)
 #     Type:                   Type of NPC.
-#   CastCancel                Cancel cast when hit. (Default: true)
+#   CastCancel                Cancel cast when hit. (Default: false)
 #   CastDefenseReduction      Defense reduction rate during skill cast. (Default: 0)
 #   CastTime:                 Time to cast the skill in milliseconds. (Default: 0)
 #     - Level                 Skill level.
@@ -33671,9 +33671,3 @@ Body:
       IgnoreKagehumi: true
     CastCancel: true
     Duration2: 300000
-  - Id: 10016
-    Name: GD_GUILD_STORAGE
-    Description: Guild Storage Expansion
-    MaxLevel: 5
-    Flags:
-      IsGuild: true

+ 20 - 0
db/re/guild_skill_tree.yml

@@ -130,3 +130,23 @@ Body:
       Level: 1
     - Id: GD_HAWKEYES
       Level: 1
+
+  - Id: GD_CHARGESHOUT_FLAG
+    MaxLevel: 1
+    Required:
+    - Id: GD_EMERGENCYCALL
+      Level: 1
+
+  - Id: GD_CHARGESHOUT_BEATING
+    MaxLevel: 1
+    Required:
+    - Id: GD_CHARGESHOUT_FLAG
+      Level: 1
+
+  - Id: GD_EMERGENCY_MOVE
+    MaxLevel: 1
+    Required:
+    - Id: GD_LEADERSHIP
+      Level: 1
+    - Id: GD_GLORYWOUNDS
+      Level: 1

+ 404 - 23
db/re/item_combo_db.txt

@@ -163,8 +163,6 @@
 2241:5136,{ bonus bMaxHP,700; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"AL_INCAGI",10,30,1; }
 2268:18573,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if(.@r > 6) { bonus bMaxHPrate,((.@r-5)/2)*2; bonus bHit,(.@r-5)/2; } }
 2268:19082,{ bonus bDelayrate,-5; }
-//Mechanical Plant Hat:19082,{ bonus2 bSkillAtk,GN_SPORE_EXPLOSION,getequiprefinerycnt(EQI_HEAD_???)*5; }
-//2268:Mechanical Plant Hat:19082,{ bonus2 bSkillUseSP,GN_SPORE_EXPLOSION,20; }
 2269:5781,{ bonus bInt,1; bonus bMaxSP,30; }
 2269:5786,{ bonus2 bAddClass,Class_All,1; }
 //2269:5768,{ bonus bInt,1; if(getequiprefinerycnt(EQI_HEAD_TOP) > 6) bonus bMaxSPrate,getequiprefinerycnt(EQI_HEAD_TOP)-6; }
@@ -306,7 +304,6 @@
 2535:15163,{ bonus5 bAutoSpell,"AL_HEAL",1,(10*getequiprefinerycnt(EQI_ARMOR)),BF_MAGIC,0; }
 2584:5579,{ .@r = getequiprefinerycnt(EQI_GARMENT); if(.@r>=7) { .@bonus = max(getskilllv("TF_DOUBLE"),5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus*5; } else if(.@r>=5) { skill "TF_DOUBLE",1; bonus bDoubleRate,25; } }
 2597:28342,{ bonus bCritAtkRate,5; bonus bCritical,10; .@r = getequiprefinerycnt(EQI_GARMENT); if(.@r>=5){ bonus bCritAtkRate,3; } if(.@r>=7){ bonus bCritAtkRate,4; } }
-//2598:Ramor Shield,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_Undead,.@r; bonus2 bSubRace,RC_DemiHuman,.@r; }
 2607:2677,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
 2607:2711,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
 2607:2786,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
@@ -1417,27 +1414,27 @@
 24437:24166:24167,{ bonus bBaseAtk,5; .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);  if (.@r >= 25) { bonus2 bIgnoreDefRaceRate,RC_Formless,100; bonus2 bIgnoreDefRaceRate,RC_Dragon,100; } }
 24438:24166:24167,{ bonus bBaseAtk,5; .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);  if (.@r >= 25) { bonus2 bIgnoreDefRaceRate,RC_Demon,100; bonus2 bIgnoreDefRaceRate,RC_Angel,100; } }
 24440:24441:24442,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"RK_SONICWAVE",.@r; }
-24441:24288,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24441:24288,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24443:24444:24445,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus2 bSkillAtk,"RK_IGNITIONBREAK",.@r; }
-24443:24301,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24443:24301,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24447:24446:24448,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-(.@r/2); }
-24447:24288,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",@r; }
+24447:24288,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",.@r; }
 24449:24450:24451,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r>=2) { bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; } }
-24449:24301,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bSkillAtk,"RK_DRAGONBREATH",@r; }
+24449:24301,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bSkillAtk,"RK_DRAGONBREATH",.@r; }
 24452:24453:24454,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"RA_CLUSTERBOMB",.@r; }
-24452:24298,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24452:24298,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24455:24456:24457,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus2 bSkillAtk,"RA_AIMEDBOLT",.@r; }
-24455:24311,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24455:24311,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24459:24458:24460,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"RA_ARROWSTORM",.@r; }
-24459:24298,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24459:24298,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24461:24462:24463,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus bCritAtkRate,.@r/2; }
-24461:24311,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24461:24311,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24465:24464:24466,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-.@r; }
-24465:24290,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24465:24290,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24467:24468:24469,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus2 bSkillAtk,"NC_AXEBOOMERANG",.@r; }
-24465:24290,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24465:24290,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24471:24470:24472,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"NC_VULCANARM",.@r; }
-24471:24290,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40+.@r; }
+24471:24290,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; }
 24473:24474:24475,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r>=2) bonus2 bSkillAtk,"NC_ARMSCANNON",.@r/2; }
 24473:24303,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_SHIELD); if (.@r>=2) bonus2 bVariableCastrate,"NC_ARMSCANNON",.@r/2; }
 25069:25070:25071,{ bonus bDelayrate,-2; }
@@ -1476,7 +1473,7 @@
 27196:27331,{ bonus bDelayrate,-3; }
 27197:27198,{ bonus2 bAddSize,Size_Small,5; bonus2 bAddRace,RC_Brute,5; bonus2 bAddRace,RC_Player_Doram,5; }
 27197:27333,{ bonus2 bAddClass,Class_All,5; }
-// 27321:27326,{ bonus bMaxHPrate,50; }
+27321:27326,{ bonus bMaxHPrate,50; }
 27322:27323,{ bonus bMaxSPrate,5; bonus bMaxHPrate,5; }
 27324:27325,{ bonus2 bMagicAtkEle,Ele_Water,10; bonus2 bSubDefEle,Ele_Fire,10; }
 28022:28509,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bAspdRate,10; if (.@r >= 9) { bonus bCritAtkRate,10; if (.@r >= 11) { bonus2 bAddRace,RC_Brute,25; bonus2 bAddRace,RC_Player_Doram,25; } } }
@@ -1620,9 +1617,9 @@
 //[TODO]Warrior's Bow:32234,{ bonus2 bAddRace,RC_Insect,20; bonus2 bAddRace,RC_Plant,20; bonus2 bMagicAddRace,RC_Insect,20; bonus2 bMagicAddRace,RC_Plant,20; bonus2 bAddEle,Ele_Wind,20; bonus2 bAddEle,Ele_Earth,20; bonus2 bMagicAddEle,Ele_Wind,15; bonus2 bMagicAddEle,Ele_Earth,20; }
 1448:32234,{ bonus2 bAddRace,RC_Brute,20; bonus2 bAddRace,RC_Plant,20; bonus2 bMagicAddRace,RC_Brute,20; bonus2 bMagicAddRace,RC_Plant,20; bonus2 bAddEle,Ele_Wind,20; bonus2 bAddEle,Ele_Earth,20; bonus2 bMagicAddEle,Ele_Wind,15; bonus2 bMagicAddEle,Ele_Earth,20; }
 29176:32234,{ bonus2 bAddRace,RC_Brute,15; bonus2 bAddRace,RC_Plant,15; bonus2 bMagicAddRace,RC_Brute,15; bonus2 bMagicAddRace,RC_Plant,15; bonus2 bAddEle,Ele_Wind,15; bonus2 bAddEle,Ele_Earth,15; bonus2 bMagicAddEle,Ele_Wind,15; bonus2 bMagicAddEle,Ele_Earth,15; }
-//22171:18164,{ autobonus "{ bonus bDex,20; bonus bLongAtkRate,20; }",30,7000,BF_WEAPON; } /*Not had item in item_db yet*/
-//22171:18170,{ autobonus "{ bonus bDex,20; bonus bLongAtkRate,15; }",30,7000,BF_WEAPON; } /*Not had item in item_db yet*/
-//22171:2048,{ autobonus "{ bonus bInt,20; bonus bMatkRate,15; }",30,7000,BF_MAGIC; } /*Not had item in item_db yet*/
+22171:18164,{ autobonus "{ bonus bDex,20; bonus bLongAtkRate,20; }",30,7000,BF_WEAPON; }
+22171:18170,{ autobonus "{ bonus bDex,20; bonus bLongAtkRate,15; }",30,7000,BF_WEAPON; }
+22171:2048,{ autobonus "{ bonus bInt,20; bonus bMatkRate,15; }",30,7000,BF_MAGIC; }
 22171:610003,{ autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,15; }",30,7000,BF_WEAPON; }
 22171:700003,{ autobonus "{ bonus bDex,20; bonus bLongAtkRate,20; }",30,7000,BF_WEAPON; }
 22171:510006,{ autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,15; }",30,7000,BF_WEAPON; }
@@ -1697,7 +1694,7 @@
 32402:15388:15389,{ .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); autobonus "{ bonus bLongAtkRate,10; }",1,10000,BF_WEAPON; bonus bBaseAtk,30; if (.@sum>=30) { bonus2 bAddEle,Ele_Undead,20; bonus2 bAddEle,Ele_Holy,20; bonus2 bAddEle,Ele_Earth,20; } }
 32403:15388:15389,{ .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); autobonus "{ bonus bLongAtkRate,10; }",1,10000,BF_WEAPON; bonus bBaseAtk,30; if (.@sum>=30) { bonus2 bAddEle,Ele_Undead,20; bonus2 bAddEle,Ele_Holy,20; } }
 300128:300130,{ bonus2 bAddSize,Size_Medium,5; bonus2 bMagicAddSize,Size_Medium,5; bonus bMatkRate,5; bonus2 bAddClass,Class_All,5; }
-//300141:300120,{ bonus2 bMagicAddEle,Ele_Water,15; }
+300141:300120,{ bonus2 bMagicAddEle,Ele_Water,15; }
 300144:300150,{ bonus bCritAtkRate,15; }
 300146:4521,{ bonus bCritAtkRate,15; }
 300147:4089,{ bonus bMatkRate,3; }
@@ -1735,10 +1732,10 @@
 15401:20947:22209,{ .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bMdef,15; bonus bDef,30; bonus bInt,8; bonus2 bSubRace,RC_Angel,15; bonus2 bSubRace,RC_Demon,15; if (.@sum>=27) { bonus bMatkRate,10; bonus bDelayrate,-20; bonus bFixedCastrate,-20; } }
 15402:20947:22209,{ .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bMdef,15; bonus bDef,30; bonus bLuk,8; if (.@sum>=27) { bonus2 bAddClass,Class_All,10; bonus bDelayrate,-20; bonus bFixedCastrate,-20; } }
 32248:32250,{ bonus bAspdRate,15; bonus bMaxHPrate,10; }
-// 32248:?,{ bonus bFixedCast,-300; bonus bDelayrate,-7; bonus2 bSubSize,Size_All,3; }
+// 32248:?,{ bonus bFixedCast,-300; bonus bDelayrate,-7; bonus2 bSubSize,Size_All,3; } /* einbech weapons? */
 32248:32251,{ bonus bVariableCastrate,-15; bonus bMaxHPrate,10; }
 32249:32250,{ bonus bAspdRate,15; bonus bMaxHPrate,10; }
-// 32249:?,{ bonus bFixedCast,-300; bonus bDelayrate,-7; bonus2 bMagicSubSize,Size_All,3; }
+// 32249:?,{ bonus bFixedCast,-300; bonus bDelayrate,-7; bonus2 bMagicSubSize,Size_All,3; } /* einbech weapons? */
 32249:32251,{ bonus bVariableCastrate,-15; bonus bMaxHPrate,10; }
 300001:4062,{ bonus2 bAddEle,Ele_Poison,15; }
 300002:4334,{ bonus bLongAtkDef,10; bonus bMaxHPrate,5; }
@@ -1767,7 +1764,7 @@
 300104:300081:300124,{ bonus2 bSkillAtk,"SO_DIAMONDDUST",20; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",20; .@r_weapon = getequiprefinerycnt(EQI_HAND_R); .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",5*(.@r_shoes/2); bonus2 bSkillAtk,"SO_DIAMONDDUST",5*(.@r_weapon/2); }
 300105:300081:300106,{ bonus2 bSkillAtk,"WL_CRIMSONROCK",20; bonus2 bSkillAtk,"WL_COMET",20; .@r_weapon = getequiprefinerycnt(EQI_HAND_R); .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"WL_COMET",5*(.@r_shoes/2); bonus2 bSkillAtk,"WL_CRIMSONROCK",5*(.@r_weapon/2); }
 300108:27172:300097,{ bonus2 bSkillAtk,"SC_FATALMENACE",20; bonus2 bSkillAtk,"SC_TRIANGLESHOT",20; .@r_weapon = getequiprefinerycnt(EQI_HAND_R); .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"SC_FATALMENACE",5*(.@r_shoes/2); bonus2 bSkillAtk,"SC_TRIANGLESHOT",5*(.@r_weapon/2); }
-300109:300097,{ bonus2 bSkillAtk,"GC_COUNTERSLASH",20; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",20; .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"GC_COUNTERSLASH",5*(.@r_shoes/3); bonus2 bSkillAtk,"GC_ROLLINGCUTTER",5*(.@r_shoes/3); }
+300109:27313:300097,{ bonus2 bSkillAtk,"GC_COUNTERSLASH",20; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",20; .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"GC_COUNTERSLASH",5*(.@r_shoes/3); bonus2 bSkillAtk,"GC_ROLLINGCUTTER",5*(.@r_shoes/3); }
 300110:4575:300083,{ bonus2 bSkillAtk,"KO_BAKURETSU",20; bonus2 bSkillAtk,"KO_JYUMONJIKIRI",20; .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"KO_BAKURETSU",5*(.@r_shoes/3); bonus2 bSkillAtk,"KO_JYUMONJIKIRI",5*(.@r_shoes/3); }
 300111:27320:300083,{ bonus2 bSkillAtk,"NJ_KOUENKA",20; bonus2 bSkillAtk,"NJ_HYOUSENSOU",20; bonus2 bSkillAtk,"NJ_HUUJIN",20; .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"NJ_KOUENKA",5*(.@r_shoes/3); bonus2 bSkillAtk,"NJ_HYOUSENSOU",5*(.@r_shoes/3); bonus2 bSkillAtk,"NJ_HUUJIN",5*(.@r_shoes/3); }
 300112:300085:300114,{ bonus2 bSkillAtk,"SP_CURSEEXPLOSION",20; bonus2 bSkillAtk,"SP_SWHOO",20; .@r_weapon = getequiprefinerycnt(EQI_HAND_R); .@r_shoes = getequiprefinerycnt(EQI_SHOES); bonus2 bSkillAtk,"SP_CURSEEXPLOSION",5*(.@r_shoes/2); bonus2 bSkillAtk,"SP_SWHOO",5*(.@r_weapon/2); }
@@ -1835,4 +1832,388 @@
 700001:450004:470003:480003:490007,{ bonus bMaxHPrate,10; bonus bDelayrate,-15; bonus2 bSkillAtk,"RA_AIMEDBOLT",min(BaseLevel,180)/15*2; autobonus3 "{ bonus2 bSkillAtk,\"RA_AIMEDBOLT\",35; }",1000,60000,"SN_SIGHT"; }
 830000:450001:470000:480000:490004,{ bonus bBaseAtk,20; bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"RL_R_TRIP",min(BaseLevel,180)/15; autobonus3 "{ bonus2 bSkillAtk,\"RL_R_TRIP\",20; }",1000,60000,"RL_RICHS_COIN"; }
 830000:450004:470003:480003:490007,{ bonus bBaseAtk,20; bonus2 bSkillCooldown,"RL_FIRE_RAIN",-1000; bonus2 bSkillAtk,"RL_FIRE_RAIN",min(BaseLevel,180)/15*2; autobonus3 "{ bonus2 bSkillAtk,\"RL_FIRE_RAIN\",35; }",1000,60000,"RL_RICHS_COIN"; }
-
+400044:16089,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Holy,5; bonus bVariableCastrate,-3*(.@r/2);  }
+400044:26151,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,30; bonus2 bSkillAtk,"SP_SPA",4*(.@r/2); bonus2 bSkillAtk,"SP_SWHOO",4*(.@r/2);  }
+400044:26164,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"SU_CN_METEOR",-1000; bonus2 bSkillAtk,"SU_CN_METEOR",4*(.@r/2);  }
+450127:480020,{ bonus bBaseAtk,50;  }
+450127:480021,{ bonus bDelayrate,-10;  }
+450128:480020,{ bonus bAspdRate,10;  }
+450128:480021,{ bonus bMatk,50; }
+470022:450127,{ bonus2 bAddClass,Class_All,7;  }
+470022:450128,{ bonus bAspdRate,7;  }
+470023:450127,{ bonus bMaxSPrate,7;  }
+470023:450128,{ bonus bMatkRate,7;  }
+480020:470022,{ bonus bCritAtkRate,15;  }
+480020:470023,{ bonus bVariableCastrate,-15;  }
+480021:470022,{ bonus bLongAtkRate,7;  }
+480021:470023,{ bonus2 bMagicAtkEle,Ele_All,15;  }
+29587:4877,{ bonus bCritAtkRate,30; }
+29588:4875,{ bonus2 bAddSize,Size_All,25; }
+29589:4879,{ bonus2 bAddClass,Class_All,10; }
+29590:4876,{ bonus2 bMagicAtkEle,Ele_All,15; }
+29591:4878,{ bonus bDelayrate,-10; }
+29592:4880,{ bonus bAspd,2; }
+310257:29460,{ bonus2 bSkillAtk,"RK_SONICWAVE",20; }
+310257:29461,{ bonus2 bSkillAtk,"RK_IGNITIONBREAK",10; }
+310257:29462,{ bonus2 bSkillAtk,"RK_HUNDREDSPEAR",30; }
+310261:29464,{ bonus2 bSkillCooldown,"GN_CART_TORNADO",-700; }
+310261:29465,{ bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",20; }
+310261:29466,{ bonus bFixedCast,-100*(getskilllv("CR_ACIDDEMONSTRATION")/2); }
+310265:2235,{ bonus2 bSkillAtk,"WM_REVERBERATION",10; }
+310325:310326:310330,{ bonus bLongAtkRate,6; }
+310327:310328:310329,{ bonus bShortAtkRate,6; }
+24477:24293,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24477:24476:24478,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",.@sum; }
+24479:24306,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24479:24480:24481,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"SR_SKYNETBLOW",.@sum; }
+24483:24293,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24483:24482:24484,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-.@sum/2; }
+24485:24306,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@r; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@r; bonus2 bSkillAtk,"SR_TIGERCANNON",.@sum; }
+24485:24486:24487,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus bMaxHPrate,.@sum/2; bonus bMaxSPrate,.@sum/2; }
+24489:24292,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24489:24488:24490,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"AB_DUPLELIGHT",.@sum; }
+24491:24305,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24491:24492:24493,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"AB_ADORAMUS",.@sum/2; }
+24495:24292,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24495:24494:24496,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"AB_JUDEX",.@sum; }
+24497:24305,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24497:24498:24499,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"PR_MAGNUS",.@sum; }
+24501:24299,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24501:24300,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24501:24500:24502,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",.@sum/2; }
+24503:24312,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24503:24313,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24503:24504:24505,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"CG_ARROWVULCAN",.@sum; }
+24507:24299,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24507:24300,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24507:24506:24508,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"WM_METALICSOUND",.@sum; }
+24509:24312,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24509:24313,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24509:24510:24511,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"WM_REVERBERATION",.@sum/2; }
+24513:24296,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24513:24512:24514,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"WL_JACKFROST",.@sum; }
+24515:24309,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24515:24516:24517,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"WL_EARTHSTRAIN",.@sum; }
+24519:24296,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24519:24518:24520,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"WL_CRIMSONROCK",.@sum; }
+24521:24309,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24521:24522:24523,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"WL_CHAINLIGHTNING",.@sum; }
+24525:24295,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24525:24524:24526,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-.@sum/2; }
+24527:24308,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24527:24528:24529,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",.@sum; }
+24531:24295,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24531:24530:24532,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-.@sum/2; }
+24533:24308,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus bVariableCastrate,-.@sum/2; }
+24533:24534:24535,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"SC_FEINTBOMB",.@sum/2; }
+24537:24294,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24537:24536:24538,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"GC_ROLLINGCUTTER",.@sum; }
+24539:24307,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24539:24540:24541,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus bBaseAtk,.@sum; }
+24543:24294,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24543:24542:24544,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-.@sum/2; }
+24545:24307,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24545:24546:24547,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",.@sum/2; }
+24549:24297,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24549:24548:24550,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SO_DIAMONDDUST",.@sum; }
+24551:24310,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24551:24552:24553,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"SO_EARTHGRAVE",.@sum; }
+24555:24297,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24555:24554:24556,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",.@sum; }
+24557:24310,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24557:24558:24559,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"SO_VARETYR_SPEAR",.@sum; }
+24561:24291,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24561:24560:24562,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"GN_CART_TORNADO",.@sum; }
+24563:24304,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus bVariableCastrate,-.@sum/2; }
+24563:24564:24565,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"GN_CARTCANNON",.@sum/2; }
+24567:24291,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24567:24566:24568,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",.@sum; }
+24569:24304,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24569:24570:24571,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"GN_CRAZYWEED",.@sum; }
+24573:24289,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24573:24572:24574,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bDelayrate,-.@sum/2; }
+24575:24302,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24575:24576:24577,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"LG_SHIELDPRESS",.@sum; bonus2 bSkillAtk,"PA_SHIELDCHAIN",.@sum; }
+24579:24289,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24579:24578:24580,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"LG_BANISHINGPOINT",.@sum/2; bonus2 bSkillAtk,"LG_CANNONSPEAR",.@sum/2; }
+24581:24302,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24581:24582:24583,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"LG_RAYOFGENESIS",.@sum; }
+24589:24584:24585:24586:24587:24588,{ bonus2 bSkillCooldown,"RK_IGNITIONBREAK",-500; bonus3 bAutoSpell,"RK_IGNITIONBREAK",max(3,getskilllv("RK_IGNITIONBREAK")),1; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bDelayrate,-15; }
+24590:24584:24585:24586:24587:24588,{ bonus2 bSkillCooldown,"LG_CANNONSPEAR",-500; bonus2 bMagicAtkEle,Ele_Holy,10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bAspd,2; bonus2 bSkillAtk,"LG_RAYOFGENESIS",15; bonus2 bSkillAtk,"LG_CANNONSPEAR",15; }
+24591:24584:24585:24586:24587:24588,{ bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus2 bAddSize,Size_All,5; bonus bLongAtkRate,15; bonus bDelayrate,-15; bonus2 bSkillAtk,"NC_AXETORNADO",15; bonus2 bSkillAtk,"NC_ARMSCANNON",15; }
+24592:24584:24585:24586:24587:24588,{ bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bDelayrate,-15; bonus bVariableCastrate,-10; bonus2 bSkillCooldown,"GN_CART_TORNADO",-1000; bonus2 bSkillAtk,"GN_CART_TORNADO",15; bonus2 bSkillAtk,"GN_CARTCANNON",15; }
+24593:24584:24585:24586:24587:24588,{ bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bDelayrate,-15; bonus bCritical,10; bonus2 bSkillAtk,"GC_COUNTERSLASH",15; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; }
+24594:24584:24585:24586:24587:24588,{ bonus3 bAutoSpell,"SO_PSYCHIC_WAVE",3,1; bonus2 bMagicAtkEle,Ele_Neutral,10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bDelayrate,-15; bonus bAspd,2; bonus2 bSkillAtk,"SC_FATALMENACE",15; bonus2 bSkillAtk,"SC_TRIANGLESHOT",15; }
+24595:24584:24585:24586:24587:24588,{ bonus2 bMagicAtkEle,Ele_All,10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bDelayrate,-15; bonus bVariableCastrate,-10; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",15; bonus2 bSkillAtk,"WL_CRIMSONROCK",15; }
+24596:24584:24585:24586:24587:24588,{ bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus2 bSkillCooldown,"SO_DIAMONDDUST",-4000; bonus2 bMagicAtkEle,Ele_All,10; bonus2 bMagicAddSize,Size_All,10; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15; bonus2 bSkillAtk,"WL_CRIMSONROCK",15; }
+24597:24584:24585:24586:24587:24588,{ bonus2 bSkillAtk,"AB_ADORAMUS",15; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; bonus2 bMagicAddSize,Size_All,10; bonus2 bAddSize,Size_All,10; bonus2 bMagicAtkEle,Ele_Holy,10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus2 bSkillCooldown,"AB_ADORAMUS",-1000; }
+24598:24584:24585:24586:24587:24588,{ bonus2 bSkillCooldown,"SR_RAMPAGEBLASTER",-7500; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bDelayrate,-15; bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15; bonus2 bSkillAtk,"SR_TIGERCANNON",15; }
+24599:24584:24585:24586:24587:24588,{ bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMDefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bDelayrate,-15; bonus bVariableCastrate,-10; bonus2 bSkillAtk,"RA_ARROWSTORM",15; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; }
+24600:24584:24585:24586:24587:24588,{ bonus2 bMagicAtkEle,Ele_All,10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-70; bonus bLongAtkRate,15; bonus bVariableCastrate,-10; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; bonus2 bSkillAtk,"WM_REVERBERATION",15; }
+24601:24405,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24601:24602:24603,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"RL_D_TAIL",.@sum/2; }
+24604:24402,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24604:24605:24606,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"RL_FIREDANCE",.@sum/2; }
+24607:24405,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24607:24608:24609,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",.@sum/2; }
+24610:24402,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24610:24611:24612,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"RL_BANISHING_BUSTER",.@sum/2; bonus2 bSkillAtk,"RL_S_STORM",.@sum/2; }
+24613:24405,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24613:24614:24615,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"RL_R_TRIP",.@sum/2; }
+24616:24282,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24616:24617:24618,{ .@sum = getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"MG_FIREBOLT",.@sum*2; bonus2 bSkillAtk,"MG_COLDBOLT",.@sum*2; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",.@sum*2; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",.@sum*2; bonus2 bSkillAtk,"WZ_STORMGUST",.@sum*2; bonus2 bSkillAtk,"WZ_VERMILION",.@sum*2; bonus2 bSkillAtk,"WZ_METEOR",.@sum*2; skill "PF_DOUBLECASTING",5; }
+24619:24318,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24619:24620:24621,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R); bonus2 bSkillAtk,"RG_BACKSTAP",.@sum*2; bonus2 bSkillAtk,"RG_RAID",.@sum*2; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",.@sum*2; bonus2 bSkillAtk,"PA_SHIELDCHAIN",.@sum*2; skill "PA_SHIELDCHAIN",5; }
+24622:24406,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24622:24623:24624,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"KO_BAKURETSU",.@sum/2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",.@sum/2; }
+24625:24403,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24625:24626:24627,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"KO_HUUMARANKA",.@sum/2; }
+24628:24407,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24628:24629:24630,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"NJ_BAKUENRYU",.@sum; bonus2 bSkillAtk,"NJ_HYOUSYOURAKU",.@sum; bonus2 bSkillAtk,"NJ_KAMAITACHI",.@sum; }
+24631:24404,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24631:24632:24633,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"NJ_KOUENKA",.@sum/2; bonus2 bSkillAtk,"NJ_HYOUSENSOU",.@sum/2; bonus2 bSkillAtk,"NJ_HUUJIN",.@sum/2; }
+24634:24409,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24634:24635:24636,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"SU_PICKYPECK",.@sum/2; }
+24637:24408,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24637:24638:24639,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",.@sum; bonus2 bSkillAtk,"SU_SVG_SPIRIT",.@sum; }
+24640:24411,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24640:24641:24642,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"SU_CN_METEOR",.@sum; }
+24643:24410,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24643:24644:24645,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SU_SV_STEMSPEAR",.@sum/2; }
+24646:24413,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24646:24647:24648,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"SJ_SOLARBURST",.@sum/2; }
+24649:24412,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24649:24650:24651,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SJ_FULLMOONKICK",.@sum/2; }
+24652:24413,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreDefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40-.@sum; }
+24652:24653:24654,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",.@sum; }
+24655:24415,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24655:24656:24657,{ .@sum = getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bSkillAtk,"SP_SPA",.@sum; bonus2 bSkillAtk,"SP_SWHOO",.@sum; }
+24658:24414,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus2 bIgnoreMdefRaceRate,RC_All,40+.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40-.@sum; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40-.@sum; }
+24658:24659:24660,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bSkillAtk,"SP_CURSEEXPLOSION",.@sum; }
+24661:24662,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus2 bAddClass,Class_All,2; if (.@sum>=18) { bonus bIgnoreDefRace,RC_All; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-100; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-100; } }
+24663:24664,{ .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus2 bAddClass,Class_All,2; if (.@sum>=18) { bonus bIgnoreDefRace,RC_All; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-100; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-100; } }
+2595:2164,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_Undead,.@r_garment; }
+2596:2159,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_Demon,.@r_garment; }
+15210:19275,{ bonus bVariableCastrate,-30; bonus bFlee2,15; }
+15246:20902:22168,{ bonus bDelayrate,-7; if (getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)>=9) { bonus bDelayrate,-8; } }
+15247:20903:22169,{ bonus bDelayrate,-5; }
+15344:20733,{ bonus2 bSkillAtk,"NC_ARMSCANNON",50; }
+15383:20939,{ bonus bDelayrate,-10; }
+15390:20945:22206,{ bonus bVariableCastrate,-7; if (getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)>=9) { bonus bVariableCastrate,-5; } }
+19097:28901,{ autobonus2 "{ }",1,3000,BF_WEAPON|BF_MAGIC,"{ heal 5000,0; unitskilluseid getcharid(3),\"WM_LULLABY_DEEPSLEEP\",1; active_transform 1930,3000; /*PIAMETTE, unknown timer*/ }"; }
+19097:28902,{ autobonus2 "{ }",1,3000,BF_WEAPON|BF_MAGIC,"{ heal 5000,0; unitskilluseid getcharid(3),\"WM_LULLABY_DEEPSLEEP\",1; active_transform 1930,3000; /*PIAMETTE, unknown timer*/ }"; }
+19098:28901,{ .@r_top = getequiprefinerycnt(EQI_HEAD_TOP); .@r_left = getequiprefinerycnt(EQI_HAND_L); autobonus "{ bonus2 bHPLossRate,50,1000; }",1+.@r_top,3000+.@r_left*1000,BF_WEAPON|BF_MAGIC,"{ active_transform 1930,3000" + (.@r_left*1000) + "; /*PIAMETTE, unknown effect*/ }"; }
+19098:28902,{ .@r_top = getequiprefinerycnt(EQI_HEAD_TOP); .@r_left = getequiprefinerycnt(EQI_HAND_L); autobonus "{ bonus2 bHPLossRate,50,1000; }",1+.@r_top,3000+.@r_left*1000,BF_WEAPON|BF_MAGIC,"{ active_transform 1930,3000" + (.@r_left*1000) + "; /*PIAMETTE, unknown effect*/ }"; }
+19218:28511,{ bonus2 bAddItemHealRate,569,20; }
+19243:20842,{ bonus bAspdRate,5; }
+19243:20843,{ bonus2 bAddClass,Class_All,4; if (getequiprefinerycnt(EQI_GARMENT)>=12) { bonus bAllStats,1; } }
+19243:20844,{ bonus bVariableCastrate,-5; }
+19244:1659,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bDelayrate,-3*(.@r/2); bonus2 bSkillUseSP,"AL_HEAL",.@r*10; bonus2 bSkillUseSP,"AB_CHEAL",.@r*12; bonus2 bSkillUseSP,"AB_HIGHNESSHEAL",.@r*14; }
+19249:1654,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",5*(.@r_weapon/2); }
+19249:2004,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"WL_HELLINFERNO",10*(.@r_weapon/2); }
+19249:13076:13078,{ .@r = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HAND_L); bonus bVariableCastrate,-.@r; bonus2 bSkillAtk,"NJ_KOUENKA",5*(.@r/2); bonus2 bSkillAtk,"NJ_HYOUSENSOU",5*(.@r/2); bonus2 bSkillAtk,"NJ_HUUJIN",5*(.@r/2); }
+19263:1168:1171,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bBaseAtk,20*(.@r_weapon/2); }
+19263:1413:1418,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"LG_BANISHINGPOINT",7*(.@r_weapon/2); }
+19263:1527:1537,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"SR_TIGERCANNON",7*(.@r_weapon/2); }
+19268:20717,{ bonus bBaseAtk,5*(readparam(bStr)/20); bonus bAspdRate,3*(readparam(bAgi)/20); bonus2 bSubEle,Ele_Neutral,(readparam(bVit)/20); bonus bVariableCastrate,-4*(readparam(bInt)/20); bonus bCritAtkRate,3*(readparam(bLuk)/20); }
+19268:20718,{ bonus bBaseAtk,5*(readparam(bStr)/20); bonus bAspdRate,3*(readparam(bAgi)/20); bonus2 bSubEle,Ele_Neutral,(readparam(bVit)/20); bonus bVariableCastrate,-4*(readparam(bInt)/20); bonus bCritAtkRate,3*(readparam(bLuk)/20); }
+19275:15210:20855,{ bonus bAspdRate,15; bonus2 bCriticalAddRace,RC_Fish,30; bonus2 bAddRace,RC_Fish,25; bonus bDefEle,Ele_Water; }
+19296:2507,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bSkillAtk,"SC_TRIANGLESHOT",15*(.@r_garment/2); }
+19296:2525,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bSkillAtk,"SC_TRIANGLESHOT",15*(.@r_garment/2); }
+19296:2544,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",7*(.@r_garment/2); }
+19296:2554,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bSkillAtk,"RA_ARROWSTORM",12*(.@r_garment/2); }
+19300:13138,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"RL_FIREDANCE",6*(.@r_weapon/2); }
+19300:28000,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bBaseAtk,20*(.@r_weapon/2); }
+19300:28101,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"NC_AXETORNADO",15*(.@r_weapon/2); }
+19308:1631,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,10*(.@r_weapon/2); bonus2 bSkillAtk,"AB_ADORAMUS",30*(.@r_weapon/2); }
+19308:1691,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Neutral,5*(.@r_weapon/2); }
+19308:13412,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"GN_CARTCANNON",10*(.@r_weapon/2); }
+19439:20748,{ bonus bBaseAtk,5*(readparam(bStr)/30); bonus bAspdRate,3*(readparam(bAgi)/30); bonus bDelayrate,-4*(readparam(bVit)/30); bonus bVariableCastrate,-8*(readparam(bInt)/30); bonus bMatk,5*(readparam(bInt)/30); bonus bLongAtkRate,(readparam(bDex)/30); bonus bCritAtkRate,3*(readparam(bLuk)/30); }
+20705:2174,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); .@r_shield = getequiprefinerycnt(EQI_HAND_L); bonus2 bSubRace,RC_Dragon,.@r_garment; bonus2 bAddEle,Ele_Holy,.@r_shield; }
+20708:2167,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); .@r_shield = getequiprefinerycnt(EQI_HAND_L); bonus2 bSubRace,RC_Plant,.@r_garment; bonus2 bAddEle,Ele_Poison,.@r_shield; }
+20750:2194,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); .@r_shield = getequiprefinerycnt(EQI_HAND_L); bonus2 bSubRace,RC_Insect,.@r_garment; bonus2 bAddEle,Ele_Wind,.@r_shield; }
+20855:19275,{ bonus bAspd,2; bonus bNoCastCancel; }
+20902:22168,{ bonus2 bMagicAtkEle,Ele_All,7; if (getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)>=9) { bonus bFixedCast,-500; } }
+20903:22169,{ bonus bFixedCast,-300; }
+20939:22204,{ bonus bFixedCast,-500; bonus bVariableCastrate,-10; }
+20940:5104:5329,{ bonus bDelayrate,-6; }
+20940:19052:19085,{ bonus bCritAtkRate,14; }
+20940:19241,{ bonus bVariableCastrate,-30; }
+20940:19245,{ bonus bLongAtkRate,14; }
+20945:22206,{ bonus bMatk,20; bonus bBaseAtk,20; if (getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)>=9) { bonus bAspdRate,5; } }
+20955:2976:2980,{ bonus bAspdRate,10; bonus bMatkRate,10; bonus bHit,10; if (getequiprefinerycnt(EQI_GARMENT)>=10) { bonus3 bAutoSpell,"SO_PSYCHIC_WAVE",3,1; } }
+20955:2977:2978,{ bonus bLongAtkRate,10; bonus bAspdRate,10; bonus2 bAddClass,Class_All,10; if (getequiprefinerycnt(EQI_GARMENT)>=10) { bonus bCritAtkRate,15; bonus bHit,15; } }
+20955:2977:16029,{ bonus bMatk,30; bonus2 bSkillAtk,"AB_DUPLELIGHT",40; if (getequiprefinerycnt(EQI_HAND_R)>=10) { bonus2 bSkillAtk,"AB_DUPLELIGHT",20; } }
+20955:2978:16029,{ bonus bBaseAtk,30; bonus2 bSkillAtk,"SR_KNUCKLEARROW",40; if (getequiprefinerycnt(EQI_HAND_R)>=10) { bonus2 bSkillAtk,"SR_KNUCKLEARROW",20; } }
+20955:2980:13442,{ bonus3 bAutoSpell,"MG_SOULSTRIKE",10,1; bonus bMatk,80; if (getequiprefinerycnt(EQI_HAND_R)>=10) { bonus3 bAutoSpell,"HW_NAPALMVULCAN",5,1; } }
+22048:2164,{ bonus2 bSubEle,Ele_Dark,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22048:2595,{ bonus2 bAddEle,Ele_Dark,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22049:2165,{ bonus2 bSubEle,Ele_Earth,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22049:20701,{ bonus2 bAddEle,Ele_Earth,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22051:2158,{ bonus2 bSubEle,Ele_Undead,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22051:2598,{ bonus2 bAddEle,Ele_Undead,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22055:2159,{ bonus2 bSubEle,Ele_Fire,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22055:2596,{ bonus2 bAddEle,Ele_Fire,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22057:2163,{ bonus2 bSubEle,Ele_Water,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22057:2593,{ bonus2 bAddEle,Ele_Water,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22061:2174,{ bonus2 bSubEle,Ele_Holy,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22061:20705,{ bonus2 bAddEle,Ele_Holy,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22063:2194,{ bonus2 bSubEle,Ele_Wind,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22063:20750,{ bonus2 bAddEle,Ele_Wind,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22065:2167,{ bonus2 bSubEle,Ele_Poison,5+2*getequiprefinerycnt(EQI_HAND_L); }
+22065:20708,{ bonus2 bAddEle,Ele_Poison,5; .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r_garment; bonus bMaxSPrate,.@r_garment; }
+22168:15246,{ bonus bLongAtkRate,7; if (getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_ARMOR)>=9) { bonus bCritAtkRate,10; } }
+22169:15247,{ bonus bAspd,1; }
+22204:15383,{ bonus bMatkRate,5; bonus2 bAddClass,Class_All,5; }
+22206:15390,{ bonus bLongAtkRate,7; if (getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_ARMOR)>=9) { bonus bCritAtkRate,7; } }
+28473:15181:28474,{ bonus2 bSubEle,Ele_Neutral,-2; bonus2 bSubEle,Ele_All,2; bonus bMatk,20; }
+28473:22122:28474,{ bonus bDelayrate,-3; bonus bVariableCastrate,-3; }
+28475:15182:28476,{ bonus2 bSubEle,Ele_Neutral,-4; bonus2 bSubEle,Ele_All,4; bonus bMatk,40; }
+28475:22123:28476,{ bonus bDelayrate,-6; bonus bVariableCastrate,-6; }
+28477:15183:28478,{ bonus2 bSubEle,Ele_Neutral,-4; bonus2 bSubEle,Ele_All,4; bonus bMatk,40; }
+28477:22124:28478,{ bonus bDelayrate,-6; bonus bVariableCastrate,-6; }
+28479:15184:28480,{ bonus2 bSubEle,Ele_Neutral,-5; bonus2 bSubEle,Ele_All,5; bonus bMatk,50; }
+28479:22125:28480,{ bonus bDelayrate,-8; bonus bVariableCastrate,-8; }
+28481:15185:28482,{ bonus2 bSubEle,Ele_Neutral,-5; bonus2 bSubEle,Ele_All,5; bonus bMatk,50; bonus bNoCastCancel; }
+28481:22126:28482,{ bonus bDelayrate,-8; bonus bVariableCastrate,-8; }
+28535:28534,{ bonus bFixedCast,-100; bonus bDelayrate,-3; }
+32221:15383:20939:22204,{ bonus bVariableCastrate,-10; bonus bAspd,2; }
+400000:2990,{ bonus bVariableCastrate,-10; }
+400000:2991,{ bonus bCritAtkRate,10; }
+400000:2992,{ bonus bCritAtkRate,10; bonus bVariableCastrate,-10; }
+400021:21047,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bCritical,10; bonus2 bAddSize,Size_Large,4*(.@r_weapon/2); bonus2 bMagicAddSize,Size_Large,4*(.@r_weapon/2); }
+400021:28038,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bBaseAtk,30; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",4*(.@r_weapon/2); }
+400021:28629,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bBaseAtk,30; bonus2 bSkillAtk,"SJ_SOLARBURST",4*(.@r_weapon/2); }
+400022:16088,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bBaseAtk,30; bonus2 bSkillAtk,"GN_CARTCANNON",4*(.@r_weapon/2); }
+400022:18178,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"RA_ARROWSTORM",-2500; bonus2 bWeaponDamageRate,W_BOW,7*(.@r_weapon/2); }
+400022:28136,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bMaxHPrate,5; bonus2 bSubSize,Size_Small,3*(.@r_weapon/2); bonus2 bMagicSubSize,Size_Small,3*(.@r_weapon/2); }
+400059:13493,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Holy,5; bonus2 bSkillAtk,"LG_RAYOFGENESIS",4*(.@r_weapon/2); }
+400059:16089,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Holy,5; bonus2 bSkillAtk,"AB_JUDEX",3*(.@r_weapon/2); }
+400059:26151,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,30; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",3*(.@r_weapon/2); }
+400061:1862,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"SR_RAMPAGEBLASTER",-1000; bonus bLongAtkRate,3*(.@r_weapon/2); }
+400061:16088,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-10; bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",3*(.@r_weapon/2); }
+400061:28253,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,5; bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",3*(.@r_weapon/2); }
+400078:21051,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bCritAtkRate,10; bonus2 bSkillAtk,"RK_IGNITIONBREAK",12*.@r_weapon; }
+400078:21052,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bDelayrate,-10; bonus2 bSkillAtk,"RK_SONICWAVE",10*.@r_weapon; }
+400078:32023,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"RK_HUNDREDSPEAR",-500; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",10*.@r_weapon; }
+400079:32024,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"LG_SHIELDPRESS",-1000; bonus2 bSkillAtk,"LG_SHIELDPRESS",10*.@r_weapon; }
+400079:32025,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"LG_CANNONSPEAR",-500; bonus2 bSkillAtk,"LG_CANNONSPEAR",12*.@r_weapon; }
+400079:32350,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-15; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10*.@r_weapon; bonus2 bSkillAtk,"PA_PRESSURE",10*.@r_weapon; }
+400094:2055,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Ghost,3; bonus2 bSkillAtk,"WL_SOULEXPANSION",3*.@r_weapon; }
+400094:2056,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Neutral,3; bonus2 bSkillAtk,"HW_GRAVITATION",3*.@r_weapon; bonus2 bSkillAtk,"WL_COMET",3*.@r_weapon; }
+400094:26158,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"WL_CRIMSONROCK",-1000; bonus2 bSkillAtk,"WL_CRIMSONROCK",3*.@r_weapon; }
+400095:26159,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Neutral,3; bonus2 bMagicAtkEle,Ele_Wind,3; bonus2 bSkillAtk,"SO_VARETYR_SPEAR",3*.@r_weapon; }
+400095:26160,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Earth,3; bonus2 bMagicAtkEle,Ele_Water,3; bonus2 bSkillAtk,"SO_DIAMONDDUST",3*.@r_weapon; }
+400095:28633,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bMatkRate,2; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",3*.@r_weapon; bonus2 bSkillAtk,"MG_FIREBOLT",3*.@r_weapon; bonus2 bSkillAtk,"MG_COLDBOLT",3*.@r_weapon; }
+400097:450164:470070:480083,{ bonus bMatkRate,5; bonus2 bAddClass,Class_All,5; bonus2 bExpAddRace,RC_Fish,20; bonus2 bExpAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Fish,50; bonus2 bMagicAddRace,RC_Fish,50; bonus2 bAddRace,RC_DemiHuman,50; bonus2 bMagicAddRace,RC_DemiHuman,50; bonus2 bSubEle,Ele_Wind,25; bonus2 bSubEle,Ele_Water,25; }
+400098:1333,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"NC_POWERSWING",10*.@r_weapon; }
+400098:16092,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"NC_ARMSCANNON",10*.@r_weapon; }
+400098:28138,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"NC_AXETORNADO",10*.@r_weapon; }
+400099:16093,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"GN_CARTCANNON",10*.@r_weapon; }
+400099:16094,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"GN_CRAZYWEED",10*.@r_weapon; }
+400099:32351,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",10*.@r_weapon; }
+400116:18185,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bCritAtkRate,20; bonus2 bSkillAtk,"SN_SHARPSHOOTING",10*.@r_weapon; }
+400116:18186,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"RA_AIMEDBOLT",10*.@r_weapon; }
+400116:18187,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"RA_ARROWSTORM",-1800; bonus2 bSkillAtk,"RA_ARROWSTORM",10*.@r_weapon; }
+400117:18188,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10*.@r_weapon; }
+400117:26212:32107,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Neutral,10; bonus2 bSkillAtk,"WM_METALICSOUND",5*.@r_weapon; }
+400117:26213:32108,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10*.@r_weapon; }
+400118:2057,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Holy,10; bonus2 bSkillAtk,"AB_ADORAMUS",5*.@r_weapon; }
+400118:16095,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"AB_DUPLELIGHT",10*.@r_weapon; }
+400118:26161,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_Holy,10; bonus2 bSkillAtk,"AB_JUDEX",10*.@r_weapon; }
+400119:1865,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bAddSize,Size_All,10; bonus2 bSkillAtk,"CH_CHAINCRUSH",10*.@r_weapon; }
+400119:1866,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10*.@r_weapon; }
+400119:16096,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",10*.@r_weapon; }
+400120:18184,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,10; bonus2 bSkillAtk,"SC_TRIANGLESHOT",10*.@r_weapon; }
+400120:28767,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bDelayrate,-10; bonus2 bSkillAtk,"SC_FATALMENACE",10*.@r_weapon; }
+400120:28768,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bMagicAtkEle,Ele_All,10+5*.@r_weapon; }
+400121:28042,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,20; bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",10*.@r_weapon; }
+400121:28044,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"GC_CROSSIMPACT",20; bonus bShortAtkRate,5*.@r_weapon; }
+400121:28765:28766,{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus bCritAtkRate,20; bonus bShortAtkRate,5*(.@r_weapon/2); bonus bLongAtkRate,5*(.@r_weapon/2); }
+420003:13442,{ bonus bMatk,50; bonus5 bAutoSpell,"HW_GRAVITATION",3,100,BF_SHORT|BF_WEAPON,1; }
+420017:15278:20963,{ .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); bonus2 bAddClass,Class_All,5; if (.@sum>=14) { bonus bBaseAtk,80; } if (.@sum>=18) { bonus bDelayrate,-7; bonus bBaseAtk,30; } if (.@sum>=22) { bonus bShortAtkRate,10; } }
+420018:15354:20967,{ .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); bonus2 bAddSize,Size_All,7; if (.@sum>=14) { bonus bBaseAtk,80; } if (.@sum>=18) { bonus2 bAddSize,Size_All,7; bonus2 bAddClass,Class_All,5; } if (.@sum>=22) { bonus bLongAtkRate,10; } }
+420019:15353:20964,{ .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); bonus2 bAddRace,RC_All,7; if (.@sum>=14) { bonus bBaseAtk,80; } if (.@sum>=18) { bonus2 bAddRace,RC_All,7; bonus bAspd,1; } if (.@sum>=22) { bonus bDelayrate,-10; } }
+420020:15346:20968,{ .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); bonus2 bAddSize,Size_All,10; if (.@sum>=14) { bonus bBaseAtk,80; } if (.@sum>=18) { bonus2 bAddSize,Size_All,10; bonus bCritAtkRate,12; } if (.@sum>=22) { bonus bLongAtkRate,10; } }
+420021:15347:20965,{ .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,10; if (.@sum>=14) { bonus bBaseAtk,80; } if (.@sum>=18) { bonus2 bAddClass,Class_All,10; bonus bMaxSPrate,7; } if (.@sum>=22) { bonus bDelayrate,-10; } }
+420022:15279:20966,{ .@sum = getequiprefinerycnt(EQI_HEAD_MID)+getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT); bonus bVariableCastrate,-10; if (.@sum>=14) { bonus bMatk,80; } if (.@sum>=18) { bonus2 bMagicAtkEle,Ele_All,10; bonus bDelayrate,-7; } if (.@sum>=22) { bonus2 bMagicAddSize,Size_All,10; } }
+450147:480062,{ bonus bBaseAtk,50; }
+450147:480063,{ bonus bDelayrate,-10; }
+450148:480062,{ bonus bAspdRate,10; }
+450148:480063,{ bonus bMatk,50; }
+450164:400097,{ .@r_armor = getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_Fish,10+.@r_armor; bonus2 bSubRace,RC_DemiHuman,10+.@r_armor; bonus2 bSubRace,RC_Player_Human,10+.@r_armor; }
+470033:13414,{ bonus bMatk,70; bonus bAspd,2; if (getequiprefinerycnt(EQI_HAND_R)>=10) { bonus2 bMagicAtkEle,Ele_All,10; } }
+470054:450147,{ bonus2 bAddClass,Class_All,5; }
+470054:450148,{ bonus bAspdRate,5; }
+470055:450147,{ bonus bMaxSPrate,5; }
+470055:450148,{ bonus bMatkRate,5; }
+470070:400097,{ .@r = getequiprefinerycnt(EQI_SHOES); bonus2 bMagicAddEle,Ele_Wind,10+.@r; bonus2 bAddEle,Ele_Wind,10+.@r; bonus2 bMagicAddEle,Ele_Water,10+.@r; bonus2 bAddEle,Ele_Water,10+.@r; }
+480062:470054,{ bonus bCritAtkRate,10; }
+480062:470055,{ bonus bVariableCastrate,-10; }
+480063:470054,{ bonus bLongAtkRate,5; }
+480063:470055,{ bonus2 bMagicAtkEle,Ele_All,10; }
+480083:400097,{ .@r_garment = getequiprefinerycnt(EQI_GARMENT); bonus2 bAddRace,RC_Fish,10+.@r_garment; bonus2 bMagicAddRace,RC_Fish,10+.@r_garment; bonus2 bAddRace,RC_DemiHuman,10+.@r_garment; bonus2 bMagicAddRace,RC_DemiHuman,10+.@r_garment; }
+490044:15391:20946:22208,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bAddRace,RC_Dragon,20; bonus bDelayrate,-5; }
+490045:490044,{ bonus bFixedCast,-300; bonus2 bAddRace,RC_Angel,15; bonus2 bAddRace,RC_Dragon,15; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus bDelayrate,-5; }
+490046:15392:20946:22208,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bAddRace,RC_Dragon,20; bonus bDelayrate,-5; }
+490047:490046,{ bonus bFixedCast,-300; bonus2 bAddRace,RC_Angel,15; bonus2 bAddRace,RC_Dragon,15; bonus bDelayrate,-5; }
+490048:15393:20946:22208,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bMagicAddRace,RC_Angel,20; bonus2 bAddRace,RC_Dragon,20; bonus2 bMagicAddRace,RC_Dragon,20; bonus bDelayrate,-5; }
+490049:490048,{ bonus bFixedCast,-300; bonus2 bAddRace,RC_Angel,15; bonus2 bMagicAddRace,RC_Angel,15; bonus2 bAddRace,RC_Dragon,15; bonus2 bMagicAddRace,RC_Dragon,15; bonus bDelayrate,-5; }
+490050:15394:20946:22208,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bMagicAddRace,RC_Angel,20; bonus2 bAddRace,RC_Dragon,20; bonus2 bMagicAddRace,RC_Dragon,20; bonus bDelayrate,-5; }
+490051:490050,{ bonus bFixedCast,-300; bonus2 bAddRace,RC_Angel,15; bonus2 bMagicAddRace,RC_Angel,15; bonus2 bAddRace,RC_Dragon,15; bonus2 bMagicAddRace,RC_Dragon,15; bonus bDelayrate,-5; }
+490052:15395:20946:22208,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus2 bMagicAddRace,RC_Angel,20; bonus2 bMagicAddRace,RC_Dragon,20; bonus bDelayrate,-5; }
+490053:490052,{ bonus bFixedCast,-300; bonus2 bMagicAddRace,RC_Angel,15; bonus2 bMagicAddRace,RC_Dragon,15; bonus bDelayrate,-5; }
+490054:15396:20946:22208,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Dragon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bAddRace,RC_Dragon,20; bonus bDelayrate,-5; }
+490055:490054,{ bonus bFixedCast,-300; bonus2 bAddRace,RC_Angel,15; bonus2 bAddRace,RC_Dragon,15; bonus bDelayrate,-5; }
+490056:15397:20947:22209,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Demon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bAddRace,RC_Demon,20; bonus bDelayrate,-5; }
+490057:490056,{ bonus bFixedCast,-200; bonus2 bAddRace,RC_Angel,15; bonus2 bAddRace,RC_Demon,15; bonus bDelayrate,-5; }
+490058:15400:20947:22209,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Demon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bMagicAddRace,RC_Angel,20; bonus2 bAddRace,RC_Demon,20; bonus2 bMagicAddRace,RC_Demon,20; bonus bDelayrate,-5; }
+490059:490058,{ bonus bFixedCast,-200; bonus2 bAddRace,RC_Angel,15; bonus2 bMagicAddRace,RC_Angel,15; bonus2 bAddRace,RC_Demon,15; bonus2 bMagicAddRace,RC_Demon,15; bonus bDelayrate,-5; }
+490060:15399:20947:22209,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Demon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bMagicAddRace,RC_Angel,20; bonus2 bAddRace,RC_Demon,20; bonus2 bMagicAddRace,RC_Demon,20; bonus bDelayrate,-5; }
+490061:490060,{ bonus bFixedCast,-200; bonus2 bAddRace,RC_Angel,15; bonus2 bMagicAddRace,RC_Angel,15; bonus2 bAddRace,RC_Demon,15; bonus2 bMagicAddRace,RC_Demon,15; bonus bDelayrate,-5; }
+490062:15398:20947:22209,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Demon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bAddRace,RC_Demon,20; bonus bDelayrate,-5; }
+490063:490062,{ bonus bFixedCast,-200; bonus2 bAddRace,RC_Angel,15; bonus2 bAddRace,RC_Demon,15; bonus bDelayrate,-5; }
+490064:15401:20947:22209,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Demon,10; bonus2 bMagicAddRace,RC_Angel,20; bonus2 bMagicAddRace,RC_Demon,20; bonus bDelayrate,-5; }
+490065:490064,{ bonus bFixedCast,-200; bonus2 bMagicAddRace,RC_Angel,15; bonus2 bMagicAddRace,RC_Demon,15; bonus bDelayrate,-5; }
+490066:15402:20947:22209,{ bonus bFixedCast,-200; bonus2 bSubRace,RC_Angel,10; bonus2 bSubRace,RC_Demon,10; bonus2 bAddRace,RC_Angel,20; bonus2 bAddRace,RC_Demon,20; bonus bDelayrate,-5; }
+490067:490066,{ bonus bFixedCast,-200; bonus2 bAddRace,RC_Angel,15; bonus2 bAddRace,RC_Demon,15; bonus bDelayrate,-5; }
+490090:15138:19026:20756:22059,{ bonus2 bMagicAtkEle,Ele_All,2; }
+490091:15138:19026:20756:22059,{ bonus bLongAtkRate,2; bonus bShortAtkRate,2; }
+490092:400097:450164:470070:480083,{ bonus2 bMagicAtkEle,Ele_All,5; }
+490093:400097:450164:470070:480083,{ bonus bLongAtkRate,5; bonus bShortAtkRate,5; }
+490099:400023,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r>=7) { bonus bAspdRate,10; bonus bVariableCastrate,-10; } if (.@r>=9) { bonus bMatkRate,5; bonus2 bAddClass,Class_All,5; } if (.@r>=11) { bonus bFixedCast,-500; } }
+490100:400023,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bDelayrate,-2*(.@r/4); if (.@r>=7) { autobonus "{ bonus2 bHPRegenRate,300,1000; }",40,4000,BF_MAGIC; bonus2 bHPDrainRate,50,5; } if (.@r>=9) { bonus bMatkRate,5; bonus2 bAddClass,Class_All,5; } if (.@r>=11) { bonus bFixedCast,-500; } }
+490101:400023,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bDelayrate,-2*(.@r/4); if (.@r>=7) { autobonus "{ bonus2 bSPRegenRate,70,1000; }",40,4000,BF_WEAPON; bonus2 bSPDrainRate,10,3; } if (.@r>=9) { bonus bMatkRate,5; bonus2 bAddClass,Class_All,5; } if (.@r>=11) { bonus bFixedCast,-500; } }
+1845:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+16064:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+13336:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+2040:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+13136:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+18150:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+18151:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+21030:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+26112:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28024:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28120:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28215:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28216:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28217:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28218:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28613:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28614:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+28726:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+32004:15167:19119:20801:22102,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus bAspd,2; bonus2 bSubEle,Ele_Neutral,3*(min(100,readparam(bVit))/10); bonus bAspdRate,2*(min(100,readparam(bAgi))/10); bonus bHit,3*(min(100,readparam(bDex))/10); bonus bCritical,3*(min(100,readparam(bLuk))/10); }
+1848:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus2 bAddClass,Class_All,5; bonus bAspd,1; }
+13144:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bLongAtkRate,5; bonus bAspd,1; }
+13341:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bVariableCastrate,-10; bonus bMatkRate,3; bonus2 bAddClass,Class_All,3; }
+16075:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bLongAtkRate,5; bonus bAspd,1; }
+16076:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bBaseAtk,40; bonus bAspd,1; }
+18165:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; }
+18166:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus bLongAtkRate,5; bonus bVariableCastrate,-10; }
+21037:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus2 bAddClass,Class_All,5; bonus bAspd,1; }
+26015:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus2 bAddClass,Class_All,5; bonus bAspd,1; }
+26119:15250:19310:20906:22173:28566,{ bonus bMatk,3*(min(BaseLevel,150)/10); bonus2 bMagicAtkEle,Ele_Neutral,5; bonus bVariableCastrate,-10; }
+26120:15250:19310:20906:22173:28566,{ bonus bMatk,3*(min(BaseLevel,150)/10); bonus bVariableCastrate,-10; bonus bMatkRate,5; }
+28027:15250:19310:20906:22173:28566,{ bonus bBaseAtk,3*(min(BaseLevel,150)/10); bonus2 bAddClass,Class_All,5; bonus bAspd,1; }
+28616:15250:19310:20906:22173:28566,{ bonus bMatk,3*(min(BaseLevel,150)/10); bonus2 bMagicAtkEle,Ele_Holy,5; bonus bVariableCastrate,-10; }
+28740:15250:19310:20906:22173:28566,{ bonus bMatk,3*(min(BaseLevel,150)/10); bonus bAspdRate,5; bonus bAspd,1; }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 110 - 223
db/re/item_db_equip.yml


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 109 - 208
db/re/item_db_etc.yml


+ 10 - 30
db/re/item_db_usable.yml

@@ -8051,9 +8051,7 @@ Body:
     Jobs:
       Blacksmith: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -8067,9 +8065,7 @@ Body:
     Jobs:
       Blacksmith: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -8083,9 +8079,7 @@ Body:
     Jobs:
       Blacksmith: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -11833,9 +11827,7 @@ Body:
     Jobs:
       Knight: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -11849,9 +11841,7 @@ Body:
     Jobs:
       Knight: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -11865,9 +11855,7 @@ Body:
     Jobs:
       Knight: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -11881,9 +11869,7 @@ Body:
     Jobs:
       Knight: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -11897,9 +11883,7 @@ Body:
     Jobs:
       Knight: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Flags:
       BuyingStore: true
     Script: |
@@ -43543,9 +43527,7 @@ Body:
     Buy: 2
     Weight: 10
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     Delay:
       Duration: 5000
       Status: Reuse_Limit_Luxanima
@@ -46342,9 +46324,7 @@ Body:
     Jobs:
       Blacksmith: true
     Classes:
-      Third: true
-      Third_Upper: true
-      Third_Baby: true
+      All_Third: true
     EquipLevelMin: 100
     Delay:
       Duration: 180000

+ 0 - 224
db/re/item_randomopt_db.txt

@@ -1,224 +0,0 @@
-// Items Random Option Database	
-//
-// Structure of Database:
-// ID,{ Bonus Script }
-RDMOPT_VAR_MAXHPAMOUNT,{ bonus bMaxHP,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_MAXSPAMOUNT,{ bonus bMaxSP,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_STRAMOUNT,{ bonus bStr,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_AGIAMOUNT,{ bonus bAgi,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_VITAMOUNT,{ bonus bVit,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_INTAMOUNT,{ bonus bInt,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_DEXAMOUNT,{ bonus bDex,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_LUKAMOUNT,{ bonus bLuk,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_MAXHPPERCENT,{ bonus bMaxHPrate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_MAXSPPERCENT,{ bonus bMaxSPrate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_HPACCELERATION,{ bonus bHPrecovRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_SPACCELERATION,{ bonus bSPrecovRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_ATKPERCENT,{ bonus2 bAddClass,Class_All,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_MAGICATKPERCENT,{ bonus bMatkRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_PLUSASPD,{ bonus bAspd,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_PLUSASPDPERCENT,{ bonus bAspdRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_ATTPOWER,{ bonus bAtk,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_HITSUCCESSVALUE,{ bonus bHit,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_ATTMPOWER,{ bonus bMatk,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_ITEMDEFPOWER,{ bonus bDef,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_MDEFPOWER,{ bonus bMdef,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_AVOIDSUCCESSVALUE,{ bonus bFlee,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE,{ bonus bFlee2,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_VAR_CRITICALSUCCESSVALUE,{ bonus bCritical,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_NOTHING,{ bonus2 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_WATER,{ bonus2 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_GROUND,{ bonus2 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_FIRE,{ bonus2 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_WIND,{ bonus2 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_POISON,{ bonus2 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_SAINT,{ bonus2 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_DARKNESS,{ bonus2 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_TELEKINESIS,{ bonus2 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_UNDEAD,{ bonus2 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING,{ for(.@i = Ele_Water; .@i < Ele_Undead; ++.@i) bonus2 bSubEle,.@i,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_NOTHING_USER,{ bonus2 bSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_WATER_USER,{ bonus2 bSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,{ bonus2 bAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_GROUND_USER,{ bonus2 bSubDefEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,{ bonus2 bAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_FIRE_USER,{ bonus2 bSubDefEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,{ bonus2 bAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_WIND_USER,{ bonus2 bSubDefEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,{ bonus2 bAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_POISON_USER,{ bonus2 bSubDefEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,{ bonus2 bAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_SAINT_USER,{ bonus2 bSubDefEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,{ bonus2 bAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_DARKNESS_USER,{ bonus2 bSubDefEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,{ bonus2 bAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus2 bSubDefEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER,{ bonus2 bSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER,{ bonus2 bMagicSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bMagicAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_WATER_USER,{ bonus2 bMagicSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET,{ bonus2 bMagicAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_GROUND_USER,{ bonus2 bMagicSubDefEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET,{ bonus2 bMagicAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_FIRE_USER,{ bonus2 bMagicSubDefEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET,{ bonus2 bMagicAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_WIND_USER,{ bonus2 bMagicSubDefEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET,{ bonus2 bMagicAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_POISON_USER,{ bonus2 bMagicSubDefEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET,{ bonus2 bMagicAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_SAINT_USER,{ bonus2 bMagicSubDefEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET,{ bonus2 bMagicAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER,{ bonus2 bMagicSubDefEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET,{ bonus2 bMagicAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus2 bMagicSubDefEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bMagicAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER,{ bonus2 bMagicSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bMagicAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_BODY_ATTR_NOTHING,{ bonus bDefEle,Ele_Neutral; }
-RDMOPT_BODY_ATTR_WATER,{ bonus bDefEle,Ele_Water; }
-RDMOPT_BODY_ATTR_GROUND,{ bonus bDefEle,Ele_Earth; }
-RDMOPT_BODY_ATTR_FIRE,{ bonus bDefEle,Ele_Fire; }
-RDMOPT_BODY_ATTR_WIND,{ bonus bDefEle,Ele_Wind; }
-RDMOPT_BODY_ATTR_POISON,{ bonus bDefEle,Ele_Poison; }
-RDMOPT_BODY_ATTR_SAINT,{ bonus bDefEle,Ele_Holy; }
-RDMOPT_BODY_ATTR_DARKNESS,{ bonus bDefEle,Ele_Dark; }
-RDMOPT_BODY_ATTR_TELEKINESIS,{ bonus bDefEle,Ele_Ghost; }
-RDMOPT_BODY_ATTR_UNDEAD,{ bonus bDefEle,Ele_Undead; }
-//RDMOPT_BODY_ATTR_ALL,{}
-RDMOPT_RACE_TOLERACE_NOTHING,{ bonus2 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_UNDEAD,{ bonus2 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_ANIMAL,{ bonus2 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_PLANT,{ bonus2 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_INSECT,{ bonus2 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_FISHS,{ bonus2 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_DEVIL,{ bonus2 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_HUMAN,{ bonus2 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_ANGEL,{ bonus2 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_DRAGON,{ bonus2 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_NOTHING,{ bonus2 bAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_UNDEAD,{ bonus2 bAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_ANIMAL,{ bonus2 bAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_PLANT,{ bonus2 bAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_INSECT,{ bonus2 bAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_FISHS,{ bonus2 bAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_DEVIL,{ bonus2 bAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_HUMAN,{ bonus2 bAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_ANGEL,{ bonus2 bAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_DRAGON,{ bonus2 bAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_NOTHING,{ bonus2 bMagicAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_UNDEAD,{ bonus2 bMagicAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_ANIMAL,{ bonus2 bMagicAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_PLANT,{ bonus2 bMagicAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_INSECT,{ bonus2 bMagicAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_FISHS,{ bonus2 bMagicAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_DEVIL,{ bonus2 bMagicAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_HUMAN,{ bonus2 bMagicAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_ANGEL,{ bonus2 bMagicAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_DRAGON,{ bonus2 bMagicAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_CRI_PERCENT_NOTHING,{ bonus2 bCriticalAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_UNDEAD,{ bonus2 bCriticalAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_ANIMAL,{ bonus2 bCriticalAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_PLANT,{ bonus2 bCriticalAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_INSECT,{ bonus2 bCriticalAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_FISHS,{ bonus2 bCriticalAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_DEVIL,{ bonus2 bCriticalAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_HUMAN,{ bonus2 bCriticalAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_ANGEL,{ bonus2 bCriticalAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_DRAGON,{ bonus2 bCriticalAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_NOTHING,{ bonus2 bIgnoreDefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_UNDEAD,{ bonus2 bIgnoreDefRaceRate,RC_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_ANIMAL,{ bonus2 bIgnoreDefRaceRate,RC_Brute,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_PLANT,{ bonus2 bIgnoreDefRaceRate,RC_Plant,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_INSECT,{ bonus2 bIgnoreDefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_FISHS,{ bonus2 bIgnoreDefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_DEVIL,{ bonus2 bIgnoreDefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN,{ bonus2 bIgnoreDefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_ANGEL,{ bonus2 bIgnoreDefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_DRAGON,{ bonus2 bIgnoreDefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_NOTHING,{ bonus2 bIgnoreMdefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_UNDEAD,{ bonus2 bIgnoreMdefRaceRate,RC_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANIMAL,{ bonus2 bIgnoreMdefRaceRate,RC_Brute,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLANT,{ bonus2 bIgnoreMdefRaceRate,RC_Plant,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_INSECT,{ bonus2 bIgnoreMdefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_FISHS,{ bonus2 bIgnoreMdefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_DEVIL,{ bonus2 bIgnoreMdefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN,{ bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANGEL,{ bonus2 bIgnoreMdefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_DRAGON,{ bonus2 bIgnoreMdefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_DAMAGE_NORMAL_TARGET,{ bonus2 bAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_DAMAGE_BOSS_TARGET,{ bonus2 bAddClass,Class_Boss,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_DAMAGE_NORMAL_USER,{ bonus2 bSubClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_DAMAGE_BOSS_USER,{ bonus2 bSubClass,Class_Boss,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_MDAMAGE_NORMAL,{ bonus2 bMagicAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_MDAMAGE_BOSS,{ bonus2 bMagicAddClass,Class_Boss,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL,{ bonus2 bIgnoreDefClassRate,Class_Normal,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_IGNORE_DEF_PERCENT_BOSS,{ bonus2 bIgnoreDefClassRate,Class_Boss,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_IGNORE_MDEF_PERCENT_NORMAL,{ bonus2 bIgnoreMdefClassRate,Class_Normal,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_CLASS_IGNORE_MDEF_PERCENT_BOSS,{ bonus2 bIgnoreMdefClassRate,Class_Boss,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_SMALL_TARGET,{ bonus2 bAddSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_MIDIUM_TARGET,{ bonus2 bAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_LARGE_TARGET,{ bonus2 bAddSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_SMALL_USER,{ bonus2 bSubSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_MIDIUM_USER,{ bonus2 bSubSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_LARGE_USER,{ bonus2 bSubSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_SIZE_PERFECT,{ bonus bNoSizeFix,1; }
-RDMOPT_DAMAGE_CRI_TARGET,{ bonus bCritAtkRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_CRI_USER,{ bonus bCritDefRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RANGE_ATTACK_DAMAGE_TARGET,{ bonus bLongAtkRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RANGE_ATTACK_DAMAGE_USER,{ bonus bLongAtkDef,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_HEAL_VALUE,{ bonus bHealPower,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_HEAL_MODIFY_PERCENT,{ bonus bHealPower2,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DEC_SPELL_CAST_TIME,{ bonus bVariableCastrate,-(getrandomoptinfo(ROA_VALUE));}
-RDMOPT_DEC_SPELL_DELAY_TIME,{ bonus bDelayrate,-(getrandomoptinfo(ROA_VALUE)); }
-RDMOPT_DEC_SP_CONSUMPTION,{ bonus bUseSPrate,-(getrandomoptinfo(ROA_VALUE)); }
-//RDMOPT_HP_DRAIN,{ /* Needs more info */ }
-//RDMOPT_SP_DRAIN,{ /* Needs more info */ }
-RDMOPT_WEAPON_ATTR_NOTHING,{ bonus bAtkEle,Ele_Neutral; }
-RDMOPT_WEAPON_ATTR_WATER,{ bonus bAtkEle,Ele_Water; }
-RDMOPT_WEAPON_ATTR_GROUND,{ bonus bAtkEle,Ele_Earth; }
-RDMOPT_WEAPON_ATTR_FIRE,{ bonus bAtkEle,Ele_Fire; }
-RDMOPT_WEAPON_ATTR_WIND,{ bonus bAtkEle,Ele_Wind; }
-RDMOPT_WEAPON_ATTR_POISON,{ bonus bAtkEle,Ele_Poison; }
-RDMOPT_WEAPON_ATTR_SAINT,{ bonus bAtkEle,Ele_Holy; }
-RDMOPT_WEAPON_ATTR_DARKNESS,{ bonus bAtkEle,Ele_Dark; }
-RDMOPT_WEAPON_ATTR_TELEKINESIS,{ bonus bAtkEle,Ele_Ghost; }
-RDMOPT_WEAPON_ATTR_UNDEAD,{ bonus bAtkEle,Ele_Undead; }
-RDMOPT_WEAPON_INDESTRUCTIBLE,{ bonus bUnbreakableWeapon,1; }
-RDMOPT_BODY_INDESTRUCTIBLE,{ bonus bUnbreakableArmor,1; }
-RDMOPT_MDAMAGE_SIZE_SMALL_TARGET,{ bonus2 bMagicAddSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_SIZE_MIDIUM_TARGET,{ bonus2 bMagicAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_SIZE_LARGE_TARGET,{ bonus2 bMagicAddSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_SIZE_SMALL_USER,{ bonus2 bMagicSubSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_SIZE_MIDIUM_USER,{ bonus2 bMagicSubSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_SIZE_LARGE_USER,{ bonus2 bMagicSubSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_ALL,{ bonus2 bSubEle,Ele_All,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_WEAPON_TOLERACE_NOTHING,{ bonus3 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_UNDEAD,{ bonus3 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_ANIMAL,{ bonus3 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_PLANT,{ bonus3 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_INSECT,{ bonus3 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_FISHS,{ bonus3 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_DEVIL,{ bonus3 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_HUMAN,{ bonus3 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_ANGEL,{ bonus3 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-RDMOPT_RACE_WEAPON_TOLERACE_DRAGON,{ bonus3 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
-// RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_TARGET,{}
-// RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_USER,{}
-RDMOPT_RACE_TOLERACE_PLAYER_HUMAN,{ bonus2 bSubRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_PLAYER_DORAM,{ bonus2 bSubRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_PLAYER_HUMAN,{ bonus2 bAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_PLAYER_DORAM,{ bonus2 bAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_PLAYER_HUMAN,{ bonus2 bMagicAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE);  }
-RDMOPT_RACE_MDAMAGE_PLAYER_DORAM,{ bonus2 bMagicAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_CRI_PERCENT_PLAYER_HUMAN,{ bonus2 bCriticalAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_CRI_PERCENT_PLAYER_DORAM,{ bonus2 bCriticalAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_HUMAN,{ bonus2 bIgnoreDefRaceRate,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_DORAM,{ bonus2 bIgnoreDefRaceRate,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_HUMAN,{ bonus2 bIgnoreMdefRaceRate,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_DORAM,{ bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
-// RDMOPT_REFLECT_DAMAGE_PERCENT,{}
-RDMOPT_MELEE_ATTACK_DAMAGE_TARGET,{ bonus bShortAtkRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MELEE_ATTACK_DAMAGE_USER,{ bonus bNearAtkDef,getrandomoptinfo(ROA_VALUE); }

+ 891 - 0
db/re/item_randomopt_db.yml

@@ -0,0 +1,891 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2020 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 Random Option Database
+###########################################################################
+#
+# Item Random Option Settings
+#
+###########################################################################
+# - Id          Item Random Option ID matching the ID defined in enumvar.lub in the client.
+#   Option      Item Random Option constant.
+#   Script      Bonus script used for option.
+###########################################################################
+
+Header:
+  Type: RANDOM_OPTION_DB
+  Version: 1
+
+Body:
+  - Id: 1
+    Option: VAR_MAXHPAMOUNT
+    Script: |
+      bonus bMaxHP,getrandomoptinfo(ROA_VALUE);
+  - Id: 2
+    Option: VAR_MAXSPAMOUNT
+    Script: |
+      bonus bMaxSP,getrandomoptinfo(ROA_VALUE);
+  - Id: 3
+    Option: VAR_STRAMOUNT
+    Script: |
+      bonus bStr,getrandomoptinfo(ROA_VALUE);
+  - Id: 4
+    Option: VAR_AGIAMOUNT
+    Script: |
+      bonus bAgi,getrandomoptinfo(ROA_VALUE);
+  - Id: 5
+    Option: VAR_VITAMOUNT
+    Script: |
+      bonus bVit,getrandomoptinfo(ROA_VALUE);
+  - Id: 6
+    Option: VAR_INTAMOUNT
+    Script: |
+      bonus bInt,getrandomoptinfo(ROA_VALUE);
+  - Id: 7
+    Option: VAR_DEXAMOUNT
+    Script: |
+      bonus bDex,getrandomoptinfo(ROA_VALUE);
+  - Id: 8
+    Option: VAR_LUKAMOUNT
+    Script: |
+      bonus bLuk,getrandomoptinfo(ROA_VALUE);
+  - Id: 9
+    Option: VAR_MAXHPPERCENT
+    Script: |
+      bonus bMaxHPrate,getrandomoptinfo(ROA_VALUE);
+  - Id: 10
+    Option: VAR_MAXSPPERCENT
+    Script: |
+      bonus bMaxSPrate,getrandomoptinfo(ROA_VALUE);
+  - Id: 11
+    Option: VAR_HPACCELERATION
+    Script: |
+      bonus bHPrecovRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 12
+    Option: VAR_SPACCELERATION
+    Script: |
+      bonus bSPrecovRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 13
+    Option: VAR_ATKPERCENT
+    Script: |
+      bonus2 bAddClass,Class_All,getrandomoptinfo(ROA_VALUE);
+  - Id: 14
+    Option: VAR_MAGICATKPERCENT
+    Script: |
+      bonus bMatkRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 15
+    Option: VAR_PLUSASPD
+    Script: |
+      bonus bAspd,getrandomoptinfo(ROA_VALUE);
+  - Id: 16
+    Option: VAR_PLUSASPDPERCENT
+    Script: |
+      bonus bAspdRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 17
+    Option: VAR_ATTPOWER
+    Script: |
+      bonus bAtk,getrandomoptinfo(ROA_VALUE);
+  - Id: 18
+    Option: VAR_HITSUCCESSVALUE
+    Script: |
+      bonus bHit,getrandomoptinfo(ROA_VALUE);
+  - Id: 19
+    Option: VAR_ATTMPOWER
+    Script: |
+      bonus bMatk,getrandomoptinfo(ROA_VALUE);
+  - Id: 20
+    Option: VAR_ITEMDEFPOWER
+    Script: |
+      bonus bDef,getrandomoptinfo(ROA_VALUE);
+  - Id: 21
+    Option: VAR_MDEFPOWER
+    Script: |
+      bonus bMdef,getrandomoptinfo(ROA_VALUE);
+  - Id: 22
+    Option: VAR_AVOIDSUCCESSVALUE
+    Script: |
+      bonus bFlee,getrandomoptinfo(ROA_VALUE);
+  - Id: 23
+    Option: VAR_PLUSAVOIDSUCCESSVALUE
+    Script: |
+      bonus bFlee2,getrandomoptinfo(ROA_VALUE);
+  - Id: 24
+    Option: VAR_CRITICALSUCCESSVALUE
+    Script: |
+      bonus bCritical,getrandomoptinfo(ROA_VALUE);
+  - Id: 25
+    Option: ATTR_TOLERACE_NOTHING
+    Script: |
+      bonus2 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE);
+  - Id: 26
+    Option: ATTR_TOLERACE_WATER
+    Script: |
+      bonus2 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE);
+  - Id: 27
+    Option: ATTR_TOLERACE_GROUND
+    Script: |
+      bonus2 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE);
+  - Id: 28
+    Option: ATTR_TOLERACE_FIRE
+    Script: |
+      bonus2 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE);
+  - Id: 29
+    Option: ATTR_TOLERACE_WIND
+    Script: |
+      bonus2 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE);
+  - Id: 30
+    Option: ATTR_TOLERACE_POISON
+    Script: |
+      bonus2 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE);
+  - Id: 31
+    Option: ATTR_TOLERACE_SAINT
+    Script: |
+      bonus2 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE);
+  - Id: 32
+    Option: ATTR_TOLERACE_DARKNESS
+    Script: |
+      bonus2 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE);
+  - Id: 33
+    Option: ATTR_TOLERACE_TELEKINESIS
+    Script: |
+      bonus2 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE);
+  - Id: 34
+    Option: ATTR_TOLERACE_UNDEAD
+    Script: |
+      bonus2 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 35
+    Option: ATTR_TOLERACE_ALLBUTNOTHING
+    Script: |
+      for(.@i = Ele_Water; .@i < Ele_Undead; ++.@i)
+        bonus2 bSubEle,.@i,getrandomoptinfo(ROA_VALUE);
+  - Id: 36
+    Option: DAMAGE_PROPERTY_NOTHING_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE);
+  - Id: 37
+    Option: DAMAGE_PROPERTY_NOTHING_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE);
+  - Id: 38
+    Option: DAMAGE_PROPERTY_WATER_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE);
+  - Id: 39
+    Option: DAMAGE_PROPERTY_WATER_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE);
+  - Id: 40
+    Option: DAMAGE_PROPERTY_GROUND_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Earth,getrandomoptinfo(ROA_VALUE);
+  - Id: 41
+    Option: DAMAGE_PROPERTY_GROUND_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE);
+  - Id: 42
+    Option: DAMAGE_PROPERTY_FIRE_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Fire,getrandomoptinfo(ROA_VALUE);
+  - Id: 43
+    Option: DAMAGE_PROPERTY_FIRE_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE);
+  - Id: 44
+    Option: DAMAGE_PROPERTY_WIND_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Wind,getrandomoptinfo(ROA_VALUE);
+  - Id: 45
+    Option: DAMAGE_PROPERTY_WIND_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE);
+  - Id: 46
+    Option: DAMAGE_PROPERTY_POISON_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Poison,getrandomoptinfo(ROA_VALUE);
+  - Id: 47
+    Option: DAMAGE_PROPERTY_POISON_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE);
+  - Id: 48
+    Option: DAMAGE_PROPERTY_SAINT_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Holy,getrandomoptinfo(ROA_VALUE);
+  - Id: 49
+    Option: DAMAGE_PROPERTY_SAINT_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE);
+  - Id: 50
+    Option: DAMAGE_PROPERTY_DARKNESS_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Dark,getrandomoptinfo(ROA_VALUE);
+  - Id: 51
+    Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE);
+  - Id: 52
+    Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE);
+  - Id: 53
+    Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE);
+  - Id: 54
+    Option: DAMAGE_PROPERTY_UNDEAD_USER
+    Script: |
+      bonus2 bSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 55
+    Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+    Script: |
+      bonus2 bAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 56
+    Option: MDAMAGE_PROPERTY_NOTHING_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE);
+  - Id: 57
+    Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE);
+  - Id: 58
+    Option: MDAMAGE_PROPERTY_WATER_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE);
+  - Id: 59
+    Option: MDAMAGE_PROPERTY_WATER_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE);
+  - Id: 60
+    Option: MDAMAGE_PROPERTY_GROUND_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Earth,getrandomoptinfo(ROA_VALUE);
+  - Id: 61
+    Option: MDAMAGE_PROPERTY_GROUND_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE);
+  - Id: 62
+    Option: MDAMAGE_PROPERTY_FIRE_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Fire,getrandomoptinfo(ROA_VALUE);
+  - Id: 63
+    Option: MDAMAGE_PROPERTY_FIRE_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE);
+  - Id: 64
+    Option: MDAMAGE_PROPERTY_WIND_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Wind,getrandomoptinfo(ROA_VALUE);
+  - Id: 65
+    Option: MDAMAGE_PROPERTY_WIND_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE);
+  - Id: 66
+    Option: MDAMAGE_PROPERTY_POISON_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Poison,getrandomoptinfo(ROA_VALUE);
+  - Id: 67
+    Option: MDAMAGE_PROPERTY_POISON_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE);
+  - Id: 68
+    Option: MDAMAGE_PROPERTY_SAINT_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Holy,getrandomoptinfo(ROA_VALUE);
+  - Id: 69
+    Option: MDAMAGE_PROPERTY_SAINT_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE);
+  - Id: 70
+    Option: MDAMAGE_PROPERTY_DARKNESS_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Dark,getrandomoptinfo(ROA_VALUE);
+  - Id: 71
+    Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE);
+  - Id: 72
+    Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE);
+  - Id: 73
+    Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE);
+  - Id: 74
+    Option: MDAMAGE_PROPERTY_UNDEAD_USER
+    Script: |
+      bonus2 bMagicSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 75
+    Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+    Script: |
+      bonus2 bMagicAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 76
+    Option: BODY_ATTR_NOTHING
+    Script: |
+      bonus bDefEle,Ele_Neutral;
+  - Id: 77
+    Option: BODY_ATTR_WATER
+    Script: |
+      bonus bDefEle,Ele_Water;
+  - Id: 78
+    Option: BODY_ATTR_GROUND
+    Script: |
+      bonus bDefEle,Ele_Earth;
+  - Id: 79
+    Option: BODY_ATTR_FIRE
+    Script: |
+      bonus bDefEle,Ele_Fire;
+  - Id: 80
+    Option: BODY_ATTR_WIND
+    Script: |
+      bonus bDefEle,Ele_Wind;
+  - Id: 81
+    Option: BODY_ATTR_POISON
+    Script: |
+      bonus bDefEle,Ele_Poison;
+  - Id: 82
+    Option: BODY_ATTR_SAINT
+    Script: |
+      bonus bDefEle,Ele_Holy;
+  - Id: 83
+    Option: BODY_ATTR_DARKNESS
+    Script: |
+      bonus bDefEle,Ele_Dark;
+  - Id: 84
+    Option: BODY_ATTR_TELEKINESIS
+    Script: |
+      bonus bDefEle,Ele_Ghost;
+  - Id: 85
+    Option: BODY_ATTR_UNDEAD
+    Script: |
+      bonus bDefEle,Ele_Undead;
+  - Id: 87
+    Option: RACE_TOLERACE_NOTHING
+    Script: |
+      bonus2 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE);
+  - Id: 88
+    Option: RACE_TOLERACE_UNDEAD
+    Script: |
+      bonus2 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 89
+    Option: RACE_TOLERACE_ANIMAL
+    Script: |
+      bonus2 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE);
+  - Id: 90
+    Option: RACE_TOLERACE_PLANT
+    Script: |
+      bonus2 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE);
+  - Id: 91
+    Option: RACE_TOLERACE_INSECT
+    Script: |
+      bonus2 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE);
+  - Id: 92
+    Option: RACE_TOLERACE_FISHS
+    Script: |
+      bonus2 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE);
+  - Id: 93
+    Option: RACE_TOLERACE_DEVIL
+    Script: |
+      bonus2 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE);
+  - Id: 94
+    Option: RACE_TOLERACE_HUMAN
+    Script: |
+      bonus2 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE);
+  - Id: 95
+    Option: RACE_TOLERACE_ANGEL
+    Script: |
+      bonus2 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE);
+  - Id: 96
+    Option: RACE_TOLERACE_DRAGON
+    Script: |
+      bonus2 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE);
+  - Id: 97
+    Option: RACE_DAMAGE_NOTHING
+    Script: |
+      bonus2 bAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE);
+  - Id: 98
+    Option: RACE_DAMAGE_UNDEAD
+    Script: |
+      bonus2 bAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 99
+    Option: RACE_DAMAGE_ANIMAL
+    Script: |
+      bonus2 bAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE);
+  - Id: 100
+    Option: RACE_DAMAGE_PLANT
+    Script: |
+      bonus2 bAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE);
+  - Id: 101
+    Option: RACE_DAMAGE_INSECT
+    Script: |
+      bonus2 bAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE);
+  - Id: 102
+    Option: RACE_DAMAGE_FISHS
+    Script: |
+      bonus2 bAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE);
+  - Id: 103
+    Option: RACE_DAMAGE_DEVIL
+    Script: |
+      bonus2 bAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE);
+  - Id: 104
+    Option: RACE_DAMAGE_HUMAN
+    Script: |
+      bonus2 bAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE);
+  - Id: 105
+    Option: RACE_DAMAGE_ANGEL
+    Script: |
+      bonus2 bAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE);
+  - Id: 106
+    Option: RACE_DAMAGE_DRAGON
+    Script: |
+      bonus2 bAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE);
+  - Id: 107
+    Option: RACE_MDAMAGE_NOTHING
+    Script: |
+      bonus2 bMagicAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE);
+  - Id: 108
+    Option: RACE_MDAMAGE_UNDEAD
+    Script: |
+      bonus2 bMagicAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 109
+    Option: RACE_MDAMAGE_ANIMAL
+    Script: |
+      bonus2 bMagicAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE);
+  - Id: 110
+    Option: RACE_MDAMAGE_PLANT
+    Script: |
+      bonus2 bMagicAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE);
+  - Id: 111
+    Option: RACE_MDAMAGE_INSECT
+    Script: |
+      bonus2 bMagicAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE);
+  - Id: 112
+    Option: RACE_MDAMAGE_FISHS
+    Script: |
+      bonus2 bMagicAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE);
+  - Id: 113
+    Option: RACE_MDAMAGE_DEVIL
+    Script: |
+      bonus2 bMagicAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE);
+  - Id: 114
+    Option: RACE_MDAMAGE_HUMAN
+    Script: |
+      bonus2 bMagicAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE);
+  - Id: 115
+    Option: RACE_MDAMAGE_ANGEL
+    Script: |
+      bonus2 bMagicAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE);
+  - Id: 116
+    Option: RACE_MDAMAGE_DRAGON
+    Script: |
+      bonus2 bMagicAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE);
+  - Id: 117
+    Option: RACE_CRI_PERCENT_NOTHING
+    Script: |
+      bonus2 bCriticalAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 118
+    Option: RACE_CRI_PERCENT_UNDEAD
+    Script: |
+      bonus2 bCriticalAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 119
+    Option: RACE_CRI_PERCENT_ANIMAL
+    Script: |
+      bonus2 bCriticalAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 120
+    Option: RACE_CRI_PERCENT_PLANT
+    Script: |
+      bonus2 bCriticalAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 121
+    Option: RACE_CRI_PERCENT_INSECT
+    Script: |
+      bonus2 bCriticalAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 122
+    Option: RACE_CRI_PERCENT_FISHS
+    Script: |
+      bonus2 bCriticalAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 123
+    Option: RACE_CRI_PERCENT_DEVIL
+    Script: |
+      bonus2 bCriticalAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 124
+    Option: RACE_CRI_PERCENT_HUMAN
+    Script: |
+      bonus2 bCriticalAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 125
+    Option: RACE_CRI_PERCENT_ANGEL
+    Script: |
+      bonus2 bCriticalAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 126
+    Option: RACE_CRI_PERCENT_DRAGON
+    Script: |
+      bonus2 bCriticalAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE)/10;
+  - Id: 127
+    Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE);
+  - Id: 128
+    Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 129
+    Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Brute,getrandomoptinfo(ROA_VALUE);
+  - Id: 130
+    Option: RACE_IGNORE_DEF_PERCENT_PLANT
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Plant,getrandomoptinfo(ROA_VALUE);
+  - Id: 131
+    Option: RACE_IGNORE_DEF_PERCENT_INSECT
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE);
+  - Id: 132
+    Option: RACE_IGNORE_DEF_PERCENT_FISHS
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE);
+  - Id: 133
+    Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE);
+  - Id: 134
+    Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE);
+  - Id: 135
+    Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE);
+  - Id: 136
+    Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE);
+  - Id: 137
+    Option: RACE_IGNORE_MDEF_PERCENT_NOTHING
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE);
+  - Id: 138
+    Option: RACE_IGNORE_MDEF_PERCENT_UNDEAD
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Undead,getrandomoptinfo(ROA_VALUE);
+  - Id: 139
+    Option: RACE_IGNORE_MDEF_PERCENT_ANIMAL
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Brute,getrandomoptinfo(ROA_VALUE);
+  - Id: 140
+    Option: RACE_IGNORE_MDEF_PERCENT_PLANT
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Plant,getrandomoptinfo(ROA_VALUE);
+  - Id: 141
+    Option: RACE_IGNORE_MDEF_PERCENT_INSECT
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE);
+  - Id: 142
+    Option: RACE_IGNORE_MDEF_PERCENT_FISHS
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE);
+  - Id: 143
+    Option: RACE_IGNORE_MDEF_PERCENT_DEVIL
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE);
+  - Id: 144
+    Option: RACE_IGNORE_MDEF_PERCENT_HUMAN
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE);
+  - Id: 145
+    Option: RACE_IGNORE_MDEF_PERCENT_ANGEL
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE);
+  - Id: 146
+    Option: RACE_IGNORE_MDEF_PERCENT_DRAGON
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE);
+  - Id: 147
+    Option: CLASS_DAMAGE_NORMAL_TARGET
+    Script: |
+      bonus2 bAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE);
+  - Id: 148
+    Option: CLASS_DAMAGE_BOSS_TARGET
+    Script: |
+      bonus2 bAddClass,Class_Boss,getrandomoptinfo(ROA_VALUE);
+  - Id: 149
+    Option: CLASS_DAMAGE_NORMAL_USER
+    Script: |
+      bonus2 bSubClass,Class_Normal,getrandomoptinfo(ROA_VALUE);
+  - Id: 150
+    Option: CLASS_DAMAGE_BOSS_USER
+    Script: |
+      bonus2 bSubClass,Class_Boss,getrandomoptinfo(ROA_VALUE);
+  - Id: 151
+    Option: CLASS_MDAMAGE_NORMAL
+    Script: |
+      bonus2 bMagicAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE);
+  - Id: 152
+    Option: CLASS_MDAMAGE_BOSS
+    Script: |
+      bonus2 bMagicAddClass,Class_Boss,getrandomoptinfo(ROA_VALUE);
+  - Id: 153
+    Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+    Script: |
+      bonus2 bIgnoreDefClassRate,Class_Normal,getrandomoptinfo(ROA_VALUE);
+  - Id: 154
+    Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+    Script: |
+      bonus2 bIgnoreDefClassRate,Class_Boss,getrandomoptinfo(ROA_VALUE);
+  - Id: 155
+    Option: CLASS_IGNORE_MDEF_PERCENT_NORMAL
+    Script: |
+      bonus2 bIgnoreMdefClassRate,Class_Normal,getrandomoptinfo(ROA_VALUE);
+  - Id: 156
+    Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+    Script: |
+      bonus2 bIgnoreMdefClassRate,Class_Boss,getrandomoptinfo(ROA_VALUE);
+  - Id: 157
+    Option: DAMAGE_SIZE_SMALL_TARGET
+    Script: |
+      bonus2 bAddSize,Size_Small,getrandomoptinfo(ROA_VALUE);
+  - Id: 158
+    Option: DAMAGE_SIZE_MIDIUM_TARGET
+    Script: |
+      bonus2 bAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE);
+  - Id: 159
+    Option: DAMAGE_SIZE_LARGE_TARGET
+    Script: |
+      bonus2 bAddSize,Size_Large,getrandomoptinfo(ROA_VALUE);
+  - Id: 160
+    Option: DAMAGE_SIZE_SMALL_USER
+    Script: |
+      bonus2 bSubSize,Size_Small,getrandomoptinfo(ROA_VALUE);
+  - Id: 161
+    Option: DAMAGE_SIZE_MIDIUM_USER
+    Script: |
+      bonus2 bSubSize,Size_Medium,getrandomoptinfo(ROA_VALUE);
+  - Id: 162
+    Option: DAMAGE_SIZE_LARGE_USER
+    Script: |
+      bonus2 bSubSize,Size_Large,getrandomoptinfo(ROA_VALUE);
+  - Id: 163
+    Option: DAMAGE_SIZE_PERFECT
+    Script: |
+      bonus bNoSizeFix,1;
+  - Id: 164
+    Option: DAMAGE_CRI_TARGET
+    Script: |
+      bonus bCritAtkRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 165
+    Option: DAMAGE_CRI_USER
+    Script: |
+      bonus bCritDefRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 166
+    Option: RANGE_ATTACK_DAMAGE_TARGET
+    Script: |
+      bonus bLongAtkRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 167
+    Option: RANGE_ATTACK_DAMAGE_USER
+    Script: |
+      bonus bLongAtkDef,getrandomoptinfo(ROA_VALUE);
+  - Id: 168
+    Option: HEAL_VALUE
+    Script: |
+      bonus bHealPower,getrandomoptinfo(ROA_VALUE);
+  - Id: 169
+    Option: HEAL_MODIFY_PERCENT
+    Script: |
+      bonus bHealPower2,getrandomoptinfo(ROA_VALUE);
+  - Id: 170
+    Option: DEC_SPELL_CAST_TIME
+    Script: |
+      bonus bVariableCastrate,-(getrandomoptinfo(ROA_VALUE));
+  - Id: 171
+    Option: DEC_SPELL_DELAY_TIME
+    Script: |
+      bonus bDelayrate,-(getrandomoptinfo(ROA_VALUE));
+  - Id: 172
+    Option: DEC_SP_CONSUMPTION
+    Script: |
+      bonus bUseSPrate,-(getrandomoptinfo(ROA_VALUE));
+  - Id: 175
+    Option: WEAPON_ATTR_NOTHING
+    Script: |
+      bonus bAtkEle,Ele_Neutral;
+  - Id: 176
+    Option: WEAPON_ATTR_WATER
+    Script: |
+      bonus bAtkEle,Ele_Water;
+  - Id: 177
+    Option: WEAPON_ATTR_GROUND
+    Script: |
+      bonus bAtkEle,Ele_Earth;
+  - Id: 178
+    Option: WEAPON_ATTR_FIRE
+    Script: |
+      bonus bAtkEle,Ele_Fire;
+  - Id: 179
+    Option: WEAPON_ATTR_WIND
+    Script: |
+      bonus bAtkEle,Ele_Wind;
+  - Id: 180
+    Option: WEAPON_ATTR_POISON
+    Script: |
+      bonus bAtkEle,Ele_Poison;
+  - Id: 181
+    Option: WEAPON_ATTR_SAINT
+    Script: |
+      bonus bAtkEle,Ele_Holy;
+  - Id: 182
+    Option: WEAPON_ATTR_DARKNESS
+    Script: |
+      bonus bAtkEle,Ele_Dark;
+  - Id: 183
+    Option: WEAPON_ATTR_TELEKINESIS
+    Script: |
+      bonus bAtkEle,Ele_Ghost;
+  - Id: 184
+    Option: WEAPON_ATTR_UNDEAD
+    Script: |
+      bonus bAtkEle,Ele_Undead;
+  - Id: 185
+    Option: WEAPON_INDESTRUCTIBLE
+    Script: |
+      bonus bUnbreakableWeapon,1;
+  - Id: 186
+    Option: BODY_INDESTRUCTIBLE
+    Script: |
+      bonus bUnbreakableArmor,1;
+  - Id: 187
+    Option: MDAMAGE_SIZE_SMALL_TARGET
+    Script: |
+      bonus2 bMagicAddSize,Size_Small,getrandomoptinfo(ROA_VALUE);
+  - Id: 188
+    Option: MDAMAGE_SIZE_MIDIUM_TARGET
+    Script: |
+      bonus2 bMagicAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE);
+  - Id: 189
+    Option: MDAMAGE_SIZE_LARGE_TARGET
+    Script: |
+      bonus2 bMagicAddSize,Size_Large,getrandomoptinfo(ROA_VALUE);
+  - Id: 190
+    Option: MDAMAGE_SIZE_SMALL_USER
+    Script: |
+      bonus2 bMagicSubSize,Size_Small,getrandomoptinfo(ROA_VALUE);
+  - Id: 191
+    Option: MDAMAGE_SIZE_MIDIUM_USER
+    Script: |
+      bonus2 bMagicSubSize,Size_Medium,getrandomoptinfo(ROA_VALUE);
+  - Id: 192
+    Option: MDAMAGE_SIZE_LARGE_USER
+    Script: |
+      bonus2 bMagicSubSize,Size_Large,getrandomoptinfo(ROA_VALUE);
+  - Id: 193
+    Option: ATTR_TOLERACE_ALL
+    Script: |
+      bonus2 bSubEle,Ele_All,getrandomoptinfo(ROA_VALUE);
+  - Id: 194
+    Option: RACE_WEAPON_TOLERACE_NOTHING
+    Script: |
+      bonus3 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 195
+    Option: RACE_WEAPON_TOLERACE_UNDEAD
+    Script: |
+      bonus3 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 196
+    Option: RACE_WEAPON_TOLERACE_ANIMAL
+    Script: |
+      bonus3 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 197
+    Option: RACE_WEAPON_TOLERACE_PLANT
+    Script: |
+      bonus3 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 198
+    Option: RACE_WEAPON_TOLERACE_INSECT
+    Script: |
+      bonus3 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 199
+    Option: RACE_WEAPON_TOLERACE_FISHS
+    Script: |
+      bonus3 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 200
+    Option: RACE_WEAPON_TOLERACE_DEVIL
+    Script: |
+      bonus3 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 201
+    Option: RACE_WEAPON_TOLERACE_HUMAN
+    Script: |
+      bonus3 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 202
+    Option: RACE_WEAPON_TOLERACE_ANGEL
+    Script: |
+      bonus3 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 203
+    Option: RACE_WEAPON_TOLERACE_DRAGON
+    Script: |
+      bonus3 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE),BF_WEAPON;
+  - Id: 206
+    Option: RACE_TOLERACE_PLAYER_HUMAN
+    Script: |
+      bonus2 bSubRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE);
+  - Id: 207
+    Option: RACE_TOLERACE_PLAYER_DORAM
+    Script: |
+      bonus2 bSubRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE);
+  - Id: 208
+    Option: RACE_DAMAGE_PLAYER_HUMAN
+    Script: |
+      bonus2 bAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE);
+  - Id: 209
+    Option: RACE_DAMAGE_PLAYER_DORAM
+    Script: |
+      bonus2 bAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE);
+  - Id: 210
+    Option: RACE_MDAMAGE_PLAYER_HUMAN
+    Script: |
+      bonus2 bMagicAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); 
+  - Id: 211
+    Option: RACE_MDAMAGE_PLAYER_DORAM
+    Script: |
+      bonus2 bMagicAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE);
+  - Id: 212
+    Option: RACE_CRI_PERCENT_PLAYER_HUMAN
+    Script: |
+      bonus2 bCriticalAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE);
+  - Id: 213
+    Option: RACE_CRI_PERCENT_PLAYER_DORAM
+    Script: |
+      bonus2 bCriticalAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE);
+  - Id: 214
+    Option: RACE_IGNORE_DEF_PERCENT_PLAYER_HUMAN
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Player_Human,getrandomoptinfo(ROA_VALUE);
+  - Id: 215
+    Option: RACE_IGNORE_DEF_PERCENT_PLAYER_DORAM
+    Script: |
+      bonus2 bIgnoreDefRaceRate,RC_Player_Doram,getrandomoptinfo(ROA_VALUE);
+  - Id: 216
+    Option: RACE_IGNORE_MDEF_PERCENT_PLAYER_HUMAN
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Player_Human,getrandomoptinfo(ROA_VALUE);
+  - Id: 217
+    Option: RACE_IGNORE_MDEF_PERCENT_PLAYER_DORAM
+    Script: |
+      bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,getrandomoptinfo(ROA_VALUE);
+  - Id: 219
+    Option: MELEE_ATTACK_DAMAGE_TARGET
+    Script: |
+      bonus bShortAtkRate,getrandomoptinfo(ROA_VALUE);
+  - Id: 220
+    Option: MELEE_ATTACK_DAMAGE_USER
+    Script: |
+      bonus bNearAtkDef,getrandomoptinfo(ROA_VALUE);

+ 0 - 10
db/re/item_randomopt_group.txt

@@ -1,10 +0,0 @@
-// <randopt_groupid>,<rate>,<randopt_id1>,<randopt_value1>,<randopt_param1>{,<randopt_id2>,<randopt_value2>,<randopt_param2>,<randopt_id3>,<randopt_value3>,<randopt_param3>,<randopt_id4>,<randopt_value4>,<randopt_param4>,<randopt_id5>,<randopt_value5>,<randopt_param5>}
-
-// Crimson Weapon
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_NOTHING,0,0
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_WATER,0,0
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_GROUND,0,0
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_FIRE,0,0
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_WIND,0,0
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_SAINT,0,0
-RDMOPTG_Crimson_Weapon,1,RDMOPT_WEAPON_ATTR_DARKNESS,0,0

+ 7456 - 0
db/re/item_randomopt_group.yml

@@ -0,0 +1,7456 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2020 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 Random Option Group Database
+###########################################################################
+#
+# Item Random Option Group Settings
+#
+###########################################################################
+# - Id                  Item Random Option Group ID.
+#   Group               Item Random Option Group constant.
+#   Slots:              Slot in which an Item Random Option is guaranteed to be applied. Max of MAX_ITEM_RDM_OPT.
+#     - Slot            Slot number.
+#       Options:        List of possible Item Random Options for slot.
+#         - Option      Item Random Option constant.
+#           MinValue    Minimum value. (Default: 0)
+#           MaxValue    Maximum value. (Default: 0)
+#           Param       Parameter value. (Default: 0)
+#           Chance      Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+#   MaxRandom           Maximum amount of random options applied. These options are not guaranteed to be applied. Max of (MAX_ITEM_RDM_OPT - Total 'Slots'). (Default: 0)
+#   Random:             List of possible Item Random Options for remaining slots. (Optional)
+#     - Option          Item Random Option constant.
+#       MinValue        Minimum value. (Default: 0)
+#       MaxValue        Maximum value. (Default: 0)
+#       Param           Parameter value. (Default: 0)
+#       Chance          Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+###########################################################################
+
+Header:
+  Type: RANDOM_OPTION_GROUP
+  Version: 1
+
+Body:
+  - Id: 1
+    Group: Group_1
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 5000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 5000
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 5000
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 5000
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 5000
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 5000
+    MaxRandom: 0 # These are listed but the group only has 1 slot max
+    Random:
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 50
+        MaxValue: 100
+        Chance: 5000
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 10
+        MaxValue: 50
+        Chance: 5000
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 5000
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 5000
+      - Option: VAR_HPACCELERATION
+        MinValue: 10
+        MaxValue: 50
+        Chance: 5000
+      - Option: VAR_SPACCELERATION
+        MinValue: 10
+        MaxValue: 50
+        Chance: 5000
+      - Option: VAR_ATKPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 5000
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 5000
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 5000
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 5000
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_MDEFPOWER
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 30
+        Chance: 5000
+  - Id: 2
+    Group: Group_2
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+    MaxRandom: 1
+    Random:
+      - Option: ATTR_TOLERACE_POISON
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: ATTR_TOLERACE_SAINT
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: ATTR_TOLERACE_DARKNESS
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: ATTR_TOLERACE_TELEKINESIS
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: ATTR_TOLERACE_UNDEAD
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: ATTR_TOLERACE_ALL
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+  - Id: 3
+    Group: Group_3
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+    MaxRandom: 2
+    Random:
+      - Option: DAMAGE_PROPERTY_FIRE_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_WIND_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_WIND_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_POISON_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_POISON_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_SAINT_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_SAINT_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_DARKNESS_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_UNDEAD_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+  - Id: 4
+    Group: Group_4
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 5000
+    MaxRandom: 3
+    Random:
+      - Option: MDAMAGE_PROPERTY_WATER_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_GROUND_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_FIRE_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_WIND_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_WIND_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_POISON_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_POISON_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_SAINT_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+      - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 5000
+  - Id: 5
+    Group: Group_5
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: WEAPON_ATTR_NOTHING
+            Chance: 2000
+          - Option: WEAPON_ATTR_WATER
+            Chance: 2000
+          - Option: WEAPON_ATTR_GROUND
+            Chance: 2000
+          - Option: WEAPON_ATTR_FIRE
+            Chance: 2000
+          - Option: WEAPON_ATTR_WIND
+            Chance: 2000
+          - Option: WEAPON_ATTR_SAINT
+            Chance: 1000
+          - Option: WEAPON_ATTR_DARKNESS
+            Chance: 1000
+  - Id: 6
+    Group: Group_6
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+      - Slot: 2
+        Options:
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+      - Slot: 3
+        Options:
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+      - Slot: 4
+        Options:
+          - Option: BODY_ATTR_WATER
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: BODY_ATTR_TELEKINESIS
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+    MaxRandom: 1
+    Random:
+      - Option: MDAMAGE_PROPERTY_WATER_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_GROUND_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_FIRE_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_WIND_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_WIND_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_POISON_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_POISON_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_SAINT_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+      - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+        MinValue: 10
+        MaxValue: 20
+        Chance: 2000
+  - Id: 7
+    Group: AS_WEAPON_1 # Staff
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: HEAL_VALUE
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 900
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 6
+            MaxValue: 10
+            Chance: 900
+      - Slot: 2
+        Options:
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: CLASS_MDAMAGE_NORMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: CLASS_MDAMAGE_BOSS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_NOTHING
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_UNDEAD
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_ANIMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_PLANT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_INSECT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_FISHS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_ANGEL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_DRAGON
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_MDEF_PERCENT_DEVIL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: RACE_IGNORE_MDEF_PERCENT_HUMAN
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: CLASS_IGNORE_MDEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+          - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+      - Slot: 3
+        Options:
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 2000
+          - Option: DEC_SPELL_CAST_TIME
+            MinValue: 1
+            MaxValue: 15
+            Chance: 900
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 10
+            Chance: 900
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 1
+            MaxValue: 5
+            Chance: 900
+          - Option: DEC_SPELL_CAST_TIME
+            MinValue: 16
+            MaxValue: 20
+            Chance: 100
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 11
+            MaxValue: 15
+            Chance: 100
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 6
+            MaxValue: 10
+            Chance: 100
+  - Id: 8
+    Group: AS_WEAPON_2 # Bow, Pistol, Instrument, Whip
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 900
+          - Option: VAR_ATKPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 400
+          - Option: WEAPON_INDESTRUCTIBLE
+            Chance: 300
+          - Option: DAMAGE_SIZE_PERFECT
+            Chance: 200
+          - Option: VAR_ATKPERCENT
+            MinValue: 6
+            MaxValue: 10
+            Chance: 100
+      - Slot: 2
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: CLASS_DAMAGE_NORMAL_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: CLASS_DAMAGE_BOSS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_INSECT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_FISHS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+          - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+      - Slot: 3
+        Options:
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 2000
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 1000
+          - Option: DAMAGE_CRI_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 400
+          - Option: RANGE_ATTACK_DAMAGE_TARGET
+            MinValue: 1
+            MaxValue: 15
+            Chance: 400
+          - Option: RANGE_ATTACK_DAMAGE_TARGET
+            MinValue: 16
+            MaxValue: 20
+            Chance: 100
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 100
+  - Id: 9
+    Group: AS_WEAPON_3 # 1H Sword, Mace, Axe
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: VAR_ATKPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 400
+          - Option: WEAPON_ATTR_WATER
+            Chance: 500
+          - Option: WEAPON_ATTR_GROUND
+            Chance: 500
+          - Option: WEAPON_ATTR_FIRE
+            Chance: 500
+          - Option: WEAPON_ATTR_WIND
+            Chance: 500
+          - Option: WEAPON_ATTR_DARKNESS
+            Chance: 300
+          - Option: WEAPON_ATTR_SAINT
+            Chance: 100
+          - Option: VAR_ATKPERCENT
+            MinValue: 6
+            MaxValue: 10
+            Chance: 100
+          - Option: DAMAGE_SIZE_PERFECT
+            Chance: 100
+      - Slot: 2
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: CLASS_DAMAGE_NORMAL_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: CLASS_DAMAGE_BOSS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_INSECT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_FISHS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+          - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+      - Slot: 3
+        Options:
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 2000
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 1000
+          - Option: DAMAGE_CRI_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 400
+          - Option: RANGE_ATTACK_DAMAGE_TARGET
+            MinValue: 1
+            MaxValue: 15
+            Chance: 400
+          - Option: RANGE_ATTACK_DAMAGE_TARGET
+            MinValue: 15
+            MaxValue: 20
+            Chance: 100
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 100
+  - Id: 10
+    Group: AS_WEAPON_4 # Daggers, Books, Swords
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: VAR_ATKPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 400
+          - Option: WEAPON_ATTR_WATER
+            Chance: 500
+          - Option: WEAPON_ATTR_GROUND
+            Chance: 500
+          - Option: WEAPON_ATTR_FIRE
+            Chance: 500
+          - Option: WEAPON_ATTR_WIND
+            Chance: 500
+          - Option: WEAPON_ATTR_DARKNESS
+            Chance: 300
+          - Option: WEAPON_ATTR_SAINT
+            Chance: 100
+          - Option: VAR_ATKPERCENT
+            MinValue: 6
+            MaxValue: 10
+            Chance: 100
+          - Option: DAMAGE_SIZE_PERFECT
+            Chance: 100
+      - Slot: 2
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: CLASS_DAMAGE_NORMAL_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: CLASS_DAMAGE_BOSS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+      - Slot: 3
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2000
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 2000
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 2000
+          - Option: DEC_SPELL_CAST_TIME
+            MinValue: 1
+            MaxValue: 15
+            Chance: 500
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 10
+            Chance: 500
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 400
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 400
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 100
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 100
+  - Id: 11
+    Group: AS_WEAPON_5
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 700
+          - Option: VAR_ATKPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 400
+          - Option: WEAPON_ATTR_WATER
+            Chance: 500
+          - Option: WEAPON_ATTR_GROUND
+            Chance: 500
+          - Option: WEAPON_ATTR_FIRE
+            Chance: 500
+          - Option: WEAPON_ATTR_WIND
+            Chance: 500
+          - Option: WEAPON_ATTR_DARKNESS
+            Chance: 200
+          - Option: WEAPON_ATTR_SAINT
+            Chance: 100
+          - Option: VAR_ATKPERCENT
+            MinValue: 6
+            MaxValue: 10
+            Chance: 100
+          - Option: WEAPON_INDESTRUCTIBLE
+            Chance: 100
+          - Option: DAMAGE_SIZE_PERFECT
+            Chance: 100
+      - Slot: 2
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 400
+          - Option: CLASS_DAMAGE_NORMAL_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: CLASS_DAMAGE_BOSS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 100
+          - Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_INSECT
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_FISHS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+            MinValue: 1
+            MaxValue: 30
+            Chance: 500
+          - Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+            MinValue: 1
+            MaxValue: 30
+            Chance: 400
+          - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+          - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+            MinValue: 1
+            MaxValue: 30
+            Chance: 100
+      - Slot: 3
+        Options:
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 2500
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 2000
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 1000
+          - Option: DAMAGE_CRI_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 400
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 400
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 100
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 100
+  - Id: 12
+    Group: BEARERS_S2_ATT
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 3
+            Chance: 400
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 750
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 750
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 750
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 50 
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 700
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 400
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 700
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 500
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 300
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 500
+      - Slot: 2
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 100
+    MaxRandom: 1
+    Random:
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 200
+        MaxValue: 200
+        Chance: 26
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 25
+        MaxValue: 25
+        Chance: 26
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 21
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 21
+      - Option: VAR_HPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 26
+      - Option: VAR_SPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 26
+      - Option: VAR_ATTPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_ATTMPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_ATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 9
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 9
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 21
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 6
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 5
+        Chance: 26
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 26
+      - Option: VAR_MDEFPOWER
+        MinValue: 2
+        MaxValue: 3
+        Chance: 31
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 4
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 2
+        Chance: 31
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 1
+        MaxValue: 2
+        Chance: 3
+      - Option: HEAL_VALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 11
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 5
+        MaxValue: 5
+        Chance: 9
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 1
+        MaxValue: 2
+        Chance: 6
+      - Option: DEC_SP_CONSUMPTION
+        MinValue: 2
+        MaxValue: 3
+        Chance: 4
+      - Option: RACE_TOLERACE_NOTHING
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_UNDEAD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_ANIMAL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_PLANT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_INSECT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_FISHS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_DEVIL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_ANGEL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_DRAGON
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 400
+        MaxValue: 400
+        Chance: 15
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 50
+        MaxValue: 50
+        Chance: 15
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 10
+        Chance: 7
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 20
+        MaxValue: 20
+        Chance: 15
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 30
+        MaxValue: 30
+        Chance: 5
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+  - Id: 13
+    Group: ALLMIGHTY_S_ATT
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 3
+            Chance: 400
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 750
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 750
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 750
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 700
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 50
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 700
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 400
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 700
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 500
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 300
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 500
+      - Slot: 2
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 10000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 36
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 200
+        MaxValue: 200
+        Chance: 26
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 25
+        MaxValue: 25
+        Chance: 26
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 21
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 21
+      - Option: VAR_HPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 26
+      - Option: VAR_SPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 26
+      - Option: VAR_ATTPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_ATTMPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_ATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 9
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 9
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 21
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 6
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 5
+        Chance: 26
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 26
+      - Option: VAR_MDEFPOWER
+        MinValue: 2
+        MaxValue: 3
+        Chance: 31
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 4
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 2
+        Chance: 31
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 1
+        MaxValue: 2
+        Chance: 3
+      - Option: HEAL_VALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 11
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 5
+        MaxValue: 5
+        Chance: 9
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 1
+        MaxValue: 2
+        Chance: 6
+      - Option: DEC_SP_CONSUMPTION
+        MinValue: 2
+        MaxValue: 3
+        Chance: 4
+      - Option: RACE_TOLERACE_NOTHING
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_UNDEAD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_ANIMAL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_PLANT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_INSECT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_FISHS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_DEVIL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_ANGEL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: RACE_TOLERACE_DRAGON
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 400
+        MaxValue: 400
+        Chance: 15
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 50
+        MaxValue: 50
+        Chance: 15
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 10
+        Chance: 7
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 20
+        MaxValue: 20
+        Chance: 15
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 30
+        MaxValue: 30
+        Chance: 5
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+  - Id: 14
+    Group: Bloody_Knight_Shield
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_MDEFPOWER
+            MinValue: 3
+            MaxValue: 10
+            Chance: 10000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 20
+            MaxValue: 200
+            Chance: 10000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 100
+            MaxValue: 1000
+            Chance: 10000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 30
+            MaxValue: 100
+            Chance: 10000
+          - Option: RACE_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_PLANT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_INSECT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_HUMAN
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_FISHS
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DRAGON
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DEVIL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANIMAL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANGEL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 10000
+          - Option: DEC_SPELL_CAST_TIME
+            MinValue: 1
+            MaxValue: 5
+            Chance: 10000
+      - Slot: 2
+        Options:
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 10000
+          - Option: VAR_MDEFPOWER
+            MinValue: 3
+            MaxValue: 10
+            Chance: 10000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 20
+            MaxValue: 200
+            Chance: 10000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 100
+            MaxValue: 1000
+            Chance: 10000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 30
+            MaxValue: 100
+            Chance: 10000
+          - Option: RACE_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_PLANT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_INSECT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_HUMAN
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_FISHS
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DRAGON
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DEVIL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANIMAL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANGEL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 10000
+  - Id: 15
+    Group: Sacred_Knight_Shield
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_MDEFPOWER
+            MinValue: 3
+            MaxValue: 10
+            Chance: 10000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 20
+            MaxValue: 200
+            Chance: 10000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 100
+            MaxValue: 1000
+            Chance: 10000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 30
+            MaxValue: 100
+            Chance: 10000
+          - Option: RACE_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_PLANT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_INSECT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_HUMAN
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_FISHS
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DRAGON
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DEVIL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANIMAL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANGEL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 10000
+          - Option: DEC_SPELL_CAST_TIME
+            MinValue: 1
+            MaxValue: 5
+            Chance: 10000
+      - Slot: 2
+        Options:
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 10000
+          - Option: VAR_MDEFPOWER
+            MinValue: 3
+            MaxValue: 10
+            Chance: 10000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 20
+            MaxValue: 200
+            Chance: 10000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 100
+            MaxValue: 1000
+            Chance: 10000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 30
+            MaxValue: 100
+            Chance: 10000
+          - Option: RACE_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_PLANT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_INSECT
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_HUMAN
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_FISHS
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DRAGON
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_DEVIL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANIMAL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_TOLERACE_ANGEL
+            MinValue: 2
+            MaxValue: 7
+            Chance: 2000
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 5
+            Chance: 2000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 10000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 10000
+      - Option: RACE_MDAMAGE_UNDEAD
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_PLANT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_NOTHING
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_INSECT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_HUMAN
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_FISHS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_DRAGON
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_DEVIL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_ANIMAL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_MDAMAGE_ANGEL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_UNDEAD
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_PLANT
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_NOTHING
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_INSECT
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_HUMAN
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_FISHS
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_DRAGON
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_DEVIL
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_ANIMAL
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_MDEF_PERCENT_ANGEL
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_INSECT
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_FISHS
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+        MinValue: 30
+        MaxValue: 60
+        Chance: 10000
+      - Option: RACE_DAMAGE_UNDEAD
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_PLANT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_NOTHING
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_INSECT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_HUMAN
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_FISHS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_DRAGON
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_DEVIL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_ANIMAL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: RACE_DAMAGE_ANGEL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10000
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 1
+        MaxValue: 5
+        Chance: 10000
+      - Option: DAMAGE_SIZE_PERFECT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 2000
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 30
+        MaxValue: 60
+        Chance: 4000
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 30
+        MaxValue: 60
+        Chance: 4000
+  - Id: 16
+    Group: RTC_ALL_BOX # Taiwan RTC Event Box PENE
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 2500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_VITAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_INTAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_DEXAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_LUKAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXHPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_MAXSPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_HPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_SPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_AVOIDSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 10
+            MaxValue: 30
+            Chance: 5000
+          - Option: VAR_MDEFPOWER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: HEAL_MODIFY_PERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 3
+        Chance: 10
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: ATTR_TOLERACE_NOTHING
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_MDAMAGE_BOSS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: DAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+  - Id: 17
+    Group: RTC_ATK_BOX # Taiwan RTC Event Box ATK
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 3
+            MaxValue: 7
+            Chance: 3300
+          - Option: RACE_CRI_PERCENT_NOTHING
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_UNDEAD
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_ANIMAL
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_PLANT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_INSECT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_FISHS
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_DEVIL
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_HUMAN
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_ANGEL
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+          - Option: RACE_CRI_PERCENT_DRAGON
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3400
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_VITAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_INTAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_DEXAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_LUKAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXHPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_MAXSPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_HPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_SPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_AVOIDSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 10
+            MaxValue: 30
+            Chance: 5000
+          - Option: VAR_MDEFPOWER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: HEAL_MODIFY_PERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 3
+        Chance: 10
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: ATTR_TOLERACE_NOTHING
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_MDAMAGE_BOSS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: DAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+  - Id: 18
+    Group: RTC_DEF_BOX # Taiwan RTC Event Box DEF
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 8
+            MaxValue: 12
+            Chance: 5300
+          - Option: RACE_TOLERACE_NOTHING
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5300
+          - Option: RACE_TOLERACE_UNDEAD
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5300
+          - Option: RACE_TOLERACE_ANIMAL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5300
+          - Option: RACE_TOLERACE_PLANT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+          - Option: RACE_TOLERACE_INSECT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+          - Option: RACE_TOLERACE_FISHS
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+          - Option: RACE_TOLERACE_DEVIL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+          - Option: RACE_TOLERACE_HUMAN
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+          - Option: RACE_TOLERACE_ANGEL
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+          - Option: RACE_TOLERACE_DRAGON
+            MinValue: 3
+            MaxValue: 7
+            Chance: 5200
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_VITAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_INTAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_DEXAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_LUKAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXHPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_MAXSPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_HPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_SPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_AVOIDSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 10
+            MaxValue: 30
+            Chance: 5000
+          - Option: VAR_MDEFPOWER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: HEAL_MODIFY_PERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 3
+        Chance: 10
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: ATTR_TOLERACE_NOTHING
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_MDAMAGE_BOSS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: DAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+  - Id: 19
+    Group: RTC_PENE_BOX # Taiwan RTC Event Box PENE
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: RACE_IGNORE_DEF_PERCENT_NOTHING
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_UNDEAD
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_ANIMAL
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_INSECT
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_FISHS
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_DEVIL
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_HUMAN
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_ANGEL
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_DEF_PERCENT_DRAGON
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_NOTHING
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_UNDEAD
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_ANIMAL
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_PLANT
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_INSECT
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_FISHS
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_DEVIL
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_HUMAN
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_ANGEL
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+          - Option: RACE_IGNORE_MDEF_PERCENT_DRAGON
+            MinValue: 10
+            MaxValue: 15
+            Chance: 5000
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_VITAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_INTAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_DEXAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_LUKAMOUNT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 500
+            MaxValue: 1000
+            Chance: 5000
+          - Option: VAR_MAXHPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_MAXSPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 4000
+          - Option: VAR_HPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_SPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 50
+            Chance: 4000
+          - Option: VAR_ATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: VAR_AVOIDSUCCESSVALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 10
+            MaxValue: 30
+            Chance: 5000
+          - Option: VAR_MDEFPOWER
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: HEAL_MODIFY_PERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 3
+        Chance: 10
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 10
+      - Option: ATTR_TOLERACE_NOTHING
+        MinValue: 10
+        MaxValue: 15
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_MDAMAGE_BOSS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_DAMAGE_BOSS_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 10
+      - Option: DAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: DAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+      - Option: MDAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 10
+  - Id: 20
+    Group: ATT_S # Shadow Property Box
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 3
+            MaxValue: 4
+            Chance: 4600
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 4
+            MaxValue: 6
+            Chance: 4600
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 4
+            MaxValue: 6
+            Chance: 4600
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 4
+            MaxValue: 6
+            Chance: 4600
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 4
+            MaxValue: 6
+            Chance: 4600
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 5
+            MaxValue: 8
+            Chance: 4600
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 5
+            MaxValue: 8
+            Chance: 4600
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 5
+            MaxValue: 8
+            Chance: 4600
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 5
+            MaxValue: 8
+            Chance: 4600
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 5
+            MaxValue: 8
+            Chance: 4600
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 5
+            MaxValue: 8
+            Chance: 4500
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_ANIMAL
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_PLANT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_INSECT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_FISHS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_DEVIL
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_HUMAN
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_ANGEL
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+          - Option: RACE_TOLERACE_DRAGON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4500
+          # Rand (1)
+          - Option: VAR_ATKPERCENT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_MAGICATKPERCENT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_STRAMOUNT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_VITAMOUNT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_INTAMOUNT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_DEXAMOUNT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_LUKAMOUNT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_MAXHPPERCENT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_MAXSPPERCENT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 1
+            Chance: 3600
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 5
+            MaxValue: 8
+            Chance: 3600
+          - Option: VAR_ATTPOWER
+            MinValue: 10
+            MaxValue: 30
+            Chance: 3600
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 10
+            MaxValue: 20
+            Chance: 3600
+          - Option: VAR_ATTMPOWER
+            MinValue: 10
+            MaxValue: 30
+            Chance: 3600
+          - Option: VAR_PLUSAVOIDSUCCESSVALUE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: HEAL_VALUE
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3600
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 2
+            Chance: 3600
+          - Option: DEC_SPELL_CAST_TIME
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3600
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3500
+          - Option: RANGE_ATTACK_DAMAGE_TARGET
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3500
+          - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3500
+          - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+            MinValue: 3
+            MaxValue: 5
+            Chance: 3500
+          - Option: VAR_ITEMDEFPOWER
+            MinValue: 10
+            MaxValue: 20
+            Chance: 3500
+          - Option: VAR_MDEFPOWER
+            MinValue: 2
+            MaxValue: 5
+            Chance: 3500
+          - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 3500
+          - Option: CLASS_IGNORE_MDEF_PERCENT_NORMAL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 3500
+  - Id: 21
+    Group: ATT_S2
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4000
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4000
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 5000
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3000
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 5000
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 500
+      - Slot: 2
+        Options:
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+    MaxRandom: 1
+    Random:
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 200
+        MaxValue: 200
+        Chance: 13
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 400
+        MaxValue: 400
+        Chance: 12
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 25
+        MaxValue: 25
+        Chance: 13
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 50
+        MaxValue: 50
+        Chance: 12
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 25
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 25
+      - Option: VAR_HPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_SPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_ATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 25
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 26
+      - Option: VAR_ATTPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 13
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 13
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 5
+        Chance: 13
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 10
+        Chance: 13
+      - Option: VAR_ATTMPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 13
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 13
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 9
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 20
+        MaxValue: 20
+        Chance: 9
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 30
+        MaxValue: 30
+        Chance: 8
+      - Option: VAR_MDEFPOWER
+        MinValue: 2
+        MaxValue: 3
+        Chance: 26
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 5
+        Chance: 26
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: HEAL_VALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 26
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 5
+        MaxValue: 5
+        Chance: 13
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 10
+        MaxValue: 10
+        Chance: 13
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: DEC_SP_CONSUMPTION
+        MinValue: 2
+        MaxValue: 3
+        Chance: 26
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_NOTHING
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_UNDEAD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_ANIMAL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_PLANT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_INSECT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_FISHS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_DEVIL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_ANGEL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_DRAGON
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: RACE_TOLERACE_HUMAN
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 26
+  - Id: 22
+    Group: CHARLES_WEAPON_1 # Charleston Melee
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_CRI_TARGET
+            MinValue: 5
+            MaxValue: 20
+            Chance: 1500
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 5
+            MaxValue: 15
+            Chance: 1500
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 1500
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 1000
+          - Option: VAR_ATKPERCENT
+            MinValue: 3
+            MaxValue: 7
+            Chance: 1000
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 1
+            Chance: 1000
+          - Option: DAMAGE_SIZE_SMALL_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: DAMAGE_SIZE_MIDIUM_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: DAMAGE_SIZE_LARGE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: WEAPON_ATTR_WATER
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_GROUND
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_FIRE
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_WIND
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_SAINT
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_DARKNESS
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: DAMAGE_SIZE_PERFECT
+            MinValue: 0
+            MaxValue: 0
+            Chance: 50
+      - Slot: 2
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: CLASS_DAMAGE_NORMAL_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 750
+          - Option: CLASS_DAMAGE_BOSS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 750
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 5
+            Chance: 100
+  - Id: 23
+    Group: CHARLES_WEAPON_2 # Charleston Ranged
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: VAR_PLUSASPDPERCENT
+            MinValue: 5
+            MaxValue: 15
+            Chance: 1500
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 1500
+          - Option: VAR_ATTPOWER
+            MinValue: 5
+            MaxValue: 20
+            Chance: 1500
+          - Option: RANGE_ATTACK_DAMAGE_TARGET
+            MinValue: 3
+            MaxValue: 7
+            Chance: 1000
+          - Option: DAMAGE_SIZE_SMALL_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: VAR_PLUSASPD
+            MinValue: 1
+            MaxValue: 1
+            Chance: 1000
+          - Option: DAMAGE_SIZE_MIDIUM_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: DAMAGE_SIZE_LARGE_TARGET
+            MinValue: 1
+            MaxValue: 20
+            Chance: 1000
+          - Option: WEAPON_ATTR_WATER
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_GROUND
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_FIRE
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_WIND
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_SAINT
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: WEAPON_ATTR_DARKNESS
+            MinValue: 0
+            MaxValue: 0
+            Chance: 500
+          - Option: DAMAGE_SIZE_PERFECT
+            MinValue: 0
+            MaxValue: 0
+            Chance: 50
+      - Slot: 2
+        Options:
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 20
+            Chance: 2000
+          - Option: CLASS_DAMAGE_NORMAL_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 750
+          - Option: CLASS_DAMAGE_BOSS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 750
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 5
+            Chance: 100
+  - Id: 24
+    Group: S_CRIT
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4000
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 5000
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 7000
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 7000
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 5000
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3000
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 5000
+      - Slot: 2
+        Options:
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+    MaxRandom: 1
+    Random:
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 200
+        MaxValue: 200
+        Chance: 25
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 400
+        MaxValue: 400
+        Chance: 15
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 25
+        MaxValue: 25
+        Chance: 25
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 50
+        MaxValue: 50
+        Chance: 15
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 20
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 20
+      - Option: VAR_HPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_SPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_ATTPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 10
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ATTMPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 10
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 8
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 8
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 5
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 20
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 10
+        Chance: 7
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 5
+        Chance: 25
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 17
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 20
+        MaxValue: 20
+        Chance: 13
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 30
+        MaxValue: 30
+        Chance: 10
+      - Option: VAR_MDEFPOWER
+        MinValue: 2
+        MaxValue: 3
+        Chance: 30
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 2
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 2
+        Chance: 30
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 1
+        MaxValue: 2
+        Chance: 3
+      - Option: HEAL_VALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 10
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 5
+        MaxValue: 5
+        Chance: 8
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 1
+        MaxValue: 2
+        Chance: 5
+      - Option: DEC_SP_CONSUMPTION
+        MinValue: 2
+        MaxValue: 3
+        Chance: 2
+      - Option: RACE_TOLERACE_NOTHING
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_UNDEAD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_ANIMAL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_PLANT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_INSECT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_FISHS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_DEVIL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_HUMAN
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_ANGEL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_DRAGON
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+  - Id: 25
+    Group: TW_S1
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 3
+            Chance: 4000
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7500
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 7000
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 7000
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 4000
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 7000
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 5000
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 3000
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 5000
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 500
+      - Slot: 2
+        Options:
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4500
+    MaxRandom: 1
+    Random:
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 200
+        MaxValue: 200
+        Chance: 25
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 400
+        MaxValue: 400
+        Chance: 15
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 25
+        MaxValue: 25
+        Chance: 25
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 50
+        MaxValue: 50
+        Chance: 15
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 20
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 20
+      - Option: VAR_HPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_SPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_ATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 8
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 8
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 5
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 20
+      - Option: VAR_ATTPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 10
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 10
+        Chance: 7
+      - Option: VAR_ATTMPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 10
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 17
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 20
+        MaxValue: 20
+        Chance: 13
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 30
+        MaxValue: 30
+        Chance: 10
+      - Option: VAR_MDEFPOWER
+        MinValue: 2
+        MaxValue: 3
+        Chance: 30
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 5
+        Chance: 25
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 2
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 2
+        Chance: 30
+      - Option: HEAL_VALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 10
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 5
+        MaxValue: 5
+        Chance: 8
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 1
+        MaxValue: 2
+        Chance: 5
+      - Option: DEC_SP_CONSUMPTION
+        MinValue: 2
+        MaxValue: 3
+        Chance: 2
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 1
+        MaxValue: 2
+        Chance: 3
+      - Option: RACE_TOLERACE_NOTHING
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_UNDEAD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_ANIMAL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_PLANT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_INSECT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_FISHS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_DEVIL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_ANGEL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_DRAGON
+        MinValue: 1
+        MaxValue: 2
+        Chance: 38
+  - Id: 26
+    Group: H_Anto_Range
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 4600
+          - Option: VAR_AVOIDSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 20
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 3
+            Chance: 400
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 80
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 7
+        Chance: 80
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 100
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 100
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 1
+        MaxValue: 5
+        Chance: 80
+      - Option: CLASS_DAMAGE_NORMAL_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 80
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+        MinValue: 10
+        MaxValue: 20
+        Chance: 80
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 80
+      - Option: DAMAGE_SIZE_SMALL_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: DAMAGE_SIZE_MIDIUM_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: DAMAGE_SIZE_LARGE_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+  - Id: 27
+    Group: H_Anto_Melee
+    Slots:
+      - Slot: 1
+        Option:
+          - Option: VAR_ATTPOWER
+            MinValue: 1
+            MaxValue: 20
+            Chance: 4600
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 3
+            Chance: 400
+    MaxRandom: 1
+    Random:
+      - Option: VAR_ATKPERCENT
+        MinValue: 3
+        MaxValue: 7
+        Chance: 100
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 80
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 7
+        Chance: 80
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 100
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 1
+        MaxValue: 5
+        Chance: 80
+      - Option: CLASS_DAMAGE_NORMAL_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 80
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+        MinValue: 10
+        MaxValue: 20
+        Chance: 80
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 80
+      - Option: DAMAGE_SIZE_SMALL_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: DAMAGE_SIZE_MIDIUM_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: DAMAGE_SIZE_LARGE_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+  - Id: 28
+    Group: H_Anto_Magic
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_ATTMPOWER
+            MinValue: 1
+            MaxValue: 20
+            Chance: 4600
+          - Option: VAR_MDEFPOWER
+            MinValue: 1
+            MaxValue: 15
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 12
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 3
+            Chance: 400
+    MaxRandom: 1
+    Random:
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 3
+        MaxValue: 7
+        Chance: 100
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 80
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 7
+        Chance: 80
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 3
+        MaxValue: 7
+        Chance: 100
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 1
+        MaxValue: 5
+        Chance: 80
+      - Option: CLASS_MDAMAGE_NORMAL
+        MinValue: 3
+        MaxValue: 7
+        Chance: 80
+      - Option: CLASS_MDAMAGE_BOSS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: CLASS_IGNORE_MDEF_PERCENT_NORMAL
+        MinValue: 10
+        MaxValue: 20
+        Chance: 100 # TODO: '00'?
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 10
+        MaxValue: 30
+        Chance: 80
+      - Option: MDAMAGE_SIZE_SMALL_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: MDAMAGE_SIZE_MIDIUM_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+      - Option: MDAMAGE_SIZE_LARGE_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 80
+  - Id: 29
+    Group: Anto_Range
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_HITSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 15
+            Chance: 4600
+          - Option: VAR_AVOIDSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 20
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 3
+            Chance: 400
+    MaxRandom: 1
+    Random:
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: CLASS_DAMAGE_NORMAL_TARGET
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 5
+        MaxValue: 15
+        Chance: 50
+      - Option: DAMAGE_SIZE_SMALL_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+      - Option: DAMAGE_SIZE_MIDIUM_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+      - Option: DAMAGE_SIZE_LARGE_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+  - Id: 30
+    Group: Anto_Melee
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_ATTPOWER
+            MinValue: 1
+            MaxValue: 20
+            Chance: 4600
+          - Option: VAR_CRITICALSUCCESSVALUE
+            MinValue: 1
+            MaxValue: 5
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_DAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1700
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1700
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1700
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 3
+            Chance: 100
+    MaxRandom: 1
+    Random:
+      - Option: VAR_ATKPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: CLASS_DAMAGE_NORMAL_TARGET
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: CLASS_DAMAGE_BOSS_TARGET
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: CLASS_IGNORE_DEF_PERCENT_NORMAL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 5
+        MaxValue: 15
+        Chance: 50
+      - Option: DAMAGE_SIZE_SMALL_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+      - Option: DAMAGE_SIZE_MIDIUM_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+      - Option: DAMAGE_SIZE_LARGE_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+  - Id: 31
+    Group: Anto_Magic
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: VAR_ATTMPOWER
+            MinValue: 1
+            MaxValue: 20
+            Chance: 4600
+          - Option: VAR_MDEFPOWER
+            MinValue: 1
+            MaxValue: 15
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_NOTHING
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_UNDEAD
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_ANIMAL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_PLANT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_INSECT
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_FISHS
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_DEVIL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_HUMAN
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_ANGEL
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+          - Option: RACE_MDAMAGE_DRAGON
+            MinValue: 1
+            MaxValue: 10
+            Chance: 4500
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1600
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1700
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1700
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 1700
+          - Option: DEC_SPELL_DELAY_TIME
+            MinValue: 1
+            MaxValue: 3
+            Chance: 100
+    MaxRandom: 1
+    Random:
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: CLASS_MDAMAGE_NORMAL
+        MinValue: 3
+        MaxValue: 5
+        Chance: 50
+      - Option: CLASS_MDAMAGE_BOSS
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: CLASS_IGNORE_MDEF_PERCENT_NORMAL
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 5
+        MaxValue: 15
+        Chance: 50
+      - Option: MDAMAGE_SIZE_SMALL_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+      - Option: MDAMAGE_SIZE_MIDIUM_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+      - Option: MDAMAGE_SIZE_LARGE_TARGET
+        MinValue: 3
+        MaxValue: 7
+        Chance: 50
+  - Id: 32
+    Group: BF_Att_Box_TW
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3000
+          - Option: DAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3000
+          - Option: DAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3000
+          - Option: DAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: MDAMAGE_PROPERTY_NOTHING_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3000
+          - Option: MDAMAGE_PROPERTY_WATER_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: MDAMAGE_PROPERTY_GROUND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: MDAMAGE_PROPERTY_FIRE_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: MDAMAGE_PROPERTY_WIND_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: MDAMAGE_PROPERTY_POISON_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: MDAMAGE_PROPERTY_SAINT_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3000
+          - Option: MDAMAGE_PROPERTY_DARKNESS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 3000
+          - Option: MDAMAGE_PROPERTY_UNDEAD_TARGET
+            MinValue: 5
+            MaxValue: 10
+            Chance: 5000
+      - Slot: 2
+        Options:
+          - Option: VAR_STRAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 8000
+          - Option: VAR_AGIAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 8000
+          - Option: VAR_VITAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 8000
+          - Option: VAR_INTAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 8000
+          - Option: VAR_DEXAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 8000
+          - Option: VAR_LUKAMOUNT
+            MinValue: 1
+            MaxValue: 3
+            Chance: 8000
+          - Option: VAR_MAXHPAMOUNT
+            MinValue: 1
+            MaxValue: 1000
+            Chance: 4000
+          - Option: VAR_MAXSPAMOUNT
+            MinValue: 1
+            MaxValue: 1000
+            Chance: 4000
+          - Option: VAR_MAXHPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: VAR_MAXSPPERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: VAR_HPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 7000
+          - Option: VAR_SPACCELERATION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 7000
+          - Option: HEAL_VALUE
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: HEAL_MODIFY_PERCENT
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+          - Option: DEC_SP_CONSUMPTION
+            MinValue: 5
+            MaxValue: 10
+            Chance: 6000
+    MaxRandom: 1
+    Random:
+      - Option: VAR_ATKPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 90
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 90
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 40
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 5
+        MaxValue: 10
+        Chance: 50
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 10
+        Chance: 90
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 30
+        Chance: 90
+      - Option: VAR_MDEFPOWER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 70
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 7
+        Chance: 40
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 5
+        MaxValue: 15
+        Chance: 40
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 5
+        MaxValue: 15
+        Chance: 40
+      - Option: DEC_SPELL_DELAY_TIME
+        MinValue: 1
+        MaxValue: 5
+        Chance: 10
+      - Option: ATTR_TOLERACE_NOTHING
+        MinValue: 5
+        MaxValue: 15
+        Chance: 50
+      - Option: CLASS_IGNORE_DEF_PERCENT_BOSS
+        MinValue: 1
+        MaxValue: 20
+        Chance: 30
+      - Option: CLASS_IGNORE_MDEF_PERCENT_BOSS
+        MinValue: 1
+        MaxValue: 20
+        Chance: 30
+      - Option: DAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 40
+      - Option: DAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 40
+      - Option: DAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 40
+      - Option: MDAMAGE_SIZE_SMALL_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 40
+      - Option: MDAMAGE_SIZE_MIDIUM_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 40
+      - Option: MDAMAGE_SIZE_LARGE_USER
+        MinValue: 5
+        MaxValue: 10
+        Chance: 40
+  - Id: 33
+    Group: Hasty_Box
+    Slots:
+      - Slot: 1
+        Options:
+          - Option: ATTR_TOLERACE_NOTHING
+            MinValue: 2
+            MaxValue: 3
+            Chance: 40
+          - Option: ATTR_TOLERACE_WATER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 75
+          - Option: ATTR_TOLERACE_GROUND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 75
+          - Option: ATTR_TOLERACE_FIRE
+            MinValue: 2
+            MaxValue: 3
+            Chance: 75
+          - Option: ATTR_TOLERACE_WIND
+            MinValue: 2
+            MaxValue: 3
+            Chance: 70
+          - Option: ATTR_TOLERACE_POISON
+            MinValue: 2
+            MaxValue: 3
+            Chance: 70
+          - Option: ATTR_TOLERACE_SAINT
+            MinValue: 2
+            MaxValue: 3
+            Chance: 70
+          - Option: ATTR_TOLERACE_DARKNESS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 70
+          - Option: ATTR_TOLERACE_TELEKINESIS
+            MinValue: 2
+            MaxValue: 3
+            Chance: 70
+          - Option: ATTR_TOLERACE_UNDEAD
+            MinValue: 2
+            MaxValue: 3
+            Chance: 70
+          - Option: ATTR_TOLERACE_ALL
+            MinValue: 1
+            MaxValue: 2
+            Chance: 5
+          - Option: DAMAGE_SIZE_SMALL_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 70
+          - Option: DAMAGE_SIZE_MIDIUM_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 40
+          - Option: DAMAGE_SIZE_LARGE_USER
+            MinValue: 3
+            MaxValue: 5
+            Chance: 70
+          - Option: MDAMAGE_SIZE_SMALL_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 50
+          - Option: MDAMAGE_SIZE_MIDIUM_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 30
+          - Option: MDAMAGE_SIZE_LARGE_USER
+            MinValue: 2
+            MaxValue: 3
+            Chance: 50
+      - Slot: 2
+        Options:
+          - Option: DAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: DAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_NOTHING_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_WATER_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_GROUND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_FIRE_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_WIND_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_POISON_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_SAINT_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_DARKNESS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_TELEKINESIS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: MDAMAGE_PROPERTY_UNDEAD_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: CLASS_DAMAGE_NORMAL_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+          - Option: CLASS_DAMAGE_BOSS_USER
+            MinValue: 1
+            MaxValue: 2
+            Chance: 4600
+    MaxRandom: 1
+    Random:
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 35
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 200
+        MaxValue: 200
+        Chance: 25
+      - Option: VAR_MAXHPAMOUNT
+        MinValue: 400
+        MaxValue: 400
+        Chance: 15
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 25
+        MaxValue: 25
+        Chance: 25
+      - Option: VAR_MAXSPAMOUNT
+        MinValue: 50
+        MaxValue: 50
+        Chance: 15
+      - Option: VAR_MAXHPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 20
+      - Option: VAR_MAXSPPERCENT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 20
+      - Option: VAR_HPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_SPACCELERATION
+        MinValue: 5
+        MaxValue: 10
+        Chance: 25
+      - Option: VAR_ATTPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 10
+      - Option: VAR_ATTPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ATTMPOWER
+        MinValue: 5
+        MaxValue: 5
+        Chance: 10
+      - Option: VAR_ATTMPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 5
+      - Option: VAR_ATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 8
+      - Option: VAR_MAGICATKPERCENT
+        MinValue: 1
+        MaxValue: 1
+        Chance: 8
+      - Option: VAR_PLUSASPD
+        MinValue: 1
+        MaxValue: 1
+        Chance: 5
+      - Option: VAR_PLUSASPDPERCENT
+        MinValue: 3
+        MaxValue: 5
+        Chance: 20
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 5
+        MaxValue: 5
+        Chance: 11
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 10
+        MaxValue: 10
+        Chance: 7
+      - Option: VAR_AVOIDSUCCESSVALUE
+        MinValue: 3
+        MaxValue: 5
+        Chance: 30
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 10
+        MaxValue: 10
+        Chance: 17
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 20
+        MaxValue: 20
+        Chance: 13
+      - Option: VAR_ITEMDEFPOWER
+        MinValue: 30
+        MaxValue: 30
+        Chance: 10
+      - Option: VAR_MDEFPOWER
+        MinValue: 2
+        MaxValue: 3
+        Chance: 30
+      - Option: VAR_PLUSAVOIDSUCCESSVALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 2
+      - Option: VAR_CRITICALSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 2
+        Chance: 30
+      - Option: RANGE_ATTACK_DAMAGE_TARGET
+        MinValue: 1
+        MaxValue: 2
+        Chance: 3
+      - Option: HEAL_VALUE
+        MinValue: 2
+        MaxValue: 3
+        Chance: 10
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 5
+        MaxValue: 5
+        Chance: 8
+      - Option: HEAL_MODIFY_PERCENT
+        MinValue: 1
+        MaxValue: 10
+        Chance: 5
+      - Option: DEC_SPELL_CAST_TIME
+        MinValue: 1
+        MaxValue: 2
+        Chance: 5
+      - Option: DEC_SP_CONSUMPTION
+        MinValue: 2
+        MaxValue: 3
+        Chance: 2
+      - Option: RACE_TOLERACE_NOTHING
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_UNDEAD
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_ANIMAL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_PLANT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_INSECT
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_FISHS
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_DEVIL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_HUMAN
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_ANGEL
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+      - Option: RACE_TOLERACE_DRAGON
+        MinValue: 1
+        MaxValue: 2
+        Chance: 37
+  - Id: 99
+    Group: None
+    MaxRandom: 1
+    Random:
+      - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+        MinValue: 10
+        MaxValue: 50
+        Chance: 625
+      - Option: RACE_IGNORE_DEF_PERCENT_PLANT
+        MinValue: 10
+        MaxValue: 50
+        Chance: 625
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_AGIAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_DEXAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_HITSUCCESSVALUE
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_INTAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_LUKAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_STRAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625
+      - Option: VAR_VITAMOUNT
+        MinValue: 1
+        MaxValue: 5
+        Chance: 625

+ 0 - 60
db/re/level_penalty.txt

@@ -1,60 +0,0 @@
-// Experience & Drop Rate Modifier Database
-//
-// Structure of Database:
-// Type,Class,Level difference,Rate
-//
-// TYPE:
-//   1=experience, 2=item drop
-// CLASS:
-//   0=Normal monsters, 1=Boss monsters, 2=Guardians
-//
-// Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled.
-
-// EXP modifiers due to level difference
-1,CLASS_NORMAL,16,40
-1,CLASS_NORMAL,15,115
-1,CLASS_NORMAL,14,120
-1,CLASS_NORMAL,13,125
-1,CLASS_NORMAL,12,130
-1,CLASS_NORMAL,11,135
-1,CLASS_NORMAL,10,140
-1,CLASS_NORMAL,9,135
-1,CLASS_NORMAL,8,130
-1,CLASS_NORMAL,7,125
-1,CLASS_NORMAL,6,120
-1,CLASS_NORMAL,5,115
-1,CLASS_NORMAL,4,110
-1,CLASS_NORMAL,3,105
-1,CLASS_NORMAL,0,100
-1,CLASS_NORMAL,-1,100
-1,CLASS_NORMAL,-6,95
-1,CLASS_NORMAL,-11,90
-1,CLASS_NORMAL,-16,85
-1,CLASS_NORMAL,-21,60
-1,CLASS_NORMAL,-26,35
-1,CLASS_NORMAL,-31,10
-
-// Boss Type
-1,CLASS_BOSS,0,100
-
-// Guardian Type
-1,CLASS_GUARDIAN,0,100
-
-// Drop rate modifiers due to level difference
-2,CLASS_NORMAL,16,50
-2,CLASS_NORMAL,13,60
-2,CLASS_NORMAL,10,70
-2,CLASS_NORMAL,7,80
-2,CLASS_NORMAL,4,90
-2,CLASS_NORMAL,0,100
-2,CLASS_NORMAL,-4,90
-2,CLASS_NORMAL,-7,80
-2,CLASS_NORMAL,-10,70
-2,CLASS_NORMAL,-13,60
-2,CLASS_NORMAL,-16,50
-
-// Boss Type
-2,CLASS_BOSS,0,100
-
-// Guardian Type
-2,CLASS_GUARDIAN,0,100

+ 99 - 0
db/re/level_penalty.yml

@@ -0,0 +1,99 @@
+# 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/>.
+#
+###########################################################################
+# Level Penalty Database
+###########################################################################
+#
+# Level Penalty Settings
+#
+###########################################################################
+# - Type:             Type of Penalty (Exp, Drop, Mvp_Exp, Mvp_Drop)
+#   LevelDifferences: List of level difference between player and monster
+#     - Difference:   Level difference between player and monster
+#       Rate:         Rate applied to original exp or drop rate (0-10000)
+###########################################################################
+
+Header:
+  Type: PENALTY_DB
+  Version: 1
+
+Body:
+  - Type: Exp
+    LevelDifferences:
+      - Difference: 16
+        Rate: 40
+      - Difference: 15
+        Rate: 115
+      - Difference: 14
+        Rate: 120
+      - Difference: 13
+        Rate: 125
+      - Difference: 12
+        Rate: 130
+      - Difference: 11
+        Rate: 135
+      - Difference: 10
+        Rate: 140
+      - Difference: 9
+        Rate: 135
+      - Difference: 8
+        Rate: 130
+      - Difference: 7
+        Rate: 125
+      - Difference: 6
+        Rate: 120
+      - Difference: 5
+        Rate: 115
+      - Difference: 4
+        Rate: 110
+      - Difference: 3
+        Rate: 105
+      - Difference: -6
+        Rate: 95
+      - Difference: -11
+        Rate: 90
+      - Difference: -16
+        Rate: 85
+      - Difference: -21
+        Rate: 60
+      - Difference: -26
+        Rate: 35
+      - Difference: -31
+        Rate: 10
+  - Type: Drop
+    LevelDifferences:
+      - Difference: 16
+        Rate: 50
+      - Difference: 13
+        Rate: 60
+      - Difference: 10
+        Rate: 70
+      - Difference: 7
+        Rate: 80
+      - Difference: 4
+        Rate: 90
+      - Difference: -4
+        Rate: 90
+      - Difference: -7
+        Rate: 80
+      - Difference: -10
+        Rate: 70
+      - Difference: -13
+        Rate: 60
+      - Difference: -16
+        Rate: 50

+ 3 - 3
db/re/mob_db.txt

@@ -1939,8 +1939,8 @@
 2779,C1_LES,Swift Les,Swift Les,82,31080,1,3315,10170,1,356,30,123,30,63,20,35,25,62,30,10,12,1,3,82,0x1089,230,1728,720,576,0,0,0,0,0,0,0,7100,2000,511,1000,711,1000,905,2500,2270,1,521,500,510,50,0,0,0,0,0,0
 2780,C2_LEIB_OLMAI,Solid Leib Olmai,Solid Leib Olmai,118,240010,1,9500,30960,1,1074,105,127,31,72,35,80,35,77,27,10,12,2,2,22,0x3695,175,1260,230,192,0,0,0,0,0,0,0,948,4550,2289,8,740,120,518,500,2717,5,969,5,7053,800,0,0,0,0,4188,1
 2781,C3_LEAF_CAT,Leaf Cat Ringleader,Leaf Cat Ringleader,64,13175,1,1560,5010,1,176,41,88,16,46,16,12,45,36,29,10,12,0,2,22,0x83,150,960,864,720,0,0,0,0,0,0,0,7198,4365,520,300,608,5,1023,1100,568,250,567,500,7298,5335,0,0,0,0,4195,1
-//2782,C4_L_WHIKEBAIN
-//2783,C5_L_EREMES
+2782,C4_L_WHIKEBAIN,Furious Wickebine Tres,Furious Wickebine Tres,98,58560,1,4350,18405,1,654,216,125,72,125,130,75,46,93,60,10,12,1,7,65,0x3885,130,500,400,288,0,0,0,0,0,0,0,0,0,0,0,7347,10000,7345,10000,1239,500,1231,25,2335,2500,2336,25,603,10,0,0
+2783,C5_L_EREMES,Elusive Eremes,Elusive Eremes,98,45145,1,7875,11130,1,886,153,109,10,130,78,53,60,114,68,10,12,1,7,85,0x2003095,160,432,400,288,0,0,0,0,0,0,0,0,0,0,0,7345,10000,7347,10000,1261,500,1285,25,2337,2500,2359,25,603,10,0,0
 2784,C1_KOBOLD_ARCHER,Swift Kobold Archer,Swift Kobold Archer,108,55265,1,6480,23580,9,914,33,84,5,99,39,48,30,124,25,10,12,0,7,23,0x2085,200,1008,1008,384,0,0,0,0,0,0,0,912,250,999,60,1034,4850,5118,50,1763,2000,1711,5,756,79,0,0,0,0,4292,1
 2785,C2_KOBOLD_1,Solid Kobold,Solid Kobold,107,104830,1,6820,15345,1,841,87,103,25,109,76,61,53,98,30,10,12,1,7,44,0x308D,150,1028,528,360,0,0,0,0,0,0,0,999,100,1034,5335,912,700,757,25,1220,2,2104,5,0,0,0,0,0,0,4091,1
 2786,C3_KNOCKER,Knocker Ringleader,Knocker Ringleader,126,219500,1,11990,33900,1,1063,103,126,62,93,62,58,56,139,70,10,12,0,6,22,0x2000091,200,1548,384,288,0,0,0,0,0,0,0,997,30,1003,150,1040,5500,2286,1,6223,10,2124,3,1732,5,0,0,0,0,4434,1
@@ -3410,7 +3410,7 @@
 //20266,G_ILL_TEDDY_BEAR_G
 //20267,G_ILL_TEDDY_BEAR_W
 //20268,G_ILL_TEDDY_BEAR_B
-//20269,GUILD_SKILL_FLAG
+20269,GUILD_SKILL_FLAG,Guild Skill Flag,Guild Skill Flag,90,30,0,0,0,1,0,0,0,0,1,17,1,80,126,20,10,12,2,0,20,0x120,300,1288,288,384,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 //20270,ILL_TRI_JOINT
 //20271,ILL_STALACTIC_GOLEM
 //20272,ILL_MEGALITH

+ 105 - 105
db/re/mob_drop.txt

@@ -16,108 +16,108 @@
 // <flag>            : 1 - The item is protected from steal.
 //                     2 - As MVP Reward
 
-1063,1102,100,RDMOPTG_None // LUNATIC
-2770,1102,500,RDMOPTG_None // C2_LUNATIC
-2771,1102,500,RDMOPTG_None // C3_LUNATIC
-2072,1839,50,RDMOPTG_Crimson_Weapon // JAGUAR
-1584,21015,50,RDMOPTG_Crimson_Weapon // TAMRUAN
-2639,21015,250,RDMOPTG_Crimson_Weapon // C4_TAMRUAN
-1154,13454,50,RDMOPTG_Crimson_Weapon // PASANA
-1154,28705,50,RDMOPTG_Crimson_Weapon // PASANA
-2719,13454,250,RDMOPTG_Crimson_Weapon // C1_PASANA
-2719,28705,250,RDMOPTG_Crimson_Weapon // C1_PASANA
-1117,28604,50,RDMOPTG_Crimson_Weapon // EVIL_DRUID
-1517,16040,50,RDMOPTG_Crimson_Weapon // LI_ME_MANG_RYANG
-2071,28007,50,RDMOPTG_Crimson_Weapon // HEADLESS_MULE
-2778,16040,250,RDMOPTG_Crimson_Weapon // C5_LI_ME_MANG_RYANG
-2838,28604,50,RDMOPTG_Crimson_Weapon // C5_EVIL_DRUID
-1613,13127,50,RDMOPTG_None // METALING
-1386,28705,50,RDMOPTG_Crimson_Weapon // SLEEPER
-2655,28705,250,RDMOPTG_Crimson_Weapon // C5_SLEEPER
-2656,28705,250,RDMOPTG_Crimson_Weapon // C1_SLEEPER
-2755,13127,250,RDMOPTG_None // C2_METALING
-2756,13127,250,RDMOPTG_None // C3_METALING
-1631,1839,50,RDMOPTG_Crimson_Weapon // CHUNG_E_
-1215,1443,50,RDMOPTG_Crimson_Weapon // STEM_WORM
-2641,1443,250,RDMOPTG_Crimson_Weapon // C1_STEM_WORM
-1404,1939,50,RDMOPTG_Crimson_Weapon // MIYABI_NINGYO
-1628,13127,50,RDMOPTG_None // MOLE
-1619,28705,50,RDMOPTG_Crimson_Weapon // PORCELLIO
-2700,28705,250,RDMOPTG_Crimson_Weapon // C2_PORCELLIO
-2745,13127,250,RDMOPTG_None // C2_MOLE
-2746,1939,250,RDMOPTG_Crimson_Weapon // C3_MIYABI_NINGYO
-1102,1680,50,RDMOPTG_None // BATHORY
-1155,16040,50,RDMOPTG_Crimson_Weapon // PETIT
-2714,16040,250,RDMOPTG_Crimson_Weapon // C1_PETIT
-2715,16040,250,RDMOPTG_Crimson_Weapon // C2_PETIT
-2885,1680,250,RDMOPTG_None // C4_BATHORY
-2199,28705,50,RDMOPTG_Crimson_Weapon // SIORAVA
-1143,16040,50,RDMOPTG_Crimson_Weapon // MARIONETTE
-1413,1995,50,RDMOPTG_Crimson_Weapon // WILD_GINSENG
-2761,16040,250,RDMOPTG_Crimson_Weapon // C3_MARIONETTE
-1320,1498,50,RDMOPTG_Crimson_Weapon // OWL_DUKE
-1320,2025,50,RDMOPTG_None // OWL_DUKE
-1316,16040,50,RDMOPTG_Crimson_Weapon // SOLIDER
-2647,16040,250,RDMOPTG_Crimson_Weapon // C2_SOLIDER
-2721,1498,250,RDMOPTG_Crimson_Weapon // C3_OWL_DUKE
-2721,2025,250,RDMOPTG_None // C3_OWL_DUKE
-1408,1839,50,RDMOPTG_Crimson_Weapon // BLOOD_BUTTERFLY
-2883,1839,250,RDMOPTG_Crimson_Weapon // C1_BLOOD_BUTTERFLY
-1257,28007,50,RDMOPTG_Crimson_Weapon // INJUSTICE
-2792,28007,250,RDMOPTG_Crimson_Weapon // C4_INJUSTICE
-1302,21015,50,RDMOPTG_Crimson_Weapon // DARK_ILLUSION
-1416,1939,50,RDMOPTG_Crimson_Weapon // WICKED_NYMPH
-1416,1995,50,RDMOPTG_Crimson_Weapon // WICKED_NYMPH
-2617,1939,250,RDMOPTG_Crimson_Weapon // C5_WICKED_NYMPH
-2617,1995,250,RDMOPTG_Crimson_Weapon // C5_WICKED_NYMPH
-1405,13327,50,RDMOPTG_Crimson_Weapon // TENGU
-1030,1498,50,RDMOPTG_Crimson_Weapon // ANACONDAQ
-2904,1498,250,RDMOPTG_Crimson_Weapon // C4_ANACONDAQ
-1205,13454,50,RDMOPTG_Crimson_Weapon // EXECUTIONER
-1135,28106,50,RDMOPTG_Crimson_Weapon // KOBOLD_3
-1106,28705,50,RDMOPTG_Crimson_Weapon // DESERT_WOLF
-1259,1498,250,RDMOPTG_Crimson_Weapon // GRYPHON
-1310,28106,50,RDMOPTG_Crimson_Weapon // MAJORUROS
-2767,28106,250,RDMOPTG_Crimson_Weapon // C4_MAJORUROS
-1736,1839,50,RDMOPTG_Crimson_Weapon // ALIOT
-1296,16040,50,RDMOPTG_Crimson_Weapon // KOBOLD_LEADER
-1204,28705,50,RDMOPTG_Crimson_Weapon // TIRFING
-1204,13454,50,RDMOPTG_Crimson_Weapon // TIRFING
-1993,1443,50,RDMOPTG_Crimson_Weapon // NAGA
-1390,1939,50,RDMOPTG_Crimson_Weapon // VIOLY
-2621,1939,250,RDMOPTG_Crimson_Weapon // C5_VIOLY
-2622,1939,250,RDMOPTG_Crimson_Weapon // C1_VIOLY
-2623,1939,250,RDMOPTG_Crimson_Weapon // C2_VIOLY
-1295,18130,50,RDMOPTG_None // OWL_BARON
-1303,2025,50,RDMOPTG_None // GIANT_HONET
-2821,2025,250,RDMOPTG_None // C3_GIANT_HONET
-1702,21015,50,RDMOPTG_Crimson_Weapon // RETRIBUTION
-2353,28106,50,RDMOPTG_Crimson_Weapon // N_MINOROUS
-2684,21015,250,RDMOPTG_Crimson_Weapon // C4_RETRIBUTION
-2685,21015,250,RDMOPTG_Crimson_Weapon // C5_RETRIBUTION
-2686,21015,250,RDMOPTG_Crimson_Weapon // C1_RETRIBUTION
-1219,21015,50,RDMOPTG_Crimson_Weapon // KNIGHT_OF_ABYSS
-1703,1939,50,RDMOPTG_Crimson_Weapon // SOLACE
-2650,1939,250,RDMOPTG_Crimson_Weapon // C5_SOLACE
-2041,28705,50,RDMOPTG_Crimson_Weapon // MYSTELTAINN
-2041,13454,50,RDMOPTG_Crimson_Weapon // MYSTELTAINN
-2041,21015,50,RDMOPTG_Crimson_Weapon // MYSTELTAINN
-1830,18130,50,RDMOPTG_None // BOW_GUARDIAN
-1653,28705,50,RDMOPTG_Crimson_Weapon // WHIKEBAIN
-1655,1839,50,RDMOPTG_Crimson_Weapon // EREND
-1655,16040,50,RDMOPTG_Crimson_Weapon // EREND
-1657,1680,50,RDMOPTG_None // RAWREL
-1829,21015,50,RDMOPTG_Crimson_Weapon // SWORD_GUARDIAN
-2692,1680,250,RDMOPTG_None // C3_RAWREL
-1654,13454,50,RDMOPTG_Crimson_Weapon // ARMAIA
-1654,28106,50,RDMOPTG_Crimson_Weapon // ARMAIA
-1656,1939,50,RDMOPTG_Crimson_Weapon // KAVAC
-1656,18130,50,RDMOPTG_None // KAVAC
-1652,13454,50,RDMOPTG_Crimson_Weapon // YGNIZEM
-1652,21015,50,RDMOPTG_Crimson_Weapon // YGNIZEM
-1290,28705,50,RDMOPTG_Crimson_Weapon // SKELETON_GENERAL
-2658,28705,250,RDMOPTG_Crimson_Weapon // C3_SKELETON_GENERAL
-2659,28705,250,RDMOPTG_Crimson_Weapon // C4_SKELETON_GENERAL
-1658,21015,500,RDMOPTG_Crimson_Weapon // B_YGNIZEM
-1301,16040,50,RDMOPTG_Crimson_Weapon // AM_MUT
-2362,28604,50,RDMOPTG_Crimson_Weapon // N_AMON_RA
+1063,1102,100,None // LUNATIC
+2770,1102,500,None // C2_LUNATIC
+2771,1102,500,None // C3_LUNATIC
+2072,1839,50,Group_5 // JAGUAR
+1584,21015,50,Group_5 // TAMRUAN
+2639,21015,250,Group_5 // C4_TAMRUAN
+1154,13454,50,Group_5 // PASANA
+1154,28705,50,Group_5 // PASANA
+2719,13454,250,Group_5 // C1_PASANA
+2719,28705,250,Group_5 // C1_PASANA
+1117,28604,50,Group_5 // EVIL_DRUID
+1517,16040,50,Group_5 // LI_ME_MANG_RYANG
+2071,28007,50,Group_5 // HEADLESS_MULE
+2778,16040,250,Group_5 // C5_LI_ME_MANG_RYANG
+2838,28604,50,Group_5 // C5_EVIL_DRUID
+1613,13127,50,None // METALING
+1386,28705,50,Group_5 // SLEEPER
+2655,28705,250,Group_5 // C5_SLEEPER
+2656,28705,250,Group_5 // C1_SLEEPER
+2755,13127,250,None // C2_METALING
+2756,13127,250,None // C3_METALING
+1631,1839,50,Group_5 // CHUNG_E_
+1215,1443,50,Group_5 // STEM_WORM
+2641,1443,250,Group_5 // C1_STEM_WORM
+1404,1939,50,Group_5 // MIYABI_NINGYO
+1628,13127,50,None // MOLE
+1619,28705,50,Group_5 // PORCELLIO
+2700,28705,250,Group_5 // C2_PORCELLIO
+2745,13127,250,None // C2_MOLE
+2746,1939,250,Group_5 // C3_MIYABI_NINGYO
+1102,1680,50,None // BATHORY
+1155,16040,50,Group_5 // PETIT
+2714,16040,250,Group_5 // C1_PETIT
+2715,16040,250,Group_5 // C2_PETIT
+2885,1680,250,None // C4_BATHORY
+2199,28705,50,Group_5 // SIORAVA
+1143,16040,50,Group_5 // MARIONETTE
+1413,1995,50,Group_5 // WILD_GINSENG
+2761,16040,250,Group_5 // C3_MARIONETTE
+1320,1498,50,Group_5 // OWL_DUKE
+1320,2025,50,None // OWL_DUKE
+1316,16040,50,Group_5 // SOLIDER
+2647,16040,250,Group_5 // C2_SOLIDER
+2721,1498,250,Group_5 // C3_OWL_DUKE
+2721,2025,250,None // C3_OWL_DUKE
+1408,1839,50,Group_5 // BLOOD_BUTTERFLY
+2883,1839,250,Group_5 // C1_BLOOD_BUTTERFLY
+1257,28007,50,Group_5 // INJUSTICE
+2792,28007,250,Group_5 // C4_INJUSTICE
+1302,21015,50,Group_5 // DARK_ILLUSION
+1416,1939,50,Group_5 // WICKED_NYMPH
+1416,1995,50,Group_5 // WICKED_NYMPH
+2617,1939,250,Group_5 // C5_WICKED_NYMPH
+2617,1995,250,Group_5 // C5_WICKED_NYMPH
+1405,13327,50,Group_5 // TENGU
+1030,1498,50,Group_5 // ANACONDAQ
+2904,1498,250,Group_5 // C4_ANACONDAQ
+1205,13454,50,Group_5 // EXECUTIONER
+1135,28106,50,Group_5 // KOBOLD_3
+1106,28705,50,Group_5 // DESERT_WOLF
+1259,1498,250,Group_5 // GRYPHON
+1310,28106,50,Group_5 // MAJORUROS
+2767,28106,250,Group_5 // C4_MAJORUROS
+1736,1839,50,Group_5 // ALIOT
+1296,16040,50,Group_5 // KOBOLD_LEADER
+1204,28705,50,Group_5 // TIRFING
+1204,13454,50,Group_5 // TIRFING
+1993,1443,50,Group_5 // NAGA
+1390,1939,50,Group_5 // VIOLY
+2621,1939,250,Group_5 // C5_VIOLY
+2622,1939,250,Group_5 // C1_VIOLY
+2623,1939,250,Group_5 // C2_VIOLY
+1295,18130,50,None // OWL_BARON
+1303,2025,50,None // GIANT_HONET
+2821,2025,250,None // C3_GIANT_HONET
+1702,21015,50,Group_5 // RETRIBUTION
+2353,28106,50,Group_5 // N_MINOROUS
+2684,21015,250,Group_5 // C4_RETRIBUTION
+2685,21015,250,Group_5 // C5_RETRIBUTION
+2686,21015,250,Group_5 // C1_RETRIBUTION
+1219,21015,50,Group_5 // KNIGHT_OF_ABYSS
+1703,1939,50,Group_5 // SOLACE
+2650,1939,250,Group_5 // C5_SOLACE
+2041,28705,50,Group_5 // MYSTELTAINN
+2041,13454,50,Group_5 // MYSTELTAINN
+2041,21015,50,Group_5 // MYSTELTAINN
+1830,18130,50,None // BOW_GUARDIAN
+1653,28705,50,Group_5 // WHIKEBAIN
+1655,1839,50,Group_5 // EREND
+1655,16040,50,Group_5 // EREND
+1657,1680,50,None // RAWREL
+1829,21015,50,Group_5 // SWORD_GUARDIAN
+2692,1680,250,None // C3_RAWREL
+1654,13454,50,Group_5 // ARMAIA
+1654,28106,50,Group_5 // ARMAIA
+1656,1939,50,Group_5 // KAVAC
+1656,18130,50,None // KAVAC
+1652,13454,50,Group_5 // YGNIZEM
+1652,21015,50,Group_5 // YGNIZEM
+1290,28705,50,Group_5 // SKELETON_GENERAL
+2658,28705,250,Group_5 // C3_SKELETON_GENERAL
+2659,28705,250,Group_5 // C4_SKELETON_GENERAL
+1658,21015,500,Group_5 // B_YGNIZEM
+1301,16040,50,Group_5 // AM_MUT
+2362,28604,50,Group_5 // N_AMON_RA

+ 28 - 0
db/re/mob_skill_db.txt

@@ -10086,6 +10086,34 @@
 2781,Leaf Cat Ringleader@AL_HEAL,attack,28,1,10000,500,5000,no,self,myhpltmaxrate,30,,,,,,18,
 2781,Leaf Cat Ringleader@AL_HEAL,chase,28,1,10000,500,5000,no,self,myhpltmaxrate,30,,,,,,18,
 2781,Leaf Cat Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1586,,,,,,
+2782,C4_L_WHIKEBAIN@TF_THROWSTONE,chase,152,1,10000,0,3000,yes,target,always,0,,,,,,,
+2782,C4_L_WHIKEBAIN@TF_THROWSTONE,follow,152,1,10000,0,3000,yes,target,always,0,,,,,,,
+2782,C4_L_WHIKEBAIN@NPC_POISON,attack,176,5,1000,800,5000,no,target,always,0,,,,,,,
+2782,C4_L_WHIKEBAIN@RG_STRIPWEAPON,attack,215,5,500,0,10000,yes,target,always,0,,,,,,18,
+2782,C4_L_WHIKEBAIN@RG_STRIPARMOR,attack,217,5,500,0,10000,yes,target,always,0,,,,,,18,
+2782,C4_L_WHIKEBAIN@RG_STRIPSHIELD,attack,216,5,500,0,10000,yes,target,always,0,,,,,,17,
+2782,C4_L_WHIKEBAIN@RG_STRIPHELM,attack,218,5,500,0,10000,yes,target,always,0,,,,,,,
+2782,C4_L_WHIKEBAIN@RG_INTIMIDATE,attack,219,10,2000,0,60000,no,target,always,0,,,,,,,
+2782,C4_L_WHIKEBAIN@RG_CLOSECONFINE,attack,1005,1,1000,0,30000,yes,target,always,0,,,,,,,
+2782,C4_L_WHIKEBAIN@NPC_POISONATTACK,attack,188,5,1000,0,5000,yes,target,always,0,,,,,,,
+2783,C5_L_EREMES@AS_CLOAKING,attack,135,3,2000,200,5000,yes,self,always,0,,,,,,,
+2783,C5_L_EREMES@AS_CLOAKING,idle,135,3,2000,200,5000,yes,self,always,0,,,,,,,
+2783,C5_L_EREMES@AS_CLOAKING,chase,135,3,2000,200,5000,yes,self,always,0,,,,,,,
+2783,C5_L_EREMES@AS_GRIMTOOTH,idle,137,5,10000,0,0,yes,target,always,0,,,,,,6,
+2783,C5_L_EREMES@AS_GRIMTOOTH,chase,137,5,10000,0,0,yes,target,skillused,18,,,,,,6,
+2783,C5_L_EREMES@AS_SONICBLOW,attack,136,10,2000,0,5000,yes,target,always,0,,,,,,6,
+2783,C5_L_EREMES@AS_GRIMTOOTH,chase,137,5,2000,0,0,yes,target,always,0,,,,,,,
+2783,C5_L_EREMES@AS_VENOMDUST,idle,140,10,2000,0,50000,yes,target,always,0,,,,,,29,
+2783,C5_L_EREMES@AS_VENOMDUST,attack,140,10,2000,0,50000,yes,target,always,0,,,,,,29,
+2783,C5_L_EREMES@NPC_CRITICALSLASH,attack,170,1,1000,0,5000,yes,target,always,0,,,,,,,
+2783,C5_L_EREMES@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,0,,,,,,,
+2783,C5_L_EREMES@NPC_POISONATTACK,attack,188,5,1000,0,5000,yes,target,always,0,,,,,,,
+2783,C5_L_EREMES@AL_TELEPORT,idle,26,1,1000,1000,10000,no,self,always,0,,,,,,,
+2783,C5_L_EREMES@AL_TELEPORT,chase,26,1,1000,1000,10000,no,self,always,0,,,,,,,
+2783,C5_L_EREMES@AL_TELEPORT,attack,26,1,1000,1000,10000,no,self,always,0,,,,,,,
+2783,C5_L_EREMES@AL_HEAL,idle,28,9,10000,1000,10000,yes,self,always,0,,,,,,,
+2783,C5_L_EREMES@AL_HEAL,chase,28,9,10000,1000,10000,yes,self,always,0,,,,,,,
+2783,C5_L_EREMES@AL_HEAL,attack,28,9,10000,1000,10000,yes,self,always,0,,,,,,,
 2784,Swift Kobold Archer@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2784,Swift Kobold Archer@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2784,Swift Kobold Archer@AC_DOUBLE,attack,46,3,500,1000,5000,no,target,always,,,,,,,6,

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 51 - 125
db/re/skill_db.yml


+ 1 - 1
db/skill_db.yml

@@ -55,7 +55,7 @@
 #   NoNearNPC:                Determines if the skill can be used near a NPC. (Optional)
 #     AdditionalRange         Number of cells from an NPC where the skill can be cast. (Optional)
 #     Type:                   Type of NPC.
-#   CastCancel                Cancel cast when hit. (Default: true)
+#   CastCancel                Cancel cast when hit. (Default: false)
 #   CastDefenseReduction      Defense reduction rate during skill cast. (Default: 0)
 #   CastTime:                 Time to cast the skill in milliseconds. (Default: 0)
 #     - Level                 Skill level.

+ 6 - 0
doc/item_db.txt

@@ -155,6 +155,9 @@ Baby        - Baby classes (no Third-Baby classes).
 Third       - Third classes (no Transcedent-Third or Third-Baby classes).
 Third_Upper - Transcedent-Third classes.
 Third_Baby  - Third-Baby classes.
+All_Upper   - All Transcedent classes
+All_Baby    - All baby classes
+All_Third   - Applies to all Third classes.
 
 ---------------------------------------
 
@@ -190,6 +193,9 @@ Shadow_Shoes           - Shadow Shoes
 Shadow_Right_Accessory - Shadow Accessory Right (Earring)
 Shadow_Left_Accessory  - Shadow Accessory Left (Pendant)
 
+Both_Hand              - Right_Hand + Left_Hand
+Both_Accessory         - Right_Accessory + Left_Accessory
+
 ---------------------------------------
 
 WeaponLevel: Weapon level. Used for refinement.

+ 0 - 0
branding/logo.png → doc/logo.png


+ 33 - 4
doc/script_commands.txt

@@ -3,7 +3,7 @@
 //===== By:==================================================
 //= rAthena Dev Team
 //===== Last Updated:========================================
-//= 20180831
+//= 20201115
 //===== Description:=========================================
 //= A reference manual for the rAthena scripting language.
 //= Commands are sorted depending on their functionality.
@@ -1125,6 +1125,24 @@ Similarly, you can create links to websites that launch in a new window:
 
 	<URL>Display Name<INFO>http://www.example.com/</INFO></URL>";
 
+Quests
+------
+You can link to a quest:
+
+	<QUEST>Quest<INFO>1</INFO></QUEST>
+
+Message
+-------
+You can show a message from the msgstringtable:
+
+	<MSG>1</MSG>
+
+Tips
+----
+You can show a tip box:
+
+	<TIPBOX>Show Tip<INFO>1</INFO></TIPBOX>
+
 ---------------------------------------
 
 *next;
@@ -3944,8 +3962,8 @@ more:
 Checks if a renewal feature is enabled or not in renewal.hpp, and returns 1 if
 enabled and 0 for disabled.
 
-The renewal feature to check is determined by type.
- 0 - RENEWAL (game renewal server mode)
+The renewal feature to check is determined by the number <type>.
+ 0 - RENEWAL enabled (game renewal server mode)
  1 - RENEWAL_CAST (renewal cast time)
  2 - RENEWAL_DROP (renewal drop rate algorithms)
  3 - RENEWAL_EXP (renewal exp rate algorithms)
@@ -7534,7 +7552,7 @@ Example:
 
 *debugmes "<message>";
 
-This command will send the message to the server console (map-server window). It
+This command will send a debug message to the server console (map-server window). It
 will not be displayed anywhere else.
 
     // Displays "NAME has clicked me!" in the map-server window.
@@ -7542,6 +7560,16 @@ will not be displayed anywhere else.
 
 ---------------------------------------
 
+*errormes "<message>";
+
+This command will send an error message to the server console (map-server window). It
+will not be displayed anywhere else.
+
+    // Displays "NAME has clicked me!" in the map-server window.
+    errormes strcharinfo(0) + " has clicked me!";
+
+---------------------------------------
+
 *logmes "<message>";
 
 This command will write the message given to the map server NPC log file, as
@@ -8309,6 +8337,7 @@ Parameter (indexes) for NPCs are:
 		- *_ADELAY: see doc/mob_db.txt
 		- *_DMOTION: see doc/mob_db.txt
 		- *_BODY2: enable (1) the alternate display, or disable (0)
+		- *_TARGETID: when set to 0 the unit will release the target and stop attacking
 
 		- UMOB_AI: none (0); attack (1); marine sphere (2); flora (3); zanzou (4); legion (5); faw (6)
 		- UMOB_SCOPTION: see the 'Variables' section at the top of this document

+ 1 - 1
doc/skill_db.txt

@@ -442,7 +442,7 @@ Sequence Map Form
 
 ---------------------------------------
 
-FixedCastTime: Time that is fixed during cast of the skill in milliseconds.
+FixedCastTime: Time that is fixed during cast of the skill in milliseconds. A value of -1 will use 20% of CastTime as FixedCastTime. See battle_config::default_fixed_castrate to adjust the rate.
 
 Can be defined in scalar form or sequence map form:
 Scalar Form

+ 11 - 0
doc/yaml/db/item_randomopt_db.yml

@@ -0,0 +1,11 @@
+###########################################################################
+# Item Random Option Database
+###########################################################################
+#
+# Item Random Option Settings
+#
+###########################################################################
+# - Id          Item Random Option ID matching the ID defined in enumvar.lub in the client.
+#   Option      Item Random Option constant.
+#   Script      Bonus script used for option.
+###########################################################################

+ 25 - 0
doc/yaml/db/item_randomopt_group.yml

@@ -0,0 +1,25 @@
+###########################################################################
+# Item Random Option Group Database
+###########################################################################
+#
+# Item Random Option Group Settings
+#
+###########################################################################
+# - Id                  Item Random Option Group ID.
+#   Group               Item Random Option Group constant.
+#   Slots:              Slot in which an Item Random Option is guaranteed to be applied. Max of MAX_ITEM_RDM_OPT.
+#     - Slot            Slot number.
+#       Options:        List of possible Item Random Options for slot.
+#         - Option      Item Random Option constant.
+#           MinValue    Minimum value. (Default: 0)
+#           MaxValue    Maximum value. (Default: 0)
+#           Param       Parameter value. (Default: 0)
+#           Chance      Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+#   MaxRandom           Maximum amount of random options applied. These options are not guaranteed to be applied. Max of (MAX_ITEM_RDM_OPT - Total 'Slots'). (Default: 0)
+#   Random:             List of possible Item Random Options for remaining slots. (Optional)
+#     - Option          Item Random Option constant.
+#       MinValue        Minimum value. (Default: 0)
+#       MaxValue        Maximum value. (Default: 0)
+#       Param           Parameter value. (Default: 0)
+#       Chance          Chance applied specifically to this Item Random Option (1 = 0.01%, 10000 = 100%). (Default: 0)
+###########################################################################

+ 12 - 0
doc/yaml/db/level_penalty.yml

@@ -0,0 +1,12 @@
+###########################################################################
+# Level Penalty Database
+###########################################################################
+#
+# Level Penalty Settings
+#
+###########################################################################
+# - Type:             Type of Penalty (Exp, Drop, Mvp_Exp, Mvp_Drop)
+#   LevelDifferences: List of level difference between player and monster
+#     - Difference:   Level difference between player and monster
+#       Rate:         Rate applied to original exp or drop rate (0-10000)
+###########################################################################

+ 1 - 1
doc/yaml/db/skill_db.yml

@@ -38,7 +38,7 @@
 #   NoNearNPC:                Determines if the skill can be used near a NPC. (Optional)
 #     AdditionalRange         Number of cells from an NPC where the skill can be cast. (Optional)
 #     Type:                   Type of NPC.
-#   CastCancel                Cancel cast when hit. (Default: true)
+#   CastCancel                Cancel cast when hit. (Default: false)
 #   CastDefenseReduction      Defense reduction rate during skill cast. (Default: 0)
 #   CastTime:                 Time to cast the skill in milliseconds. (Default: 0)
 #     - Level                 Skill level.

+ 15 - 12
npc/custom/woe_controller.txt

@@ -130,18 +130,21 @@ OnInit:
 		Castle("schg_cas03", "Manager#schg_cas03::OnAgitEnd2", "Steward#sc03::OnStartArena", "sch_gld",97,196);
 		Castle("schg_cas04", "Manager#schg_cas04::OnAgitEnd2", "Steward#sc04::OnStartArena", "sch_gld",137,90);
 		Castle("schg_cas05", "Manager#schg_cas05::OnAgitEnd2", "Steward#sc05::OnStartArena", "sch_gld",71,315);
-	Region("Prontera (TE)");
-		Castle("te_prtcas01", "Manager_TE#Gaebolg::OnAgitEnd3",	"Manager_TE#Gaebolg::OnAgitBreak",	"te_prt_gld",134,65);
-		Castle("te_prtcas02", "Manager_TE#Richard::OnAgitEnd3",	"Manager_TE#Richard::OnAgitBreak",	"te_prt_gld",240,128);
-		Castle("te_prtcas03", "Manager_TE#Wigner::OnAgitEnd3",	"Manager_TE#Wigner::OnAgitBreak",	"te_prt_gld",153,137);
-		Castle("te_prtcas04", "Manager_TE#Heine::OnAgitEnd3",	"Manager_TE#Heine::OnAgitBreak",	"te_prt_gld",111,240);
-		Castle("te_prtcas05", "Manager_TE#Nerious::OnAgitEnd3",	"Manager_TE#Nerious::OnAgitBreak",	"te_prt_gld",208,240);
-	Region("Aldebaran (TE)");
-		Castle("te_aldecas1", "Manager_TE#Glaris::OnAgitEnd3",	"Manager_TE#Glaris::OnAgitBreak",	"te_alde_gld",48,83);
-		Castle("te_aldecas2", "Manager_TE#Defolty::OnAgitEnd3",	"Manager_TE#Defolty::OnAgitBreak",	"te_alde_gld",95,249);
-		Castle("te_aldecas3", "Manager_TE#Sorin::OnAgitEnd3",	"Manager_TE#Sorin::OnAgitBreak",	"te_alde_gld",142,85);
-		Castle("te_aldecas4", "Manager_TE#Bennit::OnAgitEnd3",	"Manager_TE#Bennit::OnAgitBreak",	"te_alde_gld",239,242);
-		Castle("te_aldecas5", "Manager_TE#W::OnAgitEnd3",		"Manager_TE#W::OnAgitBreak",		"te_alde_gld",264,90);
+
+	if (checkre(0)) {
+		Region("Prontera (TE)");
+			Castle("te_prtcas01", "Manager_TE#Gaebolg::OnAgitEnd3",	"Manager_TE#Gaebolg::OnAgitBreak",	"te_prt_gld",134,65);
+			Castle("te_prtcas02", "Manager_TE#Richard::OnAgitEnd3",	"Manager_TE#Richard::OnAgitBreak",	"te_prt_gld",240,128);
+			Castle("te_prtcas03", "Manager_TE#Wigner::OnAgitEnd3",	"Manager_TE#Wigner::OnAgitBreak",	"te_prt_gld",153,137);
+			Castle("te_prtcas04", "Manager_TE#Heine::OnAgitEnd3",	"Manager_TE#Heine::OnAgitBreak",	"te_prt_gld",111,240);
+			Castle("te_prtcas05", "Manager_TE#Nerious::OnAgitEnd3",	"Manager_TE#Nerious::OnAgitBreak",	"te_prt_gld",208,240);
+		Region("Aldebaran (TE)");
+			Castle("te_aldecas1", "Manager_TE#Glaris::OnAgitEnd3",	"Manager_TE#Glaris::OnAgitBreak",	"te_alde_gld",48,83);
+			Castle("te_aldecas2", "Manager_TE#Defolty::OnAgitEnd3",	"Manager_TE#Defolty::OnAgitBreak",	"te_alde_gld",95,249);
+			Castle("te_aldecas3", "Manager_TE#Sorin::OnAgitEnd3",	"Manager_TE#Sorin::OnAgitBreak",	"te_alde_gld",142,85);
+			Castle("te_aldecas4", "Manager_TE#Bennit::OnAgitEnd3",	"Manager_TE#Bennit::OnAgitBreak",	"te_alde_gld",239,242);
+			Castle("te_aldecas5", "Manager_TE#W::OnAgitEnd3",		"Manager_TE#W::OnAgitBreak",		"te_alde_gld",264,90);
+	}
 
 	setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
 

+ 2 - 2
npc/jobs/2-1/hunter.txt

@@ -476,7 +476,7 @@ hu_in01,382,382,4	script	Guild Receptionist#hnt	732,{
 		mes "[Demon Hunter]";
 		mes "You see, we're having some financial problems. Let's see, we're short on these items...";
 		next;
-		if (checkre(RENEWAL) == true)
+		if (checkre(0) == true)
 			.@i = 1;
 		switch( rand(1,7) ) {
 		case 1:
@@ -532,7 +532,7 @@ hu_in01,382,382,4	script	Guild Receptionist#hnt	732,{
 		close;
 	}
 	else if (HNTR_Q >= 3 && HNTR_Q <= 9) {
-		if (checkre(RENEWAL) == true)
+		if (checkre(0) == true)
 			.@i = 1;
 		switch(HNTR_Q) {
 		case 3:

+ 2 - 2
npc/kafras/functions_kafras.txt

@@ -315,7 +315,7 @@ function	script	F_KafTele	{
 	else if (@wrpD$[.@j] == "Comodo Pharos Beacon") warp "cmd_fild07", 127, 134;
 	else if (@wrpD$[.@j] == "Geffen") warp "geffen", 120, 39;
 	else if (@wrpD$[.@j] == "Izlude") {
-		if (checkre(RENEWAL) == true)
+		if (checkre(0) == true)
 			warp "izlude", 128, 98;
 		else
 			warp "izlude", 91, 105;
@@ -340,7 +340,7 @@ function	script	F_KafCart	{
 		mes "[Kafra Employee]";
 		mes "I'm sorry, but the";
 		mes "Pushcart rental service";
-		if (checkre(RENEWAL) == true)
+		if (checkre(0) == true)
 			mes "is only available to Merchant classes.";
 		else {
 			mes "is only available to Merchants,";

+ 2 - 2
npc/re/mobs/championmobs.txt

@@ -195,8 +195,8 @@ lou_dun01,0,0	monster	Elusive Jing Guai	2778,2,300000
 mosk_dun02,0,0	monster	Swift Les	2779,1,300000
 gld_dun01,0,0	monster	Solid Leib Olmai	2780,2,300000
 ayo_dun01,0,0	monster	Leaf Cat Ringleader	2781,2,300000
-//teg_dun02,0,0	monster	[PH] 분노의 로그 휘케바인	2782,2,300000,0
-//teg_dun01,0,0	monster	[PH] 떠도는 어세신 에르메스	2783,2,300000,0
+teg_dun02,0,0	monster	Furious Wickebine Tres	2782,2,300000,0
+teg_dun01,0,0	monster	Elusive Eremes	2783,2,300000,0
 ra_fild06,0,0	monster	Swift Kobold Archer	2784,3,300000
 ra_fild05,0,0	monster	Solid Kobold	2785,3,300000
 thor_v02,0,0	monster	Knocker Ringleader	2786,1,300000

+ 9 - 0
npc/test/ci/5573.txt

@@ -0,0 +1,9 @@
+-	script	Issue5573	-1,{
+OnInit:
+	.i = 0;
+	.@i = min( .i, 200 );
+	
+	if( .@i == 200 ){
+		errormes "Issue 5573 is happening again.";
+	}
+}

+ 8 - 0
sql-files/README.md

@@ -64,3 +64,11 @@ The `tools` folder contains some simple adjustments if needed for an administrat
 * convert_engine_innodb.sql - Converts the SQL table engine setting to InnoDB.
 * convert_engine_myiasm.sql - Converts the SQL table engine setting to MyISAM.
 * convert_passwords.sql - Converts the login table's password value to MD5.
+
+Useful tools for converting custom SQL items to TXT and then YAML. Please adjust the `INTO OUTFILE` in the query to a desired location.
+To run these queries the user requires the [FILE](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_file) permission. It's also required to either [set or disable](https://computingforgeeks.com/how-to-solve-mysql-server-is-running-with-the-secure-file-priv-error/) the `secure-file-priv`. 
+
+* item_db_re_to_txt.sql - Dumps the __renewal__ item data table to TXT format.
+* 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.

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 535 - 102
sql-files/item_db_re_equip.sql


+ 618 - 44
sql-files/item_db_re_etc.sql

@@ -1143,6 +1143,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`,`script`) VALUES (4871,'SP75','SP+75','Card',20,10,'bonus bMaxSP,75;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (4872,'Attack_Delay_2','DelayafterAttack2Lv','Card',10,'bonus bAspdRate,6;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (4873,'Attack_Delay_3','DelayafterAttack3Lv','Card',10,'bonus bAspdRate,8;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (4874,'Beryl_of_Spring','Beryl Spring','Card');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (4875,'Bear\'s_Power','Bear\'s Power','Card','autobonus2 "{ bonus bStr,200; bonus2 bHPLossRate,500,1000; }",20,5000,BF_WEAPON,"{ active_transform 1060,5000; specialeffect2 EF_POTION_BERSERK; showscript \\"Bigfoot Power !\\"; }";');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (4876,'Runaway_Magic','Runaway Magic','Card','autobonus "{ bonus bInt,200; bonus2 bSPLossRate,200,1000; }",15,10000,BF_MAGIC,"{ specialeffect2 EF_LAMADAN; }";');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (4877,'Speed_Of_Light','Speed of Light','Card','autobonus "{ bonus bAspdRate,100; bonus bFlee,100; bonus2 bHPLossRate,400,1000; bonus2 bSPLossRate,40,1000;}",10,5000,BF_WEAPON,"{ specialeffect2 EF_FLASHER; }";');
@@ -1873,8 +1874,6 @@ 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`) VALUES (6643,'MATKStone_Middle','MATK Stone (Middle)','Etc',10,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (6644,'HITStone_Bottom','HIT Stone (Lower)','Etc',10,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (6645,'FLEEStone_Bottom','FLEE Stone (Lower)','Etc',10,100);
-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`,`weight`) VALUES (6697,'Costumes_Exchange_Coupons','Costumes Exchange Coupons','Etc',10,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (6646,'Poring_Badge','Poring Badge','Etc');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (6648,'Shabby_Crown','Old Crown','Etc',10,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (6649,'Broken_Horn','Broken Horn','Etc',10,10);
@@ -1888,6 +1887,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_overri
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6657,'Memory_Of_Jack','Memory Of Jack','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (6658,'Halloween_Coin','Halloween Coin','Etc');
 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`,`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);
@@ -1908,6 +1908,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`,`flag_buyingstore`) VALUES (6694,'Monster_Blood','Monster Blood','Etc',10,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`) VALUES (6695,'ToothOfFlameGolem','Golem\'s Fiery Stone Tooth','Etc',10,100,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`) VALUES (6696,'ToothOfFlameFrilldora','Frilldora\'s Fiery Nape','Etc',10,10,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (6697,'Costumes_Exchange_Coupons','Costumes Exchange Coupons','Etc',10,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6698,'Wooden_Axe','Wooden Axe','Etc',10,1000,100,true,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_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6699,'Faith_Silence','Faith Silence','Etc',10,true,100,true,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_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (6700,'White_Snake_Scale','White Snake Scale','Etc',10,true,100,true,true,true,true,true,true,true);
@@ -3291,24 +3292,24 @@ 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`) VALUES (22814,'Cat_Hand_Ticket','Cat Hand Ticket','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (22870,'Xmas_Package_14','Christmas Package','Etc',10,100,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_head_top`,`location_head_mid`,`location_head_low`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22875,'Sealed_Beelzebub_Card','Sealed Beelzebub Card','Card',20,10,true,true,true,100,true,true,true,true,true,true,'bonus bVariableCastrate,-15; /*Item removed on 2014-12-17*/');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25000,'SPdrainStone_Top','SP Absorption Stone (Upper)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25001,'DEFStone_Middle','Def Stone(Middle)','Card',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25002,'ChangeLUK_Middle','LUK Exchange Stone(Middle)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25003,'ChangeSTR_Middle','STR Exchange Stone(Middle)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25004,'ChangeAGI_Middle','AGI Exchange Stone(Middle)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25005,'ChangeINT_Middle','INT Exchange Stone(Middle)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25006,'ChangeVIT_Middle','VIT Exchange Stone(Middle)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25007,'ChangeDEX_Middle','DEX Exchange Stone(Middle)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25008,'ChangeVIT_Bottom','VIT Exchange Stone(Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25009,'ChangeAGI_Bottom','AGI Exchange Stone(Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25010,'ChangeDEX_Bottom','DEX Exchange Stone(Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25011,'ChangeLUK_Bottom','LUK Exchange Stone(Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25012,'ChangeSTR_Bottom','STR Exchange Stone(Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25013,'ChangeINT_Bottom','INT Exchange Stone(Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25014,'MDEFStone_Bottom','Mdef Stone(Lower)','Card',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25015,'EXPStone_Bottom','EXP Stone(Lower)','Card',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25016,'ATKStone_Bottom','ATK Stone (Lower)','Etc',10,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25017,'MATKStone_Bottom','MATK Stone (Lower)','Etc',10,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25000,'SPdrainStone_Top','SP Absorption Stone(Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25001,'DEFStone_Middle','Def Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25002,'ChangeLUK_Middle','LUK Exchange Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25003,'ChangeSTR_Middle','STR Exchange Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25004,'ChangeAGI_Middle','AGI Exchange Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25005,'ChangeINT_Middle','INT Exchange Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25006,'ChangeVIT_Middle','VIT Exchange Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25007,'ChangeDEX_Middle','DEX Exchange Stone(Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25008,'ChangeVIT_Bottom','VIT Exchange Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25009,'ChangeAGI_Bottom','AGI Exchange Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25010,'ChangeDEX_Bottom','DEX Exchange Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25011,'ChangeLUK_Bottom','LUK Exchange Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25012,'ChangeSTR_Bottom','STR Exchange Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25013,'ChangeINT_Bottom','INT Exchange Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25014,'MDEFStone_Bottom','Mdef Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25015,'EXPStone_Bottom','EXP Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25016,'ATKStone_Bottom','ATK Stone(Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25017,'MATKStone_Bottom','MATK Stone(Lower)','Etc',100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25043,'Thorny_Vine_Flute','Thorny Vine Flute','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25044,'Hard_Thorny_Vine','Hard Thorny Vine','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25045,'Luxurious_Cloth','Luxurious Cloth','Etc',100,true,true,true,true,true,true,true);
@@ -3339,9 +3340,9 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (2513
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25132,'Pumpkin_Deco','Pumpkin Deco','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25133,'Dried_White_Stem','Dried White Stem','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25136,'ElectricEffect_Middle','Electric Effect (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25137,'GreenFloor_Bottom','Green Floor Effect (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25137,'GreenFloor_Bottom','Green Floor (Bottom)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25138,'ShrinkEffect_Middle','Shrink Effect (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25139,'Identify_Stone','Identify Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25139,'Identify_Stone','Identify Stone (Bottom)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25141,'EXPStone_Middle','Experience Stone (Middle)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (25142,'Doram_Token','Doram Token','Etc');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25143,'Gift_Stuffed_Doll','Gift Stuffed Doll','Etc',100,true,true,true,true,true,true,true);
@@ -3373,7 +3374,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`) VALUES (25171,'EXPStone_Top','Experience Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25172,'CastingStone_Top','Variable Casting Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25173,'CastingStone_Middle','Variable Casting Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25174,'CastingStone_Bottom','Variable Casting Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25174,'CastingStone_Bottom','Variable Casting Stone (Bottom)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25175,'LexAeternaStone_Middle','Lex Aeterna Stone (Middle)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25176,'BlueAuraEffect_Middle','Blue Aura Effect (Middle)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25177,'ShadowEffect_Middle','Shadow Effect (Middle)','Etc',20,100);
@@ -3386,15 +3387,19 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_overri
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25184,'Portable_Sewingbox','Portable Sewingbox','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25185,'Locket_Pendant','Locket Pendant','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25187,'Slug_Bullet','Slug Bullet','Etc',1200,1200);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25205,'ShrinkEffect_Bottom','Shrink Effect (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25205,'ShrinkEffect_Bottom','Shrink Effect (Bottom)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25206,'ElectricEffect_Top','Electric Effect (Upper)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25207,'SPAbsorb_Stone_Top','SPAbsorb Stone (Upper)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25208,'SPAbsorb_Stone_Robe','SPAbsorb Stone (Garment)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25209,'HPAbsorb_Stone_Robe','HPAbsorb Stone (Garment)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25210,'HPAbsorb_Stone_Top','HPAbsorb Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25223,'Para_Team_Coin','Eden Group Coin','Etc',100,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25224,'WhiteBodyEffect_Middle','White Body Effect (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25225,'ExplodingEffect_Middle','Crimson Wave Effect (Middle)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25225,'ExplodingEffect_Middle','Exploding Effect (Middle)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25226,'WaterFieldEffect_Bottom','Water Field Effect (Lower)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25227,'Heal_Stone','Heal Stone (Lower)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25228,'Teleport_Stone','Teleport Stone (Lower)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25229,'Steal_Stone','Steal Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25227,'Heal_Stone','Heal Stone (Bottom)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25228,'Teleport_Stone','Teleport Stone (Bottom)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25229,'Steal_Stone','Steal Stone (Bottom)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25231,'Suspicious_Bottle','Suspicious Bottle','Etc',1000,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25232,'Cheap_Lubricant','Cheap Lubricant','Etc',1000,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25233,'Cotton_Tufts','Cotton Tufts','Etc',1000,10);
@@ -3408,7 +3413,15 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (2525
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25256,'Hazy_Dream_Fragment','Hazy Dream Fragment','Etc',10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`) VALUES (25257,'Bloody_Love_Letter','Bloody Love Letter','Etc',780,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`) VALUES (25258,'Broken_Arrow','Broken Arrow','Etc',550,10,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25259,'Recruitment_Leaflet','Recruitment Leaflet','Etc',778,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25260,'Fragment_of_Purple_Ore','Fragment of Purple Ore','Etc',100,true,true,true,true,true,true,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25261,'Torn_Paper_','Torn Paper','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25262,'Well-dried_Clover','Well-dried Clover','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25263,'Short_Bat_Hair','Short Bat Hair','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25264,'Cluster_of_Nightmares','Cluster of Nightmares','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25265,'Shining_Spore','Shining Spore','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25266,'Dried_Leaf_Of_Ygg','Dried Yggdrasil Leaf','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25267,'Suspicious_Pentacle','Suspicious Pentacle','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`flag_buyingstore`) VALUES (25271,'Illusion_Stone','Illusion Stone','Etc',10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25272,'Illusion_Gemstone','Illusion Gemstone','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25276,'Clean_Bone','Clean Bone','Etc',348,10);
@@ -3422,50 +3435,60 @@ 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`) VALUES (25284,'Swamp_Bug_Shell','Swamp Bug Shell','Etc',230,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25285,'Brown_Rat_Tail','Brown Rat Tail','Etc',210,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (25290,'Sweets_Festival_Coin','Sweets Festival Coin','Etc');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25297,'Frozen_Stone_Fragment','Frozen Stone Fragment','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25298,'Spirit_Jewel','Spirit Jewel','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25299,'Snowball','Snowball','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25300,'Ktullanux_Eye','Ktullanux Eye','Etc',1);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25302,'DoubleAttack_Stone','Double Attack Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25303,'Critical_Stone_Robe','Critical Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25304,'Critical_Stone_Top','Critical Stone (Upper)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25305,'Critical_Stone_Bottom','Critical Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25305,'Critical_Stone_Bottom','Critical Stone (Bottom)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25306,'CastStone_Robe','Variable Casting Stone (Garment)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25311,'Piece_of_Black_Horn','Piece of Black Horn','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25312,'Fine_Old_Doll','Fine Old Doll','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25313,'Old_Shell','Old Shell','Etc',1);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (25375,'Powerful_Soul_Essence','Powerful Soul Essence','Etc');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25377,'Luxurious_Pet_Food','Luxurious Pet Food','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25409,'SuraStone_Top','Champion Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25410,'SuraStone_Middle','Champion Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25411,'SuraStone_Lower','Champion Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25411,'SuraStone_Bottom','Champion Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25412,'SuraStone_Robe','Sura Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25413,'RangerStone_Top','Sniper Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25414,'RangerStone_Middle','Sniper Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25415,'RangerStone_Lower','Sniper Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25415,'RangerStone_Bottom','Sniper Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25416,'RangerStone_Robe','Ranger Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25417,'SorcererStone_Top','Scholar Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25418,'SorcererStone_Middle','Scholar Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25419,'SorcererStone_Lower','Scholar Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25419,'SorcererStone_Bottom','Scholar Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25420,'SorcererStone_Robe','Sorcerer Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25445,'RuneknightStone_Top','Lord Knight Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25446,'RuneknightStone_Middle','Lord Knight Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25447,'RuneknightStone_Lower','Lord Knight Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25447,'RuneknightStone_Bottom','Lord Knight Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25448,'RuneknightStone_Robe','Rune Knight Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25449,'GeneticStone_Robe','Genetic Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25450,'GeneticStone_Top','Creator Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25451,'GeneticStone_Middle','Creator Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25452,'GeneticStone_Lower','Creator Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25452,'GeneticStone_Bottom','Creator Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25453,'WarlockStone_Top','High Wizard Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25454,'WarlockStone_Middle','High Wizard Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25455,'WarlockStone_Lower','High Wizard Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25455,'WarlockStone_Bottom','High Wizard Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25456,'WarlockStone_Robe','Warlock Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (25464,'World_Moving_Rights','World Moving Rights','Etc',20,100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25490,'ShadowchaserStone_Top','Stalker Stone (Upper)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25491,'ShadowchaserStone_Middle','Stalker Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25492,'ShadowchaserStone_Lower','Stalker Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25491,'ShadowchaseStone_Middle','Stalker Stone (Middle)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25492,'ShadowchaseStone_Bottom','Stalker Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25493,'ShadowchaserStone_Robe','Shadow Chaser Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25494,'MechanicStone_Top','Mastersmith Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25495,'MechanicStone_Middle','Mastersmith Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25496,'MechanicStone_Lower','Mastersmith Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25496,'MechanicStone_Bottom','Mastersmith Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25497,'MechanicStone_Robe','Mechanic Stone (Garment)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25498,'WanderMinstrelStone_Top','Clown Gypsy Stone (Upper)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25499,'WanderMinstrelStone_Middle','Clown Gypsy Stone (Middle)','Etc',20,100);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25500,'WanderMinstrelStone_Lower','Clown Gypsy Stone (Lower)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25500,'WanderMinstrelStone_Bottom','Clown Gypsy Stone (Lower)','Etc',20,100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (25501,'WanderMinstrelStone_Robe','Wanderer Minstrel Stone (Garment)','Etc',20,100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25508,'Token_of_OrcGeneral','Orc Warlord Token','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25622,'White_Snake_Tear','White Snake\'s Tear','Etc',1);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25629,'Konts_Letter','Knotted Letter','Etc',1);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (25670,'M_M_Defense','Modification Module (Defense)','Card',20,10,'.@r = getrefine(); .@def = 25; if (.@r >= 9) { .@def += 20; } else if (.@r >= 7) { .@def += 10; } bonus bDef,.@def;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (25671,'M_M_Magic_Defense','Modification Module (Magic Defense)','Card',20,10,'.@r = getrefine(); .@mdef = 2; if (.@r >= 9) { .@mdef += 6; } else if (.@r >= 7) { .@mdef += 3; } bonus bMDef,.@mdef;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (25672,'M_M_Vit','Modification Module (Vit)','Card',20,10,'bonus bVit,3;');
@@ -3502,6 +3525,20 @@ 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`,`script`) VALUES (25703,'M_M_Overpower','Modification Module (Overpower)','Card',20,10,'autobonus "{ bonus bStr,50; bonus2 bAddClass,Class_All,15; bonus bMatkRate,-15; }",20,10000,BF_WEAPON; /* unknown rate */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (25704,'M_M_Fatal_Flash','Modification Module (Fatal Flash)','Card',20,10,'autobonus "{ bonus bStr,50; bonus bCritAtkRate,10; bonus2 bHPLossRate,300,1000; }",20,10000,BF_WEAPON; /* unknown rate */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (25705,'M_M_Lucky_Strike','Modification Module (Lucky Strike)','Card',20,10,'autobonus "{ bonus bLuk,50; bonus2 bMagicAtkEle,Ele_All,10; bonus2 bHPLossRate,300,1000; }",20,10000,BF_MAGIC; /* unknown rate */');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25706,'HighpriestStone_Top','High Priest Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25707,'HighpriestStone_Middle','High Priest Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25708,'HighpriestStone_Bottom','High Priest Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25709,'ArchbishopStone_Robe','Archbishop Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25710,'PaladinStone_Top','Paladin Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25711,'PaladinStone_Middle','Paladin Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25712,'PaladinStone_Bottom','Paladin Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25713,'RoyalguardStone_Robe','Royal Guard Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25714,'AssacrossStone_Top','Assassin Cross Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25715,'AssacrossStone_Middle','Assassin Cross Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25716,'AssacrossStone_Bottom','Assassin Cross Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25717,'GuillcrossStone_Robe','Assassin Cross Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25729,'Shadowdecon','Shadowdecon','Etc',20);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25731,'Zelunium','Zelunium','Etc',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25759,'aegis_25759','Green Dragon Orb','Etc',10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25760,'aegis_25760','Blue Dragon Orb','Etc',10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25761,'aegis_25761','Red Dragon Orb','Etc',10,true);
@@ -3515,6 +3552,18 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25769,'aegis_25769','Valkyrie Reginleif\'s Armor Fragment','Etc',30);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25770,'aegis_25770','Valkyrie Reginleif\'s Armor','Etc',100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25771,'aegis_25771','Valkyrie Ingrid\'s Armor','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25797,'SuraStone_Robe2','Sura Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25798,'SuraStone_Bottom2','Sura Stone II (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25799,'SuraStone_Middle2','Sura Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25800,'SuraStone_Top2','Sura Stone II (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25801,'SorcererStone_Robe2','Sorcerer Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25802,'SorcererStone_Bottom2','Sorcerer Stone II (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25803,'SorcererStone_Middle2','Sorcerer Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25804,'SorcererStone_Top2','Sorcerer Stone II (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25805,'ShadowchaserStone_Robe2','Shadow Chaser Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25806,'ShadowchasStone_Bottom2','Shadow Chaser Stone II (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25807,'ShadowchasStone_Middle2','Shadow Chaser Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25808,'ShadowchaserStone_Top2','Shadow Chaser Stone II (Upper)','Etc',100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_buyingstore`) VALUES (25809,'aegis_25809','Redium','Etc',true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_buyingstore`) VALUES (25810,'aegis_25810','Rindium','Etc',true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_buyingstore`) VALUES (25811,'aegis_25811','Odium','Etc',true);
@@ -3524,6 +3573,27 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`fla
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (25815,'Ein_SOLIDDUST','Hardened Dust','Etc');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25816,'Ein_RUSTHELM','Broken Trap','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25817,'aegis_25817','Bizarre Stone Carvings','Etc',50);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25842,'SoulReaperStone_Robe','Soul Reaper Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25843,'SoulLinkerStone_Top','Soul Linker Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25844,'SoulLinkerStone_Middle','Soul Linker Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25845,'SoulLinkerStone_Bottom','Soul Linker Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25846,'StarGladiatorStone_Top','Star Gladiator Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25847,'StarGladiatorStone_Middle','Star Gladiator Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25848,'StarGladiatorStone_Bottom','Star Gladiator Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25849,'StarEmperorStone_Garment','Star Emperor Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25850,'NinjaStone_Top','Ninja Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25851,'NinjaStone_Middle','Ninja Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25852,'NinjaStone_Bottom','Ninja Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25853,'KagerouStone_Robe','Kagerou Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25854,'OboroStone_Robe','Oboro Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25855,'GunslingerStone_Top','Gunslinger Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25856,'GunslingerStone_Middle','Gunslinger Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25857,'GunslingerStone_Bottom','Gunslinger Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25858,'GunslingerStone_Robe','Gunslinger Stone (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25859,'DoramStone_Top','Doram Stone (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25860,'DoramStone_Middle','Doram Stone (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25861,'DoramStone_Bottom','Doram Stone (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (25862,'DoramStone_Robe','Doram Stone (Garment)','Etc',100);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25864,'aegis_25864','Sealed Temporal Circlet','Etc',100,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25865,'aegis_25865','Temperal Gemstone','Etc',10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_buyingstore`) VALUES (25866,'aegis_25866','Temporal Spell','Etc',10,true);
@@ -3623,6 +3693,25 @@ 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`,`location_right_hand`,`script`) VALUES (27197,'Agnes_Lugenburg_Card','Agnes Lugenburg Card','Card',20,10,true,'bonus2 bAddSize,Size_Small,15;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_right_hand`,`script`) VALUES (27198,'Jurgen_Wigner_Card','Jurgen Wigner Card','Card',20,10,true,'bonus2 bAddRace,RC_Brute,15; bonus2 bAddRace,RC_Player_Doram,15;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_right_hand`,`script`) VALUES (27199,'Spica_Nerius_Card','Spica Nerius Card','Card',20,10,true,'bonus2 bMagicAddRace,RC_Brute,15; bonus2 bMagicAddRace,RC_Player_Doram,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`) VALUES (27200,'aegis_27200','Nihil Card','Card',10,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`) VALUES (27201,'aegis_27201','Agnes Card','Card',10,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`) VALUES (27202,'aegis_27202','Juergen Card','Card',10,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`) VALUES (27203,'aegis_27203','Spica Card','Card',10,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (27209,'aegis_27209','Sealed Queen Scaraba Card','Card',10,true,'bonus2 bAddMonsterDropItem,12806,30;\nif (getrefine()>=15) {\n   bonus2 bAddRace2,RC2_SCARABA,25;\n}\nelse {\n   bonus2 bAddRace2,RC2_SCARABA,15;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (27211,'aegis_27211','Sealed Baphomet Card','Card',10,true,'bonus bSplashRange,1;\nif (getrefine()>=15) {\n   bonus bHit,-20;\n}\nelse {\n   bonus bHit,-30;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_left_hand`,`script`) VALUES (27212,'aegis_27212','Sealed Maya Card','Card',10,true,'if (getrefine()>=15) {\n   bonus bMagicDamageReturn,30;\n}\nelse {\n   bonus bMagicDamageReturn,15;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27213,'aegis_27213','Sealed Clown Card','Card',10,true,'if (getrefine()>=15) {\n   .@a = 7;\n   .@b = 15;\n}\nelse {\n   .@a = 5;\n   .@b = 10;\n}\nif (getiteminfo(getequipid(EQI_HAND_R),11) == W_MUSICAL || getiteminfo(getequipid(EQI_HAND_R),11) == W_WHIP) {\n   skill "BA_POEMBRAGI2",.@a;\n}\nbonus bFlee,(readparam(bVit)>=110) ? (.@b*2) : .@b;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27214,'aegis_27214','Sealed Professor Card','Card',10,true,'if (getrefine()<15) {\n   bonus5 bAutoSpellWhenHit,"SA_LANDPROTECTOR",1,1,BF_MAGIC,0;\n   bonus bMatkRate,(readparam(bDex)>=110) ? 6 : 3;\n}\nelse {\n   bonus5 bAutoSpellWhenHit,"SA_LANDPROTECTOR",3,1,BF_MAGIC,0;\n   bonus bMatkRate,(readparam(bDex)>=110) ? 10 : 5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27215,'aegis_27215','Sealed Champion Card','Card',10,true,'if (getrefine()<15) {\n   bonus5 bAutoSpellWhenHit,"MO_INVESTIGATE",1,1,BF_WEAPON,1;\n   bonus2 bAddClass,Class_All,(readparam(bAgi)>=110) ? 6 : 3;\n}\nelse {\n   bonus5 bAutoSpellWhenHit,"MO_INVESTIGATE",3,1,BF_WEAPON,1;\n   bonus2 bAddClass,Class_All,(readparam(bAgi)>=110) ? 10 : 5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27216,'aegis_27216','Sealed Creator Card','Card',10,true,'if (getrefine()<15) {\n   bonus5 bAutoSpellWhenHit,"AM_ACIDTERROR",1,1,BF_WEAPON,1;\n   bonus bCritical,(readparam(bStr)>=110) ? 20 : 10;\n}\nelse {\n   bonus5 bAutoSpellWhenHit,"AM_ACIDTERROR",3,1,BF_WEAPON,1;\n   bonus bCritical,(readparam(bStr)>=110) ? 30 : 20;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27217,'aegis_27217','Sealed Stalker Card','Card',10,true,'if (getrefine()<15) {\n   bonus5 bAutoSpellWhenHit,"ST_FULLSTRIP",1,1,BF_WEAPON,1;\n   bonus bHit,(readparam(bLuk)>=110) ? 20 : 10;\n}\nelse {\n   bonus bHit,(readparam(bLuk)>=110) ? 30 : 15;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27218,'aegis_27218','Sealed Paladin Card','Card',10,true,'if (getrefine()<15) {\n   bonus5 bAutoSpellWhenHit,"CR_GRANDCROSS",5,1,BF_WEAPON,0;\n   bonus bMaxHPrate,(readparam(bInt)>=110) ? 10 : 5;\n}\nelse {\n   bonus5 bAutoSpellWhenHit,"CR_GRANDCROSS",7,1,BF_WEAPON,0;\n   bonus bMaxHPrate,(readparam(bInt)>=110) ? 14 : 7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27219,'aegis_27219','Sealed Gypsy Card','Card',10,true,'if (getrefine()<15) {\n   if (getiteminfo(getequipid(EQI_HAND_R),11) == W_MUSICAL || getiteminfo(getequipid(EQI_HAND_R),11) == W_WHIP) {\n      skill "DC_FORTUNEKISS2",5;\n   }\n   bonus bFlee,(readparam(bVit)>=110) ? 20 : 10;\n}\nelse {\n   if (getiteminfo(getequipid(EQI_HAND_R),11) == W_MUSICAL || getiteminfo(getequipid(EQI_HAND_R),11) == W_WHIP) {\n      skill "DC_FORTUNEKISS2",7;\n   }\n   bonus bFlee,(readparam(bVit)>=110) ? 30 : 15;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (27220,'aegis_27220','Sealed General Daehyon Card','Card',10,true,'if (getrefine()<15) {\n   if (getiteminfo(getequipid(EQI_HAND_R),11) == W_1HSWORD || getiteminfo(getequipid(EQI_HAND_R),11) == W_2HSWORD) {\n      bonus bBaseAtk,50;\n   }\n}\nelse {\n   if (getiteminfo(getequipid(EQI_HAND_R),11) == W_1HSWORD || getiteminfo(getequipid(EQI_HAND_R),11) == W_2HSWORD) {\n      bonus bBaseAtk,75;\n   }\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_garment`,`script`) VALUES (27221,'aegis_27221','Sealed Gioia Card','Card',10,true,'if (getrefine()<15) {\n   bonus2 bMagicAtkEle,Ele_Ghost,50;\n   bonus2 bMagicAtkEle,Ele_Wind,50;\n   bonus2 bSubEle,Ele_All,-60;\n}\nelse {\n   bonus2 bMagicAtkEle,Ele_Ghost,75;\n   bonus2 bMagicAtkEle,Ele_Wind,75;\n   bonus2 bSubEle,Ele_All,-40;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (27222,'aegis_27222','Sealed Fallen Pyuriel Card','Card',10,true,'if (getrefine()<15) {\n   bonus bCritAtkRate,20;\n   bonus2 bSubRace,RC_All,-20;\n}\nelse {\n   bonus bCritAtkRate,25;\n   bonus2 bSubRace,RC_All,-15;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_garment`,`script`) VALUES (27224,'aegis_27224','Sealed Guardian Kades Card','Card',10,true,'bonus2 bSubEle,Ele_Holy,-100;\nbonus2 bSubEle,Ele_Ghost,-100;\nif (getrefine()<15) {\n   bonus2 bSubEle,Ele_Water,20;\n   bonus2 bSubEle,Ele_Earth,20;\n   bonus2 bSubEle,Ele_Fire,20;\n   bonus2 bSubEle,Ele_Wind,20;\n   bonus2 bSubEle,Ele_Dark,20;\n   bonus2 bSubEle,Ele_Undead,20;\n}\nelse {\n   bonus2 bSubEle,Ele_Water,20;\n   bonus2 bSubEle,Ele_Earth,20;\n   bonus2 bSubEle,Ele_Fire,20;\n   bonus2 bSubEle,Ele_Wind,20;\n   bonus2 bSubEle,Ele_Dark,20;\n   bonus2 bSubEle,Ele_Undead,20;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (27225,'aegis_27225','Sealed Time Holder Card','Card',10,true,'if (getrefine()<15) {\n   bonus bMatkRate,10;\n   bonus bUseSPrate,20;\n}\nelse {\n   bonus bMatkRate,15;\n   bonus bUseSPrate,15;\n}');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_shoes`,`script`) VALUES (27249,'Arhi_Card','Arhi Card','Card',20,10,true,'bonus bAtk,15; bonus bMatk,15; bonus bMaxHP,500; bonus bHit,15; bonus bFlee,15;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_shoes`,`script`) VALUES (27250,'Dio_Anemos_Card','Dio Anemos Card','Card',20,10,true,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Neutral,5; bonus2 bMagicAtkEle,Ele_Earth,5;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_shoes`,`script`) VALUES (27251,'Geffen_Gang_Member_Card','Geffen Gang Member Card','Card',20,10,true,'bonus bCritAtkRate,3; bonus bAspdRate,5;');
@@ -3679,6 +3768,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`,`location_armor`,`script`) VALUES (27326,'Morocc\'s_Minion_Card','Morocc\'s Minion Card','Card',20,10,true,'bonus bBaseAtk,100; bonus bAspdRate,25; bonus bMaxHPrate,-20;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_head_top`,`location_head_mid`,`location_head_low`,`script`) VALUES (27327,'Grim_Reaper_Ankou_Card','Grim Reaper Ankou Card','Card',20,10,true,true,true,'.@r = getrefine(); bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",3,(1+.@r); autobonus2 "{ bonus2 bAddClass,Class_All,25; bonus bMatkRate,25; }",(1+.@r),10000,BF_WEAPON|BF_MAGIC; autobonus3 "{ }",1000,5000,"NV_FIRSTAID","{ active_transform 3029,5000; }"; /* unknown rates */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_head_top`,`location_head_mid`,`location_head_low`,`script`) VALUES (27328,'Corrupt_Life_Card','Corrupt Life Card','Card',20,10,true,true,true,'bonus bMaxHP,500; bonus bMaxSP,50; bonus2 bSubRace,RC_Angel,-50;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`script`) VALUES (27329,'aegis_27329','Curse Eater King Card','Card',10,true,'bonus2 bAddEle,Ele_Fire,40;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_right_accessory`) VALUES (27330,'Kronecker_Card','Kronecker Card','Card',20,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_right_accessory`,`script`) VALUES (27331,'Kronecker_G_Heine_Card','Kronecker G. Heine Card','Card',20,10,true,'bonus bVariableCastrate,-5;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_left_accessory`) VALUES (27332,'Skia_Card','Skia Card','Card',20,10,true);
@@ -3753,7 +3843,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29032,'SPdrain1_Top','SP Absorption 1','Card','bonus2 bSPDrainRate,10,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29033,'Mdef4_Bottom','MDEF+4','Card','bonus bMdef,4;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29040,'Ghost_Effect','Ghost Effect','Card','hateffect HAT_EF_C_GHOST_EFFECT,true;','hateffect HAT_EF_C_GHOST_EFFECT,false;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29041,'Twinkle_Effect','Twinkle Effect','Card','/* todo */');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29041,'Twinkle_Effect','Twinkle Effect','Card','hateffect HAT_EF_LJOSALFAR,true;','hateffect HAT_EF_LJOSALFAR,false;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29046,'Greed','Greed','Card','skill "BS_GREED",1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29047,'Fatal0','Fatal','Card','bonus bCritAtkRate,3;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29048,'Expert_Archer0','Expert Archer','Card','bonus bLongAtkRate,3;');
@@ -3850,9 +3940,9 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29157,'Casting_Middle','Variable Cast Reduction Middle','Card','bonus bVariableCastrate,-3;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29158,'Casting_Bottom','Variable Cast Reduction Lower','Card','bonus bVariableCastrate,-3;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29159,'EXP2TOP','Experience + 2%','Card','bonus2 bExpAddRace,RC_All,2;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29160,'BlueAura_Effect','Blue Aura Effect','Card','/* todo */');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29161,'Pink_Glow_Effect','Pink Glow Effect','Card','/* todo */');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29162,'Shadow_Effect','Shadow Effect','Card','/* todo */');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29160,'BlueAura_Effect','Blue Aura Effect','Card','hateffect HAT_EF_GUMGANG,true;','hateffect HAT_EF_GUMGANG,false;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29161,'Pink_Glow_Effect','Pink Glow Effect','Card','hateffect HAT_EF_CHERRYBLOSSOM,true;','hateffect HAT_EF_CHERRYBLOSSOM,false;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29162,'Shadow_Effect','Shadow Effect','Card','hateffect HAT_EF_KAGEMUSYA,true;','hateffect HAT_EF_KAGEMUSYA,false;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29166,'A-Tolerance','A-Tolerance','Card','bonus2 bSubClass,Class_All,1; .@r = getrefine(); bonus2 bSubRace,RC_DemiHuman,.@r/3; bonus2 bSubRace,RC_Formless,.@r/3;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29167,'A-Hit','A-Hit','Card','bonus bHit,20; .@r = getrefine(); if(.@r>=7){ bonus bHit,10; } if(.@r>=8){ bonus bHit,10; } if(.@r>=9){ bonus bHit,10; }');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29168,'A-Flee','A-Flee','Card','bonus bFlee,20; .@r = getrefine(); if(.@r>=7){ bonus bFlee,10; } if(.@r>=8){ bonus bFlee,10; } if(.@r>=9){ bonus bFlee,10; }');
@@ -3864,12 +3954,27 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29174,'S-Quick','S-Quick','Card','bonus bVariableCastrate,-10; .@r = getrefine(); .@c = 100; .@t = 3000; if(.@r>=8){ .@t += 1000; } if(.@r>=9){ .@c += 100; .@t += 1000; } autobonus2 "{ bonus bVariableCastrate,-100; bonus bDelayrate,-100; }",.@c,.@t,BF_MAGIC;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29175,'S-Cri','S-Cri','Card','bonus bCritical,10; .@r = getrefine(); .@c = 100; .@t = 3000; if(.@r>=8){ .@t += 1000; } if(.@r>=9){ .@c += 100; .@t += 1000; } autobonus2 "{ bonus bCritical,100; }",.@c,.@t;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`location_shoes`,`script`) VALUES (29176,'Tenji','Tenji','Card',10,true,'bonus2 bAddRace,RC_Brute,15; bonus2 bAddRace,RC_Plant,15; bonus2 bMagicAddRace,RC_Brute,15; bonus2 bMagicAddRace,RC_Plant,15; bonus2 bAddEle,Ele_Wind,15; bonus2 bAddEle,Ele_Earth,15; bonus2 bMagicAddEle,Ele_Wind,15; bonus2 bMagicAddEle,Ele_Earth,15; autobonus2 "{ bonus bVariableCastrate,-70;bonus bDelayrate,-70; bonus bIgnoreDefRace,RC_All; bonus bIgnoreMDefRace,RC_All; }",1,10000;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29224,'WhiteBody_Effect','White Body Effect','Card','hateffect HAT_EF_WHITEBODY,true;','hateffect HAT_EF_WHITEBODY,false;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29208,'SPdrain2_Top','SPabsorp2','Card','bonus2 bSPDrainRate,20,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29209,'SPdrain2','SPabsorp2','Card','bonus2 bSPDrainRate,20,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29210,'HPdrain23','HPabsorp2 3','Card','bonus2 bHPDrainRate,20,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29211,'HPdrain23_Top','HPabsorp2 3','Card','bonus2 bHPDrainRate,20,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29224,'WhiteBody_Effect','White Body Effect','Card','hateffect HAT_EF_WHITEBODY2,true;','hateffect HAT_EF_WHITEBODY2,false;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`,`unequip_script`) VALUES (29225,'WaterField_Effect','Water Field Effect','Card','hateffect HAT_EF_WATER_BELOW2,true;','hateffect HAT_EF_WATER_BELOW2,false;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29226,'ExplodingWave_Effect','Crimson Wave Effect','Card','/* todo */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29227,'Heal','Heal','Card','skill "AL_HEAL",1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29228,'Steal','Steal','Card','skill "TF_STEAL",1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29229,'Teleport','Teleport','Card','skill "AL_TELEPORT",1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29238,'aegis_29238','Flee+10','Card','bonus bFlee,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29239,'aegis_29239','Hit+5','Card','bonus bHit,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29241,'aegis_29241','Cri+10','Card','bonus bCritical,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29302,'Armor_Water','Water Element(Armor)','Card','bonus bDefEle,Ele_Water;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29303,'Armor_Wind','Wind Element(Armor)','Card','bonus bDefEle,Ele_Wind;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29304,'Armor_Ground','Earth Element(Armor)','Card','bonus bDefEle,Ele_Earth;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29305,'Armor_Fire','Fire Element(Armor)','Card','bonus bDefEle,Ele_Fire;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29306,'Armor_Darkness','Shadow Element(Armor)','Card','bonus bDefEle,Ele_Dark;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29307,'Armor_Saint','Holy Element(Armor)','Card','bonus bDefEle,Ele_Holy;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29308,'Armor_Undead','Undead Element(Armor)','Card','bonus bDefEle,Ele_Undead;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29309,'Armor_Poison','Poison Element(Armor)','Card','bonus bDefEle,Ele_Poison;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29310,'Racing_RK_1','Racing(Rune Knight) 1Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29311,'Racing_RK_2','Racing(Rune Knight) 2Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29312,'Racing_RK_3','Racing(Rune Knight) 3Lv','Card',20);
@@ -3923,6 +4028,21 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29360,'Fatal_Bottom','Fatal (Lower)','Card','bonus bCritAtkRate,3;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29361,'Fatal_Robe','Fatal (Garment)','Card','bonus bCritAtkRate,20;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29362,'DoubleAttack','Double Attack','Card','skill "TF_DOUBLE",3; bonus bDoubleRate,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29380,'aegis_29380','ATK +5','Card','bonus bBaseAtk,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29381,'aegis_29381','MATK +5','Card','bonus bMatk,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29423,'SuraStone_Top_','Champion Stone (Upper)','Card','bonus bBaseAtk,getskilllv("MO_IRONHAND")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29424,'SuraStone_Middle_','Champion Stone (Middle)','Card','bonus bHit,getskilllv("MO_DODGE")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29425,'SuraStone_Bottom_','Champion Stone (Bottom)','Card','bonus2 bSkillAtk,"MO_CHAINCOMBO",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29426,'SuraStone_Robe_','SuraStone (Garment)','Card','bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29427,'SuraStone_Robe2_','Sura Stone II (Garment)','Card','bonus2 bSkillAtk,"SR_KNUCKLEARROW",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29428,'RangerStone_Top_','Sniper Stone (Upper)','Card','bonus bBaseAtk,getskilllv("HT_STEELCROW")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29429,'RangerStone_Middle_','Sniper Stone (Middle)','Card','bonus2 bSkillFixedCast,"SN_SHARPSHOOTING",-500;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29430,'RangerStone_Bottom_','Sniper Stone (Bottom)','Card','bonus2 bSkillAtk,"AC_SHOWER",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29431,'RangerStone_Robe_','RangerStone (Garment)','Card','bonus2 bSkillAtk,"RA_ARROWSTORM",10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29432,'SorcererStone_Top_','Professor Stone (Upper)','Card','bonus bAspdRate,getskilllv("SA_ADVANCEDBOOK");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29433,'SorcererStone_Middle_','Professor Stone (Middle)','Card','bonus2 bSkillFixedCast,"PF_DOUBLECASTING",-400;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29434,'SorcererStone_Bottom_','Professor Stone (Bottom)','Card','bonus2 bSkillAtk,"MG_FIREBOLT",20; bonus2 bSkillAtk,"MG_COLDBOLT",20; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29435,'SorcererStone_Robe_','SorcererStone (Garment)','Card','bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29438,'Z-Knockback','Z-Knockback','Card','bonus bNoKnockback;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29439,'Z-Immortal','Z-Immortal','Card','bonus bUnbreakableHelm; /* fix me */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29440,'Z-Killgain','Z-Killgain','Card','bonus bSPGainValue,2; .@r = getrefine(); if(.@r>=7){ bonus bSPGainValue,3; } if(.@r>=8){ bonus bSPGainValue,5; } if(.@r>=9){ bonus bSPGainValue,10; }');
@@ -3930,12 +4050,80 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29442,'Z-NoDispell','Z-NoDispell','Card','bonus bNoCastCancel2;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29443,'Z-Clairvoyance','Z-Clairvoyance','Card','bonus bIntravision;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29444,'Z-Cast_Fixed','Z-Cast Fixed','Card','bonus bFixedCastrate,-50;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29460,'RuneknightStone_Top_','Lord Knight Stone (Top)','Card','bonus bBaseAtk,getskilllv("KN_SPEARMASTERY")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29461,'RuneknightStone_Middle_','Lord Knight Stone (Middle)','Card','bonus2 bSkillAtk,"LK_SPIRALPIERCE",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29462,'RuneknightStone_Bottom_','Lord Knight Stone (Bottom)','Card','bonus bAspdRate,getskilllv("KN_CAVALIERMASTERY");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29463,'RuneknightStone_Robe_','Rune Knight Stone (Garment)','Card','bonus2 bSkillAtk,"RK_DRAGONBREATH",10; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29464,'GeneticStone_Top_','Creator Stone (Top)','Card','bonus bBaseAtk,getskilllv("AM_LEARNINGPOTION")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29465,'GeneticStone_Middle_','Creator Stone (Middle)','Card','bonus bHealPower,getskilllv("AM_POTIONPITCHER")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29466,'GeneticStone_Bottom_','Creator Stone (Bottom)','Card','bonus2 bSkillAtk,"AM_ACIDTERROR",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29467,'GeneticStone_Robe_','Genetic Stone (Garment)','Card','bonus2 bSkillAtk,"GN_CARTCANNON",10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29468,'WarlockStone_Top_','High Wizard Stone (Top)','Card','bonus bMatkRate,getskilllv("HW_MAGICPOWER")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29469,'WarlockStone_Middle_','High Wizard Stone (Middle)','Card','bonus2 bSkillAtk,"WZ_METEOR",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29470,'WarlockStone_Bottom_','High Wizard Stone (Bottom)','Card','bonus2 bSkillAtk,"WZ_FIREPILLAR",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29471,'WarlockStone_Robe_','Warlock Stone (Garment)','Card','bonus2 bSkillAtk,"WL_CRIMSONROCK",10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29477,'ShadowchaserStone_Top_','Stalker Stone (Upper)','Card','bonus bBaseAtk,getskilllv("RG_PLAGIARISM")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29478,'ShadowchaseStone_Middle_','Stalker Stone (Middle)','Card','bonus bHit,getskilllv("AC_VULTURE")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29479,'ShadowchaseStone_Bottom_','Stalker Stone (Bottom)','Card','bonus2 bSkillAtk,"RG_RAID",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29480,'ShadowchaserStone_Robe_','Shadow Chaser Stone (Garment)','Card','bonus2 bSkillAtk,"SC_TRIANGLESHOT",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29481,'MechanicStone_Top_','Whitesmith Stone (Upper)','Card','bonus bBaseAtk,getskilllv("BS_WEAPONRESEARCH")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29482,'MechanicStone_Middle_','Whitesmith Stone (Middle)','Card','bonus bHit,getskilllv("BS_SKINTEMPER")*3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29483,'MechanicStone_Bottom_','Whitesmith Stone (Bottom)','Card','bonus2 bSkillAtk,"WS_CARTTERMINATION",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29484,'MechanicStone_Robe_','Mechanic Stone (Garment)','Card','bonus2 bSkillAtk,"NC_AXETORNADO",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29485,'WanderMinstrelStone_Top_','Clown Gypsy Stone (Upper)','Card','if (Sex == SEX_FEMALE) bonus bBaseAtk,getskilllv("DC_DANCINGLESSON")*2; else bonus bBaseAtk,getskilllv("BA_MUSICALLESSON")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29486,'WanderMinstrelStone_Middle_','Clown Gypsy Stone (Middle)','Card','if (Sex == SEX_FEMALE) bonus2 bSkillAtk,"DC_THROWARROW",20; else bonus2 bSkillAtk,"BA_MUSICALSTRIKE",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29487,'WanderMinstrelStone_Bottom_','Clown Gypsy Stone (Bottom)','Card','bonus2 bSkillAtk,"CG_ARROWVULCAN",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29488,'WanderMinstrelStone_Robe_','Wanderer Minstrel Stone (Garment)','Card','bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29513,'HighpriestStone_Top_','High Priest Stone (Upper)','Card','bonus bHealPower,getskilllv("HP_MEDITATIO");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29514,'HighpriestStone_Middle_','High Priest Stone (Middle)','Card','bonus bCritAtkRate,getskilllv("PR_MACEMASTERY")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29515,'HighpriestStone_Bottom_','High Priest Stone (Bottom)','Card','bonus2 bSkillAtk,"PR_MAGNUS",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29516,'ArchbishopStone_Robe_','Archbishop Stone (Garment)','Card','bonus2 bSkillAtk,"AB_ADORAMUS",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29517,'PaladinStone_Top_','Paladin Stone (Upper)','Card','bonus bMaxHPrate,getskilllv("CR_TRUST")/2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29518,'PaladinStone_Middle_','Paladin Stone (Middle)','Card','bonus bLongAtkRate,getskilllv("KN_SPEARMASTERY")/2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29519,'PaladinStone_Bottom_','Paladin Stone (Bottom)','Card','bonus2 bSkillAtk,"CR_HOLYCROSS",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29520,'RoyalguardStone_Robe_','Royal Guard Stone (Garment)','Card','bonus2 bSkillAtk,"LG_BANISHINGPOINT",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29521,'AssacrossStone_Top_','Assassin Cross Stone (Upper)','Card','bonus bBaseAtk,getskilllv("AS_KATAR")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29522,'AssacrossStone_Middle_','Assassin Cross Stone (Middle)','Card','bonus bBaseAtk,getskilllv("AS_LEFT")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29523,'AssacrossStone_Bottom_','Assassin Cross Stone (Bottom)','Card','bonus2 bSkillAtk,"AS_SONICBLOW",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29524,'GuillcrossStone_Robe_','Assassin Cross Stone (Garment)','Card','bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29527,'Improve_Orb_Def','Modification Orb(Defense)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bDef,45;\n}\nelse if (.@r>6) {\n   bonus bDef,35;\n}\nelse {\n   bonus bDef,25;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29528,'Improve_Orb_Mdef','Modification Orb(Magic Defense)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bMdef,8;\n}\nelse if (.@r>6) {\n   bonus bMdef,5;\n}\nelse {\n   bonus bMdef,2;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29529,'Improve_Orb_HealHP','Modification Orb(HP Recovery)','Card','bonus bHPrecovRate,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29530,'Improve_Orb_Spirit','Modification Orb(Spirit)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nbonus bMaxSPrate,5;\nif (.@r>8) {\n   bonus bMaxSP,250;\n}\nelse if (.@r>6) {\n   bonus bMaxSP,100;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29531,'Improve_Orb_Health','Modification Orb(Stamina)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nbonus bMaxHPrate,5;\nif (.@r>8) {\n   bonus bMaxHP,1250;\n}\nelse if (.@r>6) {\n   bonus bMaxHP,500;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29532,'Improve_Orb_HealSP','Modification Orb(SP Recovery)','Card','bonus bSPrecovRate,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29533,'Improve_Orb_Heal','Modification Orb(Heal)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bHealPower,15;\n}\nelse if (.@r>6) {\n   bonus bHealPower,10;\n}\nelse {\n   bonus bHealPower,5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29534,'Improve_Orb_Atk','Modification Orb(Attack Power)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nbonus2 bAddClass,Class_All,5;\nif (.@r>8) {\n   bonus bBaseAtk,50;\n}\nelse if (.@r>6) {\n   bonus bBaseAtk,25;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29535,'Improve_Orb_Matk','Modification Orb(Magic Power)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nbonus bMatkRate,5;\nif (.@r>8) {\n   bonus bMatk,25;\n}\nelse if (.@r>6) {\n   bonus bMatk,25;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29536,'Improve_Orb_Archer','Modification Orb(Sharpshooter)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bLongAtkRate,7;\n}\nelse if (.@r>6) {\n   bonus bLongAtkRate,5;\n}\nelse {\n   bonus bLongAtkRate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29537,'Improve_Orb_Speed','Modification Orb(Swift)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nbonus bAspd,1;\nif (.@r>8) {\n   bonus bAspdRate,6;\n}\nelse if (.@r>6) {\n   bonus bAspdRate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29538,'Improve_Orb_Cast','Modification Orb(Caster)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bVariableCastrate,-11;\n}\nelse if (.@r>6) {\n   bonus bVariableCastrate,-8;\n}\nelse {\n   bonus bVariableCastrate,-5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29539,'Improve_Orb_Cri','Modification Orb(Critical)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nbonus bCritical,10;\nif (.@r>8) {\n   bonus bCritAtkRate,10;\n}\nelse if (.@r>6) {\n   bonus bCritAtkRate,5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29540,'Improve_Orb_Delay','Modification Orb(After Skill Delay)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bDelayRate,-15;\n}\nelse if (.@r>6) {\n   bonus bDelayRate,-10;\n}\nelse {\n   bonus bDelayRate,-5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29541,'Improve_Orb_Fix','Modification Orb(Fixed Casting Time)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>8) {\n   bonus bFixedCast,-700;\n}\nelse if (.@r>6) {\n   bonus bFixedCast,-500;\n}\nelse {\n   bonus bFixedCast,-300;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29542,'Improve_Orb_Above','Modification Orb(Above All)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\n.@val = 5;\nif (.@r>6) {\n   bonus2 bSubSize,Size_Small,5;\n   bonus2 bSubSize,Size_Medium,5;\n   bonus2 bSubSize,Size_Large,5;\n   bonus2 bMagicSubSize,Size_Small,-5;\n   bonus2 bMagicSubSize,Size_Medium,-5;\n   bonus2 bMagicSubSize,Size_Large,-5;\n   if (.@r>8) {\n      .@val += 5;\n   }\n}\nbonus2 bSubDefEle,Ele_All,.@val;\nbonus3 bSubEle,Ele_All,.@val,BF_MAGIC;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29543,'Improve_Orb_Life','Modification Orb(Life Drain)','Card','bonus2 bHPDrainRate,20,2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29544,'Improve_Orb_Soul','Modification Orb(Soul Drain)','Card','bonus2 bSPDrainRate,10,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29545,'Improve_Orb_M_Heal','Modification Orb(Magic Healing)','Card','autobonus "{ bonus2 bHPRegenRate,400,500; }",20,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29546,'Improve_Orb_M_Soul','Modification Orb(Magic Soul)','Card','autobonus "{ bonus2 bSPRegenRate,80,500; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29547,'Improve_Orb_L_Vit','Modification Orb(Unlimited Vital)','Card','autobonus2 "{ bonus bVit,50; bonus2 bHPRegenRate,400,500; bonus2 bSPLossRate,1,20000; }",50,10000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; }";\nautobonus2 "{ bonus bVit,50; bonus2 bHPRegenRate,400,500; bonus2 bSPLossRate,1,20000; }",50,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29548,'Improve_Orb_L_INT','Modification Orb(Spell Buster)','Card','autobonus "{ bonus bInt,50; bonus bMatkRate,15; bonus2 bAddClass,Class_All,-15; }",30,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29549,'Improve_Orb_L_DEX','Modification Orb(Firing Shot)','Card','autobonus "{ bonus bDex,50; bonus bLongAtkRate,10; bonus2 bSPLossRate,1,20000; }",30,10000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29550,'Improve_Orb_L_STR','Modification Orb(Over Power)','Card','autobonus "{ bonus bStr,50; bonus2 bAddClass,Class_All,15; bonus bMatkRate,-15; }",30,10000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29551,'Improve_Orb_L_AGI','Modification Orb(Fatal Flash)','Card','autobonus "{ bonus bAgi,50; bonus bCritAtkRate,10; bonus2 bHPLossRate,1,300000; }",30,10000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29552,'Improve_Orb_L_LUK','Modification Orb(Lucky Strike)','Card','.@r = getequiprefinerycnt(EQI_COMPOUND_ON);\nif (.@r>9) {\n   bonus bLuk,50;\n}\nif (.@r>4) {\n  .@r2 = .@r-4;\n  autobonus "{ bonus bLuk,50; }",(8+(.@r2*5)),(4+(.@r2*3))*1000,BF_NORMAL;\n  autobonus "{ bonus bLuk,50; }",(8+(.@r2*5)),(4+(.@r2*3))*1000,BF_MAGIC;\n}\nelse {\n  autobonus "{ bonus bLuk,50; }",8,4000,BF_NORMAL;\n  autobonus "{ bonus bLuk,50; }",8,4000,BF_MAGIC;\n}');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29579,'Racing_SG_1','Racing (Star Gladiator) 1Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29580,'Racing_SG_2','Racing (Star Gladiator) 2Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29581,'Racing_SG_3','Racing (Star Gladiator) 3Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29582,'Racing_SL_1','Racing (Soul Linker) 1Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29583,'Racing_SL_2','Racing (Soul Linker) 2Lv','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29584,'Racing_SL_3','Racing (Soul Linker) 3Lv','Card',20);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (29587,'aegis_29587','Flash','Card');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (29588,'aegis_29588','Power','Card');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (29589,'aegis_29589','Celestial','Card');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (29590,'aegis_29590','Divine Power','Card');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (29591,'aegis_29591','Rigid Body','Card');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (29592,'aegis_29592','Hundred Lucks','Card');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29594,'Seyren_Memory','Seyren\'s Memory','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29595,'Howard_Memory','Howard\'s Memory','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29596,'Eremes_Memory','Eremes\'s Memory','Card',20);
@@ -3949,6 +4137,38 @@ 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`) VALUES (29605,'Chen_Memory','Chen\'s Memory','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29606,'Trentini_Memory','Trentini\'s Memory','Card',20);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`) VALUES (29607,'Alphoccio_Memory','Alphoccio\'s Memory','Card',20);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29611,'SuraStone_Bottom2_','Sura Stone II (Bottom)','Card','bonus bBaseAtk,getskilllv("AL_DP")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29612,'SuraStone_Middle2_','Sura Stone II (Middle)','Card','bonus2 bSkillAtk,"MO_COMBOFINISH",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29613,'SuraStone_Top2_','Sura Stone II (Upper)','Card','bonus2 bSkillAtk,"CH_CHAINCRUSH",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29614,'SorcererStone_Robe2_','Sorcerer Stone II (Garment)','Card','bonus2 bSkillAtk,"SO_DIAMONDDUST",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29615,'SorcererStone_Bottom2_','Sorcerer Stone II (Bottom)','Card','bonus bMatk,getskilllv("SA_AUTOSPELL")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29616,'SorcererStone_Middle2_','Sorcerer Stone II (Middle)','Card','bonus2 bSkillAtk,"MG_FIREBOLT",20; bonus2 bSkillAtk,"MG_COLDBOLT",20; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29617,'SorcererStone_Top2_','Sorcerer Stone II (Upper)','Card','bonus2 bSkillAtk,"WZ_EARTHSPIKE",20; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29618,'ShadowchaserStone_Robe2_','Shadow Chaser Stone II (Garment)','Card','bonus2 bSkillAtk,"SC_FATALMENACE",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29619,'ShadowchasStone_Bottom2_','Shadow Chaser Stone II (Bottom)','Card','bonus bHit,getskilllv("TF_MISS");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29620,'ShadowchasStone_Middle2_','Shadow Chaser Stone II (Middle)','Card','bonus2 bSkillAtk,"RG_BACKSTAP",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29621,'ShadowchaserStone_Top2_','Shadow Chaser Stone II (Upper)','Card','bonus bBaseAtk,getskilllv("RG_SNATCHER")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29651,'SoulLinkerStone_Top_','Soul Linker Stone (Upper)','Card','bonus bMatk,getskilllv("TK_SPTIME")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29652,'SoulLinkerStone_Middle_','Soul Linker Stone (Middle)','Card','bonus2 bSkillAtk,"SL_SMA",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29653,'SoulLinkerStone_Bottom_','Soul Linker Stone (Bottom)','Card','bonus bVariableCastrate,-getskilllv("SL_KAAHI")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29654,'SoulReaperStone_Robe_','Soul Reaper Stone (Garment)','Card','bonus2 bSkillAtk,"SP_SWHOO",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29655,'StarGladiatorStone_Top_','Star Gladiator Stone (Upper)','Card','bonus bBaseAtk,getskilllv("TK_HPTIME")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29656,'StarGladiatorStone_Middle_','Star Gladiator Stone (Middle)','Card','bonus2 bFixedCastrate,"SG_FEEL",-50;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29657,'StarGladiatorStone_Bottom_','Star Gladiator Stone (Bottom)','Card','bonus bAspdRate,getskilllv("SG_KNOWLEDGE");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29658,'StarEmperorStone_Garment_','Star Emperor Stone (Garment)','Card','bonus2 bSkillAtk,"SJ_FALLINGSTAR",20; bonus2 bSkillAtk,"SJ_SOLARBURST",20; bonus2 bSkillAtk,"SJ_FULLMOONKICK",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29659,'NinjaStone_Top_','Ninja Stone (Upper)','Card','bonus bBaseAtk,getskilllv("NJ_NINPOU")*2; bonus bMatk,getskilllv("NJ_NINPOU")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29660,'NinjaStone_Middle_','Ninja Stone (Middle)','Card','bonus2 bSkillAtk,"NJ_HUUMA",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29661,'NinjaStone_Bottom_','Ninja Stone (Bottom)','Card','bonus2 bSkillAtk,"NJ_BAKUENRYU",20; bonus2 bSkillAtk,"NJ_HYOUSYOURAKU",20; bonus2 bSkillAtk,"NJ_KAMAITACHI",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29662,'KagerouStone_Robe_','Kagerou Stone (Garment)','Card','bonus2 bSkillAtk,"KO_HUUMARANKA",25;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29663,'OboroStone_Robe_','Oboro Stone (Garment)','Card','bonus2 bSkillAtk,"NJ_KOUENKA",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29664,'GunslingerStone_Top_','Gunslinger Stone (Upper)','Card','bonus bBaseAtk,getskilllv("GS_SNAKEEYE")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29665,'GunslingerStone_Middle_','Gunslinger Stone (Middle)','Card','bonus2 bSkillAtk,"GS_DESPERADO",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29666,'GunslingerStone_Bottom_','Gunslinger Stone (Bottom)','Card','bonus bLongAtkRate,getskilllv("GS_CHAINACTION")/2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29667,'GunslingerStone_Robe_','Gunslinger Stone (Garment)','Card','bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",20; bonus2 bSkillAtk,"RL_R_TRIP",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29668,'DoramStone_Top_','Doram Stone (Upper)','Card','.@lv = getskilllv("SU_SCRATCH"); bonus bBaseAtk,.@lv; bonus bMatk,.@lv;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29669,'DoramStone_Middle_','Doram Stone (Middle)','Card','bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29670,'DoramStone_Bottom_','Doram Stone (Bottom)','Card','bonus2 bSkillAtk,"SU_SV_STEMSPEAR",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29671,'DoramStone_Robe_','Doram Stone (Garment)','Card','bonus2 bSkillAtk,"SU_PICKYPECK",20; bonus2 bSkillAtk,"SU_CN_METEOR",20;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29672,'aegis_29672','Temporal Jewel (STR) Lv 1','Card','.@r = getequiprefinerycnt(EQI_HEAD_TOP);\nbonus bBaseAtk,2*(.@r/2);\nbonus bHit,3*(.@r/2);\nbonus2 bAddClass,Class_All,(.@r/5);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29673,'aegis_29673','Temporal Jewel (STR) Lv 2','Card','.@r = getequiprefinerycnt(EQI_HEAD_TOP);\nbonus bBaseAtk,4*(.@r/2);\nbonus bHit,5*(.@r/2);\nbonus2 bAddClass,Class_All,2*(.@r/5);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (29674,'aegis_29674','Temporal Jewel (STR) Lv 3','Card','.@r = getequiprefinerycnt(EQI_HEAD_TOP);\nbonus bBaseAtk,7*(.@r/2);\nbonus bHit,7*(.@r/2);\nbonus2 bAddClass,Class_All,3*(.@r/5);');
@@ -3988,6 +4208,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`,`location_right_hand`,`flag_buyingstore`,`script`) VALUES (31024,'As_Bdy_Knight_Card','Immortal Cursed Knight Card','Card',20,10,true,true,'bonus2 bAddClass,Class_All,10;\nbonus5 bAutoSpell,"RK_IGNITIONBREAK",5,20,BF_WEAPON,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_right_hand`,`flag_buyingstore`,`script`) VALUES (31025,'As_Wind_Ghost_Card','Immortal Wind Ghost Card','Card',20,10,true,true,'bonus bMatkRate,10;\nbonus5 bAutoSpell,"SO_CLOUD_KILL",5,10,BF_MAGIC,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`location_shoes`,`flag_buyingstore`,`script`) VALUES (31026,'As_Ragged_Golem_Card','Stephane Jack Earnest Wolf Card','Card',20,10,true,true,'bonus5 bAutoSpellWhenHit,"SO_FIREWALK",5,35,BF_WEAPON,0;\nbonus5 bAutoSpellWhenHit,"SO_ELECTRICWALK",5,80,BF_MAGIC,0;\nautobonus "{ bonus bFlee,200; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_TEIHIT1; }";\nautobonus "{ bonus bSpeedRate,25; }",25,10000,BF_MAGIC,"{ specialeffect2 EF_POTION_BERSERK; }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`,`script`) VALUES (300000,'IDTest_Card','IDTest Card','Card',10,10,true,'bonus bAgi,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`flag_buyingstore`,`script`) VALUES (300001,'aegis_300001','Poisonous Card','Card',10,true,true,'bonus2 bAddEle,Ele_Poison,25;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_armor`,`flag_buyingstore`,`script`) VALUES (300002,'aegis_300002','Toxious Card','Card',10,true,true,'bonus bLongAtkDef,5;\nbonus bMaxHPrate,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`flag_buyingstore`,`script`) VALUES (300003,'aegis_300003','White Porcellio Card','Card',10,true,true,'bonus bBaseAtk,20;');
@@ -4075,10 +4296,363 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`loc
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_garment`,`script`) VALUES (300149,'aegis_300149','Deep Sea Phen Card','Card',10,true,'bonus2 bSubEle,Ele_Neutral,15;\nbonus2 bMagicAtkEle,Ele_Wind,3*getrefine();');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_head_top`,`location_head_mid`,`location_head_low`,`script`) VALUES (300150,'aegis_300150','Deep Sea King Dramoh Card','Card',10,true,true,true,'bonus bMaxHPrate,-5;\nbonus2 bAddClass,Class_All,(getrefine()/3);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (300151,'aegis_300151','Deep Sea Kraken Card','Card',10,true,'bonus bLongAtkRate,25;\nbonus bPerfectHitRate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300177,'aegis_300177','Arena Arhi Card','Card',10,true,'bonus2 bAddSize,Size_All,5;\nbonus2 bMagicAddSize,Size_All,5;\nbonus bMaxHP,1000;\nbonus bFlee,35;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300178,'aegis_300178','Arena Dio Anemos Card','Card',10,true,'bonus2 bMagicAtkEle,Ele_Neutral,10;\nbonus2 bMagicAtkEle,Ele_Earth,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300179,'aegis_300179','Arena Shoplifter Card','Card',10,true,'bonus2 bMagicAtkEle,Ele_Holy,10;\nbonus2 bMagicAtkEle,Ele_Fire,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300180,'aegis_300180','Arena Gangster Card','Card',10,true,'bonus bAspdRate,10;\nbonus bCritAtkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300181,'aegis_300181','Arena Bully Card','Card',10,true,'bonus bAspdRate,7;\nbonus bCritAtkRate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300182,'aegis_300182','Arena Faymont Card','Card',10,true,'bonus bMaxSPrate,20;\nbonus5 bAutoSpellWhenHit,"CH_SOULCOLLECT",1,1,BF_WEAPON,0;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300183,'aegis_300183','Arena Ordre Card','Card',10,true,'bonus2 bMagicAtkEle,Ele_Wind,10;\nbonus2 bMagicAtkEle,Ele_Water,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300184,'aegis_300184','Arena Blut Hase Card','Card',10,true,'bonus2 bAddClass,Class_All,5;\nbonus bLongAtkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300185,'aegis_300185','Arena Kuro Akuma Card','Card',10,true,'bonus bVariableCastrate,-10;\nbonus2 bSkillAtk,"NJ_KOUENKA",15;\nbonus2 bSkillAtk,"NJ_HYOUSENSOU",15;\nbonus2 bSkillAtk,"NJ_HUUJIN",15;\nbonus bLongAtkRate,8;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300186,'aegis_300186','Arena Ifodes Card','Card',10,true,'bonus bAspdRate,7;\nbonus bShortAtkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300187,'aegis_300187','Arena Odoric Card','Card',10,true,'bonus bAspdRate,7;\nbonus bLongAtkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300188,'aegis_300188','Arena Licheniyes Card','Card',10,true,'bonus2 bMagicAtkEle,Ele_Holy,10;\nbonus bHealPower,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_hand`,`script`) VALUES (300189,'aegis_300189','Arena Ju Card','Card',10,true,'.@val = 15;\nif (getiteminfo(getequipid(EQI_HAND_R),11) == W_BOOK) {\n   .@val += 20;\n}\nif (getrefine()>=14) {\n   .@val += 30;\n}\nbonus2 bSkillAtk,"MG_LIGHTNINGBOLT",.@val;\nbonus2 bSkillAtk,"MG_FIREBOLT",.@val;\nbonus2 bSkillAtk,"MG_COLDBOLT",.@val;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_shoes`,`script`) VALUES (300190,'aegis_300190','Arena Fay Kanavian Card','Card',10,true,'bonus2 bMagicAtkEle,Ele_Neutral,10;\nbonus2 bMagicAtkEle,Ele_Earth,10;\nautobonus "{ bonus bDef,500; }",1,5000,BF_WEAPON,"{ active_transform 1040,5000; /*GOLEM*/ }";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`location_right_accessory`,`location_left_accessory`,`script`) VALUES (300191,'aegis_300191','Arena Dwigh Card','Card',10,true,true,'bonus2 bMagicAtkEle,Ele_Neutral,20;\nbonus2 bMagicAtkEle,Ele_Undead,20;\nbonus2 bMagicAtkEle,Ele_Dark,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310000,'Ranger_Top2','Sniper Stone II (Top)','Card','bonus bAspdRate,getskilllv("SN_WINDWALK")/2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310001,'Ranger_Middle2','Sniper Stone II (Middle)','Card','bonus bLongAtkRate,getskilllv("HT_BEASTBANE")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310002,'Ranger_Bottom2','Sniper Stone II (Bottom)','Card','bonus bBaseAtk,getskilllv("SN_SIGHT")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310003,'Ranger_Robe2','Ranger Stone II (Garment)','Card','bonus2 bSkillAtk,"RA_AIMEDBOLT",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310004,'Mechanic_Top2','Whitesmith Stone II (Top)','Card','bonus2 bSkillCooldown,"NC_AXEBOOMERANG",getskilllv("BS_OVERTHRUST")*-100;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310005,'Mechanic_Middle2','Whitesmith Stone II (Middle)','Card','bonus2 bSkillAtk,"WS_CARTTERMINATION",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310006,'Mechanic_Bottom2','Whitesmith Stone II (Bottom)','Card','bonus bLongAtkRate,getskilllv("BS_MAXIMIZE");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310007,'Mechanic_Robe2','Mechanic Stone II (Garment)','Card','bonus2 bSkillAtk,"NC_ARMSCANNON",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310008,'Highpriest_Top2','High Priest Stone II (Top)','Card','bonus2 bSkillAtk,"PR_MAGNUS",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310009,'Highpriest_Middle2','High Priest Stone II (Middle)','Card','bonus2 bMagicAtkEle,Ele_Holy,getskilllv("HP_ASSUMPTIO");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310010,'Highpriest_Bottom2','High Priest Stone II (Bottom)','Card','bonus bVariableCastrate,getskilllv("PR_KYRIE")/2*-1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310011,'Archbishop_Robe2','Archbishop Stone II (Garment)','Card','bonus2 bSkillAtk,"AB_JUDEX",15;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310076,'aegis_310076','STR Blessing','Card','bonus bStr,10;\nbonus bMdef,3;\nbonus bDef,25;\nbonus2 bAddClass,Class_All,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310077,'aegis_310077','AGI Blessing','Card','bonus bAgi,10;\nbonus bMdef,3;\nbonus bDef,25;\nbonus bLongAtkRate,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310078,'aegis_310078','VIT Blessing','Card','bonus bVit,10;\nbonus bMdef,3;\nbonus bDef,25;\nbonus bMaxHPrate,10;\nbonus bMaxSPrate,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310079,'aegis_310079','DEX Blessing','Card','bonus bDex,10;\nbonus bMdef,3;\nbonus bDef,25;\nbonus bAspdRate,10;\nbonus bVariableCastrate,-10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310080,'aegis_310080','INT Blessing','Card','bonus bInt,10;\nbonus bMdef,3;\nbonus bDef,25;\nbonus bMatkRate,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310081,'aegis_310081','LUK Blessing','Card','bonus bLuk,10;\nbonus bMdef,3;\nbonus bDef,25;\nbonus bCritAtkRate,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310082,'aegis_310082','Automatic Modification Orb(Defense)','Card','.@r = getrefine();\nbonus bDef,150;\nif (.@r>=9) {\n   bonus bDef,75;\n}\nif (.@r>=11) {\n   bonus bDef,75;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310083,'aegis_310083','Automatic Modification Orb(Magic Defense)','Card','.@r = getrefine();\nbonus bMdef,15;\nif (.@r>=9) {\n   bonus bMdef,7;\n}\nif (.@r>=11) {\n   bonus bMdef,7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310084,'aegis_310084','Automatic Modification Orb(VIT)','Card','bonus bMaxHPrate,1;\nbonus bVit,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310085,'aegis_310085','Automatic Modification Orb(LUK)','Card','bonus bCritAtkRate,1;\nbonus bLuk,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310086,'aegis_310086','Automatic Modification Orb(STR)','Card','bonus2 bAddClass,Class_All,2;\nbonus bStr,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310087,'aegis_310087','Automatic Modification Orb(AGI)','Card','bonus bAspdRate,2;\nbonus bAgi,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310088,'aegis_310088','Automatic Modification Orb(INT)','Card','bonus bMatkRate,2;\nbonus bInt,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310089,'aegis_310089','Automatic Modification Orb(DEX)','Card','bonus bLongAtkRate,2;\nbonus bDex,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310090,'aegis_310090','Automatic Modification Orb(HP Recovery)','Card','bonus bHPrecovRate,30;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310091,'aegis_310091','Automatic Modification Orb(SP Recovery)','Card','bonus bSPrecovRate,30;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310092,'aegis_310092','Automatic Modification Orb(Spell)','Card','bonus bVariableCastrate,-10;\nbonus bMatk,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310093,'aegis_310093','Automatic Modification Orb(Attack Speed)','Card','bonus bAspdRate,10;\nbonus bBaseAtk,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310094,'aegis_310094','Automatic Modification Orb(Fatal)','Card','bonus bCritAtkRate,10;\nbonus bCritical,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310095,'aegis_310095','Automatic Modification Orb(Expert Archer)','Card','bonus bLongAtkRate,10;\nbonus bHit,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310096,'aegis_310096','Automatic Modification Orb(Vital)','Card','.@r = getrefine();\nbonus bMaxHPrate,5;\nbonus bMaxHP,1500;\nif (.@r>=9) {\n   bonus bMaxHPrate,2;\n}\nif (.@r>=11) {\n   bonus bMaxHPrate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310097,'aegis_310097','Automatic Modification Orb(Mental)','Card','.@r = getrefine();\nbonus bMaxSPrate,5;\nbonus bMaxSP,300;\nif (.@r>=9) {\n   bonus bMaxSPrate,2;\n}\nif (.@r>=11) {\n   bonus bMaxSPrate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310098,'aegis_310098','Automatic Modification Orb(Heal)','Card','.@r = getrefine();\nbonus bHealPower,5;\nif (.@r>=9) {\n   bonus bHealPower,5;\n}\nif (.@r>=11) {\n   bonus bHealPower,7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310099,'aegis_310099','Automatic Modification Orb(Attack Power)','Card','.@r = getrefine();\nbonus2 bAddClass,Class_All,5;\nbonus bBaseAtk,75;\nif (.@r>=9) {\n   bonus bShortAtkRate,2;\n}\nif (.@r>=11) {\n   bonus bShortAtkRate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310100,'aegis_310100','Automatic Modification Orb(Magic Power)','Card','.@r = getrefine();\nbonus bMatkRate,5;\nbonus bMatk,75;\nif (.@r>=9) {\n   bonus bMatkRate,2;\n}\nif (.@r>=11) {\n   bonus bMatkRate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310101,'aegis_310101','Automatic Modification Orb(Shooter)','Card','.@r = getrefine();\nbonus bLongAtkRate,3;\nif (.@r>=9) {\n   bonus bLongAtkRate,3;\n}\nif (.@r>=11) {\n   bonus bLongAtkRate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310102,'aegis_310102','Automatic Modification Orb(Fast)','Card','.@r = getrefine();\nbonus bAspd,1;\nif (.@r>=9) {\n   bonus bAspdRate,5;\n}\nif (.@r>=11) {\n   bonus bAspdRate,5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310103,'aegis_310103','Automatic Modification Orb(Caster)','Card','.@r = getrefine();\nbonus bVariableCastrate,-5;\nif (.@r>=9) {\n   bonus bVariableCastrate,-5;\n}\nif (.@r>=11) {\n   bonus bVariableCastrate,-5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310104,'aegis_310104','Automatic Modification Orb(Critical)','Card','.@r = getrefine();\nbonus bCritical,10;\nif (.@r>=9) {\n   bonus bCritAtkRate,5;\n}\nif (.@r>=11) {\n   bonus bCritAtkRate,7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310105,'aegis_310105','Automatic Modification Orb(Magical Force)','Card','.@r = getrefine();\nbonus2 bMagicAtkEle,Ele_All,2;\nbonus bVariableCastrate,-10;\nbonus bMatk,20;\nif (.@r>=9) {\n   bonus2 bMagicAtkEle,Ele_All,1;\n}\nif (.@r>=11) {\n   bonus2 bMagicAtkEle,Ele_All,2;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310106,'aegis_310106','Automatic Modification Orb(Attacker Force)','Card','.@r = getrefine();\nbonus2 bAddSize,Size_All,3;\nbonus bShortAtkRate,10;\nbonus bBaseAtk,20;\nif (.@r>=9) {\n   bonus2 bAddSize,Size_All,1;\n}\nif (.@r>=11) {\n   bonus2 bAddSize,Size_All,1;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310107,'aegis_310107','Automatic Modification Orb(Range Force)','Card','.@r = getrefine();\nbonus2 bAddSize,Size_All,3;\nbonus bLongAtkRate,10;\nbonus bBaseAtk,20;\nif (.@r>=9) {\n   bonus2 bAddSize,Size_All,1;\n}\nif (.@r>=11) {\n   bonus2 bAddSize,Size_All,1;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310108,'aegis_310108','Automatic Modification Orb(Critical Force)','Card','.@r = getrefine();\nbonus2 bAddSize,Size_All,3;\nbonus bCritAtkRate,10;\nbonus bCritical,5;\nif (.@r>=9) {\n   bonus2 bAddSize,Size_All,1;\n}\nif (.@r>=11) {\n   bonus2 bAddSize,Size_All,1;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310109,'aegis_310109','Automatic Modification Orb(Recovery Force)','Card','.@r = getrefine();\nbonus bHealPower,5;\nbonus bVariableCastrate,-10;\nbonus bMatk,20;\nif (.@r>=9) {\n   bonus bHealPower,5;\n}\nif (.@r>=11) {\n   bonus bHealPower,5;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310110,'aegis_310110','Automatic Modification Orb(After Skill Delay)','Card','.@r = getrefine();\nbonus bDelayrate,-4;\nif (.@r>=9) {\n   bonus bDelayrate,-6;\n}\nif (.@r>=11) {\n   bonus bDelayrate,-6;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310111,'aegis_310111','Automatic Modification Orb(Fixed Casting)','Card','.@r = getrefine();\nbonus bFixedCast,-100;\nif (.@r>=9) {\n   bonus bFixedCast,-200;\n}\nif (.@r>=11) {\n   bonus bFixedCast,-500;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310112,'aegis_310112','Automatic Modification Orb(Above All)','Card','.@r = getrefine();\nbonus2 bSubClass,Class_Normal,7;\nbonus2 bSubClass,Class_Boss,7;\nif (.@r>=9) {\n   bonus2 bSubSize,Size_All,7;\n   bonus2 bMagicSubSize,Size_All,7;\n}\nif (.@r>=11) {\n   bonus2 bSubRace,RC_All,7;\n   bonus2 bSubRace,RC_Player_Human,-7;\n   bonus2 bSubRace,RC_Player_Doram,-7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310113,'aegis_310113','Automatic Modification Orb(Drain Life)','Card','bonus2 bHPDrainRate,20,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310114,'aegis_310114','Automatic Modification Orb(Drain Soul)','Card','bonus2 bSPDrainRate,10,2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310115,'aegis_310115','Automatic Modification Orb(Magic Healing)','Card','autobonus "{ bonus2 bHPRegenRate,500,400; }",20,9200,BF_MAGIC;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310116,'aegis_310116','Automatic Modification Orb(Magic Soul)','Card','autobonus "{ bonus2 bSPRegenRate,120,400; }",10,9200,BF_MAGIC;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310117,'aegis_310117','Automatic Modification Orb(Power Force)','Card','.@r = getrefine();\nbonus bMatkRate,3;\nbonus2 bAddClass,Class_All,3;\nif (.@r>=9) {\n   bonus bMatkRate,3;\n   bonus2 bAddClass,Class_All,3;\n}\nif (.@r>=11) {\n   bonus bMatkRate,4;\n   bonus2 bAddClass,Class_All,4;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310118,'aegis_310118','Automatic Modification Orb(Robust)','Card','.@r = getrefine();\nbonus bMaxHPrate,5;\nbonus bMaxSPrate,5;\nbonus bMaxHP,2000;\nbonus bMaxSP,300;\nif (.@r>=9) {\n   bonus bMaxHPrate,2;\n   bonus bMaxSPrate,2;\n}\nif (.@r>=11) {\n   bonus bMaxHPrate,3;\n   bonus bMaxSPrate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310119,'aegis_310119','Automatic Modification Orb(Powerful)','Card','.@r = getrefine();\nbonus2 bMagicAtkEle,Ele_All,5;\nbonus bLongAtkRate,5;\nbonus bShortAtkRate,5;\nif (.@r>=9) {\n   bonus2 bMagicAtkEle,Ele_All,2;\n   bonus bLongAtkRate,2;\n   bonus bShortAtkRate,2;\n}\nif (.@r>=11) {\n   bonus2 bMagicAtkEle,Ele_All,3;\n   bonus bLongAtkRate,3;\n   bonus bShortAtkRate,3;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310120,'aegis_310120','Automatic Modification Orb(All Force)','Card','bonus2 bMagicAtkEle,Ele_All,5;\nbonus bLongAtkRate,5;\nbonus bShortAtkRate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310121,'aegis_310121','Automatic Orb(Unlimited Vital)','Card','autobonus2 "{ bonus bVit,50; bonus2 bSPRegenRate,800,500; }",10,10000,BF_MAGIC|BF_WEAPON;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310122,'aegis_310122','Automatic Orb(Spell Buster)','Card','autobonus "{ bonus bMatkRate,25; bonus bInt,50; }",30,10000,BF_MAGIC;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310123,'aegis_310123','Automatic Orb(Firing Shot)','Card','autobonus "{ bonus bLongAtkRate,15; bonus bDex,50; }",30,10000,BF_WEAPON;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310124,'aegis_310124','Automatic Orb(Over Power)','Card','autobonus "{ bonus bShortAtkRate,10; bonus2 bAddClass,Class_All,15; bonus bStr,50; }",30,10000,BF_WEAPON;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310125,'aegis_310125','Automatic Orb(Fatal Flash)','Card','autobonus "{ bonus bCritAtkRate,15; bonus bAgi,50; }",30,10000,BF_WEAPON;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310126,'aegis_310126','Automatic Orb(Lucky Strike)','Card','autobonus "{ bonus2 bMagicAtkEle,Ele_All,15; bonus bLuk,50; }",30,10000,BF_MAGIC;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310127,'aegis_310127','Automatic Orb(Dragonic Breath)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"RK_DRAGONBREATH",15;\nbonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"RK_DRAGONBREATH",3;\n   bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"RK_DRAGONBREATH",7;\n   bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310128,'aegis_310128','Automatic Orb(Wave Break)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"RK_IGNITIONBREAK",15;\nbonus2 bSkillAtk,"RK_SONICWAVE",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"RK_IGNITIONBREAK",3;\n   bonus2 bSkillAtk,"RK_SONICWAVE",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillCooldown,"RK_IGNITIONBREAK",-250;\n   bonus2 bSkillCooldown,"RK_SONICWAVE",-250;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310129,'aegis_310129','Automatic Orb(Hundred Spiral)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"LK_SPIRALPIERCE",15;\nbonus2 bSkillAtk,"RK_HUNDREDSPEAR",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"LK_SPIRALPIERCE",3;\n   bonus2 bSkillAtk,"RK_HUNDREDSPEAR",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillCooldown,"RK_HUNDREDSPEAR",-250;\n   bonus2 bSkillAtk,"LK_SPIRALPIERCE",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310130,'aegis_310130','Automatic Orb(Drive Press)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"LG_EARTHDRIVE",15;\nbonus2 bSkillAtk,"LG_SHIELDPRESS",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"LG_EARTHDRIVE",3;\n   bonus2 bSkillAtk,"LG_SHIELDPRESS",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"LG_EARTHDRIVE",7;\n   bonus2 bSkillAtk,"LG_SHIELDPRESS",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310131,'aegis_310131','Automatic Orb(Banishing Cannon)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"LG_BANISHINGPOINT",15;\nbonus2 bSkillAtk,"LG_CANNONSPEAR",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"LG_BANISHINGPOINT",3;\n   bonus2 bSkillAtk,"LG_CANNONSPEAR",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"LG_BANISHINGPOINT",7;\n   bonus2 bSkillAtk,"LG_CANNONSPEAR",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310132,'aegis_310132','Automatic Orb(Genesis Pressure)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"LG_RAYOFGENESIS",15;\nbonus2 bSkillAtk,"PA_PRESSURE",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"LG_RAYOFGENESIS",3;\n   bonus2 bSkillAtk,"PA_PRESSURE",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"LG_RAYOFGENESIS",7;\n   bonus2 bSkillAtk,"PA_PRESSURE",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310133,'aegis_310133','Automatic Orb(Boost Cannon)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"NC_BOOSTKNUCKLE",15;\nbonus2 bSkillAtk,"NC_ARMSCANNON",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"NC_BOOSTKNUCKLE",3;\n   bonus2 bSkillAtk,"NC_ARMSCANNON",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"NC_BOOSTKNUCKLE",7;\n   bonus2 bSkillAtk,"NC_ARMSCANNON",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310134,'aegis_310134','Automatic Orb(Cold Flare)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"NC_FLAMELAUNCHER",15;\nbonus2 bSkillAtk,"NC_COLDSLOWER",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"NC_FLAMELAUNCHER",3;\n   bonus2 bSkillAtk,"NC_COLDSLOWER",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"NC_FLAMELAUNCHER",7;\n   bonus2 bSkillAtk,"NC_COLDSLOWER",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310135,'aegis_310135','Automatic Orb(Tornado Swing)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"NC_AXETORNADO",15;\nbonus2 bSkillAtk,"NC_POWERSWING",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"NC_AXETORNADO",3;\n   bonus2 bSkillAtk,"NC_POWERSWING",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"NC_AXETORNADO",7;\n   bonus2 bSkillAtk,"NC_POWERSWING",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310136,'aegis_310136','Automatic Orb(Cannon Tornado)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"GN_CART_TORNADO",15;\nbonus2 bSkillAtk,"GN_CARTCANNON",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"GN_CART_TORNADO",3;\n   bonus2 bSkillAtk,"GN_CARTCANNON",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"GN_CART_TORNADO",7;\n   bonus2 bSkillAtk,"GN_CARTCANNON",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310137,'aegis_310137','Automatic Orb(Crazy Mandragora)','Card','.@r = getrefine();\nbonus2 bSkillCooldown,"GN_MANDRAGORA",-300;\nbonus2 bSkillAtk,"GN_CRAZYWEED",15;\nif (.@r>=9) {\n   bonus2 bSkillCooldown,"GN_MANDRAGORA",-300;\n   bonus2 bSkillAtk,"GN_CRAZYWEED",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillCooldown,"GN_MANDRAGORA",-400;\n   bonus2 bSkillAtk,"GN_CRAZYWEED",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310138,'aegis_310138','Automatic Orb(Acid Explosion)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",15;\nbonus2 bSkillAtk,"GN_SPORE_EXPLOSION",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",3;\n   bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",7;\n   bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310139,'aegis_310139','Automatic Orb(Sonic Impact)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"GC_CROSSIMPACT",15;\nbonus2 bSkillAtk,"AS_SONICBLOW",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"GC_CROSSIMPACT",3;\n   bonus2 bSkillAtk,"AS_SONICBLOW",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"GC_CROSSIMPACT",7;\n   bonus2 bSkillAtk,"AS_SONICBLOW",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310140,'aegis_310140','Automatic Orb(Cutter Slasher)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",15;\nbonus2 bSkillAtk,"GC_ROLLINGCUTTER",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",3;\n   bonus2 bSkillAtk,"GC_ROLLINGCUTTER",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",7;\n   bonus2 bSkillAtk,"GC_ROLLINGCUTTER",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310141,'aegis_310141','Automatic Orb(Berserk Slash)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"GC_COUNTERSLASH",15;\nbonus2 bSkillAtk,"ASC_BREAKER",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"GC_COUNTERSLASH",3;\n   bonus2 bSkillAtk,"ASC_BREAKER",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"GC_COUNTERSLASH",7;\n   bonus2 bSkillAtk,"ASC_BREAKER",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310142,'aegis_310142','Automatic Orb(Fatal Raid)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SC_FATALMENACE",15;\nbonus2 bSkillAtk,"RG_RAID",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SC_FATALMENACE",3;\n   bonus2 bSkillAtk,"RG_RAID",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SC_FATALMENACE",7;\n   bonus2 bSkillAtk,"RG_RAID",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310143,'aegis_310143','Automatic Orb(Shadow Spell)','Card','.@r = getrefine();\nbonus2 bMagicAtkEle,Ele_All,15;\nif (.@r>=9) {\n   bonus2 bMagicAtkEle,Ele_All,3;\n}\nif (.@r>=11) {\n   bonus2 bMagicAtkEle,Ele_All,7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310144,'aegis_310144','Automatic Orb(Angle Shot)','Card','.@r = getrefine();\nbonus bLongAtkRate,10;\nbonus2 bSkillAtk,"SC_TRIANGLESHOT",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SC_TRIANGLESHOT",3;\n}\nif (.@r>=11) {\n   bonus bLongAtkRate,5;\n   bonus2 bSkillAtk,"SC_TRIANGLESHOT",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310145,'aegis_310145','Automatic Orb(Crimson Strain)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"WL_EARTHSTRAIN",15;\nbonus2 bSkillAtk,"WL_CRIMSONROCK",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"WL_EARTHSTRAIN",3;\n   bonus2 bSkillAtk,"WL_CRIMSONROCK",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"WL_EARTHSTRAIN",7;\n   bonus2 bSkillAtk,"WL_CRIMSONROCK",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310146,'aegis_310146','Automatic Orb(Jack Lightning)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"WL_CHAINLIGHTNING",15;\nbonus2 bSkillAtk,"WL_JACKFROST",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"WL_CHAINLIGHTNING",3;\n   bonus2 bSkillAtk,"WL_JACKFROST",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"WL_CHAINLIGHTNING",7;\n   bonus2 bSkillAtk,"WL_JACKFROST",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310147,'aegis_310147','Automatic Orb(Comet Vortex)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"WL_TETRAVORTEX",15;\nbonus2 bSkillAtk,"WL_COMET",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"WL_TETRAVORTEX",3;\n   bonus2 bSkillAtk,"WL_COMET",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"WL_TETRAVORTEX",7;\n   bonus2 bSkillAtk,"WL_COMET",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310148,'aegis_310148','Automatic Orb(Double Bolt)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"MG_LIGHTNINGBOLT",15;\nbonus2 bSkillAtk,"MG_FIREBOLT",15;\nbonus2 bSkillAtk,"MG_COLDBOLT",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",3;\n   bonus2 bSkillAtk,"MG_FIREBOLT",3;\n   bonus2 bSkillAtk,"MG_COLDBOLT",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",7;\n   bonus2 bSkillAtk,"MG_FIREBOLT",7;\n   bonus2 bSkillAtk,"MG_COLDBOLT",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310149,'aegis_310149','Automatic Orb(Warm Wave)','Card','.@r = getrefine();\nbonus2 bSkillCooldown,"SO_WARMER",-1000;\nbonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15;\nif (.@r>=9) {\n   bonus2 bSkillCooldown,"SO_WARMER",-2000;\n   bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillCooldown,"SO_WARMER",-4000;\n   bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310150,'aegis_310150','Automatic Orb(Diamond Grave)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SO_DIAMONDDUST",15;\nbonus2 bSkillAtk,"SO_EARTHGRAVE",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SO_DIAMONDDUST",3;\n   bonus2 bSkillAtk,"SO_EARTHGRAVE",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SO_DIAMONDDUST",7;\n   bonus2 bSkillAtk,"SO_EARTHGRAVE",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310151,'aegis_310151','Automatic Orb(Magnusmus)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"PR_MAGNUS",15;\nbonus2 bSkillAtk,"AB_ADORAMUS",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"PR_MAGNUS",3;\n   bonus2 bSkillAtk,"AB_ADORAMUS",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"PR_MAGNUS",7;\n   bonus2 bSkillAtk,"AB_ADORAMUS",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310152,'aegis_310152','Automatic Orb(Holy Judex)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"AL_HOLYLIGHT",15;\nbonus2 bSkillAtk,"AB_JUDEX",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"AL_HOLYLIGHT",3;\n   bonus2 bSkillAtk,"AB_JUDEX",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"AL_HOLYLIGHT",7;\n   bonus2 bSkillAtk,"AB_JUDEX",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310153,'aegis_310153','Automatic Orb(Duple Lica)','Card','.@r = getrefine();\nbonus2 bSkillCooldown,"HP_BASILICA",-2000;\nbonus2 bSkillAtk,"AB_DUPLELIGHT",15;\nif (.@r>=9) {\n   bonus2 bSkillCooldown,"HP_BASILICA",-3000;\n   bonus2 bSkillAtk,"AB_DUPLELIGHT",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillCooldown,"HP_BASILICA",-5000;\n   bonus2 bSkillAtk,"AB_DUPLELIGHT",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310154,'aegis_310154','Automatic Orb(Tiger Empire)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SR_FALLENEMPIRE",15;\nbonus2 bSkillAtk,"SR_TIGERCANNON",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SR_FALLENEMPIRE",3;\n   bonus2 bSkillAtk,"SR_TIGERCANNON",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SR_FALLENEMPIRE",7;\n   bonus2 bSkillAtk,"SR_TIGERCANNON",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310155,'aegis_310155','Automatic Orb(Rampage Arrow)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SR_KNUCKLEARROW",15;\nbonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SR_KNUCKLEARROW",3;\n   bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SR_KNUCKLEARROW",7;\n   bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310156,'aegis_310156','Automatic Orb(Raging Combo)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"MO_COMBOFINISH",15;\nbonus2 bSkillAtk,"CH_CHAINCRUSH",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"MO_COMBOFINISH",3;\n   bonus2 bSkillAtk,"CH_CHAINCRUSH",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"MO_COMBOFINISH",7;\n   bonus2 bSkillAtk,"CH_CHAINCRUSH",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310157,'aegis_310157','Automatic Orb(Cluster)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"RA_CLUSTERBOMB",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"RA_CLUSTERBOMB",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"RA_CLUSTERBOMB",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310158,'aegis_310158','Automatic Orb(Breeze Shooting)','Card','.@r = getrefine();\nbonus bCritAtkRate,10;\nbonus2 bSkillAtk,"SN_SHARPSHOOTING",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SN_SHARPSHOOTING",3;\n}\nif (.@r>=11) {\n   bonus bCritAtkRate,5;\n   bonus2 bSkillAtk,"SN_SHARPSHOOTING",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310159,'aegis_310159','Automatic Orb(Aimed Storm)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"RA_ARROWSTORM",15;\nbonus2 bSkillAtk,"RA_AIMEDBOLT",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"RA_ARROWSTORM",3;\n   bonus2 bSkillAtk,"RA_AIMEDBOLT",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"RA_ARROWSTORM",7;\n   bonus2 bSkillAtk,"RA_AIMEDBOLT",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310160,'aegis_310160','Automatic Orb(Metal Echo)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"WM_GREAT_ECHO",15;\nbonus2 bSkillAtk,"WM_METALICSOUND",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"WM_GREAT_ECHO",3;\n   bonus2 bSkillAtk,"WM_METALICSOUND",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"WM_GREAT_ECHO",7;\n   bonus2 bSkillAtk,"WM_METALICSOUND",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310161,'aegis_310161','Automatic Orb(Reverberation)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"WM_REVERBERATION",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"WM_REVERBERATION",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"WM_REVERBERATION",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310162,'aegis_310162','Automatic Orb(Vulcan Severe)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15;\nbonus2 bSkillAtk,"CG_ARROWVULCAN",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",3;\n   bonus2 bSkillAtk,"CG_ARROWVULCAN",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",7;\n   bonus2 bSkillAtk,"CG_ARROWVULCAN",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310163,'aegis_310163','Automatic Orb(Prominence Burst)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SJ_SOLARBURST",15;\nbonus2 bSkillAtk,"SJ_PROMINENCEKICK",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SJ_SOLARBURST",3;\n   bonus2 bSkillAtk,"SJ_PROMINENCEKICK",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SJ_SOLARBURST",7;\n   bonus2 bSkillAtk,"SJ_PROMINENCEKICK",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310164,'aegis_310164','Automatic Orb(Moon Kick)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SJ_FULLMOONKICK",15;\nbonus2 bSkillAtk,"SJ_NEWMOONKICK",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SJ_FULLMOONKICK",3;\n   bonus2 bSkillAtk,"SJ_NEWMOONKICK",3;\n}\nif (.@r>=11) {\n   bonus bCritAtkRate,5;\n   bonus2 bSkillAtk,"SJ_FULLMOONKICK",7;\n   bonus2 bSkillAtk,"SJ_NEWMOONKICK",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310165,'aegis_310165','Automatic Orb(Flash Falling)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",15;\nbonus2 bSkillAtk,"SJ_FLASHKICK",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",3;\n   bonus2 bSkillAtk,"SJ_FLASHKICK",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",7;\n   bonus2 bSkillAtk,"SJ_FLASHKICK",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310166,'aegis_310166','Automatic Orb(Eswhoo)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SL_SMA",15;\nbonus2 bSkillAtk,"SP_SWHOO",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SL_SMA",3;\n   bonus2 bSkillAtk,"SP_SWHOO",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SL_SMA",7;\n   bonus2 bSkillAtk,"SP_SWHOO",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310167,'aegis_310167','Automatic Orb(Espa)','Card','.@r = getrefine();\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SP_SPA",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SP_SPA",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310168,'aegis_310168','Automatic Orb(Curse Explosion)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SP_CURSEEXPLOSION",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SP_CURSEEXPLOSION",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SP_CURSEEXPLOSION",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310169,'aegis_310169','Automatic Orb(Des Hammer Dance)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"GS_DESPERADO",15;\nbonus2 bSkillAtk,"RL_FIREDANCE",15;\nbonus2 bSkillAtk,"RL_HAMMER_OF_GOD",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"GS_DESPERADO",3;\n   bonus2 bSkillAtk,"RL_FIREDANCE",3;\n   bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"GS_DESPERADO",7;\n   bonus2 bSkillAtk,"RL_FIREDANCE",7;\n   bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310170,'aegis_310170','Automatic Orb(Fire Howling Tail)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"RL_FIRE_RAIN",15;\nbonus2 bSkillAtk,"RL_D_TAIL",15;\nbonus2 bSkillAtk,"RL_H_MINE",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"RL_FIRE_RAIN",3;\n   bonus2 bSkillAtk,"RL_D_TAIL",3;\n   bonus2 bSkillAtk,"RL_H_MINE",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"RL_FIRE_RAIN",7;\n   bonus2 bSkillAtk,"RL_D_TAIL",7;\n   bonus2 bSkillAtk,"RL_H_MINE",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310171,'aegis_310171','Automatic Orb(Storm Buster Trip)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"RL_BANISHING_BUSTER",15;\nbonus2 bSkillAtk,"RL_R_TRIP",15;\nbonus2 bSkillAtk,"RL_S_STORM",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"RL_BANISHING_BUSTER",3;\n   bonus2 bSkillAtk,"RL_R_TRIP",3;\n   bonus2 bSkillAtk,"RL_S_STORM",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"RL_BANISHING_BUSTER",7;\n   bonus2 bSkillAtk,"RL_R_TRIP",7;\n   bonus2 bSkillAtk,"RL_S_STORM",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310172,'aegis_310172','Automatic Orb(Flame Ice Wind)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"NJ_KOUENKA",15;\nbonus2 bSkillAtk,"NJ_HYOUSENSOU",15;\nbonus2 bSkillAtk,"NJ_HUUJIN",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"NJ_KOUENKA",3;\n   bonus2 bSkillAtk,"NJ_HYOUSENSOU",3;\n   bonus2 bSkillAtk,"NJ_HUUJIN",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"NJ_KOUENKA",7;\n   bonus2 bSkillAtk,"NJ_HYOUSENSOU",7;\n   bonus2 bSkillAtk,"NJ_HUUJIN",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310173,'aegis_310173','Automatic Orb(Cross Slash)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"KO_JYUMONJIKIRI",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"KO_JYUMONJIKIRI",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"KO_JYUMONJIKIRI",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310174,'aegis_310174','Automatic Orb(Exploding Flake Wind)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"NJ_BAKUENRYU",15;\nbonus2 bSkillAtk,"NJ_HYOUSYOURAKU",15;\nbonus2 bSkillAtk,"NJ_KAMAITACHI",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"NJ_BAKUENRYU",3;\n   bonus2 bSkillAtk,"NJ_HYOUSYOURAKU",3;\n   bonus2 bSkillAtk,"NJ_KAMAITACHI",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"NJ_BAKUENRYU",7;\n   bonus2 bSkillAtk,"NJ_HYOUSYOURAKU",7;\n   bonus2 bSkillAtk,"NJ_KAMAITACHI",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310175,'aegis_310175','Automatic Orb(Power of Sea)','Card','.@r = getrefine();\nbonus2 bSkillCooldown,"SU_SHRIMPARTY",-500;\nbonus2 bSkillCooldown,"SU_TUNAPARTY",-500;\nif (.@r>=9) {\n   bonus2 bSkillCooldown,"SU_SHRIMPARTY",-1000;\n   bonus2 bSkillCooldown,"SU_TUNAPARTY",-1000;\n}\nif (.@r>=11) {\n   bonus2 bSkillCooldown,"SU_SHRIMPARTY",-1500;\n   bonus2 bSkillCooldown,"SU_TUNAPARTY",-1500;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310176,'aegis_310176','Automatic Orb(Power of Land)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SU_SV_STEMSPEAR",15;\nbonus2 bSkillAtk,"SU_CN_METEOR",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SU_SV_STEMSPEAR",3;\n   bonus2 bSkillAtk,"SU_CN_METEOR",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SU_SV_STEMSPEAR",7;\n   bonus2 bSkillAtk,"SU_CN_METEOR",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310177,'aegis_310177','Automatic Orb(Power of Life)','Card','.@r = getrefine();\nbonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",15;\nbonus2 bSkillAtk,"SU_PICKYPECK",15;\nif (.@r>=9) {\n   bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",3;\n   bonus2 bSkillAtk,"SU_PICKYPECK",3;\n}\nif (.@r>=11) {\n   bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",7;\n   bonus2 bSkillAtk,"SU_PICKYPECK",7;\n}');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310180,'Warlock_Robe2','Warlock Stone II (Garment)','Card','bonus2 bSkillAtk,"WL_COMET",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310181,'Warlock_Top2','High Wizard Stone II (Upper)','Card','bonus2 bSkillAtk,"WZ_METEOR",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310182,'Warlock_Middle2','High Wizard Stone II (Middle)','Card','bonus2 bMagicAtkEle,Ele_Neutral,getskilllv("HW_GRAVITATION")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310183,'Warlock_Bottom2','High Wizard Stone II (Lower)','Card','bonus bMatk,getskilllv("HW_SOULDRAIN")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310184,'RoyalGuard_Robe2','Royal Guard Stone II (Garment)','Card','bonus2 bSkillAtk,"LG_RAYOFGENESIS",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310185,'RoyalGuard_Bottom2','Paladin Stone II (Lower)','Card','bonus2 bMagicAtkEle,Ele_Holy,getskilllv("CR_GRANDCROSS");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310186,'RoyalGuard_Middle2','Paladin Stone II (Middle)','Card','bonus2 bSkillAtk,"PA_PRESSURE",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310187,'RoyalGuard_Top2','Paladin Stone II (Upper)','Card','bonus bVariableCastrate,getskilllv("CR_TRUST")*-1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310188,'GuillotineCross_Robe2','Guillotine Cross Stone II (Garment)','Card','bonus bCritAtkRate,15; if (getskilllv("AS_KATAR") >= 10) { skill "TF_DOUBLE",3; bonus bDoubleRate,15; }');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310189,'GuillotineCross_Bottom2','Assassin Cross Stone II (Lower)','Card','bonus2 bAddSize,Size_All,getskilllv("ASC_KATAR")*2;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310190,'GuillotineCross_Middle2','Assassin Cross Stone II (Middle)','Card','bonus2 bSkillAtk,"AS_SONICBLOW",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310191,'GuillotineCross_Top2','Assassin Cross Stone II (Upper)','Card','bonus bDelayrate,getskilllv("ASC_BREAKER")*-1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310197,'aegis_310197','Anger Lv1','Card','bonus2 bAddClass,Class_All,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310198,'aegis_310198','Anger Lv2','Card','bonus2 bAddClass,Class_All,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310199,'aegis_310199','Anger Lv3','Card','bonus2 bAddClass,Class_All,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310200,'aegis_310200','Anger Lv4','Card','bonus2 bAddClass,Class_All,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310201,'aegis_310201','Anger Lv5','Card','bonus2 bAddClass,Class_All,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310202,'aegis_310202','Horror Lv1','Card','bonus bMatkRate,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310203,'aegis_310203','Horror Lv2','Card','bonus bMatkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310204,'aegis_310204','Horror Lv3','Card','bonus bMatkRate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310205,'aegis_310205','Horror Lv4','Card','bonus bMatkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310206,'aegis_310206','Horror Lv5','Card','bonus bMatkRate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310207,'aegis_310207','Resentment Lv1','Card','bonus bCritAtkRate,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310208,'aegis_310208','Resentment Lv2','Card','bonus bCritAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310209,'aegis_310209','Resentment Lv3','Card','bonus bCritAtkRate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310210,'aegis_310210','Resentment Lv4','Card','bonus bCritAtkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310211,'aegis_310211','Resentment Lv5','Card','bonus bCritAtkRate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310212,'aegis_310212','Regret Lv1','Card','bonus bMaxHPrate,1;\nbonus bMaxSPrate,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310213,'aegis_310213','Regret Lv2','Card','bonus bMaxHPrate,3;\nbonus bMaxSPrate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310214,'aegis_310214','Regret Lv3','Card','bonus bMaxHPrate,5;\nbonus bMaxSPrate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310215,'aegis_310215','Regret Lv4','Card','bonus bMaxHPrate,7;\nbonus bMaxSPrate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310216,'aegis_310216','Regret Lv5','Card','bonus bMaxHPrate,10;\nbonus bMaxSPrate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310217,'aegis_310217','Empathy Lv1','Card','bonus2 bAddClass,Class_All,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310218,'aegis_310218','Empathy Lv2','Card','bonus2 bAddClass,Class_All,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310219,'aegis_310219','Empathy Lv3','Card','bonus2 bAddClass,Class_All,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310220,'aegis_310220','Empathy Lv4','Card','bonus2 bAddClass,Class_All,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310221,'aegis_310221','Empathy Lv5','Card','bonus2 bAddClass,Class_All,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310222,'aegis_310222','Happiness Lv1','Card','bonus bMatkRate,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310223,'aegis_310223','Happiness Lv2','Card','bonus bMatkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310224,'aegis_310224','Happiness Lv3','Card','bonus bMatkRate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310225,'aegis_310225','Happiness Lv4','Card','bonus bMatkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310226,'aegis_310226','Happiness Lv5','Card','bonus bMatkRate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310227,'aegis_310227','Shelter Lv1','Card','bonus bCritAtkRate,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310228,'aegis_310228','Shelter Lv2','Card','bonus bCritAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310229,'aegis_310229','Shelter Lv3','Card','bonus bCritAtkRate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310230,'aegis_310230','Shelter Lv4','Card','bonus bCritAtkRate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310231,'aegis_310231','Shelter Lv5','Card','bonus bCritAtkRate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310232,'aegis_310232','Solace Lv1','Card','bonus bMaxHPrate,1;\nbonus bMaxSPrate,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310233,'aegis_310233','Solace Lv2','Card','bonus bMaxHPrate,3;\nbonus bMaxSPrate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310234,'aegis_310234','Solace Lv3','Card','bonus bMaxHPrate,5;\nbonus bMaxSPrate,5;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310235,'aegis_310235','Solace Lv4','Card','bonus bMaxHPrate,7;\nbonus bMaxSPrate,7;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310236,'aegis_310236','Solace Lv5','Card','bonus bMaxHPrate,10;\nbonus bMaxSPrate,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310237,'aegis_310237','Inverse Scale Lv1','Card','bonus2 bAddRace,RC_Angel,10;\nbonus2 bAddRace,RC_Dragon,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310238,'aegis_310238','Inverse Scale Lv2','Card','bonus2 bAddRace,RC_Angel,15;\nbonus2 bAddRace,RC_Dragon,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310239,'aegis_310239','Inverse Scale Lv3','Card','bonus2 bAddRace,RC_Angel,20;\nbonus2 bAddRace,RC_Dragon,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310240,'aegis_310240','Inverse Scale Lv4','Card','bonus2 bAddRace,RC_Angel,25;\nbonus2 bAddRace,RC_Dragon,25;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310241,'aegis_310241','Inverse Scale Lv5','Card','bonus2 bAddRace,RC_Angel,35;\nbonus2 bAddRace,RC_Dragon,35;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310242,'aegis_310242','Dragon Scale Lv1','Card','bonus2 bMagicAddRace,RC_Angel,10;\nbonus2 bMagicAddRace,RC_Dragon,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310243,'aegis_310243','Dragon Scale Lv2','Card','bonus2 bMagicAddRace,RC_Angel,15;\nbonus2 bMagicAddRace,RC_Dragon,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310244,'aegis_310244','Dragon Scale Lv3','Card','bonus2 bMagicAddRace,RC_Angel,20;\nbonus2 bMagicAddRace,RC_Dragon,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310245,'aegis_310245','Dragon Scale Lv4','Card','bonus2 bMagicAddRace,RC_Angel,25;\nbonus2 bMagicAddRace,RC_Dragon,25;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310246,'aegis_310246','Dragon Scale Lv5','Card','bonus2 bMagicAddRace,RC_Angel,35;\nbonus2 bMagicAddRace,RC_Dragon,35;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310247,'aegis_310247','Divine Evil Lv1','Card','bonus2 bAddRace,RC_Angel,10;\nbonus2 bAddRace,RC_Demon,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310248,'aegis_310248','Divine Evil Lv2','Card','bonus2 bAddRace,RC_Angel,15;\nbonus2 bAddRace,RC_Demon,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310249,'aegis_310249','Divine Evil Lv3','Card','bonus2 bAddRace,RC_Angel,20;\nbonus2 bAddRace,RC_Demon,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310250,'aegis_310250','Divine Evil Lv4','Card','bonus2 bAddRace,RC_Angel,25;\nbonus2 bAddRace,RC_Demon,25;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310251,'aegis_310251','Divine Evil Lv5','Card','bonus2 bAddRace,RC_Angel,35;\nbonus2 bAddRace,RC_Demon,35;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310252,'aegis_310252','Destructive Evil Lv1','Card','bonus2 bMagicAddRace,RC_Angel,10;\nbonus2 bMagicAddRace,RC_Demon,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310253,'aegis_310253','Destructive Evil Lv2','Card','bonus2 bMagicAddRace,RC_Angel,15;\nbonus2 bMagicAddRace,RC_Demon,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310254,'aegis_310254','Destructive Evil Lv3','Card','bonus2 bMagicAddRace,RC_Angel,20;\nbonus2 bMagicAddRace,RC_Demon,20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310255,'aegis_310255','Destructive Evil Lv4','Card','bonus2 bMagicAddRace,RC_Angel,25;\nbonus2 bMagicAddRace,RC_Demon,25;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310256,'aegis_310256','Destructive Evil Lv5','Card','bonus2 bMagicAddRace,RC_Angel,35;\nbonus2 bMagicAddRace,RC_Demon,35;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310257,'aegis_310257','Rune Knight Stone II (Garment)','Card','bonus2 bSkillAtk,"RK_IGNITIONBREAK",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310258,'aegis_310258','Lord Knight Stone II (Top)','Card','bonus bLongAtkRate,getskilllv("LK_SPIRALPIERCE");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310259,'aegis_310259','Lord Knight Stone II (Middle)','Card','bonus2 bSkillAtk,"MS_BOWLINGBASH",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310260,'aegis_310260','Lord Knight Stone II (Bottom)','Card','bonus2 bSkillAtk,"LK_SPIRALPIERCE",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310261,'aegis_310261','Creator Stone II (Garment)','Card','bonus2 bSkillAtk,"GN_CRAZYWEED",20;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310262,'aegis_310262','Creator Stone II (Top)','Card','bonus2 bAddSize,Size_All,getskilllv("AM_CANNIBALIZE");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310263,'aegis_310263','Creator Stone II (Middle)','Card','bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",25;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310264,'aegis_310264','Creator Stone II (Bottom)','Card','bonus bLongAtkRate,(getskilllv("CR_ACIDDEMONSTRATION")/2);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310265,'aegis_310265','Wanderer\'s Stone II (Garment)','Card','bonus2 bSkillAtk,"WM_REVERBERATION",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310266,'aegis_310266','Trentini Gypsy Stone II (Top)','Card','bonus2 bSkillAtk,"CG_ARROWVULCAN",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310267,'aegis_310267','Trentini Gypsy Stone II (Middle)','Card','bonus2 bMagicAtkEle,Ele_Neutral,getskilllv("BA_MUSICALSTRIKE")+getskilllv("DC_THROWARROW");');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310268,'aegis_310268','Trentini Gypsy Stone II (Bottom)','Card','bonus2 bSkillAtk,"BA_MUSICALSTRIKE",15;\nbonus2 bSkillAtk,"DC_THROWARROW",15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310325,'aegis_310325','Range Stone (Top)','Card','bonus bLongAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310326,'aegis_310326','Range Stone (Bottom)','Card','bonus bLongAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310327,'aegis_310327','Melee Stone (Top)','Card','bonus bShortAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310328,'aegis_310328','Melee Stone (Middle)','Card','bonus bShortAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310329,'aegis_310329','Melee Stone (Bottom)','Card','bonus bShortAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (310330,'aegis_310330','Range Stone (Middle)','Card','bonus bLongAtkRate,3;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000008,'RangerStone_II_Top','Sniper Stone II (Top)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000009,'RangerStone_II_Middle','Sniper Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000010,'RangerStone_II_Bottom','Sniper Stone II (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000011,'RangerStone_II_Garment','Ranger Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000012,'MechanicStone_II_Top','Whitesmith Stone II (Top)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000013,'MechanicStone_II_Middle','Whitesmith Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000014,'MechanicStone_II_Bottom','Whitesmith Stone II (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000015,'MechanicStone_II_Garment','Mechanic Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000016,'HighpriestStone_II_Top','High Priest Stone II (Top)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000017,'HighpriestStone_II_Middle','High Priest Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000018,'HighpriestStone_II_Bottom','High Priest Stone II (Bottom)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000019,'ArchbishopStone_II_Garment','Archbishop Stone II (Garment)','Etc',100);
+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 (1000092,'ELYUMINA_RADAR','Elyumina Radar','Etc',10,100,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 (1000093,'PITAYA_TAIL_R','Red Pitaya Tail','Etc',10,100,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 (1000094,'PITAYA_TAIL_Y','Yellow Pitaya Tail','Etc',10,100,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 (1000095,'PITAYA_TAIL_B','Blue Pitaya Tail','Etc',10,100,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 (1000096,'PITAYA_TAIL_G','Green Pitaya Tail','Etc',10,100,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 (1000097,'PITAYA_TAIL_P','Purple Pitaya Tail','Etc',10,100,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 (1000098,'PITAYA_TAIL_BOSS','Boss Pitaya Tail','Etc',10,100,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 (1000099,'GARDENERS_COOKIE','Gardener\'s Cookie','Etc',10,100,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_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000100,'FREEZING_TRAP','Freezing Trap','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_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000101,'AUTODOLL_PARTS','Autodoll Parts','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_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000102,'EMERGENCY_KEY','Emergency Key','Etc',10,100,true,true,true,true,true,true,true,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_buyingstore`) VALUES (1000103,'aegis_1000103','Barmeal Ticket','Etc',true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000104,'Magical_Igni_Stone','Magical Soapstone','Etc',100,true,true,true,true,true,true,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000105,'aegis_1000105','Automatic Modification Module(Defense)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000106,'aegis_1000106','Automatic Modification Module(Magic Defense)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000107,'aegis_1000107','Automatic Modification Module(VIT)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000108,'aegis_1000108','Automatic Modification Module(LUK)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000109,'aegis_1000109','Automatic Modification Module(STR)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000110,'aegis_1000110','Automatic Modification Module(AGI)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000111,'aegis_1000111','Automatic Modification Module(INT)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000112,'aegis_1000112','Automatic Modification Module(DEX)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000113,'aegis_1000113','Automatic Modification Module(HP Recovery)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000114,'aegis_1000114','Automatic Modification Module(SP Recovery)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000115,'aegis_1000115','Automatic Modification Module(Spell)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000116,'aegis_1000116','Automatic Modification Module(Attack Speed)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000117,'aegis_1000117','Automatic Modification Module(Fatal)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000118,'aegis_1000118','Automatic Modification Module(Expert Archer)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000119,'aegis_1000119','Automatic Modification Module(Vital)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000120,'aegis_1000120','Automatic Modification Module(Mental)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000121,'aegis_1000121','Automatic Modification Module(Heal)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000122,'aegis_1000122','Automatic Modification Module(Attack Power)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000123,'aegis_1000123','Automatic Modification Module(Magic Power)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000124,'aegis_1000124','Automatic Modification Module(Shooter)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000125,'aegis_1000125','Automatic Modification Module(Fast)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000126,'aegis_1000126','Automatic Modification Module(Caster)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000127,'aegis_1000127','Automatic Modification Module(Critical)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000128,'aegis_1000128','Automatic Modification Module(Magical Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000129,'aegis_1000129','Automatic Modification Module(Attacker Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000130,'aegis_1000130','Automatic Modification Module(Range Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000131,'aegis_1000131','Automatic Modification Module(Critical Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000132,'aegis_1000132','Automatic Modification Module(Recovery Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000133,'aegis_1000133','Automatic Modification Module(After Skill Delay)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000134,'aegis_1000134','Automatic Modification Module(Above All)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000135,'aegis_1000135','Automatic Module (Above All)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000136,'aegis_1000136','Automatic Modification Module(Drain Life)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000137,'aegis_1000137','Automatic Modification Module(Drain Soul)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000138,'aegis_1000138','Automatic Modification Module(Magic Healing)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000139,'aegis_1000139','Automatic Modification Module(Magic Soul)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000140,'aegis_1000140','Automatic Modification Module(Power Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000141,'aegis_1000141','Automatic Modification Module(Robust)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000142,'aegis_1000142','Automatic Modification Module(Powerful)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000143,'aegis_1000143','Automatic Modification Module(All Force)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000144,'aegis_1000144','Automatic Module(Unlimited Vital)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000145,'aegis_1000145','Automatic Module(Spell Buster)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000146,'aegis_1000146','Automatic Module(Firing Shot)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000147,'aegis_1000147','Automatic Module(Over Power)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000148,'aegis_1000148','Automatic Module(Fatal Flash)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000149,'aegis_1000149','Automatic Module(Lucky Strike)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000152,'aegis_1000152','Automatic Module(Dragonic Breath)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000153,'aegis_1000153','Automatic Module(Wave Break)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000154,'aegis_1000154','Automatic Module(Hundred Spiral)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000155,'aegis_1000155','Automatic Module(Drive Press)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000156,'aegis_1000156','Automatic Module(Banishing Cannon)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000157,'aegis_1000157','Automatic Module(Genesis Pressure)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000158,'aegis_1000158','Automatic Module(Boost Cannon)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000159,'aegis_1000159','Automatic Module(Cold Flare)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000160,'aegis_1000160','Automatic Module(Tornado Swing)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000161,'aegis_1000161','Automatic Module(Cannon Tornado)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000162,'aegis_1000162','Automatic Module(Crazy Mandragora)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000163,'aegis_1000163','Automatic Module(Acid Explosion)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000164,'aegis_1000164','Automatic Module(Sonic Impact)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000165,'aegis_1000165','Automatic Module(Cutter Slasher)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000166,'aegis_1000166','Automatic Module(Berserk Slash)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000167,'aegis_1000167','Automatic Module(Fatal Raid)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000168,'aegis_1000168','Automatic Module(Shadow Spell)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000169,'aegis_1000169','Automatic Module(Angle Shot)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000170,'aegis_1000170','Automatic Module(Crimson Strain)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000171,'aegis_1000171','Automatic Module(Jack Lightning)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000172,'aegis_1000172','Automatic Module(Comet Vortex)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000173,'aegis_1000173','Automatic Module(Double Bolt)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000174,'aegis_1000174','Automatic Module(Warm Wave)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000175,'aegis_1000175','Automatic Module(Diamond Grave)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000176,'aegis_1000176','Automatic Module(Magnusmus)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000177,'aegis_1000177','Automatic Module(Holy Judex)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000178,'aegis_1000178','Automatic Module(Duple Lica)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000179,'aegis_1000179','Automatic Module(Tiger Empire)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000180,'aegis_1000180','Automatic Module(Rampage Arrow)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000181,'aegis_1000181','Automatic Module(Raging Combo)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000182,'aegis_1000182','Automatic Module(Cluster)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000183,'aegis_1000183','Automatic Module(Breeze Shooting)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000184,'aegis_1000184','Automatic Module(Aimed Storm)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000185,'aegis_1000185','Automatic Module(Metal Echo)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000186,'aegis_1000186','Automatic Module(Reverberation)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000187,'aegis_1000187','Automatic Module(Vulcan Severe)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000188,'aegis_1000188','Automatic Module(Prominence Burst)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000189,'aegis_1000189','Automatic Module(Moon Kick)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000190,'aegis_1000190','Automatic Module(Flash Falling)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000191,'aegis_1000191','Automatic Module(Eswhoo)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000192,'aegis_1000192','Automatic Module(Espa)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000193,'aegis_1000193','Automatic Module(Curse Explosion)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000194,'aegis_1000194','Automatic Module(Des Hammer Dance)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000195,'aegis_1000195','Automatic Module(Fire Howling Tail)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000196,'aegis_1000196','Automatic Module(Storm Buster Trip)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000197,'aegis_1000197','Automatic Module(Flame Ice Wind)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000198,'aegis_1000198','Automatic Module(Cross Slash)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000199,'aegis_1000199','Automatic Module(Exploding Flake Wind)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000200,'aegis_1000200','Automatic Module(Power of Sea)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000201,'aegis_1000201','Automatic Module(Power of Land)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000202,'aegis_1000202','Automatic Module(Power of Life)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000207,'aegis_1000207','Automatic Modification Module(Mirror Counter)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000208,'aegis_1000208','Automatic Modification Module(Reflection Reject)','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000213,'WarlockStone_Robe2','Warlock Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000214,'WarlockStone_Top2','High Wizard Stone II (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000215,'WarlockStone_Middle2','High Wizard Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000216,'WarlockStone_Bottom2','High Wizard Stone II (Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000217,'RoyalGuardStone_Robe2','Royal Guard Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000218,'RoyalGuardStone_Top2','Paladin Stone II (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000219,'RoyalGuardStone_Middle2','Paladin Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000220,'RoyalGuardStone_Bottom2','Paladin Stone II (Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000221,'GuillotineCrossStone_Robe2','Guillotine Cross Stone II (Garment)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000222,'GuillotineCrossStone_Top2','Assassin Cross Stone II (Upper)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000223,'GuillotineCrossStone_Middle2','Assassin Cross Stone II (Middle)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000224,'GuillotineCrossStone_Bottom2','Assassin Cross Stone II (Lower)','Etc',100);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000225,'aegis_1000225','Potato Chips','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000226,'Broken_Dollcore','Core of a Broken Doll','Etc',100,true,true,true,true,true,true,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (1000227,'aegis_1000227','Cloud Cotton','Etc',10);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000231,'Broken_AutoDoll_Parts','Parts of Broken Automatic Doll','Etc',100,true,true,true,true,true,true,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (1000232,'Autodoll_Communicator','Communication Chip of Automatic Doll','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`) VALUES (1000235,'aegis_1000235','Great Hunter\'s Mark','Etc');

+ 169 - 19
sql-files/item_db_re_usable.sql

@@ -190,6 +190,10 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_overri
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (6720,'Status_Reset_Coupon','Status Reset Coupon','Cash',10,1,100,true,true,true,true,true,true,true,true,'resetstatus;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (6721,'Status_Reset_Coupon_','Status Reset Coupon','Cash',10,1,100,true,true,true,true,true,true,true,true,'resetstatus;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`class_all`,`gender`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (7037,'Trade_Coupon','Coupon','Usable',100,false,'Female',100,true,true,true,true,true,true,true,'/*set pcroom,(gettimetick(2)+7200);*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (9510,'Costume_Enchant_Stone_Box17','Costume Enchant Stone Box17','Cash',10,'/*getgroupitem(IG_Costume_Enchant_Stone_Box17);*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (9523,'Metal_Smelting_Ticket','Metal Refining Ticket','Delayconsume',1,'/*upgradeui 9523;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (9550,'Gemstone_Of_Time','Gemstone of Time','Delayconsume',1,'/*upgradeui 9550;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (9551,'Time_Unseal_Key','Time Unseal Key','Delayconsume',1,'/*upgradeui 9551;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (11500,'Light_Yellow_Pot','Light Yellow Potion','Healing',550,10,100,true,true,true,true,true,true,true,'itemheal rand(175,235),0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (11501,'Light_White_Pot','Light White Potion','Healing',1200,10,100,true,true,true,true,true,true,true,'itemheal rand(325,405),0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (11502,'Light_Blue_Pot','Light Blue Potion','Healing',5000,10,100,true,true,true,true,true,true,true,'itemheal 0,rand(40,60);');
@@ -282,8 +286,8 @@ 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`) VALUES (11598,'Bitter_Cacao_Bean','Bitter Cacao Bean','Healing',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`) VALUES (11599,'Superstar_Potion','Superstar Potion','Healing',10,10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`,`script`) VALUES (11600,'Shining_Holy_Water','Shining Holy Water','Healing',10,15,true,'if(strcharinfo(3)=="prt_q") { bonus_script "{ bonus2 bSubSize,Size_All,10; }",600; sc_end SC_SILENCE; sc_end SC_POISON; sc_end SC_CURSE; heal 1000,0; }');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (11602,'Catnip_Fruit','Catnip Fruit','Healing',15,1,'itemheal rand(10,40),0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (11601,'Delicious_Anchovy','Delicious Anchovy','Healing',20,30,'itemheal rand(30,46),0;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (11602,'Catnip_Fruit','Catnip Fruit','Healing',15,1,'itemheal rand(10,40),0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (11605,'Cookies_Bat','Cookie Bat','Healing',50,'itemheal rand(50,100),0; /*TODO*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (11616,'Yummy_Meat','Delicious Meat','Healing',1400,50,'itemheal rand(100,150),0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`delay_duration`,`script`) VALUES (11621,'Red_Syrup','Red Syrup','Healing',800,7,60,1000,'itemheal 325,0;');
@@ -2521,7 +2525,6 @@ 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`,`script`) VALUES (16589,'Thoughtful_Hat_Box_','Thoughtful Hat Box','Usable',20,1,'getitem callfunc("F_Rand",5336,5337,5338,5346,5339,5474),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (16590,'Thoughtful_Hat_Box__','Thoughtful Hat Box','Usable',20,1,'getitem callfunc("F_Rand",5336,5337,5338,5346,5339,5474),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (16598,'Activation_Potion_Box_II','Activation Potion Box II','Cash',10,10,100,true,true,true,true,true,true,true);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (16659,'Zodiac_Diadem_Pack','Zodiac Diadem Box','Usable',20,1,'getitem callfunc("F_Rand",5545,5549,5569,5581,5589,5599,5663,5677,5740,5745,5512,5514),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_uniqueid`) VALUES (16600,'Spring_Flower_Scr_Tw','Spring Flower Scr Tw','Usable',20,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_uniqueid`,`script`) VALUES (16601,'Blue_Arara_Hat_Box','Blue Arara Hat Box','Cash',20,10,true,'getitem 5778,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_uniqueid`,`script`) VALUES (16602,'F_Blue_Arara_Hat_Box','F Blue Arara Hat Box','Cash',20,10,true,'getitem 5778,1;');
@@ -2543,6 +2546,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`,`flag_uniqueid`) VALUES (16654,'Valiant_Will','Valiant Will','Usable',20,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (16655,'Rapid_Life_Potion_10_Box','Rapid Life Potion 10 Box','Cash',10,10,1,100,true,true,true,true,true,true,true,'getitem 12578,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (16658,'Rapid_Water_Box_10','Rapid Water Box(10)','Cash',10,10,100,true,true,true,true,true,true,true,'getitem 12578,10;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (16659,'Zodiac_Diadem_Pack','Zodiac Diadem Box','Usable',20,1,'getitem callfunc("F_Rand",5545,5549,5569,5581,5589,5599,5663,5677,5740,5745,5512,5514),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_uniqueid`) VALUES (16664,'Leo_Scroll','Leo Scroll','Usable',20,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_uniqueid`) VALUES (16665,'Virgo_Scroll','Virgo Scroll','Usable',20,10,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_container`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (16666,'Magic_Candy_Box10','Magic Candy Box10','Usable',20,10,true,100,true,true,true,true,true,true,true,'getgroupitem(IG_Magic_Candy_Box10); /*getitem Magic_Candy,10;*/');
@@ -2819,8 +2823,8 @@ 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`,`flag_container`,`script`) VALUES (17239,'Horned_Scroll','Horned Scroll','Usable',20,10,true,'getgroupitem(IG_Horned_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_container`,`script`) VALUES (17240,'Mercury_Scroll','Mercury Scroll','Usable',20,10,true,'getgroupitem(IG_Mercury_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`defense`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17241,'Amistr_Cap_Box','Amistir Cap Box','Usable',10,10,4,100,true,true,true,true,true,true,true,'getitem 5766,1;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17244,'Event_Almighty_Box','Event Almighty Box','Usable',10,10,100,true,true,true,true,true,true,true,'getitem 12883,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (17242,'Immortal_Egg','Immortal Egg','Cash',10,10,1,'getgroupitem(IG_Immortal_Egg);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17244,'Event_Almighty_Box','Event Almighty Box','Usable',10,10,100,true,true,true,true,true,true,true,'getitem 12883,10;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`flag_uniqueid`) VALUES (17245,'Idn_Independ_Scroll','Idn Independ Scroll','Cash',20,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17246,'HD_Elunium_Box_30','HD Elunium Box(30)','Usable',10,10,100,true,true,true,true,true,true,true,'getitem 6241,30;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17247,'HD_Oridecon_Box_30','HD Oridecon Box(30)','Usable',10,10,100,true,true,true,true,true,true,true,'getitem 6240,30;');
@@ -2914,8 +2918,8 @@ 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`,`equip_level_min`,`flag_container`,`script`) VALUES (17435,'Idn_Legend_Hero_Scroll','Legend Hero Lucky Egg','Cash',10,10,1,true,'getgroupitem(IG_Idn_Legend_Hero_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17440,'Name_Change_Card_Box','Name Change Card Box','Cash',10,10,100,true,true,true,true,true,true,true,'getitem 12790,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17441,'Halter_Lead_Box','Halter Lead Box','Cash',10,10,100,true,true,true,true,true,true,true,'getitem 12622,1;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17443,'Reinforcement_Buckler_Box','Reinforcement Buckler Box','Cash',10,10,100,true,true,true,true,true,true,true,'getitem 2150,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17442,'Emperium_G_Box','Emperium G Box','Usable',20,10,100,true,true,true,true,true,true,true,'getitem 6444,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17443,'Reinforcement_Buckler_Box','Reinforcement Buckler Box','Cash',10,10,100,true,true,true,true,true,true,true,'getitem 2150,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`flag_container`,`script`) VALUES (17447,'Blessing_Midgard_Scroll','Blessing Midgard Lucky Egg','Cash',10,1,true,'getgroupitem(IG_Blessing_Midgard_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17449,'Cookies_Bar_Set','Set Bar Cookies','Usable',10,10,100,true,true,true,true,true,true,true,'for (.@i = 14616; .@i <= 14621; .@i++) getitem .@i,1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17455,'Premium_Battle_Manual_Box','Premium Battle Manual Box','Cash',10,10,100,true,true,true,true,true,true,true,'getitem 22614,1;');
@@ -2998,8 +3002,8 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`fla
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_container`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17674,'Rainbow_Lucky_Scroll','Splash Rainbow Lucky Egg','Cash',10,true,100,true,true,true,true,true,true,true,'getgroupitem(IG_Splash_Rainbow_Lucky_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_container`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17681,'Midgard_Lucky_Scroll','Midgard Lucky Scroll','Cash',10,true,100,true,true,true,true,true,true,true,'getgroupitem(IG_Midgard_Lucky_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_container`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (17692,'June_Lucky_Scroll','Blessing Scarlet Egg','Cash',10,true,100,true,true,true,true,true,true,true,'getgroupitem(IG_Blessing_Scarlet_Scroll);');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_noconsume`,`delay_duration`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22508,'Para_Team_Mark_','Eden Group Mark','Usable',true,1200000,100,true,true,true,true,true,true,true,true,'warp "moc_para01",171,115;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22507,'ShabbyOldScroll','Old Scroll','Usable',10,10,'callfunc "F_22507";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_noconsume`,`delay_duration`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22508,'Para_Team_Mark_','Eden Group Mark','Usable',true,1200000,100,true,true,true,true,true,true,true,true,'warp "moc_para01",171,115;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22510,'King_Wolf_Scroll','King Wolf Scroll','Usable',10,10,100,true,true,true,true,true,true,true,'/*TODO, confirm the rates*/ getitem callfunc("F_Rand",6635,19598,5658,6238,6239),1;');
 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`,`script`) VALUES (22511,'Fenrir_Card__','Fenrir\'s Power Scroll','Usable',10,10,100,true,true,true,true,true,true,'bonus_script "{ bonus bMatk,25; bonus bFixedCastRate,-50; }",300,1025;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22513,'King_of_Gift_Box','King of Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'/*TODO, confirm the rates*/ getitem callfunc("F_Rand",12817,4403,14512),1;');
@@ -3013,6 +3017,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`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22526,'Level_Up_Box150','Level Up Box(150)','Cash',10,150,100,true,true,true,true,true,true,true,true,'getgroupitem(IG_Level_Up_Box150);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22527,'Level_Up_Box160','Level Up Box(160)','Cash',10,160,100,true,true,true,true,true,true,true,true,'getgroupitem(IG_Level_Up_Box160);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`class_all`,`gender`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22528,'Pet_Exchange_Ticket_Box','Pet Exchange Ticket Box','Cash',10,20,false,'Female',100,true,true,true,true,true,true,true,'/*TODO*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (22529,'Shadow_Exchange_Box','Shadow Exchange SynthesisBox','Delayconsume',10,'/*synthesisui 22529;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22530,'Christmas_Box','Christmas Box','Cash',10,200,1,'getgroupitem(IG_Christmas_Box);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22531,'Special_Christmas_Box','Special Christmas Box','Cash',10,200,1,'getgroupitem(IG_Special_Christmas_Box);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22532,'Santa_Gift','Santa Gift','Cash',10,200,1,'getgroupitem(IG_Santa_Gift);');
@@ -3081,16 +3086,16 @@ 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`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22652,'Briliant_Hat_Box','Brilliant Hat Box','Usable',10,200,100,true,true,true,true,true,true,true,'/* TODO */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22653,'Wet_Card_Album','Wet Card Album','Usable',10000,50,'/* TODO */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22657,'Honey_Songpyun_','Honey Songpyun','Healing',20,200,'percentheal 20,0;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22659,'Pig_Steamed_Ribs','Pig Steamed Ribs','Healing',20,100,'bonus_script "{ bonus bAspdRate,5; bonus bUseSPrate,-2; }",180;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22658,'Cow_Steamed_Ribs','Cow Steamed Ribs','Healing',20,100,'bonus_script "{ bonus bVariableCastrate,5; bonus bUseSPrate,-3; }",180;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22659,'Pig_Steamed_Ribs','Pig Steamed Ribs','Healing',20,100,'bonus_script "{ bonus bAspdRate,5; bonus bUseSPrate,-2; }",180;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`flag_container`,`script`) VALUES (22669,'HALLOWEEN_G_BOX','Halloween Box','Usable',200,true,'getgroupitem(IG_HALLOWEEN_G_BOX);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22670,'DARK_INVITATION','Invitation of Darkness','Usable',10,10,'.@r = rand(1,3); if(.@r==1){ specialeffect2 EF_DEVIL; warp "niflheim",193,186; }else if(.@r==2){ heal -500,-1000; sc_start SC_STUN,3000,0; }else{ specialeffect2 EF_DEVIL; warp "niflheim",347,255; }');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22671,'March_Gift_Box','March Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'/*2 Lucky Eggs*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22672,'April_Gift_Box','April Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'rentitem callfunc("F_Rand",2566,2856,2857,15023),1209600;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22673,'May_Gift_Box','May Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'getitem 22777,2;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22674,'June_Gift_Box','June Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'/*1 Potion Box*/');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (22676,'Hangul_Day_Event_Box','Hangul Day Event Box','Usable',20,'getitem 22675,10; getitem 607,9;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22675,'Mysterious_Scroll','Mysterious Scroll','Usable',20,10,'sc_start SC_INTFOOD,3600000,30;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (22676,'Hangul_Day_Event_Box','Hangul Day Event Box','Usable',20,'getitem 22675,10; getitem 607,9;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`equip_level_min`,`flag_buyingstore`,`script`) VALUES (22679,'Chest_Of_Death','Death\'s Chest','Usable',170,true,'getitem rand(6814,6819),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_container`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22685,'Solo_Christmas_Gift','Single Union Christmas Gift','Usable',true,100,true,true,true,true,true,true,'getgroupitem(IG_Solo_Christmas_Gift);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (22686,'Solo_Cookie','Single Cookie','Healing',50,'percentheal 5,5;');
@@ -3152,7 +3157,6 @@ 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`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22782,'PC_Bang_Wooden_Box','PC Bang Wooden Box','Usable',10,200,1,100,true,true,true,true,true,true,true,'getitem 547,30; /*No Info*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22783,'PC_Bang_Golden_Box','PC Bang Golden Box','Usable',10,200,1,100,true,true,true,true,true,true,true,'getitem 547,1; getitem 985,10; /*No Info*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22784,'PC_Bang_Platinum_Box','PC Bang Platinum Box','Usable',10,200,1,100,true,true,true,true,true,true,true,'getitem 547,1; getitem 12017,10; getitem 678,12; /*No Info*/');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22979,'C_Battle_Gum_2','[Sale] Battle Manual and Bubble Gum','Usable',100,true,true,true,true,true,true,true,'sc_start SC_EXPBOOST,1800000,50; sc_start SC_ITEMBOOST,1800000,100;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`class_all`,`gender`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (22808,'Special_Gift_Box','Special Gift Box','Usable',10,100,false,'Female',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22812,'Sealed_Dracula_Scroll','Sealed Dracula Scroll','Usable',10,10,1,100,true,true,true,true,true,true,true,'getitem callfunc("F_Rand",6228,6232,22813,19937,17314, 6635),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22813,'Bearer\'s_Shadow_Box','Bearer\'s Shadow Box','Usable',10,10,1,100,true,true,true,true,true,true,true,'getitem callfunc("F_Rand",24180,24181,24182,24183,24184,24185),1;');
@@ -3184,7 +3188,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`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22859,'October_Gift_Box','October Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'getitem 12529,5;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22860,'November_Gift_Box','November Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'rentitem callfunc("F_Rand",2566,2856,2857,15023),1209600;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22861,'December_Gift_Box','December Gift Box','Usable',10,100,100,true,true,true,true,true,true,true,'getitem 22869,10;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22868,'Enchant_Stone_Box5','Costume Enchantment Stone Box 5','Usable',20,10,1,'getgroupitem(IG_Enchant_Stone_Box5);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22868,'Enchant_Stone_Box5','Costume Enchantment Stone Box 5','Usable',20,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box5);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22869,'Lucky_Roulette_Tickets','Lucky Roulette Ticket','Usable',10,100,50,100,true,true,true,true,true,true,true,true,'RouletteBronze++;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22873,'Sealed_Beelzebub_Scroll_II','Sealed Beelzebub Scroll II','Usable',10,10,100,true,true,true,true,true,true,true,'getitem callfunc("F_Rand",22875,6238,6239,6228,6232,24231,24232,17474,6635),1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22874,'Sealed_Beelzebub_Card_Album','Sealed Beelzebub Card Album','Usable',10,50,100,true,true,true,true,true,true,true,'/*No Info*/');
@@ -3204,11 +3208,12 @@ 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`,`script`) VALUES (22899,'Parchment_City','Parchment City','Usable',20,'itemskill "AL_INCAGI",1; heal -15,0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22901,'Question_Old_Blue_Box','Mysterious Blue Box','Usable',20,100,true,true,true,true,true,true,true,'callfunc("F_Mysterious_box");');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22902,'Sealed_Card_Album_Scroll_II','Sealed Card Album Scroll II','Usable',20,10,100,true,true,true,true,true,true,true,'getitem callfunc("F_Rand",6238,6239,17474,22829,24243,24244,24245),1;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22905,'Enchant_Stone_Box6','Costume Enchantment Stone Box 6','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box6);');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22953,'Enchant_Stone_Box7','Costume Enchantment Stone Box 7','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box7);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22905,'Enchant_Stone_Box6','Costume Enchant Stone Box 6','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box6);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (22953,'Enchant_Stone_Box7','Costume Enchant Stone Box 7','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box7);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (22979,'C_Battle_Gum_2','[Sale] Battle Manual and Bubble Gum','Usable',100,true,true,true,true,true,true,true,'sc_start SC_EXPBOOST,1800000,50; sc_start SC_ITEMBOOST,1800000,100;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22984,'Kahluna_Milk','Kahluna Milk','Healing',6,10,'sc_start SC_DORAM_BUF_01, 180000, 0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (22985,'Basil','Basil','Healing',10,10,'sc_start SC_DORAM_BUF_02, 180000, 0;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23001,'Enchant_Stone_Box8','Costume Enchantment Stone Box 8','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box8);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23001,'Enchant_Stone_Box8','Costume Enchant Stone Box 8','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box8);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23012,'S_Small_Mana_Potion','[Sale] Small Mana Potion','Usable',10,100,true,true,true,true,true,true,true,'bonus_script "bonus2 bRegenPercentSP,5,5000;",600,9; /* fix me: unknown flag and specialeffect ; disabled when LK_BERSERK */');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23016,'Cursed_Fragment','Cursed Fragment','Usable',1,1,'callfunc("F_Cursed_Fragment");');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23038,'S_Slim_White_Box','[Sale] Slim White Potion Box','Usable',100,true,true,true,true,true,true,true,'getitem 11573,200;');
@@ -3222,34 +3227,177 @@ 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`,`script`) VALUES (23077,'Build_Up_Potion_SC','Build Up Potion SC','Usable',10,10,'if (strcharinfo(3) == "slabw01") { sc_start SC_EP16_2_BUFF_SC,10000,0; }');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23078,'Build_Up_Potion_AC','Build Up Potion AC','Usable',10,10,'if (strcharinfo(3) == "slabw01") { sc_start SC_EP16_2_BUFF_AC,10000,0; }');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23080,'Cursed_Crystal','Cursed Crystal','Usable',1,500,'callfunc("F_Cursed_Crystal");');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23086,'Enchant_Stone_Box10','Costume Enchantment Stone Box 10','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box10);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23086,'Enchant_Stone_Box10','Costume Enchant Stone Box 10','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box10);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23087,'Small_Leather_Bag','Small Leather Bag','Usable',100,true,true,true,true,true,true,true,'getitem 25180,1; getitem 25181,1; getitem 25182,1; getitem 25183,1; getitem 25184,1; getitem 25185,1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23100,'Drooping_Gunslinger_Scroll','Drooping Gunslinger Scroll','Delayconsume',10,'/*upgradeui 23100;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23123,'Bullet_Case_Flare','Flare Bullet Cartridge','Usable',10,250,'getitem 13228,500;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23124,'Bullet_Case_Lighting','Lightning Bullet Cartridge','Usable',10,250,'getitem 13229,500;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23125,'Bullet_Case_Ice','Ice Bullet Cartridge','Usable',10,250,'getitem 13230,500;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23126,'Bullet_Case_Poison','Poison Bullet Cartridge','Usable',10,250,'getitem 13231,500;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23127,'Bullet_Case_Blind','Blind Bullet Cartridge','Usable',10,250,'getitem 13232,500;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23174,'Enchant_Stone_Box11','Costume Enchantment Stone Box 11','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box11);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23151,'EnchantStone_Recipe','Enchant Stone Recipe','Delayconsume',10,'/*synthesisui 23151;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23152,'Collectibles_Box','Collectibles SynthesisBox','Delayconsume',10,'/*synthesisui 23152;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23153,'Pet_Egg_Box','Pet Egg SynthesisBox','Delayconsume',10,'/*synthesisui 23153;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23154,'Costume_Exchange_Box','Costume Exchange SynthesisBox','Delayconsume',10,'/*synthesisui 23154;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23170,'Fan_Modification_Kit','Fan Modification Kit','Delayconsume',10,'/*synthesisui 23170;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23174,'Enchant_Stone_Box11','Costume Enchant Stone Box 11','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box11);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23175,'Uniform_Repair_Kit','Uniform Repair Kit','Delayconsume',10,'/*upgradeui 23175;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23177,'Kafra_Card_','Kafra Card','Usable',2,10,100,true,true,true,true,true,true,true,'callfunc "F_CashStore";');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (23187,'Sap_Liquid','Sap Liquid','Usable',10,'pet 1180;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (23188,'Unprocessed_Parts','Unprocessed Parts','Usable',10,'pet 1632;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (23189,'Small_Needle_Kit','Small Needle Kit','Usable',10,'pet 1622;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (23187,'Sap_Liquid','Sap Liquid','Usable',10,'pet 1180;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23191,'Varetyr_Spear_Scroll_1_5','Level 5 Varetyr Spear','Delayconsume',10,10,'itemskill "SO_VARETYR_SPEAR",5;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23192,'Diamond_Dust_Scroll_1_5','Level 5 Diamond Dust','Delayconsume',10,10,'itemskill "SO_DIAMONDDUST",5;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23193,'Crimson_Rock_Scroll_1_5','Level 5 Crimson Rock','Delayconsume',10,10,'itemskill "WL_CRIMSONROCK",5;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23194,'Sienna_Execrate_Scroll_1_5','Level 5 Sienna Execrate','Delayconsume',10,10,'itemskill "WL_SIENNAEXECRATE",5,true;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`flag_container`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23196,'Agust_Lucky_Scroll','Shining Blue Lucky Egg','Cash',10,10,1,true,100,true,true,true,true,true,true,true,'getgroupitem(IG_Agust_Lucky_Scroll);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`flag_buyingstore`,`script`) VALUES (23228,'Hazy_Mooncake','Hazy Mooncake','Healing',768,10,true,'/* unknown */');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23229,'Scroll_of_Fallen_Angel_Wings','Scroll of Fallen Angel Wings','Delayconsume',10,'/*upgradeui 23229;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23236,'Class_Shadow_Box_Weapon','Class Shadow Box (Weapon)','Delayconsume',10,'/*synthesisui 23236;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23237,'Class_Shadow_Box_Armor','Class Shadow Box (Armor)','Delayconsume',10,'/*synthesisui 23237;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23238,'Class_Shadow_Box_Shoes','Class Shadow Box (Shoes)','Delayconsume',10,'/*synthesisui 23238;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23239,'Class_Shadow_Box_Shield','Class Shadow Box (Shield)','Delayconsume',10,'/*synthesisui 23239;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23240,'Class_Shadow_Box_Pendant','Class Shadow Box (Pendant)','Delayconsume',10,'/*synthesisui 23240;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23241,'Class_Shadow_Box_Earring','Class Shadow Box (Earring)','Delayconsume',10,'/*synthesisui 23241;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23247,'StatusShadow_Mix','StatusShadow Mix','Delayconsume',10,'/*synthesisui 23247;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23248,'GemstoneShadow_Mix','GemstoneShadow Mix','Delayconsume',10,'/*synthesisui 23248;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23249,'BearersShadow_Mix','BearerShadow Mix','Delayconsume',10,'/*synthesisui 23249;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23250,'ComposeShadow_Mix','ComposerShadow Mix','Delayconsume',10,'/*synthesisui 23250;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`script`) VALUES (23256,'Elixir_Bandages','Elixir Bandages','Usable',10,'pet 1041;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`job_blacksmith`,`class_third`,`class_third_upper`,`class_third_baby`,`equip_level_min`,`delay_duration`,`script`) VALUES (23277,'Mado_Box','Emergency Magic Gear','Usable',10000,3000,true,true,true,true,100,180000,'setmadogear 1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`equip_level_max`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23280,'N_Fly_Wing_','Novice Fly Wing','Delayconsume',10,1,98,100,true,true,true,true,true,true,true,'itemskill "AL_TELEPORT",1;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23281,'RaceShadow_Mix','RaceShadow Mix','Delayconsume',10,'/*synthesisui 23281;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (23288,'Compressed_Wing_Of_Fly','Compressed Fly Wing','Delayconsume',1000,10,'itemskill "AL_TELEPORT",1;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23299,'Enchant_Stone_Box12','Costume Enchantment Stone Box 12','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box12);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23289,'Candy_Pouch_Blessing_Scroll_Melee','Candy Pouch Blessing Scroll(Physical)','Delayconsume',10,'/*upgradeui 23289;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23290,'Candy_Pouch_Blessing_Scroll_Range','Candy Pouch Blessing Scroll(Ranged)','Delayconsume',10,'/*upgradeui 23290;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23291,'Candy_Pouch_Blessing_Scroll_Magic','Candy Pouch Blessing Scroll(Magic)','Delayconsume',10,'/*upgradeui 23291;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23299,'Enchant_Stone_Box12','Costume Enchant Stone Box 12','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box12);');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23307,'S_Shining_Def_Scroll','[Sale] Shining Defense Scroll','Usable',10,100,true,true,true,true,true,true,true,'bonus_script "{ bonus bDef,500; bonus bMdef,200; }",600; /* fix me: unknown flag and specialeffect */');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23308,'Magical_Booster_Amplifier','Magical Booster Amplifier','Delayconsume',10,'/*upgradeui 23308;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23311,'Magic_Cat_hand_Scroll','Magic Cat Hand Scroll','Delayconsume',10,'/*upgradeui 23311;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23324,'StabilityShadow_Mix','StabilityShadow Mix','Delayconsume',10,'/*synthesisui 23324;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (23340,'S_Megaphone','[Sale] Megaphone','Usable',10,100,true,true,true,true,true,true,'input .@megaphone$; announce strcharinfo(0) + ": " + .@megaphone$,bc_all,0xFF0000;');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23524,'Enchant_Stone_Box13','Costume Enchantment Stone Box 13','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box13);');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23629,'Enchant_Stone_Box14','Costume Enchantment Stone Box 14','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box14);');
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23682,'Enchant_Stone_Box15','Costume Enchantment Stone Box 15','Usable',10,10,1,'getgroupitem(IG_Enchant_Stone_Box15);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23436,'Shadow_Refine_Hammer','Shadow Refine Hammer','Delayconsume',10,'/*upgradeui 23436;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23474,'InfinityShadow_Mix','InfinityShadow Mix','Delayconsume',10,'/*synthesisui 23474;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23524,'Enchant_Stone_Box13','Costume Enchant Stone Box 13','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box13);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23545,'Silver_Statue','Silver Statue','Delayconsume',10,'/*synthesisui 23545;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23546,'Cursed_Blood','Cursed Blood','Delayconsume',10,'/*upgradeui 23546;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23547,'Gold_Statue','Gold Statue','Delayconsume',10,'/*upgradeui 23547;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23629,'Enchant_Stone_Box14','Costume Enchant Stone Box 14','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box14);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23665,'PhysicalMagical_Mix','PhysicalMagical Mix','Delayconsume',10,'/*synthesisui 23665;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23666,'ImmunedAthena_Mix','ImmunedAthena Mix','Delayconsume',10,'/*synthesisui 23666;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23667,'HardChamption_Mix','HardChampion Mix','Delayconsume',100,'/*synthesisui 23667;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23668,'KingbirdAncient_Mix','KingbirdAncient Mix','Delayconsume',10,'/*synthesisui 23668;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23669,'CriticalHit_Mix','CriticalHit Mix','Delayconsume',10,'/*synthesisui 23669;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23675,'Geffen_Magic_Scroll','Geffen Magic Armor Order Form','Delayconsume',100,'/*upgradeui 23675;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23676,'Gray_Charcoal_Melee','Grey Abrasive (physical)','Delayconsume',50,'/*upgradeui 23676;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23677,'Gray_Charcoal_Magic','Grey Abrasive (magical)','Delayconsume',50,'/*upgradeui 23677;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23678,'Gray_Charcoal_Range','Grey Abrasive (distance)','Delayconsume',50,'/*upgradeui 23678;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23679,'Geffen_Magic_Scroll2','Geffen Magic Accessory Order Form','Delayconsume',100,'/*upgradeui 23679;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (23682,'Enchant_Stone_Box15','Costume Enchant Stone Box 15','Cash',10,10,1,'getgroupitem(IG_Costume_Enchant_Stone_Box15);');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23706,'Charleston_Parts_W','Charleston Upgrade Parts (Physical)','Delayconsume',50,'/*upgradeui 23706;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23707,'Charleston_Parts_R','Charleston Upgrade Parts (Ranged)','Delayconsume',50,'/*upgradeui 23707;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23720,'Shadow_Random_Mix','Shadow Random Mix','Delayconsume',10,'/*upgradeui 23720;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23770,'Costume_Enchant_Stone_Box16','Costume Enchant Stone Box16','Cash',10,'/*getgroupitem(IG_Costume_Enchant_Stone_Box16);*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23776,'EP17_1_SPC05','Weapon Modifier (Physical)','Delayconsume',50,'/*upgradeui 23776;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23777,'EP17_1_SPC06','Advanced Weapon Modifier (Physical)','Delayconsume',50,'/*upgradeui 23777;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23778,'EP17_1_SPC07','Super Weapon Modifier (Physical)','Delayconsume',50,'/*upgradeui 23778;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23779,'EP17_1_SPC08','Weapon Modifier (Magic)','Delayconsume',50,'/*upgradeui 23779;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23780,'EP17_1_SPC09','Advanced Weapon Modifier (Magic)','Delayconsume',50,'/*upgradeui 23780;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23781,'EP17_1_SPC10','Super Weapon Modifier (Magic)','Delayconsume',50,'/*upgradeui 23781;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23815,'Magma_Essence','Lava Essence','Delayconsume',50,'/*upgradeui 23815;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23818,'Bs_Item_M_S_2','Giant Orc Helm Combination SynthesisBox','Delayconsume',10,'/*synthesisui 23818;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23819,'Bs_Item_M_S_8','Crimson Rose SynthesisBox','Delayconsume',10,'/*synthesisui 23819;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23820,'Bs_Item_M_S_10','Grand Peco Hairband SynthesisBox','Delayconsume',10,'/*synthesisui 23820;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23821,'Bs_Item_M_S_11','Moonflower Hair Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23821;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23822,'Bs_Item_M_S_34','Wings of 8 Purgatories SynthesisBox','Delayconsume',10,'/*synthesisui 23822;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23823,'Bs_Item_M_S_41','Tare Neko Cru SynthesisBox','Delayconsume',10,'/*synthesisui 23823;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23824,'Bs_Item_M_S_42','Glory Soccer Ball Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23824;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23825,'Bs_Item_M_S_43','Wicket marching Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23825;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23826,'Bs_Item_M_S_44','Wandering Wolf Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23826;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23827,'Bs_Sha_M_S_1','Status Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23827;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23828,'Bs_Sha_M_S_17','Elegant Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23828;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23829,'Bs_Sha_M_S_18','Tension Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23829;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23830,'Bs_Sha_M_S_19','Restore Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23830;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23831,'Bs_Sha_M_S_20','Healing Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23831;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23832,'Bs_Item_M_S_4','Amistr Cap SynthesisBox','Delayconsume',10,'/*synthesisui 23832;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23833,'Bs_Item_M_S_6','Tiger King Doll Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23833;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23834,'Bs_Item_M_S_7','Bacsojin Doll SynthesisBox','Delayconsume',10,'/*synthesisui 23834;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23835,'Bs_Item_M_S_12','Candy Pouch Bag SynthesisBox','Delayconsume',10,'/*synthesisui 23835;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23836,'Bs_Item_M_S_13','Gold Fish Head Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23836;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23837,'Bs_Item_M_S_15','Survival SynthesisBox','Delayconsume',10,'/*synthesisui 23837;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23838,'Bs_Item_M_S_28','Toy Sringe SynthesisBox','Delayconsume',10,'/*synthesisui 23838;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23839,'Bs_Item_M_S_29','Indigor Rear Ribbon SynthesisBox','Delayconsume',10,'/*synthesisui 23839;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23840,'Bs_Item_M_S_31','Magical Booster SynthesisBox','Delayconsume',10,'/*synthesisui 23840;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23841,'Bs_Item_M_S_32','Rosario\'s Necklace SynthesisBox','Delayconsume',10,'/*synthesisui 23841;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23842,'Bs_Item_M_S_33','Spirit Crown SynthesisBox','Delayconsume',10,'/*synthesisui 23842;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23843,'Bs_Item_M_S_36','Guard\'s Cap SynthesisBox','Delayconsume',10,'/*synthesisui 23843;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23844,'Bs_Item_M_S_37','Bandit\'s Hood SynthesisBox','Delayconsume',1,'/*synthesisui 23844;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23845,'Bs_Item_M_S_38','Angel\'s Blessing SynthesisBox','Delayconsume',10,'/*synthesisui 23845;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23846,'Bs_Item_M_S_39','Rabbit Magic Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23846;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23847,'Bs_Item_M_S_40','Anubis Helm SynthesisBox','Delayconsume',10,'/*synthesisui 23847;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23848,'Bs_Item_M_S_45','Imp Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23848;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23849,'Bs_Item_M_S_46','Red Marching Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23849;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23850,'Bs_Item_M_S_47','Ifrit Mask SynthesisBox','Delayconsume',10,'/*synthesisui 23850;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23851,'Bs_Item_M_S_48','Incarnation Of Morocc Doll SynthesisBox','Delayconsume',10,'/*synthesisui 23851;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23852,'Bs_Item_M_S_49','Samambaia SynthesisBox','Delayconsume',10,'/*synthesisui 23852;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23853,'Bs_Item_M_S_50','Chick Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23853;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23854,'Bs_Sha_M_S_2','Class Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23854;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23855,'Bs_Sha_M_S_5','Spell Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23855;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23856,'Bs_Sha_M_S_6','Size Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23856;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23857,'Bs_Sha_M_S_7','Race Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23857;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23858,'Bs_Sha_M_S_8','Stability Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23858;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23859,'Bs_Sha_M_S_13','Special Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23859;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23860,'Bs_Sha_M_S_15','Physical Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23860;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23861,'Bs_Sha_M_S_16','Magical Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23861;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23862,'Bs_Sha_M_S_23','EXP Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23862;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23863,'Bs_Item_M_S_5','Mad Bunny SynthesisBox','Delayconsume',10,'/*synthesisui 23863;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23864,'Bs_Item_M_S_9','Archangel\'s Wings SynthesisBox','Delayconsume',10,'/*synthesisui 23864;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23865,'Bs_Item_M_S_14','Smokie\'s Transformation Leaf SynthesisBox','Delayconsume',10,'/*synthesisui 23865;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23866,'Bs_Item_M_S_16','Ifrit\'s Ear SynthesisBox','Delayconsume',10,'/*synthesisui 23866;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23867,'Bs_Item_M_S_17','Heartwing Band SynthesisBox','Delayconsume',10,'/*synthesisui 23867;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23868,'Bs_Item_M_S_19','Sigrun\'s Wings SynthesisBox','Delayconsume',10,'/*synthesisui 23868;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23869,'Bs_Item_M_S_27','Cat Headdress SynthesisBox','Delayconsume',10,'/*synthesisui 23869;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23870,'Bs_Item_M_S_35','Noble Mask SynthesisBox','Delayconsume',10,'/*synthesisui 23870;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23871,'Bs_Sha_M_S_9','Gemstone Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23871;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23872,'Bs_Sha_M_S_10','Bearers Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23872;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23873,'Bs_Sha_M_S_11','Hasty Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23873;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23874,'Bs_Sha_M_S_21','Critical Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23874;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23875,'Bs_Sha_M_S_22','Mortal Blow Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23875;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23876,'Bs_Item_M_S_1','Fallen Angel Wings SynthesisBox','Delayconsume',10,'/*synthesisui 23876;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23877,'Bs_Item_M_S_3','Adventurer\'s Backpack SynthesisBox','Delayconsume',10,'/*synthesisui 23877;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23879,'Bs_Item_M_S_18','Spell Circuit SynthesisBox','Delayconsume',10,'/*synthesisui 23879;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23880,'Bs_Item_M_S_20','New Wave Sunglasses SynthesisBox','Delayconsume',10,'/*synthesisui 23880;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23881,'Bs_Item_M_S_21','Giant Snake Breath SynthesisBox','Delayconsume',10,'/*synthesisui 23881;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23882,'Bs_Item_M_S_22','Judge Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23882;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23883,'Bs_Item_M_S_23','Dog Officer SynthesisBox','Delayconsume',10,'/*synthesisui 23883;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23884,'Bs_Item_M_S_24','Fancy Feather Hat SynthesisBox','Delayconsume',10,'/*synthesisui 23884;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23885,'Bs_Item_M_S_25','Amistr Beret SynthesisBox','Delayconsume',10,'/*synthesisui 23885;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23886,'Bs_Item_M_S_26','General Helm SynthesisBox','Delayconsume',10,'/*synthesisui 23886;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23887,'Bs_Item_M_S_30','Cursed Knight\'s Shield SynthesisBox','Delayconsume',10,'/*synthesisui 23887;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23888,'Bs_Sha_M_S_3','Penetration Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23888;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23889,'Bs_Sha_M_S_4','Tempest Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23889;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23890,'Bs_Sha_M_S_12','Blitz Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23890;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23891,'Bs_Sha_M_S_14','Reload Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23891;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23892,'Bs_Sha_M_S_24','Force and Spirit Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23892;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23893,'Bs_Sha_M_S_25','Infinity Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 23893;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23894,'Bs_Item_M_S_51','Wickebine\'s Black Cat\'s Ear SynthesisBox','Delayconsume',10,'/*synthesisui 23894;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23926,'Shadow_9_Refine_Hammer','Shadow 9 Refine Hammer','Delayconsume',10,'/*upgradeui 23926;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (23967,'EnchantStone_Recipe_9m','Enchant Stone Recipe 9m','Delayconsume',10,'/*synthesisui 23967;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100000,'IDTest_Special','IDTest Special','Delayconsume',1,'/*synthesisui 100000;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (100003,'ILL_Piece_A','Red Phantom Resonance Stone','Delayconsume','/*upgradeui 100003;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (100004,'ILL_Piece_B','Azure Mirage Resonance Stone','Delayconsume','/*upgradeui 100004;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100010,'PerfectSize_Mix','Perfect Size Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 100010;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100011,'MagicPiercing_Mix','Magic Piercing Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 100011;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100019,'Costume_Enchant_Stone_Box18','Costume Enchant Stone Box18','Cash',10,'/*getgroupitem(IG_Costume_Enchant_Stone_Box18);*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100023,'Ancient_Hero_Bravery','Ancient Hero Bravery','Delayconsume',10,'/*upgradeui 100023;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100025,'Ancient_Hero_Wisdom','Ancient Hero Wisdom','Delayconsume',10,'/*upgradeui 100025;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (100043,'Boost_Up_1','Booster Armor UpgradeBox','Delayconsume','/*upgradeui 100043;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`script`) VALUES (100044,'Boost_Up_2','Booster Weapon UpgradeBox','Delayconsume','/*upgradeui 100044;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (100052,'Enchant_Stone_Box19','Costume Enchantment Stone Box 19','Usable',10,10,1,'/*getgroupitem(IG_Costume_Enchant_Stone_Box19);*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100053,'Piercing_Mix','Piercing Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 100053;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100058,'Hasty_Mix','Hasty Shadow SynthesisBox','Delayconsume',10,'/*synthesisui 100058;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100060,'EnchantStone_Recipe_4m','4m Enchant Stone Recipe SynthesisBox','Delayconsume',10,'/*synthesisui 100060;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_noconsume`,`script`) VALUES (100065,'WL_MB_SG','Spell Book (Storm Gust)','Delayconsume',true,'itemskill "WL_READING_SB_READING",1;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_noconsume`,`script`) VALUES (100066,'WL_MB_LOV','Spell Book (Lord of Vermilion)','Delayconsume',true,'itemskill "WL_READING_SB_READING",2;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`flag_noconsume`,`script`) VALUES (100067,'WL_MB_MS','Spell Book (Meteor Storm)','Delayconsume',true,'itemskill "WL_READING_SB_READING",3;');
@@ -3271,9 +3419,11 @@ 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`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (100136,'Imperial_M_Mo_Armor','Imperial Magical Modification Permit (Armor)','Delayconsume',20,125,100,true,true,true,true,true,true,true,'/*upgradeui 100136;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (100137,'Grace_P_Mo_Armor','Grace Physical Modification Permit (Armor)','Delayconsume',20,150,100,true,true,true,true,true,true,true,'/*upgradeui 100137;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`equip_level_min`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`,`script`) VALUES (100138,'Grace_M_Mo_Armor','Grace Magical Modification Permit (Armor)','Delayconsume',20,150,100,true,true,true,true,true,true,true,'/*upgradeui 100138;*/');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (100202,'Enchant_Stone_Box20','Costume Enchantment Stone Box 20','Usable',10,10,1,'/*getgroupitem(IG_Costume_Enchant_Stone_Box20);*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (100231,'Ref_T_Potion','Golden X','Healing',10,30,'sc_start SC_REF_T_POTION,30000,0;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (100232,'Add_Atk_Potion','Red Herb Activator','Healing',10,30,'sc_start SC_ADD_ATK_DAMAGE,500000,15;');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`script`) VALUES (100233,'Add_Matk_Potion','Blue Herb Activator','Healing',10,30,'sc_start SC_ADD_MATK_DAMAGE,500000,15;');
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`price_buy`,`weight`,`equip_level_min`,`script`) VALUES (100314,'Enchant_Stone_Box21','Costume Enchantment Stone Box 21','Usable',10,10,1,'/*getgroupitem(IG_Costume_Enchant_Stone_Box21);*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100402,'Thousand_Sun_Cube','Thousand Sun Modification Cube','Delayconsume',10,'/*synthesisui 100402;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100403,'Spirit_Pendulum_Cube','Spirit Pendulum Modification Cube','Delayconsume',10,'/*synthesisui 100403;*/');
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`script`) VALUES (100404,'Crimson_Rose_Cube','Crimson Rose Modification Cube','Delayconsume',10,'/*synthesisui 100404;*/');

+ 7 - 0
sql-files/main.sql

@@ -86,6 +86,7 @@ CREATE TABLE IF NOT EXISTS `auction` (
   `option_val4` smallint(5) NOT NULL default '0',
   `option_parm4` tinyint(3) NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`auction_id`)
 ) ENGINE=MyISAM;
 
@@ -185,6 +186,7 @@ CREATE TABLE IF NOT EXISTS `cart_inventory` (
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   KEY `char_id` (`char_id`)
 ) ENGINE=MyISAM;
@@ -576,6 +578,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage` (
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   KEY `guild_id` (`guild_id`)
 ) ENGINE=MyISAM;
@@ -617,6 +620,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage_log` (
   `expire_time` int(11) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
   `bound` tinyint(1) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   INDEX (`guild_id`)
 ) ENGINE=MyISAM AUTO_INCREMENT=1;
@@ -715,6 +719,7 @@ CREATE TABLE IF NOT EXISTS `inventory` (
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
   `equip_switch` int(11) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   KEY `char_id` (`char_id`)
 ) ENGINE=MyISAM;
@@ -818,6 +823,7 @@ CREATE TABLE IF NOT EXISTS `mail_attachments` (
   `option_parm4` tinyint(3) NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL DEFAULT '0',
   `bound` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
     PRIMARY KEY (`id`,`index`)
 ) ENGINE=MyISAM;
 
@@ -1038,6 +1044,7 @@ CREATE TABLE IF NOT EXISTS `storage` (
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   KEY `account_id` (`account_id`)
 ) ENGINE=MyISAM;

+ 24 - 0
sql-files/tools/item_db2_re_to_txt.sql

@@ -0,0 +1,24 @@
+#
+# Exports the `item_db2_re` to TXT format
+#
+
+SELECT
+	`id`, `name_english`, `name_japanese`, `type`, IFNULL(`price_buy`, ''), IFNULL(`price_sell`, ''), IFNULL(`weight`, ''), IFNULL(`atk:matk`, ''), IFNULL(`defence`, ''), IFNULL(`range`, ''), IFNULL(`slots`, ''), IFNULL(`equip_jobs`, ''), IFNULL(`equip_upper`, ''), IFNULL(`equip_genders`, ''), IFNULL(`equip_locations`, ''), IFNULL(`weapon_level`, ''), IFNULL(`equip_level`, ''), IFNULL(`refineable`, ''), IFNULL(`view`, ''),
+	CASE
+		WHEN ISNULL(`script`) THEN "{}"
+		ELSE CONCAT("{ ", `script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`equip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `equip_script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`unequip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `unequip_script`, " }")
+	END
+FROM `item_db2_re`
+INTO OUTFILE 'C:/item_db2_re.txt'
+FIELDS OPTIONALLY ENCLOSED BY ''
+TERMINATED BY ','
+ESCAPED BY ''
+LINES TERMINATED BY '\r\n';

+ 24 - 0
sql-files/tools/item_db2_to_txt.sql

@@ -0,0 +1,24 @@
+#
+# Exports the `item_db2` to TXT format
+#
+
+SELECT
+	`id`, `name_english`, `name_japanese`, `type`, IFNULL(`price_buy`, ''), IFNULL(`price_sell`, ''), IFNULL(`weight`, ''), IFNULL(`attack`, ''), IFNULL(`defence`, ''), IFNULL(`range`, ''), IFNULL(`slots`, ''), IFNULL(`equip_jobs`, ''), IFNULL(`equip_upper`, ''), IFNULL(`equip_genders`, ''), IFNULL(`equip_locations`, ''), IFNULL(`weapon_level`, ''), IFNULL(`equip_level`, ''), IFNULL(`refineable`, ''), IFNULL(`view`, ''),
+	CASE
+		WHEN ISNULL(`script`) THEN "{}"
+		ELSE CONCAT("{ ", `script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`equip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `equip_script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`unequip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `unequip_script`, " }")
+	END
+FROM `item_db2`
+INTO OUTFILE 'C:/item_db2.txt'
+FIELDS OPTIONALLY ENCLOSED BY ''
+TERMINATED BY ','
+ESCAPED BY ''
+LINES TERMINATED BY '\r\n';

+ 24 - 0
sql-files/tools/item_db_re_to_txt.sql

@@ -0,0 +1,24 @@
+#
+# Exports the `item_db_re` to TXT format
+#
+
+SELECT
+	`id`, `name_english`, `name_japanese`, `type`, IFNULL(`price_buy`, ''), IFNULL(`price_sell`, ''), IFNULL(`weight`, ''), IFNULL(`atk:matk`, ''), IFNULL(`defence`, ''), IFNULL(`range`, ''), IFNULL(`slots`, ''), IFNULL(`equip_jobs`, ''), IFNULL(`equip_upper`, ''), IFNULL(`equip_genders`, ''), IFNULL(`equip_locations`, ''), IFNULL(`weapon_level`, ''), IFNULL(`equip_level`, ''), IFNULL(`refineable`, ''), IFNULL(`view`, ''),
+	CASE
+		WHEN ISNULL(`script`) THEN "{}"
+		ELSE CONCAT("{ ", `script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`equip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `equip_script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`unequip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `unequip_script`, " }")
+	END
+FROM `item_db_re`
+INTO OUTFILE 'C:/item_db_re.txt'
+FIELDS OPTIONALLY ENCLOSED BY ''
+TERMINATED BY ','
+ESCAPED BY ''
+LINES TERMINATED BY '\r\n';

+ 24 - 0
sql-files/tools/item_db_to_txt.sql

@@ -0,0 +1,24 @@
+#
+# Exports the `item_db` to TXT format
+#
+
+SELECT
+	`id`, `name_english`, `name_japanese`, `type`, IFNULL(`price_buy`, ''), IFNULL(`price_sell`, ''), IFNULL(`weight`, ''), IFNULL(`attack`, ''), IFNULL(`defence`, ''), IFNULL(`range`, ''), IFNULL(`slots`, ''), IFNULL(`equip_jobs`, ''), IFNULL(`equip_upper`, ''), IFNULL(`equip_genders`, ''), IFNULL(`equip_locations`, ''), IFNULL(`weapon_level`, ''), IFNULL(`equip_level`, ''), IFNULL(`refineable`, ''), IFNULL(`view`, ''),
+	CASE
+		WHEN ISNULL(`script`) THEN "{}"
+		ELSE CONCAT("{ ", `script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`equip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `equip_script`, " }")
+	END,
+	CASE
+		WHEN ISNULL(`unequip_script`) THEN "{}"
+		ELSE CONCAT("{ ", `unequip_script`, " }")
+	END
+FROM `item_db`
+INTO OUTFILE 'C:/item_db.txt'
+FIELDS OPTIONALLY ENCLOSED BY ''
+TERMINATED BY ','
+ESCAPED BY ''
+LINES TERMINATED BY '\r\n';

+ 1 - 0
sql-files/upgrades/premium_storage.sql

@@ -33,6 +33,7 @@ CREATE TABLE IF NOT EXISTS `vip_storage` (
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
+  `enchantgrade` tinyint unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   KEY `account_id` (`account_id`)
 ) ENGINE=MyISAM;

+ 20 - 0
sql-files/upgrades/upgrade_20201105.sql

@@ -0,0 +1,20 @@
+ALTER TABLE `auction`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
+
+ALTER TABLE `cart_inventory`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
+
+ALTER TABLE `guild_storage`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
+
+ALTER TABLE `guild_storage_log`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
+
+ALTER TABLE `inventory`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
+
+ALTER TABLE `mail_attachments`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
+
+ALTER TABLE `storage`
+	ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';

+ 32 - 26
src/char/char.cpp

@@ -560,7 +560,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
 	// it significantly reduces cpu load on the database server.
 
 	StringBuf_Init(&buf);
-	StringBuf_AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
+	StringBuf_AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`, `enchantgrade`");
 	if (tableswitch == TABLE_INVENTORY) {
 		StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
 		offset = 2;
@@ -586,7 +586,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
 	}
 
 	SqlStmt_BindColumn(stmt, 0, SQLDT_INT,       &item.id,          0, NULL, NULL);
-	SqlStmt_BindColumn(stmt, 1, SQLDT_UINT,    &item.nameid,      0, NULL, NULL);
+	SqlStmt_BindColumn(stmt, 1, SQLDT_UINT,      &item.nameid,      0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT,     &item.amount,      0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 3, SQLDT_UINT,      &item.equip,       0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR,      &item.identify,    0, NULL, NULL);
@@ -595,16 +595,17 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
 	SqlStmt_BindColumn(stmt, 7, SQLDT_UINT,      &item.expire_time, 0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 8, SQLDT_UINT,      &item.bound,       0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 9, SQLDT_UINT64,    &item.unique_id,   0, NULL, NULL);
+	SqlStmt_BindColumn(stmt,10, SQLDT_INT8,      &item.enchantgrade,0, NULL, NULL);
 	if (tableswitch == TABLE_INVENTORY){
-		SqlStmt_BindColumn(stmt, 10, SQLDT_CHAR, &item.favorite,    0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11, SQLDT_CHAR, &item.favorite,    0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 12, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
 	}
 	for( i = 0; i < MAX_SLOTS; ++i )
-		SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL);
 	for( i = 0; i < MAX_ITEM_RDM_OPT; ++i ) {
-		SqlStmt_BindColumn(stmt, 10+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 13+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
 	}
 	// bit array indicating which inventory items have already been matched
 	flag = (bool*) aCalloc(max, sizeof(bool));
@@ -639,14 +640,15 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
 					items[i].attribute == item.attribute &&
 					items[i].expire_time == item.expire_time &&
 					items[i].bound == item.bound &&
+					items[i].enchantgrade == item.enchantgrade &&
 					(tableswitch != TABLE_INVENTORY || (items[i].favorite == item.favorite && items[i].equipSwitch == item.equipSwitch)) )
 				;	//Do nothing.
 				else
 				{
 					// update all fields.
 					StringBuf_Clear(&buf);
-					StringBuf_Printf(&buf, "UPDATE `%s` SET `amount`='%d', `equip`='%u', `identify`='%d', `refine`='%d',`attribute`='%d', `expire_time`='%u', `bound`='%d', `unique_id`='%" PRIu64 "'",
-						tablename, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id);
+					StringBuf_Printf(&buf, "UPDATE `%s` SET `amount`='%d', `equip`='%u', `identify`='%d', `refine`='%d',`attribute`='%d', `expire_time`='%u', `bound`='%d', `unique_id`='%" PRIu64 "', `enchantgrade`='%d'",
+						tablename, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id, items[i].enchantgrade);
 					if (tableswitch == TABLE_INVENTORY)
 						StringBuf_Printf(&buf, ", `favorite`='%d', `equip_switch`='%u'", items[i].favorite, items[i].equipSwitch);
 					for( j = 0; j < MAX_SLOTS; ++j )
@@ -681,7 +683,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
 	SqlStmt_Free(stmt);
 
 	StringBuf_Clear(&buf);
-	StringBuf_Printf(&buf, "INSERT INTO `%s`(`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", tablename, selectoption);
+	StringBuf_Printf(&buf, "INSERT INTO `%s`(`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`, `enchantgrade`", tablename, selectoption);
 	if (tableswitch == TABLE_INVENTORY)
 		StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
 	for( j = 0; j < MAX_SLOTS; ++j )
@@ -706,8 +708,8 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
 		else
 			found = true;
 
-		StringBuf_Printf(&buf, "('%d', '%u', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "'",
-			id, items[i].nameid, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id);
+		StringBuf_Printf(&buf, "('%d', '%u', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "', '%d'",
+			id, items[i].nameid, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id, items[i].enchantgrade);
 		if (tableswitch == TABLE_INVENTORY)
 			StringBuf_Printf(&buf, ", '%d', '%u'", items[i].favorite, items[i].equipSwitch);
 		for( j = 0; j < MAX_SLOTS; ++j )
@@ -787,7 +789,7 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag
 	}
 
 	StringBuf_Init(&buf);
-	StringBuf_AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`expire_time`,`bound`,`unique_id`");
+	StringBuf_AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`expire_time`,`bound`,`unique_id`,`enchantgrade`");
 	if (tableswitch == TABLE_INVENTORY) {
 		StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
 		offset = 2;
@@ -821,16 +823,17 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag
 	SqlStmt_BindColumn(stmt, 7, SQLDT_UINT,         &item.expire_time, 0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 8, SQLDT_CHAR,         &item.bound,     0, NULL, NULL);
 	SqlStmt_BindColumn(stmt, 9, SQLDT_ULONGLONG,    &item.unique_id, 0, NULL, NULL);
+	SqlStmt_BindColumn(stmt,10, SQLDT_INT8,         &item.enchantgrade, 0, NULL, NULL);
 	if (tableswitch == TABLE_INVENTORY){
-		SqlStmt_BindColumn(stmt, 10, SQLDT_CHAR, &item.favorite,    0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11, SQLDT_CHAR, &item.favorite,    0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 12, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
 	}
 	for( i = 0; i < MAX_SLOTS; ++i )
-		SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_UINT, &item.card[i],   0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11+offset+i, SQLDT_UINT, &item.card[i],   0, NULL, NULL);
  	for( i = 0; i < MAX_ITEM_RDM_OPT; ++i ) {
-		SqlStmt_BindColumn(stmt, 10+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 13+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
  	}
 
 	for( i = 0; i < max && SQL_SUCCESS == SqlStmt_NextRow(stmt); ++i )
@@ -849,7 +852,7 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag
 /**
  * Returns the correct gender ID for the given character and enum value.
  *
- * If the per-character sex is defined but not supported by the current packetver, the database entries are corrected.
+ * If the per-character sex is defined but not supported by the current packetver, the account gender is returned.
  *
  * @param sd Character data, if available.
  * @param p  Character status.
@@ -883,7 +886,10 @@ int char_mmo_gender( const struct char_session_data *sd, const struct mmo_charst
 				}
 			}
 
+#if PACKETVER >= 20141016
 			ShowWarning( "Found unknown gender '%c' for character '%s' (CID: %d, AID: %d), returning account gender...\n", sex, p->name, p->char_id, p->account_id );
+#endif
+
 			return sd->sex;
 	}
 }
@@ -2436,7 +2442,7 @@ bool char_checkdb(void){
 	}
 	//checking mail_attachment_db
 	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`index`,`nameid`,`amount`,`refine`,`attribute`,`identify`,"
-			"`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id`, `bound`"
+			"`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id`, `bound`, `enchantgrade`"
 			" FROM `%s` LIMIT 1;", schema_config.mail_attachment_db) ){
 		Sql_ShowDebug(sql_handle);
 		return false;
@@ -2445,7 +2451,7 @@ bool char_checkdb(void){
 	//checking auction_db
 	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
 			"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`card0`,`card1`,"
-			"`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id` "
+			"`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id`, `enchantgrade` "
 			"FROM `%s` LIMIT 1;", schema_config.auction_db) ){
 		Sql_ShowDebug(sql_handle);
 		return false;
@@ -2498,14 +2504,14 @@ bool char_checkdb(void){
 	}
 	//checking cart_db
 	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
-		"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`"
+		"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`,`enchantgrade`"
 		" FROM `%s` LIMIT 1;", schema_config.cart_db) ){
 		Sql_ShowDebug(sql_handle);
 		return false;
 	}
 	//checking inventory_db
 	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
-		"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`"
+		"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`,`enchantgrade`"
 		",`favorite`,`equip_switch`"
 		" FROM `%s` LIMIT 1;", schema_config.inventory_db) ){
 		Sql_ShowDebug(sql_handle);
@@ -2513,7 +2519,7 @@ bool char_checkdb(void){
 	}
 	//checking guild_storage_db
 	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT  `id`,`guild_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
-		"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`"
+		"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`,`enchantgrade`"
 		" FROM `%s` LIMIT 1;", schema_config.guild_storage_db) ){
 		Sql_ShowDebug(sql_handle);
 		return false;

+ 11 - 10
src/char/int_auction.cpp

@@ -51,8 +51,8 @@ void auction_save(struct auction_data *auction)
 		return;
 
 	StringBuf_Init(&buf);
-	StringBuf_Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%u', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d'",
-		schema_config.auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute);
+	StringBuf_Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%u', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d', `enchantgrade`",
+		schema_config.auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.enchantgrade);
 	for( j = 0; j < MAX_SLOTS; j++ )
 		StringBuf_Printf(&buf, ", `card%d` = '%u'", j, auction->item.card[j]);
 	for (j = 0; j < MAX_ITEM_RDM_OPT; j++) {
@@ -88,7 +88,7 @@ unsigned int auction_create(struct auction_data *auction)
 	auction->timestamp = time(NULL) + (auction->hours * 3600);
 
 	StringBuf_Init(&buf);
-	StringBuf_Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`", schema_config.auction_db);
+	StringBuf_Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`,`enchantgrade`", schema_config.auction_db);
 	for( j = 0; j < MAX_SLOTS; j++ )
 		StringBuf_Printf(&buf, ",`card%d`", j);
 	for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
@@ -96,8 +96,8 @@ unsigned int auction_create(struct auction_data *auction)
 		StringBuf_Printf(&buf, ", `option_val%d`", j);
 		StringBuf_Printf(&buf, ", `option_parm%d`", j);
 	}
-	StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%u',?,'%d','%d','%d','%" PRIu64 "'",
-		auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id);
+	StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%u',?,'%d','%d','%d','%" PRIu64 "','%d'",
+		auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id, auction->item.enchantgrade);
 	for( j = 0; j < MAX_SLOTS; j++ )	
 		StringBuf_Printf(&buf, ",'%u'", auction->item.card[j]);
 	for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
@@ -196,7 +196,7 @@ void inter_auctions_fromsql(void)
 
 	StringBuf_Init(&buf);
 	StringBuf_AppendStr(&buf, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
-		"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`");
+		"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`,`enchantgrade`");
 	for( i = 0; i < MAX_SLOTS; i++ )
 		StringBuf_Printf(&buf, ",`card%d`", i);
 	for (i = 0; i < MAX_ITEM_RDM_OPT; ++i) {
@@ -234,6 +234,7 @@ void inter_auctions_fromsql(void)
 		Sql_GetData(sql_handle,12, &data, NULL); item->refine = atoi(data);
 		Sql_GetData(sql_handle,13, &data, NULL); item->attribute = atoi(data);
 		Sql_GetData(sql_handle,14, &data, NULL); item->unique_id = strtoull(data, NULL, 10);
+		Sql_GetData(sql_handle,15, &data, NULL); item->enchantgrade = atoi(data);
 
 		item->identify = 1;
 		item->amount = 1;
@@ -241,16 +242,16 @@ void inter_auctions_fromsql(void)
 
 		for( i = 0; i < MAX_SLOTS; i++ )
 		{
-			Sql_GetData(sql_handle, 15 + i, &data, NULL);
+			Sql_GetData(sql_handle, 16 + i, &data, NULL);
 			item->card[i] = strtoul(data, nullptr, 10);
 		}
 
 		for (i = 0; i < MAX_ITEM_RDM_OPT; i++) {
-			Sql_GetData(sql_handle, 15 + MAX_SLOTS + i*3, &data, NULL);
-			item->option[i].id = atoi(data);
 			Sql_GetData(sql_handle, 16 + MAX_SLOTS + i*3, &data, NULL);
-			item->option[i].value = atoi(data);
+			item->option[i].id = atoi(data);
 			Sql_GetData(sql_handle, 17 + MAX_SLOTS + i*3, &data, NULL);
+			item->option[i].value = atoi(data);
+			Sql_GetData(sql_handle, 18 + MAX_SLOTS + i*3, &data, NULL);
 			item->option[i].param = atoi(data);
 		}
 

+ 8 - 7
src/char/int_mail.cpp

@@ -106,7 +106,7 @@ int mail_savemessage(struct mail_message* msg)
 	SqlStmt_Free(stmt);
 	
 	StringBuf_Clear(&buf);
-	StringBuf_Printf(&buf,"INSERT INTO `%s` (`id`, `index`, `amount`, `nameid`, `refine`, `attribute`, `identify`, `unique_id`, `bound`", schema_config.mail_attachment_db);
+	StringBuf_Printf(&buf,"INSERT INTO `%s` (`id`, `index`, `amount`, `nameid`, `refine`, `attribute`, `identify`, `unique_id`, `bound`, `enchantgrade`", schema_config.mail_attachment_db);
 	for (j = 0; j < MAX_SLOTS; j++)
 		StringBuf_Printf(&buf, ", `card%d`", j);
 	for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
@@ -127,7 +127,7 @@ int mail_savemessage(struct mail_message* msg)
 			found = true;
 		}
 
-		StringBuf_Printf(&buf, "('%" PRIu64 "', '%hu', '%d', '%u', '%d', '%d', '%d', '%" PRIu64 "', '%d'", (uint64)msg->id, i, msg->item[i].amount, msg->item[i].nameid, msg->item[i].refine, msg->item[i].attribute, msg->item[i].identify, msg->item[i].unique_id, msg->item[i].bound);
+		StringBuf_Printf(&buf, "('%" PRIu64 "', '%hu', '%d', '%u', '%d', '%d', '%d', '%" PRIu64 "', '%d', '%d'", (uint64)msg->id, i, msg->item[i].amount, msg->item[i].nameid, msg->item[i].refine, msg->item[i].attribute, msg->item[i].identify, msg->item[i].unique_id, msg->item[i].bound, msg->item[i].enchantgrade);
 		for (j = 0; j < MAX_SLOTS; j++)
 			StringBuf_Printf(&buf, ", '%u'", msg->item[i].card[j]);
 		for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
@@ -185,7 +185,7 @@ bool mail_loadmessage(int mail_id, struct mail_message* msg)
 	}
 
 	StringBuf_Init(&buf);
-	StringBuf_AppendStr(&buf, "SELECT `amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`,`bound`");
+	StringBuf_AppendStr(&buf, "SELECT `amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`,`bound`,`enchantgrade`");
 	for (j = 0; j < MAX_SLOTS; j++)
 		StringBuf_Printf(&buf, ",`card%d`", j);
 	for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
@@ -215,16 +215,17 @@ bool mail_loadmessage(int mail_id, struct mail_message* msg)
 		Sql_GetData(sql_handle,4, &data, NULL); msg->item[i].identify = atoi(data);
 		Sql_GetData(sql_handle,5, &data, NULL); msg->item[i].unique_id = strtoull(data, NULL, 10);
 		Sql_GetData(sql_handle,6, &data, NULL); msg->item[i].bound = atoi(data);
+		Sql_GetData(sql_handle,7, &data, NULL); msg->item[i].enchantgrade = atoi(data);
 		msg->item[i].expire_time = 0;
 
 		for( j = 0; j < MAX_SLOTS; j++ ){
-			Sql_GetData(sql_handle,7 + j, &data, NULL); msg->item[i].card[j] = strtoul(data, nullptr, 10);
+			Sql_GetData(sql_handle,8 + j, &data, NULL); msg->item[i].card[j] = strtoul(data, nullptr, 10);
 		}
 
 		for( j = 0; j < MAX_ITEM_RDM_OPT; j++ ){
-			Sql_GetData(sql_handle, 7 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].id = atoi(data);
-			Sql_GetData(sql_handle, 8 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].value = atoi(data);
-			Sql_GetData(sql_handle, 9 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].param = atoi(data);
+			Sql_GetData(sql_handle, 8 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].id = atoi(data);
+			Sql_GetData(sql_handle, 9 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].value = atoi(data);
+			Sql_GetData(sql_handle,10 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].param = atoi(data);
 		}
 	}
 

+ 8 - 4
src/common/database.cpp

@@ -7,7 +7,9 @@
 
 bool YamlDatabase::nodeExists( const YAML::Node& node, const std::string& name ){
 	try{
-		if( node[name] ){
+		const YAML::Node &subNode = node[name];
+
+		if( subNode.IsDefined() && !subNode.IsNull() ){
 			return true;
 		}else{
 			return false;
@@ -82,7 +84,11 @@ bool YamlDatabase::verifyCompatibility( const YAML::Node& rootNode ){
 }
 
 bool YamlDatabase::load(){
-	return this->load( this->getDefaultLocation() );
+	bool ret = this->load( this->getDefaultLocation() );
+
+	this->loadingFinished();
+
+	return ret;
 }
 
 bool YamlDatabase::reload(){
@@ -126,8 +132,6 @@ bool YamlDatabase::load(const std::string& path) {
 
 	this->parseImports( rootNode );
 
-	this->loadingFinished();
-
 	return true;
 }
 

+ 29 - 19
src/common/mmo.hpp

@@ -74,7 +74,11 @@ typedef uint32 t_itemid;
 #define MAX_GUILDPOSITION 20	///Increased max guild positions to accomodate for all members [Valaris] (removed) [PoW]
 #define MAX_GUILDEXPULSION 32 ///Max Guild expulsion
 #define MAX_GUILDALLIANCE 16 ///Max Guild alliance
-#define MAX_GUILDSKILL	17 ///Max Guild skills
+#ifdef RENEWAL
+#define MAX_GUILDSKILL	20 ///Max Guild skills
+#else
+#define MAX_GUILDSKILL	15 ///Max Guild skills
+#endif
 #define MAX_GUILDLEVEL 50 ///Max Guild level
 #define MAX_GUARDIANS 8	///Local max per castle. If this value is increased, need to add more fields on MySQL `guild_castle` table [Skotlex]
 #define MAX_QUEST_OBJECTIVES 3 ///Max quest objectives for a quest
@@ -263,6 +267,7 @@ struct item {
 	char favorite, bound;
 	uint64 unique_id;
 	unsigned int equipSwitch; // location(s) where item is equipped for equip switching (using enum equip_pos for bitmasking)
+	uint8 enchantgrade;
 };
 
 //Equip position constants
@@ -689,6 +694,8 @@ struct guild {
 
 	/* Used by char-server to save events for guilds */
 	unsigned short save_flag;
+
+	int32 chargeshout_flag_id;
 };
 
 struct guild_castle {
@@ -767,24 +774,27 @@ enum e_guild_member_info { //Change Member Infos
 };
 
 enum e_guild_skill {
-	GD_SKILLBASE=10000,
-	GD_APPROVAL=10000,
-	GD_KAFRACONTRACT=10001,
-	GD_GUARDRESEARCH=10002,
-	GD_GUARDUP=10003,
-	GD_EXTENSION=10004,
-	GD_GLORYGUILD=10005,
-	GD_LEADERSHIP=10006,
-	GD_GLORYWOUNDS=10007,
-	GD_SOULCOLD=10008,
-	GD_HAWKEYES=10009,
-	GD_BATTLEORDER=10010,
-	GD_REGENERATION=10011,
-	GD_RESTORE=10012,
-	GD_EMERGENCYCALL=10013,
-	GD_DEVELOPMENT=10014,
-	GD_ITEMEMERGENCYCALL=10015,
-	GD_GUILD_STORAGE=10016,
+	GD_SKILLBASE = 10000,
+	GD_APPROVAL = 10000,
+	GD_KAFRACONTRACT,
+	GD_GUARDRESEARCH,
+	GD_GUARDUP,
+	GD_EXTENSION,
+	GD_GLORYGUILD,
+	GD_LEADERSHIP,
+	GD_GLORYWOUNDS,
+	GD_SOULCOLD,
+	GD_HAWKEYES,
+	GD_BATTLEORDER,
+	GD_REGENERATION,
+	GD_RESTORE,
+	GD_EMERGENCYCALL,
+	GD_DEVELOPMENT,
+	GD_ITEMEMERGENCYCALL,
+	GD_GUILD_STORAGE,
+	GD_CHARGESHOUT_FLAG,
+	GD_CHARGESHOUT_BEATING,
+	GD_EMERGENCY_MOVE,
 	GD_MAX,
 };
 

+ 14 - 1
src/common/utilities.hpp

@@ -129,7 +129,7 @@ namespace rathena {
 		}
 
 		/**
-		 * Get a random value from the given map
+		 * Get a random value from the given unordered map
 		 * @param map: Unordered Map to search through
 		 * @return A random value by reference
 		*/
@@ -141,6 +141,19 @@ namespace rathena {
 			return it->second;
 		}
 
+		/**
+		 * Get a random value from the given vector
+		 * @param vec: Vector to search through
+		 * @return A random value by reference
+		*/
+		template <typename K> K &vector_random(std::vector<K> &vec) {
+			auto it = vec.begin();
+
+			std::advance(it, rnd_value(0, vec.size() - 1));
+
+			return *it;
+		}
+
 		/**
 		 * Get an iterator element
 		 * @param vec: Vector to search through

+ 22 - 10
src/map/atcommand.cpp

@@ -4760,6 +4760,9 @@ ACMD_FUNC(loadnpc)
 
 	npc_read_event_script();
 
+	ShowStatus( "NPC file '" CL_WHITE "%s" CL_RESET "' was reloaded.\n", message );
+	npc_event_doall_path( script_config.init_event_name, message );
+
 	clif_displaymessage(fd, msg_txt(sd,262)); // Script loaded.
 	return 0;
 }
@@ -4805,6 +4808,9 @@ ACMD_FUNC(reloadnpcfile) {
 
 	npc_read_event_script();
 
+	ShowStatus( "NPC file '" CL_WHITE "%s" CL_RESET "' was reloaded.\n", message );
+	npc_event_doall_path( script_config.init_event_name, message );
+
 	clif_displaymessage(fd, msg_txt(sd,262)); // Script loaded.
 	return 0;
 }
@@ -7395,12 +7401,14 @@ ACMD_FUNC(mobinfo)
 		}
 #ifdef RENEWAL_EXP
 		if( battle_config.atcommand_mobinfo_type ) {
-			base_exp = base_exp * pc_level_penalty_mod(mob->lv - sd->status.base_level, mob->status.class_, mob->status.mode, 1) / 100;
-			job_exp = job_exp * pc_level_penalty_mod(mob->lv - sd->status.base_level, mob->status.class_, mob->status.mode, 1) / 100;
+			int penalty = pc_level_penalty_mod( sd, PENALTY_EXP, mob );
+
+			base_exp = base_exp * penalty / 100;
+			job_exp = job_exp * penalty / 100;
 		}
 #endif
 		// stats
-		if (mob->mexp)
+		if( mob->get_bosstype() == BOSSTYPE_MVP )
 			sprintf(atcmd_output, msg_txt(sd,1240), mob->name, mob->jname, mob->sprite, mob->vd.class_); // MVP Monster: '%s'/'%s'/'%s' (%d)
 		else
 			sprintf(atcmd_output, msg_txt(sd,1241), mob->name, mob->jname, mob->sprite, mob->vd.class_); // Monster: '%s'/'%s'/'%s' (%d)
@@ -7421,15 +7429,19 @@ ACMD_FUNC(mobinfo)
 		clif_displaymessage(fd, msg_txt(sd,1245)); //  Drops:
 		strcpy(atcmd_output, " ");
 		j = 0;
+#ifdef RENEWAL_DROP
+		int penalty = pc_level_penalty_mod( sd, PENALTY_DROP, mob );
+#endif
+
 		for (i = 0; i < MAX_MOB_DROP_TOTAL; i++) {
 			int droprate;
-			if (mob->dropitem[i].nameid == 0 || mob->dropitem[i].p < 1 || (item_data = itemdb_exists(mob->dropitem[i].nameid)) == NULL)
+			if (mob->dropitem[i].nameid == 0 || mob->dropitem[i].rate < 1 || (item_data = itemdb_exists(mob->dropitem[i].nameid)) == NULL)
 				continue;
-			droprate = mob->dropitem[i].p;
+			droprate = mob->dropitem[i].rate;
 
 #ifdef RENEWAL_DROP
 			if( battle_config.atcommand_mobinfo_type ) {
-				droprate = droprate * pc_level_penalty_mod(mob->lv - sd->status.base_level, mob->status.class_, mob->status.mode, 2) / 100;
+				droprate = droprate * penalty / 100;
 				if (droprate <= 0 && !battle_config.drop_rate0item)
 					droprate = 1;
 			}
@@ -7451,9 +7463,9 @@ ACMD_FUNC(mobinfo)
 		else if (j % 3 != 0)
 			clif_displaymessage(fd, atcmd_output);
 		// mvp
-		if (mob->mexp) {
+		if( mob->get_bosstype() == BOSSTYPE_MVP ){
 			float mvppercent, mvpremain;
-			sprintf(atcmd_output, msg_txt(sd,1247), mob->mexp); //  MVP Bonus EXP:%u
+			sprintf(atcmd_output, msg_txt(sd,1247), mob->mexp); //  MVP Bonus EXP:%llu
 			clif_displaymessage(fd, atcmd_output);
 			strcpy(atcmd_output, msg_txt(sd,1248)); //  MVP Items:
 			mvpremain = 100.0; //Remaining drop chance for official mvp drop mode
@@ -7462,7 +7474,7 @@ ACMD_FUNC(mobinfo)
 				if (mob->mvpitem[i].nameid == 0 || (item_data = itemdb_exists(mob->mvpitem[i].nameid)) == NULL)
 					continue;
 				//Because if there are 3 MVP drops at 50%, the first has a chance of 50%, the second 25% and the third 12.5%
-				mvppercent = (float)mob->mvpitem[i].p * mvpremain / 10000.0f;
+				mvppercent = (float)mob->mvpitem[i].rate * mvpremain / 10000.0f;
 				if(battle_config.item_drop_mvp_mode == 0) {
 					mvpremain -= mvppercent;
 				}
@@ -7968,7 +7980,7 @@ ACMD_FUNC(whodrops)
 
 #ifdef RENEWAL_DROP
 				if( battle_config.atcommand_mobinfo_type )
-					dropchance = dropchance * pc_level_penalty_mod(mob_db(item_data->mob[j].id)->lv - sd->status.base_level, mob_db(item_data->mob[j].id)->status.class_, mob_db(item_data->mob[j].id)->status.mode, 2) / 100;
+					dropchance = dropchance * pc_level_penalty_mod( sd, PENALTY_DROP, mob_db( item_data->mob[j].id ) ) / 100;
 #endif
 				if (pc_isvip(sd)) // Display item rate increase for VIP
 					dropchance += (dropchance * battle_config.vip_drop_increase) / 100;

+ 90 - 114
src/map/battle.cpp

@@ -1101,22 +1101,16 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
 
 	if ((sce = sc->data[SC_DIMENSION1]) && damage > 0) {
 		sce->val2 -= static_cast<int>(cap_value(damage, INT_MIN, INT_MAX));
-		if (sce->val2 >= 0)
-			damage = 0;
-		else
-			damage = -sce->val2;
 		if (sce->val2 <= 0)
 			status_change_end(target, SC_DIMENSION1, INVALID_TIMER);
+		return false;
 	}
 
 	if ((sce = sc->data[SC_DIMENSION2]) && damage > 0) {
 		sce->val2 -= static_cast<int>(cap_value(damage, INT_MIN, INT_MAX));
-		if (sce->val2 >= 0)
-			damage = 0;
-		else
-			damage = -sce->val2;
 		if (sce->val2 <= 0)
 			status_change_end(target, SC_DIMENSION2, INVALID_TIMER);
+		return false;
 	}
 
 	if (damage == 0)
@@ -1828,7 +1822,7 @@ bool battle_can_hit_gvg_target(struct block_list *src,struct block_list *bl,uint
 
 	if (ud && ud->immune_attack)
 		return false;
-	if(md && md->guardian_data) {
+	if(md && (md->guardian_data || md->special_state.ai == AI_GUILD)) {
 		if ((status_bl_has_mode(bl,MD_SKILL_IMMUNE) || (class_ == MOBID_EMPERIUM && !skill_get_inf2(skill_id, INF2_TARGETEMPERIUM))) && flag&BF_SKILL) //Skill immunity.
 			return false;
 		if( src->type != BL_MOB || mob_is_clone( ((struct mob_data*)src)->mob_id ) ){
@@ -1837,8 +1831,13 @@ bool battle_can_hit_gvg_target(struct block_list *src,struct block_list *bl,uint
 			if (class_ == MOBID_EMPERIUM && (!g || guild_checkskill(g,GD_APPROVAL) <= 0 ))
 				return false;
 
-			if (g && battle_config.guild_max_castles && guild_checkcastles(g)>=battle_config.guild_max_castles)
-				return false; // [MouseJstr]
+			if (g != nullptr) {
+				if (battle_config.guild_max_castles && guild_checkcastles(g)>=battle_config.guild_max_castles)
+					return false; // [MouseJstr]
+
+				if (md->special_state.ai == AI_GUILD && g->guild_id == md->master_id)
+					return false;
+			}
 		}
 	}
 	return true;
@@ -3033,6 +3032,11 @@ static int battle_get_weapon_element(struct Damage* wd, struct block_list *src,
 			if (sc && sc->data[SC_BANDING] && sc->data[SC_BANDING]->val2 > 4)
 				element = ELE_HOLY;
 			break;
+		case GN_CARTCANNON:
+		case NC_ARMSCANNON:
+			if (sd && sd->state.arrow_atk > 0)
+				element = sd->bonus.arrow_ele;
+			break;
 		case SJ_PROMINENCEKICK:
  				element = ELE_FIRE;
  			break;
@@ -3067,56 +3071,77 @@ static int battle_get_weapon_element(struct Damage* wd, struct block_list *src,
  */
 static void battle_calc_element_damage(struct Damage* wd, struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv)
 {
-	struct map_session_data *sd = BL_CAST(BL_PC, src);
-	struct status_change *sc = status_get_sc(src);
-	struct status_data *sstatus = status_get_status_data(src);
-	struct status_data *tstatus = status_get_status_data(target);
-	int element = skill_get_ele(skill_id, skill_lv);
-	int left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, true);
-	int right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, true);
 	std::bitset<NK_MAX> nk = battle_skill_get_damage_properties(skill_id, wd->miscflag);
 
-	//Elemental attribute fix
-	if(!nk[NK_IGNOREELEMENT]) {
-		//Non-pc physical melee attacks (mob, pet, homun) are "non elemental", they deal 100% to all target elements
-		//However the "non elemental" attacks still get reduced by "Neutral resistance"
-		//Also non-pc units have only a defending element, but can inflict elemental attacks using skills [exneval]
-		if(battle_config.attack_attr_none&src->type)
-			if(((!skill_id && !right_element) || (skill_id && (element == ELE_WEAPON || !right_element))) &&
-				(wd->flag&(BF_SHORT|BF_WEAPON)) == (BF_SHORT|BF_WEAPON))
-				return;
-		if(wd->damage > 0) {
-			//Forced to its element
-			wd->damage = battle_attr_fix(src, target, wd->damage, right_element, tstatus->def_ele, tstatus->ele_lv);
+	// Elemental attribute fix
+	if(!nk[NK_IGNOREELEMENT] && (wd->damage > 0 || wd->damage2 > 0)) {
+		struct map_session_data *sd = BL_CAST(BL_PC, src);
+		struct status_change *sc = status_get_sc(src);
+		struct status_data *sstatus = status_get_status_data(src);
+		struct status_data *tstatus = status_get_status_data(target);
+		int left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, true);
+		int right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, true);
 
-			switch( skill_id ) {
-				case MC_CARTREVOLUTION:
-				case SR_GATEOFHELL:
-				case SR_TIGERCANNON:
-				case KO_BAKURETSU:
-				//case NC_MAGMA_ERUPTION:
-					//Forced to neutral element
-					wd->damage = battle_attr_fix(src, target, wd->damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-					break;
-				case GN_CARTCANNON:
-				case KO_HAPPOKUNAI:
-					//Forced to ammo's element
-					wd->damage = battle_attr_fix(src, target, wd->damage, (sd && sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-					break;
-			}
+		switch (skill_id) {
+			case PA_SACRIFICE:
+			case RK_DRAGONBREATH:
+			case RK_DRAGONBREATH_WATER:
+			case NC_SELFDESTRUCTION:
+			case HFLI_SBR44:
+				wd->damage = battle_attr_fix(src, target, wd->damage, right_element, tstatus->def_ele, tstatus->ele_lv);
+				if (is_attack_left_handed(src, skill_id))
+					wd->damage2 = battle_attr_fix(src, target, wd->damage2, left_element, tstatus->def_ele, tstatus->ele_lv);
+				break;
+			default:
+				if (skill_id == 0 && (battle_config.attack_attr_none & src->type))
+					return; // Non-player basic attacks are non-elemental, they deal 100% against all defense elements
+#ifdef RENEWAL
+				if (sd == nullptr) { // Renewal player's elemental damage calculation is already done before this point, only calculate for everything else
+#endif
+					wd->damage = battle_attr_fix(src, target, wd->damage, right_element, tstatus->def_ele, tstatus->ele_lv);
+					if (is_attack_left_handed(src, skill_id))
+						wd->damage2 = battle_attr_fix(src, target, wd->damage2, left_element, tstatus->def_ele, tstatus->ele_lv);
+#ifdef RENEWAL
+				}
+#endif
+				break;
+		}
+
+		// Forced to neutral skills [helvetica]
+		// Skills forced to neutral gain benefits from weapon element but final damage is considered "neutral" and resistances are applied again
+		switch (skill_id) {
+#ifdef RENEWAL
+			case MO_INVESTIGATE:
+			case CR_SHIELDBOOMERANG:
+			case PA_SHIELDCHAIN:
+#endif
+			case MC_CARTREVOLUTION:
+			case HW_MAGICCRASHER:
+			case SR_FALLENEMPIRE:
+			case SR_TIGERCANNON:
+			case SR_CRESCENTELBOW_AUTOSPELL:
+			case SR_GATEOFHELL:
+				wd->damage = battle_attr_fix(src, target, wd->damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
+				if (is_attack_left_handed(src, skill_id))
+					wd->damage2 = battle_attr_fix(src, target, wd->damage2, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
+				break;
 		}
-		if (is_attack_left_handed(src, skill_id) && wd->damage2 > 0)
-			wd->damage2 = battle_attr_fix(src, target, wd->damage2, left_element ,tstatus->def_ele, tstatus->ele_lv);
-		if (sc && sc->data[SC_WATK_ELEMENT] && (wd->damage || wd->damage2)) {
-			// Descriptions indicate this means adding a percent of a normal attack in another element. [Skotlex]
-			int64 damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, (is_skill_using_arrow(src, skill_id)?2:0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100;
 
-			wd->damage += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv);
-			if (is_attack_left_handed(src, skill_id)) {
-				damage = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, (is_skill_using_arrow(src, skill_id)?2:0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100;
-				wd->damage2 += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv);
+#ifdef RENEWAL
+		if (sd == nullptr) { // Only monsters have a single ATK for element, in pre-renewal we also apply element to entire ATK on players [helvetica]
+#endif
+			if (sc && sc->data[SC_WATK_ELEMENT]) { // Descriptions indicate this means adding a percent of a normal attack in another element [Skotlex]
+				int64 damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, (is_skill_using_arrow(src, skill_id) ? 2 : 0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100;
+
+				wd->damage += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv);
+				if (is_attack_left_handed(src, skill_id)) {
+					damage = battle_calc_base_damage(src, sstatus, &sstatus->lhw, sc, tstatus->size, (is_skill_using_arrow(src, skill_id) ? 2 : 0)) * sc->data[SC_WATK_ELEMENT]->val2 / 100;
+					wd->damage2 += battle_attr_fix(src, target, damage, sc->data[SC_WATK_ELEMENT]->val1, tstatus->def_ele, tstatus->ele_lv);
+				}
 			}
+#ifdef RENEWAL
 		}
+#endif
 	}
 }
 
@@ -3532,7 +3557,7 @@ static void battle_calc_skill_base_damage(struct Damage* wd, struct block_list *
 //For quick div adjustment.
 #define DAMAGE_DIV_FIX(dmg, div) { if ((div) < 0) { (div) *= -1; (dmg) /= (div); } (dmg) *= (div); }
 #define DAMAGE_DIV_FIX2(dmg, div) { if ((div) > 1) (dmg) *= div; }
-#define DAMAGE_DIV_FIX_RENEWAL(wd, div) do { int div_ = (div); DAMAGE_DIV_FIX2((wd).statusAtk, div_); DAMAGE_DIV_FIX2((wd).weaponAtk, div_); DAMAGE_DIV_FIX2((wd).equipAtk, div_); DAMAGE_DIV_FIX2((wd).masteryAtk, div_); } while(0);
+
 /*================================================= [Playtester]
  * Applies DAMAGE_DIV_FIX and checks for min damage
  * @param d: Damage struct to apply DAMAGE_DIV_FIX to
@@ -4672,7 +4697,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			skillratio += -100 + 1700 + 200 * skill_lv;
 			break;
 		case RL_SLUGSHOT:
-			if (target->type == BL_PC)
+			if (target->type == BL_MOB)
 				skillratio += -100 + 1200 * skill_lv;
 			else
 				skillratio += -100 + 2000 * skill_lv;
@@ -5842,10 +5867,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
 		}
 	}
 
-#ifdef RENEWAL
-	if(!sd) // monsters only have a single ATK for element, in pre-renewal we also apply element to entire ATK on players [helvetica]
-#endif
-		battle_calc_element_damage(&wd, src, target, skill_id, skill_lv);
+	battle_calc_element_damage(&wd, src, target, skill_id, skill_lv);
 
 	if(skill_id == CR_GRANDCROSS || skill_id == NPC_GRANDDARKNESS)
 		return wd; //Enough, rest is not needed.
@@ -5967,58 +5989,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
 #endif
 	}
 
-#ifdef RENEWAL
-	// forced to neutral skills [helvetica]
-	// skills forced to neutral gain benefits from weapon element
-	// but final damage is considered "neutral" and resistances are applied again
-	switch (skill_id) {
-		case MC_CARTREVOLUTION:
-		case MO_INVESTIGATE:
-		case SR_GATEOFHELL:
-		case KO_BAKURETSU:
-		//case NC_MAGMA_ERUPTION:
-			// Forced to neutral element
-			wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-			break;
-		case CR_SHIELDBOOMERANG:
-		case LK_SPIRALPIERCE:
-		case ML_SPIRALPIERCE:
-		case PA_SHIELDCHAIN:
-		case PA_SACRIFICE:
-		case RK_DRAGONBREATH:
-		case RK_DRAGONBREATH_WATER:
-		case NC_SELFDESTRUCTION:
-		case KO_HAPPOKUNAI: {
-				int64 tmp = wd.damage;
-
-				if (sd) {
-					if (skill_id == PA_SHIELDCHAIN) {
-						wd.damage = battle_attr_fix(src, target, wd.damage, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-						if (wd.damage > 0) {
-							wd.damage = battle_attr_fix(src, target, tmp, right_element, tstatus->def_ele, tstatus->ele_lv);
-							if (!wd.damage)
-								wd.damage = battle_attr_fix(src, target, tmp, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-						}
-					} else if (skill_id == KO_HAPPOKUNAI) {
-						wd.damage = battle_attr_fix(src, target, wd.damage, (sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-						if (wd.damage > 0) {
-							wd.damage = battle_attr_fix(src, target, tmp, right_element, tstatus->def_ele, tstatus->ele_lv);
-							if (!wd.damage)
-								wd.damage = battle_attr_fix(src, target, tmp, (sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-						}
-					} else
-						wd.damage = battle_attr_fix(src, target, wd.damage, right_element, tstatus->def_ele, tstatus->ele_lv);
-				}
-			}
-			break;
-		case GN_CARTCANNON: // Cart Cannon gets forced to element of cannon ball (neutral or holy/shadow/ghost)
-			wd.damage = battle_attr_fix(src, target, wd.damage, (sd && sd->bonus.arrow_ele) ? sd->bonus.arrow_ele : ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv);
-			break;
-	}
-
-	// perform multihit calculations
-	DAMAGE_DIV_FIX_RENEWAL(wd, wd.div_);
-#endif
 	// only do 1 dmg to plant, no need to calculate rest
 	if(infdef){
 		battle_calc_attack_plant(&wd, src, target, skill_id, skill_lv);
@@ -8241,8 +8211,12 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
 		case BL_PET:
 			if (t_bl->type != BL_MOB && flag&BCT_ENEMY)
 				return 0; //Pet may not attack non-mobs.
-			if (t_bl->type == BL_MOB && ((TBL_MOB*)t_bl)->guardian_data && flag&BCT_ENEMY)
-				return 0; //pet may not attack Guardians/Emperium
+			if (t_bl->type == BL_MOB && flag & BCT_ENEMY) {
+				mob_data *md = BL_CAST(BL_MOB, t_bl);
+
+				if (md->guardian_data || md->special_state.ai == AI_GUILD)
+					return 0; //pet may not attack Guardians/Emperium
+			}
 			break;
 		case BL_SKILL: {
 				struct skill_unit *su = (struct skill_unit *)src;
@@ -8591,6 +8565,7 @@ static const struct _battle_data {
 	{ "ammo_check_weapon",                  &battle_config.ammo_check_weapon,               1,      0,      1,              },
 	{ "max_aspd",                           &battle_config.max_aspd,                        190,    100,    199,            },
 	{ "max_third_aspd",                     &battle_config.max_third_aspd,                  193,    100,    199,            },
+	{ "max_summoner_aspd",                  &battle_config.max_summoner_aspd,               193,    100,    199,            },
 	{ "max_walk_speed",                     &battle_config.max_walk_speed,                  300,    100,    100*DEFAULT_WALK_SPEED, },
 	{ "max_lv",                             &battle_config.max_lv,                          99,     0,      MAX_LEVEL,      },
 	{ "aura_lv",                            &battle_config.aura_lv,                         99,     0,      INT_MAX,        },
@@ -9067,6 +9042,7 @@ void battle_adjust_conf()
 	battle_config.monster_max_aspd = 2000 - battle_config.monster_max_aspd * 10;
 	battle_config.max_aspd = 2000 - battle_config.max_aspd * 10;
 	battle_config.max_third_aspd = 2000 - battle_config.max_third_aspd * 10;
+	battle_config.max_summoner_aspd = 2000 - battle_config.max_summoner_aspd * 10;
 	battle_config.max_extended_aspd = 2000 - battle_config.max_extended_aspd * 10;
 	battle_config.max_walk_speed = 100 * DEFAULT_WALK_SPEED / battle_config.max_walk_speed;
 	battle_config.max_cart_weight *= 10;

+ 1 - 0
src/map/battle.hpp

@@ -529,6 +529,7 @@ struct Battle_Config
 	int max_extended_parameter;
 	int max_summoner_parameter;
 	int max_third_aspd;
+	int max_summoner_aspd;
 	int vcast_stat_scale;
 
 	int mvp_tomb_enabled;

+ 1 - 1
src/map/buyingstore.cpp

@@ -568,7 +568,7 @@ bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_st
 			;
 		}
 
-		if( !searchstore_result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore_blankslots, 0) )
+		if( !searchstore_result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore_blankslots, 0, 0) )
 		{// result set full
 			return false;
 		}

+ 2 - 0
src/map/chrif.cpp

@@ -1364,8 +1364,10 @@ int chrif_skillcooldown_save(struct map_session_data *sd) {
 		if (!sd->scd[i])
 			continue;
 
+#ifndef RENEWAL
 		if (!battle_config.guild_skill_relog_delay && (sd->scd[i]->skill_id >= GD_BATTLEORDER && sd->scd[i]->skill_id <= GD_EMERGENCYCALL))
 			continue;
+#endif
 
 		timer = get_timer(sd->scd[i]->timer);
 		if (timer == NULL || timer->func != skill_blockpc_end || DIFF_TICK(timer->tick, tick) < 0)

+ 63 - 19
src/map/clif.cpp

@@ -1171,7 +1171,7 @@ static void clif_set_unit_idle( struct block_list* bl, bool walking, send_target
 		p.maxHP = -1;
 		p.HP = -1;
 	}
-	p.isBoss = ( bl->type == BL_MOB && ( ( ( TBL_MOB *)bl )->db->mexp > 0 ) ) ? 1 : 0;
+	p.isBoss = ( bl->type == BL_MOB ) ? ( (mob_data*)bl )->get_bosstype() : BOSSTYPE_NONE;
 #endif
 #if PACKETVER >= 20150513
 	p.body = vd->body_style;
@@ -1181,6 +1181,8 @@ static void clif_set_unit_idle( struct block_list* bl, bool walking, send_target
 	safestrncpy(p.name, status_get_name( bl ), NAME_LENGTH);
 #endif
 
+	clif_send( &p, sizeof( p ), tbl, target );
+	// if disguised, send to self
 	if( disguised( bl ) ){
 #if PACKETVER >= 20091103
 		p.objecttype = pcdb_checkid( status_get_viewdata( bl )->class_ ) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
@@ -1192,9 +1194,8 @@ static void clif_set_unit_idle( struct block_list* bl, bool walking, send_target
 #else
 		p.GID = disguised_bl_id( bl->id );
 #endif
+		clif_send(&p, sizeof(p), bl, SELF);
 	}
-
-	clif_send( &p, sizeof( p ), tbl, target );
 }
 
 static void clif_spawn_unit( struct block_list *bl, enum send_target target ){
@@ -1305,7 +1306,7 @@ static void clif_spawn_unit( struct block_list *bl, enum send_target target ){
 		p.HP = -1;
 	}
 
-	p.isBoss = ( bl->type == BL_MOB && ( ( ( TBL_MOB *)bl)->db->mexp > 0 ) ) ? 1 : 0;
+	p.isBoss = ( bl->type == BL_MOB ) ? ( (mob_data*)bl )->get_bosstype() : BOSSTYPE_NONE;
 #endif
 #if PACKETVER >= 20150513
 	p.body = vd->body_style;
@@ -1407,7 +1408,7 @@ static void clif_set_unit_walking( struct block_list *bl, struct map_session_dat
 		p.HP = -1;
 	}
 
-	p.isBoss = ( bl->type == BL_MOB && (((TBL_MOB*)bl)->db->mexp > 0) ) ? 1 : 0;
+	p.isBoss = ( bl->type == BL_MOB ) ? ( (mob_data*)bl )->get_bosstype() : BOSSTYPE_NONE;
 #endif
 #if PACKETVER >= 20150513
 	p.body = vd->body_style;
@@ -1419,6 +1420,7 @@ static void clif_set_unit_walking( struct block_list *bl, struct map_session_dat
 
 	clif_send( &p, sizeof(p), tsd ? &tsd->bl : bl, target );
 
+	// if disguised, send the info to self
 	if( disguised( bl ) ){
 #if PACKETVER >= 20091103
 		p.objecttype = pcdb_checkid( status_get_viewdata(bl)->class_ ) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
@@ -2727,19 +2729,22 @@ void clif_additem( struct map_session_data *sd, int n, int amount, unsigned char
 		p.type = itemtype( sd->inventory.u.items_inventory[n].nameid );
 #if PACKETVER >= 20061218
 		p.HireExpireDate = sd->inventory.u.items_inventory[n].expire_time;
-#endif
 #if PACKETVER >= 20071002
 		/* why restrict the flag to non-stackable? because this is the only packet allows stackable to,
 		 * show the color, and therefore it'd be inconsistent with the rest (aka it'd show yellow, you relog/refresh and boom its gone)
 		 */
 		p.bindOnEquipType = sd->inventory.u.items_inventory[n].bound && !itemdb_isstackable2( sd->inventory_data[n] ) ? 2 : sd->inventory_data[n]->flag.bindOnEquip ? 1 : 0;
-#endif
 #if PACKETVER >= 20150226
 		clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[n] );
-#endif
 #if PACKETVER >= 20160921
 		p.favorite = sd->inventory.u.items_inventory[n].favorite;
 		p.look = sd->inventory_data[n]->look;
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+		p.enchantgrade = sd->inventory.u.items_inventory[n].enchantgrade;
+#endif
+#endif
+#endif
+#endif
 #endif
 	}
 
@@ -2847,6 +2852,10 @@ static void clif_item_equip( short idx, struct EQUIPITEM_INFO *p, struct item *i
 #if PACKETVER >= 20150226
 	p->option_count = clif_add_random_options( p->option_data, it );
 #endif
+
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	p->enchantgrade = it->enchantgrade;
+#endif
 }
 
 static void clif_item_normal( short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id ){
@@ -4491,6 +4500,11 @@ void clif_tradeadditem( struct map_session_data* sd, struct map_session_data* ts
 		clif_addcards( &p.slot, &sd->inventory.u.items_inventory[index] );
 #if PACKETVER >= 20150226
 		clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[index] );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+		p.location = pc_equippoint_sub( sd, sd->inventory_data[index] );
+		p.viewSprite = sd->inventory_data[index]->look;
+		p.enchantgrade = sd->inventory.u.items_inventory[index].enchantgrade;
+#endif
 #endif
 	}else{
 		p = {};
@@ -4633,6 +4647,9 @@ void clif_storageitemadded( struct map_session_data* sd, struct item* i, int ind
 	clif_addcards( &p.slot, i );
 #if PACKETVER >= 20150226
 	clif_add_random_options( p.option_data, i );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	p.enchantgrade = i->enchantgrade;
+#endif
 #endif
 
 	clif_send( &p, sizeof( p ), &sd->bl, SELF );
@@ -7046,6 +7063,9 @@ void clif_cart_additem( struct map_session_data *sd, int n, int amount ){
 	clif_addcards( &p.slot, &sd->cart.u.items_cart[n] );
 #if PACKETVER >= 20150226
 	clif_add_random_options( p.option_data, &sd->cart.u.items_cart[n] );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	p.enchantgrade = sd->cart.u.items_cart[n].enchantgrade;
+#endif
 #endif
 
 	clif_send( &p, sizeof( p ), &sd->bl, SELF );
@@ -7404,6 +7424,9 @@ void clif_vendinglist( struct map_session_data* sd, struct map_session_data* vsd
 #if PACKETVER >= 20160921
 		p->items[i].location = pc_equippoint_sub( sd, data );
 		p->items[i].viewSprite = data->look;
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+		p->items[i].enchantgrade = vsd->cart.u.items_cart[index].enchantgrade;
+#endif
 #endif
 #endif
 	}
@@ -7473,7 +7496,7 @@ void clif_openvending( struct map_session_data* sd, int id, struct s_vending* ve
 
 	struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p = (struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *)WFIFOP( fd, 0 );
 
-	p->packetType = 0x136;
+	p->packetType = openvendingType;
 	p->packetLength = len;
 	p->AID = id;
 
@@ -7491,6 +7514,9 @@ void clif_openvending( struct map_session_data* sd, int id, struct s_vending* ve
 		clif_addcards( &p->items[i].slot, &sd->cart.u.items_cart[index] );
 #if PACKETVER >= 20150226
 		clif_add_random_options( p->items[i].option_data, &sd->cart.u.items_cart[index] );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+		p->items[i].enchantgrade = sd->cart.u.items_cart[index].enchantgrade;
+#endif
 #endif
 	}
 
@@ -8357,7 +8383,7 @@ void clif_mvp_item( struct map_session_data *sd, t_itemid nameid ){
 
 /// MVP EXP reward message (ZC_MVP_GETTING_SPECIAL_EXP).
 /// 010b <exp>.L
-void clif_mvp_exp(struct map_session_data *sd, unsigned int exp) {
+void clif_mvp_exp(struct map_session_data *sd, t_exp exp) {
 #if PACKETVER >= 20131223		// Kro remove this packet [Napster]
 	if (battle_config.mvp_exp_reward_message) {
 		char e_msg[CHAT_SIZE_MAX];
@@ -8372,7 +8398,7 @@ void clif_mvp_exp(struct map_session_data *sd, unsigned int exp) {
 	fd = sd->fd;
 	WFIFOHEAD(fd, packet_len(0x10b));
 	WFIFOW(fd,0) = 0x10b;
-	WFIFOL(fd,2) = min(exp, (unsigned int)INT32_MAX);
+	WFIFOL(fd,2) = (uint32)min( exp, MAX_EXP );
 	WFIFOSET(fd, packet_len(0x10b));
 #endif
 }
@@ -9579,7 +9605,7 @@ void clif_refresh_storagewindow(struct map_session_data *sd) {
 	if( sd->state.storage_flag == 1 ) {
 		storage_sortitem(sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage));
 		clif_storagelist(sd, sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage), storage_getName(0));
-		clif_updatestorageamount(sd, sd->storage.amount, MAX_STORAGE);
+		clif_updatestorageamount(sd, sd->storage.amount, sd->storage.max_amount);
 	}
 	// Notify the client that the gstorage is open otherwise it will
 	// remain locked forever and nobody will be able to access it
@@ -9591,9 +9617,15 @@ void clif_refresh_storagewindow(struct map_session_data *sd) {
 		else {
 			storage_sortitem(gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild));
 			clif_storagelist(sd, gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild), "Guild Storage");
-			clif_updatestorageamount(sd, gstor->amount, MAX_GUILD_STORAGE);
+			clif_updatestorageamount(sd, gstor->amount, gstor->max_amount);
 		}
 	}
+	// Notify the client that the premium storage is open
+	if (sd->state.storage_flag == 3) {
+		storage_sortitem(sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage));
+		clif_storagelist(sd, sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage), storage_getName(sd->premiumStorage.stor_id));
+		clif_updatestorageamount(sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount);
+	}
 }
 
 // refresh the client's screen, getting rid of any effects
@@ -12600,7 +12632,7 @@ void clif_parse_skill_toid( struct map_session_data* sd, uint16 skill_id, uint16
 	sd->skillitem = sd->skillitemlv = 0;
 
 	if( SKILL_CHK_GUILD(skill_id) ) {
-		if( sd->state.gmaster_flag )
+		if( sd->state.gmaster_flag || skill_id == GD_CHARGESHOUT_BEATING )
 			skill_lv = guild_checkskill(sd->guild, skill_id);
 		else
 			skill_lv = 0;
@@ -14843,10 +14875,10 @@ int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap)
 void clif_friendslist_send(struct map_session_data *sd)
 {
 	int i = 0, n, fd = sd->fd;
-#if PACKETVER >= 20180221
-	const int size = 8;
-#else
+#if PACKETVER < 20180221 || PACKETVER_RE_NUM >= 20200902
 	const int size = 8 + NAME_LENGTH;
+#else
+	const int size = 8;
 #endif
 
 	// Send friends list
@@ -14855,7 +14887,7 @@ void clif_friendslist_send(struct map_session_data *sd)
 	for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) {
 		WFIFOL(fd, 4 + size * i + 0) = sd->status.friends[i].account_id;
 		WFIFOL(fd, 4 + size * i + 4) = sd->status.friends[i].char_id;
-#if PACKETVER < 20180221
+#if PACKETVER < 20180221 || PACKETVER_RE_NUM >= 20200902
 		safestrncpy(WFIFOCP(fd, 4 + size * i + 8), sd->status.friends[i].name, NAME_LENGTH);
 #endif
 	}
@@ -15383,6 +15415,9 @@ void clif_Mail_setattachment( struct map_session_data* sd, int index, int amount
 		}
 		p.favorite = item->favorite;
 		p.location = pc_equippoint( sd, server_index( index ) );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+		p.enchantgrade = item->enchantgrade;
+#endif
 	}
 
 	p.PacketType = rodexadditem;
@@ -15888,6 +15923,9 @@ void clif_Mail_read( struct map_session_data *sd, int mail_id ){
 				mailitem->bindOnEquip = item->bound ? 2 : data->flag.bindOnEquip ? 1 : 0;
 				clif_addcards( &mailitem->slot, item );
 				clif_add_random_options( mailitem->optionData, item );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+				mailitem->enchantgrade = item->enchantgrade;
+#endif
 
 				offset += sizeof( struct mail_item );
 				count++;
@@ -18231,6 +18269,9 @@ void clif_party_show_picker( struct map_session_data* sd, struct item* item_data
 	clif_addcards( &p.slot, item_data );
 	p.location = id->equip; // equip location
 	p.itemType = itemtype( id->nameid ); // item type
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	p.enchantgrade = item_data->enchantgrade;
+#endif
 
 	clif_send( &p, sizeof( p ), &sd->bl, PARTY_SAMEMAP_WOS );
 #endif
@@ -18762,7 +18803,7 @@ void clif_search_store_info_ack( struct map_session_data* sd ){
 
 	struct PACKET_ZC_SEARCH_STORE_INFO_ACK *p = (struct PACKET_ZC_SEARCH_STORE_INFO_ACK *)WFIFOP( fd, 0 );
 
-	p->packetType = 0x836;
+	p->packetType = HEADER_ZC_SEARCH_STORE_INFO_ACK;
 	p->packetLength = len;
 	p->firstPage = !sd->searchstore.pages;
 	p->nextPage = searchstore_querynext( sd );
@@ -18791,6 +18832,9 @@ void clif_search_store_info_ack( struct map_session_data* sd ){
 		clif_addcards( &p->items[i].slot, &it );
 #if PACKETVER >= 20150226
 		clif_add_random_options( p->items[i].option_data, &it );
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+		p->items[i].enchantgrade = ssitem->enchantgrade;
+#endif
 #endif
 	}
 

+ 1 - 1
src/map/clif.hpp

@@ -783,7 +783,7 @@ void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv
 
 void clif_mvp_effect(struct map_session_data *sd);
 void clif_mvp_item(struct map_session_data *sd, t_itemid nameid);
-void clif_mvp_exp(struct map_session_data *sd, unsigned int exp);
+void clif_mvp_exp(struct map_session_data *sd, t_exp exp);
 void clif_mvp_noitem(struct map_session_data* sd);
 void clif_changed_dir(struct block_list *bl, enum send_target target);
 

+ 14 - 57
src/map/clif_packetdb.hpp

@@ -70,13 +70,13 @@
 	packet( HEADER_ZC_ITEM_ENTRY, sizeof( struct PACKET_ZC_ITEM_ENTRY ) );
 	packet(0x009e,17);
 	parseable_packet(0x009f,6,clif_parse_TakeItem,2);
-	packet(0x00a0,23);
+	packet( additemType, sizeof( struct packet_additem ) );
 	packet(0x00a1,6);
 	parseable_packet(0x00a2,6,clif_parse_DropItem,2,4);
-	packet(0x00a3,-1);
-	packet(0x00a4,-1);
-	packet(0x00a5,-1);
-	packet(0x00a6,-1);
+	packet( inventorylistnormalType, -1 );
+	packet( inventorylistequipType, -1 );
+	packet( storageListNormalType, -1 );
+	packet( storageListEquipType, -1 );
 	parseable_packet(0x00a7,8,clif_parse_UseItem,2,4);
 	packet( useItemAckType, sizeof( struct PACKET_ZC_USE_ITEM_ACK ) );
 	parseable_packet(0x00a9,6,clif_parse_EquipItem,2,4);
@@ -143,7 +143,7 @@
 	parseable_packet(0x00e6,3,clif_parse_TradeAck,2);
 	packet(0x00e7,3);
 	parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4);
-	packet(0x00e9,19);
+	packet( tradeaddType, sizeof( struct PACKET_ZC_ADD_EXCHANGE_ITEM ) );
 	packet(0x00ea,5);
 	parseable_packet(0x00eb,2,clif_parse_TradeOk,0);
 	packet(0x00ec,3);
@@ -200,8 +200,8 @@
 	packet(0x011f,16);
 	packet(0x0120,6);
 	packet(0x0121,14);
-	packet(0x0122,-1);
-	packet(0x0123,-1);
+	packet( cartlistequipType, -1 );
+	packet( cartlistnormalType, -1 );
 	packet( cartaddType, sizeof( struct PACKET_ZC_ADD_ITEM_TO_CART ) );
 	packet(0x0125,8);
 	parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4);
@@ -217,10 +217,10 @@
 	parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
 	packet(0x0131,86);
 	packet(0x0132,6);
-	packet(0x0133,-1);
+	packet( vendinglistType, -1 );
 	parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8);
 	packet(0x0135,7);
-	packet(0x0136,-1);
+	packet(openvendingType,-1);
 	packet(0x0137,6);
 	packet(0x0138,3);
 	packet(0x0139,16);
@@ -401,8 +401,6 @@
 	packet(0x01eb,10);
 	packet(0x01ec,26);
 	parseable_packet(0x01ed,2,clif_parse_NoviceExplosionSpirits,0);
-	packet(0x01ee,-1);
-	packet(0x01ef,-1);
 	packet(0x01f0,-1);
 	packet(0x01f1,-1);
 	packet(0x01f2,20);
@@ -995,12 +993,8 @@
 	parseable_packet(0x0292,2,clif_parse_AutoRevive,0);
 	packet(0x0293,70);
 	packet(0x0294,10);
-	packet(0x0295,-1);
-	packet(0x0296,-1);
-	packet(0x0297,-1);
 	packet( HEADER_ZC_CASH_TIME_COUNTER, sizeof( struct PACKET_ZC_CASH_TIME_COUNTER ) );
 	packet( HEADER_ZC_CASH_ITEM_DELETE, sizeof( struct PACKET_ZC_CASH_ITEM_DELETE ) );
-	packet(0x029a,27);
 	packet(0x029c,66);
 	packet(0x029d,-1);
 	packet(0x029e,11);
@@ -1107,14 +1101,10 @@
 	packet(0x02cd,26);
 	packet(0x02ce,10);
 	parseable_packet(0x02cf,6,clif_parse_MemorialDungeonCommand,2);
-	packet(0x02d0,-1);
-	packet(0x02d1,-1);
-	packet(0x02d2,-1);
 	ack_packet(ZC_NOTIFY_BIND_ON_EQUIP,0x02d3,4,2);
-	packet(0x02d4,29);
 	packet(0x02d5,2);
 	parseable_packet(0x02d6,6,clif_parse_ViewPlayerEquip,2);
-	packet(0x02d7,-1);
+	packet( viewequipackType, -1 );
 	parseable_packet(0x02d8,10,clif_parse_configuration,2,6);
 	packet(0x02d9,10);
 	packet(0x02da,3);
@@ -1163,9 +1153,6 @@
 // 2008-01-02aSakexe
 #if PACKETVER >= 20080102
 	parseable_packet(0x01df,6,clif_parse_GMReqAccountName,2);
-	packet(0x02e8,-1);
-	packet(0x02e9,-1);
-	packet(0x02ea,-1);
 	packet(0x02eb,13);
 	packet(0x02ec,67);
 	packet(0x02ed,59);
@@ -1622,7 +1609,6 @@
 
 // 2009-12-15aRagexeRE
 #if PACKETVER >= 20091215
-	packet(0x0800,-1);
 	//packet(0x0801,-1);
 #endif
 
@@ -1669,11 +1655,6 @@
 	//packet(0x07F0,6);
 #endif
 
-// 2010-02-23aRagexeRE
-#if PACKETVER >= 20100223
-	packet(0x080F,20);
-#endif
-
 // 2010-03-03aRagexeRE
 #if PACKETVER >= 20100303
 	packet(0x0810,3);
@@ -1744,7 +1725,7 @@
 	//packet(0x0825,-1);
 	//packet(0x0826,4);
 	parseable_packet(0x0835,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
-	packet(0x0836,-1);
+	packet( HEADER_ZC_SEARCH_STORE_INFO_ACK, -1 );
 	packet(0x0837,3);
 	//packet(0x0838,3);
 #endif
@@ -1823,7 +1804,6 @@
 	packet(0x0856,-1);
 	packet(0x0857,-1);
 	packet(0x0858,-1);
-	packet(0x0859,-1);
 	ack_packet(ZC_WEAR_EQUIP_ACK,0x08d0,9,2,4,6,8);
 #endif
 
@@ -2086,14 +2066,6 @@
 	packet(0x0979,50); //ackworldinfo
 	ack_packet(ZC_PERSONAL_INFOMATION,0x097b,16,2,4,8,12,16,17,21,25); //Still need further information
 	//ack_packet(ZC_PERSONAL_INFOMATION_CHN,0x0981,12,2,4,6,8,12,13,15,17,10); // Disabled until further information is found.
-	packet(0x0990,31); //additem
-	packet(0x0991,-1); //inv itemlist normal
-	packet(0x0992,-1); //inv itemlist equip
-	packet(0x0993,-1); //cart itemlist normal
-	packet(0x0994,-1); //cart itemlist equip
-	packet(0x0995,-1); //store itemlist normal
-	packet(0x0996,-1); //store itemlist equip
-	packet(0x0997,-1); //ZC_EQUIPWIN_MICROSCOPE_V5
 	parseable_packet(0x0998,8,clif_parse_EquipItem,2,4); // CZ_REQ_WEAR_EQUIP_V5
 	ack_packet(ZC_WEAR_EQUIP_ACK,0x0999,11,2,4,8,10); // cz_wear_equipv5
 	packet(0x099a,9); // take_off_equipv5
@@ -2238,16 +2210,6 @@
 	packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11
 #endif
 
-// 2015-02-25aRagexeRE
-#if PACKETVER >= 20150225
-	packet(0x0A09,45); // ZC_ADD_EXCHANGE_ITEM3
-	packet(0x0A0C,56); // ZC_ITEM_PICKUP_ACK_V6
-	packet(0x0A0D,-1); // ZC_INVENTORY_ITEMLIST_EQUIP_V6
-	packet(0x0A0F,-1); // ZC_CART_ITEMLIST_EQUIP_V6
-	packet(0x0A10,-1); // ZC_STORE_ITEMLIST_EQUIP_V6
-	packet(0x0A2D,-1); // ZC_EQUIPWIN_MICROSCOPE_V6
-#endif
-
 #if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO)
 	packet( HEADER_ZC_HAT_EFFECT, -1 );
 #endif
@@ -2259,7 +2221,7 @@
 	parseable_packet(0x09E8,11,clif_parse_Mail_refreshinbox,2,3); // CZ_OPEN_MAILBOX
 	parseable_packet(0x09E9,2,clif_parse_dull,0); // CZ_CLOSE_MAILBOX
 	parseable_packet(0x09EA,11,clif_parse_Mail_read,2,3); // CZ_REQ_READ_MAIL
-	packet(0x09EB,-1); // ZC_ACK_READ_MAIL
+	packet(rodexread,-1); // ZC_ACK_READ_MAIL
 	parseable_packet(0x09EC,-1,clif_parse_Mail_send,2,4,28,52,60,62,64); // CZ_REQ_WRITE_MAIL
 	packet(0x09ED,3); // ZC_ACK_WRITE_MAIL
 	parseable_packet(0x09EE,11,clif_parse_Mail_refreshinbox,2,3); // CZ_REQ_NEXT_MAIL_LIST
@@ -2273,7 +2235,7 @@
 	packet(0x09F6,11); // ZC_ACK_DELETE_MAIL
 	parseable_packet(0x0A03,2,clif_parse_Mail_cancelwrite,0); // CZ_REQ_CANCEL_WRITE_MAIL
 	parseable_packet(0x0A04,6,clif_parse_Mail_setattach,2,4); // CZ_REQ_ADD_ITEM_TO_MAIL
-	packet(0x0A05,53); // ZC_ACK_ADD_ITEM_TO_MAIL
+	packet( rodexadditem, sizeof( struct PACKET_ZC_ADD_ITEM_TO_MAIL ) ); // ZC_ACK_ADD_ITEM_TO_MAIL
 	parseable_packet(0x0A06,6,clif_parse_Mail_winopen,2,4); // CZ_REQ_REMOVE_ITEM_MAIL
 	packet(0x0A07,9); // ZC_ACK_REMOVE_ITEM_MAIL
 	parseable_packet(0x0A08,26,clif_parse_Mail_beginwrite,0); // CZ_REQ_OPEN_WRITE_MAIL
@@ -2345,11 +2307,6 @@
 	packet(0x0A84,94);
 #endif
 
-// 2016-09-21bRagexeRE
-#if PACKETVER >= 20160921
-	packet(0x0A37,59);
-#endif
-
 // 2016-10-26bRagexeRE
 #if PACKETVER >= 20161026
 	packet(0x0AA5,-1);

+ 8 - 0
src/map/guild.cpp

@@ -606,10 +606,12 @@ int guild_recv_info(struct guild *sg) {
 		//Perform the check on the user because the first load
 		guild_check_member(sg);
 		if ((sd = map_nick2sd(sg->master,false)) != NULL) {
+#ifndef RENEWAL
 			//If the guild master is online the first time the guild_info is received,
 			//that means he was the first to join, so apply guild skill blocking here.
 			if( battle_config.guild_skill_relog_delay )
 				guild_block_skill(sd, battle_config.guild_skill_relog_delay);
+#endif
 
 			//Also set the guild master flag.
 			sd->guild = g;
@@ -804,9 +806,11 @@ void guild_member_joined(struct map_session_data *sd) {
 	}
 	if (strcmp(sd->status.name,g->master) == 0) {	// set the Guild Master flag
 		sd->state.gmaster_flag = 1;
+#ifndef RENEWAL
 		// prevent Guild Skills from being used directly after relog
 		if( battle_config.guild_skill_relog_delay )
 			guild_block_skill(sd, battle_config.guild_skill_relog_delay);
+#endif
 	}
 	i = guild_getindex(g, sd->status.account_id, sd->status.char_id);
 	if (i == -1)
@@ -1002,6 +1006,7 @@ int guild_member_withdraw(int guild_id, uint32 account_id, uint32 char_id, int f
 		status_change_end(&sd->bl,SC_GLORYWOUNDS,INVALID_TIMER);
 		status_change_end(&sd->bl,SC_SOULCOLD,INVALID_TIMER);
 		status_change_end(&sd->bl,SC_HAWKEYES,INVALID_TIMER);
+		status_change_end(&sd->bl,SC_EMERGENCY_MOVE,INVALID_TIMER);
 		//@TODO: Send emblem update to self and people around
 	}
 	return 0;
@@ -1882,6 +1887,7 @@ int guild_broken(int guild_id,int flag) {
 			status_change_end(&sd->bl,SC_GLORYWOUNDS,INVALID_TIMER);
 			status_change_end(&sd->bl,SC_SOULCOLD,INVALID_TIMER);
 			status_change_end(&sd->bl,SC_HAWKEYES,INVALID_TIMER);
+			status_change_end(&sd->bl,SC_EMERGENCY_MOVE,INVALID_TIMER);
 		}
 	}
 
@@ -1966,8 +1972,10 @@ int guild_gm_changed(int guild_id, uint32 account_id, uint32 char_id, time_t tim
 		g->member[0].sd->state.gmaster_flag = 1;
 		clif_name_area(&g->member[0].sd->bl);
 		//Block his skills to prevent abuse.
+#ifndef RENEWAL
 		if (battle_config.guild_skill_relog_delay)
 			guild_block_skill(g->member[0].sd, battle_config.guild_skill_relog_delay);
+#endif
 	}
 
 	// announce the change to all guild members

+ 4 - 0
src/map/intif.cpp

@@ -3489,6 +3489,10 @@ static bool intif_parse_StorageReceived(int fd)
 #endif
 			//Set here because we need the inventory data for weapon sprite parsing.
 			status_set_viewdata(&sd->bl, sd->status.class_);
+			// Set headgear data here, otherwise this is done in loadEndAck
+			if( sd->state.autotrade ){
+				pc_set_costume_view(sd);
+			}
 			pc_load_combo(sd);
 			status_calc_pc(sd, (enum e_status_calc_opt)(SCO_FIRST|SCO_FORCE));
 			status_calc_weight(sd, (e_status_calc_weight_opt)(CALCWT_ITEM|CALCWT_MAXBONUS)); // Refresh weight data

+ 340 - 219
src/map/itemdb.cpp

@@ -26,8 +26,6 @@ using namespace rathena;
 
 static std::map<uint32, std::shared_ptr<s_item_combo>> itemdb_combo; /// Item Combo DB
 static DBMap *itemdb_group; /// Item Group DB
-static DBMap *itemdb_randomopt; /// Random option DB
-static DBMap *itemdb_randomopt_group; /// Random option group DB
 
 struct s_roulette_db rd;
 
@@ -286,7 +284,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 			if (!this->asBool(jobNode, "All", active))
 				return 0;
 
-			itemdb_jobid2mapid(item->class_base, static_cast<e_mapid>(MAPID_ALL), active);
+			itemdb_jobid2mapid(item->class_base, MAPID_ALL, active);
 		}
 
 		for (const auto &jobit : jobNode) {
@@ -301,7 +299,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 
 			if (!script_get_constant(jobName_constant.c_str(), &constant)) {
 				this->invalidWarning(jobNode[jobName], "Invalid item job %s, defaulting to All.\n", jobName.c_str());
-				itemdb_jobid2mapid(item->class_base, static_cast<e_mapid>(MAPID_ALL), true);
+				itemdb_jobid2mapid(item->class_base, MAPID_ALL, true);
 				break;
 			}
 
@@ -316,7 +314,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 		if (!exists) {
 			item->class_base[0] = item->class_base[1] = item->class_base[2] = 0;
 
-			itemdb_jobid2mapid(item->class_base, static_cast<e_mapid>(MAPID_ALL), true);
+			itemdb_jobid2mapid(item->class_base, MAPID_ALL, true);
 		}
 	}
 
@@ -736,7 +734,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 			item->stack.inventory = active;
 		} else {
 			if (!exists)
-				item->stack.inventory = true;
+				item->stack.inventory = false;
 		}
 
 		if (this->nodeExists(stackNode, "Cart")) {
@@ -748,7 +746,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 			item->stack.cart = active;
 		} else {
 			if (!exists)
-				item->stack.cart = true;
+				item->stack.cart = false;
 		}
 
 		if (this->nodeExists(stackNode, "Storage")) {
@@ -760,7 +758,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 			item->stack.storage = active;
 		} else {
 			if (!exists)
-				item->stack.storage = true;
+				item->stack.storage = false;
 		}
 
 		if (this->nodeExists(stackNode, "GuildStorage")) {
@@ -772,7 +770,7 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 			item->stack.guild_storage = active;
 		} else {
 			if (!exists)
-				item->stack.guild_storage = true;
+				item->stack.guild_storage = false;
 		}
 	} else {
 		if (!exists) {
@@ -1021,6 +1019,23 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
 	return 1;
 }
 
+void ItemDatabase::loadingFinished(){
+	if( !this->exists( ITEMID_DUMMY ) ){
+		// Create dummy item
+		std::shared_ptr<item_data> dummy_item = std::make_shared<item_data>();
+
+		dummy_item->nameid = ITEMID_DUMMY;
+		dummy_item->weight = 1;
+		dummy_item->value_sell = 1;
+		dummy_item->type = IT_ETC;
+		dummy_item->name = "UNKNOWN_ITEM";
+		dummy_item->ename = "Unknown Item";
+		dummy_item->view_id = UNKNOWN_ITEM_ID;
+
+		item_db.put( ITEMID_DUMMY, dummy_item );
+	}
+}
+
 ItemDatabase item_db;
 
 /**
@@ -1339,17 +1354,15 @@ static void itemdb_jobid2mapid(uint64 bclass[3], e_mapid jobmask, bool active)
 		// Calculate the required bit to set
 		uint64 job = 1ULL << ( jobmask & MAPID_BASEMASK );
 
-		// Basejob
-		temp_mask[0] |= job;
-
 		// 2-1
 		if( ( jobmask & JOBL_2_1 ) != 0 ){
 			temp_mask[1] |= job;
-		}
-
 		// 2-2
-		if( ( jobmask & JOBL_2_2 ) != 0 ){
+		}else if( ( jobmask & JOBL_2_2 ) != 0 ){
 			temp_mask[2] |= job;
+		// Basejob
+		}else{
+			temp_mask[0] |= job;
 		}
 	} else {
 		temp_mask[0] = temp_mask[1] = temp_mask[2] = MAPID_ALL;
@@ -1366,23 +1379,6 @@ static void itemdb_jobid2mapid(uint64 bclass[3], e_mapid jobmask, bool active)
 	}
 }
 
-/**
- * Create dummy item_data
- */
-static void itemdb_create_dummy(void) {
-	std::shared_ptr<item_data> dummy_item;
-
-	dummy_item = std::make_shared<item_data>();
-	dummy_item->nameid = ITEMID_DUMMY;
-	dummy_item->weight = 1;
-	dummy_item->value_sell = 1;
-	dummy_item->type = IT_ETC;
-	dummy_item->name = "UNKNOWN_ITEM";
-	dummy_item->ename = "Unknown Item";
-	dummy_item->view_id = UNKNOWN_ITEM_ID;
-	item_db.put(ITEMID_DUMMY, dummy_item);
-}
-
 /*==========================================
  * Loads an item from the db. If not found, it will return the dummy item.
  * @param nameid
@@ -2081,7 +2077,7 @@ static bool itemdb_read_sqldb_sub(std::vector<std::string> str) {
 	if (!str[++index].empty())
 		node["EquipLevelMax"] = std::stoi(str[index]);
 	if (!str[++index].empty())
-		node["Refineable"] = true;
+		node["Refineable"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
 		node["View"] = std::stoi(str[index]);
 	if (!str[++index].empty())
@@ -2090,19 +2086,19 @@ static bool itemdb_read_sqldb_sub(std::vector<std::string> str) {
 	YAML::Node flags;
 
 	if (!str[++index].empty())
-		flags["BuyingStore"] = true;
+		flags["BuyingStore"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		flags["DeadBranch"] = true;
+		flags["DeadBranch"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		flags["Container"] = true;
+		flags["Container"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		flags["UniqueId"] = true;
+		flags["UniqueId"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		flags["BindOnEquip"] = true;
+		flags["BindOnEquip"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		flags["DropAnnounce"] = true;
+		flags["DropAnnounce"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		flags["NoConsume"] = true;
+		flags["NoConsume"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
 		flags["DropEffect"] = str[index];
 	node["Flags"] = flags;
@@ -2120,13 +2116,13 @@ static bool itemdb_read_sqldb_sub(std::vector<std::string> str) {
 	if (!str[++index].empty())
 		stack["Amount"] = std::stoi(str[index]);
 	if (!str[++index].empty())
-		stack["Inventory"] = true;
+		stack["Inventory"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		stack["Cart"] = true;
+		stack["Cart"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		stack["Storage"] = true;
+		stack["Storage"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		stack["GuildStorage"] = true;
+		stack["GuildStorage"] = std::stoi(str[index]) ? "true" : "false";
 	node["Stack"] = stack;
 
 	YAML::Node nouse;
@@ -2134,7 +2130,7 @@ static bool itemdb_read_sqldb_sub(std::vector<std::string> str) {
 	if (!str[++index].empty())
 		nouse["Override"] = std::stoi(str[index]);
 	if (!str[++index].empty())
-		nouse["Sitting"] = true;
+		nouse["Sitting"] = std::stoi(str[index]) ? "true" : "false";
 	node["NoUse"] = nouse;
 
 	YAML::Node trade;
@@ -2142,23 +2138,23 @@ static bool itemdb_read_sqldb_sub(std::vector<std::string> str) {
 	if (!str[++index].empty())
 		trade["Override"] = std::stoi(str[index]);
 	if (!str[++index].empty())
-		trade["NoDrop"] = true;
+		trade["NoDrop"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoTrade"] = true;
+		trade["NoTrade"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["TradePartner"] = true;
+		trade["TradePartner"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoSell"] = true;
+		trade["NoSell"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoCart"] = true;
+		trade["NoCart"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoStorage"] = true;
+		trade["NoStorage"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoGuildStorage"] = true;
+		trade["NoGuildStorage"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoMail"] = true;
+		trade["NoMail"] = std::stoi(str[index]) ? "true" : "false";
 	if (!str[++index].empty())
-		trade["NoAuction"] = true;
+		trade["NoAuction"] = std::stoi(str[index]) ? "true" : "false";
 	node["Trade"] = trade;
 
 	if (!str[++index].empty())
@@ -2233,9 +2229,10 @@ static int itemdb_read_sqldb(void) {
 				char *str;
 
 				Sql_GetData(mmysql_handle, i, &str, nullptr);
-				if( str == nullptr )
-					str = ""; // get rid of NULL columns
-				data.push_back(str);
+				if (str == nullptr)
+					data.push_back("");
+				else
+					data.push_back(str);
 			}
 
 			if (!itemdb_read_sqldb_sub(data))
@@ -2274,196 +2271,333 @@ bool itemdb_isNoEquip(struct item_data *id, uint16 m) {
 	return false;
 }
 
-/**
-* Retrieves random option data
-*/
-struct s_random_opt_data* itemdb_randomopt_exists(short id) {
-	return ((struct s_random_opt_data*)uidb_get(itemdb_randomopt, id));
+const std::string RandomOptionDatabase::getDefaultLocation() {
+	return std::string(db_path) + "/item_randomopt_db.yml";
 }
 
-/** Random option
-* <ID>,<{Script}>
-*/
-static bool itemdb_read_randomopt(const char* basedir, bool silent) {
-	uint32 lines = 0, count = 0;
-	char line[1024];
+/**
+ * Reads and parses an entry from the item_randomopt_db.
+ * @param node: YAML node containing the entry.
+ * @return count of successfully parsed rows
+ */
+uint64 RandomOptionDatabase::parseBodyNode(const YAML::Node &node) {
+	uint16 id;
 
-	char path[256];
-	FILE* fp;
+	if (!this->asUInt16(node, "Id", id))
+		return 0;
 
-	sprintf(path, "%s/%s", basedir, "item_randomopt_db.txt");
+	std::shared_ptr<s_random_opt_data> randopt = this->find(id);
+	bool exists = randopt != nullptr;
 
-	if ((fp = fopen(path, "r")) == NULL) {
-		if (silent == 0) ShowError("itemdb_read_randomopt: File not found \"%s\".\n", path);
-		return false;
-	}
+	if (!exists) {
+		if (!this->nodesExist(node, { "Option", "Script" }))
+			return 0;
 
-	while (fgets(line, sizeof(line), fp)) {
-		char *str[2], *p;
+		randopt = std::make_shared<s_random_opt_data>();
+		randopt->id = id;
+	}
 
-		lines++;
+	if (this->nodeExists(node, "Option")) {
+		std::string name;
 
-		if (line[0] == '/' && line[1] == '/') // Ignore comments
-			continue;
+		if (!this->asString(node, "Option", name))
+			return 0;
 
-		memset(str, 0, sizeof(str));
+		if (randopt->name.compare(name) != 0 && random_option_db.option_exists(name)) {
+			this->invalidWarning(node["Option"], "Found duplicate random option name for %s, skipping.\n", name.c_str());
+			return 0;
+		}
 
-		p = line;
+		randopt->name = name;
+	}
 
-		p = trim(p);
+	if (this->nodeExists(node, "Script")) {
+		std::string script;
 
-		if (*p == '\0')
-			continue;// empty line
+		if (!this->asString(node, "Script", script))
+			return 0;
 
-		if (!strchr(p, ','))
-		{
-			ShowError("itemdb_read_randomopt: Insufficient columns in line %d of \"%s\", skipping.\n", lines, path);
-			continue;
+		if (randopt->script) {
+			aFree(randopt->script);
+			randopt->script = nullptr;
 		}
 
-		str[0] = p;
-		p = strchr(p, ',');
-		*p = '\0';
-		p++;
-
-		str[1] = p;
+		randopt->script = parse_script(script.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS);
+	}
 
-		if (str[1][0] != '{') {
-			ShowError("itemdb_read_randomopt(#1): Invalid format (Script column) in line %d of \"%s\", skipping.\n", lines, path);
-			continue;
-		}
-		/* no ending key anywhere (missing \}\) */
-		if (str[1][strlen(str[1]) - 1] != '}') {
-			ShowError("itemdb_read_randomopt(#2): Invalid format (Script column) in line %d of \"%s\", skipping.\n", lines, path);
-			continue;
-		}
-		else {
-			int id = -1;
-			struct s_random_opt_data *data;
-			struct script_code *code;
+	if (!exists)
+		this->put(id, randopt);
 
-			str[0] = trim(str[0]);
-			if (ISDIGIT(str[0][0])) {
-				id = atoi(str[0]);
-			}
-			else {
-				int64 id_tmp;
+	return 1;
+}
 
-				if (!script_get_constant(str[0], &id_tmp)) {
-					ShowError("itemdb_read_randopt: Unknown random option constant \"%s\".\n", str[0]);
-					continue;
-				}
-				id = static_cast<int>(id_tmp);
-			}
+void RandomOptionDatabase::loadingFinished(){
+	const char* prefix = "RDMOPT_";
 
-			if (id < 0) {
-				ShowError("itemdb_read_randomopt: Invalid Random Option ID '%s' in line %d of \"%s\", skipping.\n", str[0], lines, path);
-				continue;
-			}
+	for( const auto& pair : *this ){
+		std::string name = prefix + pair.second->name;
+		int64 constant;
 
-			if ((data = itemdb_randomopt_exists(id)) == NULL) {
-				CREATE(data, struct s_random_opt_data, 1);
-				uidb_put(itemdb_randomopt, id, data);
-			}
-			data->id = id;
-			if ((code = parse_script(str[1], path, lines, 0)) == NULL) {
-				ShowWarning("itemdb_read_randomopt: Invalid script on option ID #%d.\n", id);
+		// Check if it has already been set
+		if( script_get_constant( name.c_str(), &constant ) ){
+			// It is already the same
+			if( constant == pair.first ){
 				continue;
+			}else{
+				// Export it to the script engine -> will issue a warning
 			}
-			if (data->script) {
-				script_free_code(data->script);
-				data->script = NULL;
-			}
-			data->script = code;
 		}
-		count++;
+
+		script_set_constant( name.c_str(), pair.first, false, false );
 	}
-	fclose(fp);
+}
 
-	ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path);
+RandomOptionDatabase random_option_db;
 
-	return true;
+/**
+ * Check if the given random option name exists.
+ * @param name: Random option name
+ * @return True on success or false on failure
+ */
+bool RandomOptionDatabase::option_exists(std::string name) {
+	for (const auto &opt : random_option_db) {
+		if (opt.second->name.compare(name) == 0)
+			return true;
+	}
+
+	return false;
 }
 
 /**
- * Clear Item Random Option Group from memory
- * @author [Cydh]
- **/
-static int itemdb_randomopt_group_free(DBKey key, DBData *data, va_list ap) {
-	struct s_random_opt_group *g = (struct s_random_opt_group *)db_data2ptr(data);
-	if (!g)
-		return 0;
-	if (g->entries)
-		aFree(g->entries);
-	g->entries = NULL;
-	aFree(g);
-	return 1;
+ * Return the constant value of the given random option.
+ * @param name: Random option name
+ * @param id: Random option ID
+ * @return True on success or false on failure
+ */
+bool RandomOptionDatabase::option_get_id(std::string name, uint16 &id) {
+	for (const auto &opt : random_option_db) {
+		if (opt.second->name.compare(name) == 0) {
+			id = opt.first;
+			return true;
+		}
+	}
+
+	return false;
 }
 
-/**
- * Get Item Random Option Group from itemdb_randomopt_group MapDB
- * @param id Random Option Group
- * @return Random Option Group data or NULL if not found
- * @author [Cydh]
- **/
-struct s_random_opt_group *itemdb_randomopt_group_exists(int id) {
-	return (struct s_random_opt_group *)uidb_get(itemdb_randomopt_group, id);
+const std::string RandomOptionGroupDatabase::getDefaultLocation() {
+	return std::string(db_path) + "/item_randomopt_group.yml";
 }
 
-/**
- * Read Item Random Option Group from db file
- * @author [Cydh]
- **/
-static bool itemdb_read_randomopt_group(char* str[], int columns, int current) {
-	int64 id_tmp;
-	int id = 0;
-	int i;
-	unsigned short rate = (unsigned short)strtoul(str[1], NULL, 10);
-	struct s_random_opt_group *g = NULL;
+bool RandomOptionGroupDatabase::add_option(const YAML::Node &node, std::shared_ptr<s_random_opt_group_entry> &entry) {
+	uint16 option_id;
 
-	if (!script_get_constant(str[0], &id_tmp)) {
-		ShowError("itemdb_read_randomopt_group: Invalid ID for Random Option Group '%s'.\n", str[0]);
+	if (this->nodeExists(node, "Option")) {
+		std::string opt_name;
+
+		if (!this->asString(node, "Option", opt_name))
+			return false;
+
+		if (!random_option_db.option_get_id(opt_name, option_id)) {
+			this->invalidWarning(node["Option"], "Invalid Random Option name %s given.\n", opt_name.c_str());
+			return false;
+		}
+	} else {
+		this->invalidWarning(node, "Missing Option node.\n");
 		return false;
 	}
 
-	id = static_cast<int>(id_tmp);
+	entry = std::make_shared<s_random_opt_group_entry>();
+	entry->id = option_id;
 
-	if ((columns-2)%3 != 0) {
-		ShowError("itemdb_read_randomopt_group: Invalid column entries '%d'.\n", columns);
-		return false;
+	if (this->nodeExists(node, "MinValue")) {
+		int16 value;
+
+		if (!this->asInt16(node, "MinValue", value))
+			return false;
+
+		entry->min_value = value;
+	} else {
+		entry->min_value = 0;
 	}
 
-	if (!(g = (struct s_random_opt_group *)uidb_get(itemdb_randomopt_group, id))) {
-		CREATE(g, struct s_random_opt_group, 1);
-		g->id = id;
-		g->total = 0;
-		g->entries = NULL;
-		uidb_put(itemdb_randomopt_group, g->id, g);
+	if (this->nodeExists(node, "MaxValue")) {
+		int16 value;
+
+		if (!this->asInt16(node, "MaxValue", value))
+			return false;
+
+		entry->max_value = value;
+	} else {
+		entry->max_value = 0;
 	}
 
-	RECREATE(g->entries, struct s_random_opt_group_entry, g->total + rate);
+	if (entry->min_value > entry->max_value) {
+		this->invalidWarning(node["MaxValue"], "MinValue %d is greater than MaxValue %d, setting MaxValue to MinValue + 1.\n", entry->min_value, entry->max_value);
+		entry->max_value = entry->min_value + 1;
+	}
 
-	for (i = g->total; i < (g->total + rate); i++) {
-		int j, k;
-		memset(&g->entries[i].option, 0, sizeof(g->entries[i].option));
-		for (j = 0, k = 2; k < columns && j < MAX_ITEM_RDM_OPT; k+=3) {
-			int64 randid_tmp;
-			int randid = 0;
+	if (this->nodeExists(node, "Param")) {
+		int16 value;
 
-			if (!script_get_constant(str[k], &randid_tmp) || ((randid = static_cast<int>(randid_tmp)) && !itemdb_randomopt_exists(randid))) {
-				ShowError("itemdb_read_randomopt_group: Invalid random group id '%s' in column %d!\n", str[k], k+1);
-				continue;
-			}
-			g->entries[i].option[j].id = randid;
-			g->entries[i].option[j].value = (short)strtoul(str[k+1], NULL, 10);
-			g->entries[i].option[j].param = (char)strtoul(str[k+2], NULL, 10);
-			j++;
-		}
+		if (!this->asInt16(node, "Param", value))
+			return false;
+
+		entry->param = static_cast<int8>(value);
+	} else {
+		entry->param = 0;
 	}
-	g->total += rate;
+
+	if (this->nodeExists(node, "Chance")) {
+		uint16 chance;
+
+		if (!this->asUInt16Rate(node, "Chance", chance))
+			return false;
+
+		entry->chance = chance;
+	} else {
+		entry->chance = 0;
+	}
+
 	return true;
 }
 
+/**
+ * Reads and parses an entry from the item_randomopt_group.
+ * @param node: YAML node containing the entry.
+ * @return count of successfully parsed rows
+ */
+uint64 RandomOptionGroupDatabase::parseBodyNode(const YAML::Node &node) {
+	uint16 id;
+
+	if (!this->asUInt16(node, "Id", id))
+		return 0;
+
+	std::shared_ptr<s_random_opt_group> randopt = this->find(id);
+	bool exists = randopt != nullptr;
+
+	if (!exists) {
+		if (!this->nodesExist(node, { "Group" }))
+			return 0;
+
+		randopt = std::make_shared<s_random_opt_group>();
+		randopt->id = id;
+	}
+
+	if (this->nodeExists(node, "Group")) {
+		std::string name;
+
+		if (!this->asString(node, "Group", name))
+			return 0;
+
+		if (randopt->name.compare(name) != 0 && random_option_group.option_exists(name)) {
+			this->invalidWarning(node["Group"], "Found duplicate random option group name for %s, skipping.\n", name.c_str());
+			return 0;
+		}
+
+		randopt->name = name;
+	}
+
+
+	for (const YAML::Node &slotNode : node["Slots"]) {
+		if (randopt->slots.size() >= MAX_ITEM_RDM_OPT) {
+			this->invalidWarning(slotNode, "Reached maximum of %d Random Option group options. Skipping the remaining slots...\n", MAX_ITEM_RDM_OPT);
+			break;
+		}
+
+		uint16 slot;
+
+		if (!this->asUInt16(slotNode, "Slot", slot))
+			return 0;
+
+		if (slot < 1 || slot > MAX_ITEM_RDM_OPT) {
+			this->invalidWarning(slotNode["Slot"], "Invalid Random Opton Slot number %hu given, must be between 1~%d, skipping.\n", slot, MAX_ITEM_RDM_OPT);
+			return 0;
+		}
+
+		std::vector<std::shared_ptr<s_random_opt_group_entry>> entries;
+
+		for (const YAML::Node &optionNode : slotNode["Options"]) {
+			std::shared_ptr<s_random_opt_group_entry> entry;
+
+			if (!this->add_option(optionNode, entry))
+				return 0;
+
+			entries.push_back(entry);
+		}
+
+		randopt->slots[slot - 1] = entries;
+	}
+
+	if (this->nodeExists(node, "MaxRandom")) {
+		uint16 max;
+
+		if (!this->asUInt16(node, "MaxRandom", max))
+			return 0;
+
+		if (max > MAX_ITEM_RDM_OPT) {
+			this->invalidWarning(node["MaxRandom"], "Exceeds the maximum of %d Random Option group options, capping to MAX_ITEM_RDM_OPT.\n", MAX_ITEM_RDM_OPT);
+			max = MAX_ITEM_RDM_OPT;
+		}
+
+		randopt->max_random = max;
+	} else {
+		if (!exists)
+			randopt->max_random = 0;
+	}
+
+	if (this->nodeExists(node, "Random")) {
+		randopt->random_options.clear();
+
+		for (const YAML::Node &randomNode : node["Random"]) {
+			std::shared_ptr<s_random_opt_group_entry> entry;
+
+			if (!this->add_option(randomNode, entry))
+				return 0;
+
+			randopt->random_options.push_back(entry);
+		}
+	}
+
+	if (!exists)
+		this->put(id, randopt);
+
+	return 1;
+}
+
+RandomOptionGroupDatabase random_option_group;
+
+/**
+ * Check if the given random option group name exists.
+ * @param name: Random option name
+ * @return True on success or false on failure
+ */
+bool RandomOptionGroupDatabase::option_exists(std::string name) {
+	for (const auto &opt : random_option_group) {
+		if (opt.second->name.compare(name) == 0)
+			return true;
+	}
+
+	return false;
+}
+
+/**
+ * Return the constant value of the given random option group.
+ * @param name: Random option group name
+ * @param id: Random option group ID
+ * @return True on success or false on failure
+ */
+bool RandomOptionGroupDatabase::option_get_id(std::string name, uint16 &id) {
+	for (const auto &opt : random_option_group) {
+		if (opt.second->name.compare(name) == 0) {
+			id = opt.first;
+			return true;
+		}
+	}
+
+	return false;
+}
+
 /**
 * Read all item-related databases
 */
@@ -2506,12 +2640,13 @@ static void itemdb_read(void) {
 		sv_readdb(dbsubpath2, "item_package.txt",		',', 2, 10, -1, &itemdb_read_group, i > 0);
 #endif
 		itemdb_read_combos(dbsubpath2,i > 0); //TODO change this to sv_read ? id#script ?
-		itemdb_read_randomopt(dbsubpath2, i > 0);
 		sv_readdb(dbsubpath2, "item_noequip.txt",       ',', 2, 2, -1, &itemdb_read_noequip, i > 0);
-		sv_readdb(dbsubpath2, "item_randomopt_group.txt", ',', 5, 2+5*MAX_ITEM_RDM_OPT, -1, &itemdb_read_randomopt_group, i > 0);
 		aFree(dbsubpath1);
 		aFree(dbsubpath2);
 	}
+
+	random_option_db.load();
+	random_option_group.load();
 }
 
 /*==========================================
@@ -2548,17 +2683,6 @@ static inline int itemdb_group_free2(DBKey key, DBData *data) {
 	return 0;
 }
 
-static int itemdb_randomopt_free(DBKey key, DBData *data, va_list ap) {
-	struct s_random_opt_data *opt = (struct s_random_opt_data *)db_data2ptr(data);
-	if (!opt)
-		return 0;
-	if (opt->script)
-		script_free_code(opt->script);
-	opt->script = NULL;
-	aFree(opt);
-	return 1;
-}
-
 bool item_data::isStackable()
 {
 	switch (this->type) {
@@ -2587,8 +2711,8 @@ void itemdb_reload(void) {
 	item_db.clear();
 	itemdb_combo.clear();
 	itemdb_group->clear(itemdb_group, itemdb_group_free);
-	itemdb_randomopt->clear(itemdb_randomopt, itemdb_randomopt_free);
-	itemdb_randomopt_group->clear(itemdb_randomopt_group, itemdb_randomopt_group_free);
+	random_option_db.clear();
+	random_option_group.clear();
 	if (battle_config.feature_roulette)
 		itemdb_roulette_free();
 
@@ -2621,8 +2745,8 @@ void do_final_itemdb(void) {
 	item_db.clear();
 	itemdb_combo.clear();
 	itemdb_group->destroy(itemdb_group, itemdb_group_free);
-	itemdb_randomopt->destroy(itemdb_randomopt, itemdb_randomopt_free);
-	itemdb_randomopt_group->destroy(itemdb_randomopt_group, itemdb_randomopt_group_free);
+	random_option_db.clear();
+	random_option_group.clear();
 	if (battle_config.feature_roulette)
 		itemdb_roulette_free();
 }
@@ -2632,9 +2756,6 @@ void do_final_itemdb(void) {
 */
 void do_init_itemdb(void) {
 	itemdb_group = uidb_alloc(DB_OPT_BASE);
-	itemdb_randomopt = uidb_alloc(DB_OPT_BASE);
-	itemdb_randomopt_group = uidb_alloc(DB_OPT_BASE);
-	itemdb_create_dummy();
 	itemdb_read();
 
 	if (battle_config.feature_roulette)

+ 76 - 15
src/map/itemdb.hpp

@@ -4,6 +4,7 @@
 #ifndef ITEMDB_HPP
 #define ITEMDB_HPP
 
+#include <map>
 #include <vector>
 
 #include "../common/database.hpp"
@@ -226,6 +227,10 @@ enum e_item_job : uint16
 	ITEMJ_THIRD_BABY  = 0x20,
 	ITEMJ_MAX         = 0xFF,
 
+	ITEMJ_ALL_UPPER = ITEMJ_UPPER | ITEMJ_THIRD_UPPER,
+	ITEMJ_ALL_BABY = ITEMJ_BABY | ITEMJ_THIRD_BABY,
+	ITEMJ_ALL_THIRD = ITEMJ_THIRD | ITEMJ_THIRD_UPPER | ITEMJ_THIRD_BABY,
+
 #ifdef RENEWAL
 	ITEMJ_ALL = ITEMJ_NORMAL | ITEMJ_UPPER | ITEMJ_BABY | ITEMJ_THIRD | ITEMJ_THIRD_UPPER | ITEMJ_THIRD_BABY,
 #else
@@ -807,12 +812,31 @@ enum e_itemshop_restrictions {
 enum e_item_drop_effect : uint16 {
 	DROPEFFECT_NONE = 0,
 	DROPEFFECT_CLIENT,
+#if PACKETVER < 20200304
 	DROPEFFECT_WHITE_PILLAR,
+#endif
 	DROPEFFECT_BLUE_PILLAR,
 	DROPEFFECT_YELLOW_PILLAR,
 	DROPEFFECT_PURPLE_PILLAR,
+#if PACKETVER < 20200304
+	DROPEFFECT_ORANGE_PILLAR,
+#else
+	DROPEFFECT_GREEN_PILLAR,
+#endif
+#if PACKETVER >= 20200304
+	DROPEFFECT_RED_PILLAR,
+#endif
+	DROPEFFECT_MAX,
+#if PACKETVER >= 20200304
+	// White was removed in 2020-03-04
+	DROPEFFECT_WHITE_PILLAR,
+	// Orange was replaced by green in 2020-03-04
 	DROPEFFECT_ORANGE_PILLAR,
-	DROPEFFECT_MAX
+#else
+	// Not supported before 2020-03-04
+	DROPEFFECT_GREEN_PILLAR,
+	DROPEFFECT_RED_PILLAR,
+#endif
 };
 
 /// Enum for items with delayed consumption
@@ -972,28 +996,67 @@ struct item_data
 // Struct for item random option [Secret]
 struct s_random_opt_data
 {
-	unsigned short id;
-	struct script_code *script;
-};
+	uint16 id;
+	std::string name;
+	script_code *script;
 
-/// Enum for Random Option Groups
-enum Random_Option_Group {
-	RDMOPTG_None = 0,
-	RDMOPTG_Crimson_Weapon,
+	~s_random_opt_data() {
+		if (script)
+			script_free_code(script);
+	}
 };
 
 /// Struct for random option group entry
 struct s_random_opt_group_entry {
-	struct s_item_randomoption option[MAX_ITEM_RDM_OPT];
+	uint16 id;
+	int16 min_value, max_value;
+	int8 param;
+	uint16 chance;
 };
 
 /// Struct for Random Option Group
 struct s_random_opt_group {
-	uint8 id;
-	struct s_random_opt_group_entry *entries;
-	uint16 total;
+	uint16 id;
+	std::string name;
+	std::map<uint16, std::vector<std::shared_ptr<s_random_opt_group_entry>>> slots;
+	uint16 max_random;
+	std::vector<std::shared_ptr<s_random_opt_group_entry>> random_options;
 };
 
+class RandomOptionDatabase : public TypesafeYamlDatabase<uint16, s_random_opt_data> {
+public:
+	RandomOptionDatabase() : TypesafeYamlDatabase("RANDOM_OPTION_DB", 1) {
+
+	}
+
+	const std::string getDefaultLocation();
+	uint64 parseBodyNode(const YAML::Node &node);
+	void loadingFinished();
+
+	// Additional
+	bool option_exists(std::string name);
+	bool option_get_id(std::string name, uint16 &id);
+};
+
+extern RandomOptionDatabase random_option_db;
+
+class RandomOptionGroupDatabase : public TypesafeYamlDatabase<uint16, s_random_opt_group> {
+public:
+	RandomOptionGroupDatabase() : TypesafeYamlDatabase("RANDOM_OPTION_GROUP", 1) {
+
+	}
+
+	const std::string getDefaultLocation();
+	uint64 parseBodyNode(const YAML::Node &node);
+
+	// Additional
+	bool add_option(const YAML::Node &node, std::shared_ptr<s_random_opt_group_entry> &entry);
+	bool option_exists(std::string name);
+	bool option_get_id(std::string name, uint16 &id);
+};
+
+extern RandomOptionGroupDatabase random_option_group;
+
 class ItemDatabase : public TypesafeCachedYamlDatabase<t_itemid, item_data> {
 public:
 	ItemDatabase() : TypesafeCachedYamlDatabase("ITEM_DB", 1) {
@@ -1002,6 +1065,7 @@ public:
 
 	const std::string getDefaultLocation();
 	uint64 parseBodyNode(const YAML::Node& node);
+	void loadingFinished();
 };
 
 extern ItemDatabase item_db;
@@ -1077,9 +1141,6 @@ char itemdb_pc_get_itemgroup(uint16 group_id, bool identify, struct map_session_
 
 bool itemdb_parse_roulette_db(void);
 
-struct s_random_opt_data *itemdb_randomopt_exists(short id);
-struct s_random_opt_group *itemdb_randomopt_group_exists(int id);
-
 void itemdb_reload(void);
 
 void do_final_itemdb(void);

+ 3 - 1
src/map/map-server.vcxproj

@@ -331,6 +331,8 @@
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_trade.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_trade.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_synthesis.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_synthesis.yml')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_upgrade.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_upgrade.yml')" />
+    <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_randomopt_db.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_randomopt_db.yml')" />
+    <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_randomopt_group.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_randomopt_group.yml')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_violetbox.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_violetbox.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\job_basehpsp_db.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\job_basehpsp_db.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\job_db1.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\job_db1.txt')" />
@@ -338,7 +340,7 @@
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\job_exp.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\job_exp.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\job_noenter_map.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\job_noenter_map.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\job_param_db.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\job_param_db.txt')" />
-    <Copy SourceFiles="$(SolutionDir)db\import-tmpl\level_penalty.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\level_penalty.txt')" />
+    <Copy SourceFiles="$(SolutionDir)db\import-tmpl\level_penalty.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\level_penalty.yml')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\magicmushroom_db.yml" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\magicmushroom_db.yml')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\map_cache.dat" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\map_cache.dat')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\map_index.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\map_index.txt')" />

+ 5 - 1
src/map/map.cpp

@@ -2088,6 +2088,7 @@ int map_quit(struct map_session_data *sd) {
 		status_change_end(&sd->bl, SC_GLORYWOUNDS, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_SOULCOLD, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_HAWKEYES, INVALID_TIMER);
+		status_change_end(&sd->bl, SC_EMERGENCY_MOVE, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_CHASEWALK2, INVALID_TIMER);
 		if(sd->sc.data[SC_PROVOKE] && sd->sc.data[SC_PROVOKE]->timer == INVALID_TIMER)
 			status_change_end(&sd->bl, SC_PROVOKE, INVALID_TIMER); //Infinite provoke ends on logout
@@ -2928,7 +2929,7 @@ int map_removemobs_sub(struct block_list *bl, va_list ap)
 	if( !battle_config.mob_remove_damaged && md->status.hp < md->status.max_hp )
 		return 0;
 	// is a mvp
-	if( md->db->mexp > 0 )
+	if( md->get_bosstype() == BOSSTYPE_MVP )
 		return 0;
 
 	unit_free(&md->bl,CLR_OUTSIGHT);
@@ -3560,6 +3561,9 @@ int map_readfromcache(struct map_data *m, char *buffer, char *decode_buffer)
 	for(i = 0; i < header->map_count; i++) {
 		info = (struct map_cache_map_info *)p;
 
+		// name exists in maps_athena.conf but not in map_cache.dat
+		if (info->name == nullptr || info->name[0] == '\0')
+			continue;
 		if( strcmp(m->name, info->name) == 0 )
 			break; // Map found
 

+ 4 - 2
src/map/map.hpp

@@ -73,12 +73,11 @@ void map_msg_reload(void);
 #define MAPID_BASEMASK 0x00ff
 #define MAPID_UPPERMASK 0x0fff
 #define MAPID_THIRDMASK (JOBL_THIRD|MAPID_UPPERMASK)
-#define MAPID_ALL 0xffff
 
 //First Jobs
 //Note the oddity of the novice:
 //Super Novices are considered the 2-1 version of the novice! Novices are considered a first class type, too...
-enum e_mapid {
+enum e_mapid : uint64{
 //Novice And 1-1 Jobs
 	MAPID_NOVICE = 0x0,
 	MAPID_SWORDMAN,
@@ -220,6 +219,8 @@ enum e_mapid {
 	MAPID_BABY_GENETIC,
 	MAPID_BABY_SHADOW_CHASER,
 	MAPID_BABY_SOUL_REAPER,
+// Additional constants
+	MAPID_ALL = UINT64_MAX
 };
 
 //Max size for inputs to Graffiti, Talkie Box and Vending text prompts
@@ -373,6 +374,7 @@ enum mob_ai {
 	AI_ZANZOU,
 	AI_LEGION,
 	AI_FAW,
+	AI_GUILD,
 	AI_MAX
 };
 

+ 134 - 67
src/map/mob.cpp

@@ -30,6 +30,7 @@
 #include "guild.hpp"
 #include "homunculus.hpp"
 #include "intif.hpp"
+#include "itemdb.hpp"
 #include "log.hpp"
 #include "map.hpp"
 #include "mercenary.hpp"
@@ -385,6 +386,24 @@ struct view_data * mob_get_viewdata(int mob_id)
 	return &db->vd;
 }
 
+e_mob_bosstype mob_db::get_bosstype(){
+	if( status_has_mode( &this->status, MD_MVP ) ){
+		return BOSSTYPE_MVP;
+	}else if( this->status.class_ == CLASS_BOSS ){
+		return BOSSTYPE_MINIBOSS;
+	}else{
+		return BOSSTYPE_NONE;
+	}
+}
+
+e_mob_bosstype mob_data::get_bosstype(){
+	if( this->db != nullptr ){
+		return this->db->get_bosstype();
+	}else{
+		return BOSSTYPE_NONE;
+	}
+}
+
 /**
  * Create unique view data associated to a spawned monster.
  * @param md: Mob to adjust
@@ -571,7 +590,7 @@ bool mob_ksprotected (struct block_list *src, struct block_list *target)
 		if( mapdata->flag[MF_ALLOWKS] || mapdata_flag_ks(mapdata) )
 			return false; // Ignores GVG, PVP and AllowKS map flags
 
-		if( md->db->mexp || md->master_id )
+		if( md->get_bosstype() == BOSSTYPE_MVP || md->master_id )
 			return false; // MVP, Slaves mobs ignores KS
 
 		if( (sce = md->sc.data[SC_KSPROTECTED]) == nullptr )
@@ -2096,21 +2115,63 @@ static TIMER_FUNC(mob_ai_hard){
 	return 0;
 }
 
+/**
+ * Assign random option values to an item
+ * @param item_option: Random option on the item
+ * @param option: Options to assign
+ */
+void mob_setitem_option(s_item_randomoption &item_option, const std::shared_ptr<s_random_opt_group_entry> &option) {
+	item_option.id = option->id;
+	item_option.value = rnd_value(option->min_value, option->max_value);
+	item_option.param = option->param;
+}
+
 /**
  * Set random option for item when dropped from monster
- * @param itm Item data
- * @param mobdrop Drop data
+ * @param item: Item data
+ * @param mobdrop: Drop data
  * @author [Cydh]
  **/
-void mob_setdropitem_option(struct item *itm, struct s_mob_drop *mobdrop) {
-	struct s_random_opt_group *g = NULL;
-	if (!itm || !mobdrop || mobdrop->randomopt_group == RDMOPTG_None)
+void mob_setdropitem_option(item *item, s_mob_drop *mobdrop) {
+	if (!item || !mobdrop)
 		return;
-	if ((g = itemdb_randomopt_group_exists(mobdrop->randomopt_group)) && g->total) {
-		int r = rnd()%g->total;
-		if (&g->entries[r]) {
-			memcpy(&itm->option, &g->entries[r], sizeof(itm->option));
-			return;
+
+	std::shared_ptr<s_random_opt_group> group = random_option_group.find(mobdrop->randomopt_group);
+
+	if (group != nullptr) {
+		// Apply Must options
+		for (size_t i = 0; i < group->slots.size(); i++) {
+			// Try to apply an entry
+			for (size_t j = 0, max = group->slots[static_cast<uint16>(i)].size() * 3; j < max; j++) {
+				std::shared_ptr<s_random_opt_group_entry> option = util::vector_random(group->slots[static_cast<uint16>(i)]);
+
+				if (rnd() % 10000 < option->chance) {
+					mob_setitem_option(item->option[i], option);
+					break;
+				}
+			}
+
+			// If no entry was applied, assign one
+			if (item->option[i].id == 0) {
+				std::shared_ptr<s_random_opt_group_entry> option = util::vector_random(group->slots[static_cast<uint16>(i)]);
+
+				// Apply an entry without checking the chance
+				mob_setitem_option(item->option[i], option);
+			}
+		}
+
+		// Apply Random options (if available)
+		if (group->max_random > 0) {
+			for (size_t i = 0; i < min(group->max_random, MAX_ITEM_RDM_OPT); i++) {
+				// If item already has an option in this slot, skip it
+				if (item->option[i].id > 0)
+					continue;
+
+				std::shared_ptr<s_random_opt_group_entry> option = util::vector_random(group->random_options);
+
+				if (rnd() % 10000 < option->chance)
+					mob_setitem_option(item->option[i], option);
+			}
 		}
 	}
 }
@@ -2371,7 +2432,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
 				md->dmglog[i].id  = char_id;
 				md->dmglog[i].flag= flag;
 
-				if(md->db->mexp)
+				if( md->get_bosstype() == BOSSTYPE_MVP )
 					pc_damage_log_add(map_charid2sd(char_id),md->bl.id);
 				break;
 			}
@@ -2388,7 +2449,7 @@ void mob_log_damage(struct mob_data *md, struct block_list *src, int damage)
 			md->dmglog[minpos].flag= flag;
 			md->dmglog[minpos].dmg = damage;
 
-			if(md->db->mexp)
+			if( md->get_bosstype() == BOSSTYPE_MVP )
 				pc_damage_log_add(map_charid2sd(char_id),md->bl.id);
 		}
 	}
@@ -2601,7 +2662,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 			if(battle_config.zeny_from_mobs && md->level) {
 				 // zeny calculation moblv + random moblv [Valaris]
 				zeny=(int) ((md->level+rnd()%md->level)*per*bonus/100.);
-				if(md->db->mexp > 0)
+				if( md->get_bosstype() == BOSSTYPE_MVP )
 					zeny*=rnd()%250;
 			}
 
@@ -2670,7 +2731,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 				if(base_exp || job_exp) {
 					if( md->dmglog[i].flag != MDLF_PET || battle_config.pet_attack_exp_to_master ) {
 #ifdef RENEWAL_EXP
-						int rate = pc_level_penalty_mod(md->level - tmpsd[i]->status.base_level, md->status.class_, md->status.mode, 1);
+						int rate = pc_level_penalty_mod( tmpsd[i], PENALTY_EXP, nullptr, md );
 						if (rate != 100) {
 							if (base_exp)
 								base_exp = (unsigned int)cap_value(apply_rate(base_exp, rate), 1, UINT_MAX);
@@ -2685,7 +2746,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 					pc_getzeny(tmpsd[i], zeny, LOG_TYPE_PICKDROP_MONSTER, NULL);
 			}
 
-			if( md->db->mexp )
+			if( md->get_bosstype() == BOSSTYPE_MVP )
 				pc_damage_log_clear(tmpsd[i],md->bl.id);
 		}
 
@@ -2705,10 +2766,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 		struct item_data* it = NULL;
 		int drop_rate;
 #ifdef RENEWAL_DROP
-		int drop_modifier = mvp_sd    ? pc_level_penalty_mod(md->level - mvp_sd->status.base_level, md->status.class_, md->status.mode, 2)   :
-							second_sd ? pc_level_penalty_mod(md->level - second_sd->status.base_level, md->status.class_, md->status.mode, 2):
-							third_sd  ? pc_level_penalty_mod(md->level - third_sd->status.base_level, md->status.class_, md->status.mode, 2) :
-							100; // No player was attached, we don't use any modifier (100 = rates are not touched)
+		int drop_modifier = pc_level_penalty_mod( mvp_sd != nullptr ? mvp_sd : second_sd != nullptr ? second_sd : third_sd, PENALTY_DROP, nullptr, md );
 #endif
 		dlist->m = md->bl.m;
 		dlist->x = md->bl.x;
@@ -2723,7 +2781,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 				continue;
 			if ( !(it = itemdb_exists(md->db->dropitem[i].nameid)) )
 				continue;
-			drop_rate = md->db->dropitem[i].p;
+			drop_rate = md->db->dropitem[i].rate;
 			if (drop_rate <= 0) {
 				if (battle_config.drop_rate0item)
 					continue;
@@ -2800,7 +2858,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 			}
 			// Announce first, or else ditem will be freed. [Lance]
 			// By popular demand, use base drop rate for autoloot code. [Skotlex]
-			mob_item_drop(md, dlist, ditem, 0, battle_config.autoloot_adjust ? drop_rate : md->db->dropitem[i].p, homkillonly);
+			mob_item_drop(md, dlist, ditem, 0, battle_config.autoloot_adjust ? drop_rate : md->db->dropitem[i].rate, homkillonly);
 		}
 
 		// Ore Discovery [Celest]
@@ -2876,28 +2934,35 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 		add_timer(tick + (!battle_config.delay_battle_damage?500:0), mob_delay_item_drop, 0, (intptr_t)dlist);
 	}
 
-	if(mvp_sd && md->db->mexp > 0 && !md->special_state.ai) {
+	if( mvp_sd && md->get_bosstype() == BOSSTYPE_MVP ){
 		t_itemid log_mvp_nameid = 0;
 		t_exp log_mvp_exp = 0;
-		unsigned int mexp;
-		struct item item;
-		double exp;
+
+		clif_mvp_effect( mvp_sd );
 
 		//mapflag: noexp check [Lorky]
-		if (map_getmapflag(m, MF_NOBASEEXP) || type&2)
-			exp =1;
-		else {
-			exp = md->db->mexp;
-			if (count > 1)
-				exp += exp*(battle_config.exp_bonus_attacker*(count-1))/100.; //[Gengar]
-		}
+		if( md->db->mexp > 0 && !( map_getmapflag( m, MF_NOBASEEXP ) || type&2 ) ){
+			log_mvp_exp = md->db->mexp;
+
+#if defined(RENEWAL_EXP)
+			int penalty = pc_level_penalty_mod( mvp_sd, PENALTY_MVP_EXP, nullptr, md );
+
+			log_mvp_exp = cap_value( apply_rate( log_mvp_exp, penalty ), 0, MAX_EXP );
+#endif
+
+			if( battle_config.exp_bonus_attacker > 0 && count > 1 ){
+				if( count > battle_config.exp_bonus_max_attacker ){
+					count = battle_config.exp_bonus_max_attacker;
+				}
 
-		mexp = (unsigned int)cap_value(exp, 1, UINT_MAX);
+				log_mvp_exp += log_mvp_exp * ( battle_config.exp_bonus_attacker * ( count - 1 ) ) / 100;
+			}
+
+			log_mvp_exp = cap_value( log_mvp_exp, 1, MAX_EXP );
 
-		clif_mvp_effect(mvp_sd);
-		clif_mvp_exp(mvp_sd,mexp);
-		pc_gainexp(mvp_sd, &md->bl, mexp,0, 0);
-		log_mvp_exp = mexp;
+			clif_mvp_exp( mvp_sd, log_mvp_exp );
+			pc_gainexp( mvp_sd, &md->bl, log_mvp_exp, 0, 0 );
+		}
 
 		if( !(map_getmapflag(m, MF_NOMVPLOOT) || type&1) ) {
 			//Order might be random depending on item_drop_mvp_mode config setting
@@ -2925,13 +2990,22 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 				}
 			}
 
+#if defined(RENEWAL_DROP)
+			int penalty = pc_level_penalty_mod( mvp_sd, PENALTY_MVP_DROP, nullptr, md );
+#endif
+
 			for(i = 0; i < MAX_MVP_DROP_TOTAL; i++) {
 				struct item_data *i_data;
 
 				if(mdrop[i].nameid == 0 || !(i_data = itemdb_exists(mdrop[i].nameid)))
 					continue;
 
-				temp = mdrop[i].p;
+				temp = mdrop[i].rate;
+
+#if defined(RENEWAL_DROP)
+				temp = cap_value( apply_rate( temp, penalty ), 0, 10000 );
+#endif
+
 				if (temp != 10000) {
 					if(temp <= 0 && !battle_config.drop_rate0item)
 						temp = 1;
@@ -2939,7 +3013,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 						continue;
 				}
 
-				memset(&item,0,sizeof(item));
+				struct item item = {};
 				item.nameid=mdrop[i].nameid;
 				item.identify= itemdb_isidentified(item.nameid);
 				clif_mvp_item(mvp_sd,item.nameid);
@@ -4274,7 +4348,7 @@ static bool mob_parse_dbrow(char** str)
 
 		if( entry.mvpitem[i].nameid ){
 			if( itemdb_search(entry.mvpitem[i].nameid) ){
-				entry.mvpitem[i].p = atoi(str[32+i*2]);
+				entry.mvpitem[i].rate = atoi(str[32+i*2]);
 				continue;
 			}else{
 				ShowWarning( "Monster \"%s\"(id: %d) is dropping an unknown item \"%s\"(MVP-Drop %d)\n", entry.name, mob_id, str[31+i*2], ( i / 2 ) + 1 );
@@ -4283,7 +4357,7 @@ static bool mob_parse_dbrow(char** str)
 
 		// Delete the item
 		entry.mvpitem[i].nameid = 0;
-		entry.mvpitem[i].p = 0;
+		entry.mvpitem[i].rate = 0;
 	}
 
 	for(i = 0; i < MAX_MOB_DROP; i++) {
@@ -4293,7 +4367,7 @@ static bool mob_parse_dbrow(char** str)
 
 		if( entry.dropitem[i].nameid ){
 			if( itemdb_search( entry.dropitem[i].nameid ) ){
-				entry.dropitem[i].p = atoi(str[k+1]);
+				entry.dropitem[i].rate = atoi(str[k+1]);
 				continue;
 			}else{
 				ShowWarning( "Monster \"%s\"(id: %d) is dropping an unknown item \"%s\"(Drop %d)\n", entry.name, mob_id, str[k], ( i / 2 ) + 1 );
@@ -4302,7 +4376,7 @@ static bool mob_parse_dbrow(char** str)
 
 		// Delete the item
 		entry.dropitem[i].nameid = 0;
-		entry.dropitem[i].p = 0;
+		entry.dropitem[i].rate = 0;
 	}
 
 	db = mob_db(mob_id);
@@ -5239,25 +5313,18 @@ static bool mob_readdb_drop(char* str[], int columns, int current) {
 		}
 
 		drop[i].nameid = nameid;
-		drop[i].p = rate;
-		drop[i].steal_protected = (flag) ? 1 : 0;
+		drop[i].rate = rate;
+		drop[i].steal_protected = (flag) ? true : false;
 		drop[i].randomopt_group = 0;
 
 		if (columns > 3) {
-			int64 randomopt_group_tmp = -1;
-			int randomopt_group = -1;
+			uint16 randomopt_group;
 
-			if (!script_get_constant(trim(str[3]), &randomopt_group_tmp)) {
+			if (!random_option_group.option_get_id(trim(str[3]), randomopt_group)) {
 				ShowError("mob_readdb_drop: Invalid 'randopt_groupid' '%s' for monster '%hu'.\n", str[3], mobid);
 				return false;
 			}
-			randomopt_group = static_cast<int>(randomopt_group_tmp);
-			if (randomopt_group == RDMOPTG_None)
-				return true;
-			if (!itemdb_randomopt_group_exists(randomopt_group)) {
-				ShowError("mob_readdb_drop: 'randopt_groupid' '%s' cannot be found in DB for monster '%hu'.\n", str[3], mobid);
-				return false;
-			}
+
 			drop[i].randomopt_group = randomopt_group;
 		}
 	}
@@ -5293,7 +5360,7 @@ static void mob_drop_ratio_adjust(void){
 
 		for( j = 0; j < MAX_MVP_DROP_TOTAL; j++ ){
 			nameid = mob->mvpitem[j].nameid;
-			rate = mob->mvpitem[j].p;
+			rate = mob->mvpitem[j].rate;
 
 			if( nameid == 0 || rate == 0 ){
 				continue;
@@ -5313,9 +5380,9 @@ static void mob_drop_ratio_adjust(void){
 
 				// Item is not known anymore(should never happen)
 				if( !id ){
-					ShowWarning( "Monster \"%s\"(id:%hu) is dropping an unknown item(id: %u)\n", mob->name, mob_id, nameid );
+					ShowWarning( "Monster \"%s\"(id:%u) is dropping an unknown item(id: %u)\n", mob->name, mob_id, nameid );
 					mob->mvpitem[j].nameid = 0;
-					mob->mvpitem[j].p = 0;
+					mob->mvpitem[j].rate = 0;
 					continue;
 				}
 
@@ -5325,7 +5392,7 @@ static void mob_drop_ratio_adjust(void){
 				}
 			}
 
-			mob->mvpitem[j].p = rate;
+			mob->mvpitem[j].rate = rate;
 		}
 
 		for( j = 0; j < MAX_MOB_DROP_TOTAL; j++ ){
@@ -5333,7 +5400,7 @@ static void mob_drop_ratio_adjust(void){
 			bool is_treasurechest;
 
 			nameid = mob->dropitem[j].nameid;
-			rate = mob->dropitem[j].p;
+			rate = mob->dropitem[j].rate;
 
 			if( nameid == 0 || rate == 0 ){
 				continue;
@@ -5345,7 +5412,7 @@ static void mob_drop_ratio_adjust(void){
 			if( !id ){
 				ShowWarning( "Monster \"%s\"(id:%hu) is dropping an unknown item(id: %u)\n", mob->name, mob_id, nameid );
 				mob->dropitem[j].nameid = 0;
-				mob->dropitem[j].p = 0;
+				mob->dropitem[j].rate = 0;
 				continue;
 			}
 
@@ -5361,8 +5428,8 @@ static void mob_drop_ratio_adjust(void){
 				ratemin = battle_config.item_drop_treasure_min;
 				ratemax = battle_config.item_drop_treasure_max;
 			} else {
-				bool is_mvp = status_has_mode(&mob->status,MD_MVP);
-				bool is_boss = (mob->status.class_ == CLASS_BOSS);
+				bool is_mvp = mob->get_bosstype() == BOSSTYPE_MVP;
+				bool is_boss = mob->get_bosstype() == BOSSTYPE_MINIBOSS;
 
 				is_treasurechest = false;
 
@@ -5427,7 +5494,7 @@ static void mob_drop_ratio_adjust(void){
 				}
 			}
 
-			mob->dropitem[j].p = rate;
+			mob->dropitem[j].rate = rate;
 		}
 	}
 
@@ -5639,7 +5706,7 @@ void mob_reload_itemmob_data(void) {
 			id = itemdb_search(pair.second.dropitem[d].nameid);
 
 			for (k = 0; k < MAX_SEARCH; k++) {
-				if (id->mob[k].chance <= pair.second.dropitem[d].p)
+				if (id->mob[k].chance <= pair.second.dropitem[d].rate)
 					break;
 			}
 
@@ -5648,7 +5715,7 @@ void mob_reload_itemmob_data(void) {
 
 			if (id->mob[k].id != pair.first)
 				memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
-			id->mob[k].chance = pair.second.dropitem[d].p;
+			id->mob[k].chance = pair.second.dropitem[d].rate;
 			id->mob[k].id = pair.first;
 		}
 	}

+ 14 - 3
src/map/mob.hpp

@@ -76,6 +76,7 @@ enum MOBID {
 	MOBID_S_HORNET			= 2158,
 	MOBID_S_GIANT_HORNET,
 	MOBID_S_LUCIOLA_VESPA,
+	MOBID_GUILD_SKILL_FLAG	= 20269,
 };
 
 ///Mob skill states.
@@ -129,6 +130,12 @@ enum e_random_monster_flags {
 	RMF_ALL				= 0xFF, ///< Apply all flags
 };
 
+enum e_mob_bosstype : uint8{
+	BOSSTYPE_NONE,
+	BOSSTYPE_MINIBOSS,
+	BOSSTYPE_MVP
+};
+
 struct mob_skill {
 	enum MobSkillState state;
 	uint16 skill_id,skill_lv;
@@ -162,9 +169,9 @@ struct s_mob_lootitem {
 /// Struct for monster's drop item
 struct s_mob_drop {
 	t_itemid nameid;
-	int p;
-	uint8 randomopt_group;
-	unsigned steal_protected : 1;
+	uint32 rate;
+	uint16 randomopt_group;
+	bool steal_protected;
 };
 
 struct mob_db {
@@ -180,6 +187,8 @@ struct mob_db {
 	unsigned int option;
 	int maxskill;
 	struct mob_skill skill[MAX_MOBSKILL];
+
+	e_mob_bosstype get_bosstype();
 };
 
 struct mob_data {
@@ -248,6 +257,8 @@ struct mob_data {
 	 * MvP Tombstone NPC ID
 	 **/
 	int tomb_nid;
+
+	e_mob_bosstype get_bosstype();
 };
 
 class MobAvailDatabase : public YamlDatabase {

+ 27 - 20
src/map/npc.cpp

@@ -563,6 +563,27 @@ int npc_event_doall_id(const char* name, int rid)
 	return c;
 }
 
+// runs the specified event on all NPCs with the given path
+int npc_event_doall_path( const char* event_name, const char* path ){
+	s_mapiterator* iter = mapit_geteachnpc();
+	npc_data* nd;
+	int count = 0;
+
+	while( ( nd = (npc_data*)mapit_next( iter ) ) != nullptr ){
+		if( nd->path && strcasecmp( nd->path, path ) == 0 ){
+			char name[EVENT_NAME_LENGTH];
+
+			safesnprintf( name, EVENT_NAME_LENGTH, "%s::%s", nd->exname, event_name );
+
+			count += npc_event_do( name );
+		}
+	}
+
+	ShowStatus( "Event '" CL_WHITE "%s" CL_RESET "' executed with '" CL_WHITE "%d" CL_RESET "' NPCs.\n", event_name, count );
+
+	return count;
+}
+
 /*==========================================
  * Clock event execution
  * OnMinute/OnClock/OnHour/OnDay/OnDDHHMM
@@ -2526,7 +2547,7 @@ int npc_addsrcfile(const char* name, bool loadscript)
 		file_prev->next = file;
 
 	if (loadscript)
-		return npc_parsesrcfile(file->name, true);
+		return npc_parsesrcfile(file->name);
 
 	return 1;
 }
@@ -3233,7 +3254,7 @@ static const char* npc_skip_script(const char* start, const char* buffer, const
  * @param filepath : filename with path wich we are parsing
  * @return new index for next parsing
  */
-static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, const char* start, const char* buffer, const char* filepath, bool runOnInit) {
+static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, const char* start, const char* buffer, const char* filepath) {
 	int16 dir = 0;
 	short m, x, y, xs = 0, ys = 0; // [Valaris] thanks to fov
 	struct script_code *script;
@@ -3345,20 +3366,6 @@ static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, cons
 
 	nd->u.scr.timerid = INVALID_TIMER;
 
-	if( runOnInit ) {
-		char evname[EVENT_NAME_LENGTH];
-		struct event_data *ev;
-
-		snprintf(evname, ARRAYLENGTH(evname), "%s::%s", nd->exname, script_config.init_event_name);
-
-		if( ( ev = (struct event_data*)strdb_get(ev_db, evname) ) ) {
-
-			//Execute OnInit
-			run_script(nd->u.scr.script,ev->pos,0,nd->bl.id);
-
-		}
-	}
-
 	return end;
 }
 
@@ -4401,7 +4408,7 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con
  * @param runOnInit :  should we exec OnInit when it's done ?
  * @return 0:error, 1:success
  */
-int npc_parsesrcfile(const char* filepath, bool runOnInit)
+int npc_parsesrcfile(const char* filepath)
 {
 	int16 m, x, y;
 	int lines = 0;
@@ -4570,7 +4577,7 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit)
 			if( strcasecmp(w1,"function") == 0 )
 				p = npc_parse_function(w1, w2, w3, w4, p, buffer, filepath);
 			else
-				p = npc_parse_script(w1,w2,w3,w4, p, buffer, filepath,runOnInit);
+				p = npc_parse_script(w1,w2,w3,w4, p, buffer, filepath);
 		}
 		else if( (i=0, sscanf(w2,"duplicate%n",&i), (i > 0 && w2[i] == '(')) && count > 3 )
 			p = npc_parse_duplicate(w1,w2,w3,w4, p, buffer, filepath);
@@ -4756,7 +4763,7 @@ int npc_reload(void) {
 	// Reloading npcs now
 	for (nsl = npc_src_files; nsl; nsl = nsl->next) {
 		ShowStatus("Loading NPC file: %s" CL_CLL "\r", nsl->name);
-		npc_parsesrcfile(nsl->name,false);
+		npc_parsesrcfile(nsl->name);
 	}
 	ShowInfo ("Done loading '" CL_WHITE "%d" CL_RESET "' NPCs:" CL_CLL "\n"
 		"\t-'" CL_WHITE "%d" CL_RESET "' Warps\n"
@@ -4907,7 +4914,7 @@ void do_init_npc(void){
 	ShowStatus("Loading NPCs...\r");
 	for( file = npc_src_files; file != NULL; file = file->next ) {
 		ShowStatus("Loading NPC file: %s" CL_CLL "\r", file->name);
-		npc_parsesrcfile(file->name,false);
+		npc_parsesrcfile(file->name);
 	}
 	ShowInfo ("Done loading '" CL_WHITE "%d" CL_RESET "' NPCs:" CL_CLL "\n"
 		"\t-'" CL_WHITE "%d" CL_RESET "' Warps\n"

+ 2 - 1
src/map/npc.hpp

@@ -1263,7 +1263,7 @@ int npc_get_new_npc_id(void);
 
 int npc_addsrcfile(const char* name, bool loadscript);
 void npc_delsrcfile(const char* name);
-int npc_parsesrcfile(const char* filepath, bool runOnInit);
+int npc_parsesrcfile(const char* filepath);
 void do_clear_npc(void);
 void do_final_npc(void);
 void do_init_npc(void);
@@ -1274,6 +1274,7 @@ int npc_event_do_id(const char* name, int rid);
 int npc_event_doall(const char* name);
 void npc_event_runall( const char* eventname );
 int npc_event_doall_id(const char* name, int rid);
+int npc_event_doall_path(const char* event_name, const char* path);
 
 int npc_timerevent_start(struct npc_data* nd, int rid);
 int npc_timerevent_stop(struct npc_data* nd);

+ 10 - 1
src/map/packets.hpp

@@ -235,8 +235,17 @@ DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
 DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
 DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
 DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
-DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x2b8)
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0xb67)
+#else
+	DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x2b8)
+#endif
 DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0xb64)
+#else
+	DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0x836)
+#endif
 DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
 DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
 DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)

+ 106 - 8
src/map/packets_struct.hpp

@@ -17,21 +17,27 @@ enum packet_headers {
 	banking_checkType = 0x9a6,
 	cart_additem_ackType = 0x12c,
 	sc_notickType = 0x196,
-#if PACKETVER >= 20150226
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	cartaddType = 0xb45,
+#elif PACKETVER >= 20150226
 	cartaddType = 0xa0b,
 #elif PACKETVER >= 5
 	cartaddType = 0x1c5,
 #else
 	cartaddType = 0x124,
 #endif
-#if PACKETVER >= 20150226
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	storageaddType = 0xb44,
+#elif PACKETVER >= 20150226
 	storageaddType = 0xa0a,
 #elif PACKETVER >= 5
 	storageaddType = 0x1c4,
 #else
 	storageaddType = 0xf4,
 #endif
-#if PACKETVER >= 20150226
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	tradeaddType = 0xb42,
+#elif PACKETVER >= 20150226
 	tradeaddType = 0xa09,
 #elif PACKETVER >= 20100223
 	tradeaddType = 0x80f,
@@ -48,6 +54,8 @@ enum packet_headers {
 	additemType = 0x990,
 #elif PACKETVER < 20160921
 	additemType = 0xa0c,
+#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	additemType = 0xb41,
 #else
 	additemType = 0xa37,
 #endif
@@ -179,7 +187,9 @@ enum packet_headers {
 #else
 	inventorylistnormalType = 0xa3,
 #endif
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	inventorylistequipType = 0xb39,
+#elif PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
 	inventorylistequipType = 0xb0a,
 #elif PACKETVER >= 20150226
 	inventorylistequipType = 0xa0d,
@@ -203,7 +213,9 @@ enum packet_headers {
 #else
 	storageListNormalType = 0xa5,
 #endif
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	storageListEquipType = 0xb39,
+#elif PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
 	storageListEquipType = 0xb0a,
 #elif PACKETVER >= 20150226
 	storageListEquipType = 0xa10,
@@ -227,7 +239,9 @@ enum packet_headers {
 #else
 	cartlistnormalType = 0x123,
 #endif
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	cartlistequipType = 0xb39,
+#elif PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
 	cartlistequipType = 0xb0a,
 #elif PACKETVER >= 20150226
 	cartlistequipType = 0xa0f,
@@ -242,10 +256,16 @@ enum packet_headers {
 #endif
 #if PACKETVER < 20100105
 	vendinglistType = 0x133,
+#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	vendinglistType = 0xb3d,
 #else
 	vendinglistType = 0x800,
 #endif
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	openvendingType = 0xb40,
+#else
 	openvendingType = 0x136,
+#endif
 #if PACKETVER >= 20120925
 	equipitemType = 0x998,
 #else
@@ -261,7 +281,9 @@ enum packet_headers {
 #else
 	unequipitemackType = 0xac,
 #endif
-#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	viewequipackType = 0xb37,
+#elif PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
 	viewequipackType = 0xb03,
 #elif PACKETVER >= 20150226
 	viewequipackType = 0xa2d,
@@ -303,13 +325,21 @@ enum packet_headers {
 #endif // PACKETVER >= 20141022
 	/* Rodex */
 	rodexicon = 0x09E7,
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	rodexread = 0x0B63,
+#else
 	rodexread = 0x09EB,
+#endif
 	rodexwriteresult = 0x09ED,
 	rodexnextpage = 0x09F0,
 	rodexgetzeny = 0x09F2,
 	rodexgetitem = 0x09F4,
 	rodexdelete = 0x09F6,
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	rodexadditem = 0x0B3f,
+#else
 	rodexadditem = 0x0A05,
+#endif
 	rodexremoveitem = 0x0A07,
 	rodexopenwrite = 0x0A12,
 #if PACKETVER < 20160601
@@ -481,7 +511,9 @@ struct EQUIPITEM_INFO {
 #if PACKETVER < 20120925
 	uint8 IsDamaged;
 #endif
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 RefiningLevel;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20071002
 	int32 HireExpireDate;
@@ -496,6 +528,10 @@ struct EQUIPITEM_INFO {
 	uint8 option_count;
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
 #endif
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 RefiningLevel;
+	uint8 enchantgrade;
+#endif
 #if PACKETVER >= 20120925
 	struct {
 		uint8 IsIdentified : 1;
@@ -546,7 +582,9 @@ struct packet_additem {
 #endif
 	uint8 IsIdentified;
 	uint8 IsDamaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refiningLevel;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20120925
 	uint32 location;
@@ -563,10 +601,14 @@ struct packet_additem {
 #endif
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
-#endif
 #if PACKETVER >= 20160921
 	uint8 favorite;
 	uint16 look;
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refiningLevel;
+	uint8 enchantgrade;
+#endif
+#endif
 #endif
 } __attribute__((packed));
 
@@ -1557,12 +1599,18 @@ struct PACKET_ZC_ADD_ITEM_TO_MAIL {
 	int8 type;
 	int8 IsIdentified;
 	int8 IsDamaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	int8 refiningLevel;
+#endif
 	struct EQUIPSLOTINFO slot;
 	struct ItemOptions optionData[MAX_ITEM_OPTIONS];
 	int16 weight;
 	uint8 favorite;
 	uint32 location;
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	int8 refiningLevel;
+	uint8 enchantgrade;
+#endif
 } __attribute__((packed));
 
 struct mail_item {
@@ -1574,13 +1622,19 @@ struct mail_item {
 #endif
 	int8 IsIdentified;
 	int8 IsDamaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	int8 refiningLevel;
+#endif
 	struct EQUIPSLOTINFO slot;
 	uint32 location;
 	uint8 type;
 	uint16 viewSprite;
 	uint16 bindOnEquip;
 	struct ItemOptions optionData[MAX_ITEM_OPTIONS];
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	int8 refiningLevel;
+	uint8 enchantgrade;
+#endif
 } __attribute__((packed));
 
 struct PACKET_CZ_REQ_OPEN_WRITE_MAIL {
@@ -2087,10 +2141,16 @@ struct PACKET_ZC_ADD_ITEM_TO_STORE {
 #endif
 	uint8 identified;
 	uint8 damaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 #endif
 } __attribute__((packed));
 
@@ -2131,10 +2191,16 @@ struct PACKET_ZC_ADD_ITEM_TO_CART {
 #endif
 	uint8 identified;
 	uint8 damaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 #endif
 } __attribute__((packed));
 
@@ -2224,10 +2290,18 @@ struct PACKET_ZC_ADD_EXCHANGE_ITEM {
 #endif
 	uint8 identified;
 	uint8 damaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint32 location;
+	uint16 viewSprite;
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 #endif
 } __attribute__((packed));
 
@@ -2261,10 +2335,16 @@ struct PACKET_ZC_ITEM_PICKUP_PARTY {
 #endif
 	uint8 identified;
 	uint8 damaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 	uint16 location;
 	uint8 itemType;
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 } __attribute__((packed));
 
 struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
@@ -2463,10 +2543,16 @@ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub {
 #endif
 	uint8 identified;
 	uint8 damaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 #endif
 } __attribute__((packed));
 
@@ -2559,7 +2645,9 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
 #endif
 	uint8 identified;
 	uint8 damaged;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
@@ -2568,6 +2656,10 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
 #if PACKETVER >= 20160921
 	uint32 location;
 	uint16 viewSprite;
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 #endif
 } __attribute__((packed));
 
@@ -2780,10 +2872,16 @@ struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub {
 	uint8 itemType;
 	uint32 price;
 	uint16 amount;
+#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
 	uint8 refine;
+#endif
 	struct EQUIPSLOTINFO slot;
 #if PACKETVER >= 20150226
 	struct ItemOptions option_data[MAX_ITEM_OPTIONS];
+#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
+	uint8 refine;
+	uint8 enchantgrade;
+#endif
 #endif
 } __attribute__((packed));
 

+ 1 - 1
src/map/party.cpp

@@ -1115,7 +1115,7 @@ void party_exp_share(struct party_data* p, struct block_list* src, unsigned int
 #ifdef RENEWAL_EXP
 		uint32 base_gained = base_exp, job_gained = job_exp;
 		if (base_exp || job_exp) {
-			int rate = pc_level_penalty_mod(md->level - sd[i]->status.base_level, md->db->status.class_, md->db->status.mode, 1);
+			int rate = pc_level_penalty_mod( sd[i], PENALTY_EXP, nullptr, md );
 			if (rate != 100) {
 				if (base_exp)
 					base_gained = (unsigned int)cap_value(apply_rate(base_exp, rate), 1, UINT_MAX);

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov