From be9babee3213ba8b19ef3fa42b4a4ecafd6680c4 Mon Sep 17 00:00:00 2001 From: Aleos Date: Sun, 8 Nov 2020 12:21:52 -0500 Subject: [PATCH] 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 --- db/const.txt | 231 - db/import-tmpl/item_randomopt_db.txt | 4 - db/import-tmpl/item_randomopt_db.yml | 32 + db/import-tmpl/item_randomopt_group.txt | 1 - db/import-tmpl/item_randomopt_group.yml | 46 + db/item_randomopt_db.yml | 38 + db/item_randomopt_group.yml | 52 + db/pre-re/item_randomopt_db.txt | 4 - db/pre-re/item_randomopt_group.txt | 1 - db/re/item_randomopt_db.txt | 224 - db/re/item_randomopt_db.yml | 891 +++ db/re/item_randomopt_group.txt | 10 - db/re/item_randomopt_group.yml | 7456 +++++++++++++++++++++++ db/re/mob_drop.txt | 210 +- doc/yaml/db/item_randomopt_db.yml | 11 + doc/yaml/db/item_randomopt_group.yml | 25 + src/common/utilities.hpp | 15 +- src/map/atcommand.cpp | 6 +- src/map/itemdb.cpp | 492 +- src/map/itemdb.hpp | 64 +- src/map/map-server.vcxproj | 4 +- src/map/mob.cpp | 112 +- src/map/mob.hpp | 6 +- src/map/pc.cpp | 6 +- src/map/script.cpp | 11 +- src/map/script_constants.hpp | 4 - src/map/status.cpp | 8 +- src/tool/csv2yaml.cpp | 428 ++ 28 files changed, 9540 insertions(+), 852 deletions(-) delete mode 100644 db/import-tmpl/item_randomopt_db.txt create mode 100644 db/import-tmpl/item_randomopt_db.yml delete mode 100644 db/import-tmpl/item_randomopt_group.txt create mode 100644 db/import-tmpl/item_randomopt_group.yml create mode 100644 db/item_randomopt_db.yml create mode 100644 db/item_randomopt_group.yml delete mode 100644 db/pre-re/item_randomopt_db.txt delete mode 100644 db/pre-re/item_randomopt_group.txt delete mode 100644 db/re/item_randomopt_db.txt create mode 100644 db/re/item_randomopt_db.yml delete mode 100644 db/re/item_randomopt_group.txt create mode 100644 db/re/item_randomopt_group.yml create mode 100644 doc/yaml/db/item_randomopt_db.yml create mode 100644 doc/yaml/db/item_randomopt_group.yml diff --git a/db/const.txt b/db/const.txt index 2c6a3e2228..d1a57fd9a3 100644 --- a/db/const.txt +++ b/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 diff --git a/db/import-tmpl/item_randomopt_db.txt b/db/import-tmpl/item_randomopt_db.txt deleted file mode 100644 index ee863504b5..0000000000 --- a/db/import-tmpl/item_randomopt_db.txt +++ /dev/null @@ -1,4 +0,0 @@ -// Items Random Option Database -// -// Structure of Database: -// ID,{ Bonus Script } diff --git a/db/import-tmpl/item_randomopt_db.yml b/db/import-tmpl/item_randomopt_db.yml new file mode 100644 index 0000000000..a5e192cbe2 --- /dev/null +++ b/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 . +# +########################################################################### +# 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 diff --git a/db/import-tmpl/item_randomopt_group.txt b/db/import-tmpl/item_randomopt_group.txt deleted file mode 100644 index d7d68d4584..0000000000 --- a/db/import-tmpl/item_randomopt_group.txt +++ /dev/null @@ -1 +0,0 @@ -// ,,,,{,,,,,,,,,,,,} diff --git a/db/import-tmpl/item_randomopt_group.yml b/db/import-tmpl/item_randomopt_group.yml new file mode 100644 index 0000000000..e63bfa0fec --- /dev/null +++ b/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 . +# +########################################################################### +# 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 diff --git a/db/item_randomopt_db.yml b/db/item_randomopt_db.yml new file mode 100644 index 0000000000..7786f96dd9 --- /dev/null +++ b/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 . +# +########################################################################### +# 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 diff --git a/db/item_randomopt_group.yml b/db/item_randomopt_group.yml new file mode 100644 index 0000000000..eb685b406f --- /dev/null +++ b/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 . +# +########################################################################### +# 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 diff --git a/db/pre-re/item_randomopt_db.txt b/db/pre-re/item_randomopt_db.txt deleted file mode 100644 index ee863504b5..0000000000 --- a/db/pre-re/item_randomopt_db.txt +++ /dev/null @@ -1,4 +0,0 @@ -// Items Random Option Database -// -// Structure of Database: -// ID,{ Bonus Script } diff --git a/db/pre-re/item_randomopt_group.txt b/db/pre-re/item_randomopt_group.txt deleted file mode 100644 index d7d68d4584..0000000000 --- a/db/pre-re/item_randomopt_group.txt +++ /dev/null @@ -1 +0,0 @@ -// ,,,,{,,,,,,,,,,,,} diff --git a/db/re/item_randomopt_db.txt b/db/re/item_randomopt_db.txt deleted file mode 100644 index fdfc32f186..0000000000 --- a/db/re/item_randomopt_db.txt +++ /dev/null @@ -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); } diff --git a/db/re/item_randomopt_db.yml b/db/re/item_randomopt_db.yml new file mode 100644 index 0000000000..a7fb05178b --- /dev/null +++ b/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 . +# +########################################################################### +# 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); diff --git a/db/re/item_randomopt_group.txt b/db/re/item_randomopt_group.txt deleted file mode 100644 index 6d9b9929ab..0000000000 --- a/db/re/item_randomopt_group.txt +++ /dev/null @@ -1,10 +0,0 @@ -// ,,,,{,,,,,,,,,,,,} - -// 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 diff --git a/db/re/item_randomopt_group.yml b/db/re/item_randomopt_group.yml new file mode 100644 index 0000000000..b31e681644 --- /dev/null +++ b/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 . +# +########################################################################### +# 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 diff --git a/db/re/mob_drop.txt b/db/re/mob_drop.txt index 3f866df901..2e4c174105 100644 --- a/db/re/mob_drop.txt +++ b/db/re/mob_drop.txt @@ -16,108 +16,108 @@ // : 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 diff --git a/doc/yaml/db/item_randomopt_db.yml b/doc/yaml/db/item_randomopt_db.yml new file mode 100644 index 0000000000..4a19072350 --- /dev/null +++ b/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. +########################################################################### diff --git a/doc/yaml/db/item_randomopt_group.yml b/doc/yaml/db/item_randomopt_group.yml new file mode 100644 index 0000000000..25e0ecca92 --- /dev/null +++ b/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) +########################################################################### diff --git a/src/common/utilities.hpp b/src/common/utilities.hpp index c68009919a..e688623a72 100644 --- a/src/common/utilities.hpp +++ b/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 K &vector_random(std::vector &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 diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 59e67c5c06..5447eadbbc 100644 --- a/src/map/atcommand.cpp +++ b/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; } diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index a6777190b0..d3dfc08f6e 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -26,8 +26,6 @@ using namespace rathena; static std::map> 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,196 +2273,312 @@ 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)); -} - -/** Random option -* ,<{Script}> -*/ -static bool itemdb_read_randomopt(const char* basedir, bool silent) { - uint32 lines = 0, count = 0; - char line[1024]; - - char path[256]; - FILE* fp; - - sprintf(path, "%s/%s", basedir, "item_randomopt_db.txt"); - - if ((fp = fopen(path, "r")) == NULL) { - if (silent == 0) ShowError("itemdb_read_randomopt: File not found \"%s\".\n", path); - return false; - } - - 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 = line; - - p = trim(p); - - 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 { - 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; - - if (!script_get_constant(str[0], &id_tmp)) { - ShowError("itemdb_read_randopt: Unknown random option constant \"%s\".\n", str[0]); - continue; - } - id = static_cast(id_tmp); - } - - if (id < 0) { - ShowError("itemdb_read_randomopt: Invalid Random Option ID '%s' in line %d of \"%s\", skipping.\n", str[0], lines, path); - continue; - } - - 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; - } - count++; - } - fclose(fp); - - ShowStatus("Done reading '" CL_WHITE "%u" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, path); - - return true; +const std::string RandomOptionDatabase::getDefaultLocation() { + return std::string(db_path) + "/item_randomopt_db.yml"; } /** - * 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_db. + * @param node: YAML node containing the entry. + * @return count of successfully parsed rows + */ +uint64 RandomOptionDatabase::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); + + std::shared_ptr randopt = this->find(id); + bool exists = randopt != nullptr; + + if (!exists) { + if (!this->nodesExist(node, { "Option", "Script" })) + return 0; + + randopt = std::make_shared(); + randopt->id = id; + } + + if (this->nodeExists(node, "Option")) { + std::string name; + + if (!this->asString(node, "Option", name)) + return 0; + + 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; + } + + randopt->name = name; + } + + if (this->nodeExists(node, "Script")) { + std::string script; + + if (!this->asString(node, "Script", script)) + return 0; + + if (randopt->script) { + aFree(randopt->script); + randopt->script = nullptr; + } + + randopt->script = parse_script(script.c_str(), this->getCurrentFile().c_str(), id, SCRIPT_IGNORE_EXTERNAL_BRACKETS); + } + + if (!exists) + this->put(id, randopt); + return 1; } +RandomOptionDatabase random_option_db; + /** - * 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); + * 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; } /** - * 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 (!script_get_constant(str[0], &id_tmp)) { - ShowError("itemdb_read_randomopt_group: Invalid ID for Random Option Group '%s'.\n", str[0]); - return false; - } - - id = static_cast(id_tmp); - - if ((columns-2)%3 != 0) { - ShowError("itemdb_read_randomopt_group: Invalid column entries '%d'.\n", columns); - return false; - } - - 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); - } - - RECREATE(g->entries, struct s_random_opt_group_entry, g->total + rate); - - 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 (!script_get_constant(str[k], &randid_tmp) || ((randid = static_cast(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++; + * 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; } } - g->total += rate; + + return false; +} + +const std::string RandomOptionGroupDatabase::getDefaultLocation() { + return std::string(db_path) + "/item_randomopt_group.yml"; +} + +bool RandomOptionGroupDatabase::add_option(const YAML::Node &node, std::shared_ptr &entry) { + uint16 option_id; + + if (this->nodeExists(node, "Option")) { + std::string opt_name; + + if (!this->asString(node, "Option", opt_name)) + return false; + + if (!random_option_db.option_get_id(opt_name, option_id)) { + this->invalidWarning(node["Option"], "Invalid Random Option name %s given.\n", opt_name.c_str()); + return false; + } + } else { + this->invalidWarning(node, "Missing Option node.\n"); + return false; + } + + entry = std::make_shared(); + 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(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; } +/** + * Reads and parses an entry from the item_randomopt_group. + * @param node: YAML node containing the entry. + * @return count of successfully parsed rows + */ +uint64 RandomOptionGroupDatabase::parseBodyNode(const YAML::Node &node) { + uint16 id; + + if (!this->asUInt16(node, "Id", id)) + return 0; + + std::shared_ptr randopt = this->find(id); + bool exists = randopt != nullptr; + + if (!exists) { + if (!this->nodesExist(node, { "Group" })) + return 0; + + randopt = std::make_shared(); + randopt->id = id; + } + + if (this->nodeExists(node, "Group")) { + std::string name; + + if (!this->asString(node, "Group", name)) + return 0; + + if (randopt->name.compare(name) != 0 && random_option_group.option_exists(name)) { + this->invalidWarning(node["Group"], "Found duplicate random option group name for %s, skipping.\n", name.c_str()); + return 0; + } + + randopt->name = name; + } + + + for (const YAML::Node &slotNode : node["Slots"]) { + if (randopt->slots.size() >= MAX_ITEM_RDM_OPT) { + this->invalidWarning(slotNode, "Reached maximum of %d Random Option group options. Skipping the remaining slots...\n", MAX_ITEM_RDM_OPT); + break; + } + + uint16 slot; + + if (!this->asUInt16(slotNode, "Slot", slot)) + return 0; + + if (slot < 1 || slot > MAX_ITEM_RDM_OPT) { + this->invalidWarning(slotNode["Slot"], "Invalid Random Opton Slot number %hu given, must be between 1~%d, skipping.\n", slot, MAX_ITEM_RDM_OPT); + return 0; + } + + std::vector> entries; + + for (const YAML::Node &optionNode : slotNode["Options"]) { + std::shared_ptr entry; + + if (!this->add_option(optionNode, entry)) + return 0; + + entries.push_back(entry); + } + + randopt->slots[slot - 1] = entries; + } + + if (this->nodeExists(node, "MaxRandom")) { + uint16 max; + + if (!this->asUInt16(node, "MaxRandom", max)) + return 0; + + if (max > MAX_ITEM_RDM_OPT) { + this->invalidWarning(node["MaxRandom"], "Exceeds the maximum of %d Random Option group options, capping to MAX_ITEM_RDM_OPT.\n", MAX_ITEM_RDM_OPT); + max = MAX_ITEM_RDM_OPT; + } + + randopt->max_random = max; + } else { + if (!exists) + randopt->max_random = 0; + } + + if (this->nodeExists(node, "Random")) { + randopt->random_options.clear(); + + for (const YAML::Node &randomNode : node["Random"]) { + std::shared_ptr entry; + + if (!this->add_option(randomNode, entry)) + return 0; + + randopt->random_options.push_back(entry); + } + } + + if (!exists) + this->put(id, randopt); + + return 1; +} + +RandomOptionGroupDatabase random_option_group; + +/** + * Check if the given random option group name exists. + * @param name: Random option name + * @return True on success or false on failure + */ +bool RandomOptionGroupDatabase::option_exists(std::string name) { + for (const auto &opt : random_option_group) { + if (opt.second->name.compare(name) == 0) + return true; + } + + return false; +} + +/** + * Return the constant value of the given random option group. + * @param name: Random option group name + * @param id: Random option group ID + * @return True on success or false on failure + */ +bool RandomOptionGroupDatabase::option_get_id(std::string name, uint16 &id) { + for (const auto &opt : random_option_group) { + if (opt.second->name.compare(name) == 0) { + id = opt.first; + return true; + } + } + + return false; +} + /** * Read all item-related databases */ @@ -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(); diff --git a/src/map/itemdb.hpp b/src/map/itemdb.hpp index 108cda7f75..b010a9e2a6 100644 --- a/src/map/itemdb.hpp +++ b/src/map/itemdb.hpp @@ -4,6 +4,7 @@ #ifndef ITEMDB_HPP #define ITEMDB_HPP +#include #include #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>> slots; + uint16 max_random; + std::vector> random_options; }; +class RandomOptionDatabase : public TypesafeYamlDatabase { +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 { +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 &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 { 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); diff --git a/src/map/map-server.vcxproj b/src/map/map-server.vcxproj index 03de25111b..5b455e0272 100644 --- a/src/map/map-server.vcxproj +++ b/src/map/map-server.vcxproj @@ -321,8 +321,8 @@ - - + + diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 97d15eb8dc..b760de598b 100644 --- a/src/map/mob.cpp +++ b/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 &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 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(i)].size() * 3; j < max; j++) { + std::shared_ptr option = util::vector_random(group->slots[static_cast(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 option = util::vector_random(group->slots[static_cast(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 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(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; } } diff --git a/src/map/mob.hpp b/src/map/mob.hpp index 7a7ef2a791..bc513338c6 100644 --- a/src/map/mob.hpp +++ b/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 { diff --git a/src/map/pc.cpp b/src/map/pc.cpp index b80e107252..865eec74f3 100755 --- a/src/map/pc.cpp +++ b/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); } diff --git a/src/map/script.cpp b/src/map/script.cpp index b4dceefc35..1e9638c676 100644 --- a/src/map/script.cpp +++ b/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 opt = random_option_db.find(static_cast(id)); + + if (opt == nullptr) { ShowError("buildin_setrandomoption: Random option ID %d does not exists.\n", id); script_pushint(st, 0); return SCRIPT_CMD_FAILURE; diff --git a/src/map/script_constants.hpp b/src/map/script_constants.hpp index df56d305a0..c90a1ef25c 100644 --- a/src/map/script_constants.hpp +++ b/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); diff --git a/src/map/status.cpp b/src/map/status.cpp index 9cc1c70495..69a81a2df8 100644 --- a/src/map/status.cpp +++ b/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 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)) diff --git a/src/tool/csv2yaml.cpp b/src/tool/csv2yaml.cpp index 0557060d4d..c41685c0b8 100644 --- a/src/tool/csv2yaml.cpp +++ b/src/tool/csv2yaml.cpp @@ -120,6 +120,13 @@ std::unordered_map item_stack; std::unordered_map item_nouse; std::unordered_map item_trade; +struct s_random_opt_group_csv : s_random_opt_group { + std::vector rate; +}; + +std::unordered_map rand_opt_db; +std::unordered_map rand_opt_group; + static std::map 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 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 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(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> entries = {}; + + if (group != nullptr) + entries = group->slots[j]; + + std::shared_ptr entry; + + entry->id = static_cast(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> options = it.second.slots.at(static_cast(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 +}