浏览代码

Converts the random option databases to YAML (#5494)

* Fixes #3084.
* Creating random option groups now further reflects official behavior.
* Group bonuses can now be created without having to create multiple permutations of the same group.
* Specific slot options can now be defined which guarantee a bonus.
* Non-guaranteed options can now be defined along with a maximum amount.
* Random option value can now be defined as a range instead of a static value.
* Adds conversion of official random option groups.
* Includes CSV2YAML conversion tool.
Thanks to @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
Aleos 4 年之前
父节点
当前提交
be9babee32

+ 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

+ 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

+ 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>}

+ 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

+ 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

+ 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)
+###########################################################################

+ 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

+ 3 - 3
src/map/atcommand.cpp

@@ -7411,9 +7411,9 @@ ACMD_FUNC(mobinfo)
 		j = 0;
 		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 ) {
@@ -7450,7 +7450,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;
 				}

+ 266 - 164
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;
 
@@ -2275,194 +2273,310 @@ 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++;
+		randopt->script = parse_script(script.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS);
+	}
 
-		str[1] = p;
+	if (!exists)
+		this->put(id, randopt);
 
-		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;
+	return 1;
+}
+
+RandomOptionDatabase random_option_db;
+
+/**
+ * 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;
+}
+
+/**
+ * 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;
 		}
-		else {
-			int id = -1;
-			struct s_random_opt_data *data;
-			struct script_code *code;
+	}
 
-			str[0] = trim(str[0]);
-			if (ISDIGIT(str[0][0])) {
-				id = atoi(str[0]);
-			}
-			else {
-				int64 id_tmp;
+	return false;
+}
 
-				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);
-			}
+const std::string RandomOptionGroupDatabase::getDefaultLocation() {
+	return std::string(db_path) + "/item_randomopt_group.yml";
+}
 
-			if (id < 0) {
-				ShowError("itemdb_read_randomopt: Invalid Random Option ID '%s' in line %d of \"%s\", skipping.\n", str[0], lines, path);
-				continue;
-			}
+bool RandomOptionGroupDatabase::add_option(const YAML::Node &node, std::shared_ptr<s_random_opt_group_entry> &entry) {
+	uint16 option_id;
 
-			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);
-				continue;
-			}
-			if (data->script) {
-				script_free_code(data->script);
-				data->script = NULL;
-			}
-			data->script = code;
+	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;
 		}
-		count++;
+	} else {
+		this->invalidWarning(node, "Missing Option node.\n");
+		return false;
 	}
-	fclose(fp);
 
-	ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path);
+	entry = std::make_shared<s_random_opt_group_entry>();
+	entry->id = option_id;
+
+	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 (this->nodeExists(node, "MaxValue")) {
+		int16 value;
+
+		if (!this->asInt16(node, "MaxValue", value))
+			return false;
+
+		entry->max_value = value;
+	} else {
+		entry->max_value = 0;
+	}
+
+	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;
+	}
+
+	if (this->nodeExists(node, "Param")) {
+		int16 value;
+
+		if (!this->asInt16(node, "Param", value))
+			return false;
+
+		entry->param = static_cast<int8>(value);
+	} else {
+		entry->param = 0;
+	}
+
+	if (this->nodeExists(node, "Chance")) {
+		uint16 chance;
+
+		if (!this->asUInt16Rate(node, "Chance", chance))
+			return false;
+
+		entry->chance = chance;
+	} else {
+		entry->chance = 0;
+	}
 
 	return true;
 }
 
 /**
- * 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)
+ * 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;
-	if (g->entries)
-		aFree(g->entries);
-	g->entries = NULL;
-	aFree(g);
-	return 1;
-}
 
-/**
- * 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);
-}
+	std::shared_ptr<s_random_opt_group> randopt = this->find(id);
+	bool exists = randopt != nullptr;
 
-/**
- * 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;
+	if (!exists) {
+		if (!this->nodesExist(node, { "Group" }))
+			return 0;
 
-	if (!script_get_constant(str[0], &id_tmp)) {
-		ShowError("itemdb_read_randomopt_group: Invalid ID for Random Option Group '%s'.\n", str[0]);
-		return false;
+		randopt = std::make_shared<s_random_opt_group>();
+		randopt->id = id;
 	}
 
-	id = static_cast<int>(id_tmp);
+	if (this->nodeExists(node, "Group")) {
+		std::string name;
 
-	if ((columns-2)%3 != 0) {
-		ShowError("itemdb_read_randomopt_group: Invalid column entries '%d'.\n", columns);
-		return false;
+		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;
 	}
 
-	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);
+
+	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;
 	}
 
-	RECREATE(g->entries, struct s_random_opt_group_entry, g->total + rate);
+	if (this->nodeExists(node, "MaxRandom")) {
+		uint16 max;
 
-	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->asUInt16(node, "MaxRandom", max))
+			return 0;
 
-			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 (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);
 		}
 	}
-	g->total += rate;
-	return true;
+
+	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;
 }
 
 /**
@@ -2507,12 +2621,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();
 }
 
 /*==========================================
@@ -2549,17 +2664,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) {
@@ -2588,8 +2692,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();
 
@@ -2622,8 +2726,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();
 }
@@ -2633,8 +2737,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();
 

+ 50 - 14
src/map/itemdb.hpp

@@ -4,6 +4,7 @@
 #ifndef ITEMDB_HPP
 #define ITEMDB_HPP
 
+#include <map>
 #include <vector>
 
 #include "../common/database.hpp"
@@ -919,28 +920,66 @@ 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);
+
+	// 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) {
@@ -1024,9 +1063,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);

+ 2 - 2
src/map/map-server.vcxproj

@@ -321,8 +321,8 @@
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_misc.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_misc.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_noequip.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_noequip.txt')" />
     <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_package.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_package.txt')" />
-    <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_randomopt_db.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_randomopt_db.txt')" />
-    <Copy SourceFiles="$(SolutionDir)db\import-tmpl\item_randomopt_group.txt" DestinationFolder="$(SolutionDir)db\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)db\import\item_randomopt_group.txt')" />
+    <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')" />

+ 74 - 38
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"
@@ -2096,21 +2097,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);
+			}
 		}
 	}
 }
@@ -2723,7 +2766,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 +2843,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]
@@ -2931,7 +2974,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 				if(mdrop[i].nameid == 0 || !(i_data = itemdb_exists(mdrop[i].nameid)))
 					continue;
 
-				temp = mdrop[i].p;
+				temp = mdrop[i].rate;
 				if (temp != 10000) {
 					if(temp <= 0 && !battle_config.drop_rate0item)
 						temp = 1;
@@ -4274,7 +4317,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 +4326,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 +4336,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 +4345,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 +5282,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 +5329,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 +5349,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 +5361,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 +5369,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 +5381,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;
 			}
 
@@ -5427,7 +5463,7 @@ static void mob_drop_ratio_adjust(void){
 				}
 			}
 
-			mob->dropitem[j].p = rate;
+			mob->dropitem[j].rate = rate;
 		}
 	}
 
@@ -5639,7 +5675,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 +5684,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;
 		}
 	}

+ 3 - 3
src/map/mob.hpp

@@ -162,9 +162,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 {

+ 3 - 3
src/map/pc.cpp

@@ -5835,7 +5835,7 @@ bool pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 ski
 	// Try dropping one item, in the order from first to last possible slot.
 	// Droprate is affected by the skill success rate.
 	for( i = 0; i < MAX_STEAL_DROP; i++ )
-		if( md->db->dropitem[i].nameid > 0 && !md->db->dropitem[i].steal_protected && itemdb_exists(md->db->dropitem[i].nameid) && rnd() % 10000 < md->db->dropitem[i].p
+		if( md->db->dropitem[i].nameid > 0 && !md->db->dropitem[i].steal_protected && itemdb_exists(md->db->dropitem[i].nameid) && rnd() % 10000 < md->db->dropitem[i].rate
 #ifndef RENEWAL
 		* rate/100.
 #endif
@@ -5867,11 +5867,11 @@ bool pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 ski
 	log_pick_mob(md, LOG_TYPE_STEAL, -1, &tmp_item);
 
 	//A Rare Steal Global Announce by Lupus
-	if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) {
+	if(md->db->dropitem[i].rate <= battle_config.rare_drop_announce) {
 		struct item_data *i_data;
 		char message[128];
 		i_data = itemdb_search(itemid);
-		sprintf (message, msg_txt(sd,542), (sd->status.name[0])?sd->status.name :"GM", md->db->jname, i_data->ename.c_str(), (float)md->db->dropitem[i].p/100);
+		sprintf (message, msg_txt(sd,542), (sd->status.name[0])?sd->status.name :"GM", md->db->jname, i_data->ename.c_str(), (float)md->db->dropitem[i].rate / 100);
 		//MSG: "'%s' stole %s's %s (chance: %0.02f%%)"
 		intif_broadcast(message, strlen(message) + 1, BC_DEFAULT);
 	}

+ 6 - 5
src/map/script.cpp

@@ -10621,7 +10621,7 @@ BUILDIN_FUNC(getmobdrops)
 			continue;
 
 		mapreg_setreg(reference_uid(add_str("$@MobDrop_item"), j), mob->dropitem[i].nameid);
-		mapreg_setreg(reference_uid(add_str("$@MobDrop_rate"), j), mob->dropitem[i].p);
+		mapreg_setreg(reference_uid(add_str("$@MobDrop_rate"), j), mob->dropitem[i].rate);
 
 		j++;
 	}
@@ -17424,7 +17424,7 @@ BUILDIN_FUNC(addmonsterdrop)
 		}
 		if(c) { //Fill in the slot with the item and rate
 			mob->dropitem[c].nameid = item_id;
-			mob->dropitem[c].p = (rate > 10000)?10000:rate;
+			mob->dropitem[c].rate = (rate > 10000)?10000:rate;
 			mob_reload_itemmob_data(); // Reload the mob search data stored in the item_data
 			script_pushint(st,1);
 		} else //No place to put the new drop
@@ -17466,7 +17466,7 @@ BUILDIN_FUNC(delmonsterdrop)
 		for(i = 0; i < MAX_MOB_DROP_TOTAL; i++) {
 			if(mob->dropitem[i].nameid == item_id) {
 				mob->dropitem[i].nameid = 0;
-				mob->dropitem[i].p = 0;
+				mob->dropitem[i].rate = 0;
 				mob_reload_itemmob_data(); // Reload the mob search data stored in the item_data
 				script_pushint(st,1);
 				return SCRIPT_CMD_SUCCESS;
@@ -23368,7 +23368,6 @@ BUILDIN_FUNC(getequiprandomoption) {
 */
 BUILDIN_FUNC(setrandomoption) {
 	struct map_session_data *sd;
-	struct s_random_opt_data *opt;
 	int pos, index, id, value, param, ep;
 	int i = -1;
 	if (!script_charid2sd(7, sd))
@@ -23379,7 +23378,9 @@ BUILDIN_FUNC(setrandomoption) {
 	value = script_getnum(st, 5);
 	param = script_getnum(st, 6);
 
-	if ((opt = itemdb_randomopt_exists((short)id)) == NULL) {
+	std::shared_ptr<s_random_opt_data> opt = random_option_db.find(static_cast<uint16>(id));
+
+	if (opt == nullptr) {
 		ShowError("buildin_setrandomoption: Random option ID %d does not exists.\n", id);
 		script_pushint(st, 0);
 		return SCRIPT_CMD_FAILURE;

+ 0 - 4
src/map/script_constants.hpp

@@ -4564,10 +4564,6 @@
 	export_constant(MOBG_ClassChange);
 	export_constant(MOBG_Taekwon_Mission);
 
-	/* Item Random Option Group */
-	export_constant(RDMOPTG_None);
-	export_constant(RDMOPTG_Crimson_Weapon);
-
 	/* random option attributes */
 	export_constant(ROA_ID);
 	export_constant(ROA_VALUE);

+ 4 - 4
src/map/status.cpp

@@ -4127,15 +4127,15 @@ int status_calc_pc_sub(struct map_session_data* sd, enum e_status_calc_opt opt)
 			continue;
 		
 		if (sd->inventory_data[index]) {
-			int j;
-			struct s_random_opt_data *data;
-			for (j = 0; j < MAX_ITEM_RDM_OPT; j++) {
+			for (uint8 j = 0; j < MAX_ITEM_RDM_OPT; j++) {
 				short opt_id = sd->inventory.u.items_inventory[index].option[j].id;
 
 				if (!opt_id)
 					continue;
 				current_equip_opt_index = j;
-				data = itemdb_randomopt_exists(opt_id);
+
+				std::shared_ptr<s_random_opt_data> data = random_option_db.find(opt_id);
+
 				if (!data || !data->script)
 					continue;
 				if (!pc_has_permission(sd, PC_PERM_USE_ALL_EQUIPMENT) && itemdb_isNoEquip(sd->inventory_data[index], sd->bl.m))

+ 428 - 0
src/tool/csv2yaml.cpp

@@ -120,6 +120,13 @@ std::unordered_map<t_itemid, s_item_stack_csv2yaml> item_stack;
 std::unordered_map<t_itemid, s_item_nouse_csv2yaml> item_nouse;
 std::unordered_map<t_itemid, s_item_trade_csv2yaml> item_trade;
 
+struct s_random_opt_group_csv : s_random_opt_group {
+	std::vector<uint16> rate;
+};
+
+std::unordered_map<uint16, std::string> rand_opt_db;
+std::unordered_map<uint16, s_random_opt_group_csv> rand_opt_group;
+
 static std::map<std::string, int> um_mapid2jobname {
 	{ "Novice", JOB_NOVICE }, // Novice and Super Novice share the same value
 	{ "SuperNovice", JOB_NOVICE },
@@ -205,6 +212,9 @@ static bool itemdb_read_stack(char* fields[], int columns, int current);
 static bool itemdb_read_nouse(char* fields[], int columns, int current);
 static bool itemdb_read_itemtrade(char* fields[], int columns, int current);
 static bool itemdb_read_db(const char *file);
+static bool itemdb_read_randomopt(const char* file);
+static bool itemdb_read_randomopt_group(char *str[], int columns, int current);
+static bool itemdb_randomopt_group_yaml(void);
 
 // Constants for conversion
 std::unordered_map<t_itemid, std::string> aegis_itemnames;
@@ -218,6 +228,7 @@ static bool parse_item_constants_txt( const char* path );
 static bool parse_mob_constants( char* split[], int columns, int current );
 static bool parse_skill_constants_txt( char* split[], int columns, int current );
 static bool parse_skill_constants_yml(std::string path, std::string filename);
+static void init_random_option_constants();
 
 bool fileExists( const std::string& path );
 bool askConfirmation( const char* fmt, ... );
@@ -427,6 +438,7 @@ int do_init( int argc, char** argv ){
 
 	// Load constants
 	#define export_constant_npc(a) export_constant(a)
+	init_random_option_constants();
 	#include "../map/script_constants.hpp"
 
 	std::vector<std::string> root_paths = {
@@ -511,6 +523,20 @@ int do_init( int argc, char** argv ){
 		return 0;
 	}
 
+	rand_opt_db.clear();
+	if (!process("RANDOM_OPTION_DB", 1, root_paths, "item_randomopt_db", [](const std::string& path, const std::string& name_ext) -> bool {
+		return itemdb_read_randomopt((path + name_ext).c_str());
+	})) {
+		return 0;
+	}
+
+	rand_opt_group.clear();
+	if (!process("RANDOM_OPTION_GROUP", 1, root_paths, "item_randomopt_group", [](const std::string& path, const std::string& name_ext) -> bool {
+		return sv_readdb(path.c_str(), name_ext.c_str(), ',', 5, 2 + 5 * MAX_ITEM_RDM_OPT, -1, &itemdb_read_randomopt_group, false) && itemdb_randomopt_group_yaml();
+	})) {
+		return 0;
+	}
+
 	// TODO: add implementations ;-)
 
 	return 0;
@@ -3286,3 +3312,405 @@ static bool itemdb_read_db(const char* file) {
 
 	return true;
 }
+
+// Copied and adjusted from itemdb.cpp
+static bool itemdb_read_randomopt(const char* file) {
+	FILE* fp = fopen( file, "r" );
+
+	if( fp == nullptr ){
+		ShowError( "Can't read %s\n", file );
+		return 0;
+	}
+
+	uint32 lines = 0, count = 0;
+	char line[1024];
+	char path[256];
+
+	while (fgets(line, sizeof(line), fp)) {
+		char *str[2], *p;
+
+		lines++;
+
+		if (line[0] == '/' && line[1] == '/') // Ignore comments
+			continue;
+
+		memset(str, 0, sizeof(str));
+
+		p = trim(line);
+
+		if (*p == '\0')
+			continue;// empty line
+
+		if (!strchr(p, ','))
+		{
+			ShowError("itemdb_read_randomopt: Insufficient columns in line %d of \"%s\", skipping.\n", lines, path);
+			continue;
+		}
+
+		str[0] = p;
+		p = strchr(p, ',');
+		*p = '\0';
+		p++;
+
+		str[1] = p;
+
+		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 {
+			str[0] = trim(str[0]);
+
+			int64 id = constant_lookup_int(str[0]);
+
+			if (id == -100) {
+				ShowError("itemdb_read_randomopt: Unknown random option '%s' constant, skipping.\n", str[0]);
+				continue;
+			}
+
+			body << YAML::BeginMap;
+			body << YAML::Key << "Id" << YAML::Value << id;
+			body << YAML::Key << "Option" << YAML::Value << str[0] + 7;
+			body << YAML::Key << "Script" << YAML::Literal << str[1];
+			body << YAML::EndMap;
+
+			rand_opt_db.insert({ count, str[0] + 7 });
+		}
+		count++;
+	}
+
+	fclose(fp);
+	ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, file);
+
+	return true;
+}
+
+// Copied and adjusted from itemdb.cpp
+static bool itemdb_read_randomopt_group(char* str[], int columns, int current) {
+	if ((columns - 2) % 3 != 0) {
+		ShowError("itemdb_read_randomopt_group: Invalid column entries '%d'.\n", columns);
+		return false;
+	}
+
+	uint16 id = static_cast<uint16>(rand_opt_group.size() + 1);
+	s_random_opt_group_csv *group = util::umap_find(rand_opt_group, id);
+	s_random_opt_group_csv group_entry;
+
+	if (group == nullptr)
+		group_entry.rate.push_back((uint16)strtoul(str[1], nullptr, 10));
+
+	for (int j = 0, k = 2; k < columns && j < MAX_ITEM_RDM_OPT; k += 3) {
+		int32 randid_tmp = -1;
+
+		for (const auto &opt : rand_opt_db) {
+			if (opt.second.compare(str[k]) == 0) {
+				randid_tmp = opt.first;
+				break;
+			}
+		}
+
+		if (randid_tmp < 0) {
+			ShowError("itemdb_read_randomopt_group: Invalid random group id '%s' in column %d!\n", str[k], k + 1);
+			continue;
+		}
+
+		std::vector<std::shared_ptr<s_random_opt_group_entry>> entries = {};
+
+		if (group != nullptr)
+			entries = group->slots[j];
+
+		std::shared_ptr<s_random_opt_group_entry> entry;
+
+		entry->id = static_cast<uint16>(randid_tmp);
+		entry->min_value = (int16)strtoul(str[k + 1], nullptr, 10);
+		entry->max_value = 0;
+		entry->param = (int8)strtoul(str[k + 2], nullptr, 10);
+		entry->chance = 0;
+		entries.push_back(entry);
+		if (group == nullptr)
+			group_entry.slots[j] = entries;
+		else
+			group->slots[j] = entries;
+		j++;
+	}
+
+	if (group == nullptr)
+		rand_opt_group.insert({ id, group_entry });
+
+	return true;
+}
+
+static bool itemdb_randomopt_group_yaml(void) {
+	for (const auto &it : rand_opt_group) {
+		body << YAML::BeginMap;
+		body << YAML::Key << "Id" << YAML::Value << it.first;
+		body << YAML::Key << "Group" << YAML::Value << it.second.name;
+		body << YAML::Key << "Slots";
+		body << YAML::BeginSeq;
+
+		for (size_t i = 0; i < it.second.rate.size(); i++) {
+			body << YAML::BeginMap;
+			body << YAML::Key << "Slot" << YAML::Value << i + 1;
+
+			body << YAML::Key << "Options";
+			body << YAML::BeginSeq;
+
+			for (size_t j = 0; j < it.second.slots.size(); j++) {
+				std::vector<std::shared_ptr<s_random_opt_group_entry>> options = it.second.slots.at(static_cast<uint16>(j));
+
+				for (const auto &opt_it : options) {
+					body << YAML::BeginMap;
+
+					for (const auto &opt : rand_opt_db) {
+						if (opt.first == opt_it->id) {
+							body << YAML::Key << "Option" << YAML::Value << opt.second;
+							break;
+						}
+					}
+
+					if (opt_it->min_value != 0)
+						body << YAML::Key << "MinValue" << YAML::Value << opt_it->min_value;
+					if (opt_it->param != 0)
+						body << YAML::Key << "Param" << YAML::Value << opt_it->param;
+					body << YAML::Key << "Chance" << YAML::Value << it.second.rate[i];
+					body << YAML::EndMap;
+				}
+			}
+
+			body << YAML::EndSeq;
+			body << YAML::EndMap;
+		}
+
+		body << YAML::EndSeq;
+		body << YAML::EndMap;
+	}
+
+	return true;
+}
+
+// Initialize Random Option constants
+void init_random_option_constants() {
+	#define export_constant2(a, b) script_set_constant_(a, b, a, false, false)
+
+	export_constant2("RDMOPT_VAR_MAXHPAMOUNT", 1);
+	export_constant2("RDMOPT_VAR_MAXSPAMOUNT", 2);
+	export_constant2("RDMOPT_VAR_STRAMOUNT", 3);
+	export_constant2("RDMOPT_VAR_AGIAMOUNT", 4);
+	export_constant2("RDMOPT_VAR_VITAMOUNT", 5);
+	export_constant2("RDMOPT_VAR_INTAMOUNT", 6);
+	export_constant2("RDMOPT_VAR_DEXAMOUNT", 7);
+	export_constant2("RDMOPT_VAR_LUKAMOUNT", 8);
+	export_constant2("RDMOPT_VAR_MAXHPPERCENT", 9);
+	export_constant2("RDMOPT_VAR_MAXSPPERCENT", 10);
+	export_constant2("RDMOPT_VAR_HPACCELERATION", 11);
+	export_constant2("RDMOPT_VAR_SPACCELERATION", 12);
+	export_constant2("RDMOPT_VAR_ATKPERCENT", 13);
+	export_constant2("RDMOPT_VAR_MAGICATKPERCENT", 14);
+	export_constant2("RDMOPT_VAR_PLUSASPD", 15);
+	export_constant2("RDMOPT_VAR_PLUSASPDPERCENT", 16);
+	export_constant2("RDMOPT_VAR_ATTPOWER", 17);
+	export_constant2("RDMOPT_VAR_HITSUCCESSVALUE", 18);
+	export_constant2("RDMOPT_VAR_ATTMPOWER", 19);
+	export_constant2("RDMOPT_VAR_ITEMDEFPOWER", 20);
+	export_constant2("RDMOPT_VAR_MDEFPOWER", 21);
+	export_constant2("RDMOPT_VAR_AVOIDSUCCESSVALUE", 22);
+	export_constant2("RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE", 23);
+	export_constant2("RDMOPT_VAR_CRITICALSUCCESSVALUE", 24);
+	export_constant2("RDMOPT_ATTR_TOLERACE_NOTHING", 25);
+	export_constant2("RDMOPT_ATTR_TOLERACE_WATER", 26);
+	export_constant2("RDMOPT_ATTR_TOLERACE_GROUND", 27);
+	export_constant2("RDMOPT_ATTR_TOLERACE_FIRE", 28);
+	export_constant2("RDMOPT_ATTR_TOLERACE_WIND", 29);
+	export_constant2("RDMOPT_ATTR_TOLERACE_POISON", 30);
+	export_constant2("RDMOPT_ATTR_TOLERACE_SAINT", 31);
+	export_constant2("RDMOPT_ATTR_TOLERACE_DARKNESS", 32);
+	export_constant2("RDMOPT_ATTR_TOLERACE_TELEKINESIS", 33);
+	export_constant2("RDMOPT_ATTR_TOLERACE_UNDEAD", 34);
+	export_constant2("RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING", 35);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_NOTHING_USER", 36);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET", 37);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_WATER_USER", 38);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_WATER_TARGET", 39);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_GROUND_USER", 40);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET", 41);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_FIRE_USER", 42);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET", 43);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_WIND_USER", 44);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_WIND_TARGET", 45);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_POISON_USER", 46);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_POISON_TARGET", 47);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_SAINT_USER", 48);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET", 49);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_DARKNESS_USER", 50);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET", 51);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER", 52);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET", 53);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER", 54);
+	export_constant2("RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET", 55);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER", 56);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET", 57);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_WATER_USER", 58);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET", 59);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_GROUND_USER", 60);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET", 61);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_FIRE_USER", 62);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET", 63);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_WIND_USER", 64);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET", 65);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_POISON_USER", 66);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET", 67);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_SAINT_USER", 68);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET", 69);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER", 70);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET", 71);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER", 72);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET", 73);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER", 74);
+	export_constant2("RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET", 75);
+	export_constant2("RDMOPT_BODY_ATTR_NOTHING", 76);
+	export_constant2("RDMOPT_BODY_ATTR_WATER", 77);
+	export_constant2("RDMOPT_BODY_ATTR_GROUND", 78);
+	export_constant2("RDMOPT_BODY_ATTR_FIRE", 79);
+	export_constant2("RDMOPT_BODY_ATTR_WIND", 80);
+	export_constant2("RDMOPT_BODY_ATTR_POISON", 81);
+	export_constant2("RDMOPT_BODY_ATTR_SAINT", 82);
+	export_constant2("RDMOPT_BODY_ATTR_DARKNESS", 83);
+	export_constant2("RDMOPT_BODY_ATTR_TELEKINESIS", 84);
+	export_constant2("RDMOPT_BODY_ATTR_UNDEAD", 85);
+	export_constant2("RDMOPT_RACE_TOLERACE_NOTHING", 87);
+	export_constant2("RDMOPT_RACE_TOLERACE_UNDEAD", 88);
+	export_constant2("RDMOPT_RACE_TOLERACE_ANIMAL", 89);
+	export_constant2("RDMOPT_RACE_TOLERACE_PLANT", 90);
+	export_constant2("RDMOPT_RACE_TOLERACE_INSECT", 91);
+	export_constant2("RDMOPT_RACE_TOLERACE_FISHS", 92);
+	export_constant2("RDMOPT_RACE_TOLERACE_DEVIL", 93);
+	export_constant2("RDMOPT_RACE_TOLERACE_HUMAN", 94);
+	export_constant2("RDMOPT_RACE_TOLERACE_ANGEL", 95);
+	export_constant2("RDMOPT_RACE_TOLERACE_DRAGON", 96);
+	export_constant2("RDMOPT_RACE_DAMAGE_NOTHING", 97);
+	export_constant2("RDMOPT_RACE_DAMAGE_UNDEAD", 98);
+	export_constant2("RDMOPT_RACE_DAMAGE_ANIMAL", 99);
+	export_constant2("RDMOPT_RACE_DAMAGE_PLANT", 100);
+	export_constant2("RDMOPT_RACE_DAMAGE_INSECT", 101);
+	export_constant2("RDMOPT_RACE_DAMAGE_FISHS", 102);
+	export_constant2("RDMOPT_RACE_DAMAGE_DEVIL", 103);
+	export_constant2("RDMOPT_RACE_DAMAGE_HUMAN", 104);
+	export_constant2("RDMOPT_RACE_DAMAGE_ANGEL", 105);
+	export_constant2("RDMOPT_RACE_DAMAGE_DRAGON", 106);
+	export_constant2("RDMOPT_RACE_MDAMAGE_NOTHING", 107);
+	export_constant2("RDMOPT_RACE_MDAMAGE_UNDEAD", 108);
+	export_constant2("RDMOPT_RACE_MDAMAGE_ANIMAL", 109);
+	export_constant2("RDMOPT_RACE_MDAMAGE_PLANT", 110);
+	export_constant2("RDMOPT_RACE_MDAMAGE_INSECT", 111);
+	export_constant2("RDMOPT_RACE_MDAMAGE_FISHS", 112);
+	export_constant2("RDMOPT_RACE_MDAMAGE_DEVIL", 113);
+	export_constant2("RDMOPT_RACE_MDAMAGE_HUMAN", 114);
+	export_constant2("RDMOPT_RACE_MDAMAGE_ANGEL", 115);
+	export_constant2("RDMOPT_RACE_MDAMAGE_DRAGON", 116);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_NOTHING", 117);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_UNDEAD", 118);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_ANIMAL", 119);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_PLANT", 120);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_INSECT", 121);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_FISHS", 122);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_DEVIL", 123);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_HUMAN", 124);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_ANGEL", 125);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_DRAGON", 126);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_NOTHING", 127);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_UNDEAD", 128);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_ANIMAL", 129);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_PLANT", 130);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_INSECT", 131);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_FISHS", 132);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_DEVIL", 133);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN", 134);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_ANGEL", 135);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_DRAGON", 136);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_NOTHING", 137);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_UNDEAD", 138);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANIMAL", 139);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLANT", 140);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_INSECT", 141);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_FISHS", 142);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_DEVIL", 143);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN", 144);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANGEL", 145);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_DRAGON", 146);
+	export_constant2("RDMOPT_CLASS_DAMAGE_NORMAL_TARGET", 147);
+	export_constant2("RDMOPT_CLASS_DAMAGE_BOSS_TARGET", 148);
+	export_constant2("RDMOPT_CLASS_DAMAGE_NORMAL_USER", 149);
+	export_constant2("RDMOPT_CLASS_DAMAGE_BOSS_USER", 150);
+	export_constant2("RDMOPT_CLASS_MDAMAGE_NORMAL", 151);
+	export_constant2("RDMOPT_CLASS_MDAMAGE_BOSS", 152);
+	export_constant2("RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL", 153);
+	export_constant2("RDMOPT_CLASS_IGNORE_DEF_PERCENT_BOSS", 154);
+	export_constant2("RDMOPT_CLASS_IGNORE_MDEF_PERCENT_NORMAL", 155);
+	export_constant2("RDMOPT_CLASS_IGNORE_MDEF_PERCENT_BOSS", 156);
+	export_constant2("RDMOPT_DAMAGE_SIZE_SMALL_TARGET", 157);
+	export_constant2("RDMOPT_DAMAGE_SIZE_MIDIUM_TARGET", 158);
+	export_constant2("RDMOPT_DAMAGE_SIZE_LARGE_TARGET", 159);
+	export_constant2("RDMOPT_DAMAGE_SIZE_SMALL_USER", 160);
+	export_constant2("RDMOPT_DAMAGE_SIZE_MIDIUM_USER", 161);
+	export_constant2("RDMOPT_DAMAGE_SIZE_LARGE_USER", 162);
+	export_constant2("RDMOPT_DAMAGE_SIZE_PERFECT", 163);
+	export_constant2("RDMOPT_DAMAGE_CRI_TARGET", 164);
+	export_constant2("RDMOPT_DAMAGE_CRI_USER", 165);
+	export_constant2("RDMOPT_RANGE_ATTACK_DAMAGE_TARGET", 166);
+	export_constant2("RDMOPT_RANGE_ATTACK_DAMAGE_USER", 167);
+	export_constant2("RDMOPT_HEAL_VALUE", 168);
+	export_constant2("RDMOPT_HEAL_MODIFY_PERCENT", 169);
+	export_constant2("RDMOPT_DEC_SPELL_CAST_TIME", 170);
+	export_constant2("RDMOPT_DEC_SPELL_DELAY_TIME", 171);
+	export_constant2("RDMOPT_DEC_SP_CONSUMPTION", 172);
+	export_constant2("RDMOPT_WEAPON_ATTR_NOTHING", 175);
+	export_constant2("RDMOPT_WEAPON_ATTR_WATER", 176);
+	export_constant2("RDMOPT_WEAPON_ATTR_GROUND", 177);
+	export_constant2("RDMOPT_WEAPON_ATTR_FIRE", 178);
+	export_constant2("RDMOPT_WEAPON_ATTR_WIND", 179);
+	export_constant2("RDMOPT_WEAPON_ATTR_POISON", 180);
+	export_constant2("RDMOPT_WEAPON_ATTR_SAINT", 181);
+	export_constant2("RDMOPT_WEAPON_ATTR_DARKNESS", 182);
+	export_constant2("RDMOPT_WEAPON_ATTR_TELEKINESIS", 183);
+	export_constant2("RDMOPT_WEAPON_ATTR_UNDEAD", 184);
+	export_constant2("RDMOPT_WEAPON_INDESTRUCTIBLE", 185);
+	export_constant2("RDMOPT_BODY_INDESTRUCTIBLE", 186);
+	export_constant2("RDMOPT_MDAMAGE_SIZE_SMALL_TARGET", 187);
+	export_constant2("RDMOPT_MDAMAGE_SIZE_MIDIUM_TARGET", 188);
+	export_constant2("RDMOPT_MDAMAGE_SIZE_LARGE_TARGET", 189);
+	export_constant2("RDMOPT_MDAMAGE_SIZE_SMALL_USER", 190);
+	export_constant2("RDMOPT_MDAMAGE_SIZE_MIDIUM_USER", 191);
+	export_constant2("RDMOPT_MDAMAGE_SIZE_LARGE_USER", 192);
+	export_constant2("RDMOPT_ATTR_TOLERACE_ALL", 193);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_NOTHING", 194);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_UNDEAD", 195);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_ANIMAL", 196);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_PLANT", 197);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_INSECT", 198);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_FISHS", 199);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_DEVIL", 200);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_HUMAN", 201);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_ANGEL", 202);
+	export_constant2("RDMOPT_RACE_WEAPON_TOLERACE_DRAGON", 203);
+	export_constant2("RDMOPT_RACE_TOLERACE_PLAYER_HUMAN", 206);
+	export_constant2("RDMOPT_RACE_TOLERACE_PLAYER_DORAM", 207);
+	export_constant2("RDMOPT_RACE_DAMAGE_PLAYER_HUMAN", 208);
+	export_constant2("RDMOPT_RACE_DAMAGE_PLAYER_DORAM", 209);
+	export_constant2("RDMOPT_RACE_MDAMAGE_PLAYER_HUMAN", 210);
+	export_constant2("RDMOPT_RACE_MDAMAGE_PLAYER_DORAM", 211);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_PLAYER_HUMAN", 212);
+	export_constant2("RDMOPT_RACE_CRI_PERCENT_PLAYER_DORAM", 213);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_HUMAN", 214);
+	export_constant2("RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_DORAM", 215);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_HUMAN", 216);
+	export_constant2("RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_DORAM", 217);
+	export_constant2("RDMOPT_MELEE_ATTACK_DAMAGE_TARGET", 219);
+	export_constant2("RDMOPT_MELEE_ATTACK_DAMAGE_USER", 220);
+
+	#undef export_constant2
+}