diff --git a/.github/workflows/analysis_codeql.yml b/.github/workflows/analysis_codeql.yml index 463286f71f..fc25c626c1 100644 --- a/.github/workflows/analysis_codeql.yml +++ b/.github/workflows/analysis_codeql.yml @@ -38,11 +38,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support @@ -74,7 +74,7 @@ jobs: #- name: Autobuild # uses: github/codeql-action/autobuild@v2 - # ✏️ If the Autobuild fails above, remove it and uncomment the following + # ?? If the Autobuild fails above, remove it and uncomment the following # three lines and modify them (or add more) to build your code if your # project uses a compiled language - name: Command - configure @@ -89,4 +89,4 @@ jobs: run: make server - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/build_servers_clang.yml b/.github/workflows/build_servers_clang.yml index e9d9ef4820..21e008e61a 100644 --- a/.github/workflows/build_servers_clang.yml +++ b/.github/workflows/build_servers_clang.yml @@ -34,7 +34,7 @@ jobs: clang: ['6.0', '7', '8', '9', '10', '11'] #, '12', '13'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Clang uses: egor-tensin/setup-clang@v1 diff --git a/.github/workflows/build_servers_cmake.yml b/.github/workflows/build_servers_cmake.yml index 1660a5f82d..06110cc00b 100644 --- a/.github/workflows/build_servers_cmake.yml +++ b/.github/workflows/build_servers_cmake.yml @@ -34,7 +34,7 @@ jobs: os: [ubuntu-latest] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # Install latest CMake. - uses: lukka/get-cmake@latest diff --git a/.github/workflows/build_servers_gcc.yml b/.github/workflows/build_servers_gcc.yml index cc0851712d..9fde2ffac0 100644 --- a/.github/workflows/build_servers_gcc.yml +++ b/.github/workflows/build_servers_gcc.yml @@ -31,10 +31,14 @@ jobs: # Available: ubuntu-22.04, ubuntu-20.04 os: [ubuntu-latest] # Older versions of GCC are not available via unaltered aptitude repo lists. - gcc: ['9', '10', '11', '12', '13'] + gcc: ['9', '10', '11', '12'] + # GCC 13 was removed from 22.04, include it as a separate job + include: + - os: ubuntu-24.04 + gcc: 13 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Update & Install packages # Ubuntu runners already have most of the packages rAthena requires to build. @@ -45,8 +49,10 @@ jobs: - name: Command - configure env: - CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }} --enable-buildbot=yes' - run: ./configure $CONFIGURE_FLAGS + CONFIGURE_FLAGS: 'CC=gcc-${{ matrix.gcc }} CXX=g++-${{ matrix.gcc }}' + # -Werror: to treat all warnings as errors + # -Wno-error=builtin-declaration-mismatch: otherwise ./configure checks fail + run: ./configure $CONFIGURE_FLAGS --enable-buildbot=yes CXXFLAGS='-Werror -Wno-error=builtin-declaration-mismatch' - name: Command - make clean run: make clean diff --git a/.github/workflows/build_servers_modes.yml b/.github/workflows/build_servers_modes.yml index a0272f7a7e..49b9c3a1fc 100644 --- a/.github/workflows/build_servers_modes.yml +++ b/.github/workflows/build_servers_modes.yml @@ -36,7 +36,7 @@ jobs: mode: ['PRE','RE'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler. - name: Variable Parsing - PRE diff --git a/.github/workflows/build_servers_msbuild.yml b/.github/workflows/build_servers_msbuild.yml index 3d3037ee2c..7c0f2f9d51 100644 --- a/.github/workflows/build_servers_msbuild.yml +++ b/.github/workflows/build_servers_msbuild.yml @@ -34,15 +34,15 @@ jobs: mode: ['PRE', 'RE'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.1 + uses: microsoft/setup-msbuild@v2 - name: Build solution in Debug if: ${{ matrix.mode == 'PRE' }} - run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT%3BPRERE" + run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT%3BPRERE" /warnaserror - name: Build solution in Debug if: ${{ matrix.mode == 'RE' }} - run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT" + run: msbuild rAthena.sln -t:rebuild -property:Configuration=Debug /p:DefineConstants="BUILDBOT" /warnaserror diff --git a/.github/workflows/build_servers_packetversions.yml b/.github/workflows/build_servers_packetversions.yml index 7fc9d988d9..b1f8451d2b 100644 --- a/.github/workflows/build_servers_packetversions.yml +++ b/.github/workflows/build_servers_packetversions.yml @@ -38,7 +38,7 @@ jobs: packetver: ['20211103', '20200902', '20200401', '20180620', '20151104'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler. - name: Variable Parsing - PRE diff --git a/.github/workflows/build_servers_vip.yml b/.github/workflows/build_servers_vip.yml index 9894aa0555..5e5d180aee 100644 --- a/.github/workflows/build_servers_vip.yml +++ b/.github/workflows/build_servers_vip.yml @@ -36,7 +36,7 @@ jobs: mode: ['PRE', 'RE'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler. - name: Variable Parsing - PRE diff --git a/.github/workflows/npc_db_validation.yml b/.github/workflows/npc_db_validation.yml index e0136d13ab..f4087c768d 100644 --- a/.github/workflows/npc_db_validation.yml +++ b/.github/workflows/npc_db_validation.yml @@ -39,7 +39,7 @@ jobs: mode: ['PRE', 'RE'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 # A simple 'yes' and 'no' can be confusing, so we use names to display in the current job then convert them for use in the compiler. - name: Variable Parsing - PRE diff --git a/conf/battle/battle.conf b/conf/battle/battle.conf index 726c2e4714..a912632a7e 100644 --- a/conf/battle/battle.conf +++ b/conf/battle/battle.conf @@ -130,10 +130,19 @@ equip_self_break_rate: 100 // This affects the behaviour of skills like acid terror and meltdown equip_skill_break_rate: 100 -// Do weapon attacks have a attack speed delay before actual damage is applied? (Note 1) -// NOTE: The official setting is yes, even thought it degrades performance a bit. +// Should damage have a delay before it is applied? (Note 1) +// Some skills might not have a delay by default regardless of this setting. +// The official setting is yes, even thought it degrades performance a bit. delay_battle_damage: yes +// Should the damage timing be synchronized between the client and server? (Note 1) +// This is not official behavior, but it should remove the position lag after being hit by a monster. +// This setting only affects normal monster attacks and takes priority over "delay_battle_damage". +// Many skills show their damage immediately, so setting "delay_battle_damage" to "no" at the same +// time might improve the experience further, but will not work for all skills. +// Tired of Dark Illusion hitting you 5 seconds too late? Then turn this on. +synchronize_damage: no + // Are arrows/ammo consumed when used on a bow/gun? // 0 = No // 1 = Yes diff --git a/conf/battle/instance.conf b/conf/battle/instance.conf new file mode 100644 index 0000000000..14c7a9072a --- /dev/null +++ b/conf/battle/instance.conf @@ -0,0 +1,27 @@ +//-------------------------------------------------------------- +// rAthena Battle Configuration File +// Originally Translated by Peter Kieser +// Made in to plainer English by Ancyker +//-------------------------------------------------------------- +// Note 1: Value is a config switch (on/off, yes/no or 1/0) +// Note 2: Value is in percents (100 means 100%) +// Note 3: Value is a bit field. If no description is given, +// assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) +//-------------------------------------------------------------- + +// Block leaving for parties, guilds or clans if they have an active instance? +// Default: yes (Official) +instance_block_leave: yes + +// Block leader changes for parties or guilds if they have an active instance? +// Default: yes (Official) +instance_block_leaderchange: yes + +// Block inviting for parties or guilds if they have an active instance? +// This also blocks joining parties, guilds or clans that have a running instance. +// Default: yes (Official) +instance_block_invite: yes + +// Block expulsion for parties or guilds if they have an active instance? +// Default: yes (Official) +instance_block_expulsion: yes diff --git a/conf/battle/items.conf b/conf/battle/items.conf index 9fa7d1ee5f..448d1af505 100644 --- a/conf/battle/items.conf +++ b/conf/battle/items.conf @@ -12,8 +12,10 @@ // The highest value at which an item can be sold via the merchant vend skill. (in zeny) vending_max_value: 1000000000 -// Whether to allow buying from vending chars that are at their max. zeny limit. -// If set to yes, the rest of the zeny above the char's capacity will disappear. +// Whether to allow placing items on a vending store when the player's zeny plus the total price +// of the items exceeds the maximum zeny allowed. (Note 1) +// If set to "yes", the items will be placed in the store but other players will not be able to buy them. +// Official behavior is "yes", but on some official servers the client doesn't allow this. vending_over_max: yes // Tax to apply to all vending transactions (eg: 10000 = 100%, 50 = 0.50%) @@ -93,7 +95,7 @@ allow_equip_restricted_item: yes // Default on official servers: yes for Pre-renewal, no for Renewal //item_enabled_npc: yes -// Allow map_flooritem to check if item is droppable? (Note 1) +// Allow map_addflooritem to check if item is droppable? (Note 1) // If yes, undroppable items will be destroyed instead of appearing on the map when a player's inventory is full. // Default: yes item_flooritem_check: yes diff --git a/conf/battle/misc.conf b/conf/battle/misc.conf index 5850705ef9..145b0a9872 100644 --- a/conf/battle/misc.conf +++ b/conf/battle/misc.conf @@ -183,3 +183,17 @@ mail_delay: 1000 // Hides items from the player's favorite tab from being sold to a NPC. (Note 1) hide_fav_sell: no + +// When searching for a random position on the map, how much of the border of the map shall not be considered? +// Officially the 15 tiles from the edge of the map on each side are not considered as target cells. +// On some maps like in Pyramids this causes there to be very few monsters in the outer areas. This also +// affects teleportation. Set this to 1 if you want it to be closer to the old emulator behavior. +// Valid values: 1-40 +map_edge_size: 15 + +// When a player drops items, can they stack on the same cell? (Note 1) +// Officially there's no limit on how many items you can drop on the same cell. +// If you set this to "no", when you drop an item, it will only drop on a cell that has no item on it yet. +// A free cell will be searched for in eight directions. If no free cell could be found in those eight tries, +// then dropping the item will fail (the item stays in the player's inventory). +item_stacking: yes diff --git a/conf/battle/monster.conf b/conf/battle/monster.conf index 64fcc69118..142793de96 100644 --- a/conf/battle/monster.conf +++ b/conf/battle/monster.conf @@ -163,6 +163,15 @@ no_spawn_on_player: 0 // map regardless of what the mob-spawn file says. force_random_spawn: no +// Should each monster's center cell be randomized? (Note 1) +// Officially, at server start, each monster's center cell is set to a random cell in the spawn area. +// Each time the monster spawns it will spawn in an area around its center cell rather than the +// original center of the spawn definition. This results in a much larger total spawn area and a +// different experience each server start. +// Set this to "no" if you want all monsters of a spawn to spawn around the original center of the +// spawn definition, making the total spawn area much smaller (old eAthena behavior). +randomize_center_cell: yes + // Do summon slaves inherit the passive/aggressive traits of their master? // 0: No, retain original mode. // 1: Slaves are always aggressive. diff --git a/conf/battle/pet.conf b/conf/battle/pet.conf index 75f4f0fbbb..4eb037afb2 100644 --- a/conf/battle/pet.conf +++ b/conf/battle/pet.conf @@ -41,6 +41,10 @@ pet_hungry_delay_rate: 100 // These bonuses are unofficial and found in the import/pet_db.yml pet_equip_required: yes +// Should the pet equipment be destroyed if the owner doesn't have enough space in their inventory? (Note 1) +// Official behavior is "yes", setting this to "no" will leave the item equipped. +pet_unequip_destroy: yes + // When the master attacks a monster, whether or not the pet will also attack. (Note 1) pet_attack_support: no diff --git a/conf/battle/player.conf b/conf/battle/player.conf index 4e4cee755c..2e3873ccb7 100644 --- a/conf/battle/player.conf +++ b/conf/battle/player.conf @@ -298,12 +298,9 @@ trait_points_job_change: 7 // Official is 100. max_trait_parameter: 100 -// Max amount of RES/MRES to take into the resistance damage reduction formula. -// A setting of 625 means the max reduction of damage allowed is 50.0%. -// Formula is 100 - 100 * (5000 + RES) / (5000 + 10 * RES) -// Note: Best to leave this setting alone unless you know what your doing. -// Default: 625 -max_res_mres_reduction: 625 +// Max percent of RES/MRES that can be ignored by item bonus/skill. +// Default: 50 +max_res_mres_ignored: 50 // Maximum AP // Default: 1000 diff --git a/conf/battle/skill.conf b/conf/battle/skill.conf index 5e2f3eb842..5e4fe44d53 100644 --- a/conf/battle/skill.conf +++ b/conf/battle/skill.conf @@ -270,8 +270,10 @@ allow_skill_without_day: no // Allow use of ES-type magic on players? allow_es_magic_player: no -// Miracle of the Sun, Moon and Stars skill ratio (100% = 10000) -sg_miracle_skill_ratio: 2 +// Miracle of the Sun, Moon and Stars skill ratio +// Valid values range from 1 (0.005% per hit) to 20000 (100% per hit) +// This chance is further reduced if AGI is above 46 (92 = halved chance) +sg_miracle_skill_ratio: 1 // Miracle of the Sun, Moon and Stars skill duration in milliseconds sg_miracle_skill_duration: 3600000 diff --git a/conf/battle_athena.conf b/conf/battle_athena.conf index fe03deb7ee..d9c1aeff71 100644 --- a/conf/battle_athena.conf +++ b/conf/battle_athena.conf @@ -8,6 +8,9 @@ //General battle-related settings. import: conf/battle/battle.conf +//Battleground settings +import: conf/battle/battleground.conf + //Settings specific to the client. import: conf/battle/client.conf @@ -17,14 +20,20 @@ import: conf/battle/drops.conf //Experience rates, exp penalties, stats and max level settings. import: conf/battle/exp.conf +//Feature control (on/off) settings +import: conf/battle/feature.conf + //GM levels, atcommands and hack-related configs. import: conf/battle/gm.conf //Guild and WoE settings import: conf/battle/guild.conf -//Battleground settings -import: conf/battle/battleground.conf +//Homunc related configuration +import: conf/battle/homunc.conf + +//Instance settings +import: conf/battle/instance.conf //Item/card-specific and crafting related options. import: conf/battle/items.conf @@ -32,15 +41,16 @@ import: conf/battle/items.conf //Mob related configuration import: conf/battle/monster.conf +// Anything else that didn't fit anywhere else. +// Includes duel, day/night, mute/manner, log settings. +import: conf/battle/misc.conf + //Party related configuration import: conf/battle/party.conf //Pet related configuration import: conf/battle/pet.conf -//Homunc related configuration -import: conf/battle/homunc.conf - //Player specific settings import: conf/battle/player.conf @@ -50,12 +60,5 @@ import: conf/battle/skill.conf //Status change related settings import: conf/battle/status.conf -//Feature control (on/off) settings -import: conf/battle/feature.conf - -// Anything else that didn't fit anywhere else. -// Includes duel, day/night, mute/manner, log settings. -import: conf/battle/misc.conf - //Your custom config goes here. import: conf/import/battle_conf.txt diff --git a/conf/char_athena.conf b/conf/char_athena.conf index 7eb58c947d..726dd30779 100644 --- a/conf/char_athena.conf +++ b/conf/char_athena.conf @@ -144,6 +144,10 @@ unknown_char_name: Unknown // To log the character server? log_char: yes +// Minimum length for a character name. +// Must be set to '4' unless your client uses the 'Remove 4/6 letter Character Name limit' diff patch. +char_name_min_length: 4 + // Allow or not identical name for characters but with a different case (upper/lower): // example: Test-test-TEST-TesT; Value: 0 not allowed (default), 1 allowed name_ignoring_case: no diff --git a/conf/login_athena.conf b/conf/login_athena.conf index d99ac9a889..734d3bdbc4 100644 --- a/conf/login_athena.conf +++ b/conf/login_athena.conf @@ -55,9 +55,15 @@ console: off // Note: This only works if client side password encryption is not enabled. new_account: no -//If new_account is enabled, minimum length to userid and passwords should be 4? -//Must be 'Yes' unless your client uses both 'Disable 4 LetterUserID/Password' Diffs -new_acc_length_limit: yes +// If new_account is enabled, changes the minimum length for the account name. +// By default is set to '4' or '6' (depending on the new login UI). +// Don't change it unless your client uses the 'Remove 4/6 letter User Name limit' diff patch. +//acc_name_min_length: 6 + +// If new_account is enabled, changes the minimum length for the password. +// By default is set to '4' or '6' (depending on the new login UI). +// Don't change it unless your client uses the 'Remove 4/6 letter Password limit' diff patch. +//password_min_length: 6 // Account registration flood protection system // allowed_regs is the number of registrations allowed in time_allowed (in seconds) diff --git a/conf/maps_athena.conf b/conf/maps_athena.conf index bf809a3eae..54bca30626 100644 --- a/conf/maps_athena.conf +++ b/conf/maps_athena.conf @@ -1634,5 +1634,8 @@ map: luna_sf1 map: luna_sf2 map: mbase_in +// Market place +map: prt_mk + //------------------------- Clone Maps --------------------------- //------------------------- Extra Maps --------------------------- diff --git a/conf/msg_conf/map_msg.conf b/conf/msg_conf/map_msg.conf index 488ce9d923..beaa6f074e 100644 --- a/conf/msg_conf/map_msg.conf +++ b/conf/msg_conf/map_msg.conf @@ -775,7 +775,7 @@ 730: Character cannot be disguised while in monster form. 731: Transforming into monster is not allowed in Guild Wars. -732: Item cannot be opened when your inventory is full. +//732: Free 733: Please enter a NPC file name (usage: @reloadnpcfile ). diff --git a/conf/msg_conf/map_msg_idn.conf b/conf/msg_conf/map_msg_idn.conf index 3f36ba79d5..eea21cfe51 100644 --- a/conf/msg_conf/map_msg_idn.conf +++ b/conf/msg_conf/map_msg_idn.conf @@ -765,7 +765,7 @@ 730: Karakter tidak dapat disguise ketika sedang berwujud monster. 731: Perubahan menjadi monster tidak diizinkan dalam Guild Wars. -732: Item tidak dapat dibuka ketika inventory penuh. +//732: Free //733 free diff --git a/conf/msg_conf/map_msg_por.conf b/conf/msg_conf/map_msg_por.conf index 79d997e540..e5fa7bd054 100644 --- a/conf/msg_conf/map_msg_por.conf +++ b/conf/msg_conf/map_msg_por.conf @@ -779,7 +779,7 @@ 730: O personagem no pode ser disfarado enquanto estiver em forma de monstro. 731: Transformar em monstro no permitido em GvG. -732: O item no pode ser aberto quando o seu inventrio est cheio. +//732: Free 733: Por favor insira um nome de arquivo NPC (uso: @reloadnpcfile ). diff --git a/conf/msg_conf/map_msg_spn.conf b/conf/msg_conf/map_msg_spn.conf index 86c13a4e04..b902cb2548 100644 --- a/conf/msg_conf/map_msg_spn.conf +++ b/conf/msg_conf/map_msg_spn.conf @@ -775,7 +775,7 @@ 730: El personaje no puede disfrazarse si est transformado en un monstruo. 731: No puedes transformarte en monstruo durante la guerra de clanes. -732: No puedes abrir el objeto porque tu inventario est lleno. +//732: libre 733: Introduce la ruta de archivo de un NPC (instrucciones: @reloadnpcfile ). diff --git a/db/import-tmpl/mob_db.yml b/db/import-tmpl/mob_db.yml index dd7bd94d6a..a96d8cceb3 100644 --- a/db/import-tmpl/mob_db.yml +++ b/db/import-tmpl/mob_db.yml @@ -56,6 +56,7 @@ # WalkSpeed Walk speed. (Default: DEFAULT_WALK_SPEED) # AttackDelay Attack speed. (Default: 0) # AttackMotion Attack animation speed. (Default: 0) +# ClientAttackMotion Client attack speed. (Default: AttackMotion) # DamageMotion Damage animation speed. (Default: 0) # DamageTaken Rate at which the monster will receive incoming damage. (Default: 100) # Ai Aegis monster type AI behavior. (Default: 06) @@ -77,7 +78,7 @@ Header: Type: MOB_DB - Version: 3 + Version: 4 #Body: # eAthena Dev Team diff --git a/db/import-tmpl/mob_summon.yml b/db/import-tmpl/mob_summon.yml index f5e1d97787..74d9518575 100644 --- a/db/import-tmpl/mob_summon.yml +++ b/db/import-tmpl/mob_summon.yml @@ -33,3 +33,24 @@ Header: Type: MOB_SUMMONABLE_DB Version: 1 +#Body: +# Pre-re Brasilis +#============================================================= +# - Group: BLOODY_DEAD_BRANCH +# Summon: +# - Mob: BOITATA +# Rate: 1000000 +# - Group: Branch_Of_Dead_Tree +# Summon: +# - Mob: IARA +# Rate: 71428 +# - Mob: PIRANHA +# Rate: 71428 +# - Mob: HEADLESS_MULE +# Rate: 71428 +# - Mob: JAGUAR +# Rate: 71428 +# - Mob: TOUCAN +# Rate: 71428 +# - Mob: CURUPIRA +# Rate: 71428 diff --git a/db/map_cache.dat b/db/map_cache.dat index 74c906b9e4..ccd1296bd5 100644 Binary files a/db/map_cache.dat and b/db/map_cache.dat differ diff --git a/db/map_index.txt b/db/map_index.txt index 395f3183fc..1cc7721696 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -1260,6 +1260,7 @@ jor_tmple2 luna_sf1 luna_sf2 mbase_in +prt_mk //====================================================================================== // - Other/Extra maps - diff --git a/db/mob_db.yml b/db/mob_db.yml index 48e29e9c67..bd483c92a8 100644 --- a/db/mob_db.yml +++ b/db/mob_db.yml @@ -56,6 +56,7 @@ # WalkSpeed Walk speed. (Default: DEFAULT_WALK_SPEED) # AttackDelay Attack speed. (Default: 0) # AttackMotion Attack animation speed. (Default: 0) +# ClientAttackMotion Client attack speed. (Default: AttackMotion) # DamageMotion Damage animation speed. (Default: 0) # DamageTaken Rate at which the monster will receive incoming damage. (Default: 100) # Ai Aegis monster type AI behavior. (Default: 06) @@ -77,7 +78,7 @@ Header: Type: MOB_DB - Version: 3 + Version: 4 Footer: Imports: diff --git a/db/pre-re/item_db_usable.yml b/db/pre-re/item_db_usable.yml index 2be5e684eb..a29f1aefd5 100644 --- a/db/pre-re/item_db_usable.yml +++ b/db/pre-re/item_db_usable.yml @@ -8637,21 +8637,21 @@ Body: Type: Usable Weight: 10 Script: | - searchstores 10,0; + searchstores 10, SEARCHSTORE_EFFECT_NORMAL; - Id: 12581 AegisName: Vending_Search_Scroll2 Name: Universal Catalog Gold Type: Usable Weight: 10 Script: | - searchstores 10,1; + searchstores 10, SEARCHSTORE_EFFECT_REMOTE; - Id: 12591 AegisName: Uni_Catalog_Bz Name: Universal Catalog Bronze Type: Usable Weight: 10 Script: | - searchstores 10,1; + searchstores 10, SEARCHSTORE_EFFECT_REMOTE; - Id: 12609 AegisName: Old_Ore_Box Name: Old Ore Box diff --git a/db/pre-re/mob_db.yml b/db/pre-re/mob_db.yml index a269a380a5..f4d076cb36 100644 --- a/db/pre-re/mob_db.yml +++ b/db/pre-re/mob_db.yml @@ -56,6 +56,7 @@ # WalkSpeed Walk speed. (Default: DEFAULT_WALK_SPEED) # AttackDelay Attack speed. (Default: 0) # AttackMotion Attack animation speed. (Default: 0) +# ClientAttackMotion Client attack speed. (Default: AttackMotion) # DamageMotion Damage animation speed. (Default: 0) # DamageTaken Rate at which the monster will receive incoming damage. (Default: 100) # Ai Aegis monster type AI behavior. (Default: 06) @@ -77,7 +78,7 @@ Header: Type: MOB_DB - Version: 3 + Version: 4 Body: - Id: 1001 @@ -105,6 +106,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 09 Modes: @@ -150,6 +152,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -216,6 +219,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 216 Ai: 03 Modes: @@ -260,6 +264,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -318,6 +323,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -361,6 +367,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 768 DamageMotion: 1 Modes: Detector: true @@ -406,6 +413,7 @@ Body: WalkSpeed: 150 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 03 Drops: @@ -452,6 +460,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 01 Drops: @@ -497,6 +506,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -544,6 +554,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -584,6 +595,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 03 Drops: @@ -629,6 +641,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 01 Drops: @@ -674,6 +687,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -714,6 +728,7 @@ Body: WalkSpeed: 300 AttackDelay: 2864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 05 Drops: @@ -810,6 +825,7 @@ Body: WalkSpeed: 150 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 840 Ai: 01 Modes: @@ -856,6 +872,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 03 Drops: @@ -899,6 +916,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 Drops: @@ -1042,6 +1060,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -1087,6 +1106,7 @@ Body: WalkSpeed: 200 AttackDelay: 1048 AttackMotion: 48 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 17 Drops: @@ -1132,6 +1152,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Drops: @@ -1176,6 +1197,7 @@ Body: WalkSpeed: 200 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 Drops: @@ -1254,6 +1276,7 @@ Body: WalkSpeed: 200 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 Drops: @@ -1301,6 +1324,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 09 Modes: @@ -1347,6 +1371,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 17 Drops: @@ -1392,6 +1417,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -1437,6 +1463,7 @@ Body: WalkSpeed: 250 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 02 Drops: @@ -1483,6 +1510,7 @@ Body: WalkSpeed: 200 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 09 Drops: @@ -1528,6 +1556,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -1573,6 +1602,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -1621,6 +1651,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -1668,6 +1699,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 09 Drops: @@ -1715,6 +1747,7 @@ Body: WalkSpeed: 100 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Class: Boss @@ -1772,6 +1805,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 600 DamageMotion: 576 Ai: 21 Class: Boss @@ -1829,6 +1863,7 @@ Body: WalkSpeed: 300 AttackDelay: 1608 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 17 Drops: @@ -1875,6 +1910,7 @@ Body: WalkSpeed: 300 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Drops: @@ -1920,6 +1956,7 @@ Body: WalkSpeed: 150 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 07 Modes: @@ -1993,6 +2030,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 09 Drops: @@ -2039,6 +2077,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Ai: 04 Drops: @@ -2087,6 +2126,7 @@ Body: WalkSpeed: 100 AttackDelay: 480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 Ai: 21 Class: Boss @@ -2137,6 +2177,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -2180,6 +2221,7 @@ Body: WalkSpeed: 1000 AttackDelay: 701 AttackMotion: 1 + ClientAttackMotion: 288 DamageMotion: 1 Modes: Detector: true @@ -2225,6 +2267,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -2268,6 +2311,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -2313,6 +2357,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 07 Modes: @@ -2359,6 +2404,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 768 DamageMotion: 540 Ai: 01 Modes: @@ -2407,6 +2453,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 07 Modes: @@ -2455,6 +2502,7 @@ Body: WalkSpeed: 300 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 13 Modes: @@ -2504,6 +2552,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 01 Drops: @@ -2549,6 +2598,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 Drops: @@ -2593,6 +2643,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 07 Drops: @@ -2639,6 +2690,7 @@ Body: WalkSpeed: 200 AttackDelay: 1708 AttackMotion: 1008 + ClientAttackMotion: 432 DamageMotion: 540 Ai: 07 Modes: @@ -2689,6 +2741,7 @@ Body: WalkSpeed: 100 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 300 Ai: 21 Class: Boss @@ -2744,6 +2797,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Drops: @@ -2789,6 +2843,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 20 Modes: @@ -2835,6 +2890,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Drops: @@ -2878,6 +2934,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Drops: @@ -2923,6 +2980,7 @@ Body: WalkSpeed: 200 AttackDelay: 2492 AttackMotion: 792 + ClientAttackMotion: 696 DamageMotion: 432 Ai: 01 Drops: @@ -2969,6 +3027,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 108 DamageMotion: 384 Ai: 04 Drops: @@ -3014,6 +3073,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Ai: 17 Drops: @@ -3059,6 +3119,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 48 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 17 Drops: @@ -3104,6 +3165,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 10 Drops: @@ -3148,6 +3210,7 @@ Body: WalkSpeed: 200 AttackDelay: 1968 AttackMotion: 768 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 04 Drops: @@ -3193,6 +3256,7 @@ Body: WalkSpeed: 150 AttackDelay: 1776 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 02 Drops: @@ -3240,6 +3304,7 @@ Body: WalkSpeed: 200 AttackDelay: 1754 AttackMotion: 554 + ClientAttackMotion: 360 DamageMotion: 288 Ai: 04 Drops: @@ -3286,6 +3351,7 @@ Body: WalkSpeed: 150 AttackDelay: 1700 AttackMotion: 1000 + ClientAttackMotion: 432 DamageMotion: 500 Ai: 04 Modes: @@ -3334,6 +3400,7 @@ Body: WalkSpeed: 200 AttackDelay: 992 AttackMotion: 792 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 01 Drops: @@ -3375,6 +3442,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 468 DamageMotion: 384 Ai: 17 Drops: @@ -3439,6 +3507,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 17 Drops: @@ -3481,6 +3550,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -3526,6 +3596,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3575,6 +3646,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3624,6 +3696,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3673,6 +3746,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3722,6 +3796,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3771,6 +3846,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 2016 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3820,6 +3896,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3869,6 +3946,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3921,6 +3999,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 07 Class: Boss @@ -3976,6 +4055,7 @@ Body: WalkSpeed: 150 AttackDelay: 1678 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 648 Ai: 21 Class: Boss @@ -4033,6 +4113,7 @@ Body: WalkSpeed: 200 AttackDelay: 1080 AttackMotion: 648 + ClientAttackMotion: 600 DamageMotion: 480 Ai: 21 Modes: @@ -4079,6 +4160,7 @@ Body: WalkSpeed: 200 AttackDelay: 1236 AttackMotion: 336 + ClientAttackMotion: 168 DamageMotion: 432 Ai: 21 Class: Boss @@ -4125,6 +4207,7 @@ Body: WalkSpeed: 300 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -4171,6 +4254,7 @@ Body: WalkSpeed: 100 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -4218,6 +4302,7 @@ Body: WalkSpeed: 150 AttackDelay: 1048 AttackMotion: 648 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 21 Class: Boss @@ -4264,6 +4349,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 21 Class: Boss @@ -4310,6 +4396,7 @@ Body: WalkSpeed: 400 AttackDelay: 2048 AttackMotion: 648 + ClientAttackMotion: 312 DamageMotion: 648 Ai: 17 Modes: @@ -4357,6 +4444,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 180 DamageMotion: 384 Ai: 07 Modes: @@ -4404,6 +4492,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 672 Ai: 21 Class: Boss @@ -4447,6 +4536,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -4491,6 +4581,7 @@ Body: WalkSpeed: 150 AttackDelay: 1250 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 21 Drops: @@ -4536,6 +4627,7 @@ Body: WalkSpeed: 300 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -4581,6 +4673,7 @@ Body: WalkSpeed: 300 AttackDelay: 1468 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 09 Modes: @@ -4628,6 +4721,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 21 Modes: @@ -4675,6 +4769,7 @@ Body: WalkSpeed: 100 AttackDelay: 1504 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 Drops: @@ -4722,6 +4817,7 @@ Body: WalkSpeed: 200 AttackDelay: 1604 AttackMotion: 840 + ClientAttackMotion: 216 DamageMotion: 756 Ai: 17 Drops: @@ -4765,6 +4861,7 @@ Body: WalkSpeed: 150 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 17 Drops: @@ -4810,6 +4907,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -4858,6 +4956,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 180 DamageMotion: 288 Ai: 13 Drops: @@ -4903,6 +5002,7 @@ Body: WalkSpeed: 300 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 240 Ai: 03 Drops: @@ -4949,6 +5049,7 @@ Body: WalkSpeed: 400 AttackDelay: 1680 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Drops: @@ -4995,6 +5096,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -5043,6 +5145,7 @@ Body: WalkSpeed: 250 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Modes: @@ -5089,6 +5192,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 09 Drops: @@ -5137,6 +5241,7 @@ Body: WalkSpeed: 400 AttackDelay: 620 AttackMotion: 420 + ClientAttackMotion: 108 DamageMotion: 360 Ai: 21 Class: Boss @@ -5189,6 +5294,7 @@ Body: WalkSpeed: 400 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -5234,6 +5340,7 @@ Body: WalkSpeed: 150 AttackDelay: 1004 AttackMotion: 504 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 17 Modes: @@ -5282,6 +5389,7 @@ Body: WalkSpeed: 300 AttackDelay: 872 AttackMotion: 1344 + ClientAttackMotion: 408 DamageMotion: 432 Ai: 21 Class: Boss @@ -5338,6 +5446,7 @@ Body: WalkSpeed: 200 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 17 Drops: @@ -5384,6 +5493,7 @@ Body: WalkSpeed: 300 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 168 DamageMotion: 336 Ai: 21 Drops: @@ -5430,6 +5540,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1432 AttackMotion: 432 + ClientAttackMotion: 180 DamageMotion: 576 Ai: 10 Drops: @@ -5476,6 +5587,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 720 + ClientAttackMotion: 324 DamageMotion: 432 Ai: 04 Drops: @@ -5522,6 +5634,7 @@ Body: WalkSpeed: 300 AttackDelay: 1220 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 648 Ai: 21 Class: Boss @@ -5570,6 +5683,7 @@ Body: WalkSpeed: 200 AttackDelay: 1848 AttackMotion: 1296 + ClientAttackMotion: 480 DamageMotion: 432 Ai: 17 Modes: @@ -5618,6 +5732,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -5666,6 +5781,7 @@ Body: WalkSpeed: 150 AttackDelay: 1320 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 09 Drops: @@ -5714,6 +5830,7 @@ Body: WalkSpeed: 250 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 Drops: @@ -5762,6 +5879,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 Drops: @@ -5810,6 +5928,7 @@ Body: WalkSpeed: 300 AttackDelay: 3074 AttackMotion: 1874 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 13 Drops: @@ -5855,6 +5974,7 @@ Body: WalkSpeed: 200 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 720 Ai: 01 Drops: @@ -5901,6 +6021,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 17 Modes: @@ -5947,6 +6068,7 @@ Body: WalkSpeed: 400 AttackDelay: 1888 AttackMotion: 1152 + ClientAttackMotion: 552 DamageMotion: 828 Ai: 13 Drops: @@ -5993,6 +6115,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 21 Drops: @@ -6037,6 +6160,7 @@ Body: WalkSpeed: 100 AttackDelay: 1364 AttackMotion: 864 + ClientAttackMotion: 312 DamageMotion: 432 Ai: 21 Drops: @@ -6084,6 +6208,7 @@ Body: WalkSpeed: 350 AttackDelay: 528 AttackMotion: 1000 + ClientAttackMotion: 240 DamageMotion: 396 Ai: 21 Drops: @@ -6132,6 +6257,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -6178,6 +6304,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -6224,6 +6351,7 @@ Body: WalkSpeed: 300 AttackDelay: 1228 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -6366,6 +6494,7 @@ Body: WalkSpeed: 250 AttackDelay: 1560 AttackMotion: 360 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 02 Modes: @@ -6413,6 +6542,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 09 Modes: @@ -6460,6 +6590,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 840 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 09 Drops: @@ -6505,6 +6636,7 @@ Body: WalkSpeed: 400 AttackDelay: 2280 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 864 Ai: 01 Drops: @@ -6548,6 +6680,7 @@ Body: WalkSpeed: 800 AttackDelay: 1201 AttackMotion: 1 + ClientAttackMotion: 240 DamageMotion: 1 Drops: - Item: Tendon @@ -6590,6 +6723,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 1056 Ai: 09 Modes: @@ -6637,6 +6771,7 @@ Body: WalkSpeed: 300 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 468 DamageMotion: 528 Ai: 17 Drops: @@ -6683,6 +6818,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Drops: @@ -6727,6 +6863,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 09 Drops: @@ -6773,6 +6910,7 @@ Body: WalkSpeed: 100 AttackDelay: 864 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 480 Ai: 21 Class: Boss @@ -6829,6 +6967,7 @@ Body: WalkSpeed: 180 AttackDelay: 1720 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 360 Ai: 21 Modes: @@ -6878,6 +7017,7 @@ Body: WalkSpeed: 200 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 09 Drops: @@ -6926,6 +7066,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 Ai: 21 Class: Boss @@ -6981,6 +7122,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 Drops: @@ -7029,6 +7171,7 @@ Body: WalkSpeed: 200 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 Drops: @@ -7075,6 +7218,7 @@ Body: WalkSpeed: 400 AttackDelay: 2852 AttackMotion: 1152 + ClientAttackMotion: 768 DamageMotion: 840 Ai: 04 Drops: @@ -7113,6 +7257,7 @@ Body: WalkSpeed: 165 AttackDelay: 976 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Drops: @@ -7157,6 +7302,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 620 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 09 Drops: @@ -7203,6 +7349,7 @@ Body: WalkSpeed: 150 AttackDelay: 1420 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 528 Ai: 09 Drops: @@ -7250,6 +7397,7 @@ Body: WalkSpeed: 125 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -7305,6 +7453,7 @@ Body: WalkSpeed: 150 AttackDelay: 2544 AttackMotion: 1344 + ClientAttackMotion: 432 DamageMotion: 1152 Ai: 17 Drops: @@ -7350,6 +7499,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 1020 + ClientAttackMotion: 324 DamageMotion: 288 Ai: 21 Class: Boss @@ -7405,6 +7555,7 @@ Body: WalkSpeed: 200 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -7452,6 +7603,7 @@ Body: WalkSpeed: 400 AttackDelay: 2208 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 324 Ai: 01 Drops: @@ -7497,6 +7649,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 04 Drops: @@ -7544,6 +7697,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 09 Drops: @@ -7589,6 +7743,7 @@ Body: WalkSpeed: 400 AttackDelay: 1516 AttackMotion: 816 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 04 Drops: @@ -7636,6 +7791,7 @@ Body: WalkSpeed: 250 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -7682,6 +7838,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 17 Drops: @@ -7726,6 +7883,7 @@ Body: WalkSpeed: 400 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 312 DamageMotion: 576 Ai: 01 Drops: @@ -7816,6 +7974,7 @@ Body: WalkSpeed: 400 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -7861,6 +8020,7 @@ Body: WalkSpeed: 250 AttackDelay: 2112 AttackMotion: 912 + ClientAttackMotion: 324 DamageMotion: 576 Ai: 17 Modes: @@ -8037,6 +8197,7 @@ Body: WalkSpeed: 200 AttackDelay: 1688 AttackMotion: 1188 + ClientAttackMotion: 720 DamageMotion: 612 Ai: 17 Modes: @@ -8083,6 +8244,7 @@ Body: WalkSpeed: 150 AttackDelay: 1744 AttackMotion: 1044 + ClientAttackMotion: 252 DamageMotion: 684 Ai: 17 Drops: @@ -8125,6 +8287,7 @@ Body: WalkSpeed: 300 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 17 Modes: @@ -8172,6 +8335,7 @@ Body: WalkSpeed: 150 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 02 Drops: @@ -8215,6 +8379,7 @@ Body: WalkSpeed: 200 AttackDelay: 1780 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Drops: @@ -8260,6 +8425,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Ai: 09 Modes: @@ -8301,6 +8467,7 @@ Body: WalkSpeed: 150 AttackDelay: 840 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Drops: @@ -8375,6 +8542,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -8411,6 +8579,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -8452,6 +8621,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 04 Modes: @@ -8496,6 +8666,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Drops: - Item: Sparkling_Dust @@ -8529,6 +8700,7 @@ Body: WalkSpeed: 250 AttackDelay: 2536 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 672 Ai: 21 Modes: @@ -8566,6 +8738,7 @@ Body: WalkSpeed: 20 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 - Id: 1188 AegisName: BON_GUN @@ -8592,6 +8765,7 @@ Body: WalkSpeed: 200 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 09 Drops: @@ -8640,6 +8814,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 620 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 09 Drops: @@ -8688,6 +8863,7 @@ Body: WalkSpeed: 100 AttackDelay: 1248 AttackMotion: 500 + ClientAttackMotion: 624 DamageMotion: 360 Ai: 21 Class: Boss @@ -8743,6 +8919,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 09 Drops: @@ -8789,6 +8966,7 @@ Body: WalkSpeed: 300 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -8835,6 +9013,7 @@ Body: WalkSpeed: 300 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Ai: 21 Drops: @@ -8882,6 +9061,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 09 Modes: @@ -8931,6 +9111,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 21 Drops: @@ -8978,6 +9159,7 @@ Body: WalkSpeed: 350 AttackDelay: 1848 AttackMotion: 500 + ClientAttackMotion: 864 DamageMotion: 576 Ai: 13 Drops: @@ -9024,6 +9206,7 @@ Body: WalkSpeed: 350 AttackDelay: 1768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 192 Ai: 13 Drops: @@ -9071,6 +9254,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 1252 + ClientAttackMotion: 288 DamageMotion: 476 Ai: 13 Class: Boss @@ -9117,6 +9301,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 1152 DamageMotion: 1000 Ai: 09 Drops: @@ -9165,6 +9350,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 13 Drops: @@ -9211,6 +9397,7 @@ Body: WalkSpeed: 200 AttackDelay: 1790 AttackMotion: 1440 + ClientAttackMotion: 900 DamageMotion: 540 Ai: 13 Modes: @@ -9259,6 +9446,7 @@ Body: WalkSpeed: 175 AttackDelay: 1744 AttackMotion: 1344 + ClientAttackMotion: 960 DamageMotion: 600 Ai: 13 Drops: @@ -9302,6 +9490,7 @@ Body: WalkSpeed: 250 AttackDelay: 1152 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 240 Ai: 21 Class: Boss @@ -9351,6 +9540,7 @@ Body: WalkSpeed: 100 AttackDelay: 816 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 240 Ai: 21 Class: Boss @@ -9399,6 +9589,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 21 Class: Boss @@ -9446,6 +9637,7 @@ Body: WalkSpeed: 190 AttackDelay: 900 AttackMotion: 500 + ClientAttackMotion: 660 DamageMotion: 864 Ai: 21 Drops: @@ -9493,6 +9685,7 @@ Body: WalkSpeed: 300 AttackDelay: 528 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 21 Drops: @@ -9540,6 +9733,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 21 Modes: @@ -9587,6 +9781,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 1000 Ai: 09 Drops: @@ -9679,6 +9874,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 09 Modes: @@ -9727,6 +9923,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 384 DamageMotion: 1000 Ai: 09 Modes: @@ -9776,6 +9973,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 21 Drops: @@ -9823,6 +10021,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 360 DamageMotion: 1000 Ai: 09 Drops: @@ -9869,6 +10068,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 288 DamageMotion: 1000 Ai: 09 Drops: @@ -9915,6 +10115,7 @@ Body: WalkSpeed: 400 AttackDelay: 832 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 21 Drops: @@ -9963,6 +10164,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 21 Drops: @@ -10008,6 +10210,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 21 Drops: @@ -10052,6 +10255,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Drops: @@ -10402,6 +10606,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -10446,6 +10651,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 768 DamageMotion: 1 Modes: Detector: true @@ -10492,6 +10698,7 @@ Body: WalkSpeed: 200 AttackDelay: 1220 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 288 Ai: 01 Modes: @@ -10534,6 +10741,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -10619,6 +10827,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 07 Drops: @@ -10665,6 +10874,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 13 Drops: @@ -10707,6 +10917,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -10749,6 +10960,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 180 DamageMotion: 576 Ai: 07 Modes: @@ -10796,6 +11008,7 @@ Body: WalkSpeed: 200 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -10843,6 +11056,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -10889,6 +11103,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -10932,6 +11147,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -10975,6 +11191,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Drops: @@ -11021,6 +11238,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 21 Drops: @@ -11067,6 +11285,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 01 Drops: @@ -11113,6 +11332,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 01 Drops: @@ -11158,6 +11378,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 17 Drops: @@ -11201,6 +11422,7 @@ Body: WalkSpeed: 100 AttackDelay: 720 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 01 Modes: @@ -11252,6 +11474,7 @@ Body: WalkSpeed: 400 AttackDelay: 1296 AttackMotion: 1296 + ClientAttackMotion: 1224 DamageMotion: 432 Ai: 05 Drops: @@ -11299,6 +11522,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 17 Drops: @@ -11344,6 +11568,7 @@ Body: WalkSpeed: 400 AttackDelay: 672 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Drops: @@ -11393,6 +11618,7 @@ Body: WalkSpeed: 200 AttackDelay: 468 AttackMotion: 468 + ClientAttackMotion: 252 DamageMotion: 288 Ai: 21 Class: Boss @@ -11452,6 +11678,7 @@ Body: WalkSpeed: 400 AttackDelay: 608 AttackMotion: 408 + ClientAttackMotion: 312 DamageMotion: 336 Ai: 21 Class: Boss @@ -11507,6 +11734,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -11551,6 +11779,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 21 Drops: @@ -11597,6 +11826,7 @@ Body: WalkSpeed: 200 AttackDelay: 776 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 21 Drops: @@ -11642,6 +11872,7 @@ Body: WalkSpeed: 165 AttackDelay: 700 AttackMotion: 648 + ClientAttackMotion: 396 DamageMotion: 480 Ai: 21 Drops: @@ -11685,6 +11916,7 @@ Body: WalkSpeed: 400 AttackDelay: 770 AttackMotion: 720 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 21 Drops: @@ -11732,6 +11964,7 @@ Body: WalkSpeed: 200 AttackDelay: 1172 AttackMotion: 672 + ClientAttackMotion: 528 DamageMotion: 420 Ai: 05 Drops: @@ -11779,6 +12012,7 @@ Body: WalkSpeed: 100 AttackDelay: 704 AttackMotion: 504 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 21 Class: Boss @@ -11826,6 +12060,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 200 Ai: 21 Modes: @@ -11870,6 +12105,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 Ai: 02 Drops: @@ -11918,6 +12154,7 @@ Body: WalkSpeed: 250 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 900 DamageMotion: 240 Ai: 21 Class: Boss @@ -11964,6 +12201,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Modes: @@ -12013,6 +12251,7 @@ Body: WalkSpeed: 220 AttackDelay: 916 AttackMotion: 816 + ClientAttackMotion: 384 DamageMotion: 336 Ai: 21 Drops: @@ -12058,6 +12297,7 @@ Body: WalkSpeed: 200 AttackDelay: 1036 AttackMotion: 936 + ClientAttackMotion: 108 DamageMotion: 240 Ai: 03 Drops: @@ -12103,6 +12343,7 @@ Body: WalkSpeed: 400 AttackDelay: 1264 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 216 Ai: 17 Drops: @@ -12146,6 +12387,7 @@ Body: WalkSpeed: 200 AttackDelay: 1078 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 21 Modes: @@ -12191,6 +12433,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Drops: @@ -12237,6 +12480,7 @@ Body: WalkSpeed: 200 AttackDelay: 1092 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 Drops: @@ -12283,6 +12527,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 384 Ai: 17 Drops: @@ -12329,6 +12574,7 @@ Body: WalkSpeed: 200 AttackDelay: 1100 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 17 Drops: @@ -12372,6 +12618,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 408 DamageMotion: 480 Ai: 21 Class: Boss @@ -12431,6 +12678,7 @@ Body: WalkSpeed: 200 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Drops: @@ -12477,6 +12725,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 10 Drops: @@ -12521,6 +12770,7 @@ Body: WalkSpeed: 200 AttackDelay: 502 AttackMotion: 2304 + ClientAttackMotion: 2112 DamageMotion: 480 Ai: 17 Drops: @@ -12568,6 +12818,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 972 DamageMotion: 480 Ai: 05 Modes: @@ -12614,6 +12865,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 816 DamageMotion: 384 Ai: 10 Drops: @@ -12663,6 +12915,7 @@ Body: WalkSpeed: 200 AttackDelay: 1264 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 288 Ai: 17 Drops: @@ -12707,6 +12960,7 @@ Body: WalkSpeed: 200 AttackDelay: 860 AttackMotion: 660 + ClientAttackMotion: 540 DamageMotion: 624 Ai: 21 Modes: @@ -12755,6 +13009,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 324 DamageMotion: 528 Ai: 17 Drops: @@ -12800,6 +13055,7 @@ Body: WalkSpeed: 200 AttackDelay: 936 AttackMotion: 936 + ClientAttackMotion: 504 DamageMotion: 288 Ai: 17 Drops: @@ -12849,6 +13105,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 05 Drops: @@ -12895,6 +13152,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 Class: Boss @@ -13058,6 +13316,7 @@ Body: WalkSpeed: 265 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 624 DamageMotion: 384 Ai: 05 Class: Guardian @@ -13119,6 +13378,7 @@ Body: WalkSpeed: 100 AttackDelay: 1024 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 480 Ai: 21 Class: Boss @@ -13167,6 +13427,7 @@ Body: WalkSpeed: 150 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 21 Drops: @@ -13214,6 +13475,7 @@ Body: WalkSpeed: 175 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 720 DamageMotion: 240 Ai: 21 Drops: @@ -13261,6 +13523,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 600 + ClientAttackMotion: 1728 DamageMotion: 384 Ai: 21 Modes: @@ -13310,6 +13573,7 @@ Body: WalkSpeed: 155 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 840 Ai: 21 Modes: @@ -13359,6 +13623,7 @@ Body: WalkSpeed: 175 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 21 Modes: @@ -13408,6 +13673,7 @@ Body: WalkSpeed: 175 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 2304 DamageMotion: 440 Ai: 21 Class: Boss @@ -13458,6 +13724,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Drops: @@ -13505,6 +13772,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Drops: @@ -13552,6 +13820,7 @@ Body: WalkSpeed: 175 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 21 Drops: @@ -13601,6 +13870,7 @@ Body: WalkSpeed: 120 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 1056 DamageMotion: 240 Ai: 21 Drops: @@ -13648,6 +13918,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 21 Modes: @@ -13697,6 +13968,7 @@ Body: WalkSpeed: 200 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -13746,6 +14018,7 @@ Body: WalkSpeed: 145 AttackDelay: 1024 AttackMotion: 768 + ClientAttackMotion: 5280 DamageMotion: 480 Ai: 21 Class: Boss @@ -13794,6 +14067,7 @@ Body: WalkSpeed: 155 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 340 Ai: 21 Modes: @@ -13843,6 +14117,7 @@ Body: WalkSpeed: 165 AttackDelay: 1468 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 21 Modes: @@ -13892,6 +14167,7 @@ Body: WalkSpeed: 165 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -13941,6 +14217,7 @@ Body: WalkSpeed: 175 AttackDelay: 1260 AttackMotion: 230 + ClientAttackMotion: 1152 DamageMotion: 192 Ai: 21 Drops: @@ -13988,6 +14265,7 @@ Body: WalkSpeed: 155 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 Ai: 21 Class: Boss @@ -14036,6 +14314,7 @@ Body: WalkSpeed: 200 AttackDelay: 960 AttackMotion: 1008 + ClientAttackMotion: 2496 DamageMotion: 840 Ai: 21 Drops: @@ -14083,6 +14362,7 @@ Body: WalkSpeed: 300 AttackDelay: 1000 AttackMotion: 1152 + ClientAttackMotion: 552 DamageMotion: 828 Ai: 21 Drops: @@ -14130,6 +14410,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 960 + ClientAttackMotion: 1728 DamageMotion: 780 Ai: 21 Drops: @@ -14177,6 +14458,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Drops: @@ -14225,6 +14507,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 500 Ai: 21 Class: Boss @@ -14282,6 +14565,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 560 + ClientAttackMotion: 576 DamageMotion: 580 Ai: 21 Drops: @@ -14329,6 +14613,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 483 + ClientAttackMotion: 720 DamageMotion: 528 Ai: 17 Drops: @@ -14378,6 +14663,7 @@ Body: WalkSpeed: 155 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 432 Ai: 21 Drops: @@ -14425,6 +14711,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1248 DamageMotion: 528 Ai: 17 Drops: @@ -14473,6 +14760,7 @@ Body: WalkSpeed: 200 AttackDelay: 1612 AttackMotion: 622 + ClientAttackMotion: 576 DamageMotion: 583 Ai: 04 Drops: @@ -14520,6 +14808,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1200 DamageMotion: 528 Ai: 21 Drops: @@ -14567,6 +14856,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 Drops: @@ -14614,6 +14904,7 @@ Body: WalkSpeed: 195 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 768 DamageMotion: 440 Ai: 21 Class: Boss @@ -14662,6 +14953,7 @@ Body: WalkSpeed: 175 AttackDelay: 862 AttackMotion: 534 + ClientAttackMotion: 360 DamageMotion: 312 Ai: 21 Modes: @@ -14711,6 +15003,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 756 DamageMotion: 511 Ai: 02 Drops: @@ -14758,6 +15051,7 @@ Body: WalkSpeed: 190 AttackDelay: 1132 AttackMotion: 583 + ClientAttackMotion: 432 DamageMotion: 532 Ai: 04 Drops: @@ -16205,6 +16499,7 @@ Body: WalkSpeed: 155 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 1440 DamageMotion: 432 Ai: 21 Modes: @@ -16238,6 +16533,7 @@ Body: WalkSpeed: 400 AttackDelay: 1840 AttackMotion: 1440 + ClientAttackMotion: 720 DamageMotion: 384 Ai: 17 Drops: @@ -16286,6 +16582,7 @@ Body: WalkSpeed: 400 AttackDelay: 2190 AttackMotion: 2040 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 09 Drops: @@ -16330,6 +16627,7 @@ Body: WalkSpeed: 180 AttackDelay: 1732 AttackMotion: 1332 + ClientAttackMotion: 468 DamageMotion: 540 Ai: 20 Modes: @@ -16370,6 +16668,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1308 AttackMotion: 1008 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -16412,6 +16711,7 @@ Body: WalkSpeed: 165 AttackDelay: 1460 AttackMotion: 960 + ClientAttackMotion: 2304 DamageMotion: 432 Ai: 03 Drops: @@ -16454,6 +16754,7 @@ Body: WalkSpeed: 155 AttackDelay: 1306 AttackMotion: 1056 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Modes: @@ -16503,6 +16804,7 @@ Body: WalkSpeed: 160 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 04 Drops: @@ -16545,6 +16847,7 @@ Body: WalkSpeed: 165 AttackDelay: 1380 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 03 Drops: @@ -16593,6 +16896,7 @@ Body: WalkSpeed: 180 AttackDelay: 1446 AttackMotion: 1296 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 21 Class: Boss @@ -16649,6 +16953,7 @@ Body: WalkSpeed: 165 AttackDelay: 850 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 21 Modes: @@ -16697,6 +17002,7 @@ Body: WalkSpeed: 170 AttackDelay: 1160 AttackMotion: 960 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 04 Drops: @@ -16739,6 +17045,7 @@ Body: WalkSpeed: 155 AttackDelay: 972 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 470 Ai: 04 Modes: @@ -16785,6 +17092,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 Drops: @@ -16831,6 +17139,7 @@ Body: WalkSpeed: 170 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 672 DamageMotion: 672 Ai: 04 Modes: @@ -16873,6 +17182,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -16921,6 +17231,7 @@ Body: WalkSpeed: 165 AttackDelay: 1300 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 04 Drops: @@ -16959,6 +17270,7 @@ Body: WalkSpeed: 165 AttackDelay: 1492 AttackMotion: 1092 + ClientAttackMotion: 840 DamageMotion: 192 Ai: 04 Drops: @@ -16997,6 +17309,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 864 DamageMotion: 180 Ai: 04 Modes: @@ -17041,6 +17354,7 @@ Body: WalkSpeed: 165 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 Drops: @@ -17083,6 +17397,7 @@ Body: WalkSpeed: 175 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 13 Drops: @@ -17123,6 +17438,7 @@ Body: WalkSpeed: 175 AttackDelay: 1024 AttackMotion: 624 + ClientAttackMotion: 336 DamageMotion: 336 Ai: 13 Drops: @@ -17163,6 +17479,7 @@ Body: WalkSpeed: 195 AttackDelay: 1350 AttackMotion: 1200 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Drops: @@ -17209,6 +17526,7 @@ Body: WalkSpeed: 170 AttackDelay: 1264 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 04 Drops: @@ -17252,6 +17570,7 @@ Body: WalkSpeed: 180 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 480 Ai: 21 Class: Boss @@ -17300,6 +17619,7 @@ Body: WalkSpeed: 145 AttackDelay: 1290 AttackMotion: 1140 + ClientAttackMotion: 780 DamageMotion: 576 Ai: 21 Class: Boss @@ -17354,6 +17674,7 @@ Body: WalkSpeed: 170 AttackDelay: 1356 AttackMotion: 1056 + ClientAttackMotion: 240 DamageMotion: 540 Ai: 05 Drops: @@ -17400,6 +17721,7 @@ Body: WalkSpeed: 165 AttackDelay: 1430 AttackMotion: 1080 + ClientAttackMotion: 480 DamageMotion: 1080 Ai: 07 Drops: @@ -17446,6 +17768,7 @@ Body: WalkSpeed: 155 AttackDelay: 2416 AttackMotion: 2016 + ClientAttackMotion: 1008 DamageMotion: 432 Ai: 05 Drops: @@ -17490,6 +17813,7 @@ Body: WalkSpeed: 300 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 - Id: 1394 @@ -17515,6 +17839,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 - Id: 1395 @@ -17530,6 +17855,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -17568,6 +17894,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -17606,6 +17933,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -17644,6 +17972,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -17696,6 +18025,7 @@ Body: WalkSpeed: 130 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -17752,6 +18082,7 @@ Body: WalkSpeed: 155 AttackDelay: 1638 AttackMotion: 2016 + ClientAttackMotion: 432 DamageMotion: 576 Ai: 01 Drops: @@ -17801,6 +18132,7 @@ Body: WalkSpeed: 150 AttackDelay: 1003 AttackMotion: 1152 + ClientAttackMotion: 2112 DamageMotion: 336 Ai: 21 Drops: @@ -17848,6 +18180,7 @@ Body: WalkSpeed: 160 AttackDelay: 1148 AttackMotion: 1728 + ClientAttackMotion: 624 DamageMotion: 864 Ai: 01 Drops: @@ -17896,6 +18229,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 05 Drops: @@ -17943,6 +18277,7 @@ Body: WalkSpeed: 250 AttackDelay: 1938 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 17 Modes: @@ -17992,6 +18327,7 @@ Body: WalkSpeed: 200 AttackDelay: 1439 AttackMotion: 1920 + ClientAttackMotion: 624 DamageMotion: 672 Ai: 04 Modes: @@ -18040,6 +18376,7 @@ Body: WalkSpeed: 165 AttackDelay: 2012 AttackMotion: 1728 + ClientAttackMotion: 576 DamageMotion: 672 Ai: 04 Drops: @@ -18094,6 +18431,7 @@ Body: WalkSpeed: 145 AttackDelay: 472 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 13 Modes: @@ -18141,6 +18479,7 @@ Body: WalkSpeed: 160 AttackDelay: 647 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 17 Drops: @@ -18187,6 +18526,7 @@ Body: WalkSpeed: 410 AttackDelay: 400 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 05 Drops: @@ -18238,6 +18578,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 840 + ClientAttackMotion: 624 DamageMotion: 432 Ai: 05 Drops: @@ -18286,6 +18627,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 756 + ClientAttackMotion: 540 DamageMotion: 360 Ai: 17 Drops: @@ -18340,6 +18682,7 @@ Body: WalkSpeed: 150 AttackDelay: 318 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 04 Drops: @@ -18385,6 +18728,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -18434,6 +18778,7 @@ Body: WalkSpeed: 155 AttackDelay: 780 AttackMotion: 1008 + ClientAttackMotion: 288 DamageMotion: 420 Ai: 17 Drops: @@ -18478,6 +18823,7 @@ Body: WalkSpeed: 200 AttackDelay: 588 AttackMotion: 816 + ClientAttackMotion: 1440 DamageMotion: 420 Ai: 21 Class: Boss @@ -18530,6 +18876,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 - Id: 1420 @@ -18554,6 +18901,7 @@ Body: WalkSpeed: 300 AttackDelay: 2864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 04 - Id: 1421 @@ -18581,6 +18929,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 Modes: @@ -18610,6 +18959,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -18638,6 +18988,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 - Id: 1424 @@ -18665,6 +19016,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1425 @@ -18690,6 +19042,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 04 - Id: 1426 @@ -18716,6 +19069,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Ai: 04 - Id: 1427 @@ -18741,6 +19095,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -18767,6 +19122,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 - Id: 1429 @@ -18792,6 +19148,7 @@ Body: WalkSpeed: 300 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 04 Modes: @@ -18819,6 +19176,7 @@ Body: WalkSpeed: 300 AttackDelay: 1468 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 04 Modes: @@ -18846,6 +19204,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 04 Modes: @@ -18874,6 +19233,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 04 - Id: 1433 @@ -18900,6 +19260,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Modes: @@ -18926,6 +19287,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 - Id: 1435 @@ -18952,6 +19314,7 @@ Body: WalkSpeed: 300 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 168 DamageMotion: 336 Ai: 04 - Id: 1436 @@ -18978,6 +19341,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 04 - Id: 1437 @@ -19004,6 +19368,7 @@ Body: WalkSpeed: 100 AttackDelay: 1364 AttackMotion: 864 + ClientAttackMotion: 312 DamageMotion: 432 Ai: 04 - Id: 1438 @@ -19031,6 +19396,7 @@ Body: WalkSpeed: 350 AttackDelay: 528 AttackMotion: 1000 + ClientAttackMotion: 240 DamageMotion: 396 Ai: 04 - Id: 1439 @@ -19058,6 +19424,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 04 - Id: 1440 @@ -19084,6 +19451,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 288 DamageMotion: 1000 Ai: 04 - Id: 1441 @@ -19110,6 +19478,7 @@ Body: WalkSpeed: 400 AttackDelay: 832 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 04 - Id: 1442 @@ -19136,6 +19505,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 04 - Id: 1443 @@ -19162,6 +19532,7 @@ Body: WalkSpeed: 400 AttackDelay: 1296 AttackMotion: 1296 + ClientAttackMotion: 1224 DamageMotion: 432 Ai: 04 - Id: 1444 @@ -19187,6 +19558,7 @@ Body: WalkSpeed: 400 AttackDelay: 672 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 - Id: 1445 @@ -19213,6 +19585,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 04 - Id: 1446 @@ -19238,6 +19611,7 @@ Body: WalkSpeed: 400 AttackDelay: 770 AttackMotion: 720 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 04 - Id: 1447 @@ -19265,6 +19639,7 @@ Body: WalkSpeed: 100 AttackDelay: 704 AttackMotion: 504 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 04 Class: Boss @@ -19292,6 +19667,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 200 Ai: 04 Modes: @@ -19322,6 +19698,7 @@ Body: WalkSpeed: 250 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 900 DamageMotion: 240 Ai: 04 Class: Boss @@ -19348,6 +19725,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 Modes: @@ -19377,6 +19755,7 @@ Body: WalkSpeed: 220 AttackDelay: 916 AttackMotion: 816 + ClientAttackMotion: 384 DamageMotion: 336 Ai: 04 - Id: 1452 @@ -19404,6 +19783,7 @@ Body: WalkSpeed: 200 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 04 - Id: 1453 @@ -19431,6 +19811,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 972 DamageMotion: 480 Ai: 04 Modes: @@ -19459,6 +19840,7 @@ Body: WalkSpeed: 200 AttackDelay: 860 AttackMotion: 660 + ClientAttackMotion: 540 DamageMotion: 624 Ai: 04 Modes: @@ -19488,6 +19870,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 04 - Id: 1456 @@ -19514,6 +19897,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 04 Class: Boss @@ -19540,6 +19924,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Modes: @@ -19567,6 +19952,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 840 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 04 - Id: 1459 @@ -19592,6 +19978,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 1056 Ai: 04 Modes: @@ -19618,6 +20005,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 04 - Id: 1461 @@ -19645,6 +20033,7 @@ Body: WalkSpeed: 200 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 04 - Id: 1462 @@ -19671,6 +20060,7 @@ Body: WalkSpeed: 200 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 - Id: 1463 @@ -19697,6 +20087,7 @@ Body: WalkSpeed: 400 AttackDelay: 2852 AttackMotion: 1152 + ClientAttackMotion: 768 DamageMotion: 840 Ai: 04 - Id: 1464 @@ -19723,6 +20114,7 @@ Body: WalkSpeed: 165 AttackDelay: 976 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 - Id: 1465 @@ -19749,6 +20141,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 620 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 04 - Id: 1466 @@ -19775,6 +20168,7 @@ Body: WalkSpeed: 150 AttackDelay: 1420 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 528 Ai: 04 - Id: 1467 @@ -19802,6 +20196,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 04 - Id: 1468 @@ -19827,6 +20222,7 @@ Body: WalkSpeed: 400 AttackDelay: 1516 AttackMotion: 816 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 04 - Id: 1469 @@ -19852,6 +20248,7 @@ Body: WalkSpeed: 400 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 - Id: 1470 @@ -19877,6 +20274,7 @@ Body: WalkSpeed: 200 AttackDelay: 1780 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 - Id: 1471 @@ -19902,6 +20300,7 @@ Body: WalkSpeed: 150 AttackDelay: 840 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 - Id: 1472 @@ -19927,6 +20326,7 @@ Body: WalkSpeed: 200 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 04 - Id: 1473 @@ -19953,6 +20353,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 620 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 04 - Id: 1474 @@ -19979,6 +20380,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 - Id: 1475 @@ -20005,6 +20407,7 @@ Body: WalkSpeed: 300 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 04 - Id: 1476 @@ -20031,6 +20434,7 @@ Body: WalkSpeed: 300 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Ai: 04 - Id: 1477 @@ -20058,6 +20462,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 Modes: @@ -20087,6 +20492,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 04 - Id: 1479 @@ -20114,6 +20520,7 @@ Body: WalkSpeed: 350 AttackDelay: 1848 AttackMotion: 500 + ClientAttackMotion: 864 DamageMotion: 576 Ai: 04 - Id: 1480 @@ -20140,6 +20547,7 @@ Body: WalkSpeed: 350 AttackDelay: 1768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 192 Ai: 04 - Id: 1481 @@ -20165,6 +20573,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 1152 DamageMotion: 1000 Ai: 04 - Id: 1482 @@ -20193,6 +20602,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 792 + ClientAttackMotion: 1920 DamageMotion: 384 Ai: 04 - Id: 1483 @@ -20219,6 +20629,7 @@ Body: WalkSpeed: 200 AttackDelay: 1790 AttackMotion: 1440 + ClientAttackMotion: 900 DamageMotion: 540 Ai: 04 Modes: @@ -20247,6 +20658,7 @@ Body: WalkSpeed: 175 AttackDelay: 1744 AttackMotion: 1344 + ClientAttackMotion: 960 DamageMotion: 600 Ai: 04 - Id: 1485 @@ -20274,6 +20686,7 @@ Body: WalkSpeed: 250 AttackDelay: 1152 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 240 Ai: 04 Class: Boss @@ -20303,6 +20716,7 @@ Body: WalkSpeed: 100 AttackDelay: 816 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 240 Ai: 04 Class: Boss @@ -20331,6 +20745,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Class: Boss @@ -20358,6 +20773,7 @@ Body: WalkSpeed: 190 AttackDelay: 900 AttackMotion: 500 + ClientAttackMotion: 660 DamageMotion: 864 Ai: 04 - Id: 1489 @@ -20385,6 +20801,7 @@ Body: WalkSpeed: 300 AttackDelay: 528 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 04 - Id: 1490 @@ -20412,6 +20829,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 04 Modes: @@ -20440,6 +20858,7 @@ Body: WalkSpeed: 250 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Modes: @@ -20473,6 +20892,7 @@ Body: WalkSpeed: 135 AttackDelay: 874 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 576 Ai: 21 Class: Boss @@ -20528,6 +20948,7 @@ Body: WalkSpeed: 170 AttackDelay: 950 AttackMotion: 2520 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -20574,6 +20995,7 @@ Body: WalkSpeed: 165 AttackDelay: 1247 AttackMotion: 768 + ClientAttackMotion: 240 DamageMotion: 576 Ai: 03 Modes: @@ -20618,6 +21040,7 @@ Body: WalkSpeed: 175 AttackDelay: 2413 AttackMotion: 1248 + ClientAttackMotion: 96 DamageMotion: 768 Ai: 04 Drops: @@ -20671,6 +21094,7 @@ Body: WalkSpeed: 165 AttackDelay: 1543 AttackMotion: 1632 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Drops: @@ -20718,6 +21142,7 @@ Body: WalkSpeed: 200 AttackDelay: 857 AttackMotion: 1056 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 04 Drops: @@ -20764,6 +21189,7 @@ Body: WalkSpeed: 200 AttackDelay: 912 AttackMotion: 1344 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Drops: @@ -20810,6 +21236,7 @@ Body: WalkSpeed: 400 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 672 Ai: 10 Drops: @@ -20866,6 +21293,7 @@ Body: WalkSpeed: 160 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Class: Boss @@ -20923,6 +21351,7 @@ Body: WalkSpeed: 180 AttackDelay: 917 AttackMotion: 1584 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 04 Modes: @@ -20970,6 +21399,7 @@ Body: WalkSpeed: 155 AttackDelay: 847 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Drops: @@ -21013,6 +21443,7 @@ Body: WalkSpeed: 125 AttackDelay: 747 AttackMotion: 1632 + ClientAttackMotion: 1440 DamageMotion: 576 Ai: 04 Modes: @@ -21061,6 +21492,7 @@ Body: WalkSpeed: 147 AttackDelay: 516 AttackMotion: 768 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 04 Modes: @@ -21110,6 +21542,7 @@ Body: WalkSpeed: 175 AttackDelay: 914 AttackMotion: 1344 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -21157,6 +21590,7 @@ Body: WalkSpeed: 150 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 04 Drops: @@ -21200,6 +21634,7 @@ Body: WalkSpeed: 150 AttackDelay: 890 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Drops: @@ -21246,6 +21681,7 @@ Body: WalkSpeed: 155 AttackDelay: 741 AttackMotion: 1536 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 04 Modes: @@ -21295,6 +21731,7 @@ Body: WalkSpeed: 170 AttackDelay: 854 AttackMotion: 2016 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 10 Class: Boss @@ -21353,6 +21790,7 @@ Body: WalkSpeed: 180 AttackDelay: 890 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 720 Ai: 04 Drops: @@ -21397,6 +21835,7 @@ Body: WalkSpeed: 200 AttackDelay: 1257 AttackMotion: 528 + ClientAttackMotion: 864 DamageMotion: 432 Ai: 04 Drops: @@ -21441,6 +21880,7 @@ Body: WalkSpeed: 160 AttackDelay: 600 AttackMotion: 840 + ClientAttackMotion: 480 DamageMotion: 504 Ai: 02 Drops: @@ -21485,6 +21925,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -21529,6 +21970,7 @@ Body: WalkSpeed: 445 AttackDelay: 106 AttackMotion: 1056 + ClientAttackMotion: 624 DamageMotion: 576 Ai: 17 Drops: @@ -21571,6 +22013,7 @@ Body: WalkSpeed: 165 AttackDelay: 1120 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 04 Modes: @@ -21615,6 +22058,7 @@ Body: WalkSpeed: 160 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Drops: @@ -21661,6 +22105,7 @@ Body: WalkSpeed: 170 AttackDelay: 1728 AttackMotion: 816 + ClientAttackMotion: 240 DamageMotion: 1188 Ai: 21 Drops: @@ -21704,6 +22149,7 @@ Body: WalkSpeed: 170 AttackDelay: 1152 AttackMotion: 672 + ClientAttackMotion: 432 DamageMotion: 672 Ai: 01 Drops: @@ -21740,6 +22186,7 @@ Body: WalkSpeed: 200 AttackDelay: 520 AttackMotion: 2304 + ClientAttackMotion: 2112 DamageMotion: 480 Ai: 17 - Id: 1522 @@ -21767,6 +22214,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 - Id: 1523 @@ -21795,6 +22243,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 05 - Id: 1524 @@ -21821,6 +22270,7 @@ Body: WalkSpeed: 150 AttackDelay: 318 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 04 - Id: 1525 @@ -21846,6 +22296,7 @@ Body: WalkSpeed: 100 AttackDelay: 1504 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 - Id: 1526 @@ -21872,6 +22323,7 @@ Body: WalkSpeed: 145 AttackDelay: 472 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 13 Modes: @@ -21900,6 +22352,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 384 Ai: 17 - Id: 1528 @@ -21926,6 +22379,7 @@ Body: WalkSpeed: 200 AttackDelay: 1092 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 - Id: 1529 @@ -21954,6 +22408,7 @@ Body: WalkSpeed: 200 AttackDelay: 588 AttackMotion: 816 + ClientAttackMotion: 288 DamageMotion: 420 Ai: 21 Class: Boss @@ -21981,6 +22436,7 @@ Body: WalkSpeed: 145 AttackDelay: 1290 AttackMotion: 1140 + ClientAttackMotion: 780 DamageMotion: 576 Ai: 21 Class: Boss @@ -22009,6 +22465,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 840 + ClientAttackMotion: 624 DamageMotion: 432 Ai: 05 - Id: 1532 @@ -22035,6 +22492,7 @@ Body: WalkSpeed: 165 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 - Id: 1533 @@ -22063,6 +22521,7 @@ Body: WalkSpeed: 200 AttackDelay: 1612 AttackMotion: 622 + ClientAttackMotion: 576 DamageMotion: 583 Ai: 09 - Id: 1534 @@ -22089,6 +22548,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 - Id: 1535 @@ -22115,6 +22575,7 @@ Body: WalkSpeed: 150 AttackDelay: 1320 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 09 - Id: 1536 @@ -22141,6 +22602,7 @@ Body: WalkSpeed: 250 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 - Id: 1537 @@ -22167,6 +22629,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 - Id: 1538 @@ -22193,6 +22656,7 @@ Body: WalkSpeed: 300 AttackDelay: 3074 AttackMotion: 1874 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 13 - Id: 1539 @@ -22220,6 +22684,7 @@ Body: WalkSpeed: 120 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 1056 DamageMotion: 240 Ai: 21 - Id: 1540 @@ -22245,6 +22710,7 @@ Body: WalkSpeed: 300 AttackDelay: 1608 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 17 - Id: 1541 @@ -22271,6 +22737,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 816 DamageMotion: 384 Ai: 10 - Id: 1542 @@ -22298,6 +22765,7 @@ Body: WalkSpeed: 135 AttackDelay: 874 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 576 Ai: 21 Class: Boss @@ -22325,6 +22793,7 @@ Body: WalkSpeed: 165 AttackDelay: 2012 AttackMotion: 1728 + ClientAttackMotion: 576 DamageMotion: 672 Ai: 04 - Id: 1544 @@ -22351,6 +22820,7 @@ Body: WalkSpeed: 155 AttackDelay: 1638 AttackMotion: 2016 + ClientAttackMotion: 432 DamageMotion: 576 Ai: 01 - Id: 1545 @@ -22377,6 +22847,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 - Id: 1546 @@ -22403,6 +22874,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 - Id: 1547 @@ -22429,6 +22901,7 @@ Body: WalkSpeed: 300 AttackDelay: 1228 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 - Id: 1548 @@ -22456,6 +22929,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 - Id: 1549 @@ -22482,6 +22956,7 @@ Body: WalkSpeed: 400 AttackDelay: 2190 AttackMotion: 2040 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 09 - Id: 1550 @@ -22510,6 +22985,7 @@ Body: WalkSpeed: 410 AttackDelay: 400 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 05 - Id: 1551 @@ -22535,6 +23011,7 @@ Body: WalkSpeed: 300 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 468 DamageMotion: 528 Ai: 17 - Id: 1552 @@ -22562,6 +23039,7 @@ Body: WalkSpeed: 250 AttackDelay: 1938 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 17 Modes: @@ -22589,6 +23067,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 - Id: 1554 @@ -22615,6 +23094,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -22643,6 +23123,7 @@ Body: WalkSpeed: 400 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 672 Ai: 10 - Id: 1556 @@ -22671,6 +23152,7 @@ Body: WalkSpeed: 160 AttackDelay: 1148 AttackMotion: 1728 + ClientAttackMotion: 624 DamageMotion: 864 Ai: 01 - Id: 1557 @@ -22697,6 +23179,7 @@ Body: WalkSpeed: 155 AttackDelay: 2416 AttackMotion: 2016 + ClientAttackMotion: 1008 DamageMotion: 432 Ai: 05 - Id: 1558 @@ -22724,6 +23207,7 @@ Body: WalkSpeed: 250 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 - Id: 1559 @@ -22749,6 +23233,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 09 Modes: @@ -22780,6 +23265,7 @@ Body: WalkSpeed: 150 AttackDelay: 1003 AttackMotion: 1152 + ClientAttackMotion: 2112 DamageMotion: 336 Ai: 21 - Id: 1561 @@ -22805,6 +23291,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 - Id: 1562 @@ -22831,6 +23318,7 @@ Body: WalkSpeed: 200 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 - Id: 1563 @@ -22858,6 +23346,7 @@ Body: WalkSpeed: 200 AttackDelay: 1439 AttackMotion: 1920 + ClientAttackMotion: 624 DamageMotion: 672 Ai: 04 Modes: @@ -22887,6 +23376,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -22917,6 +23407,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 756 + ClientAttackMotion: 540 DamageMotion: 360 Ai: 17 - Id: 1566 @@ -22944,6 +23435,7 @@ Body: WalkSpeed: 175 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 720 DamageMotion: 240 Ai: 21 - Id: 1567 @@ -22971,6 +23463,7 @@ Body: WalkSpeed: 165 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -22998,6 +23491,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 672 Ai: 21 Class: Boss @@ -23026,6 +23520,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 - Id: 1570 @@ -23051,6 +23546,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 1000 Ai: 09 - Id: 1571 @@ -23077,6 +23573,7 @@ Body: WalkSpeed: 400 AttackDelay: 1680 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 - Id: 1572 @@ -23101,6 +23598,7 @@ Body: WalkSpeed: 400 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 1573 @@ -23127,6 +23625,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 - Id: 1574 @@ -23153,6 +23652,7 @@ Body: WalkSpeed: 200 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 09 - Id: 1575 @@ -23179,6 +23679,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1432 AttackMotion: 432 + ClientAttackMotion: 180 DamageMotion: 576 Ai: 10 - Id: 1576 @@ -23205,6 +23706,7 @@ Body: WalkSpeed: 300 AttackDelay: 1220 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 648 Ai: 21 Class: Boss @@ -23231,6 +23733,7 @@ Body: WalkSpeed: 200 AttackDelay: 1172 AttackMotion: 672 + ClientAttackMotion: 528 DamageMotion: 420 Ai: 05 - Id: 1578 @@ -23257,6 +23760,7 @@ Body: WalkSpeed: 400 AttackDelay: 1888 AttackMotion: 1152 + ClientAttackMotion: 552 DamageMotion: 828 Ai: 13 - Id: 1579 @@ -23282,6 +23786,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 10 - Id: 1580 @@ -23308,6 +23813,7 @@ Body: WalkSpeed: 165 AttackDelay: 850 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 21 Modes: @@ -23337,6 +23843,7 @@ Body: WalkSpeed: 200 AttackDelay: 1080 AttackMotion: 648 + ClientAttackMotion: 600 DamageMotion: 480 Ai: 21 Modes: @@ -23368,6 +23875,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 1056 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 21 Class: Boss @@ -23416,6 +23924,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 288 + ClientAttackMotion: 384 DamageMotion: 144 Ai: 21 Class: Boss @@ -23473,6 +23982,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 672 Ai: 13 Modes: @@ -23517,6 +24027,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 Drops: @@ -23561,6 +24072,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 720 Ai: 02 Drops: @@ -23607,6 +24119,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 1536 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 09 Drops: @@ -23653,6 +24166,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 01 Drops: @@ -23696,6 +24210,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 - Id: 1590 @@ -23722,6 +24237,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1308 AttackMotion: 1008 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 - Id: 1591 @@ -23748,6 +24264,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Class: Guardian @@ -23780,6 +24297,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 560 + ClientAttackMotion: 576 DamageMotion: 580 Ai: 03 Class: Boss @@ -23819,6 +24337,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Class: Guardian @@ -23853,6 +24372,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 - Id: 1595 @@ -23878,6 +24398,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 - Id: 1596 @@ -23905,6 +24426,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 672 Ai: 13 Modes: @@ -23934,6 +24456,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -23962,6 +24485,7 @@ Body: WalkSpeed: 180 AttackDelay: 1732 AttackMotion: 1332 + ClientAttackMotion: 468 DamageMotion: 540 Ai: 20 Modes: @@ -23989,6 +24513,7 @@ Body: WalkSpeed: 250 AttackDelay: 2536 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 672 Ai: 21 Modes: @@ -24018,6 +24543,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1200 DamageMotion: 528 Ai: 21 - Id: 1601 @@ -24045,6 +24571,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 483 + ClientAttackMotion: 720 DamageMotion: 528 Ai: 21 - Id: 1602 @@ -24072,6 +24599,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1248 DamageMotion: 528 Ai: 21 - Id: 1603 @@ -24097,6 +24625,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 - Id: 1604 @@ -24124,6 +24653,7 @@ Body: WalkSpeed: 155 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 340 Ai: 21 Modes: @@ -24153,6 +24683,7 @@ Body: WalkSpeed: 145 AttackDelay: 1024 AttackMotion: 768 + ClientAttackMotion: 5280 DamageMotion: 480 Ai: 21 Class: Boss @@ -24182,6 +24713,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1607 @@ -24208,6 +24740,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 - Id: 1608 @@ -24234,6 +24767,7 @@ Body: WalkSpeed: 300 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 13 Modes: @@ -24266,6 +24800,7 @@ Body: WalkSpeed: 160 AttackDelay: 600 AttackMotion: 840 + ClientAttackMotion: 480 DamageMotion: 504 Ai: 02 Class: Guardian @@ -24307,6 +24842,7 @@ Body: WalkSpeed: 100 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 Class: Boss @@ -24341,6 +24877,7 @@ Body: WalkSpeed: 200 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 09 Class: Boss @@ -24378,6 +24915,7 @@ Body: WalkSpeed: 180 AttackDelay: 890 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 720 Ai: 04 Class: Boss @@ -24416,6 +24954,7 @@ Body: WalkSpeed: 300 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -24463,6 +25002,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 Drops: @@ -24510,6 +25050,7 @@ Body: WalkSpeed: 350 AttackDelay: 720 AttackMotion: 864 + ClientAttackMotion: 624 DamageMotion: 504 Ai: 04 Drops: @@ -24555,6 +25096,7 @@ Body: WalkSpeed: 180 AttackDelay: 960 AttackMotion: 336 + ClientAttackMotion: 240 DamageMotion: 300 Ai: 17 Drops: @@ -24603,6 +25145,7 @@ Body: WalkSpeed: 300 AttackDelay: 1152 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -24650,6 +25193,7 @@ Body: WalkSpeed: 350 AttackDelay: 420 AttackMotion: 576 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 21 Modes: @@ -24698,6 +25242,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 120 DamageMotion: 360 Ai: 02 Modes: @@ -24744,6 +25289,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 672 Ai: 04 Drops: @@ -24785,6 +25331,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 672 Ai: 04 Drops: @@ -24828,6 +25375,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 600 DamageMotion: 504 Ai: 20 Drops: @@ -24877,6 +25425,7 @@ Body: WalkSpeed: 220 AttackDelay: 128 AttackMotion: 1104 + ClientAttackMotion: 480 DamageMotion: 240 Ai: 21 Class: Boss @@ -24933,6 +25482,7 @@ Body: WalkSpeed: 220 AttackDelay: 1152 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 - Id: 1625 @@ -24961,6 +25511,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 120 DamageMotion: 360 Ai: 04 Modes: @@ -24991,6 +25542,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Class: Boss @@ -25032,6 +25584,7 @@ Body: WalkSpeed: 200 AttackDelay: 140 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 430 Ai: 04 Modes: @@ -25071,6 +25624,7 @@ Body: WalkSpeed: 300 AttackDelay: 140 AttackMotion: 960 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 03 Drops: @@ -25112,6 +25666,7 @@ Body: WalkSpeed: 200 AttackDelay: 336 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Drops: @@ -25151,6 +25706,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Class: Boss @@ -25209,6 +25765,7 @@ Body: WalkSpeed: 150 AttackDelay: 1728 AttackMotion: 816 + ClientAttackMotion: 240 DamageMotion: 1188 Ai: 04 Drops: @@ -25254,6 +25811,7 @@ Body: WalkSpeed: 140 AttackDelay: 432 AttackMotion: 540 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 17 Modes: @@ -25301,6 +25859,7 @@ Body: WalkSpeed: 190 AttackDelay: 336 AttackMotion: 840 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 Drops: @@ -25345,6 +25904,7 @@ Body: WalkSpeed: 170 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Modes: @@ -25395,6 +25955,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Modes: @@ -25445,6 +26006,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 09 Drops: @@ -25492,6 +26054,7 @@ Body: WalkSpeed: 180 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 Drops: @@ -25539,6 +26102,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Drops: @@ -25586,6 +26150,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 Drops: @@ -25633,6 +26198,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25667,6 +26233,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25702,6 +26269,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -25736,6 +26304,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25770,6 +26339,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25804,6 +26374,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25839,6 +26410,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25897,6 +26469,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -25956,6 +26529,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -26014,6 +26588,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26072,6 +26647,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26130,6 +26706,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26188,6 +26765,7 @@ Body: WalkSpeed: 145 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -26235,6 +26813,7 @@ Body: WalkSpeed: 120 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -26283,6 +26862,7 @@ Body: WalkSpeed: 120 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 04 Drops: @@ -26330,6 +26910,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26378,6 +26959,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26425,6 +27007,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26474,6 +27057,7 @@ Body: WalkSpeed: 100 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26529,6 +27113,7 @@ Body: WalkSpeed: 120 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -26560,6 +27145,7 @@ Body: WalkSpeed: 120 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 04 Drops: @@ -26590,6 +27176,7 @@ Body: WalkSpeed: 130 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26621,6 +27208,7 @@ Body: WalkSpeed: 150 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26651,6 +27239,7 @@ Body: WalkSpeed: 150 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26682,6 +27271,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -26717,6 +27307,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -26754,6 +27345,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -26789,6 +27381,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -26825,6 +27418,7 @@ Body: WalkSpeed: 180 AttackDelay: 580 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 21 Drops: @@ -26868,6 +27462,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -26901,6 +27496,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -26948,6 +27544,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -26995,6 +27592,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27042,6 +27640,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27086,6 +27685,7 @@ Body: WalkSpeed: 400 AttackDelay: 1368 AttackMotion: 1344 + ClientAttackMotion: 480 DamageMotion: 432 Ai: 10 Class: Boss @@ -27119,6 +27719,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27152,6 +27753,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27199,6 +27801,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27246,6 +27849,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27293,6 +27897,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27340,6 +27945,7 @@ Body: WalkSpeed: 170 AttackDelay: 504 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 04 Drops: @@ -27381,6 +27987,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 360 + ClientAttackMotion: 240 DamageMotion: 864 Ai: 04 Class: Boss @@ -27429,6 +28036,7 @@ Body: WalkSpeed: 250 AttackDelay: 1536 AttackMotion: 1056 + ClientAttackMotion: 336 DamageMotion: 1152 Ai: 04 Drops: @@ -27473,6 +28081,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 - Id: 1684 @@ -27500,6 +28109,7 @@ Body: WalkSpeed: 180 AttackDelay: 1080 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 04 - Id: 1685 @@ -27530,6 +28140,7 @@ Body: WalkSpeed: 180 AttackDelay: 504 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 432 Ai: 21 Class: Boss @@ -27587,6 +28198,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 288 Ai: 04 Drops: @@ -27631,6 +28243,7 @@ Body: WalkSpeed: 200 AttackDelay: 720 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 02 Drops: @@ -27678,6 +28291,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 10 Class: Boss @@ -27736,6 +28350,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Class: Boss @@ -27756,6 +28371,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 2304 DamageMotion: 511 Ai: 02 Modes: @@ -27796,6 +28412,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 1536 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 04 Drops: @@ -27839,6 +28456,7 @@ Body: WalkSpeed: 100 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 04 Drops: @@ -27884,6 +28502,7 @@ Body: WalkSpeed: 100 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -27925,6 +28544,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -27966,6 +28586,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -28007,6 +28628,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -28048,6 +28670,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -28092,6 +28715,7 @@ Body: WalkSpeed: 150 AttackDelay: 176 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 21 Drops: @@ -28139,6 +28763,7 @@ Body: WalkSpeed: 100 AttackDelay: 168 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -28187,6 +28812,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Class: Boss @@ -28236,6 +28862,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 420 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -28283,6 +28910,7 @@ Body: WalkSpeed: 120 AttackDelay: 360 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -28332,6 +28960,7 @@ Body: WalkSpeed: 180 AttackDelay: 576 AttackMotion: 420 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 20 Class: Boss @@ -28381,6 +29010,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 420 Ai: 21 Class: Boss @@ -28428,6 +29058,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 Class: Boss @@ -28475,6 +29106,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 21 Class: Boss @@ -28522,6 +29154,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 21 Class: Boss @@ -28570,6 +29203,7 @@ Body: WalkSpeed: 120 AttackDelay: 115 AttackMotion: 816 + ClientAttackMotion: 672 DamageMotion: 504 Ai: 21 Class: Boss @@ -28628,6 +29262,7 @@ Body: WalkSpeed: 100 AttackDelay: 115 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 420 Ai: 20 Class: Boss @@ -28666,6 +29301,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 20 Class: Boss @@ -28704,6 +29340,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Class: Boss @@ -28742,6 +29379,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 20 Class: Boss @@ -28778,6 +29416,7 @@ Body: WalkSpeed: 170 AttackDelay: 168 AttackMotion: 1008 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 09 Drops: @@ -28824,6 +29463,7 @@ Body: WalkSpeed: 100 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 09 Drops: @@ -28870,6 +29510,7 @@ Body: WalkSpeed: 110 AttackDelay: 151 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -28908,6 +29549,7 @@ Body: WalkSpeed: 180 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 09 Drops: @@ -28954,6 +29596,7 @@ Body: WalkSpeed: 120 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 09 Drops: @@ -28998,6 +29641,7 @@ Body: WalkSpeed: 100 AttackDelay: 252 AttackMotion: 816 + ClientAttackMotion: 528 DamageMotion: 480 Ai: 04 Drops: @@ -29039,6 +29683,7 @@ Body: WalkSpeed: 250 AttackDelay: 432 AttackMotion: 936 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Class: Boss @@ -29096,6 +29741,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -29139,6 +29785,7 @@ Body: WalkSpeed: 1000 AttackDelay: 24 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Drops: - Item: Elunium @@ -29184,6 +29831,7 @@ Body: WalkSpeed: 240 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 01 Drops: @@ -29221,6 +29869,7 @@ Body: WalkSpeed: 180 AttackDelay: 1008 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 - Id: 1724 @@ -29247,6 +29896,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 - Id: 1725 @@ -29270,6 +29920,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 1726 @@ -29295,6 +29946,7 @@ Body: WalkSpeed: 150 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 02 - Id: 1727 @@ -29319,6 +29971,7 @@ Body: WalkSpeed: 150 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 312 DamageMotion: 576 Ai: 02 - Id: 1728 @@ -29344,6 +29997,7 @@ Body: WalkSpeed: 150 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 216 DamageMotion: 240 Ai: 02 - Id: 1729 @@ -29369,6 +30023,7 @@ Body: WalkSpeed: 150 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 02 Modes: @@ -29397,6 +30052,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 02 Modes: @@ -29428,6 +30084,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 Ai: 21 Class: Boss @@ -29480,6 +30137,7 @@ Body: WalkSpeed: 140 AttackDelay: 1152 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -29511,6 +30169,7 @@ Body: WalkSpeed: 130 AttackDelay: 1152 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -29568,6 +30227,7 @@ Body: WalkSpeed: 250 AttackDelay: 1080 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 13 Modes: @@ -29617,6 +30277,7 @@ Body: WalkSpeed: 200 AttackDelay: 1296 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 13 Modes: @@ -29666,6 +30327,7 @@ Body: WalkSpeed: 220 AttackDelay: 1440 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 17 Drops: @@ -29713,6 +30375,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 Drops: @@ -29751,6 +30414,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 480 + ClientAttackMotion: 2112 DamageMotion: 504 Ai: 13 Modes: @@ -29783,6 +30447,7 @@ Body: WalkSpeed: 150 AttackDelay: 1296 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 13 Modes: @@ -29813,6 +30478,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 04 - Id: 1742 @@ -29838,6 +30504,7 @@ Body: WalkSpeed: 200 AttackDelay: 1078 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 04 Modes: @@ -29867,6 +30534,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 - Id: 1744 @@ -29893,6 +30561,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 Ai: 04 - Id: 1745 @@ -29920,6 +30589,7 @@ Body: WalkSpeed: 110 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 05 Modes: @@ -29952,6 +30622,7 @@ Body: WalkSpeed: 200 AttackDelay: 1440 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 04 Drops: @@ -29980,6 +30651,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1748 @@ -30004,6 +30676,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1749 @@ -30030,6 +30703,7 @@ Body: WalkSpeed: 180 AttackDelay: 1720 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 360 Ai: 04 Modes: @@ -30059,6 +30733,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -30093,6 +30768,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -30147,6 +30823,7 @@ Body: WalkSpeed: 190 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 20 Modes: @@ -30195,6 +30872,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 576 + ClientAttackMotion: 192 DamageMotion: 432 Ai: 20 Modes: @@ -30242,6 +30920,7 @@ Body: WalkSpeed: 250 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -30290,6 +30969,7 @@ Body: WalkSpeed: 250 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -30336,6 +31016,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 Class: Boss @@ -30363,6 +31044,7 @@ Body: WalkSpeed: 170 AttackDelay: 168 AttackMotion: 1008 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 04 - Id: 1758 @@ -30389,6 +31071,7 @@ Body: WalkSpeed: 100 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 - Id: 1759 @@ -30415,6 +31098,7 @@ Body: WalkSpeed: 180 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 04 - Id: 1760 @@ -30441,6 +31125,7 @@ Body: WalkSpeed: 120 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 - Id: 1761 @@ -30467,6 +31152,7 @@ Body: WalkSpeed: 170 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Modes: @@ -30498,6 +31184,7 @@ Body: WalkSpeed: 130 AttackDelay: 480 AttackMotion: 576 + ClientAttackMotion: 192 DamageMotion: 432 Ai: 04 Modes: @@ -30530,6 +31217,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Class: Boss @@ -30561,6 +31249,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Class: Boss @@ -30594,6 +31283,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -30628,6 +31318,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 312 DamageMotion: 384 Ai: 17 Class: Guardian @@ -30666,6 +31357,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 17 Class: Guardian @@ -30708,6 +31400,7 @@ Body: WalkSpeed: 200 AttackDelay: 1344 AttackMotion: 2880 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 21 Class: Boss @@ -30762,6 +31455,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -30807,6 +31501,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -30854,6 +31549,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -30898,6 +31594,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Drops: @@ -30943,6 +31640,7 @@ Body: WalkSpeed: 140 AttackDelay: 960 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 Modes: @@ -30992,6 +31690,7 @@ Body: WalkSpeed: 190 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 20 Drops: @@ -31037,6 +31736,7 @@ Body: WalkSpeed: 220 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 660 DamageMotion: 420 Ai: 04 Drops: @@ -31084,6 +31784,7 @@ Body: WalkSpeed: 180 AttackDelay: 432 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 02 Drops: @@ -31125,6 +31826,7 @@ Body: WalkSpeed: 250 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 04 Drops: @@ -31169,6 +31871,7 @@ Body: WalkSpeed: 190 AttackDelay: 576 AttackMotion: 370 + ClientAttackMotion: 300 DamageMotion: 270 Ai: 20 Modes: @@ -31213,6 +31916,7 @@ Body: WalkSpeed: 400 AttackDelay: 432 AttackMotion: 840 + ClientAttackMotion: 660 DamageMotion: 216 Ai: 21 Class: Boss @@ -31267,6 +31971,7 @@ Body: WalkSpeed: 1000 AttackDelay: 672 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 360 Ai: 10 Drops: @@ -31311,6 +32016,7 @@ Body: WalkSpeed: 1000 AttackDelay: 864 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 336 Ai: 10 Drops: @@ -31355,6 +32061,7 @@ Body: WalkSpeed: 200 AttackDelay: 412 AttackMotion: 840 + ClientAttackMotion: 600 DamageMotion: 300 Ai: 07 Drops: @@ -31396,6 +32103,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Class: Boss @@ -31437,6 +32145,7 @@ Body: WalkSpeed: 300 AttackDelay: 936 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 02 Drops: @@ -31483,6 +32192,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 600 + ClientAttackMotion: 480 DamageMotion: 240 Ai: 21 Class: Boss @@ -31537,6 +32247,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -31567,6 +32278,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -31597,6 +32309,7 @@ Body: WalkSpeed: 250 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 20 Drops: @@ -31626,6 +32339,7 @@ Body: ElementLevel: 2 WalkSpeed: 1000 AttackDelay: 1344 + ClientAttackMotion: 1152 Ai: 10 Drops: - Item: Ice_Piece @@ -31668,6 +32382,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 04 Drops: @@ -31702,6 +32417,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Class: Boss @@ -31755,6 +32471,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 21 - Id: 1794 @@ -31781,6 +32498,7 @@ Body: WalkSpeed: 200 AttackDelay: 412 AttackMotion: 840 + ClientAttackMotion: 600 DamageMotion: 300 Ai: 20 - Id: 1795 @@ -31808,6 +32526,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Class: Boss @@ -31855,6 +32574,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Drops: @@ -31898,6 +32618,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Drops: @@ -31962,6 +32683,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -31995,6 +32717,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32029,6 +32752,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -32062,6 +32786,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32095,6 +32820,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 Class: Boss @@ -32128,6 +32854,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32161,6 +32888,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32194,6 +32922,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32228,6 +32957,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -32261,6 +32991,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32294,6 +33025,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32327,6 +33059,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32357,6 +33090,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 Drops: @@ -32386,6 +33120,7 @@ Body: WalkSpeed: 190 AttackDelay: 890 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Modes: IgnoreMagic: true @@ -32428,6 +33163,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -32470,6 +33206,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 Ai: 21 Class: Boss @@ -32489,6 +33226,7 @@ Body: ElementLevel: 1 WalkSpeed: 1000 AttackDelay: 1320 + ClientAttackMotion: 504 DamageMotion: 300 Modes: IgnoreMagic: true @@ -32566,6 +33304,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 936 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Class: Boss @@ -32605,6 +33344,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Ai: 21 Drops: @@ -32634,6 +33374,7 @@ Body: WalkSpeed: 100 AttackDelay: 1504 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 Drops: @@ -32662,6 +33403,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Drops: @@ -32691,6 +33433,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 13 Drops: @@ -32720,6 +33463,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -32752,6 +33496,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 Drops: @@ -32783,6 +33528,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -32812,6 +33558,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -32840,6 +33587,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 Drops: @@ -32869,6 +33617,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 21 Drops: @@ -32898,6 +33647,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Drops: @@ -33026,6 +33776,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -33075,6 +33826,7 @@ Body: WalkSpeed: 130 AttackDelay: 212 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Class: Boss @@ -33132,6 +33884,7 @@ Body: WalkSpeed: 150 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Class: Boss @@ -33178,6 +33931,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -33206,6 +33960,7 @@ Body: WalkSpeed: 150 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Class: Boss @@ -33236,6 +33991,7 @@ Body: WalkSpeed: 300 AttackDelay: 1472 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 02 Drops: @@ -33274,6 +34030,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Modes: @@ -33321,6 +34078,7 @@ Body: WalkSpeed: 200 AttackDelay: 1548 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 17 Modes: @@ -33370,6 +34128,7 @@ Body: WalkSpeed: 170 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -33415,6 +34174,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 17 Class: Guardian @@ -33468,6 +34228,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Drops: @@ -33503,6 +34264,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 17 Drops: @@ -33539,6 +34301,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 09 Drops: @@ -33575,6 +34338,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 09 Modes: @@ -33671,6 +34435,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -33700,6 +34465,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -33729,6 +34495,7 @@ Body: WalkSpeed: 100 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Class: Boss @@ -33758,6 +34525,7 @@ Body: WalkSpeed: 150 AttackDelay: 1678 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 648 Ai: 21 Class: Boss @@ -33788,6 +34556,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 560 + ClientAttackMotion: 576 DamageMotion: 580 Ai: 21 - Id: 1852 @@ -33814,6 +34583,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 312 DamageMotion: 384 Ai: 21 Class: Boss @@ -33841,6 +34611,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 21 Class: Boss @@ -33871,6 +34642,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 02 Drops: @@ -33915,6 +34687,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -33961,6 +34734,7 @@ Body: WalkSpeed: 250 AttackDelay: 1560 AttackMotion: 360 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 02 Modes: @@ -34008,6 +34782,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Drops: @@ -34053,6 +34828,7 @@ Body: WalkSpeed: 400 AttackDelay: 2208 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 324 Ai: 01 Drops: @@ -34098,6 +34874,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 Drops: @@ -34143,6 +34920,7 @@ Body: WalkSpeed: 150 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 17 Drops: @@ -34190,6 +34968,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 360 DamageMotion: 1000 Ai: 09 Drops: @@ -34236,6 +35015,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Drops: @@ -34281,6 +35061,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 756 DamageMotion: 511 Ai: 02 Drops: @@ -34315,6 +35096,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Drops: @@ -34357,6 +35139,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 21 Drops: @@ -34402,6 +35185,7 @@ Body: WalkSpeed: 140 AttackDelay: 824 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 360 Ai: 21 Modes: @@ -34449,6 +35233,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 21 Modes: @@ -34492,6 +35277,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 21 Modes: @@ -34523,6 +35309,7 @@ Body: WalkSpeed: 150 AttackDelay: 972 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 432 Ai: 09 Modes: @@ -34563,6 +35350,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 1320 + ClientAttackMotion: 780 DamageMotion: 420 Ai: 21 Class: Boss @@ -34611,6 +35399,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 1152 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Class: Boss @@ -34664,6 +35453,7 @@ Body: WalkSpeed: 100 AttackDelay: 676 AttackMotion: 576 + ClientAttackMotion: 252 DamageMotion: 480 Ai: 21 Class: Boss @@ -34692,6 +35482,7 @@ Body: WalkSpeed: 100 AttackDelay: 100 AttackMotion: 576 + ClientAttackMotion: 252 DamageMotion: 480 Ai: 21 Class: Boss @@ -34723,6 +35514,7 @@ Body: WalkSpeed: 100 AttackDelay: 212 AttackMotion: 504 + ClientAttackMotion: 252 DamageMotion: 432 Ai: 21 Class: Boss @@ -34780,6 +35572,7 @@ Body: WalkSpeed: 175 AttackDelay: 1816 AttackMotion: 1152 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 21 Drops: @@ -34814,6 +35607,7 @@ Body: WalkSpeed: 180 AttackDelay: 1446 AttackMotion: 1296 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 21 Class: Boss @@ -34830,6 +35624,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -34867,6 +35662,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 2016 DamageMotion: 1 Modes: IgnoreMagic: true @@ -34910,6 +35706,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 21 Class: Boss @@ -34939,6 +35736,7 @@ Body: WalkSpeed: 320 AttackDelay: 2304 AttackMotion: 840 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 01 Drops: @@ -34981,6 +35779,7 @@ Body: WalkSpeed: 230 AttackDelay: 1728 AttackMotion: 720 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 03 Drops: @@ -35024,6 +35823,7 @@ Body: WalkSpeed: 270 AttackDelay: 1536 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 420 Ai: 04 Drops: @@ -35067,6 +35867,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -35110,6 +35911,7 @@ Body: WalkSpeed: 170 AttackDelay: 1536 AttackMotion: 504 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 04 Drops: @@ -35155,6 +35957,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 864 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 21 Class: Boss @@ -35206,6 +36009,7 @@ Body: WalkSpeed: 170 AttackDelay: 1536 AttackMotion: 504 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 04 - Id: 1887 @@ -35233,6 +36037,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 Drops: @@ -35268,6 +36073,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -35300,6 +36106,7 @@ Body: WalkSpeed: 400 AttackDelay: 608 AttackMotion: 408 + ClientAttackMotion: 312 DamageMotion: 336 Ai: 21 Class: Boss @@ -35335,6 +36142,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 864 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 20 - Id: 1891 @@ -35362,6 +36170,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -35390,6 +36199,7 @@ Body: WalkSpeed: 125 AttackDelay: 747 AttackMotion: 1632 + ClientAttackMotion: 1440 DamageMotion: 576 Ai: 04 Modes: @@ -35420,6 +36230,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 21 - Id: 1894 @@ -35445,6 +36256,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 07 Class: Boss @@ -35477,6 +36289,7 @@ Body: WalkSpeed: 170 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 - Id: 1896 @@ -35504,6 +36317,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 - Id: 1897 @@ -35530,6 +36344,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -35551,6 +36366,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -35641,6 +36457,7 @@ Body: WalkSpeed: 150 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 03 Drops: @@ -35712,6 +36529,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 13 - Id: 1905 @@ -35735,6 +36553,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Boss - Id: 1906 @@ -35758,6 +36577,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -35785,6 +36605,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Boss - Id: 1908 @@ -35805,6 +36626,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Boss - Id: 1909 @@ -35823,6 +36645,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 288 DamageMotion: 384 Class: Guardian Modes: @@ -35848,6 +36671,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 288 DamageMotion: 384 Class: Guardian Modes: @@ -35873,6 +36697,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -35898,6 +36723,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -35923,6 +36749,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -35948,6 +36775,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -35973,6 +36801,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36009,6 +36838,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 540 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36040,6 +36870,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 540 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36092,6 +36923,7 @@ Body: WalkSpeed: 110 AttackDelay: 576 AttackMotion: 540 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Class: Boss @@ -36137,6 +36969,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 21 Class: Boss @@ -36180,6 +37013,7 @@ Body: WalkSpeed: 150 AttackDelay: 212 AttackMotion: 540 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 21 Class: Boss @@ -36225,6 +37059,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 540 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Class: Boss @@ -36266,6 +37101,7 @@ Body: WalkSpeed: 110 AttackDelay: 576 AttackMotion: 540 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36294,6 +37130,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 540 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36322,6 +37159,7 @@ Body: WalkSpeed: 150 AttackDelay: 212 AttackMotion: 540 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36350,6 +37188,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 540 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36377,6 +37216,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 21 Drops: @@ -36413,6 +37253,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Ai: 09 Modes: @@ -36446,6 +37287,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -36481,6 +37323,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -36526,6 +37369,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 21 Class: Boss @@ -36554,6 +37398,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -36576,6 +37421,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Class: Guardian @@ -36613,6 +37459,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 480 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -36634,6 +37481,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 0 DamageMotion: 576 Class: Guardian Modes: @@ -36660,6 +37508,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 0 DamageMotion: 576 Class: Guardian Modes: @@ -36686,6 +37535,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 0 DamageMotion: 576 Class: Guardian Modes: @@ -36719,6 +37569,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 - Id: 1938 @@ -37060,6 +37911,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 21 Class: Boss @@ -37089,6 +37941,7 @@ Body: WalkSpeed: 145 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 - Id: 1949 @@ -37158,6 +38011,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -37194,6 +38048,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -37230,6 +38085,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -37266,6 +38122,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 25 Class: Boss Modes: @@ -37335,6 +38192,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 504 Ai: 21 Class: Boss @@ -37378,6 +38236,7 @@ Body: ElementLevel: 4 AttackDelay: 140 AttackMotion: 540 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -37422,6 +38281,7 @@ Body: ElementLevel: 4 AttackDelay: 432 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -37448,6 +38308,7 @@ Body: ElementLevel: 4 AttackDelay: 2864 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -37474,6 +38335,7 @@ Body: ElementLevel: 4 AttackDelay: 1024 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -37500,6 +38362,7 @@ Body: ElementLevel: 4 AttackDelay: 2864 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -37525,6 +38388,7 @@ Body: WalkSpeed: 100 AttackDelay: 720 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 02 - Id: 1963 @@ -37554,6 +38418,7 @@ Body: WalkSpeed: 170 AttackDelay: 1728 AttackMotion: 816 + ClientAttackMotion: 240 DamageMotion: 1188 Ai: 21 - Id: 1964 @@ -37578,6 +38443,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Class: Boss Drops: @@ -37612,6 +38478,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 Class: Boss - Id: 1966 @@ -37640,6 +38507,7 @@ Body: WalkSpeed: 100 AttackDelay: 300 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 Class: Boss - Id: 1967 @@ -37669,6 +38537,7 @@ Body: WalkSpeed: 100 AttackDelay: 300 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 288 Class: Boss - Id: 1968 @@ -37697,6 +38566,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 108 DamageMotion: 384 Class: Boss Drops: @@ -37743,6 +38613,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Class: Boss Drops: @@ -37788,6 +38659,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Class: Boss Drops: @@ -37833,6 +38705,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Class: Boss Drops: @@ -37878,6 +38751,7 @@ Body: WalkSpeed: 400 AttackDelay: 2280 AttackMotion: 1080 + ClientAttackMotion: 288 DamageMotion: 864 Class: Boss Drops: @@ -37919,6 +38793,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Class: Boss Drops: @@ -37957,6 +38832,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 20 Modes: @@ -38007,6 +38883,7 @@ Body: WalkSpeed: 190 AttackDelay: 336 AttackMotion: 840 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Drops: @@ -38051,6 +38928,7 @@ Body: WalkSpeed: 200 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Drops: @@ -38098,6 +38976,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 20 Drops: @@ -38142,6 +39021,7 @@ Body: WalkSpeed: 250 AttackDelay: 1840 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 384 Ai: 20 Drops: @@ -38190,6 +39070,7 @@ Body: WalkSpeed: 180 AttackDelay: 580 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Drops: @@ -38235,6 +39116,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 648 + ClientAttackMotion: 360 DamageMotion: 300 Ai: 21 Class: Boss @@ -38281,6 +39163,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 21 - Id: 1982 @@ -38309,6 +39192,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 620 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 09 - Id: 1983 @@ -38337,6 +39221,7 @@ Body: WalkSpeed: 130 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 - Id: 1984 @@ -38366,6 +39251,7 @@ Body: WalkSpeed: 145 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 - Id: 1985 @@ -38392,6 +39278,7 @@ Body: WalkSpeed: 250 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 21 - Id: 1986 @@ -38423,6 +39310,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Drops: @@ -38470,6 +39358,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -38521,6 +39410,7 @@ Body: WalkSpeed: 1000 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 10 Drops: @@ -38567,6 +39457,7 @@ Body: WalkSpeed: 100 AttackDelay: 400 AttackMotion: 780 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 13 Drops: @@ -38615,6 +39506,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 660 + ClientAttackMotion: 300 DamageMotion: 588 Ai: 21 Class: Boss @@ -38662,6 +39554,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 960 + ClientAttackMotion: 780 DamageMotion: 360 Ai: 21 Class: Boss @@ -38709,6 +39602,7 @@ Body: WalkSpeed: 120 AttackDelay: 1000 AttackMotion: 624 + ClientAttackMotion: 192 DamageMotion: 300 Ai: 03 Drops: @@ -38758,6 +39652,7 @@ Body: WalkSpeed: 150 AttackDelay: 400 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 21 Drops: @@ -38804,6 +39699,7 @@ Body: WalkSpeed: 110 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 08 Modes: @@ -38855,6 +39751,7 @@ Body: WalkSpeed: 150 AttackDelay: 700 AttackMotion: 600 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 13 Drops: @@ -38938,6 +39835,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 - Id: 1998 @@ -38967,6 +39865,7 @@ Body: WalkSpeed: 100 AttackDelay: 400 AttackMotion: 780 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 13 - Id: 1999 @@ -38998,6 +39897,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -39336,6 +40236,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 - Id: 2009 @@ -39365,6 +40266,7 @@ Body: WalkSpeed: 100 AttackDelay: 414 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Drops: @@ -39397,6 +40299,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 960 + ClientAttackMotion: 1728 DamageMotion: 780 Class: Boss # - Id: 2011 @@ -39480,6 +40383,7 @@ Body: WalkSpeed: 250 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 420 DamageMotion: 504 Ai: 03 Drops: @@ -39521,6 +40425,7 @@ Body: WalkSpeed: 1000 AttackDelay: 24 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Drops: - Item: Piece_Of_Egg_Shell @@ -39553,6 +40458,7 @@ Body: WalkSpeed: 290 AttackDelay: 1426 AttackMotion: 600 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 13 Drops: @@ -39592,6 +40498,7 @@ Body: WalkSpeed: 230 AttackDelay: 504 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 09 Drops: @@ -39630,6 +40537,7 @@ Body: WalkSpeed: 150 AttackDelay: 792 AttackMotion: 540 + ClientAttackMotion: 420 DamageMotion: 420 Ai: 20 Drops: @@ -39667,6 +40575,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 420 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -39708,6 +40617,7 @@ Body: WalkSpeed: 290 AttackDelay: 504 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 13 Drops: @@ -39747,6 +40657,7 @@ Body: WalkSpeed: 240 AttackDelay: 576 AttackMotion: 660 + ClientAttackMotion: 300 DamageMotion: 420 Ai: 13 Drops: @@ -39782,6 +40693,7 @@ Body: WalkSpeed: 240 AttackDelay: 360 AttackMotion: 780 + ClientAttackMotion: 540 DamageMotion: 432 Ai: 05 Drops: @@ -39818,6 +40730,7 @@ Body: WalkSpeed: 150 AttackDelay: 1596 AttackMotion: 1620 + ClientAttackMotion: 576 DamageMotion: 864 Ai: 21 Class: Boss @@ -39871,6 +40784,7 @@ Body: WalkSpeed: 220 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 09 Modes: @@ -39920,6 +40834,7 @@ Body: WalkSpeed: 300 AttackDelay: 1008 AttackMotion: 1200 + ClientAttackMotion: 480 DamageMotion: 540 Ai: 20 Drops: @@ -40003,6 +40918,7 @@ Body: WalkSpeed: 230 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 21 Drops: @@ -40047,6 +40963,7 @@ Body: WalkSpeed: 220 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 21 Modes: @@ -40148,6 +41065,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Class: Boss @@ -40177,6 +41095,7 @@ Body: WalkSpeed: 250 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 21 Class: Boss @@ -40474,6 +41393,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 960 DamageMotion: 360 Ai: 10 Drops: @@ -40504,6 +41424,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -40534,6 +41455,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -40564,6 +41486,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -40594,6 +41517,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -40624,6 +41548,7 @@ Body: WalkSpeed: 150 AttackDelay: 400 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 21 Drops: @@ -40677,6 +41602,7 @@ Body: WalkSpeed: 300 AttackDelay: 1008 AttackMotion: 1200 + ClientAttackMotion: 480 DamageMotion: 540 Ai: 04 Modes: @@ -40868,6 +41794,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 648 DamageMotion: 480 Class: Boss # - Id: 2058 @@ -41129,6 +42056,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 240 DamageMotion: 576 Ai: 21 Class: Boss @@ -41182,6 +42110,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 17 Drops: @@ -41226,6 +42155,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 864 Ai: 04 Drops: @@ -41270,6 +42200,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 04 Modes: @@ -41316,6 +42247,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 1248 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 Drops: @@ -41356,6 +42288,7 @@ Body: WalkSpeed: 155 AttackDelay: 960 AttackMotion: 1440 + ClientAttackMotion: 300 DamageMotion: 960 Ai: 03 Drops: @@ -41396,6 +42329,7 @@ Body: WalkSpeed: 250 AttackDelay: 528 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 07 Drops: @@ -41457,6 +42391,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Modes: @@ -41486,6 +42421,7 @@ Body: WalkSpeed: 190 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 20 Modes: @@ -41515,6 +42451,7 @@ Body: WalkSpeed: 155 AttackDelay: 1306 AttackMotion: 1056 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Modes: @@ -41589,6 +42526,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 600 Class: Guardian - Id: 2082 @@ -41616,5 +42554,6 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 864 Ai: 20 diff --git a/db/pre-re/pet_db.yml b/db/pre-re/pet_db.yml index d63a39c98a..64e2ddaf1b 100644 --- a/db/pre-re/pet_db.yml +++ b/db/pre-re/pet_db.yml @@ -866,3 +866,14 @@ Body: bonus2 bSubEle,Ele_Fire,2; bonus2 bAddEle,Ele_Fire,2; } + - Mob: E_HYDRA + TameItem: Leaf_Cat_Ball + EggItem: Mystic_Leaf_Cat_Ball + Fullness: 0 + HungryDelay: 0 + IntimacyStart: 0 + IntimacyFed: 0 + IntimacyOverfed: 0 + IntimacyOwnerDie: 0 + CaptureRate: 50 + SpecialPerformance: false diff --git a/db/pre-re/skill_db.yml b/db/pre-re/skill_db.yml index 33cb72990d..c3f046b8e7 100644 --- a/db/pre-re/skill_db.yml +++ b/db/pre-re/skill_db.yml @@ -7359,7 +7359,7 @@ Body: Time: 1500 - Level: 5 Time: 1000 - Duration2: 300000 + Duration1: 300000 Requires: SpCost: 1 Weapon: @@ -8538,6 +8538,7 @@ Body: HitCount: 1 SplashArea: -1 AfterCastActDelay: 4000 + Duration1: 15000 Duration2: 12000 Requires: SpCost: @@ -8829,6 +8830,7 @@ Body: HitCount: 1 SplashArea: -1 AfterCastActDelay: 4000 + Duration1: 5000 Duration2: 5000 Requires: SpCost: diff --git a/db/re/item_combos.yml b/db/re/item_combos.yml index 698ce750b7..8a52183c33 100644 --- a/db/re/item_combos.yml +++ b/db/re/item_combos.yml @@ -853,8 +853,8 @@ Body: bonus bAspd,1; - Combos: - Combo: - - Cursed_Lyre - - Cursed_Star + - Cursed_Lyre # 1741 + - Cursed_Star # 2748 Script: | bonus bBaseAtk,25; bonus3 bAddEff,Eff_Curse,200,ATF_WEAPON|ATF_LONG|ATF_TARGET; @@ -1511,11 +1511,17 @@ Body: bonus bMaxHP,150; - Combos: - Combo: - - Ninja_Suit - - Shinobi's_Sash + - Ninja_Suit # 2337 + - Shinobi's_Sash # 2654 - Combo: - - Ninja_Suit_ - - Shinobi's_Sash + - Ninja_Suit_ # 2359 + - Shinobi's_Sash # 2654 + - Combo: + - Ninja_Suit # 2337 + - Shinobi's_Sash_S # 28350 + - Combo: + - Ninja_Suit_ # 2359 + - Shinobi's_Sash_S # 28350 Script: | bonus bUseSPrate,-20; bonus bMaxHP,300; @@ -2844,8 +2850,17 @@ Body: bonus bHealPower,5; - Combos: - Combo: - - Icarus_Wing - - Bowman_Scarf + - Icarus_Wing # 2726 + - Bowman_Scarf # 2727 + - Combo: + - Icarus_Wing # 2726 + - Bowman_Scarf_S # 28348 + - Combo: + - Bowman_Scarf # 2727 + - Icarus_Wing_S # 28347 + - Combo: + - Icarus_Wing_S # 28347 + - Bowman_Scarf_S # 28348 Script: | bonus bUseSPrate,-25; - Combos: @@ -13198,17 +13213,32 @@ Body: bonus2 bSubRace,RC_Undead,1; - Combos: - Combo: - - Mob_Scarf - - Sunglasses + - Sunglasses # 2201 + - Mob_Scarf # 28502 - Combo: - - Mob_Scarf - - Sunglasses_ + - Sunglasses_ # 2202 + - Mob_Scarf # 28502 - Combo: - - Mob_Scarf - - Glasses + - Glasses # 2203 + - Mob_Scarf # 28502 - Combo: - - Mob_Scarf - - Glasses_ + - Glasses_ # 2204 + - Mob_Scarf # 28502 + - Combo: + - Sunglasses # 2201 + - Comp_Mob_Scarf # 420089 + - Combo: + - Sunglasses_ # 2202 + - Comp_Mob_Scarf # 420089 + - Combo: + - Glasses # 2203 + - Comp_Mob_Scarf # 420089 + - Combo: + - Glasses_ # 2204 + - Comp_Mob_Scarf # 420089 + - Combo: + - Comp_Sunglasses_ # 410299 + - Comp_Mob_Scarf # 420089 Script: | .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; @@ -20822,25 +20852,6 @@ Body: bonus bMdef,3*.@r_shoes; bonus bMatk,5*.@r; } - - Combos: - - Combo: - - Hollow_Shoes - - Berzebub_Card - Script: | - .@r = getrefine(); - skill "PR_MAGNUS",10; - bonus2 bMagicAddRace,RC_Undead,30; - bonus2 bMagicAddRace,RC_Demon,30; - bonus2 bMagicAddEle,Ele_Dark,30; - bonus2 bMagicAddEle,Ele_Undead,30; - if (BaseLevel >= 100) { - bonus bMatk,15*.@r; - bonus bVariableCastrate,-7*.@r; - } - else { - bonus bMatk,5*.@r; - bonus bVariableCastrate,-2*.@r; - } - Combos: - Combo: - Astraea_Ring @@ -21716,7 +21727,7 @@ Body: if (.@sum >= 27) { bonus3 bAutoSpell,"HW_NAPALMVULCAN",5,80; } - else if (.@sum >= 27) { + else if (.@sum >= 21) { bonus3 bAutoSpell,"HW_NAPALMVULCAN",3,40; } - Combos: @@ -21730,7 +21741,7 @@ Body: if (.@sum >= 27) { bonus3 bAutoSpell,"AS_SONICBLOW",10,80; } - else if (.@sum >= 27) { + else if (.@sum >= 21) { bonus3 bAutoSpell,"AS_SONICBLOW",7,40; } - Combos: @@ -21740,10 +21751,10 @@ Body: Script: | .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bMatkRate,2; - if (.@sum >= 27) { + if (.@sum >= 20) { bonus3 bAutoSpell,"WL_JACKFROST",max(getskilllv("WL_JACKFROST"),4),80; } - else if (.@sum >= 27) { + else if (.@sum >= 18) { bonus3 bAutoSpell,"WL_JACKFROST",max(getskilllv("WL_JACKFROST"),2),40; } - Combos: @@ -26695,8 +26706,9 @@ Body: - Hollow_Shoes # 22212 Script: | .@eq = getequiprefinerycnt(EQI_SHOES); + bonus2 bMagicAddRace,RC_Demon,10; + bonus2 bMagicAddRace,RC_Undead,10; bonus2 bMagicAddEle,Ele_Dark,10; - bonus2 bMagicAddEle,Ele_Ghost,10; bonus2 bMagicAddEle,Ele_Undead,10; if (BaseLevel <= 99) { bonus bMatk,2*.@eq; @@ -26706,14 +26718,18 @@ Body: bonus bVariableCastrate,-(2*.@eq); } - Combos: + - Combo: + - Berzebub_Card # 4145 + - Hollow_Shoes # 22212 - Combo: - Sealed_Berz_Card_J # 311071 - Hollow_Shoes_ # 470113 Script: | .@eq = getequiprefinerycnt(EQI_SHOES); skill "PR_MAGNUS",10; + bonus2 bMagicAddRace,RC_Demon,30; + bonus2 bMagicAddRace,RC_Undead,30; bonus2 bMagicAddEle,Ele_Dark,30; - bonus2 bMagicAddEle,Ele_Ghost,30; bonus2 bMagicAddEle,Ele_Undead,30; if (BaseLevel <= 99) { bonus bMatk,5*.@eq; @@ -26738,13 +26754,14 @@ Body: bonus bVariableCastrate,10; - Combos: - Combo: - - Goddess_of_Abundance # 311073 + - Berzebub_Card # 4145 - Sealed_Berz_Card_J # 311071 - Hollow_Shoes # 22212 Script: | .@eq = getequiprefinerycnt(EQI_SHOES); + bonus2 bMagicAddRace,RC_Demon,-10; + bonus2 bMagicAddRace,RC_Undead,-10; bonus2 bMagicAddEle,Ele_Dark,-10; - bonus2 bMagicAddEle,Ele_Ghost,-10; bonus2 bMagicAddEle,Ele_Undead,-10; if (BaseLevel <= 99) { bonus bMatk,-2*.@eq; @@ -26755,14 +26772,15 @@ Body: } - Combos: - Combo: - - Goddess_of_Abundance # 311073 + - Berzebub_Card # 4145 - Sealed_Berz_Card_J # 311071 - Hollow_Shoes_ # 470113 Script: | .@eq = getequiprefinerycnt(EQI_SHOES); skill "PR_MAGNUS",10; + bonus2 bMagicAddRace,RC_Demon,-30; + bonus2 bMagicAddRace,RC_Undead,-30; bonus2 bMagicAddEle,Ele_Dark,-30; - bonus2 bMagicAddEle,Ele_Ghost,-30; bonus2 bMagicAddEle,Ele_Undead,-30; if (BaseLevel <= 99) { bonus bMatk,-5*.@eq; @@ -26771,6 +26789,7 @@ Body: bonus bMatk,-15*.@eq; bonus bVariableCastrate,7*.@eq; } + /*Todo : Remove Skill PR_MAGNUS (When Equipped 4145 Set 311071 & 470113 Effect Does Not Activate)*/ - Combos: - Combo: - Fallen_Bishop_Card # 4441 @@ -27111,13 +27130,13 @@ Body: bonus2 bAddRace,RC_Player_Doram,-15; - Combos: - Combo: - - aegis_490221 # 490221 + - Record_Swordsman_TH # 490221 - Old_Rune_Circlet # 18971 Script: | bonus bLongAtkRate,15; - Combos: - Combo: - - aegis_490221 # 490221 + - Record_Swordsman_TH # 490221 - Old_Protect_Of_Crown # 18983 Script: | bonus2 bSkillCooldown,"LG_EARTHDRIVE",-2200; @@ -27132,14 +27151,14 @@ Body: bonus bCritAtkRate,5; - Combos: - Combo: - - aegis_490229 # 490229 + - Record_Thief_TH # 490229 - Old_Circlet_Of_Bone # 18982 Script: | bonus2 bIgnoreDefRaceRate,RC_All,15; bonus2 bAddRace,RC_All,10; - Combos: - Combo: - - aegis_490229 # 490229 + - Record_Thief_TH # 490229 - Old_Shadow_Handicraft # 18975 Script: | autobonus3 "{}",30,100,"SC_TRIANGLESHOT","{ sc_start SC_UNLIMIT,5000,3; sc_start SC_SPCOST_RATE,5000,-100; }"; @@ -27778,21 +27797,21 @@ Body: - Combos: - Combo: - Old_Driver_Band_R # 18973 - - aegis_490239 # 490239 + - Record_Merchant_TH # 490239 Script: | bonus2 bSkillCooldown,"NC_AXEBOOMERANG",-500; bonus2 bAddSize,Size_All,10; - Combos: - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490239 # 490239 + - Record_Merchant_TH # 490239 Script: | bonus2 bVariableCastrate,"NC_ARMSCANNON",-50; bonus bDelayrate,-5; - Combos: - Combo: - Old_Midas_Whisper # 18977 - - aegis_490239 # 490239 + - Record_Merchant_TH # 490239 Script: | bonus2 bAddSize,Size_All,10; bonus2 bSkillCooldown,"GN_SPORE_EXPLOSION",-2000; @@ -28365,7 +28384,7 @@ Body: bonus bVariableCastrate,-10; - Combos: - Combo: - - aegis_490220 # 490220 + - Hero_Token_HN # 490220 - Blessed_Knife_LT # 510072 Script: | bonus2 bAddSize,Size_All,15; @@ -28380,7 +28399,7 @@ Body: } - Combos: - Combo: - - aegis_490220 # 490220 + - Hero_Token_HN # 490220 - Freedom_Stick_LT # 550082 Script: | bonus2 bMagicAddSize,Size_All,15; @@ -29990,13 +30009,13 @@ Body: skill "CR_AUTOGUARD",10; - Combos: - Combo: - - aegis_480188 # 480188 + - Valkyrie_Curse_blight # 480188 - Heros_TriumphantSong # 311074 Script: | bonus bAspdRate,20; - Combos: - Combo: - - aegis_480188 # 480188 + - Valkyrie_Curse_blight # 480188 - Illusion_Box_Garden # 311075 Script: | bonus bDelayrate,-25; @@ -30985,12 +31004,12 @@ Body: bonus2 bIgnoreDefRaceRate,RC_All,5; bonus2 bIgnoreMdefRaceRate,RC_All,5; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-5; - bonus2 bIgnoreMdefRaceRate,RCRC_Player_Doram_All,-5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-5; if (.@r >= 12) { bonus2 bIgnoreDefRaceRate,RC_All,10; bonus2 bIgnoreMdefRaceRate,RC_All,10; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-10; - bonus2 bIgnoreMdefRaceRate,RCRC_Player_Doram_All,-10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10; } } - Combos: @@ -31230,7 +31249,7 @@ Body: Script: | bonus2 bMagicAtkEle,Ele_Dark,20; bonus2 bMagicAtkEle,Ele_Undead,20; - bonus5 bAutoSpell,"NPC_CRITICALWOUND",1,10,BF_MAGIC,1; + bonus5 bAutoSpell,"NPC_WIDECRITICALWOUND",1,10,BF_MAGIC,1; - Combos: - Combo: - aegis_311883 # 311883 @@ -31252,7 +31271,7 @@ Body: - Redpepper_Card # 300079 Script: | bonus bMaxHPrate,15; - bonus2 bSubEle,Ele_Wind,15; + bonus2 bSubEle,Ele_Wind,10; - Combos: - Combo: - aegis_311883 # 311883 @@ -32275,38 +32294,38 @@ Body: } - Combos: - Combo: - - aegis_490290 # 490290 + - Ameretat # 490290 - S_Str # 4853 Script: | bonus bAtkRate,30; - Combos: - Combo: - - aegis_490290 # 490290 + - Ameretat # 490290 - S_Agi # 4854 Script: | bonus bAspdRate,15; - Combos: - Combo: - - aegis_490290 # 490290 + - Ameretat # 490290 - S_Vital # 4855 Script: | bonus bMaxHPrate,25; bonus bMaxSPrate,25; - Combos: - Combo: - - aegis_490290 # 490290 + - Ameretat # 490290 - S_Int # 4856 Script: | bonus bMatkRate,30; - Combos: - Combo: - - aegis_490290 # 490290 + - Ameretat # 490290 - S_Dex # 4857 Script: | bonus bPerfectHitAddRate,25; - Combos: - Combo: - - aegis_490290 # 490290 + - Ameretat # 490290 - S_Luck # 4858 Script: | bonus bDelayrate,-30; @@ -37639,7 +37658,7 @@ Body: bonus2 bSkillCooldown,"AG_ROCK_DOWN",-300; - Combos: - Combo: - - aegis_490340 # 490340 + - Illegal_Tip # 490340 - aegis_311883 # 311883 Script: | bonus bAtkRate,30; @@ -39496,10 +39515,10 @@ Body: - Combos: - Combo: - Old_Mitra # 18972 - - aegis_490334 # 490334 + - Record_Acol_TH # 490334 - Combo: - Old_Mitra # 18972 - - aegis_490335 # 490335 + - Comp_Record_Acol_TH # 490335 Script: | skill "WL_HELLINFERNO",5; bonus2 bSkillAtk,"AB_ADORAMUS",-200; @@ -39509,10 +39528,10 @@ Body: - Combos: - Combo: - Old_Blazing_Soul # 18979 - - aegis_490334 # 490334 + - Record_Acol_TH # 490334 - Combo: - Old_Blazing_Soul # 18979 - - aegis_490335 # 490335 + - Comp_Record_Acol_TH # 490335 Script: | bonus bLongAtkRate,15; bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",30; @@ -39520,10 +39539,10 @@ Body: - Combos: - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490288 # 490288 + - Record_Mage_TH # 490288 - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490289 # 490289 + - Comp_Record_Mage_TH # 490289 Script: | bonus bFixedCast,-300; bonus2 bMagicAtkEle,Ele_Neutral,15; @@ -39531,31 +39550,31 @@ Body: - Combos: - Combo: - Old_Wind_Whisper # 18980 - - aegis_490288 # 490288 + - Record_Mage_TH # 490288 - Combo: - Old_Wind_Whisper # 18980 - - aegis_490289 # 490289 + - Comp_Record_Mage_TH # 490289 Script: | bonus5 bAutoSpell,"HW_MAGICPOWER",5,50,BF_MAGIC,0; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",30; - Combos: - Combo: - Old_Driver_Band_R # 18973 - - aegis_490240 # 490240 + - Comp_Record_Merchant_TH # 490240 Script: | bonus2 bSkillCooldown,"NC_AXEBOOMERANG",-500; bonus2 bAddSize,Size_All,10; - Combos: - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490240 # 490240 + - Comp_Record_Merchant_TH # 490240 Script: | bonus2 bVariableCastrate,"NC_ARMSCANNON",-50; bonus bDelayrate,-5; - Combos: - Combo: - Old_Midas_Whisper # 18977 - - aegis_490240 # 490240 + - Comp_Record_Merchant_TH # 490240 Script: | bonus2 bAddSize,Size_All,10; bonus2 bSkillCooldown,"GN_SPORE_EXPLOSION",-2000; @@ -39563,46 +39582,46 @@ Body: - Combos: - Combo: - Old_Rune_Circlet # 18971 - - aegis_490222 # 490222 + - Comp_Record_Swordman_TH # 490222 Script: | bonus bLongAtkRate,15; - Combos: - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490222 # 490222 + - Comp_Record_Swordman_TH # 490222 Script: | bonus2 bSkillCooldown,"LG_EARTHDRIVE",-2200; - Combos: - Combo: - Old_Rune_Circlet # 18971 - - aegis_490376 # 490376 + - Record_Swordsman2_TH # 490376 - Combo: - Old_Rune_Circlet # 18971 - - aegis_490377 # 490377 + - Comp_Record_Swords2_TH # 490377 Script: | bonus bLongAtkRate,3*getequiprefinerycnt(EQI_HEAD_TOP); - Combos: - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490376 # 490376 + - Record_Swordsman2_TH # 490376 - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490377 # 490377 + - Comp_Record_Swords2_TH # 490377 Script: | bonus bShortAtkRate,3*getequiprefinerycnt(EQI_HEAD_TOP); - Combos: - Combo: - - aegis_490221 # 490221 - - aegis_490376 # 490376 + - Record_Swordsman_TH # 490221 + - Record_Swordsman2_TH # 490376 - Combo: - - aegis_490222 # 490222 - - aegis_490376 # 490376 + - Comp_Record_Swordman_TH # 490222 + - Record_Swordsman2_TH # 490376 - Combo: - - aegis_490221 # 490221 - - aegis_490377 # 490377 + - Record_Swordsman_TH # 490221 + - Comp_Record_Swords2_TH # 490377 - Combo: - - aegis_490222 # 490222 - - aegis_490377 # 490377 + - Comp_Record_Swordman_TH # 490222 + - Comp_Record_Swords2_TH # 490377 Script: | bonus bHit,40; bonus bDelayrate,-16; @@ -39611,20 +39630,20 @@ Body: - Combos: - Combo: - Old_Rune_Circlet # 18971 - - aegis_490221 # 490221 - - aegis_490376 # 490376 + - Record_Swordsman_TH # 490221 + - Record_Swordsman2_TH # 490376 - Combo: - Old_Rune_Circlet # 18971 - - aegis_490222 # 490222 - - aegis_490376 # 490376 + - Comp_Record_Swordman_TH # 490222 + - Record_Swordsman2_TH # 490376 - Combo: - Old_Rune_Circlet # 18971 - - aegis_490221 # 490221 - - aegis_490377 # 490377 + - Record_Swordsman_TH # 490221 + - Comp_Record_Swords2_TH # 490377 - Combo: - Old_Rune_Circlet # 18971 - - aegis_490222 # 490222 - - aegis_490377 # 490377 + - Comp_Record_Swordman_TH # 490222 + - Comp_Record_Swords2_TH # 490377 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,6*(.@r/3); @@ -39632,20 +39651,20 @@ Body: - Combos: - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490221 # 490221 - - aegis_490376 # 490376 + - Record_Swordsman_TH # 490221 + - Record_Swordsman2_TH # 490376 - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490222 # 490222 - - aegis_490376 # 490376 + - Comp_Record_Swordman_TH # 490222 + - Record_Swordsman2_TH # 490376 - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490221 # 490221 - - aegis_490377 # 490377 + - Record_Swordsman_TH # 490221 + - Comp_Record_Swords2_TH # 490377 - Combo: - Old_Protect_Of_Crown # 18983 - - aegis_490222 # 490222 - - aegis_490377 # 490377 + - Comp_Record_Swordman_TH # 490222 + - Comp_Record_Swords2_TH # 490377 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,6*(.@r/3); @@ -39653,49 +39672,49 @@ Body: - Combos: - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490231 # 490231 + - Comp_Record_Thief_TH # 490231 Script: | bonus2 bIgnoreDefRaceRate,RC_All,15; bonus2 bAddRace,RC_All,10; - Combos: - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490231 # 490231 + - Comp_Record_Thief_TH # 490231 Script: | autobonus3 "{ bonus4 bAutoSpellOnSkill,\"SC_TRIANGLESHOT\",\"RA_UNLIMIT\",3,1000; bonus bUseSPrate,100; }",30,5000,"SC_TRIANGLESHOT"; - Combos: - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490394 # 490394 + - Record_Thief2_TH # 490394 - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490395 # 490395 + - Comp_Record_Thief2_TH # 490395 Script: | bonus2 bSkillAtk,"ASC_METEORASSAULT",6*getequiprefinerycnt(EQI_HEAD_TOP); - Combos: - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490394 # 490394 + - Record_Thief2_TH # 490394 - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490395 # 490395 + - Comp_Record_Thief2_TH # 490395 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bLongAtkRate,2*.@r; bonus bDelayrate,.@r; - Combos: - Combo: - - aegis_490229 # 490229 - - aegis_490394 # 490394 + - Record_Thief_TH # 490229 + - Record_Thief2_TH # 490394 - Combo: - - aegis_490231 # 490231 - - aegis_490394 # 490394 + - Comp_Record_Thief_TH # 490231 + - Record_Thief2_TH # 490394 - Combo: - - aegis_490229 # 490229 - - aegis_490395 # 490395 + - Record_Thief_TH # 490229 + - Comp_Record_Thief2_TH # 490395 - Combo: - - aegis_490231 # 490231 - - aegis_490395 # 490395 + - Comp_Record_Thief_TH # 490231 + - Comp_Record_Thief2_TH # 490395 Script: | if (eaclass()&EAJL_THIRD && BaseJob == Job_Assassin) { bonus2 bIgnoreDefRaceRate,RC_All,35; @@ -39709,20 +39728,20 @@ Body: - Combos: - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490229 # 490229 - - aegis_490394 # 490394 + - Record_Thief_TH # 490229 + - Record_Thief2_TH # 490394 - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490231 # 490231 - - aegis_490394 # 490394 + - Comp_Record_Thief_TH # 490231 + - Record_Thief2_TH # 490394 - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490229 # 490229 - - aegis_490395 # 490395 + - Record_Thief_TH # 490229 + - Comp_Record_Thief2_TH # 490395 - Combo: - Old_Circlet_Of_Bone # 18982 - - aegis_490231 # 490231 - - aegis_490395 # 490395 + - Comp_Record_Thief_TH # 490231 + - Comp_Record_Thief2_TH # 490395 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,3*(.@r/3); @@ -39730,20 +39749,20 @@ Body: - Combos: - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490229 # 490229 - - aegis_490394 # 490394 + - Record_Thief_TH # 490229 + - Record_Thief2_TH # 490394 - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490231 # 490231 - - aegis_490394 # 490394 + - Comp_Record_Thief_TH # 490231 + - Record_Thief2_TH # 490394 - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490229 # 490229 - - aegis_490395 # 490395 + - Record_Thief_TH # 490229 + - Comp_Record_Thief2_TH # 490395 - Combo: - Old_Shadow_Handicraft # 18975 - - aegis_490231 # 490231 - - aegis_490395 # 490395 + - Comp_Record_Thief_TH # 490231 + - Comp_Record_Thief2_TH # 490395 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,3*(.@r/3); @@ -39751,21 +39770,21 @@ Body: - Combos: - Combo: - Comp_Avenger # 1350 - - aegis_490390 # 490390 + - Toy_Ring_TH # 490390 - Combo: - Avenger # 28130 - - aegis_490390 # 490390 + - Toy_Ring_TH # 490390 - Combo: - - aegis_490390 # 490390 + - Toy_Ring_TH # 490390 - Up_Avenger # 620004 - Combo: - Comp_Avenger # 1350 - - aegis_490391 # 490391 + - Comp_Toy_Ring_TH # 490391 - Combo: - Avenger # 28130 - - aegis_490391 # 490391 + - Comp_Toy_Ring_TH # 490391 - Combo: - - aegis_490391 # 490391 + - Comp_Toy_Ring_TH # 490391 - Up_Avenger # 620004 Script: | .@r = getequiprefinerycnt(EQI_HAND_R); @@ -39776,16 +39795,16 @@ Body: } - Combos: - Combo: - - aegis_490390 # 490390 + - Toy_Ring_TH # 490390 - Slate_Sword # 500004 - Combo: - - aegis_490390 # 490390 + - Toy_Ring_TH # 490390 - Up_Slate_Sword # 500014 - Combo: - - aegis_490391 # 490391 + - Comp_Toy_Ring_TH # 490391 - Slate_Sword # 500004 - Combo: - - aegis_490391 # 490391 + - Comp_Toy_Ring_TH # 490391 - Up_Slate_Sword # 500014 Script: | .@r = getequiprefinerycnt(EQI_HAND_R); @@ -43874,13 +43893,13 @@ Body: - Combos: - Combo: - aegis_311439 # 311439 - - aegis_480319 # 480319 + - Divine_Phoenix # 480319 Script: | bonus bDelayrate,-25; - Combos: - Combo: - aegis_311883 # 311883 - - aegis_480319 # 480319 + - Divine_Phoenix # 480319 Script: | bonus bAspdRate,20; - Combos: @@ -44098,10 +44117,10 @@ Body: - Combos: - Combo: - Old_Camo_RabbitHood # 18984 - - aegis_490400 # 490400 + - Record_Archer_TH # 490400 - Combo: - Old_Camo_RabbitHood # 18984 - - aegis_490401 # 490401 + - Comp_Record_Archer_TH # 490401 Script: | bonus bCritAtkRate,15; bonus2 bSkillAtk,"SN_SHARPSHOOTING",30; @@ -44110,16 +44129,16 @@ Body: - Combos: - Combo: - Old_Minstrel_Song_Hat # 18976 - - aegis_490400 # 490400 + - Record_Archer_TH # 490400 - Combo: - Old_Dying_Swan # 18981 - - aegis_490400 # 490400 + - Record_Archer_TH # 490400 - Combo: - Old_Minstrel_Song_Hat # 18976 - - aegis_490401 # 490401 + - Comp_Record_Archer_TH # 490401 - Combo: - Old_Dying_Swan # 18981 - - aegis_490401 # 490401 + - Comp_Record_Archer_TH # 490401 Script: | bonus2 bAddSize,Size_All,15; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",30; @@ -44433,20 +44452,20 @@ Body: - Combos: - Combo: - Old_Driver_Band_R # 18973 - - aegis_490411 # 490411 + - Record_Merchant2_TH # 490411 - Combo: - Old_Driver_Band_R # 18973 - - aegis_490412 # 490412 + - Comp_Record_Merch2_TH # 490412 Script: | bonus2 bSkillCooldown,"NC_AXEBOOMERANG",-2000; bonus bLongAtkRate,2*getequiprefinerycnt(EQI_HEAD_TOP); - Combos: - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490411 # 490411 + - Record_Merchant2_TH # 490411 - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490412 # 490412 + - Comp_Record_Merch2_TH # 490412 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bSkillCooldown,"NC_ARMSCANNON",-300; @@ -44455,26 +44474,26 @@ Body: - Combos: - Combo: - Old_Midas_Whisper # 18977 - - aegis_490411 # 490411 + - Record_Merchant2_TH # 490411 - Combo: - Old_Midas_Whisper # 18977 - - aegis_490412 # 490412 + - Comp_Record_Merch2_TH # 490412 Script: | bonus2 bSkillCooldown,"GN_SPORE_EXPLOSION",-500; bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",3*getequiprefinerycnt(EQI_HEAD_TOP); - Combos: - Combo: - - aegis_490411 # 490411 - - aegis_490239 # 490239 + - Record_Merchant2_TH # 490411 + - Record_Merchant_TH # 490239 - Combo: - - aegis_490411 # 490411 - - aegis_490240 # 490240 + - Record_Merchant2_TH # 490411 + - Comp_Record_Merchant_TH # 490240 - Combo: - - aegis_490412 # 490412 - - aegis_490239 # 490239 + - Comp_Record_Merch2_TH # 490412 + - Record_Merchant_TH # 490239 - Combo: - - aegis_490412 # 490412 - - aegis_490240 # 490240 + - Comp_Record_Merch2_TH # 490412 + - Comp_Record_Merchant_TH # 490240 Script: | if (eaclass()&EAJL_THIRD && BaseJob == Job_Blacksmith) { bonus2 bVariableCastrate,"NC_ARMSCANNON",-50; @@ -44487,20 +44506,20 @@ Body: - Combos: - Combo: - Old_Driver_Band_R # 18973 - - aegis_490411 # 490411 - - aegis_490239 # 490239 + - Record_Merchant2_TH # 490411 + - Record_Merchant_TH # 490239 - Combo: - Old_Driver_Band_R # 18973 - - aegis_490411 # 490411 - - aegis_490240 # 490240 + - Record_Merchant2_TH # 490411 + - Comp_Record_Merchant_TH # 490240 - Combo: - Old_Driver_Band_R # 18973 - - aegis_490412 # 490412 - - aegis_490239 # 490239 + - Comp_Record_Merch2_TH # 490412 + - Record_Merchant_TH # 490239 - Combo: - Old_Driver_Band_R # 18973 - - aegis_490412 # 490412 - - aegis_490240 # 490240 + - Comp_Record_Merch2_TH # 490412 + - Comp_Record_Merchant_TH # 490240 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,3*(.@r/3); @@ -44508,20 +44527,20 @@ Body: - Combos: - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490411 # 490411 - - aegis_490239 # 490239 + - Record_Merchant2_TH # 490411 + - Record_Merchant_TH # 490239 - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490411 # 490411 - - aegis_490240 # 490240 + - Record_Merchant2_TH # 490411 + - Comp_Record_Merchant_TH # 490240 - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490412 # 490412 - - aegis_490239 # 490239 + - Comp_Record_Merch2_TH # 490412 + - Record_Merchant_TH # 490239 - Combo: - Old_Driver_Band_Y # 18974 - - aegis_490412 # 490412 - - aegis_490240 # 490240 + - Comp_Record_Merch2_TH # 490412 + - Comp_Record_Merchant_TH # 490240 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,3*(.@r/3); @@ -44529,20 +44548,20 @@ Body: - Combos: - Combo: - Old_Midas_Whisper # 18977 - - aegis_490411 # 490411 - - aegis_490239 # 490239 + - Record_Merchant2_TH # 490411 + - Record_Merchant_TH # 490239 - Combo: - Old_Midas_Whisper # 18977 - - aegis_490411 # 490411 - - aegis_490240 # 490240 + - Record_Merchant2_TH # 490411 + - Comp_Record_Merchant_TH # 490240 - Combo: - Old_Midas_Whisper # 18977 - - aegis_490412 # 490412 - - aegis_490239 # 490239 + - Comp_Record_Merch2_TH # 490412 + - Record_Merchant_TH # 490239 - Combo: - Old_Midas_Whisper # 18977 - - aegis_490412 # 490412 - - aegis_490240 # 490240 + - Comp_Record_Merch2_TH # 490412 + - Comp_Record_Merchant_TH # 490240 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAtkRate,3*(.@r/3); @@ -45925,11 +45944,11 @@ Body: - Combo: - Old_Rune_Circlet # 18971 - aegis_28977 # 28977 - - aegis_490221 # 490221 + - Record_Swordsman_TH # 490221 - Combo: - Old_Rune_Circlet # 18971 - aegis_28977 # 28977 - - aegis_490222 # 490222 + - Comp_Record_Swordman_TH # 490222 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP)+getequiprefinerycnt(EQI_HAND_L); if (getskilllv("RK_HUNDREDSPEAR") == 10) @@ -45946,11 +45965,11 @@ Body: - Combo: - Old_Protect_Of_Crown # 18983 - aegis_28977 # 28977 - - aegis_490221 # 490221 + - Record_Swordsman_TH # 490221 - Combo: - Old_Protect_Of_Crown # 18983 - aegis_28977 # 28977 - - aegis_490222 # 490222 + - Comp_Record_Swordman_TH # 490222 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP)+getequiprefinerycnt(EQI_HAND_L); if (getskilllv("LG_SHIELDPRESS") == 10) @@ -46115,10 +46134,10 @@ Body: - Combos: - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490418 # 490418 + - Record_Mage2_TH # 490418 - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490419 # 490419 + - Comp_Record_Mage2_TH # 490419 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bMagicAtkEle,Ele_Fire,2*.@r; @@ -46126,27 +46145,27 @@ Body: - Combos: - Combo: - Old_Wind_Whisper # 18980 - - aegis_490418 # 490418 + - Record_Mage2_TH # 490418 - Combo: - Old_Wind_Whisper # 18980 - - aegis_490419 # 490419 + - Comp_Record_Mage2_TH # 490419 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bMagicAtkEle,Ele_Neutral,2*.@r; bonus2 bMagicAtkEle,Ele_Wind,2*.@r; - Combos: - Combo: - - aegis_490288 # 490288 - - aegis_490418 # 490418 + - Record_Mage_TH # 490288 + - Record_Mage2_TH # 490418 - Combo: - - aegis_490289 # 490289 - - aegis_490418 # 490418 + - Comp_Record_Mage_TH # 490289 + - Record_Mage2_TH # 490418 - Combo: - - aegis_490288 # 490288 - - aegis_490419 # 490419 + - Record_Mage_TH # 490288 + - Comp_Record_Mage2_TH # 490419 - Combo: - - aegis_490289 # 490289 - - aegis_490419 # 490419 + - Comp_Record_Mage_TH # 490289 + - Comp_Record_Mage2_TH # 490419 Script: | bonus2 bIgnoreDefRaceRate,RC_All,50; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50; @@ -46172,20 +46191,20 @@ Body: - Combos: - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490288 # 490288 - - aegis_490418 # 490418 + - Record_Mage_TH # 490288 + - Record_Mage2_TH # 490418 - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490289 # 490289 - - aegis_490418 # 490418 + - Comp_Record_Mage_TH # 490289 + - Record_Mage2_TH # 490418 - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490288 # 490288 - - aegis_490419 # 490419 + - Record_Mage_TH # 490288 + - Comp_Record_Mage2_TH # 490419 - Combo: - Old_Magic_Stone_Hat # 18978 - - aegis_490289 # 490289 - - aegis_490419 # 490419 + - Comp_Record_Mage_TH # 490289 + - Comp_Record_Mage2_TH # 490419 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bMagicAddRace,RC_All,3*(.@r/3); @@ -46193,20 +46212,20 @@ Body: - Combos: - Combo: - Old_Wind_Whisper # 18980 - - aegis_490288 # 490288 - - aegis_490418 # 490418 + - Record_Mage_TH # 490288 + - Record_Mage2_TH # 490418 - Combo: - Old_Wind_Whisper # 18980 - - aegis_490289 # 490289 - - aegis_490418 # 490418 + - Comp_Record_Mage_TH # 490289 + - Record_Mage2_TH # 490418 - Combo: - Old_Wind_Whisper # 18980 - - aegis_490288 # 490288 - - aegis_490419 # 490419 + - Record_Mage_TH # 490288 + - Comp_Record_Mage2_TH # 490419 - Combo: - Old_Wind_Whisper # 18980 - - aegis_490289 # 490289 - - aegis_490419 # 490419 + - Comp_Record_Mage_TH # 490289 + - Comp_Record_Mage2_TH # 490419 Script: | .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bMagicAddRace,RC_All,3*(.@r/3); @@ -46501,6 +46520,7 @@ Body: Script: | bonus2 bAddEle,Ele_All,20; bonus bAspdRate,5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",40; bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",40; bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",20; - Combos: @@ -47369,6 +47389,7 @@ Body: Script: | bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",25; bonus2 bSkillAtk,"TR_ROSEBLOSSOM",25; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",25; bonus2 bSubRace,RC_Player_Human,10; bonus2 bSubRace,RC_Player_Doram,10; - Combos: @@ -47971,7 +47992,7 @@ Body: bonus bHit,30; bonus bAspd,1; bonus2 bSkillAtk,"SJ_FLASHKICK",5*(.@r/3); - bonus2 bSkillAtk,"SJ_FALLINGSTAR",5*(.@r/3); + bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",5*(.@r/3); - Combos: - Combo: - Hunter_Bow_IL # 18174 @@ -49386,10 +49407,10 @@ Body: - Combos: - Combo: - Shecil_Memory # 29600 - - aegis_470263 # 470263 + - Zodiac_Boots_AC # 470263 - Combo: - Shecil_Memory # 29600 - - aegis_470264 # 470264 + - Comp_Zodiac_Boots_AC # 470264 Script: | .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,"RA_ARROWSTORM",-700; @@ -49400,16 +49421,16 @@ Body: - Combos: - Combo: - Tren_Memory # 29606 - - aegis_470263 # 470263 + - Zodiac_Boots_AC # 470263 - Combo: - Alpho_Memory # 29607 - - aegis_470263 # 470263 + - Zodiac_Boots_AC # 470263 - Combo: - Tren_Memory # 29606 - - aegis_470264 # 470264 + - Comp_Zodiac_Boots_AC # 470264 - Combo: - Alpho_Memory # 29607 - - aegis_470264 # 470264 + - Comp_Zodiac_Boots_AC # 470264 Script: | bonus2 bSkillCooldown,"WM_METALICSOUND",-500; bonus2 bMagicAtkEle,Ele_Neutral,15*(getequiprefinerycnt(EQI_HAND_R)/4); @@ -49417,11 +49438,11 @@ Body: - Combo: - Shecil_Memory # 29600 - BioWeapon_Helm_RA # 400116 - - aegis_470263 # 470263 + - Zodiac_Boots_AC # 470263 - Combo: - Shecil_Memory # 29600 - BioWeapon_Helm_RA # 400116 - - aegis_470264 # 470264 + - Comp_Zodiac_Boots_AC # 470264 Script: | .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); if (.@sum >= 33) { @@ -49436,19 +49457,19 @@ Body: - Combo: - Tren_Memory # 29606 - BioWeapon_Helm_WM # 400117 - - aegis_470263 # 470263 + - Zodiac_Boots_AC # 470263 - Combo: - Alpho_Memory # 29607 - BioWeapon_Helm_WM # 400117 - - aegis_470263 # 470263 + - Zodiac_Boots_AC # 470263 - Combo: - Tren_Memory # 29606 - BioWeapon_Helm_WM # 400117 - - aegis_470264 # 470264 + - Comp_Zodiac_Boots_AC # 470264 - Combo: - Alpho_Memory # 29607 - BioWeapon_Helm_WM # 400117 - - aegis_470264 # 470264 + - Comp_Zodiac_Boots_AC # 470264 Script: | .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); if (.@sum >= 33) { @@ -49918,3 +49939,2271 @@ Body: Script: | .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bSkillAtk,"SS_KINRYUUHOU",.@sum; + - Combos: + - Combo: + - aegis_400631 # 400631 + - aegis_420256 # 420256 + - Combo: + - aegis_400632 # 400632 + - aegis_420257 # 420257 + Script: | + bonus2 bSubSize,Size_All,getequiprefinerycnt(EQI_HEAD_TOP); + - Combos: + - Combo: + - HYOUSENSOU_Page # 490535 + - HUUJIN_Page # 490536 + Script: | + bonus bSMatk,5; + bonus2 bSkillAtk,"NJ_KOUENKA",50; + bonus2 bMagicAtkEle,Ele_Fire,15; + bonus bAspd,2; + bonus bAspdRate,20; + bonus2 bMagicAtkEle,Ele_All,3*(BaseLevel/30); + bonus2 bMagicAddRace,RC_All,3*(BaseLevel/30); + bonus2 bMagicAddSize,Size_All,3*(BaseLevel/30); + if (getskilllv("NJ_KOUENKA") == 10) + bonus4 bAutoSpellOnSkill,"NJ_KOUENKA","WL_HELLINFERNO",5,1000; + - Combos: + - Combo: + - P_Dusk_B_InQu # 490534 + - Vivatus_F_Knuckle # 560020 + Script: | + bonus bShortAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"IQ_THIRD_FLAME_BOMB",20; + } + - Combos: + - Combo: + - P_Dusk_B_InQu # 490534 + - Vivatus_F_Claw # 560021 + Script: | + bonus bLongAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",20; + } + - Combos: + - Combo: + - Pray_Dusk_Bell # 490517 + - Vivatus_F_M_Book # 540024 + Script: | + bonus2 bMagicAtkEle,Ele_All,15; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bMagicAddRace,RC_All,12; + bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-1000; + } + - Combos: + - Combo: + - Pray_Dusk_Bell # 490517 + - Vivatus_F_P_Book # 540025 + Script: | + bonus2 bMagicAtkEle,Ele_All,15; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bMagicAddRace,RC_All,12; + bonus2 bSkillAtk,"EM_VENOM_SWAMP",20; + } + - Combos: + - Combo: + - P_Dusk_B_Sha_Cro # 490541 + - Vivatus_F_Cakram # 610022 + Script: | + bonus bShortAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"SHC_IMPACT_CRATER",20; + } + - Combos: + - Combo: + - P_Dusk_B_Sha_Cro # 490541 + - Vivatus_F_Katar # 610023 + Script: | + bonus bShortAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"SHC_SAVAGE_IMPACT",20; + } + - Combos: + - Combo: + - P_Dusk_B_Cardinal # 490525 + - Vivatus_F_Bible # 540026 + Script: | + bonus2 bMagicAtkEle,Ele_All,15; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bMagicAddRace,RC_All,12; + bonus2 bSkillAtk,"CD_PETITIO",20; + } + - Combos: + - Combo: + - P_Dusk_B_Cardinal # 490525 + - Vivatus_F_Wand # 550029 + Script: | + bonus2 bMagicAtkEle,Ele_All,15; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bMagicAddRace,RC_All,12; + bonus2 bSkillAtk,"CD_FRAMEN",20; + } + - Combos: + - Combo: + - P_Dusk_B_MT # 490546 + - Vivatus_F_Axe # 520009 + Script: | + bonus bShortAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"MT_MIGHTY_SMASH",20; + } + - Combos: + - Combo: + - P_Dusk_B_MT # 490546 + - Vivatus_F_Mace # 590023 + Script: | + bonus bLongAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"MT_SPARK_BLASTER",20; + } + - Combos: + - Combo: + - P_Dusk_B_ABC # 490548 + - Vivatus_F_Dagger # 510033 + Script: | + bonus bShortAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"ABC_DEFT_STAB",20; + } + - Combos: + - Combo: + - P_Dusk_B_ABC # 490548 + - Vivatus_F_C_Bow # 700033 + Script: | + bonus bLongAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"ABC_FRENZY_SHOT",20; + } + - Combos: + - Combo: + - P_Dusk_B_BI # 490547 + - Vivatus_F_Lapier # 500028 + Script: | + bonus bLongAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",20; + } + - Combos: + - Combo: + - P_Dusk_B_BI # 490547 + - Vivatus_F_Hall # 590024 + Script: | + bonus bShortAtkRate,10; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bAddRace,RC_All,12; + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",20; + } + - Combos: + - Combo: + - Pray_Dusk_Bell_ArcM # 490502 + - Vivatus_F_T_Staff # 640021 + Script: | + bonus2 bMagicAtkEle,Ele_All,15; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bMagicAddRace,RC_All,12; + bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",20; + } + - Combos: + - Combo: + - Pray_Dusk_Bell_ArcM # 490502 + - Vivatus_F_Rod # 640022 + Script: | + bonus2 bMagicAtkEle,Ele_All,15; + if (getenchantgrade(EQI_HAND_R) >= ENCHANTGRADE_A) { + bonus2 bMagicAddRace,RC_All,12; + bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",20; + } + - Combos: + - Combo: + - aegis_490488 # 490488 + - Up_Saint_Hall # 590012 + - Combo: + - aegis_490489 # 490489 + - Up_Saint_Hall # 590012 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"AB_ADORAMUS",(readparam(bInt)+readparam(bLuk))/12; + - Combos: + - Combo: + - aegis_490488 # 490488 + - Up_Demon_Hunting_Bible # 540011 + - Combo: + - aegis_490489 # 490489 + - Up_Demon_Hunting_Bible # 540011 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"AB_JUDEX",(readparam(bAgi)+readparam(bInt))/12; + - Combos: + - Combo: + - aegis_490531 # 490531 + - Up_Avenger # 620004 + - Combo: + - aegis_490532 # 490532 + - Up_Avenger # 620004 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"NC_AXETORNADO",(readparam(bStr)+readparam(bVit))/12; + - Combos: + - Combo: + - aegis_490531 # 490531 + - Up_Meteor_Striker # 590011 + - Combo: + - aegis_490532 # 490532 + - Up_Meteor_Striker # 590011 + Script: | + bonus bLongAtkRate,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"NC_ARMSCANNON",(readparam(bStr)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490521 # 490521 + - Up_Narcis_Bow # 700013 + - Combo: + - aegis_490522 # 490522 + - Up_Narcis_Bow # 700013 + Script: | + bonus bLongAtkRate,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",(readparam(bAgi)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490521 # 490521 + - Up_Trumpet_Shell_K # 570009 + - Combo: + - aegis_490522 # 490522 + - Up_Trumpet_Shell_K # 570009 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"WM_REVERBERATION",(readparam(bInt)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490479 # 490479 + - Up_Humma_Clear # 650004 + - Combo: + - aegis_490480 # 490480 + - Up_Humma_Clear # 650004 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"KO_HUUMARANKA",(readparam(bStr)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490479 # 490479 + - Up_Fog_Dew_Sword # 510022 + - Combo: + - aegis_490480 # 490480 + - Up_Fog_Dew_Sword # 510022 + Script: | + bonus bLongAtkRate,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"KO_JYUMONJIKIRI",(readparam(bStr)+readparam(bAgi))/12; + - Combos: + - Combo: + - aegis_490511 # 490511 + - Up_Blessed_Knife # 510071 + - Combo: + - aegis_490512 # 490512 + - Up_Blessed_Knife # 510071 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"SC_FATALMENACE",(readparam(bStr)+readparam(bAgi))/12; + - Combos: + - Combo: + - aegis_490511 # 490511 + - Up_Freedom_Stick # 550081 + - Combo: + - aegis_490512 # 490512 + - Up_Freedom_Stick # 550081 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",(readparam(bInt)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490498 # 490498 + - Up_Crimson_Rose # 800002 + - Combo: + - aegis_490499 # 490499 + - Up_Crimson_Rose # 800002 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"RL_FIREDANCE",(readparam(bStr)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490498 # 490498 + - Up_The_Black_Gatling # 830002 + - Combo: + - aegis_490499 # 490499 + - Up_The_Black_Gatling # 830002 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"RL_R_TRIP",(readparam(bStr)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490498 # 490498 + - Up_Demon_S_Shot # 820001 + - Combo: + - aegis_490499 # 490499 + - Up_Demon_S_Shot # 820001 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"RL_BANISHING_BUSTER",(readparam(bAgi)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490498 # 490498 + - Up_Golden_L_Launcher # 840001 + - Combo: + - aegis_490499 # 490499 + - Up_Golden_L_Launcher # 840001 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"RL_D_TAIL",(readparam(bAgi)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490498 # 490498 + - Up_Master_Soul_Rifle # 810001 + - Combo: + - aegis_490499 # 490499 + - Up_Master_Soul_Rifle # 810001 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"WL_SOULEXPANSION",(readparam(bAgi)+readparam(bInt))/12; + - Combos: + - Combo: + - aegis_490438 # 490438 + - Up_Magic_Sword # 510019 + - Combo: + - aegis_490439 # 490439 + - Up_Magic_Sword # 510019 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",(readparam(bAgi)+readparam(bInt))/12; + - Combos: + - Combo: + - aegis_490438 # 490438 + - Up_Fatalist # 510020 + - Combo: + - aegis_490439 # 490439 + - Up_Fatalist # 510020 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"SC_FATALMENACE",(readparam(bStr)+readparam(bAgi))/12; + - Combos: + - Combo: + - aegis_490539 # 490539 + - Up_MeawFoxtail # 550014 + Script: | + bonus2 bAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) { + bonus2 bSkillFixedCast,"SU_CN_METEOR",-3000; + bonus2 bVariableCastrate,"SU_PICKYPECK",-50; + bonus2 bSkillAtk,"SU_PICKYPECK",(readparam(bStr)+readparam(bDex))/12; + bonus2 bSkillAtk,"SU_CN_METEOR",(readparam(bInt)+readparam(bDex))/12; + } + - Combos: + - Combo: + - aegis_490434 # 490434 + - Up_Iron_Staff # 640011 + - Combo: + - aegis_490435 # 490435 + - Up_Iron_Staff # 640011 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"WL_EARTHSTRAIN",(readparam(bInt)+readparam(bDex))/12; + - Combos: + - Combo: + - aegis_490434 # 490434 + - Up_Blue_Crystal_Staff # 640012 + - Combo: + - aegis_490435 # 490435 + - Up_Blue_Crystal_Staff # 640012 + Script: | + bonus2 bMagicAddRace,RC_All,8; + if (getequiprefinerycnt(EQI_HAND_R)>=11) + bonus2 bSkillAtk,"WL_JACKFROST",(readparam(bInt)+readparam(bDex))/12; + - Combos: + - Combo: + - Old_Mitra # 18972 + - Record_Acol2_TH # 490436 + - Combo: + - Old_Mitra # 18972 + - Comp_Record_Acol2_TH # 490437 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus2 bMagicAtkEle,Ele_Holy,2*.@r; + bonus bDelayrate,-.@r; + - Combos: + - Combo: + - Old_Blazing_Soul # 18979 + - Record_Acol2_TH # 490436 + - Combo: + - Old_Blazing_Soul # 18979 + - Comp_Record_Acol2_TH # 490437 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bLongAtkRate,2*.@r; + bonus bDelayrate,-.@r; + - Combos: + - Combo: + - Record_Acol_TH # 490334 + - Record_Acol2_TH # 490436 + - Combo: + - Comp_Record_Acol_TH # 490335 + - Record_Acol2_TH # 490436 + - Combo: + - Record_Acol_TH # 490334 + - Comp_Record_Acol2_TH # 490437 + - Combo: + - Comp_Record_Acol_TH # 490335 + - Comp_Record_Acol2_TH # 490437 + Script: | + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (eaclass()&EAJL_THIRD && BaseJob == Job_Priest) { + bonus2 bVariableCastrate,"AB_JUDEX",-100; + bonus2 bSkillCooldown,"WL_HELLINFERNO",-2000; + } + if (eaclass()&EAJL_THIRD && BaseJob == Job_Monk) { + bonus2 bSkillCooldown,"SR_EARTHSHAKER",-2000; + bonus2 bSkillCooldown,"SR_RAMPAGEBLASTER",-2000; + bonus bDelayrate,-20; + } + - Combos: + - Combo: + - Old_Mitra # 18972 + - Record_Acol_TH # 490334 + - Record_Acol2_TH # 490436 + - Combo: + - Old_Mitra # 18972 + - Comp_Record_Acol_TH # 490335 + - Record_Acol2_TH # 490436 + - Combo: + - Old_Mitra # 18972 + - Record_Acol_TH # 490334 + - Comp_Record_Acol2_TH # 490437 + - Combo: + - Old_Mitra # 18972 + - Comp_Record_Acol_TH # 490335 + - Comp_Record_Acol2_TH # 490437 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bMatkRate,3*(.@r/3); + bonus2 bSkillAtk,"AB_JUDEX",10*(.@r/3); + - Combos: + - Combo: + - Old_Blazing_Soul # 18979 + - Record_Acol_TH # 490334 + - Record_Acol2_TH # 490436 + - Combo: + - Old_Blazing_Soul # 18979 + - Comp_Record_Acol_TH # 490335 + - Record_Acol2_TH # 490436 + - Combo: + - Old_Blazing_Soul # 18979 + - Record_Acol_TH # 490334 + - Comp_Record_Acol2_TH # 490437 + - Combo: + - Old_Blazing_Soul # 18979 + - Comp_Record_Acol_TH # 490335 + - Comp_Record_Acol2_TH # 490437 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bAtkRate,3*(.@r/3); + bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",10*(.@r/3); + - Combos: + - Combo: + - Old_Camo_RabbitHood # 18984 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Camo_RabbitHood # 18984 + - Comp_Record_Archer2_TH # 490431 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus2 bSkillAtk,"SN_SHARPSHOOTING",2*.@r; + bonus bDelayrate,-.@r; + - Combos: + - Combo: + - Old_Minstrel_Song_Hat # 18976 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Dying_Swan # 18981 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Minstrel_Song_Hat # 18976 + - Comp_Record_Archer2_TH # 490431 + - Combo: + - Old_Dying_Swan # 18981 + - Comp_Record_Archer2_TH # 490431 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bLongAtkRate,2*.@r; + bonus bDelayrate,-.@r; + - Combos: + - Combo: + - Record_Archer_TH # 490400 + - Record_Archer2_TH # 490430 + - Combo: + - Comp_Record_Archer_TH # 490401 + - Record_Archer2_TH # 490430 + - Combo: + - Record_Archer_TH # 490400 + - Comp_Record_Archer2_TH # 490431 + - Combo: + - Comp_Record_Archer_TH # 490401 + - Comp_Record_Archer2_TH # 490431 + Script: | + if (eaclass()&EAJL_THIRD && BaseJob == Job_Hunter) + bonus2 bSkillCooldown,"RA_UNLIMIT",-90000; + if ((eaclass()&EAJL_THIRD) && (BaseJob == Job_Bard || BaseJob == Job_Dancer)) { + bonus2 bSkillUseSPrate,"WM_SEVERE_RAINSTORM",60; + bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; + } + UnEquipScript: | + sc_end SC_UNLIMIT; + - Combos: + - Combo: + - Old_Camo_RabbitHood # 18984 + - Record_Archer_TH # 490400 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Camo_RabbitHood # 18984 + - Comp_Record_Archer_TH # 490401 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Camo_RabbitHood # 18984 + - Record_Archer_TH # 490400 + - Comp_Record_Archer2_TH # 490431 + - Combo: + - Old_Camo_RabbitHood # 18984 + - Comp_Record_Archer_TH # 490401 + - Comp_Record_Archer2_TH # 490431 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bAtkRate,3*(.@r/3); + bonus2 bSkillAtk,"SN_SHARPSHOOTING",10*(.@r/3); + - Combos: + - Combo: + - Old_Minstrel_Song_Hat # 18976 + - Record_Archer_TH # 490400 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Minstrel_Song_Hat # 18976 + - Comp_Record_Archer_TH # 490401 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Dying_Swan # 18981 + - Record_Archer_TH # 490400 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Dying_Swan # 18981 + - Comp_Record_Archer_TH # 490401 + - Record_Archer2_TH # 490430 + - Combo: + - Old_Minstrel_Song_Hat # 18976 + - Record_Archer_TH # 490400 + - Comp_Record_Archer2_TH # 490431 + - Combo: + - Old_Minstrel_Song_Hat # 18976 + - Comp_Record_Archer_TH # 490401 + - Comp_Record_Archer2_TH # 490431 + - Combo: + - Old_Dying_Swan # 18981 + - Record_Archer_TH # 490400 + - Comp_Record_Archer2_TH # 490431 + - Combo: + - Old_Dying_Swan # 18981 + - Comp_Record_Archer_TH # 490401 + - Comp_Record_Archer2_TH # 490431 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bAtkRate,3*(.@r/3); + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10*(.@r/3); + - Combos: + - Combo: + - Toy_Ring_TH # 490390 + - Toy_Screw # 490432 + - Combo: + - Comp_Toy_Ring_TH # 490391 + - Toy_Screw # 490432 + - Combo: + - Toy_Ring_TH # 490390 + - Comp_Toy_Screw_TH # 490433 + - Combo: + - Comp_Toy_Ring_TH # 490391 + - Comp_Toy_Screw_TH # 490433 + Script: | + bonus bShortAtkRate,4*getskilllv("GN_TRAINING_SWORD"); + bonus bLongAtkRate,4*getskilllv("NC_RESEARCHFE"); + - Combos: + - Combo: + - Real_Harword_Card # 4688 + - Toy_Screw # 490432 + - Combo: + - Real_Flamel_Card # 4691 + - Toy_Screw # 490432 + - Combo: + - Real_Harword_Card # 4688 + - Comp_Toy_Screw_TH # 490433 + - Combo: + - Real_Flamel_Card # 4691 + - Comp_Toy_Screw_TH # 490433 + Script: | + bonus2 bAddSize,Size_All,25; + - Combos: + - Combo: + - aegis_311890 # 311890 + - aegis_490544 # 490544 + - Combo: + - aegis_311890 # 311890 + - aegis_490545 # 490545 + Script: | + bonus bMaxHPrate,15; + bonus bMaxSPrate,15; + autobonus "{ sc_end SC_REBOUND; }",10,1000,BF_WEAPON|BF_MAGIC; + - Combos: + - Combo: + - La'cryma_Stick # 1646 + - aegis_490425 # 490425 + - Combo: + - La'cryma_Stick # 1646 + - aegis_490426 # 490426 + Script: | + skill "SA_DELUGE",getequiprefinerycnt(EQI_HAND_R)/2; + bonus bUseSPrate,BaseLevel/3; + - Combos: + - Combo: + - Combo_Battle_Glove_IL # 1846 + - Frozen_Flower_US # 420310 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus2 bSkillCooldown,"SR_TIGERCANNON",-1000; + bonus bMaxHP,200*(.@r/2); + bonus2 bSkillAtk,"SR_SKYNETBLOW",5*(.@r/2); + bonus2 bSkillAtk,"SR_DRAGONCOMBO",5*(.@r/2); + - Combos: + - Combo: + - Huuma_Flutter_Snow_IL # 13337 + - Frozen_Flower_US # 420310 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus2 bSkillCooldown,"KO_HUUMARANKA",-1000; + bonus bAgi,3*(.@r/2); + bonus bDex,3*(.@r/2); + bonus2 bAddSize,Size_All,2*(.@r/2); + - Combos: + - Combo: + - Herald_Of_GOD_IL # 28922 + - Frozen_Flower_US # 420310 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_L); + bonus bAspd,1; + bonus2 bAddEle,Ele_All,3*(.@r/2); + bonus2 bMagicAddEle,Ele_All,3*(.@r/2); + if (.@r>=10) { + bonus bAtkRate,5; + bonus bMatkRate,5; + bonus bDelayrate,-7; + } + - Combos: + - Combo: + - Tablet_IL # 28626 + - Faisca_US # 420312 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus bHit,30; + bonus bAspd,1; + bonus2 bSkillAtk,"SJ_FALLINGSTAR_ATK",5*(.@r/3); + bonus2 bSkillAtk,"SJ_FLASHKICK",5*(.@r/3); + - Combos: + - Combo: + - Hunter_Bow_IL # 18174 + - Faisca_US # 420312 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus bCriticalLong,30; + if (.@r>=7) { + bonus bCritAtkRate,10; + bonus2 bSkillCooldown,"RA_AIMEDBOLT",-1000; + if (.@r>=9) { + bonus2 bSkillAtk,"RA_AIMEDBOLT",35; + bonus2 bSkillAtk,"SN_SHARPSHOOTING",35; + if (.@r>=11) { + bonus bVariableCastrate,-10; + } + } + } + - Combos: + - Combo: + - Pole_Axe_IL # 32005 + - Pires_US # 420313 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + skill "CR_SPEARQUICKEN",5; + bonus2 bSkillAtk,"KN_BRANDISHSPEAR",8*(.@r/2); + bonus2 bSkillAtk,"LK_SPIRALPIERCE",8*(.@r/2); + - Combos: + - Combo: + - War_Axe_IL # 1326 + - Pires_US # 420313 + Script: | + bonus2 bSkillCooldown,"NC_AXETORNADO",-1000; + bonus2 bSkillCooldown,"GN_CART_TORNADO",-1000; + bonus2 bAddSize,Size_All,2*(getequiprefinerycnt(EQI_HAND_R)/2); + - Combos: + - Combo: + - Iron_Driver_IL # 16065 + - Pires_US # 420313 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus bMatk,110; + bonus3 bAutoSpell,"NPC_DARKSTRIKE",getskilllv("AB_DUPLELIGHT"),300; + bonus2 bSkillAtk,"NPC_DARKSTRIKE",6*(.@r/2); + if (.@r>=9) { + bonus2 bAddEle,Ele_Holy,10; + bonus2 bMagicAddEle,Ele_Holy,10; + if (.@r>=11) { + bonus2 bMagicAtkEle,Ele_Dark,15; + } + } + - Combos: + - Combo: + - Long_Mace_IL # 16063 + - White_Fox_US # 420314 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus bMaxSP,200*(.@r/2); + bonus2 bAddClass,Class_Boss,5; + if (.@r>=9) + bonus bNoCastCancel; + if (.@r>=11) + bonus2 bSkillAtk,"MO_EXTREMITYFIST",35; + - Combos: + - Combo: + - Apple_Of_Archer_IL # 19210 + - White_Fox_US # 420314 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus bBaseAtk,10*(.@r/2); + bonus bDex,3*(.@r/2); + bonus2 bAddSize,Size_All,2*(.@r/2); + - Combos: + - Combo: + - Shoes_IL # 22133 + - White_Fox_US # 420314 + Script: | + bonus bMaxHPrate,10; + bonus bMaxSPrate,10; + if (getequiprefinerycnt(EQI_SHOES)>=9) { + bonus bAspdRate,10; + bonus bFixedCast,-500; + } + - Combos: + - Combo: + - Muffler_IL # 20838 + - White_Fox_US # 420314 + Script: | + bonus bBaseAtk,50; + bonus bMatk,50; + if (getequiprefinerycnt(EQI_GARMENT)>=9) { + bonus bVariableCastrate,-15; + bonus2 bSubEle,Ele_Fire,10; + bonus2 bSubEle,Ele_Earth,10; + bonus2 bSubEle,Ele_Water,10; + bonus2 bSubEle,Ele_Wind,10; + } + - Combos: + - Combo: + - Skul_Ring_IL # 28508 + - Morcegos_US # 420315 + Script: | + bonus bAtkRate,7; + bonus bPerfectHitAddRate,35; + bonus bShortAtkRate,10; + - Combos: + - Combo: + - Vampire's_Servant # 28510 + - Morcegos_US # 420315 + Script: | + bonus bBaseAtk,50; + bonus bCritical,15; + bonus bAspdRate,10; + bonus bDelayrate,-10; + bonus2 bHPDrainRate,20,2; + - Combos: + - Combo: + - Infiltrator_IL # 28022 + - Morcegos_US # 420315 + Script: | + bonus bAspd,1; + bonus2 bAddSize,Size_All,10; + bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",3,70; + - Combos: + - Combo: + - Cape_Of_Ancient_Lord_IL # 20840 + - Morcegos_US # 420315 + Script: | + .@r = getequiprefinerycnt(EQI_GARMENT); + bonus bMatk,100; + bonus2 bMagicAtkEle,Ele_All,10; + bonus bAspdRate,3*(.@r/2); + bonus2 bSkillAtk,"WL_DRAINLIFE",7*(.@r/2); + if (getskilllv("SC_UNLUCKY") == 3) + bonus5 bAutoSpell,"WL_DRAINLIFE",2,50,BF_SHORT,1; + - Combos: + - Combo: + - Shadow_Booster_ # 19126 + - TwinCannon_LT_TW # 420316 + Script: | + bonus bDelayrate,-5; + bonus bAspd,1; + bonus bFixedCast,-100; + bonus bLongAtkRate,10; + bonus bShortAtkRate,10; + bonus bPAtk,5; + bonus bPerfectHitAddRate,10; + - Combos: + - Combo: + - Diabolus_Armor # 2375 + - aegis_410304 # 410304 + - Combo: + - Diabolus_Armor # 2375 + - aegis_410305 # 410305 + Script: | + .@r = getequiprefinerycnt(EQI_ARMOR); + bonus bStr,8; + bonus bDex,4; + bonus bMaxHP,1350; + bonus bBaseAtk,15*.@r; + bonus2 bResEff,Eff_Stone,300*.@r; + bonus2 bResEff,Eff_Stun,300*.@r; + - Combos: + - Combo: + - Diabolus_Robe # 2374 + - aegis_410304 # 410304 + - Combo: + - Diabolus_Robe # 2374 + - aegis_410305 # 410305 + Script: | + .@r = getequiprefinerycnt(EQI_ARMOR); + bonus bMdef,25; + bonus bMaxSP,350; + bonus bDelayrate,-10; + bonus bMatk,15*.@r; + bonus bHealPower,2*.@r; + - Combos: + - Combo: + - Diabolus_Manteau # 2537 + - aegis_410304 # 410304 + - Combo: + - Diabolus_Manteau # 2537 + - aegis_410305 # 410305 + Script: | + .@r = getequiprefinerycnt(EQI_GARMENT); + bonus bMaxHP,900; + bonus bLongAtkDef,10; + bonus2 bSubEle,Ele_Fire,2*.@r; + bonus2 bSubEle,Ele_Water,2*.@r; + bonus2 bSubEle,Ele_Wind,2*.@r; + - Combos: + - Combo: + - Diabolus_Boots # 2433 + - aegis_410304 # 410304 + - Combo: + - Diabolus_Boots # 2433 + - aegis_410305 # 410305 + Script: | + .@r = getequiprefinerycnt(EQI_SHOES); + bonus bMaxHP,100*(BaseLevel/3); + bonus bBaseAtk,12*.@r; + bonus bMatk,12*.@r; + - Combos: + - Combo: + - Diabolus_Ring # 2729 + - aegis_410304 # 410304 + - Combo: + - Diabolus_Ring # 2729 + - aegis_410305 # 410305 + Script: | + bonus bMaxHP,2000; + bonus bMaxSP,200; + bonus bHealPower,15; + - Combos: + - Combo: + - R001_Bestia_Card # 300281 + - aegis_311883 # 311883 + Script: | + bonus bMaxHPrate,50; + skill "BS_OVERTHRUST",5; + - Combos: + - Combo: + - Gran_Papilia_Card # 300100 + - aegis_311883 # 311883 + Script: | + bonus bMaxHPrate,50; + bonus3 bAddEffWhenHit,Eff_Confusion,1000,ATF_WEAPON|ATF_MAGIC; + bonus3 bAddEffWhenHit,Eff_Curse,1000,ATF_WEAPON|ATF_MAGIC; + bonus3 bAddEffWhenHit,Eff_Sleep,1000,ATF_WEAPON|ATF_MAGIC; + bonus3 bAddEffWhenHit,Eff_Silence,1000,ATF_WEAPON|ATF_MAGIC; + - Combos: + - Combo: + - Redpepper_H_Card # 300080 + - aegis_311883 # 311883 + Script: | + bonus bMaxHPrate,50; + skill "WL_CRIMSONROCK",5; + - Combos: + - Combo: + - The_One_Card # 300262 + - aegis_311883 # 311883 + Script: | + bonus bMaxHPrate,50; + skill "GC_VENOMIMPRESS",3; + - Combos: + - Combo: + - Simulation_Juncea_Card # 300378 + - aegis_311883 # 311883 + Script: | + bonus bHealPower2,15; + bonus bAddItemHealRate,15; + bonus2 bSubEle,Ele_Neutral,20; + - Combos: + - Combo: + - Aquila_Card # 300382 + - aegis_311883 # 311883 + Script: | + bonus2 bHPDrainRate,50,15; + - Combos: + - Combo: + - Magaleta_Memory # 29599 + - Zodiac_Boots_AL # 470270 + - Combo: + - Magaleta_Memory # 29599 + - Comp_Zodiac_Boots_AL # 470271 + Script: | + bonus2 bSkillCooldown,"AB_ADORAMUS",-1500; + bonus2 bMagicAtkEle,Ele_Holy,15*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Chen_Memory # 29605 + - Zodiac_Boots_AL # 470270 + - Combo: + - Chen_Memory # 29605 + - Comp_Zodiac_Boots_AL # 470271 + Script: | + bonus bDelayrate,-15; + bonus2 bAddClass,Class_Boss,10*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Magaleta_Memory # 29599 + - BioWeapon_Helm_AB # 400118 + - Zodiac_Boots_AL # 470270 + - Combo: + - Magaleta_Memory # 29599 + - BioWeapon_Helm_AB # 400118 + - Comp_Zodiac_Boots_AL # 470271 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus bNoGemStone; + if (.@sum >= 35) { + bonus2 bIgnoreMdefRaceRate,RC_All,40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Chen_Memory # 29605 + - BioWeapon_Helm_SR # 400119 + - Zodiac_Boots_AL # 470270 + - Combo: + - Chen_Memory # 29605 + - BioWeapon_Helm_SR # 400119 + - Comp_Zodiac_Boots_AL # 470271 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus bLongAtkRate,30; + if (.@sum >= 35) { + bonus2 bIgnoreDefRaceRate,RC_All,40; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Katrinn_Memory # 29598 + - Zodiac_Boots_MG # 470258 + - Combo: + - Katrinn_Memory # 29598 + - Comp_Zodiac_Boots_MG # 470259 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus2 bSkillCooldown,"WL_CRIMSONROCK",-3000; + bonus2 bMagicAtkEle,Ele_Fire,15*(.@r/4); + bonus bVariableCastrate,-10*(.@r/4); + - Combos: + - Combo: + - Celia_Memory # 29604 + - Zodiac_Boots_MG # 470258 + - Combo: + - Celia_Memory # 29604 + - Comp_Zodiac_Boots_MG # 470259 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + skill "GC_DARKCROW",5; + bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-1000; + bonus2 bSkillCooldown,"GC_DARKCROW",-30000; + bonus2 bSkillAtk,"MG_FIREBOLT",40*(.@r/4); + bonus2 bSkillAtk,"MG_COLDBOLT",40*(.@r/4); + bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",40*(.@r/4); + - Combos: + - Combo: + - Katrinn_Memory # 29598 + - BioWeapon_Helm_WL # 400094 + - Zodiac_Boots_MG # 470258 + - Combo: + - Katrinn_Memory # 29598 + - BioWeapon_Helm_WL # 400094 + - Comp_Zodiac_Boots_MG # 470259 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus2 bMagicAddRace,RC_All,20; + autobonus "{ bonus bMatkRate,30; }",30,10000,BF_MAGIC; + if (.@sum >= 35) { + bonus2 bIgnoreMdefRaceRate,RC_All,40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Celia_Memory # 29604 + - BioWeapon_Helm_SO # 400095 + - Zodiac_Boots_MG # 470258 + - Combo: + - Celia_Memory # 29604 + - BioWeapon_Helm_SO # 400095 + - Comp_Zodiac_Boots_MG # 470259 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus2 bMagicAddRace,RC_All,20; + autobonus "{ bonus bInt,200; }",30,10000,BF_MAGIC; + if (.@sum >= 35) { + bonus2 bIgnoreMdefRaceRate,RC_All,40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Harword_Memory # 29595 + - Zodiac_Boots_MC # 470267 + - Combo: + - Harword_Memory # 29595 + - Comp_Zodiac_Boots_MC # 470268 + Script: | + bonus bLongAtkRate,20; + bonus2 bSkillAtk,"NC_ARMSCANNON",15*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Flamel_Memory # 29602 + - Zodiac_Boots_MC # 470267 + - Combo: + - Flamel_Memory # 29602 + - Comp_Zodiac_Boots_MC # 470268 + Script: | + bonus bLongAtkRate,20; + bonus2 bSkillAtk,"GN_CARTCANNON",15*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Harword_Memory # 29595 + - BioWeapon_Helm_NC # 400098 + - Zodiac_Boots_MC # 470267 + - Combo: + - Harword_Memory # 29595 + - BioWeapon_Helm_NC # 400098 + - Comp_Zodiac_Boots_MC # 470268 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus bLongAtkRate,30; + if (.@sum >= 35) { + bonus bDelayrate,-10; + bonus2 bVariableCastrate,"NC_ARMSCANNON",-50; + } + } + - Combos: + - Combo: + - Flamel_Memory # 29602 + - BioWeapon_Helm_GN # 400099 + - Zodiac_Boots_MC # 470267 + - Combo: + - Flamel_Memory # 29602 + - BioWeapon_Helm_GN # 400099 + - Comp_Zodiac_Boots_MC # 470268 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) + bonus bLongAtkRate,30; + if (.@sum >= 35) + bonus2 bVariableCastrate,"GN_CARTCANNON",-100; + - Combos: + - Combo: + - Seyren_Memory # 29594 + - Zodiac_Boots_SM # 470255 + - Combo: + - Seyren_Memory # 29594 + - Comp_Zodiac_Boots_SM # 470256 + Script: | + bonus2 bSkillCooldown,"RK_SONICWAVE",-500; + bonus bCritAtkRate,20*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Randel_Memory # 29601 + - Zodiac_Boots_SM # 470255 + - Combo: + - Randel_Memory # 29601 + - Comp_Zodiac_Boots_SM # 470256 + Script: | + bonus2 bSkillCooldown,"LG_RAYOFGENESIS",-200; + bonus2 bSkillAtk,"PA_PRESSURE",40*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Seyren_Memory # 29594 + - BioWeapon_Helm_RK # 400078 + - Zodiac_Boots_SM # 470255 + - Combo: + - Seyren_Memory # 29594 + - BioWeapon_Helm_RK # 400078 + - Comp_Zodiac_Boots_SM # 470256 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus bLongAtkRate,30; + if (.@sum >= 35) { + bonus2 bIgnoreDefRaceRate,RC_All,40; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Randel_Memory # 29601 + - BioWeapon_Helm_LG # 400079 + - Zodiac_Boots_SM # 470255 + - Combo: + - Randel_Memory # 29601 + - BioWeapon_Helm_LG # 400079 + - Comp_Zodiac_Boots_SM # 470256 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus2 bMagicAtkEle,Ele_Holy,30; + if (.@sum >= 35) { + bonus2 bIgnoreMdefRaceRate,RC_All,40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Eremes_Memory # 29596 + - Zodiac_Boots_TF # 470272 + - Combo: + - Eremes_Memory # 29596 + - Comp_Zodiac_Boots_TF # 470273 + Script: | + bonus2 bSkillCooldown,"ASC_BREAKER",-100; + bonus bCritical,15*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Gertie_Memory # 29603 + - Zodiac_Boots_TF # 470272 + - Combo: + - Gertie_Memory # 29603 + - Comp_Zodiac_Boots_TF # 470273 + Script: | + bonus bDelayrate,-15; + bonus bLongAtkRate,15*(getequiprefinerycnt(EQI_HAND_R)/4); + - Combos: + - Combo: + - Eremes_Memory # 29596 + - BioWeapon_Helm_GC # 400121 + - Zodiac_Boots_TF # 470272 + - Combo: + - Eremes_Memory # 29596 + - BioWeapon_Helm_GC # 400121 + - Comp_Zodiac_Boots_TF # 470273 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + bonus bDelayrate,-10; + bonus2 bSkillAtk,"ASC_BREAKER",20; + if (.@sum >= 35) { + bonus bNoSizeFix; + } + } + - Combos: + - Combo: + - Gertie_Memory # 29603 + - BioWeapon_Helm_SC # 400120 + - Zodiac_Boots_TF # 470272 + - Combo: + - Gertie_Memory # 29603 + - BioWeapon_Helm_SC # 400120 + - Comp_Zodiac_Boots_TF # 470273 + Script: | + .@sum = getequiprefinerycnt(EQI_HEAD_TOP) + getequiprefinerycnt(EQI_HAND_R) + getequiprefinerycnt(EQI_SHOES); + if (.@sum >= 33) { + skill "WM_SEVERE_RAINSTORM",5; + bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-6000; + bonus2 bSkillCooldown,"SC_FEINTBOMB",-1800; + autobonus "{ bonus bDex,200; }",30,10000,BF_WEAPON; + if (.@sum >= 35) { + bonus2 bIgnoreDefRaceRate,RC_All,40; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-40; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-40; + } + } + - Combos: + - Combo: + - Shoes_Of_Punishment # 22120 + - JP_Rod01_L # 26103 + - Combo: + - Shoes_Of_Punishment_ # 22225 + - JP_Rod01_L # 26103 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus2 bVariableCastrate,"AB_ADORAMUS",-5*getskilllv("AB_ORATIO"); + bonus2 bVariableCastrate,"AB_JUDEX",-5*getskilllv("AB_ORATIO"); + bonus2 bSkillAtk,"AB_ADORAMUS",10*(getskilllv("AB_CLEARANCE")+getskilllv("AB_LAUDAAGNUS")+getskilllv("AB_LAUDARAMUS")); + if (.@r>=7) { + bonus2 bMagicAddRace,RC_Demon,30; + bonus2 bMagicAddRace,RC_Undead,30; + bonus2 bMagicAddEle,Ele_Dark,30; + bonus2 bMagicAddEle,Ele_Undead,30; + if (.@r>=9) { + bonus2 bMagicAddRace,RC_Demon,20; + bonus2 bMagicAddRace,RC_Undead,20; + bonus2 bMagicAddEle,Ele_Dark,20; + bonus2 bMagicAddEle,Ele_Undead,20; + } + } + - Combos: + - Combo: + - Z_Boost_Armor # 450300 + - Z_Boost_Greave # 470216 + - Z_Boost_Manteau # 480353 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bAtkRate,5; + bonus bMatkRate,5; + bonus bAspdRate,10; + bonus bVariableCastrate,-7; + bonus bFixedCastrate,-10; + } + - Combos: + - Combo: + - P_90Lv_Mail # 450259 + - P_90Lv_Greave # 470188 + - P_90Lv_Manteau # 480265 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bAspdRate,10; + bonus bCritAtkRate,5; + bonus bFixedCastrate,-20; + } + - Combos: + - Combo: + - P_90Lv_Mail # 450259 + - P_90Lv_Greave # 470188 + - P_90Lv_Manteau # 480265 + - P_90Lv_Aring # 490312 + - Combo: + - P_90Lv_Cloth # 450260 + - P_90Lv_Boots # 470189 + - P_90Lv_Cloak # 480266 + - P_90Lv_Gloves # 490313 + Script: | + bonus bBaseAtk,30; + - Combos: + - Combo: + - P_90Lv_Cloth # 450260 + - P_90Lv_Boots # 470189 + - P_90Lv_Cloak # 480266 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bAspdRate,10; + bonus bAtkRate,5; + bonus bFixedCastrate,-20; + } + - Combos: + - Combo: + - P_90Lv_Robe # 450261 + - P_90Lv_Shoes # 470190 + - P_90Lv_Muffler # 480267 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bMatkRate,6; + bonus bVariableCastrate,-10; + bonus bFixedCastrate,-20; + } + - Combos: + - Combo: + - P_90Lv_Robe # 450261 + - P_90Lv_Shoes # 470190 + - P_90Lv_Muffler # 480267 + - P_90Lv_Mring # 490315 + - Combo: + - P_90Lv_Dress # 450262 + - P_90Lv_Sandal # 470191 + - P_90Lv_Cape # 480268 + - P_90Lv_Necklace # 490314 + Script: | + bonus bMatk,30; + - Combos: + - Combo: + - P_90Lv_Dress # 450262 + - P_90Lv_Sandal # 470191 + - P_90Lv_Cape # 480268 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bHealPower,10; + bonus bVariableCastrate,-10; + bonus bFixedCastrate,-20; + } + - Combos: + - Combo: + - Z_Boost_Set1_Armor # 450301 + - Z_Boost_Set1_Boots # 470217 + - Z_Boost_Set1_Hood # 480354 + - Combo: + - Z_Boost_Set2_Armor # 450302 + - Z_Boost_Set2_Boots # 470218 + - Z_Boost_Set2_Hood # 480355 + - Combo: + - Z_Boost_Set1_Armor_01 # 450340 + - Z_Boost_Set1_Boots_01 # 470250 + - Z_Boost_Set1_Hood_01 # 480401 + - Combo: + - Z_Boost_Set2_Armor_01 # 450341 + - Z_Boost_Set2_Boots_01 # 470251 + - Z_Boost_Set2_Hood_01 # 480402 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bBaseAtk,30; + bonus bMatk,30; + bonus bAtkRate,5; + bonus bMatkRate,5; + bonus bAspdRate,10; + bonus bFixedCastrate,-20; + } + - Combos: + - Combo: + - Z_Boost_Set3_Armor # 450303 + - Z_Boost_Set3_Boots # 470219 + - Z_Boost_Set3_Hood # 480356 + - Combo: + - Z_Boost_Set4_Armor # 450304 + - Z_Boost_Set4_Boots # 470220 + - Z_Boost_Set4_Hood # 480357 + - Combo: + - Z_Boost_Set3_Armor_01 # 450342 + - Z_Boost_Set3_Boots_01 # 470252 + - Z_Boost_Set3_Hood_01 # 480403 + - Combo: + - Z_Boost_Set4_Armor_01 # 450343 + - Z_Boost_Set4_Boots_01 # 470253 + - Z_Boost_Set4_Hood_01 # 480404 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 27) { + bonus bBaseAtk,30; + bonus bMatk,30; + bonus bAtkRate,5; + bonus bMatkRate,5; + bonus bVariableCastrate,-10; + bonus bFixedCastrate,-20; + } + - Combos: + - Combo: + - Temporal_Sprout_TW # 420106 + - Temporal_Cape_TW # 480076 + Script: | + bonus bDelayrate,-3; + bonus bAspdRate,10; + - Combos: + - Combo: + - Temporal_Sprout_TW # 420106 + - Temporal_Armor_TW # 450175 + Script: | + bonus bMaxHPrate,15; + - Combos: + - Combo: + - Temporal_Boots_TW # 22202 + - Temporal_Sprout_TW # 420106 + - Combo: + - Comp_Temporal_Boots_TW # 22258 + - Temporal_Sprout_TW # 420106 + Script: | + bonus2 bAddRace,RC_All,10; + bonus2 bMagicAddRace,RC_All,10; + - Combos: + - Combo: + - Temporal_Sprout_TW # 420106 + - Temporal_Armor_TW # 450175 + - Temporal_Cape_TW # 480076 + Script: | + .@sum = getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT); + if (.@sum >= 18) { + bonus bBaseAtk,80; + bonus bMatk,80; + if (.@sum >= 20) { + bonus bAtkRate,10; + bonus bMatkRate,10; + if (.@sum >= 26) { + bonus2 bAddEle,Ele_All,10; + bonus2 bMagicAddEle,Ele_All,10; + } + } + } + - Combos: + - Combo: + - Temporal_Boots_TW # 22202 + - Temporal_Sprout_TW # 420106 + - Temporal_Armor_TW # 450175 + - Temporal_Cape_TW # 480076 + - Combo: + - Comp_Temporal_Boots_TW # 22258 + - Temporal_Sprout_TW # 420106 + - Temporal_Armor_TW # 450175 + - Temporal_Cape_TW # 480076 + Script: | + bonus bShortAtkRate,8; + bonus bLongAtkRate,8; + bonus2 bMagicAtkEle,Ele_All,8; + if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 39) { + bonus bIgnoreDefRace,RC_All; + bonus bIgnoreMDefRace,RC_All; + } + - Combos: + - Combo: + - Z_Boost_N_Sotaedo # 510123 + - Z_Boost_N_Nindo # 510124 + Script: | + bonus bMatkRate,5; + bonus2 bIgnoreMdefRaceRate,RC_All,5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-5; + - Combos: + - Combo: + - Z_Boost_P_Sotaedo # 510126 + - Z_Boost_P_Nindo # 510127 + Script: | + bonus bMatkRate,10; + bonus2 bIgnoreMdefRaceRate,RC_All,5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-5; + - Combos: + - Combo: + - Ring_Of_Fallen # 28522 + - aegis_590084 # 590084 + Script: | + bonus bBaseAtk,10; + - Combos: + - Combo: + - Berzebub_Card # 4145 + - Hollow_Shoes_ # 470113 + Script: | + .@eq = getequiprefinerycnt(EQI_SHOES); + .@a = readparam(bLuk); + autobonus "{}",10,30000,BF_MAGIC,"{ sc_start SC_KAAHI,30000,7; }"; + bonus2 bMagicAddEle,Ele_All,.@a/10; + if (.@a>=130) + bonus2 bMagicAddEle,Ele_All,25; + if (BaseLevel <= 99) { + bonus bMatk,5*.@eq; + bonus bVariableCastrate,-2*.@eq; + } else { + bonus bMatk,15*.@eq; + bonus bVariableCastrate,-7*.@eq; + } + - Combos: + - Combo: + - Preschool_Hat # 18860 + - Shoes_Of_Hope # 22038 + Script: | + bonus bHealPower2,5; + bonus bAddItemHealRate,5; + if (BaseLevel < 80) + bonus bSpeedRate,25; + - Combos: + - Combo: + - Academy_Badge # 2751 + - Star_Egg_Badge # 28346 + Script: | + if (BaseLevel>=80) { + bonus bMaxHP,600; + bonus bMaxSP,50; + } else { + bonus bMaxHP,200; + bonus bMaxSP,150; + } + - Combos: + - Combo: + - Academy_Freshman_Hat # 5406 + - Star_Egg_Badge # 28346 + - Combo: + - Academy_Graduating_Cap # 5407 + - Star_Egg_Badge # 28346 + Script: | + bonus bMaxHP,200; + bonus bMaxSP,150; + - Combos: + - Combo: + - Academy_Badge # 2751 + - Academy_Freshman_Hat # 5406 + - Star_Egg_Badge # 28346 + - Combo: + - Academy_Badge # 2751 + - Academy_Graduating_Cap # 5407 + - Star_Egg_Badge # 28346 + Script: | + bonus bMaxHP,-200; + bonus bMaxSP,-150; + - Combos: + - Combo: + - Cursed_Lyre # 1741 + - Cursed_Star_S # 28349 + Script: | + bonus bBaseAtk,25; + bonus3 bAddEff,Eff_Curse,400,ATF_WEAPON|ATF_LONG|ATF_TARGET; + - Combos: + - Combo: + - Shinobi's_Sash # 2654 + - Kotone_Of_Ninja # 28300 + - Combo: + - Kotone_Of_Ninja # 28300 + - Shinobi's_Sash_S # 28350 + Script: | + bonus bMaxSP,100; + bonus2 bSkillAtk,"NJ_KIRIKAGE",50; + bonus2 bSkillUseSP,"NJ_KIRIKAGE",3; + - Combos: + - Combo: + - Ninja_Suit # 2337 + - Kotone_Of_Ninja # 28300 + - Combo: + - Ninja_Suit_ # 2359 + - Kotone_Of_Ninja # 28300 + Script: | + bonus bMaxHP,300; + bonus2 bSkillUseSP,"NJ_KIRIKAGE",3; + - Combos: + - Combo: + - Shinobi's_Sash # 2654 + - Ball_Of_Huuma # 28301 + - Combo: + - Ball_Of_Huuma # 28301 + - Shinobi's_Sash_S # 28350 + Script: | + bonus bMaxSP,100; + bonus2 bSkillAtk,"NJ_HUUMA",30; + bonus2 bSkillUseSP,"NJ_HUUMA",5; + - Combos: + - Combo: + - Ninja_Suit # 2337 + - Ball_Of_Huuma # 28301 + - Combo: + - Ninja_Suit_ # 2359 + - Ball_Of_Huuma # 28301 + Script: | + bonus bMaxHP,300; + bonus2 bSkillUseSP,"NJ_HUUMA",5; + - Combos: + - Combo: + - Heater_Card # 4331 + - White_Choco_Bear # 19018 + Script: | + .@r = getequiprefinerycnt(EQI_HEAD_TOP); + bonus2 bAddItemHealRate,501,10*.@r; + bonus2 bAddItemHealRate,502,10*.@r; + bonus2 bAddItemHealRate,503,10*.@r; + bonus2 bAddItemHealRate,569,10*.@r; + - Combos: + - Combo: + - Cookie_Card # 4293 + - White_Choco_Bear # 19018 + Script: | + bonus bUseSPrate,-2*getequiprefinerycnt(EQI_HEAD_TOP); + - Combos: + - Combo: + - Muka_Card # 4036 + - White_Choco_Bear # 19018 + Script: | + bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_HEAD_TOP); + - Combos: + - Combo: + - Hylozoist_Card # 4321 + - White_Choco_Bear # 19018 + Script: | + bonus2 bAddEffWhenHit,Eff_Freeze,100*(getequiprefinerycnt(EQI_HEAD_TOP)/2); + - Combos: + - Combo: + - Matagi_Swordaxe # 28491 + - Keen1 # 29135 + - Combo: + - Matagi_Swordaxe # 28491 + - Keen2 # 29136 + Script: | + bonus bHit,15; + bonus bCriticalLong,10; + - Combos: + - Combo: + - Crescent_Scythe # 1466 + - Roar_Of_Baphomet # 29141 + - Combo: + - Crescent_Scythe_ # 1476 + - Roar_Of_Baphomet # 29141 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus3 bAutoSpell,"CR_HOLYCROSS",getskilllv("CR_HOLYCROSS"),400; + bonus bBaseAtk,15*.@r; + bonus bAspdRate,5*.@r; + if (.@r>=10) + bonus bSplashRange,1; + - Combos: + - Combo: + - Tae_Goo_Lyeon # 1181 + - Roar_Of_Baphomet # 29141 + - Combo: + - Taegoolyeon_IL # 21050 + - Roar_Of_Baphomet # 29141 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_R); + bonus3 bAutoSpell,"LK_SPIRALPIERCE",getskilllv("LK_SPIRALPIERCE"),400; + bonus bBaseAtk,15*.@r; + bonus bAspdRate,5*.@r; + if (.@r>=10) + bonus bSplashRange,1; + - Combos: + - Combo: + - aegis_28979 # 28979 + - aegis_480439 # 480439 + - Combo: + - aegis_28980 # 28980 + - aegis_480439 # 480439 + - Combo: + - aegis_28979 # 28979 + - aegis_480440 # 480440 + - Combo: + - aegis_28980 # 28980 + - aegis_480440 # 480440 + Script: | + .@r = getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_GARMENT); + skill "GC_DARKCROW",5; + bonus bMaxHPrate,2*(.@r/3); + if (.@r>=21) + autobonus "{ bonus bAgi,200; }",30,10000,BF_WEAPON|BF_NORMAL; + - Combos: + - Combo: + - Temporal_Boots # 2499 + - aegis_480434 # 480434 + - Combo: + - aegis_470170 # 470170 + - aegis_480434 # 480434 + - Combo: + - Temporal_Boots # 2499 + - aegis_480435 # 480435 + - Combo: + - aegis_470170 # 470170 + - aegis_480435 # 480435 + Script: | + bonus bMaxHPrate,15; + bonus bMaxSPrate,5; + - Combos: + - Combo: + - aegis_400660 # 400660 + - aegis_470277 # 470277 + Script: | + bonus bLongAtkRate,5; + - Combos: + - Combo: + - aegis_400660 # 400660 + - aegis_450371 # 450371 + Script: | + bonus bAllStats,1; + - Combos: + - Combo: + - aegis_400660 # 400660 + - aegis_460073 # 460073 + Script: | + bonus2 bSubClass,Class_Boss,7; + bonus2 bSubClass,Class_Normal,7; + - Combos: + - Combo: + - aegis_450371 # 450371 + - aegis_460073 # 460073 + Script: | + bonus bLongAtkRate,getequiprefinerycnt(EQI_ARMOR); + - Combos: + - Combo: + - aegis_460073 # 460073 + - aegis_470277 # 470277 + Script: | + bonus bAtkRate,getequiprefinerycnt(EQI_SHOES); + - Combos: + - Combo: + - aegis_470277 # 470277 + - aegis_480441 # 480441 + Script: | + bonus bAllStats,getequiprefinerycnt(EQI_SHOES)/3; + - Combos: + - Combo: + - aegis_400660 # 400600 + - aegis_480441 # 480441 + Script: | + bonus bLongAtkRate,5; + bonus bSPDrainValue,1; + - Combos: + - Combo: + - aegis_450371 # 450371 + - aegis_480441 # 480441 + Script: | + .@r = getequiprefinerycnt(EQI_ARMOR); + bonus bMaxHPrate,3*(.@r/3); + bonus bLongAtkDef,3*(.@r/3); + - Combos: + - Combo: + - aegis_460073 # 460073 + - aegis_480441 # 480441 + Script: | + bonus2 bSubEle,Ele_Neutral,5; + - Combos: + - Combo: + - aegis_400658 # 400658 + - aegis_490555 # 490555 + - Combo: + - aegis_400658 # 400658 + - aegis_490556 # 490556 + - Combo: + - aegis_400659 # 400659 + - aegis_490555 # 490555 + - Combo: + - aegis_400659 # 400659 + - aegis_490556 # 490556 + Script: | + if (getskilllv("TF_POISON") == 10) + skill "ASC_EDP",5; + if (getskilllv("TF_HIDING") == 10) + skill "AS_CLOAKING",10; + if (getskilllv("SM_BASH") == 10) + skill "KN_BOWLINGBASH",10; + if (getskilllv("MG_FIREBOLT") == 10) + skill "WZ_METEOR",10; + if (getskilllv("MG_COLDBOLT") == 10) + skill "WZ_STORMGUST",10; + if (getskilllv("MG_LIGHTNINGBOLT") == 10) + skill "WZ_VERMILION",10; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313319 # 313319 + Script: | + bonus2 bSkillCooldown,"WL_CRIMSONROCK",-2000; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313318 # 313318 + Script: | + bonus2 bSkillCooldown,"WL_TELEKINESIS_INTENSE",-75000; + UnEquipScript: | + sc_end SC_TELEKINESIS_INTENSE; + - Combos: + - Combo: + - Tendrilion_Card # 4463 + - aegis_410334 # 410334 + - Combo: + - Tendrilion_Card # 4463 + - aegis_410335 # 410335 + Script: | + bonus2 bMagicAddRace,RC_All,2*getequiprefinerycnt(EQI_HAND_R); + - Combos: + - Combo: + - aegis_420342 # 420342 + - aegis_480451 # 480451 + Script: | + bonus2 bExpAddRace,RC_All,4+(getequiprefinerycnt(EQI_GARMENT)/2); + - Combos: + - Combo: + - aegis_420342 # 420342 + - Auto_Armor_A # 450127 + - Combo: + - aegis_420342 # 420342 + - Auto_Armor_B # 450128 + Script: | + bonus2 bAddRace,RC_All,8; + bonus2 bMagicAddRace,RC_All,8; + bonus bDelayrate,-(getequiprefinerycnt(EQI_ARMOR)/2); + - Combos: + - Combo: + - Auto_Armor_A # 450127 + - aegis_480451 # 480451 + - Combo: + - Auto_Armor_B # 450128 + - aegis_480451 # 480451 + Script: | + if ((getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)) >= 21) { + bonus2 bIgnoreDefRaceRate,RC_Dragon,30; + bonus2 bIgnoreDefRaceRate,RC_Demon,30; + bonus2 bIgnoreDefRaceRate,RC_Fish,30; + bonus2 bIgnoreMdefRaceRate,RC_Dragon,30; + bonus2 bIgnoreMdefRaceRate,RC_Demon,30; + bonus2 bIgnoreMdefRaceRate,RC_Fish,30; + } + - Combos: + - Combo: + - aegis_400676 # 400676 + - aegis_490475 # 490475 + - Combo: + - aegis_400676 # 400676 + - aegis_490476 # 490476 + - Combo: + - aegis_400677 # 400677 + - aegis_490475 # 490475 + - Combo: + - aegis_400677 # 400677 + - aegis_490476 # 490476 + Script: | + bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",100; + bonus2 bSkillAtk,"AM_ACIDTERROR",50; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313269 # 313269 + Script: | + bonus2 bSkillCooldown,"ABC_ABYSS_DAGGER",-100; + bonus2 bSkillCooldown,"ABC_DEFT_STAB",-100; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313289 # 313289 + Script: | + bonus2 bFixedCastrate,"AB_DUPLELIGHT",-100; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313290 # 313290 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"GC_COUNTERSLASH\",31; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313292 # 313292 + Script: | + bonus4 bAutoSpellOnSkill,"GC_ROLLINGCUTTER","AB_ORATIO",5,1000; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313293 # 313293 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"KO_JYUMONJIKIRI\",45; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313294 # 313294 + Script: | + bonus2 bSkillCooldown,"KO_HUUMARANKA",-300; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313295 # 313295 + Script: | + bonus2 bSkillCooldown,"LG_SHIELDPRESS",-2000; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313296 # 313296 + Script: | + autobonus "{ bonus4 bAutoSpellOnSkill,\"LG_RAYOFGENESIS\",\"AB_HIGHNESSHEAL\",3,1000; }",100,3000,BF_MAGIC; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313297 # 313297 + Script: | + if ((eaclass()&EAJL_FOURTH) && (BaseJob == Job_Bard || BaseJob == Job_Dancer)) + skill "RA_UNLIMIT",5; + UnEquipScript: | + sc_end SC_UNLIMIT; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313298 # 313298 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"NC_ARMSCANNON\",59; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313299 # 313299 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"NC_AXETORNADO\",25; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313300 # 313300 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"NC_AXEBOOMERANG\",27; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313301 # 313301 + Script: | + bonus2 bSkillCooldown,"RA_UNLIMIT",-60000; + UnEquipScript: | + sc_end SC_UNLIMIT; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313302 # 313302 + Script: | + bonus2 bFixedCastrate,"RA_AIMEDBOLT",-100; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313303 # 313303 + Script: | + bonus2 bSkillCooldown,"RK_IGNITIONBREAK",-200; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313304 # 313304 + Script: | + bonus2 bSkillCooldown,"RL_SLUGSHOT",-10000; + - Combos: + - Combo: + - Hero # 29509 + - Lucky_Amulet7 # 29647 + - aegis_313304 # 313304 + Script: | + if (readparam(bStr)>=110) + bonus2 bSkillCooldown,"RL_SLUGSHOT",10000; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313305 # 313305 + Script: | + bonus4 bAutoSpellOnSkill,"RL_HAMMER_OF_GOD","RL_RICHS_COIN",1,1000; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313306 # 313306 + Script: | + bonus2 bSkillCooldown,"RL_AM_BLAST",-5000; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313307 # 313307 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"RL_R_TRIP\",19; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313308 # 313308 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"RL_FIRE_RAIN\",69; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313309 # 313309 + Script: | + if (eaclass()&EAJL_FOURTH && BaseJob == Job_Rogue) + skill "RA_UNLIMIT",5; + UnEquipScript: | + sc_end SC_UNLIMIT; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313310 # 313310 + Script: | + bonus2 bSkillCooldown,"SO_VARETYR_SPEAR",-1000; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313311 # 313311 + Script: | + bonus2 bSkillCooldown,"SO_DIAMONDDUST",-1000; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313312 # 313312 + Script: | + bonus2 bSkillCooldown,"SO_EARTHGRAVE",-1000; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313313 # 313313 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"SP_SPA\",29; }",30,10000,BF_MAGIC; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313314 # 313314 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"SP_SWHOO\",119; }",30,10000,BF_MAGIC; + - Combos: + - Combo: + - Release_Of_Magic # 29371 + - aegis_313315 # 313315 + Script: | + bonus2 bSkillCooldown,"SP_CURSEEXPLOSION",-500; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313316 # 313316 + Script: | + autobonus "{ bonus2 bSkillUseSP,\"SR_HOWLINGOFLION\",119; }",30,10000,BF_WEAPON; + - Combos: + - Combo: + - Hero # 29509 + - aegis_313317 # 313317 + Script: | + bonus2 bSkillCooldown,"SR_SKYNETBLOW",-200; + - Combos: + - Combo: + - Ifrit's_Ear # 5421 + - Ignis_Cap # 18651 + Script: | + bonus bAspdRate,getequiprefinerycnt(EQI_HEAD_TOP)/2; + - Combos: + - Combo: + - FuriousCirclet_TR # 400673 + - MetalVilolin_Furious # 570072 + - Combo: + - FuriousCirclet_TR # 400673 + - MetalWhip_Furious # 580072 + Script: | + bonus2 bMagicAddRace,RC_All,10; + bonus2 bMagicAddRace,RC_Player_Human,-10; + bonus2 bMagicAddRace,RC_Player_Doram,-10; + bonus2 bSkillAtk,"WM_REVERBERATION",35; + - Combos: + - Combo: + - FuriousCirclet_TR # 400673 + - Harp_Furious # 570073 + - Combo: + - FuriousCirclet_TR # 400673 + - Whip_Furious # 580073 + Script: | + bonus2 bAddRace,RC_All,10; + bonus2 bAddRace,RC_Player_Human,-10; + bonus2 bAddRace,RC_Player_Doram,-10; + - Combos: + - Combo: + - FuriousCirclet_BO # 400674 + - Lapier_Furious # 500101 + Script: | + bonus2 bSkillCooldown,"BO_EXPLOSIVE_POWDER",-120; + - Combos: + - Combo: + - FuriousCirclet_BO # 400674 + - SharpSword_Furious # 500102 + Script: | + bonus2 bSkillCooldown,"BO_MAYHEMIC_THORNS",-120; + - Combos: + - Combo: + - FuriousCirclet_HN # 400675 + - WhiteSword_Furious # 500103 + Script: | + bonus2 bSkillCooldown,"HN_DOUBLEBOWLINGBASH",-150; + - Combos: + - Combo: + - FuriousCirclet_HN # 400675 + - Stick_Furious # 550148 + Script: | + bonus2 bSkillCooldown,"HN_JUPITEL_THUNDER_STORM",-250; + - Combos: + - Combo: + - FuriousCirclet_AG # 400694 + - Specter_Furious # 550150 + Script: | + bonus2 bMagicAddRace,RC_All,10; + bonus2 bMagicAddRace,RC_Player_Human,-10; + bonus2 bMagicAddRace,RC_Player_Doram,-10; + - Combos: + - Combo: + - FuriousCirclet_AG # 400694 + - Flame_Staff_Furious # 640053 + Script: | + bonus2 bSkillAtk,"AG_ALL_BLOOM",25; + bonus2 bSkillAtk,"AG_ALL_BLOOM_ATK",25; + bonus2 bSkillAtk,"AG_ALL_BLOOM_ATK2",25; + - Combos: + - Combo: + - FuriousCirclet_IQ # 400695 + - GaleClaw_Furious # 560067 + Script: | + bonus2 bSkillCooldown,"IQ_MASSIVE_F_BLASTER",-1200; + bonus2 bSkillAtk,"IQ_MASSIVE_F_BLASTER",20; + - Combos: + - Combo: + - FuriousCirclet_IQ # 400695 + - Exterminate_Furious # 560068 + Script: | + bonus2 bSkillAtk,"IQ_THIRD_FLAME_BOMB",25; + - Combos: + - Combo: + - FuriousCirclet_NW # 400696 + - Rifle_Furious # 810042 + Script: | + bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",25; + - Combos: + - Combo: + - FuriousCirclet_NW # 400696 + - Gatling_Furious # 830038 + Script: | + bonus2 bAddRace,RC_All,10; + bonus2 bAddRace,RC_Player_Human,-10; + bonus2 bAddRace,RC_Player_Doram,-10; + bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",15; + - Combos: + - Combo: + - Lapier_Furious # 500101 + - FuriousBoots # 470265 + Script: | + .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP); + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",.@sum; + - Combos: + - Combo: + - SharpSword_Furious # 500102 + - FuriousBoots # 470265 + Script: | + bonus bCritAtkRate,15; + bonus bCritical,5; + if (getenchantgrade()>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",15; + } + - Combos: + - Combo: + - WhiteSword_Furious # 500103 + - FuriousBoots # 470265 + Script: | + .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES); + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",.@sum; + - Combos: + - Combo: + - Stick_Furious # 550148 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"HN_HELLS_DRIVE",20; + if (getenchantgrade()>=ENCHANTGRADE_B) { + bonus4 bAutoSpellOnSkill,"HN_HELLS_DRIVE","EM_TERRA_DRIVE",4,1000; + } + - Combos: + - Combo: + - Specter_Furious # 550150 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",20; + - Combos: + - Combo: + - GaleClaw_Furious # 560067 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"IQ_MASSIVE_F_BLASTER",20; + - Combos: + - Combo: + - Exterminate_Furious # 560068 + - FuriousBoots # 470265 + Script: | + .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES); + bonus2 bSkillAtk,"IQ_THIRD_FLAME_BOMB",.@sum; + - Combos: + - Combo: + - MetalVilolin_Furious # 570072 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"WM_REVERBERATION",70; + bonus2 bSkillAtk,"TR_METALIC_FURY",20; + - Combos: + - Combo: + - Harp_Furious # 570073 + - FuriousBoots # 470265 + Script: | + .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES); + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",.@sum; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",.@sum; + - Combos: + - Combo: + - MetalWhip_Furious # 580072 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"WM_REVERBERATION",70; + bonus2 bSkillAtk,"TR_METALIC_FURY",20; + - Combos: + - Combo: + - Whip_Furious # 580073 + - FuriousBoots # 470265 + Script: | + .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_SHOES); + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",.@sum; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",.@sum; + - Combos: + - Combo: + - Flame_Staff_Furious # 640053 + - FuriousBoots # 470265 + Script: | + .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP); + bonus2 bSkillAtk,"AG_ALL_BLOOM",.@sum; + bonus2 bSkillAtk,"AG_ALL_BLOOM_ATK",.@sum; + bonus2 bSkillAtk,"AG_ALL_BLOOM_ATK2",.@sum; + - Combos: + - Combo: + - Rifle_Furious # 810042 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",25; + - Combos: + - Combo: + - Gatling_Furious # 830038 + - FuriousBoots # 470265 + Script: | + bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",25; + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",15; + - Combos: + - Combo: + - aegis_300549 # 300549 + - Sesrumnir_Evt_Ring # 490557 + Script: | + bonus bShortAtkRate,7; + bonus bLongAtkRate,7; + bonus2 bMagicAtkEle,Ele_All,7; diff --git a/db/re/item_db_equip.yml b/db/re/item_db_equip.yml index 57348108e8..6baf1d2f66 100644 --- a/db/re/item_db_equip.yml +++ b/db/re/item_db_equip.yml @@ -5152,7 +5152,7 @@ Body: bonus2 bSkillAtk,"GC_CROSSIMPACT",30; - Id: 1292 AegisName: Upg_Katar - Name: Upg Katar + Name: Upgrade Katar Type: Weapon SubType: Katar Buy: 20 @@ -7750,7 +7750,7 @@ Body: bonus2 bAddEff2,Eff_Freeze,300; - Id: 1394 AegisName: Upg_Two_Handed_Axe - Name: Upg Two Handed Axe + Name: Upgrade Two-Handed Axe Type: Weapon SubType: 2hAxe Buy: 20 @@ -7928,7 +7928,7 @@ Body: bonus2 bAddRace,RC_Player_Doram,40; - Id: 1400 AegisName: Sinister_Spear - Name: Spear of Vicious Mind + Name: Vicious Mind Spear Type: Weapon SubType: 1hSpear Buy: 20 @@ -9159,7 +9159,7 @@ Body: bonus bMaxSP,-50; - Id: 1450 AegisName: Sinister_Lance - Name: Lance of Vicious Mind + Name: Vicious Mind Lance Type: Weapon SubType: 2hSpear Buy: 20 @@ -10094,7 +10094,7 @@ Body: heal 0,-600; - Id: 1491 AegisName: Upg_Lance - Name: Upg Lance + Name: Upgrade Lance Type: Weapon SubType: 2hSpear Buy: 20 @@ -12495,7 +12495,7 @@ Body: bonus2 bSkillUseSP,"SO_DIAMONDDUST",-(.@r*5); - Id: 1585 AegisName: Upg_Book - Name: Upg Book + Name: Upgrade Book Type: Weapon SubType: Book Buy: 20 @@ -12909,7 +12909,7 @@ Body: bonus bAspdRate,100; - Id: 1600 AegisName: Sinister_Rod - Name: Rod of Vicious Mind + Name: Vicious Mind Rod Type: Weapon SubType: Staff Buy: 20 @@ -13353,7 +13353,7 @@ Body: bonus bAtkEle,Ele_Wind; - Id: 1617 AegisName: Survival_Rod - Name: Survivor's Rod + Name: Survivor's Rod (Dex) Type: Weapon SubType: Staff Buy: 85000 @@ -13379,7 +13379,7 @@ Body: bonus bMaxHP,300; - Id: 1618 AegisName: Survival_Rod_ - Name: Survivor's Rod + Name: Survivor's Rod (Dex) Type: Weapon SubType: Staff Buy: 85000 @@ -13406,7 +13406,7 @@ Body: bonus bMaxHP,400; - Id: 1619 AegisName: Survival_Rod2 - Name: Survivor's Rod + Name: Survivor's Rod (Int) Type: Weapon SubType: Staff Buy: 85000 @@ -13432,7 +13432,7 @@ Body: bonus bMaxHP,300; - Id: 1620 AegisName: Survival_Rod2_ - Name: Survivor's Rod + Name: Survivor's Rod (Int) Type: Weapon SubType: Staff Buy: 85000 @@ -16881,7 +16881,7 @@ Body: bonus bDex,2; - Id: 1800 AegisName: Sinister_Fist - Name: Fist of Vicious Mind + Name: Vicious Mind Knuckle Type: Weapon SubType: Knuckle Buy: 20 @@ -18074,6 +18074,64 @@ Body: if (getrefine()>=7) { bonus2 bSkillAtk,"SR_TIGERCANNON",15; } + - Id: 1857 + AegisName: Local01_Claw + Name: Earth Dragon Claw + Type: Weapon + SubType: Knuckle + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Monk: true + Priest: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 1858 + AegisName: Local02_Claw + Name: Yinyang Claw + Type: Weapon + SubType: Knuckle + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Monk: true + Priest: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 1859 AegisName: Woe_Pist1_Z Name: Lesser Guild Member's Fist @@ -18482,7 +18540,7 @@ Body: bonus2 bSkillCooldown,"SR_RAMPAGEBLASTER",-1000; - Id: 1900 AegisName: Sinister_Viollin - Name: Violin of Vicious Mind + Name: Vicious Mind Violin Type: Weapon SubType: Musical Buy: 20 @@ -20675,7 +20733,7 @@ Body: bonus bBaseAtk,(((BaseLevel-70)/10)*5)+(.@r<=15?pow(.@r,2):225); - Id: 1996 AegisName: Sinister_Wire - Name: Wire of Vicious Mind + Name: Vicious Mind Wire Type: Weapon SubType: Whip Buy: 20 @@ -21188,7 +21246,7 @@ Body: bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30; - Id: 2015 AegisName: Upg_Staff - Name: Upg Staff + Name: Upgrade Staff Type: Weapon SubType: 2hStaff Buy: 20 @@ -21521,7 +21579,7 @@ Body: bonus bMatk,(((BaseLevel-70)/10)*5)+(.@r<=15?pow(.@r,2):225); - Id: 2026 AegisName: Sinister_Staff - Name: Staff of Vicious Mind + Name: Vicious Mind Staff Type: Weapon SubType: 2hStaff Buy: 20 @@ -23759,7 +23817,7 @@ Body: View: 3 - Id: 2149 AegisName: Upg_Guard - Name: Upg Guard + Name: Upgrade Guard Type: Armor Buy: 20 Weight: 150 @@ -23777,7 +23835,7 @@ Body: bonus bMaxHPrate,3; - Id: 2150 AegisName: Upg_Buckler - Name: Upg Buckler + Name: Upgrade Buckler Type: Armor Buy: 20 Weight: 300 @@ -23809,7 +23867,7 @@ Body: bonus bMaxHPrate,3; - Id: 2151 AegisName: Upg_Shield - Name: Upg Shield + Name: Upgrade Shield Type: Armor Buy: 20 Weight: 650 @@ -24492,8 +24550,7 @@ Body: bonus bVit,20; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield; - /*todo instead of autobonus2 bonus4 bAutoSpellWhenHit,"ALL_RAY_OF_PROTECTION",1,50,0;*/ - autobonus2 "{ sc_end SC_STUN; sc_end SC_SLEEP; sc_end SC_CURSE; sc_end SC_STONE; sc_end SC_POISON; sc_end SC_BLIND; sc_end SC_SILENCE; sc_end SC_BLEEDING; sc_end SC_CONFUSION; sc_end SC_FREEZE; bonus2 bResEff,Eff_Stun,10000; bonus2 bResEff,Eff_Sleep,10000; bonus2 bResEff,Eff_Curse,10000; bonus2 bResEff,Eff_Stone,10000; bonus2 bResEff,Eff_Poison,10000; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Silence,10000; bonus2 bResEff,Eff_Bleeding,10000; bonus2 bResEff,Eff_Confusion,10000; bonus2 bResEff,Eff_Freeze,10000; }",50,60000,BF_SHORT; + bonus4 bAutoSpellWhenHit,"ALL_RAY_OF_PROTECTION",1,50,0; - Id: 2183 AegisName: Impr_Angel's_Safeguard Name: Advanced Angelic Guard @@ -29691,7 +29748,7 @@ Body: bonus bSPrecovRate,6; - Id: 2459 AegisName: Upg_Shoes - Name: Upg Shoes + Name: Upgrade Shoes Type: Armor Buy: 20 Weight: 200 @@ -29711,7 +29768,7 @@ Body: bonus bMaxHPrate,3; - Id: 2460 AegisName: Upg_Boots - Name: Upg Boots + Name: Upgrade Boots Type: Armor Buy: 20 Weight: 300 @@ -29744,7 +29801,7 @@ Body: bonus bMaxHPrate,3; - Id: 2461 AegisName: Upg_Greave - Name: Upg Greaves + Name: Upgrade Greave Type: Armor Buy: 20 Weight: 400 @@ -31850,7 +31907,7 @@ Body: bonus2 bSubEle,Ele_Neutral,10; - Id: 2561 AegisName: Upg_Hood - Name: Upg Hood + Name: Upgrade Hood Type: Armor Weight: 100 Defense: 9 @@ -31865,7 +31922,7 @@ Body: bonus bMaxHPrate,3; - Id: 2562 AegisName: Upg_Muffler - Name: Upg Muffler + Name: Upgrade Muffler Type: Armor Buy: 20 Weight: 200 @@ -31885,7 +31942,7 @@ Body: bonus bMaxHPrate,3; - Id: 2563 AegisName: Upg_Manteau - Name: Upg Manteau + Name: Upgrade Manteau Type: Armor Buy: 20 Weight: 300 @@ -36995,7 +37052,7 @@ Body: autobonus "{ bonus bMaxHPrate,2; }",10,5000,BF_NORMAL,"{ specialeffect2 EF_ENHANCE; }"; - Id: 2828 AegisName: Upg_Clip - Name: Upg Clip + Name: Upgrade Clip Type: Armor Buy: 20 Weight: 100 @@ -38498,7 +38555,7 @@ Body: bonus bMaxSP,20; bonus bBaseAtk,(readparam(bStr)/10); if (readparam(bStr)>=110) - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; - Id: 2918 AegisName: Int_Glove Name: Int Glove @@ -38595,7 +38652,7 @@ Body: bonus bMaxSP,20; bonus bBaseAtk,(readparam(bStr)/10); if (readparam(bStr)>=110) - bonus2 bAddClass,Class_All,1; + bonus bAtkRate,1; - Id: 2924 AegisName: Int_Glove_ Name: Int Glove @@ -47137,7 +47194,7 @@ Body: bonus bDelayrate,-5; - Id: 5407 AegisName: Academy_Graduating_Cap - Name: Academy Completion Hat + Name: Academy Graduating Cap Type: Armor Weight: 500 Defense: 3 @@ -54224,7 +54281,7 @@ Body: bonus bMaxSP,30; - Id: 5787 AegisName: Tha_Maero_Mask - Name: Tha Maero Mask + Name: Thanatos's Maero Mask Type: Armor Buy: 20 Weight: 100 @@ -56439,7 +56496,7 @@ Body: bonus3 bAddMonsterDropItem,12027,RC_Undead,300; - Id: 5909 AegisName: C_Valkyrie_Circlet - Name: C Valkyrie Circlet + Name: Costume Valkyrie Circlet Type: Armor Locations: Costume_Head_Top: true @@ -56473,7 +56530,7 @@ Body: View: 906 - Id: 5914 AegisName: C_Flutter_Butterfly - Name: C Flutter Butterfly + Name: Costume Flutter Butterfly Type: Armor Locations: Costume_Head_Low: true @@ -56910,6 +56967,29 @@ Body: bonus2 bSubRace,RC_Formless,10; else if (.@r>=5) bonus2 bSubRace,RC_Formless,5; + - Id: 5953 + AegisName: Love_Guard_L + Name: "[Rental] Love Guard" + Type: Armor + Locations: + Head_Mid: true + Head_Top: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 716 + Script: | + bonus bUnbreakableHelm; + bonus bHealPower,2; + bonus bHealPower2,5; + bonus bAddItemHealRate,5; - Id: 5963 AegisName: Wing_Headphone Name: Wing Headphone @@ -57150,7 +57230,7 @@ Body: bonus2 bAddItemHealRate,547,150; - Id: 5979 AegisName: C_Angel_Fluttering - Name: C Angel Fluttering + Name: Costume Fluttering Angel's Wing Type: Armor Locations: Costume_Head_Low: true @@ -57162,7 +57242,7 @@ Body: hateffect HAT_EF_ANGEL_FLUTTERING,false; - Id: 5980 AegisName: C_Classical_Fhat - Name: C Classical Fhat + Name: Costume Classical Feather Hat Type: Armor Locations: Costume_Head_Top: true @@ -60411,7 +60491,7 @@ Body: bonus2 bAddEff,Eff_Stone,100+(getrefine()*50); - Id: 13071 AegisName: Upg_Dagger - Name: Upg Dagger + Name: Upgrade Dagger Type: Weapon SubType: Dagger Buy: 20 @@ -61770,7 +61850,7 @@ Body: bonus bHit,-5; - Id: 13115 AegisName: Upg_Revolver - Name: Upg Revolver + Name: Upgrade Revolver Type: Weapon SubType: Revolver Buy: 20 @@ -62025,12 +62105,11 @@ Body: Script: | .@r = getrefine(); bonus bBaseAtk,(.@r<=15?pow(.@r,2):225); - if (BaseLevel>=70) { - bonus bBaseAtk,(BaseLevel/10)*5; - } + if (BaseLevel>70) + bonus bBaseAtk,(((BaseLevel-70)/10)*5); - Id: 13128 AegisName: Sinister_Revolver - Name: Revolver of Vicious Mind + Name: Vicious Mind Revolver Type: Weapon SubType: Revolver Buy: 20 @@ -64218,7 +64297,7 @@ Body: bonus bBaseAtk,(((BaseLevel-70)/10)*5); - Id: 13328 AegisName: Sinister_Huuma - Name: Huuma Shuriken of Vicious Mind + Name: Vicious Mind Huuma Shuriken Type: Weapon SubType: Huuma Buy: 20 @@ -66329,7 +66408,7 @@ Body: bonus bBaseAtk,(((BaseLevel-70)/10)*5)+(.@r<=15?pow(.@r,2):225); - Id: 13455 AegisName: Sinister_Saber - Name: Saber of Vicious Mind + Name: Vicious Mind Saber Type: Weapon SubType: 1hSword Buy: 20 @@ -67172,6 +67251,72 @@ Body: if (.@r>=11) { bonus2 bSkillAtk,"GN_CARTCANNON",15; } + - Id: 13488 + AegisName: Local01_Sword + Name: Earth Dragon Sword + Type: Weapon + SubType: 1hSword + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 13489 + AegisName: Local02_Sword + Name: Yinyang Sword + Type: Weapon + SubType: 1hSword + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 13490 AegisName: Woe_Onehand_Sword1_Z Name: Lesser Guild Member's Flamberge @@ -67708,7 +67853,7 @@ Body: Refineable: true - Id: 15015 AegisName: Upg_Adv_Suit - Name: Upg Adv Suit + Name: Upgrade Adventure Suit Type: Armor Buy: 20 Weight: 150 @@ -67725,7 +67870,7 @@ Body: bonus bMaxHPrate,3; - Id: 15016 AegisName: Upg_Coat - Name: Upg Coat + Name: Upgrade Coat Type: Armor Buy: 20 Weight: 600 @@ -67746,7 +67891,7 @@ Body: bonus bMaxHPrate,3; - Id: 15017 AegisName: Upg_Saint_Robe - Name: Upg Saint Robe + Name: Upgrade Saint Robe Type: Armor Buy: 20 Weight: 300 @@ -67771,7 +67916,7 @@ Body: bonus bMaxHPrate,3; - Id: 15018 AegisName: Upg_Tights - Name: Upg Tights + Name: Upgrade Tights Type: Armor Buy: 20 Weight: 250 @@ -67793,7 +67938,7 @@ Body: bonus bMaxHPrate,3; - Id: 15019 AegisName: Upg_Thief_Cloth - Name: Upg Thief Cloth + Name: Upgrade Thief Cloth Type: Armor Buy: 20 Weight: 100 @@ -67817,7 +67962,7 @@ Body: bonus bMaxHPrate,3; - Id: 15020 AegisName: Upg_Mail - Name: Upg Mail + Name: Upgrade Mail Type: Armor Buy: 20 Weight: 1650 @@ -67844,7 +67989,7 @@ Body: bonus bMaxHPrate,3; - Id: 15021 AegisName: Upg_Formal_Dress - Name: Upg Formal Dress + Name: Upgrade Formal Dress Type: Armor Buy: 20 Weight: 150 @@ -68504,12 +68649,7 @@ Body: EquipLevelMin: 50 Refineable: true Script: | - bonus bStr,4; - bonus bInt,4; - bonus bVit,4; - bonus bDex,4; - bonus bAgi,4; - bonus bLuk,4; + bonus bAllStats,4; - Id: 15051 AegisName: Bakonawa_Armor Name: Bakunawa Scale Armor @@ -68796,6 +68936,24 @@ Body: Armor: true ArmorLevel: 1 Refineable: true + Script: | + bonus bDefEle,Ele_Ghost; + bonus bIntravision; + skill "WZ_STORMGUST",10; + skill "WL_CRIMSONROCK",5; + skill "WL_FROSTMISTY",5; + skill "WL_JACKFROST",5; + skill "SO_PSYCHIC_WAVE",5; + skill "SO_VACUUM_EXTREME",5; + skill "GM_SANDMAN",1; + skill "WZ_ESTIMATION",1; + skill "ST_FULLSTRIP",5; + skill "HW_MAGICPOWER",10; + skill "CH_SOULCOLLECT",1; + skill "MO_EXPLOSIONSPIRITS",5; + skill "MO_EXTREMITYFIST",5; + skill "CR_ACIDDEMONSTRATION",10; + /*Todo : Skill GM_FORCE_TRANSFER, GM_WIDE_RESURRECTION*/ - Id: 15066 AegisName: Engraved_Armor Name: Engraved Plate Armor @@ -78851,7 +79009,7 @@ Body: autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; - Id: 16019 AegisName: Upg_Mace - Name: Upg Mace + Name: Upgrade Mace Type: Weapon SubType: Mace Buy: 20 @@ -79502,7 +79660,7 @@ Body: bonus bBaseAtk,(((BaseLevel-70)/10)*5)+(.@r<=15?pow(.@r,2):225); - Id: 16041 AegisName: Sinister_Mace - Name: Mace of Vicious Mind + Name: Vicious Mind Mace Type: Weapon SubType: Mace Buy: 20 @@ -80201,6 +80359,82 @@ Body: if (getrefine()>=7) { bonus bCritAtkRate,7; } + - Id: 16083 + AegisName: Local01_Mace + Name: Earth Dragon Mace + Type: Weapon + SubType: Mace + Weight: 1200 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Acolyte: true + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Monk: true + Novice: true + Priest: true + SuperNovice: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 16084 + AegisName: Local02_Mace + Name: Yinyang Mace + Type: Weapon + SubType: Mace + Weight: 1200 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Acolyte: true + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Monk: true + Novice: true + Priest: true + SuperNovice: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 16085 AegisName: Woe_Club_1_Z Name: Lesser Guild Member's Morning Star @@ -80877,7 +81111,7 @@ Body: bonus3 bAutoSpell,"PF_SPIDERWEB",1,200; - Id: 18112 AegisName: Upg_Bow - Name: Upg Bow + Name: Upgrade Bow Type: Weapon SubType: Bow Buy: 20 @@ -81119,7 +81353,7 @@ Body: bonus bAtkRate,(.@r>=12?12:(.@r>=9?5:0)); - Id: 18121 AegisName: Sinister_Bow - Name: Bow of Vicious Mind + Name: Vicious Mind Bow Type: Weapon SubType: Bow Buy: 20 @@ -81389,7 +81623,7 @@ Body: bonus bBaseAtk,pow(getrefine(),2)*125/100; - Id: 18133 AegisName: Bow_of_Trust - Name: Thunder Bow + Name: Lightning Bow Type: Weapon SubType: Bow Weight: 1500 @@ -82085,6 +82319,68 @@ Body: bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM_MELEE",10; if (.@r>=11) bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; + - Id: 18172 + AegisName: Local01_Bow + Name: Earth Dragon Bow + Type: Weapon + SubType: Bow + Weight: 1000 + Attack: 130 + Range: 5 + Slots: 2 + Jobs: + Archer: true + BardDancer: true + Hunter: true + Rogue: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 18173 + AegisName: Local02_Bow + Name: Yinyang Bow + Type: Weapon + SubType: Bow + Weight: 1000 + Attack: 130 + Range: 5 + Slots: 2 + Jobs: + Archer: true + BardDancer: true + Hunter: true + Rogue: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 18174 AegisName: Hunter_Bow_IL Name: Illusion Hunter Bow @@ -82154,6 +82450,36 @@ Body: bonus bHit,20+(.@r-10); autobonus3 "{ .@r = getrefine(); bonus2 bSkillAtk,\"AC_DOUBLE\",20+(.@r-10); }",1000,10000,"AC_CONCENTRATION"; } + - Id: 18176 + AegisName: Sky_Lightning_Bow + Name: Thunder Bow + Type: Weapon + SubType: Bow + Weight: 900 + Attack: 120 + Range: 5 + Slots: 1 + Jobs: + Archer: true + BardDancer: true + Hunter: true + Rogue: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 60 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAspdRate,10; + bonus bLuk,5; + if (.@r>=7) { + bonus bCritical,7; + if (.@r>=9) { + bonus bAspd,1; + bonus2 bSkillAtk,"HT_BLITZBEAT",20; + } + } - Id: 18177 AegisName: Variant_Wing Name: Abyss Wing @@ -85579,6 +85905,9 @@ Body: EquipLevelMin: 40 Refineable: true View: 803 + Script: | + bonus bBaseAtk,10; + autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",30,7000,BF_WEAPON; - Id: 18652 AegisName: Vanargand_Helm Name: Vanargandr Helm @@ -89136,26 +89465,23 @@ Body: bonus bMaxHP,100; - Id: 18860 AegisName: Preschool_Hat - Name: Red Flower Hat + Name: Kindergartener's Hat Type: Armor Buy: 10 - Weight: 200 - Defense: 10 + Weight: 100 + Defense: 8 Slots: 1 Locations: Head_Top: true ArmorLevel: 1 EquipLevelMin: 50 Refineable: true - View: 1033 + View: 977 Script: | - bonus bDex,5; - bonus2 bSubDefEle,Ele_Earth,3; - bonus2 bSubRace,RC_DemiHuman,10; - bonus2 bSubRace,RC_Player_Human,10; - if (getrefine() >= 12) { - bonus bShortWeaponDamageReturn,5; - } + bonus bMaxHP,500; + bonus2 bSubEle,Ele_Fire,5; + if (getrefine() >= 6) + bonus2 bSubEle,Ele_Fire,5; - Id: 18861 AegisName: Zaha_Doll_Hat_J Name: Zaha Doll Hat @@ -91452,6 +91778,23 @@ Body: Costume_Head_Top: true ArmorLevel: 1 View: 564 + - Id: 19018 + AegisName: White_Choco_Bear + Name: White Chocolate Bear Hat + Type: Armor + Weight: 500 + Defense: 7 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 15 + Refineable: true + View: 966 + Script: | + bonus bFlee,5; + bonus bHealPower2,3; + bonus bAddItemHealRate,3; - Id: 19019 AegisName: Elemental_Crown Name: Elemental Crown @@ -92759,7 +93102,6 @@ Body: Name: Red Baby Dragon Type: Armor Weight: 700 - Range: 1 Slots: 1 Locations: Head_Top: true @@ -94671,6 +95013,24 @@ Body: NoAuction: true Script: | bonus bMaxSP,50; + - Id: 19219 + AegisName: JP_EV12 + Name: Drooping Chuni Penguin + Type: Armor + Buy: 20 + Weight: 120 + Defense: 12 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 1596 + Script: | + bonus bMaxHP,700; + bonus bMaxSP,200; + bonus2 bSubSize,Size_All,5; + bonus bHealPower2,5; + bonus bAddItemHealRate,5; - Id: 19221 AegisName: Golden_Angel_Band_TH Name: Golden Angel Hairband @@ -95475,7 +95835,6 @@ Body: Name: Red Baby Dragon Type: Armor Weight: 700 - Range: 1 Slots: 1 Locations: Head_Top: true @@ -96306,6 +96665,20 @@ Body: bonus2 bAddRace2,RC2_WERNER_LAB,.@dmg; bonus2 bMagicAddRace2,RC2_WERNER_LAB,.@dmg; bonus2 bSubRace2,RC2_WERNER_LAB,.@dmg; + - Id: 19388 + AegisName: Crow_Tengu_Mask_Z + Name: Celestial Crow Mask + Type: Armor + Weight: 30 + Defense: 10 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 60 + View: 1287 + Script: | + bonus bCritical,3; + bonus bCritAtkRate,3; - Id: 19389 AegisName: E_Oxygen_Mask Name: Advanced Oxygen Mask @@ -99256,8 +99629,6 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 905 - Script: | - bonus bUnbreakableHelm; - Id: 19588 AegisName: C_Cat_Hat_J Name: Costume Cat Hat @@ -99268,7 +99639,6 @@ Body: EquipLevelMin: 1 View: 182 Script: | - bonus bAllStats,3; bonus2 bExpAddClass,Class_All,30; - Id: 19589 AegisName: C_Fallen_Angel_Lost_J @@ -100389,8 +100759,6 @@ Body: Costume_Head_Top: true ArmorLevel: 1 View: 966 - Script: | - bonus bUnbreakableHelm; - Id: 19708 AegisName: Elizabeth Name: Costume White Snake Hat @@ -100628,11 +100996,6 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 39 - Script: | - bonus bStr,1; - bonus bAgi,1; - bonus bFlee,3; - bonus2 bSubRace,RC_Angel,3; - Id: 19732 AegisName: C_Goblin_Mask_04 Name: Costume Goblin Leader Mask @@ -100654,7 +101017,6 @@ Body: EquipLevelMin: 1 View: 115 Script: | - bonus bAllStats,1; bonus2 bExpAddClass,Class_All,10; - Id: 19734 AegisName: C_Binoculars @@ -100666,8 +101028,6 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 83 - Script: | - bonus bDex,1; - Id: 19735 AegisName: C_Fin_Helm Name: Costume Fin Helm @@ -100689,8 +101049,6 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 91 - Script: | - bonus2 bResEff,Eff_Poison,3000; - Id: 19737 AegisName: C_Corsair_K Name: Costume Refined Corsair @@ -100701,9 +101059,6 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 105 - Script: | - bonus bVit,3; - bonus bInt,3; - Id: 19738 AegisName: C_Detective_Hat_K Name: Costume Renown Detective's Cap @@ -100724,9 +101079,6 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 838 - Script: | - bonus2 bAddRace,RC_Brute,2; - bonus2 bAddRace,RC_Player_Doram,2; - Id: 19740 AegisName: C_Guildsman_Recruiter Name: Costume Guild Member Recruitment Hat @@ -101462,7 +101814,7 @@ Body: View: 418 - Id: 19812 AegisName: C_Large_Hibiscus - Name: Costume Big Hibiscus + Name: Costume Large Hibiscus Type: Armor Locations: Costume_Head_Top: true @@ -104645,7 +104997,7 @@ Body: View: 1266 - Id: 20132 AegisName: C_Subject_Aura - Name: Costume Aura Vicious Mind + Name: Costume Test Subject Aura Type: Armor Locations: Costume_Head_Low: true @@ -105418,7 +105770,7 @@ Body: Name: Costume Mermaid Bubbles Type: Armor Locations: - Costume_Head_Top: true + Costume_Head_Mid: true ArmorLevel: 1 EquipLevelMin: 1 View: 1299 @@ -105546,7 +105898,7 @@ Body: View: 1303 - Id: 20221 AegisName: C_Eyes_Of_Ifrit - Name: C Eyes Of Ifrit + Name: Costume Eyes Of Ifrit Type: Armor Locations: Costume_Head_Mid: true @@ -105723,7 +106075,7 @@ Body: View: 277 - Id: 20239 AegisName: C_Large_Ribbon_Muffler - Name: Costume Large Ribbon Muffler + Name: Costume Large Ribbon Muffler (Orange) Type: Armor Locations: Costume_Head_Low: true @@ -106602,7 +106954,7 @@ Body: View: 1305 - Id: 20335 AegisName: C_Teardrop - Name: Costume Watery Eyes + Name: Costume Teardrops Type: Armor Locations: Costume_Head_Mid: true @@ -106619,7 +106971,7 @@ Body: View: 855 - Id: 20337 AegisName: C_Mahican - Name: Costume Mohegan Mask + Name: Costume Mohican Mask Type: Armor Locations: Costume_Head_Mid: true @@ -106628,7 +106980,7 @@ Body: View: 331 - Id: 20338 AegisName: C_Rainbow_L_Octopus - Name: Costume Colorful Dancing Octopus + Name: Costume Dancing Colorful Octopus Type: Armor Locations: Costume_Head_Top: true @@ -106646,7 +106998,7 @@ Body: View: 1369 - Id: 20340 AegisName: C_Straight_Pony_BL - Name: Costume Straight Pony Black + Name: Costume Ponytail (Black) Type: Armor Locations: Costume_Head_Low: true @@ -106655,7 +107007,7 @@ Body: View: 1371 - Id: 20341 AegisName: C_Cowlick_BL - Name: Costume Bouncing Hair Black + Name: Costume Cowlick (Black) Type: Armor Locations: Costume_Head_Low: true @@ -106664,7 +107016,7 @@ Body: View: 1372 - Id: 20342 AegisName: C_Loose_Wave_Twin_BL - Name: Costume Loose Wave Twin + Name: Costume Twin Ponytail (Black) Type: Armor Locations: Costume_Head_Low: true @@ -107255,7 +107607,7 @@ Body: View: 1417 - Id: 20407 AegisName: C_Subject_Aura_Red - Name: Costume Vicious Mind Aura Crimson + Name: Costume Test Subject Aura (Red) Type: Armor Locations: Costume_Head_Low: true @@ -107307,7 +107659,7 @@ Body: View: 357 - Id: 20413 AegisName: C_Isabella_Brown_Ear - Name: C Piamette Hairband + Name: Costume Piamette Hairband Type: Armor Locations: Costume_Head_Top: true @@ -107564,7 +107916,7 @@ Body: View: 1447 - Id: 20441 AegisName: C_L_RibbonMuff_Red - Name: Costume Large Ribbon Muffler Red + Name: Costume Large Ribbon Muffler (Red) Type: Armor Locations: Costume_Head_Low: true @@ -108809,7 +109161,7 @@ Body: hateffect(HAT_EF_160LV_Genetic_YGreen,false); - Id: 20570 AegisName: C_HeartChocoBag - Name: Costume HeartChocoBag + Name: Costume Love Candy Pack Type: Armor Locations: Costume_Garment: true @@ -109070,7 +109422,7 @@ Body: ArmorLevel: 1 - Id: 20598 AegisName: C_GiantCatBag_JP_BL - Name: Costume Giant Cat Bag + Name: Costume Big Black Cat Type: Armor View: 80 Locations: @@ -109346,6 +109698,26 @@ Body: NoAuction: true ArmorLevel: 1 View: 183 + - Id: 20625 + AegisName: C_ROS2023_Cape_1 + Name: Costume Star Champion's Manteau + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 197 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + hateffect HAT_EF_C_ROS2023_CAPE_1,true; + UnEquipScript: | + hateffect HAT_EF_C_ROS2023_CAPE_1,false; - Id: 20626 AegisName: C_ROS2023_Cape_2 Name: 2023 ROS Winning Prize Manteau @@ -109362,6 +109734,10 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true + Script: | + hateffect HAT_EF_C_ROS2023_CAPE_2,true; + UnEquipScript: | + hateffect HAT_EF_C_ROS2023_CAPE_2,false; - Id: 20700 AegisName: Egir_Manteau Name: Egir Manteau @@ -110334,7 +110710,6 @@ Body: Type: Armor Weight: 700 Defense: 20 - Range: 1 Slots: 1 Locations: Garment: true @@ -111398,7 +111773,7 @@ Body: } - Id: 20819 AegisName: Oxygen_Bomb_K - Name: Oxygen Bottle + Name: Oxygen Tank Type: Armor Weight: 500 Slots: 1 @@ -114338,42 +114713,12 @@ Body: bonus bMdef,5; bonus2 bSubEle,Ele_Fire,50; bonus2 bSubEle,Ele_Earth,50; - bonus2 bAddDamageClass,20270,30; - bonus2 bAddDamageClass,20271,30; - bonus2 bAddDamageClass,20272,30; - bonus2 bAddDamageClass,20273,30; - bonus2 bAddDamageClass,20274,30; - bonus2 bAddDamageClass,20275,30; - bonus2 bAddDamageClass,20276,30; - bonus2 bAddDamageClass,20277,30; - bonus2 bAddDamageClass,20278,30; - bonus2 bAddDamageClass,20279,30; - bonus2 bAddDamageClass,20280,30; - bonus2 bAddMagicDamageClass,20270,30; - bonus2 bAddMagicDamageClass,20271,30; - bonus2 bAddMagicDamageClass,20272,30; - bonus2 bAddMagicDamageClass,20273,30; - bonus2 bAddMagicDamageClass,20274,30; - bonus2 bAddMagicDamageClass,20275,30; - bonus2 bAddMagicDamageClass,20276,30; - bonus2 bAddMagicDamageClass,20277,30; - bonus2 bAddMagicDamageClass,20278,30; - bonus2 bAddMagicDamageClass,20279,30; - bonus2 bAddMagicDamageClass,20280,30; - bonus2 bAddDefMonster,20270,60; - bonus2 bAddDefMonster,20271,60; - bonus2 bAddDefMonster,20272,60; - bonus2 bAddDefMonster,20273,60; - bonus2 bAddDefMonster,20274,60; - bonus2 bAddDefMonster,20275,60; - bonus2 bAddDefMonster,20276,60; - bonus2 bAddDefMonster,20277,60; - bonus2 bAddDefMonster,20278,60; - bonus2 bAddDefMonster,20279,60; - bonus2 bAddDefMonster,20280,60; + bonus2 bAddRace2,RC2_Illusion_Luanda,30; + bonus2 bMagicAddRace2,RC2_Illusion_Luanda,30; + bonus2 bSubRace2,RC2_Illusion_Luanda,60; - Id: 21000 AegisName: Upg_Twohand_Sword - Name: Upg Two-Handed Sword + Name: Uprage Two-handed Sword Type: Weapon SubType: 2hSword Buy: 20 @@ -114686,7 +115031,7 @@ Body: } - Id: 21012 AegisName: Some_Wizard_MagicSword - Name: Some Wizard MagicSword + Name: Magic Sword Type: Weapon SubType: 2hSword Weight: 2200 @@ -114706,7 +115051,7 @@ Body: Refineable: true - Id: 21013 AegisName: Hetairoi_Sword - Name: Hetairoi Sword + Name: Hetairoi's Sword Type: Weapon SubType: 2hSword Weight: 2200 @@ -114779,7 +115124,7 @@ Body: bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); - Id: 21016 AegisName: Sinister_Twohand_Sword - Name: Two-Handed Sword of Vicious Mind + Name: Vicious Mind Two-Handed Sword Type: Weapon SubType: 2hSword Buy: 20 @@ -115150,6 +115495,104 @@ Body: bonus bCritAtkRate,10; if (.@r>=9) bonus bUnbreakableWeapon; + - Id: 21041 + AegisName: Local01_T_Sword + Name: Earth Dragon Great Sword + Type: Weapon + SubType: 2hSword + Weight: 1400 + Attack: 180 + Range: 1 + Slots: 2 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 21042 + AegisName: Onimaru_BR + Name: Onimaru Sword + Type: Weapon + SubType: 2hSword + Weight: 4200 + Attack: 75 + Range: 1 + Slots: 1 + Jobs: + Knight: true + Classes: + All_Third: true + Fourth: true + Locations: + Both_Hand: true + WeaponLevel: 4 + EquipLevelMin: 130 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,2*(min(BaseLevel,120)/3); + if (BaseLevel>=95) { + bonus bBaseAtk,55; + if (BaseLevel>=108) { + bonus bBaseAtk,95; + if (BaseLevel>=120) { + bonus bBaseAtk,175; + } + } + } + if (.@r>=8) { + bonus bUnbreakableWeapon; + bonus3 bAutoSpell,"NPC_WIDECURSE",2,20; + if (.@r>=11) { + bonus4 bAutoSpellOnSkill,"LK_BERSERK","WS_OVERTHRUSTMAX",5,1000; + } + } + - Id: 21043 + AegisName: Local02_T_Sword + Name: Yinyang Great Sword + Type: Weapon + SubType: 2hSword + Weight: 1400 + Attack: 180 + Range: 1 + Slots: 2 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 21044 AegisName: Woe_Twohand_Sword1_Z Name: Lesser Guild Member's Craymore @@ -115513,7 +115956,7 @@ Body: All_Third: true Fourth: true Locations: - Right_Hand: true + Both_Hand: true WeaponLevel: 4 EquipLevelMin: 100 Refineable: true @@ -116708,6 +117151,26 @@ Body: else if (.@r>13) .@i=13; bonus bUseSPrate,-5-.@i; + - Id: 22038 + AegisName: Shoes_Of_Hope + Name: Desired Shoes + Type: Armor + Buy: 20 + Weight: 100 + Defense: 3 + Slots: 1 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + bonus bMaxHPrate,5; + bonus bMaxSPrate,5; + if (getrefine()>=6) { + bonus bMaxHPrate,5; + bonus bMaxSPrate,5; + } - Id: 22042 AegisName: Talaria_Shoes Name: Talaria Shoes @@ -119555,7 +120018,7 @@ Body: bonus bMatk,15; - Id: 22202 AegisName: Temporal_Boots_TW - Name: Temporal Boots + Name: Exotic Temporal Boots Type: Armor Weight: 600 Defense: 25 @@ -134896,6 +135359,66 @@ Body: bonus bAtkRate,5; if (.@r>=9) bonus2 bAddRace,RC_All,15; + - Id: 26017 + AegisName: Local01_T_Spear + Name: Earth Dragon Spear + Type: Weapon + SubType: 2hSpear + Weight: 1400 + Attack: 180 + Range: 3 + Slots: 2 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 26018 + AegisName: Local02_T_Spear + Name: Yinyang Spear + Type: Weapon + SubType: 2hSpear + Weight: 1400 + Attack: 180 + Range: 3 + Slots: 2 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 26019 AegisName: Woe_T_Lance1_Z Name: Lesser Guild Member's Lance @@ -134909,7 +135432,7 @@ Body: Knight: true Swordman: true Locations: - Right_Hand: true + Both_Hand: true WeaponLevel: 3 EquipLevelMin: 70 Refineable: true @@ -135096,6 +135619,36 @@ Body: bonus2 bMagicAddEle,Ele_Wind,15; bonus2 bMagicAddEle,Ele_Earth,15; } + - Id: 26103 + AegisName: JP_Rod01_L + Name: "[Rental] Holy Stick" + Type: Weapon + SubType: Staff + Buy: 20 + Weight: 500 + Attack: 50 + MagicAttack: 140 + Range: 1 + Jobs: + Monk: true + Priest: true + Locations: + Right_Hand: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + WeaponLevel: 4 + EquipLevelMin: 70 + Refineable: true + Script: | + bonus2 bVariableCastrate,"AL_HOLYLIGHT",-25; + bonus2 bVariableCastrate,"PR_MAGNUS",-25; + bonus2 bVariableCastrate,"PR_TURNUNDEAD",-25; - Id: 26104 AegisName: Blue_Staff Name: Blue Staff @@ -135600,6 +136153,44 @@ Body: } } } + - Id: 26142 + AegisName: Local01_Wand + Name: Earth Dragon Wand + Type: Weapon + SubType: Staff + Weight: 800 + Attack: 40 + MagicAttack: 130 + Range: 1 + Slots: 2 + Jobs: + Acolyte: true + Mage: true + Monk: true + Novice: true + Priest: true + Sage: true + SoulLinker: true + SuperNovice: true + Wizard: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus2 bMagicAddRace,RC_Formless,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bMagicAddRace,RC_Formless,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bMagicAddRace,RC_Formless,10; + bonus2 bMagicAddEle,Ele_Earth,10; + } + } - Id: 26143 AegisName: Diva_Foxtail Name: Diva Foxtail @@ -135665,6 +136256,44 @@ Body: bonus bHit,5; bonus bMatkRate,4; } + - Id: 26145 + AegisName: Local02_Wand + Name: Yinyang Wand + Type: Weapon + SubType: Staff + Weight: 800 + Attack: 40 + MagicAttack: 130 + Range: 1 + Slots: 2 + Jobs: + Acolyte: true + Mage: true + Monk: true + Novice: true + Priest: true + Sage: true + SoulLinker: true + SuperNovice: true + Wizard: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus2 bMagicAddRace,RC_Demon,5; + bonus2 bMagicAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bMagicAddRace,RC_Demon,5; + bonus2 bMagicAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bMagicAddRace,RC_Demon,10; + bonus2 bMagicAddEle,Ele_Fire,10; + } + } - Id: 26146 AegisName: Woe_Healstaff1_Z Name: Lesser Guild Member's Healing Staff @@ -135741,6 +136370,32 @@ Body: autobonus3 "{ bonus bNoGemStone; }",1000,10000,"SA_VIOLENTGALE"; autobonus3 "{ bonus bNoGemStone; }",1000,10000,"SA_VOLCANO"; } + - Id: 26148 + AegisName: Owl_D_Stick + Name: Owl.D Stick + Type: Weapon + SubType: Staff + Weight: 800 + Attack: 60 + MagicAttack: 140 + Range: 1 + Jobs: + Acolyte: true + Monk: true + Priest: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 60 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bVariableCastrate,-10; + if (.@r>=7) + bonus bHealPower,12; + if (.@r>=9) + bonus2 bSkillAtk,"PR_MAGNUS",20; - Id: 26149 AegisName: Variant_Wand Name: Abyss Wand @@ -136165,9 +136820,6 @@ Body: Jobs: Spirit_Handler: true Summoner: true - Classes: - All_Third: true - Fourth: true Locations: Right_Hand: true WeaponLevel: 4 @@ -136755,6 +137407,101 @@ Body: bonus2 bSkillAtk,"CG_ARROWVULCAN",50; bonus2 bSubRace,RC_DemiHuman,5; } + - Id: 26207 + AegisName: Local01_Book + Name: Earth Dragon Book + Type: Weapon + SubType: Book + Weight: 800 + Attack: 130 + MagicAttack: 130 + Range: 1 + Slots: 2 + Jobs: + Priest: true + Sage: true + StarGladiator: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + bonus2 bMagicAddRace,RC_Formless,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + bonus2 bMagicAddRace,RC_Formless,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + bonus2 bMagicAddRace,RC_Formless,10; + bonus2 bMagicAddEle,Ele_Earth,10; + } + } + - Id: 26208 + AegisName: Local01_Whip + Name: Earth Dragon Whip + Type: Weapon + SubType: Whip + Weight: 800 + Attack: 130 + Range: 2 + Slots: 2 + Jobs: + BardDancer: true + Gender: Female + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 26209 + AegisName: Local02_Whip + Name: Yinyang Whip + Type: Weapon + SubType: Whip + Weight: 800 + Attack: 130 + Range: 2 + Slots: 2 + Jobs: + BardDancer: true + Gender: Female + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 26210 AegisName: Woe_Whip1_Z Name: Lesser Guild Member's Lariat @@ -137150,7 +137897,7 @@ Body: bonus bBaseAtk,(((BaseLevel-70)/10)*5)+(.@r<=15?pow(.@r,2):225); - Id: 28008 AegisName: Sinister_Katar - Name: Katar of Vicious Mind + Name: Vicious Mind Katar Type: Weapon SubType: Katar Buy: 20 @@ -137501,6 +138248,62 @@ Body: if (getrefine()>=7) { bonus bCritAtkRate,7; } + - Id: 28034 + AegisName: Local01_Katar + Name: Earth Dragon Katar + Type: Weapon + SubType: Katar + Weight: 1200 + Attack: 150 + Range: 1 + Slots: 2 + Jobs: + Assassin: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 28035 + AegisName: Local02_Katar + Name: Yinyang Katar + Type: Weapon + SubType: Katar + Weight: 1200 + Attack: 150 + Range: 1 + Slots: 2 + Jobs: + Assassin: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 28036 AegisName: Woe_Katar1_Z Name: Lesser Guild Member's Jamadhar @@ -138101,7 +138904,7 @@ Body: bonus bUnbreakableWeapon; - Id: 28107 AegisName: Sinister_Twohand_Axe - Name: Two Handed Axe of Vicious Mind + Name: Vicious Mind Two-Handed Axe Type: Weapon SubType: 2hAxe Buy: 20 @@ -138492,6 +139295,67 @@ Body: if (.@r>=11) { bonus2 bAddSize,Size_All,15; } + - Id: 28131 + AegisName: Local01_T_Axe + Name: Earth Dragon Axe + Type: Weapon + SubType: 2hSword + Weight: 1400 + Attack: 180 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Blacksmith: true + Merchant: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 28132 + AegisName: Local02_T_Axe + Name: Yinyang Axe + Type: Weapon + SubType: 2hSword + Weight: 1400 + Attack: 180 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Blacksmith: true + Merchant: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 28133 AegisName: Woe_Twohand_Axe1_Z Name: Lesser Guild Member's Two-Handed Axe @@ -139992,6 +140856,40 @@ Body: } } } + - Id: 28300 + AegisName: Kotone_Of_Ninja + Name: Shinobi Short Sword + Type: Armor + Weight: 600 + Defense: 3 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 75 + Script: | + bonus bVit,1; + bonus bLuk,1; + bonus bMdef,1; + - Id: 28301 + AegisName: Ball_Of_Huuma + Name: Fuma's Jewel + Type: Armor + Weight: 600 + Defense: 3 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 75 + Script: | + bonus bInt,1; + bonus bDex,1; + bonus bMdef,1; - Id: 28302 AegisName: Vesper_Core01_ Name: Vesper Core 01 @@ -140415,6 +141313,33 @@ Body: bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; } + - Id: 28340 + AegisName: A_Drop_Of_Heal + Name: Recovery Drop + Type: Armor + Weight: 50 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 1 + Script: | + bonus bHealPower,2; + bonus bHealPower2,2; + bonus bAddItemHealRate,2; + - Id: 28341 + AegisName: Sachet + Name: Dragon Boat Festival Sachet + Type: Armor + Weight: 100 + Defense: 5 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 1 + Script: | + skill "AL_INCAGI",3; + bonus bAspd,1; - Id: 28342 AegisName: Critical_Anklet Name: Critical Anklet @@ -140429,6 +141354,97 @@ Body: Script: | bonus bCritical,5; bonus bMdef,3; + - Id: 28346 + AegisName: Star_Egg_Badge + Name: Star Egg Badge + Type: Armor + Weight: 100 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 1 + Script: | + bonus bMaxHP,200; + bonus bMaxSP,50; + - Id: 28347 + AegisName: Icarus_Wing_S + Name: Icarus Wings + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Hunter: true + Classes: + All_Upper: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + bonus bMaxSP,50; + bonus bDex,3; + - Id: 28348 + AegisName: Bowman_Scarf_S + Name: Bowman Scarf + Type: Armor + Weight: 200 + Slots: 1 + Jobs: + Hunter: true + Classes: + All_Upper: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + bonus bMaxSP,50; + bonus bDex,3; + - Id: 28349 + AegisName: Cursed_Star_S + Name: Cursed Star + Type: Armor + Weight: 200 + Slots: 1 + Jobs: + Archer: true + BardDancer: true + Hunter: true + Classes: + All_Upper: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 84 + Script: | + bonus bMdef,3; + bonus bDex,2; + bonus bLuk,-1; + bonus2 bHPLossRate,50,10000; + bonus3 bAddEff,Eff_Curse,200,ATF_WEAPON|ATF_LONG|ATF_TARGET; + UnEquipScript: | + heal -300,0; + - Id: 28350 + AegisName: Shinobi's_Sash_S + Name: Shinobi Sash + Type: Armor + Weight: 300 + Slots: 1 + Defense: 1 + Jobs: + Assassin: true + KagerouOboro: true + Ninja: true + Rogue: true + Thief: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 30 + Script: | + bonus bStr,1; + bonus bAgi,1; + bonus bMdef,1; - Id: 28351 AegisName: Whike_Black_Tail_S Name: Whike Black Tail @@ -143112,7 +144128,6 @@ Body: bonus bLuk,3*(.@a/18); bonus bMaxHPrate,(.@d/18); bonus bFlee2,(.@a/18); - bonus bMaxHPrate,(.@d/18); bonus bVariableCastrate,-(.@v/18); bonus bDelayrate,-(.@i/18); bonus2 bIgnoreDefClassRate,Class_All,15*(.@l/18); @@ -143736,7 +144751,7 @@ Body: bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); - Id: 28605 AegisName: Sinister_Book - Name: Book of Vicious Mind + Name: Vicious Mind Book Type: Weapon SubType: Book Buy: 20 @@ -143942,7 +144957,7 @@ Body: bonus bMatk,pow(getrefine(),2); - Id: 28612 AegisName: Book_Of_The_Apo_IL - Name: Illusion Apocalypse + Name: Illusion Book of the Apocalypse Type: Weapon SubType: Book Weight: 800 @@ -144207,6 +145222,43 @@ Body: bonus2 bAddRace,RC_Undead,.@val; bonus2 bMagicAddRace,RC_Demon,.@val; bonus2 bMagicAddRace,RC_Undead,.@val; + - Id: 28625 + AegisName: Local02_Book + Name: Yinyang Book + Type: Weapon + SubType: Book + Weight: 800 + Attack: 130 + MagicAttack: 130 + Range: 1 + Slots: 2 + Jobs: + Priest: true + Sage: true + StarGladiator: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + bonus2 bMagicAddRace,RC_Demon,5; + bonus2 bMagicAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + bonus2 bMagicAddRace,RC_Demon,5; + bonus2 bMagicAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + bonus2 bMagicAddRace,RC_Demon,10; + bonus2 bMagicAddEle,Ele_Fire,10; + } + } - Id: 28626 AegisName: Tablet_IL Name: Illusion Tablet @@ -144266,6 +145318,40 @@ Body: bonus2 bMagicAddClass,Class_All,5; bonus2 bSubRace,RC_Player_Human,5; } + - Id: 28628 + AegisName: Prohibited_Grimoire + Name: Forbidden Grimoire + Type: Weapon + SubType: Book + Weight: 500 + Attack: 90 + MagicAttack: 120 + Range: 1 + Slots: 1 + Jobs: + Priest: true + Sage: true + StarGladiator: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 60 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bSkillAtk,"MG_FIREBOLT",5; + bonus2 bSkillAtk,"MG_COLDBOLTBOLT",5; + bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",5; + if (.@r>=7) { + bonus2 bSkillAtk,"MG_FIREBOLT",5; + bonus2 bSkillAtk,"MG_COLDBOLTBOLT",5; + bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",5; + if (.@r>=9) { + bonus2 bSkillAtk,"MG_FIREBOLT",10; + bonus2 bSkillAtk,"MG_COLDBOLTBOLT",10; + bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",10; + } + } - Id: 28629 AegisName: Circuit_Board_OS Name: Circuit Board-OS @@ -144338,7 +145424,7 @@ Body: } - Id: 28631 AegisName: OneSkyOneSun - Name: Thousand Sun + Name: One Sky One Sun Type: Weapon SubType: Book Weight: 900 @@ -144409,7 +145495,7 @@ Body: } - Id: 28633 AegisName: Boltigin - Name: Boltijin + Name: Boltigin Type: Weapon SubType: Book Buy: 20 @@ -144788,7 +145874,7 @@ Body: bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); - Id: 28706 AegisName: Sinister_Dagger - Name: Dagger of Vicious Mind + Name: Vicious Mind Dagger Type: Weapon SubType: Dagger Buy: 20 @@ -145635,6 +146721,150 @@ Body: } } } + - Id: 28747 + AegisName: Local01_Dagger + Name: Earth Dragon Dagger + Type: Weapon + SubType: Dagger + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Assassin: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Rogue: true + Swordman: true + Thief: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 28748 + AegisName: Local01_Asura + Name: Earth Dragon Nindo + Type: Weapon + SubType: Dagger + Weight: 800 + Attack: 130 + MagicAttack: 70 + Range: 1 + Slots: 2 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + bonus2 bMagicAddRace,RC_Formless,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + bonus2 bMagicAddRace,RC_Formless,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + bonus2 bMagicAddRace,RC_Formless,10; + bonus2 bMagicAddEle,Ele_Earth,10; + } + } + - Id: 28749 + AegisName: Local02_Dagger + Name: Yinyang Dagger + Type: Weapon + SubType: Dagger + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Assassin: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Rogue: true + Swordman: true + Thief: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } + - Id: 28750 + AegisName: Local02_Asura + Name: Yinyang Nindo + Type: Weapon + SubType: Dagger + Weight: 800 + Attack: 130 + MagicAttack: 70 + Range: 1 + Slots: 2 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + bonus2 bMagicAddRace,RC_Demon,5; + bonus2 bMagicAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + bonus2 bMagicAddRace,RC_Demon,5; + bonus2 bMagicAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + bonus2 bMagicAddRace,RC_Demon,10; + bonus2 bMagicAddEle,Ele_Fire,10; + } + } - Id: 28751 AegisName: Woe_Knife1_Z Name: Lesser Guild Member's Gladius @@ -145732,6 +146962,30 @@ Body: bonus2 bAddRace,RC_All,5; bonus2 bSubRace,RC_Player_Human,5; } + - Id: 28754 + AegisName: Koikiri + Name: Yodo Koikiri + Type: Weapon + SubType: Dagger + Weight: 700 + Attack: 120 + Range: 1 + Slots: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 60 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bSkillAtk,"NJ_KIRIKAGE",5; + if (.@r>=7) + bonus2 bSkillAtk,"NJ_KIRIKAGE",5; + if (.@r>=9) + bonus2 bSkillAtk,"NJ_KIRIKAGE",10; - Id: 28755 AegisName: Kuroiro_OS Name: Kuroiro-OS @@ -146790,6 +148044,60 @@ Body: bonus bCritAtkRate,5; } } + - Id: 28917 + AegisName: JP_Shield01_L + Name: "[Rental] Gaia Shield" + Type: Armor + Buy: 20 + Weight: 2000 + Defense: 150 + Locations: + Left_Hand: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + View: 1 + Script: | + .@r = getrefine(); + bonus bUnbreakableShield; + bonus bMdef,10; + bonus2 bSubEle,Ele_Earth,10; + bonus2 bAddEle,Ele_Earth,5; + bonus2 bMagicAddEle,Ele_Earth,5; + if (.@r>=6) { + bonus2 bSubEle,Ele_Earth,15; + bonus2 bAddEle,Ele_Earth,10; + bonus2 bMagicAddEle,Ele_Earth,10; + } + if (.@r>=8) { + if (readparam(bStr)>=90) { + bonus bBaseAtk,50; + } + if (readparam(bAgi)>=90) { + bonus bAspdRate,5; + } + if (readparam(bVit)>=90) { + bonus bHealPower2,10; + bonus bAddItemHealRate,10; + } + if (readparam(bInt)>=90) { + bonus bMatk,30; + } + if (readparam(bDex)>=90) { + bonus bVariableCastrate,-5; + } + if (readparam(bLuk)>=90) { + bonus bCritAtkRate,5; + } + } - Id: 28918 AegisName: Shield_Of_Chaos Name: Shield of Chaos @@ -147179,6 +148487,35 @@ Body: Script: | bonus bMdef,5; bonus2 bSubSize,Size_All,(getrefine() >= 8 ? 25 : 15); + - Id: 28949 + AegisName: Jewel_Shield + Name: Jewel Shield + Type: Armor + Weight: 1600 + Defense: 180 + Jobs: + Alchemist: true + Assassin: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Rogue: true + Swordman: true + Thief: true + Locations: + Left_Hand: true + ArmorLevel: 1 + EquipLevelMin: 60 + Refineable: true + View: 1 + Script: | + .@r = getrefine(); + bonus bMaxHP,200; + if (.@r>=7) + bonus bAspd,1; + if (.@r>=9) + bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; - Id: 28950 AegisName: Variant_Shield Name: Abyss Shield @@ -148903,7 +150240,7 @@ Body: View: 1567 - Id: 31154 AegisName: C_Cap - Name: C Cap + Name: Costume Cap Type: Armor Locations: Costume_Head_Top: true @@ -149085,7 +150422,7 @@ Body: View: 419 - Id: 31174 AegisName: C_Weird_Bread_Bag - Name: C Suspicious Bread Bag + Name: Costume Suspicious Bread Bag Type: Armor Locations: Costume_Head_Top: true @@ -149103,7 +150440,7 @@ Body: View: 755 - Id: 31176 AegisName: C_Looking - Name: C Looking + Name: Costumen Always Watching Type: Armor Locations: Costume_Head_Top: true @@ -149112,7 +150449,7 @@ Body: View: 1577 - Id: 31177 AegisName: C_Tail_Hat - Name: C Tail Hat + Name: Costume Tail Hat Type: Armor Locations: Costume_Head_Top: true @@ -149121,7 +150458,7 @@ Body: View: 1578 - Id: 31178 AegisName: C_Flame_Muffler - Name: C Fire Muffler + Name: Costume Fire Muffler Type: Armor Locations: Costume_Head_Low: true @@ -149130,7 +150467,7 @@ Body: View: 1579 - Id: 31179 AegisName: C_Wolf_Masquerade - Name: C Wolf Masquerade + Name: Costume Wolf Masquerade Type: Armor Locations: Costume_Head_Top: true @@ -149139,7 +150476,7 @@ Body: View: 1580 - Id: 31180 AegisName: C_Shura_King_Pledge - Name: C King Sura Headband + Name: Costume King Sura Headband Type: Armor Locations: Costume_Head_Top: true @@ -149274,7 +150611,7 @@ Body: View: 270 - Id: 31195 AegisName: C_Choco_Minihat - Name: Costume Mini Chocolate Hat + Name: Costume Chocolate Mini Hat Type: Armor Locations: Costume_Head_Top: true @@ -149285,7 +150622,7 @@ Body: bonus2 bExpAddRace,RC_All,7; - Id: 31196 AegisName: C_JP_EV12 - Name: C Drooping Chuni Penguin + Name: Costume Drooping Chuni Penguin Type: Armor Locations: Costume_Head_Top: true @@ -149303,7 +150640,7 @@ Body: View: 1598 - Id: 31198 AegisName: C_Octopus_Hat_J - Name: C Octopus Hat + Name: Costume Octopus Hat Type: Armor Locations: Costume_Head_Top: true @@ -149312,7 +150649,7 @@ Body: View: 538 - Id: 31199 AegisName: C_Weird_Goatee - Name: C Weird Beard + Name: Costume Weird Beard Type: Armor Locations: Costume_Head_Low: true @@ -149321,7 +150658,7 @@ Body: View: 21 - Id: 31200 AegisName: C_Wrapping_Ribbon - Name: C Wrapping Ribbon + Name: Costume Wrapping Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -149330,7 +150667,7 @@ Body: View: 1599 - Id: 31201 AegisName: C_Royal_Rabbit_Crown - Name: C Royal Rabbit Crown + Name: Costume Royal Rabbit Crown Type: Armor Locations: Costume_Head_Top: true @@ -149339,7 +150676,7 @@ Body: View: 1600 - Id: 31202 AegisName: C_Dog_Officer - Name: C Dog Officer + Name: Costume Dog Officer Type: Armor Locations: Costume_Head_Top: true @@ -149348,7 +150685,7 @@ Body: View: 1601 - Id: 31203 AegisName: C_Charcoal_Stove - Name: C Charcoal Stove + Name: Costume Charcoal Stove Type: Armor Locations: Costume_Head_Mid: true @@ -149357,7 +150694,7 @@ Body: View: 1602 - Id: 31204 AegisName: C_Drooping_White_Kitty - Name: C Drooping White Cat + Name: Costume Drooping White Cat Type: Armor Locations: Costume_Head_Top: true @@ -149366,7 +150703,7 @@ Body: View: 378 - Id: 31205 AegisName: C_L_Orc_Hero_Helm - Name: C Large Orc Hero Helm + Name: Costume Large Orc Hero Helmet Type: Armor Locations: Costume_Head_Top: true @@ -149376,7 +150713,7 @@ Body: View: 381 - Id: 31206 AegisName: C_Rune_Hairband - Name: C Rune Hairband + Name: Costume Rune Knot Headband Type: Armor Locations: Costume_Head_Top: true @@ -149386,7 +150723,7 @@ Body: View: 564 - Id: 31207 AegisName: C_Dokkebi_Mask - Name: C Dokkebi Mask + Name: Costume Dokkebi Mask Type: Armor Locations: Costume_Head_Mid: true @@ -149396,7 +150733,7 @@ Body: View: 689 - Id: 31208 AegisName: C_Straight_Long_YL - Name: C Straight_Long Yellow + Name: Costume Straight Long (Yellow) Type: Armor Locations: Costume_Head_Low: true @@ -149405,7 +150742,7 @@ Body: View: 1603 - Id: 31209 AegisName: C_Straight_Long_WH - Name: C Straight Long White + Name: Costume Straight Long (White) Type: Armor Locations: Costume_Head_Low: true @@ -149414,7 +150751,7 @@ Body: View: 1604 - Id: 31210 AegisName: C_Side_Pigtail_BU - Name: C Side Pigtail Blue + Name: Costume Side Pigtail (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -149423,7 +150760,7 @@ Body: View: 1605 - Id: 31211 AegisName: C_Side_Pigtail_RD - Name: C Side Pigtail Red + Name: Costume Side Pigtail (Red) Type: Armor Locations: Costume_Head_Low: true @@ -149432,7 +150769,7 @@ Body: View: 1606 - Id: 31212 AegisName: C_Side_Pigtail_YL - Name: C Side Pigtail Yellow + Name: Costume Side Pigtail (Yellow) Type: Armor Locations: Costume_Head_Low: true @@ -149441,7 +150778,7 @@ Body: View: 1607 - Id: 31213 AegisName: C_Side_Pigtail_GN - Name: C Side Pigtail Green + Name: Costume Side Pigtail (Green) Type: Armor Locations: Costume_Head_Low: true @@ -149450,7 +150787,7 @@ Body: View: 1608 - Id: 31214 AegisName: C_Side_Pigtail_BL - Name: C Side Pigtail Black + Name: Costume Side Pigtail (Black) Type: Armor Locations: Costume_Head_Low: true @@ -149459,7 +150796,7 @@ Body: View: 1609 - Id: 31215 AegisName: C_Side_Pigtail_WH - Name: C Side Pigtail White + Name: Costume Side Pigtail (White) Type: Armor Locations: Costume_Head_Low: true @@ -149468,7 +150805,7 @@ Body: View: 1610 - Id: 31216 AegisName: C_Side_Pigtail_OM - Name: C Side Pigtail Brown + Name: Costume Side Pigtail (Brown) Type: Armor Locations: Costume_Head_Low: true @@ -149477,7 +150814,7 @@ Body: View: 1611 - Id: 31217 AegisName: C_Side_Pigtail_PP - Name: C Side Pigtail Purple + Name: Costume Side Pigtail (Purple) Type: Armor Locations: Costume_Head_Low: true @@ -149486,7 +150823,7 @@ Body: View: 1612 - Id: 31218 AegisName: C_Low_Pony_BU - Name: C Low Pony Blue + Name: Costume Low Pony (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -149495,7 +150832,7 @@ Body: View: 1613 - Id: 31219 AegisName: C_Low_Pony_RD - Name: C Low Pony Red + Name: Costume Low Pony (Red) Type: Armor Locations: Costume_Head_Low: true @@ -149504,7 +150841,7 @@ Body: View: 1614 - Id: 31220 AegisName: C_Low_Pony_YL - Name: C Low Pony Yellow + Name: Costume Low Pony (Yellow) Type: Armor Locations: Costume_Head_Low: true @@ -149513,7 +150850,7 @@ Body: View: 1615 - Id: 31221 AegisName: C_Low_Pony_GN - Name: C Low Pony Green + Name: Costume Low Pony (Green) Type: Armor Locations: Costume_Head_Low: true @@ -149522,7 +150859,7 @@ Body: View: 1616 - Id: 31222 AegisName: C_Low_Pony_BL - Name: C Low Pony Black + Name: Costume Low Pony (Black) Type: Armor Locations: Costume_Head_Low: true @@ -149531,7 +150868,7 @@ Body: View: 1617 - Id: 31223 AegisName: C_Low_Pony_WH - Name: C Low Pony White + Name: Costume Low Pony (White) Type: Armor Locations: Costume_Head_Low: true @@ -149540,7 +150877,7 @@ Body: View: 1618 - Id: 31224 AegisName: C_Low_Pony_OM - Name: C Low Pony Brown + Name: Costume Low Pony (Brown) Type: Armor Locations: Costume_Head_Low: true @@ -149549,7 +150886,7 @@ Body: View: 1619 - Id: 31225 AegisName: C_Low_Pony_PP - Name: C Low Pony Purple + Name: Costume Low Pony (Purple) Type: Armor Locations: Costume_Head_Low: true @@ -149558,7 +150895,7 @@ Body: View: 1620 - Id: 31226 AegisName: C_Long_Twin_BU - Name: C Long Twin Blue + Name: Costume Long Twin (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -149567,7 +150904,7 @@ Body: View: 1621 - Id: 31227 AegisName: C_Long_Twin_RD - Name: C Long Twin Red + Name: Costume Long Twin (Red) Type: Armor Locations: Costume_Head_Low: true @@ -149576,7 +150913,7 @@ Body: View: 1622 - Id: 31228 AegisName: C_Long_Twin_YL - Name: C Long Twin Yellow + Name: Costume Long Twin (Yellow) Type: Armor Locations: Costume_Head_Low: true @@ -149585,7 +150922,7 @@ Body: View: 1623 - Id: 31229 AegisName: C_Long_Twin_GN - Name: C Long Twin Yellow + Name: Costume Long Twin (Green) Type: Armor Locations: Costume_Head_Low: true @@ -149594,7 +150931,7 @@ Body: View: 1624 - Id: 31230 AegisName: C_Long_Twin_BL - Name: C Long Twin Yellow + Name: Costume Long Twin (Black) Type: Armor Locations: Costume_Head_Low: true @@ -149603,7 +150940,7 @@ Body: View: 1625 - Id: 31231 AegisName: C_Long_Twin_WH - Name: C Long Twin Yellow + Name: Costume Long Twin (White) Type: Armor Locations: Costume_Head_Low: true @@ -149612,7 +150949,7 @@ Body: View: 1626 - Id: 31232 AegisName: C_Long_Twin_OM - Name: C Long Twin Yellow + Name: Costume Long Twin (Brown) Type: Armor Locations: Costume_Head_Low: true @@ -149621,7 +150958,7 @@ Body: View: 1627 - Id: 31233 AegisName: C_Long_Twin_PP - Name: C Long Twin Yellow + Name: Costume Long Twin (Purple) Type: Armor Locations: Costume_Head_Low: true @@ -149630,7 +150967,7 @@ Body: View: 1628 - Id: 31234 AegisName: C_Persika_J - Name: C Persica + Name: Costume Persica Type: Armor Locations: Costume_Head_Mid: true @@ -149639,7 +150976,7 @@ Body: View: 659 - Id: 31235 AegisName: C_Large_Ribbonmuffler_V - Name: C Large Ribbon Muffler Mid + Name: Costume Large Ribbon Muffler (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149648,7 +150985,7 @@ Body: View: 1312 - Id: 31236 AegisName: C_Subject_Aura_V - Name: C Vicious Mind Aura Mid + Name: Costume Aura of Thought (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149657,7 +150994,7 @@ Body: View: 1267 - Id: 31237 AegisName: C_Pope_Ribbon_V - Name: C Pale Yellow Ribbon Lower + Name: Costume Pale Yellow Ribbon (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -149666,7 +151003,7 @@ Body: View: 1474 - Id: 31238 AegisName: C_Good_Wedding_Veil_V - Name: C True Love Upper + Name: Costume Luxurious Wedding Veil (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -149675,7 +151012,7 @@ Body: View: 489 - Id: 31239 AegisName: C_Love_Rabbithood_V - Name: C Love Rabbit Hood Upper + Name: Costume Love Rabbit Hood (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -149684,7 +151021,7 @@ Body: View: 549 - Id: 31240 AegisName: C_Whisper_Mask_V - Name: C Whisper Mask Upper + Name: Costume Whisper Mask (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -149693,7 +151030,7 @@ Body: View: 321 - Id: 31241 AegisName: C_Blazing_Sun_V - Name: C Burning Sun Lower + Name: Costume Burning Sun (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -149702,7 +151039,7 @@ Body: View: 654 - Id: 31242 AegisName: C_Anubis_Helm_V - Name: C Anubis Hat Upper + Name: Costume Anubis Hat (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -149711,7 +151048,7 @@ Body: View: 485 - Id: 31243 AegisName: C_Tongue_Mask_V - Name: C Tongue Mask Mid + Name: Costume Tongue Mask (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149720,7 +151057,7 @@ Body: View: 253 - Id: 31244 AegisName: C_Sky_Helm_V - Name: C Skymet Upper + Name: Costume Skymet (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -149729,7 +151066,7 @@ Body: View: 868 - Id: 31245 AegisName: C_Bell_Flower - Name: C Cherry + Name: Costume Bell Flower Type: Armor Locations: Costume_Head_Top: true @@ -149738,7 +151075,7 @@ Body: View: 602 - Id: 31246 AegisName: C_Humming_Bird - Name: C Humming Bird + Name: Costume Humming Bird Type: Armor Locations: Costume_Head_Top: true @@ -149747,7 +151084,7 @@ Body: View: 702 - Id: 31247 AegisName: C_Hippo_Hat - Name: C Hippo Hat + Name: Costume Hippo Hat Type: Armor Locations: Costume_Head_Top: true @@ -149756,7 +151093,7 @@ Body: View: 859 - Id: 31248 AegisName: C_Isabella_Red_Ear - Name: C Isabella Red Ears + Name: Costume Isabella Red Ears Type: Armor Locations: Costume_Head_Top: true @@ -149765,7 +151102,7 @@ Body: View: 1030 - Id: 31249 AegisName: C_Rabbit_Hopping - Name: C Hopping Rabbit + Name: Costume Hopping Rabbit Type: Armor Locations: Costume_Head_Top: true @@ -149774,7 +151111,7 @@ Body: View: 1635 - Id: 31250 AegisName: C_Wonderful_Beast_Ear - Name: C Wonderful Beast Ears + Name: Costume Wonderful Beast Ears Type: Armor Locations: Costume_Head_Mid: true @@ -149783,7 +151120,7 @@ Body: View: 1636 - Id: 31251 AegisName: C_Cat_Mouth - Name: C Cats Mouth + Name: Costume Cat's Mouth Type: Armor Locations: Costume_Head_Low: true @@ -149792,7 +151129,7 @@ Body: View: 1637 - Id: 31252 AegisName: C_Cat_Ear_Hat_White - Name: C White Cat Ears Hat + Name: Costume White Cat Ears Hat Type: Armor Locations: Costume_Head_Top: true @@ -149801,7 +151138,7 @@ Body: View: 1638 - Id: 31253 AegisName: C_Bright_Fury - Name: C Rinzu Helmet + Name: Costume Rinko's Helmet Type: Armor Locations: Costume_Head_Top: true @@ -149810,7 +151147,7 @@ Body: View: 548 - Id: 31254 AegisName: C_Horse_King_Red - Name: C Red Hare Hat + Name: Costume Red Horse Mask Type: Armor Locations: Costume_Head_Top: true @@ -149821,7 +151158,7 @@ Body: View: 1631 - Id: 31255 AegisName: C_Dalcom_Helmet - Name: C Sweet Helmet + Name: Costume Sweet Melon Helmet Type: Armor Locations: Costume_Head_Top: true @@ -149831,7 +151168,7 @@ Body: View: 1374 - Id: 31256 AegisName: C_Jaguar_Hat_J - Name: C Jaguar Mask + Name: Costume Jaguar Mask Type: Armor Locations: Costume_Head_Mid: true @@ -149867,7 +151204,7 @@ Body: ArmorLevel: 1 - Id: 31260 AegisName: C_Observer_J - Name: C Observer + Name: Costume Observer Type: Armor Locations: Costume_Head_Mid: true @@ -149876,7 +151213,7 @@ Body: View: 1639 - Id: 31261 AegisName: C_Soda_In_Mouth - Name: C Soda in Mouth + Name: Costume Soda In Mouth Type: Armor Locations: Costume_Head_Low: true @@ -149885,7 +151222,7 @@ Body: View: 1643 - Id: 31262 AegisName: C_Disposable_3D_Glass - Name: C Disposable 3D Glasses + Name: Costume Disposable 3D Glasses Type: Armor Locations: Costume_Head_Mid: true @@ -149904,7 +151241,7 @@ Body: bonus2 bExpAddRace,RC_All,10; - Id: 31263 AegisName: C_Disposable_Popcorn - Name: C Disposable Popcorn Hat + Name: Costume Disposable Popcorn Hat Type: Armor Locations: Costume_Head_Top: true @@ -149921,7 +151258,7 @@ Body: NoAuction: true - Id: 31264 AegisName: C_Shelterwing_Ears_V - Name: C Wings of Protector Lower + Name: Costume Wings of Protector (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -149930,7 +151267,7 @@ Body: View: 990 - Id: 31265 AegisName: C_Straightpony_BU_V - Name: C Straight Pony Blue Mid + Name: Costume Straight Pony (Blue) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149939,7 +151276,7 @@ Body: View: 1394 - Id: 31266 AegisName: C_Straightpony_RD_V - Name: C Straight Pony Red Mid + Name: Costume Straight Pony (Red) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149948,7 +151285,7 @@ Body: View: 1392 - Id: 31267 AegisName: C_Straightpony_YL_V - Name: C Straight Pony Yellow Mid + Name: Costume Straight Pony (Yellow) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149957,7 +151294,7 @@ Body: View: 1389 - Id: 31268 AegisName: C_Straightpony_GN_V - Name: C Straight_Pony Green Mid + Name: Costume Straight Pony (Green) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149966,7 +151303,7 @@ Body: View: 1390 - Id: 31269 AegisName: C_Straightpony_BL_V - Name: C Straight Pony Black Mid + Name: Costume Straight Pony (Black) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149975,7 +151312,7 @@ Body: View: 1371 - Id: 31270 AegisName: C_Straightpony_WH_V - Name: C Straight Pony White Mid + Name: Costume Straight Pony (White) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149984,7 +151321,7 @@ Body: View: 1395 - Id: 31271 AegisName: C_Straightpony_OM_V - Name: C Straight Pony Crimson Mid + Name: Costume Straight Pony (Crimson) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -149993,7 +151330,7 @@ Body: View: 1393 - Id: 31272 AegisName: C_Straightpony_PP_V - Name: C Straight Pony Purple Mid + Name: Costume Straight Pony (Purple) (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -150002,7 +151339,7 @@ Body: View: 1391 - Id: 31273 AegisName: C_Cowlick_BU_V - Name: C Cowlick Blue Mid + Name: Costume Cowlick (Blue) Type: Armor Locations: Costume_Head_Mid: true @@ -150011,7 +151348,7 @@ Body: View: 1387 - Id: 31274 AegisName: C_Cowlick_RD_V - Name: C Cowlick Red Mid + Name: Costume Cowlick (Red) Type: Armor Locations: Costume_Head_Mid: true @@ -150020,7 +151357,7 @@ Body: View: 1385 - Id: 31275 AegisName: C_Cowlick_YL_V - Name: C Cowlick Yellow Mid + Name: Costume Cowlick (Yellow) Type: Armor Locations: Costume_Head_Mid: true @@ -150029,7 +151366,7 @@ Body: View: 1382 - Id: 31276 AegisName: C_Cowlick_GN_V - Name: C Cowlick Green Mid + Name: Costume Cowlick (Green) Type: Armor Locations: Costume_Head_Mid: true @@ -150038,7 +151375,7 @@ Body: View: 1383 - Id: 31277 AegisName: C_Cowlick_BL_V - Name: C Cowlick Black Mid + Name: Costume Cowlick (Black) Type: Armor Locations: Costume_Head_Mid: true @@ -150047,7 +151384,7 @@ Body: View: 1372 - Id: 31278 AegisName: C_Cowlick_WH_V - Name: C Cowlick White Mid + Name: Costume Cowlick (White) Type: Armor Locations: Costume_Head_Mid: true @@ -150056,7 +151393,7 @@ Body: View: 1388 - Id: 31279 AegisName: C_Cowlick_OM_V - Name: C Cowlick Crimson Mid + Name: Costume Cowlick (Brown) Type: Armor Locations: Costume_Head_Mid: true @@ -150065,7 +151402,7 @@ Body: View: 1386 - Id: 31280 AegisName: C_Cowlick_PP_V - Name: C Cowlick Purple Mid + Name: Costume Cowlick (Purple) Type: Armor Locations: Costume_Head_Mid: true @@ -150074,7 +151411,7 @@ Body: View: 1384 - Id: 31281 AegisName: C_Loosewavetwin_BU_V - Name: C Loose Wave Twin Blue Mid + Name: Costume Irene Hairstyle (Navy) Type: Armor Locations: Costume_Head_Mid: true @@ -150083,7 +151420,7 @@ Body: View: 1401 - Id: 31282 AegisName: C_Loosewavetwin_RD_V - Name: C Loose Wave Twin Red Mid + Name: Costume Irene Hairstyle (Rose) Type: Armor Locations: Costume_Head_Mid: true @@ -150092,7 +151429,7 @@ Body: View: 1399 - Id: 31283 AegisName: C_Loosewavetwin_YL_V - Name: C Loose Wave Twin Yellow Mid + Name: Costume Irene Hairstyle (Cream) Type: Armor Locations: Costume_Head_Mid: true @@ -150101,7 +151438,7 @@ Body: View: 1396 - Id: 31284 AegisName: C_Loosewavetwin_GN_V - Name: C Loose Wave Twin Green Mid + Name: Costume Irene Hairstyle (Lime) Type: Armor Locations: Costume_Head_Mid: true @@ -150110,7 +151447,7 @@ Body: View: 1397 - Id: 31285 AegisName: C_Loosewavetwin_BL_V - Name: C Loose Wave Twin Black Mid + Name: Costume Irene Hairstyle (Cacao) Type: Armor Locations: Costume_Head_Mid: true @@ -150119,7 +151456,7 @@ Body: View: 1373 - Id: 31286 AegisName: C_Loosewavetwin_WH_V - Name: C Loose Wave Twin White Mid + Name: Costume Irene Hairstyle (Pearl) Type: Armor Locations: Costume_Head_Mid: true @@ -150128,7 +151465,7 @@ Body: View: 1402 - Id: 31287 AegisName: C_Loosewavetwin_OM_V - Name: C Loose Wave Twin Crimson Mid + Name: Costume Irene Hairstyle (Milk Tea) Type: Armor Locations: Costume_Head_Mid: true @@ -150137,7 +151474,7 @@ Body: View: 1400 - Id: 31288 AegisName: C_Loosewavetwin_PP_V - Name: C Loose Wave Twin Purple Mid + Name: Costume Irene Hairstyle (Taro) Type: Armor Locations: Costume_Head_Mid: true @@ -150146,7 +151483,7 @@ Body: View: 1398 - Id: 31289 AegisName: C_Wing_Ear_BL_V - Name: C Black Wing Ears Lower + Name: Costume Black Wings of the Protector (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -150155,7 +151492,7 @@ Body: View: 1336 - Id: 31290 AegisName: C_Adv_Ang_SchCap - Name: C Angels Feather Cap + Name: Costume School of Angel Hat Type: Armor Locations: Costume_Head_Top: true @@ -150164,7 +151501,7 @@ Body: View: 929 - Id: 31291 AegisName: C_Adv_Dev_SchCap - Name: C Devils Feather Cap + Name: Costume School of Devil Hat Type: Armor Locations: Costume_Head_Top: true @@ -150181,7 +151518,7 @@ Body: EquipLevelMin: 1 - Id: 31293 AegisName: C_Kings_Crown_Purple - Name: C Crown of Ancient King Purple + Name: Costume Old King's Crown (Purple) Type: Armor Locations: Costume_Head_Top: true @@ -150190,7 +151527,7 @@ Body: View: 1651 - Id: 31294 AegisName: C_Jirant_Circlet_Red - Name: C Jirant Circlet Red + Name: Costume Ancient Dragon Crown (Red) Type: Armor Locations: Costume_Head_Top: true @@ -150208,7 +151545,7 @@ Body: View: 613 - Id: 31296 AegisName: C_Strawberry_In_Mouth - Name: C Strawberry in Mouth + Name: Costume Strawberry in Mouth Type: Armor Locations: Costume_Head_Low: true @@ -150217,7 +151554,7 @@ Body: View: 861 - Id: 31297 AegisName: C_Love_Berry - Name: C Fruit of Love + Name: Costume Fruit of Love Type: Armor Locations: Costume_Head_Top: true @@ -150226,7 +151563,7 @@ Body: View: 140 - Id: 31298 AegisName: C_Para_Team_Hat2 - Name: C Sepia Parade Hat + Name: Costume Eden Group Hat II Type: Armor Locations: Costume_Head_Top: true @@ -150235,7 +151572,7 @@ Body: View: 682 - Id: 31299 AegisName: C_White_Rabbit - Name: C White Rabbit + Name: Costume White Rabbit Type: Armor Locations: Costume_Head_Mid: true @@ -150244,7 +151581,7 @@ Body: View: 1656 - Id: 31300 AegisName: C_Warm_Cat_Muffler - Name: C Warm Cat Muffler + Name: Costume Warm Cat Muffler Type: Armor Locations: Costume_Head_Low: true @@ -150253,7 +151590,7 @@ Body: View: 1657 - Id: 31301 AegisName: C_Blinking_Eyes - Name: C Blinking Eyes + Name: Costume Blinking Eyes Type: Armor Locations: Costume_Head_Mid: true @@ -150262,7 +151599,7 @@ Body: View: 1658 - Id: 31302 AegisName: C_Black_Magenta_Ribbon - Name: C Black Magenta Ribbon + Name: Costume Black Magenta Ribbon Type: Armor Locations: Costume_Head_Mid: true @@ -150271,7 +151608,7 @@ Body: View: 1659 - Id: 31303 AegisName: C_Memory_Of_Noodle - Name: C Black Ramen Hat + Name: Costume Memory of the Pasta Type: Armor Locations: Costume_Head_Top: true @@ -150280,7 +151617,7 @@ Body: View: 1338 - Id: 31304 AegisName: C_Fan_Of_Summer - Name: C Summer Fan + Name: Costume Midsummer Fan Type: Armor Locations: Costume_Head_Low: true @@ -150298,7 +151635,7 @@ Body: View: 1666 - Id: 31306 AegisName: C_Tucan_Hat_JP - Name: C Toucan Hat + Name: Costume Toucan Hat Type: Armor Locations: Costume_Head_Top: true @@ -150307,7 +151644,7 @@ Body: View: 528 - Id: 31307 AegisName: C_Blue_Arara_Hat - Name: C Violet Macaw + Name: Costume Violet Macaw Type: Armor Locations: Costume_Head_Top: true @@ -150325,7 +151662,7 @@ Body: View: 1232 - Id: 31309 AegisName: C_PW_Marching_Hat - Name: C Pure White Marching Hat + Name: Costume Pure White Marching Hat Type: Armor Locations: Costume_Head_Top: true @@ -150334,7 +151671,7 @@ Body: View: 1470 - Id: 31310 AegisName: C_666_DevilEar - Name: C 666 Black_ Elven Ears + Name: Costume 666 Styles Demon's Ears Type: Armor Locations: Costume_Head_Mid: true @@ -150343,7 +151680,7 @@ Body: View: 498 - Id: 31311 AegisName: C_Tha_Maero_Mask_J - Name: C Dolor Thanatos Mask + Name: Costume Thanatos's Maero Mask Type: Armor Locations: Costume_Head_Mid: true @@ -150353,7 +151690,7 @@ Body: View: 666 - Id: 31312 AegisName: C_Hades_Helm - Name: C Hades Helm + Name: Costume Hades Helm Type: Armor Locations: Costume_Head_Top: true @@ -150362,7 +151699,7 @@ Body: View: 523 - Id: 31313 AegisName: C_FallenAngelWingEar - Name: C Fallen Angel Wing Ears + Name: Costume Fallen Angel's Wing Ears Type: Armor Locations: Costume_Head_Mid: true @@ -150371,7 +151708,7 @@ Body: View: 1662 - Id: 31314 AegisName: C_Ghost_Holiday - Name: C Ghost Holiday + Name: Costume Horns of Forest Type: Armor Locations: Costume_Head_Top: true @@ -150380,7 +151717,7 @@ Body: View: 1663 - Id: 31315 AegisName: C_Stall_Of_Angel - Name: C Stall of Angel + Name: Costume Stall Of Angel Type: Armor Locations: Costume_Head_Low: true @@ -150389,7 +151726,7 @@ Body: View: 1664 - Id: 31316 AegisName: C_FlutterButterfly_BL - Name: C Black Fluttering Butterfly + Name: Costume Black Swallowtail Wings Type: Armor Locations: Costume_Head_Low: true @@ -150401,7 +151738,7 @@ Body: hateffect(HAT_EF_C_FLUTTERBUTTERFLY_BL,false); - Id: 31317 AegisName: C_15th_Anniversary_Wing - Name: C 15th Anniversary Wing + Name: Costume 15th Anniversary Wing Type: Armor Locations: Costume_Head_Top: true @@ -150410,7 +151747,7 @@ Body: View: 1660 - Id: 31318 AegisName: C_Gerhard_Von_Devi - Name: Costume Gerhard Von Devi + Name: Costume Gerhard Von Deviruchi 83 Years Type: Armor Locations: Costume_Head_Top: true @@ -150419,7 +151756,7 @@ Body: View: 1092 - Id: 31319 AegisName: C_Fan_Of_Summer_R - Name: C Summer Fan + Name: "[Rental] Costume Midsummer Fan" Type: Armor Locations: Costume_Head_Low: true @@ -150439,7 +151776,7 @@ Body: bonus bVariableCastrate,-5; - Id: 31320 AegisName: C_Pinwheel_Cap_R - Name: C Pinwheel Hat + Name: "[Rental] Costume Pinwheel" Type: Armor Locations: Costume_Head_Top: true @@ -150471,7 +151808,7 @@ Body: View: 681 - Id: 31322 AegisName: C_Candy_Hat - Name: C Candy Hat + Name: Costume Candy Hat Type: Armor Locations: Costume_Head_Top: true @@ -150480,7 +151817,7 @@ Body: View: 853 - Id: 31323 AegisName: C_Love_Daddy - Name: C Yellow Hunting Cap + Name: Costume Love Daddy Type: Armor Locations: Costume_Head_Top: true @@ -150498,7 +151835,7 @@ Body: View: 1672 - Id: 31325 AegisName: C_Q_Scaraba_Crown - Name: C Queen Scarabas Helmet + Name: Costume Queen Scaraba Helm Type: Armor Locations: Costume_Head_Top: true @@ -150512,7 +151849,7 @@ Body: hateffect(HAT_EF_QSCARABA,false); - Id: 31326 AegisName: C_Rolf_Von_Gigue_666 - Name: C Rolf Von Ziege 666 II + Name: Costume Rolf Von Gigue 666 Type: Armor Locations: Costume_Head_Top: true @@ -150521,7 +151858,7 @@ Body: View: 946 - Id: 31327 AegisName: C_Stretched_Nose_M - Name: C Wood Goblins Nose + Name: Costume Wood Goblin Nose Type: Armor Locations: Costume_Head_Mid: true @@ -150530,7 +151867,7 @@ Body: View: 737 - Id: 31328 AegisName: C_Faceworm_Egg_Shell - Name: C Faceworm Eggshell + Name: Costume Faceworm Egg Shell Type: Armor Locations: Costume_Head_Top: true @@ -150557,7 +151894,7 @@ Body: View: 1674 - Id: 31331 AegisName: C_Chung_E_Shinyon_Cap - Name: C Chung e Shinyon Cap + Name: Costume Chung E Shinyon Cap Type: Armor Locations: Costume_Head_Top: true @@ -150566,7 +151903,7 @@ Body: View: 1675 - Id: 31332 AegisName: C_Khalitzburg_Helm_BL - Name: C Black Khalitzburg Knight Helm + Name: Costume Black Khalitzburg Knight Helm Type: Armor Locations: Costume_Head_Top: true @@ -150901,7 +152238,7 @@ Body: View: 1270 - Id: 31368 AegisName: C_Harvest_Festa_Hat - Name: C Thanksgiving Memorial Hat + Name: Costume Harvest Festival Hat Type: Armor Locations: Costume_Head_Top: true @@ -150946,7 +152283,7 @@ Body: View: 358 - Id: 31373 AegisName: C_Kings_Crown_ - Name: C Crown of Ancient king + Name: Costume Old King's Crown Type: Armor Locations: Costume_Head_Top: true @@ -151201,7 +152538,7 @@ Body: View: 17 - Id: 31401 AegisName: C_Blue_Coif - Name: C Nuns Veil + Name: Costume Coif Type: Armor Locations: Costume_Head_Top: true @@ -151211,7 +152548,7 @@ Body: View: 176 - Id: 31402 AegisName: C_Idun_Green_Apple - Name: C Iduns Green Apple + Name: Costume Green Apple Flavour Type: Armor Locations: Costume_Head_Top: true @@ -151220,7 +152557,7 @@ Body: View: 1698 - Id: 31403 AegisName: C_Wall - Name: C Wall + Name: Costume Wall Hat Type: Armor Locations: Costume_Head_Mid: true @@ -151229,7 +152566,7 @@ Body: View: 1699 - Id: 31404 AegisName: C_Poring_Traffic_Light - Name: C Poring Traffic Light + Name: Costume Poring Traffic Light Type: Armor Locations: Costume_Head_Low: true @@ -151238,7 +152575,7 @@ Body: View: 1700 - Id: 31405 AegisName: C_Eleanor_Wig_YL - Name: C Eleanor Wig Yellow + Name: Costume Eleanor Wig (Yellow) Type: Armor Locations: Costume_Head_Top: true @@ -151247,7 +152584,7 @@ Body: View: 1701 - Id: 31406 AegisName: C_Nydhog_Wig_WH - Name: C Nydhoggur Wig White + Name: Costume Nydhoggur Wig (White) Type: Armor Locations: Costume_Head_Top: true @@ -151256,7 +152593,7 @@ Body: View: 1702 - Id: 31407 AegisName: C_Alice_Wig_PK - Name: C Alice Wig Peach + Name: Costume Alice Wig (Peach) Type: Armor Locations: Costume_Head_Top: true @@ -151265,7 +152602,7 @@ Body: View: 1703 - Id: 31408 AegisName: C_RORush_Goat - Name: C Ragnarok Rush Goat + Name: Costume Ragnarok Rush Goat Type: Armor Locations: Costume_Head_Top: true @@ -151274,7 +152611,7 @@ Body: View: 41 - Id: 31409 AegisName: C_Barrel_Helm - Name: C Barrel Helm + Name: Costume Barrel Helmet Type: Armor Locations: Costume_Head_Top: true @@ -151294,7 +152631,7 @@ Body: View: 1678 - Id: 31411 AegisName: C_Leo_Diadem - Name: C Leo Diadem + Name: Costume Leo Diadem Type: Armor Locations: Costume_Head_Top: true @@ -151303,7 +152640,7 @@ Body: View: 566 - Id: 31412 AegisName: C_Virgo_Crown - Name: C Virgo Crown + Name: Costume Virgo Crown Type: Armor Locations: Costume_Head_Top: true @@ -151321,7 +152658,7 @@ Body: View: 536 - Id: 31414 AegisName: C_Cancer_Diadem - Name: C Cancer Diadem + Name: Costume Cancer Diadem Type: Armor Locations: Costume_Head_Top: true @@ -151348,7 +152685,7 @@ Body: ArmorLevel: 1 - Id: 31417 AegisName: C_Onigiri_Hat - Name: C Rice Ball Hat + Name: Costume Rice Ball Hat Type: Armor Locations: Costume_Head_Top: true @@ -151357,7 +152694,7 @@ Body: View: 556 - Id: 31418 AegisName: C_Leek_In_Mouth - Name: C Green Onion in Mouth + Name: Costume Green Onion in Mouth Type: Armor Locations: Costume_Head_Low: true @@ -151375,7 +152712,7 @@ Body: View: 1251 - Id: 31420 AegisName: C_SantaPoring_Promo - Name: C Shining Santa Poring + Name: Costume Shining Santa Poring Type: Armor Locations: Costume_Head_Top: true @@ -151420,7 +152757,7 @@ Body: View: 1039 - Id: 31425 AegisName: C_Long_Octopus_Balloon - Name: Costume Long Octopus Balloon # !todo check english name + Name: Costume Octopus Balloon Type: Armor Locations: Costume_Head_Low: true @@ -151483,7 +152820,7 @@ Body: View: 974 - Id: 31432 AegisName: C_Luwmin_Ice - Name: C Floating Ice + Name: Costume Floating Ice Type: Armor Locations: Costume_Head_Low: true @@ -151510,7 +152847,7 @@ Body: View: 705 - Id: 31435 AegisName: C_Magician_Knithat - Name: C Ghost Magicians Knit Hat + Name: Costume Magician Knit Hat Type: Armor Locations: Costume_Head_Top: true @@ -151519,7 +152856,7 @@ Body: View: 854 - Id: 31436 AegisName: C_White_Drooping_Kitty - Name: C Lazy Cat + Name: Costume White Drooping Cat Type: Armor Locations: Costume_Head_Top: true @@ -151528,7 +152865,7 @@ Body: View: 274 - Id: 31437 AegisName: C_Baby_Penguin - Name: C Baby Penguin + Name: Costume Baby Penguin Type: Armor Locations: Costume_Head_Mid: true @@ -151537,7 +152874,7 @@ Body: View: 1705 - Id: 31438 AegisName: C_Fluffy_Angel_Cape - Name: C Fluffy Angel Cape + Name: Costume Fluffy Angel Cape Type: Armor Locations: Costume_Head_Low: true @@ -151546,7 +152883,7 @@ Body: View: 1706 - Id: 31439 AegisName: C_Fluffy_Heart_Earmuffs - Name: C Fluffy Heart Earmuffs + Name: Costume Fluffy Heart Earmuffs Type: Armor Locations: Costume_Head_Top: true @@ -151555,7 +152892,7 @@ Body: View: 1707 - Id: 31440 AegisName: C_Snow_Bear_Food - Name: C Snow Bear Hood + Name: Costume Snow Bear Hood Type: Armor Locations: Costume_Head_Top: true @@ -151564,7 +152901,7 @@ Body: View: 1708 - Id: 31441 AegisName: C_Penguin_Cap_BU - Name: C Penguin Cap Blue + Name: Costume Penguin Cap Type: Armor Locations: Costume_Head_Top: true @@ -151573,7 +152910,7 @@ Body: View: 1709 - Id: 31442 AegisName: C_Mr_Smile_V - Name: C Smile Mask Middle + Name: Costume Mr. Smile (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -151582,7 +152919,7 @@ Body: View: 65 - Id: 31443 AegisName: C_Munak_Turban_V - Name: C Munak Hat Upper + Name: Costume Munak Hat (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -151591,7 +152928,7 @@ Body: View: 51 - Id: 31444 AegisName: C_Bongun_Hat_V - Name: C Bongun Hat Upper + Name: Costume Bongun Hat (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -151609,7 +152946,7 @@ Body: View: 1710 - Id: 31446 AegisName: C_Toy_Syringe - Name: C Toy Syringe + Name: Costume Toy Syringe Type: Armor Locations: Costume_Head_Low: true @@ -151618,7 +152955,7 @@ Body: View: 842 - Id: 31447 AegisName: C_Pale_Moon_Hat - Name: C Light Moonlight_Hat + Name: Costume Pale Moon Hat Type: Armor Locations: Costume_Head_Top: true @@ -151627,7 +152964,7 @@ Body: View: 913 - Id: 31448 AegisName: C_Sting_Silk_Ribbon - Name: C Stings Silk Ribbon + Name: Costume Sting Silk Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -151636,7 +152973,7 @@ Body: View: 1457 - Id: 31449 AegisName: C_Blue_Rose_Eyepatch - Name: C Blue Rose Eyepatch + Name: Costume Blue Rose Eyepatch Type: Armor Locations: Costume_Head_Mid: true @@ -151645,7 +152982,7 @@ Body: View: 1712 - Id: 31450 AegisName: C_Lolita_Two_Side_Up - Name: C Lolita Two Side Up + Name: Costume Lolita Two Side Up Type: Armor Locations: Costume_Head_Low: true @@ -151654,7 +152991,7 @@ Body: View: 1713 - Id: 31451 AegisName: C_Blue_Frill_Ribbon - Name: C Blue Frill Ribbon + Name: Costume Blue Frill Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -151663,7 +153000,7 @@ Body: View: 1714 - Id: 31452 AegisName: C_White_Cat - Name: C White Cat + Name: Costume White Cat Type: Armor Locations: Costume_Head_Mid: true @@ -151672,7 +153009,7 @@ Body: View: 1715 - Id: 31453 AegisName: C_L_RibbonMuff_Black - Name: C Large Ribbon Muffler Black + Name: Costume Large Ribbon Muffler (Black) Type: Armor Locations: Costume_Head_Low: true @@ -151681,7 +153018,7 @@ Body: View: 1716 - Id: 31454 AegisName: C_Love_Feeling - Name: C Love Feelings + Name: Costume Love Feeling Type: Armor Locations: Costume_Head_Low: true @@ -151690,7 +153027,7 @@ Body: View: 1717 - Id: 31455 AegisName: Enchanted_Dog - Name: C Super Cute Dog + Name: Costume Super Cute Dog Type: Armor Locations: Costume_Head_Mid: true @@ -151700,7 +153037,7 @@ Body: View: 1718 - Id: 31456 AegisName: C_Baby_Leopard_Cat - Name: C Baby Leopard Cat + Name: Costume Baby Leopard Cat Type: Armor Locations: Costume_Head_Top: true @@ -151709,7 +153046,7 @@ Body: View: 1719 - Id: 31457 AegisName: C_Husky_Hat - Name: C Laughing Wonderful Wolf Hat + Name: Costume Husky Hat Type: Armor Locations: Costume_Head_Top: true @@ -151718,7 +153055,7 @@ Body: View: 1016 - Id: 31458 AegisName: C_1Grade_Balloon_TW - Name: Costume Grade Balloon # !todo check english name + Name: Costume Reservation Limited Poring Balloon Type: Armor Locations: Costume_Head_Low: true @@ -151736,7 +153073,7 @@ Body: View: 853 - Id: 31460 AegisName: C_Blessing_Sky_Lantern - Name: C Blessing Sky Lantern + Name: Costume Blessing Sky Lantern Type: Armor Locations: Costume_Head_Low: true @@ -151771,7 +153108,7 @@ Body: View: 1561 - Id: 31464 AegisName: C_Mike_Hat - Name: C Bloom Afro + Name: Costume Bloom Afro Type: Armor Locations: Costume_Head_Top: true @@ -151780,7 +153117,7 @@ Body: View: 837 - Id: 31465 AegisName: C_Egg_Minihat - Name: C Robin Egg Minihat + Name: Costume Robin Egg Mini Hat Type: Armor Locations: Costume_Head_Top: true @@ -151789,7 +153126,7 @@ Body: View: 1722 - Id: 31466 AegisName: C_Holy_Egg_Hat - Name: C Holy Egg Shell + Name: Costume Holy Egg Shell Type: Armor Locations: Costume_Head_Top: true @@ -151798,7 +153135,7 @@ Body: View: 537 - Id: 31467 AegisName: C_Mimic_Egg_Shell - Name: C Evil Eggshell + Name: Costume Evil Egg Shell Type: Armor Locations: Costume_Head_Top: true @@ -151807,7 +153144,7 @@ Body: View: 999 - Id: 31468 AegisName: C_Stripe_Hat - Name: C Stripe Hat + Name: Costume Stripe Hat Type: Armor Locations: Costume_Head_Top: true @@ -151816,16 +153153,24 @@ Body: View: 1728 - Id: 31469 AegisName: C_Costume08_L - Name: Rental C Eleanors Wig Lower + Name: "[Rental] Chocolate Mushroom Wig" Type: Armor Locations: Costume_Head_Low: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true ArmorLevel: 1 EquipLevelMin: 1 - View: 1502 + View: 1953 - Id: 31470 AegisName: C_Tengu_Scroll - Name: C Scroll of Tengu + Name: Costume Tengu Scroll Type: Armor Locations: Costume_Head_Low: true @@ -151834,7 +153179,7 @@ Body: View: 1445 - Id: 31471 AegisName: C_CelestialWoman_Flower - Name: C Celestial Flower + Name: Costume Celestial Woman Flower Type: Armor Locations: Costume_Head_Top: true @@ -151843,7 +153188,7 @@ Body: View: 438 - Id: 31472 AegisName: C_Fairy_Feathers - Name: C Fairy Feathers + Name: Costume Fairy Feathers Type: Armor Locations: Costume_Head_Mid: true @@ -151852,7 +153197,7 @@ Body: View: 1723 - Id: 31473 AegisName: C_Tipsy - Name: C Tipsy + Name: Costume Tipsy Type: Armor Locations: Costume_Head_Low: true @@ -151861,7 +153206,7 @@ Body: View: 1724 - Id: 31474 AegisName: C_Straight_Long_BL - Name: C Straight Long Black + Name: Costume Straight Long (Black) Type: Armor Locations: Costume_Head_Low: true @@ -151870,7 +153215,7 @@ Body: View: 1725 - Id: 31475 AegisName: C_Black_Fox_Ear_Ribbon - Name: C Black Fox Ears Ribbon + Name: Costume Black Fox Ear Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -151879,7 +153224,7 @@ Body: View: 1726 - Id: 31476 AegisName: C_Cherry_Blossom_Hat_YL - Name: C Yellow Cherry Blossom Hat + Name: Costume Yellow Cherry Blossom Hat Type: Armor Locations: Costume_Head_Top: true @@ -151888,16 +153233,24 @@ Body: View: 1727 - Id: 31477 AegisName: C_Costume06_L - Name: Rental C Straight Long Black + Name: "[Rental] Costume Witch Cape" Type: Armor Locations: Costume_Head_Low: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true ArmorLevel: 1 EquipLevelMin: 1 - View: 1725 + View: 1950 - Id: 31478 AegisName: C_Eleanor_Wig_V - Name: C Eleanors Wig Lower + Name: Costume Eleanor's Wig (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -151927,7 +153280,7 @@ Body: View: 1730 - Id: 31481 AegisName: C_CatCoffeeCup_TW - Name: C TriColor CatCup + Name: Costume Cat Coffee Cup Type: Armor Locations: Costume_Head_Top: true @@ -151953,7 +153306,7 @@ Body: View: 1733 - Id: 31484 AegisName: C_JP_EV13 - Name: C BearCompanion Female + Name: Costume Bear Companion (Priest Female) Type: Armor Locations: Costume_Head_Top: true @@ -151962,7 +153315,7 @@ Body: View: 1736 - Id: 31485 AegisName: C_JP_EV14 - Name: C BearCompanion Male + Name: Costume Bear Companion (Priest Male) Type: Armor Locations: Costume_Head_Top: true @@ -151971,7 +153324,7 @@ Body: View: 1737 - Id: 31486 AegisName: C_Diver's_Goggles - Name: C Diver's Goggles + Name: Costume Diver's Goggles Type: Armor Locations: Costume_Head_Mid: true @@ -151980,7 +153333,7 @@ Body: View: 10 - Id: 31487 AegisName: C_Eye_Bandage - Name: C Eye Bandage + Name: Costume Eye Bandage Type: Armor Locations: Costume_Head_Mid: true @@ -152007,7 +153360,7 @@ Body: View: 1739 - Id: 31490 AegisName: C_Poring_Muffler - Name: C Poring Muffler + Name: Costume Poring Muffler Type: Armor Locations: Costume_Head_Low: true @@ -152016,7 +153369,7 @@ Body: View: 1740 - Id: 31491 AegisName: C_Orange_Tabby_Cat - Name: C Orange Tabby Cat + Name: Costume Orange Tabby Cat Type: Armor Locations: Costume_Head_Mid: true @@ -152025,7 +153378,7 @@ Body: View: 1741 - Id: 31492 AegisName: C_Cat_Ears_Cape_Brown - Name: C Brown Cat Ears Cape + Name: Costume Cat Ears Cape Brown Type: Armor Locations: Costume_Head_Low: true @@ -152034,7 +153387,7 @@ Body: View: 1742 - Id: 31493 AegisName: C_Volume_Low_Twin_WH - Name: C Volume Low Twin WH + Name: Costume Volume Low Twin (White) Type: Armor Locations: Costume_Head_Low: true @@ -152043,7 +153396,7 @@ Body: View: 1743 - Id: 31494 AegisName: C_Volume_Low_TwinK - Name: C Volume Low Twin + Name: Costume Volume Low Twin Type: Armor Locations: Costume_Head_Top: true @@ -152052,7 +153405,7 @@ Body: View: 1683 - Id: 31495 AegisName: C_Lolita_Two_Side_UpK - Name: C Lolita Two Side Up Upper + Name: Costume Lolita Two-Sided Up Type: Armor Locations: Costume_Head_Top: true @@ -152061,7 +153414,7 @@ Body: View: 1713 - Id: 31496 AegisName: C_Yggdrasil_Crown - Name: C Yggdrasil Crown + Name: Costume Yggdrasil Crown Type: Armor Locations: Costume_Head_Top: true @@ -152078,7 +153431,7 @@ Body: ArmorLevel: 1 - Id: 31498 AegisName: C_Elephangel_TH - Name: C Elephangel + Name: Costume Elephangel Type: Armor Locations: Costume_Head_Low: true @@ -152087,7 +153440,7 @@ Body: View: 1745 - Id: 31499 AegisName: C_Easter_Egg_Shell - Name: C Easter Egg Shell + Name: Costume Easter Egg Shell Type: Armor Locations: Costume_Head_Top: true @@ -152122,7 +153475,7 @@ Body: View: 1749 - Id: 31503 AegisName: C_TW_2th_Balloon - Name: Costume 2th Balloon # !todo check english name + Name: Costume 2nd Return Balloons Type: Armor Locations: Costume_Head_Low: true @@ -152131,7 +153484,7 @@ Body: View: 1750 - Id: 31504 AegisName: C_Starving_Fish_Hat - Name: C Large Hungry Fish + Name: Costume Large Hungry Fish Type: Armor Locations: Costume_Head_Top: true @@ -152140,7 +153493,7 @@ Body: View: 844 - Id: 31505 AegisName: C_Falcon_Mask - Name: C Falcon Mask + Name: Costume Falcon Mask Type: Armor Locations: Costume_Head_Mid: true @@ -152150,7 +153503,7 @@ Body: View: 782 - Id: 31506 AegisName: C_Malangdo_Pirate - Name: C Cat Ear Bandana + Name: Costume Cat Eared Bandana Type: Armor Locations: Costume_Head_Top: true @@ -152159,7 +153512,7 @@ Body: View: 1587 - Id: 31507 AegisName: C_Yellow_Drooping_Kitty - Name: C Drooping Cat Yellow + Name: Costume Drooping Yellow Cat Type: Armor Locations: Costume_Head_Top: true @@ -152168,7 +153521,7 @@ Body: View: 278 - Id: 31508 AegisName: C_Isabella_Blue_Ear - Name: C Isabella Blue Ears + Name: Costume Isabella's Blue Ear Hat Type: Armor Locations: Costume_Head_Top: true @@ -152177,7 +153530,7 @@ Body: View: 1032 - Id: 31509 AegisName: C_Fawn_Ear - Name: C Fawn Ears + Name: Costume Fawn Ears Type: Armor Locations: Costume_Head_Top: true @@ -152186,7 +153539,7 @@ Body: View: 1751 - Id: 31510 AegisName: C_Cat_Ear_Short - Name: C Short Haired Cat Ears + Name: Costume Short Haired Cat Ears Type: Armor Locations: Costume_Head_Low: true @@ -152195,7 +153548,7 @@ Body: View: 1752 - Id: 31511 AegisName: C_Cat_Ear_Long - Name: C Long Haired Cat Ears + Name: Costume Long Haired Cat Ears Type: Armor Locations: Costume_Head_Low: true @@ -152204,7 +153557,7 @@ Body: View: 1753 - Id: 31512 AegisName: C_Panda_Rabbit - Name: C Panda Rabbit + Name: Costume Tuxedo Rabbit Type: Armor Locations: Costume_Head_Mid: true @@ -152213,7 +153566,7 @@ Body: View: 1754 - Id: 31513 AegisName: C_Rabbit_Hopping_BL - Name: C Black Rabbit Ears + Name: Costume Black Rabbit Ears Type: Armor Locations: Costume_Head_Top: true @@ -152222,7 +153575,7 @@ Body: View: 1755 - Id: 31514 AegisName: C_American_S_hair - Name: Costume American Short hair # !todo check english name + Name: Costume American Shorthair Cat Type: Armor Locations: Costume_Head_Mid: true @@ -152240,7 +153593,7 @@ Body: View: 1757 - Id: 31516 AegisName: C_Mini_Melon - Name: C Mini Melon + Name: Costume Mini Melon Type: Armor Locations: Costume_Head_Top: true @@ -152249,7 +153602,7 @@ Body: View: 1758 - Id: 31517 AegisName: C_JP_EV15 - Name: C Fluffy Cat + Name: Costume Fluffy Cat Type: Armor Locations: Costume_Head_Mid: true @@ -152258,7 +153611,7 @@ Body: View: 1762 - Id: 31518 AegisName: C_Pop_Popcorn_Hat - Name: C Popping Popcorn Hat + Name: Costume Pop Popcorn Hat Type: Armor Locations: Costume_Head_Top: true @@ -152267,7 +153620,7 @@ Body: View: 1763 - Id: 31519 AegisName: C_Slurp_Slurp_Hat - Name: C Noodles Hat + Name: Costume Slurp Slurp Hat Type: Armor Locations: Costume_Head_Top: true @@ -152276,7 +153629,7 @@ Body: View: 1764 - Id: 31520 AegisName: C_Popcorn_Hat - Name: C Popcorn Hat + Name: Costume Popcorn Hat Type: Armor Locations: Costume_Head_Top: true @@ -152285,7 +153638,7 @@ Body: View: 415 - Id: 31521 AegisName: C_Citron_Hat - Name: C Yuzu Helmet + Name: Costume Citrus Helmet Type: Armor Locations: Costume_Head_Top: true @@ -152294,7 +153647,7 @@ Body: View: 791 - Id: 31522 AegisName: C_Orange_Hat - Name: C Orange Helmet + Name: Costume Orange Helmet Type: Armor Locations: Costume_Head_Top: true @@ -152303,7 +153656,7 @@ Body: View: 841 - Id: 31523 AegisName: C_Yellow_Yuzu_Hat - Name: C Pomelo Helmet + Name: Costume Pomelo Helmet Type: Armor Locations: Costume_Head_Top: true @@ -152312,7 +153665,7 @@ Body: View: 924 - Id: 31524 AegisName: C_Lunch_box - Name: C Bento Hat + Name: Costume Bento Hat Type: Armor Locations: Costume_Head_Top: true @@ -152321,7 +153674,7 @@ Body: View: 1766 - Id: 31525 AegisName: C_Kid_Deviling - Name: Pack New Year Doll Egg + Name: Costume Floating Deviling Type: Armor Locations: Costume_Head_Top: true @@ -152330,7 +153683,7 @@ Body: View: 1036 - Id: 31526 AegisName: C_Shaman_Hat - Name: C Shaman Hat + Name: Costume Shaman Hat Type: Armor Locations: Costume_Head_Top: true @@ -152339,7 +153692,7 @@ Body: View: 596 - Id: 31527 AegisName: C_14_RainbowWing - Name: C Radiant Rainbow Wings + Name: Costume Radiant Rainbow Wings Type: Armor Locations: Costume_Head_Mid: true @@ -152348,7 +153701,7 @@ Body: View: 1186 - Id: 31528 AegisName: C_Stardust_Hairband - Name: C Star Dust Hairband + Name: Costume Stardust Hairband Type: Armor Locations: Costume_Head_Top: true @@ -152357,7 +153710,7 @@ Body: View: 831 - Id: 31529 AegisName: C_Happy_Rabbit_Ribbon - Name: C Happy Rabbit Ribbon + Name: Costume Happy Rabbit Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -152374,7 +153727,7 @@ Body: ArmorLevel: 1 - Id: 31531 AegisName: C_Lovely_Heart_Cap - Name: C Lovely Heart Cap + Name: Costume Lovely Heart Cap Type: Armor Locations: Costume_Head_Top: true @@ -152392,7 +153745,7 @@ Body: View: 1696 - Id: 31533 AegisName: C_Warm_Cat_Muffler_BL - Name: C Warm Cat Muffler Black + Name: Costume Warm Black Cat Muffler Type: Armor Locations: Costume_Head_Low: true @@ -152401,7 +153754,7 @@ Body: View: 1771 - Id: 31534 AegisName: C_Rainbow_Star - Name: Rainbow Star + Name: Costume Rainbow Star Type: Armor Locations: Costume_Head_Mid: true @@ -152419,7 +153772,7 @@ Body: View: 1102 - Id: 31536 AegisName: C_Chibi_Beelzebub_Hat - Name: Costume Chibi Beelzebub Hat # !todo check english name + Name: Costume Beelzebub's Crown Type: Armor Locations: Costume_Head_Top: true @@ -152444,7 +153797,7 @@ Body: View: 1772 - Id: 31538 AegisName: C_Love_Feeling_J - Name: C Lovely Feeling + Name: Costume Lovely Feeling Type: Armor Locations: Costume_Head_Mid: true @@ -152453,7 +153806,7 @@ Body: View: 1717 - Id: 31539 AegisName: C_Bulgogi_TW - Name: Costume Bulgogi # !todo check english name + Name: Costume Roasted Pork Dumpling Hat Type: Armor Locations: Costume_Head_Top: true @@ -152462,7 +153815,7 @@ Body: View: 1773 - Id: 31540 AegisName: C_Gemini_RedEyes - Name: C GeminiS58 Eyes Red + Name: Costume Red Gemini Eyes Type: Armor Locations: Costume_Head_Mid: true @@ -152471,7 +153824,7 @@ Body: View: 1654 - Id: 31541 AegisName: C_Drosera_Hairpin - Name: C Drosera Hairpin + Name: Costume Drosera Hairpin Type: Armor Locations: Costume_Head_Top: true @@ -152480,7 +153833,7 @@ Body: View: 850 - Id: 31542 AegisName: C_Clay_Poring_Jar_Jp - Name: C Clay Poring Jar + Name: Costume Clay Poring Jar Type: Armor Locations: Costume_Head_Mid: true @@ -152489,7 +153842,7 @@ Body: View: 1634 - Id: 31543 AegisName: C_Eru_Rava_Hat - Name: C Siorava Hat + Name: Costume Siorava Hat Type: Armor Locations: Costume_Head_Top: true @@ -152498,7 +153851,7 @@ Body: View: 1774 - Id: 31544 AegisName: C_Piamette_Roll_Hair - Name: Costume Piamette Curls + Name: Costume Piamette's Curls Type: Armor Locations: Costume_Head_Low: true @@ -152507,7 +153860,7 @@ Body: View: 1775 - Id: 31545 AegisName: C_Eremes_Scarf_BU - Name: C Eremes Scarf Blue + Name: Costume Eremes Scarf (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -152525,7 +153878,7 @@ Body: View: 1777 - Id: 31547 AegisName: C_Poporing_Mascot_Cos - Name: C Poporing Mascot Head + Name: Costume Poporing Mascot Head Type: Armor Locations: Costume_Head_Top: true @@ -152534,7 +153887,7 @@ Body: View: 1778 - Id: 31548 AegisName: C_Love_Cheek_V - Name: C Love Cheeks Lower + Name: Costume Love Blush Type: Armor Locations: Costume_Head_Low: true @@ -152543,7 +153896,7 @@ Body: View: 1318 - Id: 31549 AegisName: C_Little_Aquarium_V - Name: C Little Aquarium Lower + Name: Costume Little Aquarium (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -152552,7 +153905,7 @@ Body: View: 1363 - Id: 31550 AegisName: C_Tone_Of_Gold_V - Name: C Tone of Gold Mid + Name: Costume Golden Tone (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -152561,7 +153914,7 @@ Body: View: 1447 - Id: 31551 AegisName: C_Black_Glasses_V - Name: C Black Glasses Lower + Name: Costume Black-Rimmed Glasses (Lower) Type: Armor Locations: Costume_Head_Low: true @@ -152570,7 +153923,7 @@ Body: View: 404 - Id: 31552 AegisName: C_Blue_Ribbon_V - Name: C Blue Ribbon Mid + Name: Costume Blue Ribbon (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -152579,7 +153932,7 @@ Body: View: 407 - Id: 31553 AegisName: C_Wings_Of_Victory_V - Name: C Wings Of Victory Mid + Name: Costume Wings Of Victory (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -152588,7 +153941,7 @@ Body: View: 365 - Id: 31554 AegisName: C_Bread_Bag2_V - Name: C Bread Bag Mid + Name: Costume Bread Bag (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -152606,7 +153959,7 @@ Body: View: 660 - Id: 31556 AegisName: C_Moonlight_F_Hat_V - Name: C Moonlight Flower Hat Upper + Name: Costume Moonlight Flower Hat (Upper) Type: Armor Locations: Costume_Head_Top: true @@ -152637,7 +153990,7 @@ Body: View: 1782 - Id: 31559 AegisName: C_Royalguard_Necklace - Name: C Royal Guard Necklace + Name: Costume Royal Guard Necklace Type: Armor Locations: Costume_Head_Low: true @@ -152646,7 +153999,7 @@ Body: View: 1629 - Id: 31560 AegisName: C_DVAngelNurseCap - Name: C Nurse Cap of Clergy + Name: Costume Clergy Nurse Cap Type: Armor Locations: Costume_Head_Top: true @@ -152655,7 +154008,7 @@ Body: View: 1359 - Id: 31561 AegisName: C_8Type_PurgatorialWing - Name: C Heavenly Dark Flame + Name: Costume Heavenly Dark Flame Type: Armor Locations: Costume_Head_Mid: true @@ -152664,7 +154017,7 @@ Body: View: 1008 - Id: 31562 AegisName: C_Zherlthsh_Doll - Name: C Zealotus Doll + Name: Costume Zealotus Doll Type: Armor Locations: Costume_Head_Top: true @@ -152673,7 +154026,7 @@ Body: View: 1376 - Id: 31563 AegisName: C_Blue_EyeShadow_JP - Name: C Blue Eye Shadow + Name: Costume Blue Eye Shadow Type: Armor Locations: Costume_Head_Mid: true @@ -152682,7 +154035,7 @@ Body: View: 1020 - Id: 31564 AegisName: C_Variant_Veil - Name: C Variant Veil + Name: Costume Variant Veil Type: Armor Locations: Costume_Head_Top: true @@ -152691,7 +154044,7 @@ Body: View: 1785 - Id: 31565 AegisName: C_Princess_Ribbon_Crown - Name: C Princess Ribbon Crown + Name: Costume Crowned Princess Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -152700,7 +154053,7 @@ Body: View: 1786 - Id: 31566 AegisName: C_Stall_Of_Dominions - Name: C Stole Of Dominion + Name: Costume Stole of Dominion Type: Armor Locations: Costume_Head_Low: true @@ -152709,7 +154062,7 @@ Body: View: 1784 - Id: 31567 AegisName: C_Sheep_Horn - Name: C Sheep Horns + Name: Costume Sheep's Horns Type: Armor Locations: Costume_Head_Low: true @@ -152727,7 +154080,7 @@ Body: View: 1760 - Id: 31569 AegisName: C_OpenAir_Headset - Name: C Open Air Headset + Name: Costume Open Air Headset Type: Armor Locations: Costume_Head_Low: true @@ -152736,7 +154089,7 @@ Body: View: 1655 - Id: 31570 AegisName: C_Cyclops_Visor - Name: C Cyclops Visor + Name: Costume Cyclops Visor Type: Armor Locations: Costume_Head_Mid: true @@ -152745,7 +154098,7 @@ Body: View: 207 - Id: 31571 AegisName: C_Guardian_Processor - Name: C Guardian Processor + Name: Costume Guardian Processor Type: Armor Locations: Costume_Head_Top: true @@ -152754,7 +154107,7 @@ Body: View: 1552 - Id: 31572 AegisName: C_Mobile_Pursuit_System - Name: C Mobile Pursuit System + Name: Costume Mobile Pursuit System Type: Armor Locations: Costume_Head_Low: true @@ -152763,7 +154116,7 @@ Body: View: 1788 - Id: 31573 AegisName: C_Mecha_Cat_Ears - Name: C Mecha Cat Ears + Name: Costume Mecha Cat Ears Type: Armor Locations: Costume_Head_Top: true @@ -152772,7 +154125,7 @@ Body: View: 1789 - Id: 31574 AegisName: C_Cyber_Income - Name: C Cyber Income + Name: Costume Cyber Income Type: Armor Locations: Costume_Head_Mid: true @@ -152781,7 +154134,7 @@ Body: View: 1790 - Id: 31575 AegisName: C_Electro_Two_Side_Up - Name: C Electro Two Sides Up + Name: Costume Electric Two Sides Up Hair Type: Armor Locations: Costume_Head_Low: true @@ -152790,7 +154143,7 @@ Body: View: 1791 - Id: 31576 AegisName: C_Spring_Rabbit_Hat - Name: C Moon Rabbit Hat + Name: Costume Moon Rabbit Hat Type: Armor Locations: Costume_Head_Top: true @@ -152799,7 +154152,7 @@ Body: View: 455 - Id: 31577 AegisName: C_Roast_Memory_J - Name: C Roast Memory Upper + Name: Costume Chick Chic Type: Armor Locations: Costume_Head_Top: true @@ -152808,7 +154161,7 @@ Body: View: 1576 - Id: 31578 AegisName: C_Alchemist_Mask_V - Name: C Alchemist Mask + Name: Costume Alchemist Mask Type: Armor Locations: Costume_Head_Mid: true @@ -152818,7 +154171,7 @@ Body: View: 1497 - Id: 31579 AegisName: C_Lovegame_Hat - Name: C I LOVE GAMES + Name: Costume I LOVE GAMES Type: Armor Locations: Costume_Head_Top: true @@ -152827,7 +154180,7 @@ Body: View: 1306 - Id: 31580 AegisName: C_Autumnal_Flavor - Name: C Autumn Flavor + Name: Costume Autumn Taste Type: Armor Locations: Costume_Head_Mid: true @@ -152836,7 +154189,7 @@ Body: View: 1792 - Id: 31581 AegisName: C_Jack_Head - Name: C Jack Upper + Name: Costume Pumpkin Head Type: Armor Locations: Costume_Head_Top: true @@ -152845,7 +154198,7 @@ Body: View: 1415 - Id: 31582 AegisName: C_Jirant_Circlet_ - Name: C Jirant Circlet + Name: Costume Ancient Dragon Crown Type: Armor Locations: Costume_Head_Top: true @@ -152854,7 +154207,7 @@ Body: View: 1644 - Id: 31583 AegisName: C_Willothewisp - Name: C Will O Wisp Lower + Name: "Costume: Firefly Spirit Light" Type: Armor Locations: Costume_Head_Low: true @@ -152883,7 +154236,7 @@ Body: View: 1796 - Id: 31586 AegisName: C_Poporing_Muffler - Name: C Poporing Muffler + Name: Costume Poporing Muffler Type: Armor Locations: Costume_Head_Low: true @@ -152901,7 +154254,7 @@ Body: View: 1798 - Id: 31588 AegisName: C_SnowFlake_Tiara - Name: C Snow Flower + Name: Costume Snow Flower Type: Armor Locations: Costume_Head_Top: true @@ -152914,7 +154267,7 @@ Body: hateffect(HAT_EF_SNOWFLAKE_TIARA,false); - Id: 31589 AegisName: C_Gold_Magestic_Goat - Name: C Golden Majestic Goat + Name: Costume Gold Baphomet Horns Type: Armor Locations: Costume_Head_Top: true @@ -152923,7 +154276,7 @@ Body: View: 1800 - Id: 31590 AegisName: C_Der_Meisterpinsel - Name: C Designer's Brush + Name: Costume Designer's Brush Type: Armor Locations: Costume_Head_Low: true @@ -152949,7 +154302,7 @@ Body: View: 1801 - Id: 31593 AegisName: C_Yellow_Scarf - Name: C Yellow Scarf + Name: Costume Yellow Scarf Type: Armor Locations: Costume_Head_Low: true @@ -152958,7 +154311,7 @@ Body: View: 1170 - Id: 31594 AegisName: C_Red_Pencil_Mouth - Name: C Red Pencil in Mouth + Name: Costume Red Pencil in Mouth Type: Armor Locations: Costume_Head_Low: true @@ -152967,7 +154320,7 @@ Body: View: 931 - Id: 31595 AegisName: C_Book_of_Soyga - Name: C Book File Hat + Name: Costume Book of Soyga Type: Armor Locations: Costume_Head_Top: true @@ -152976,7 +154329,7 @@ Body: View: 423 - Id: 31596 AegisName: C_Spider_Temp_TW - Name: C Spider Seduction + Name: Costume Spider Seduction Type: Armor Locations: Costume_Head_Top: true @@ -152985,7 +154338,7 @@ Body: View: 1711 - Id: 31597 AegisName: C_GoldFish_Hat - Name: C Golden Fish Hat + Name: Costume Golden Fish Hat Type: Armor Locations: Costume_Head_Top: true @@ -152994,7 +154347,7 @@ Body: View: 1645 - Id: 31598 AegisName: C_Forest_Guide - Name: C Forest Guide + Name: Costume Forest Guide Type: Armor Locations: Costume_Head_Top: true @@ -153003,7 +154356,7 @@ Body: View: 1802 - Id: 31599 AegisName: C_Medium_Wave - Name: C Medium Wave + Name: Costume Medium Wave Type: Armor Locations: Costume_Head_Low: true @@ -153012,7 +154365,7 @@ Body: View: 1803 - Id: 31600 AegisName: C_Kishu_Inu - Name: C Kishu Dog + Name: Costume Kishu Dog Type: Armor Locations: Costume_Head_Mid: true @@ -153021,7 +154374,7 @@ Body: View: 1804 - Id: 31601 AegisName: C_Under_Rim_Glasses_Bu - Name: C Under Rim Glasses Blue + Name: Costume Under Rimmed Glasses (Blue) Type: Armor Locations: Costume_Head_Mid: true @@ -153030,7 +154383,7 @@ Body: View: 1805 - Id: 31602 AegisName: C_Midgarts_Glory - Name: C Rune-Midgarts Glory + Name: Costume Rune-Midgarts Glory Type: Armor Locations: Costume_Head_Top: true @@ -153043,7 +154396,7 @@ Body: hateffect(HAT_EF_MIDGARTS_GLORY,false); - Id: 31603 AegisName: C_Cat_Ear_ShortK - Name: Costume Cat Ear ShortK # !todo check english name + Name: Costume Cat Ears Shortcut Type: Armor Locations: Costume_Head_Top: true @@ -153052,7 +154405,7 @@ Body: View: 1752 - Id: 31604 AegisName: C_Cat_Ear_LongK - Name: Costume Cat Ear LongK # !todo check english name + Name: Costume Cat Ears Long Type: Armor Locations: Costume_Head_Top: true @@ -153061,7 +154414,7 @@ Body: View: 1928 - Id: 31605 AegisName: C_Volume_Low_Twin_WHK - Name: Costume Volume Low Twin WHK # !todo check english name + Name: Costume Volume Low Twin (White) Type: Armor Locations: Costume_Head_Top: true @@ -153070,7 +154423,7 @@ Body: View: 1913 - Id: 31606 AegisName: C_Autumn_Headband - Name: C Autumn Headband + Name: Costume Autumn Headband Type: Armor Locations: Costume_Head_Top: true @@ -153079,7 +154432,7 @@ Body: View: 1119 - Id: 31607 AegisName: C_B_EarWitchHat - Name: C Cat Ear Witch Hat + Name: Costume Black Witch Hat with Ears Type: Armor Locations: Costume_Head_Top: true @@ -153088,7 +154441,7 @@ Body: View: 1808 - Id: 31608 AegisName: C_Magicstone_Of_Grace - Name: C Magic Stone of Grace + Name: Costume Magicstone of Grace Type: Armor Locations: Costume_Head_Top: true @@ -153099,7 +154452,7 @@ Body: View: 1420 - Id: 31609 AegisName: C_Noble_Mask - Name: C Noble Mask + Name: Costume Noble Mask Type: Armor Locations: Costume_Head_Mid: true @@ -153108,7 +154461,7 @@ Body: View: 1409 - Id: 31610 AegisName: C_Yellow_Wizardry_Hat - Name: C Yellow Wizardry Hat + Name: Costume Yellow Wizardry Hat Type: Armor Locations: Costume_Head_Top: true @@ -153117,7 +154470,7 @@ Body: View: 286 - Id: 31611 AegisName: C_Dark_Snake_Lord_Stall - Name: C Snake Lord Stole + Name: Costume Dark Snake Lord Stole Type: Armor Locations: Costume_Head_Low: true @@ -153126,7 +154479,7 @@ Body: View: 1810 - Id: 31612 AegisName: C_Large_Sorcerer_Crown - Name: C Large Sorcerer Crown + Name: Costume Large Sorcerer Crown Type: Armor Locations: Costume_Head_Top: true @@ -153144,7 +154497,7 @@ Body: View: 1858 - Id: 31614 AegisName: C_Fox - Name: C Fox + Name: Costume Fox Type: Armor Locations: Costume_Head_Mid: true @@ -153153,7 +154506,7 @@ Body: View: 1812 - Id: 31615 AegisName: C_Geisha_Make - Name: C Geisha Make Up + Name: Costume Geisha Make Up Type: Armor Locations: Costume_Head_Mid: true @@ -153162,7 +154515,7 @@ Body: View: 1813 - Id: 31616 AegisName: C_Sleep_Sheep_TW - Name: C Sleep Sheep + Name: Costume Sleep Sheep Type: Armor Locations: Costume_Head_Low: true @@ -153236,7 +154589,7 @@ Body: hateffect HAT_EF_C_ROMANCE_ROSE_TW,false; - Id: 31624 AegisName: C_HeartOfCat_TW - Name: C Heart of Cat + Name: Costume Heart of Cat Type: Armor Locations: Costume_Head_Top: true @@ -153245,7 +154598,7 @@ Body: View: 1822 - Id: 31625 AegisName: C_Protect_Cloth - Name: C Protection Cloth + Name: Costume Protect Cloth Type: Armor Locations: Costume_Head_Low: true @@ -153267,7 +154620,7 @@ Body: hateffect HAT_EF_FLUFFYWING,false; - Id: 31627 AegisName: C_L_Magesic2_TW - Name: Costume L Magesic2 # !todo check english name + Name: Costume Goat Helmet Type: Armor Locations: Costume_Head_Top: true @@ -153276,7 +154629,7 @@ Body: View: 513 - Id: 31628 AegisName: C_Bogy_Cap_TW - Name: C Dokebi + Name: Costume Dokebi Type: Armor Locations: Costume_Head_Top: true @@ -153295,7 +154648,7 @@ Body: View: 523 - Id: 31630 AegisName: C_BaphoJ_Parachute_JP - Name: C Baphomet Balloon + Name: Costume Baphomet Balloon Type: Armor Locations: Costume_Head_Low: true @@ -153304,7 +154657,7 @@ Body: View: 1746 - Id: 31631 AegisName: C_Drooping_Schmidt - Name: C Drooping Schmidt + Name: Costume Drooping Schmidt Type: Armor Locations: Costume_Head_Top: true @@ -153313,7 +154666,7 @@ Body: View: 1859 - Id: 31632 AegisName: C_Drooping_Oscar - Name: C Drooping Oscar + Name: Costume Drooping Oscar Type: Armor Locations: Costume_Head_Top: true @@ -153322,7 +154675,7 @@ Body: View: 1860 - Id: 31633 AegisName: C_Drooping_Heinrich - Name: C Drooping Heinrich + Name: Costume Drooping Heinrich Type: Armor Locations: Costume_Head_Top: true @@ -153331,7 +154684,7 @@ Body: View: 1861 - Id: 31634 AegisName: C_Rudolf_Hairband - Name: C Reindeer Hair Band + Name: Costume Rudolph Hairband Type: Armor Locations: Costume_Head_Top: true @@ -153340,7 +154693,7 @@ Body: View: 836 - Id: 31635 AegisName: C_Fairy_Long_BD - Name: C Flowing Long Blonde + Name: Costume Flowing Long (Blonde) Type: Armor Locations: Costume_Head_Low: true @@ -153349,7 +154702,7 @@ Body: View: 1832 - Id: 31636 AegisName: C_Fairy_Long_SV - Name: C Flowing Long Silver + Name: Costume Flowing Long (Silver) Type: Armor Locations: Costume_Head_Low: true @@ -153358,7 +154711,7 @@ Body: View: 1833 - Id: 31637 AegisName: C_Straight_Long_BU - Name: C Straight Long Blue + Name: Costume Straight Long (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -153367,7 +154720,7 @@ Body: View: 1834 - Id: 31638 AegisName: C_Straight_Long_RD - Name: C Straight Long Red + Name: Costume Straight Long (Red) Type: Armor Locations: Costume_Head_Low: true @@ -153376,7 +154729,7 @@ Body: View: 1835 - Id: 31639 AegisName: C_Straight_Long_GL - Name: C Straight Long Blonde + Name: Costume Straight Long (Blonde) Type: Armor Locations: Costume_Head_Low: true @@ -153385,7 +154738,7 @@ Body: View: 1836 - Id: 31640 AegisName: C_Straight_Long_GN - Name: C Straight Long Green + Name: Costume Straight Long (Green) Type: Armor Locations: Costume_Head_Low: true @@ -153394,7 +154747,7 @@ Body: View: 1837 - Id: 31641 AegisName: C_Straight_Long_JBL - Name: C Straight Long Jet Black + Name: Costume Straight Long (Jet Black) Type: Armor Locations: Costume_Head_Low: true @@ -153403,7 +154756,7 @@ Body: View: 1838 - Id: 31642 AegisName: C_Straight_Long_LPP - Name: C Straight Long Light Purple + Name: Costume Straight Long (Light Purple) Type: Armor Locations: Costume_Head_Low: true @@ -153412,7 +154765,7 @@ Body: View: 1839 - Id: 31643 AegisName: C_Straight_Long_OM - Name: C Straight Long Brown + Name: Costume Straight Long (Brown) Type: Armor Locations: Costume_Head_Low: true @@ -153421,7 +154774,7 @@ Body: View: 1840 - Id: 31644 AegisName: C_Straight_Long_PP - Name: C Straight Long Purple + Name: Costume Straight Long (Purple) Type: Armor Locations: Costume_Head_Low: true @@ -153430,7 +154783,7 @@ Body: View: 1841 - Id: 31645 AegisName: C_Side_Tail_BU - Name: C Side Pony Blue + Name: Costume Side Pony (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -153439,7 +154792,7 @@ Body: View: 1842 - Id: 31646 AegisName: C_Side_Tail_RD - Name: C Side Pony Red + Name: Costume Side Pony (Red) Type: Armor Locations: Costume_Head_Low: true @@ -153448,7 +154801,7 @@ Body: View: 1843 - Id: 31647 AegisName: C_Side_Tail_YL - Name: C Side Pony Blonde + Name: Costume Side Pony (Blonde) Type: Armor Locations: Costume_Head_Low: true @@ -153457,7 +154810,7 @@ Body: View: 1844 - Id: 31648 AegisName: C_Side_Tail_GN - Name: C Side Pony Green + Name: Costume Side Pony (Green) Type: Armor Locations: Costume_Head_Low: true @@ -153466,7 +154819,7 @@ Body: View: 1845 - Id: 31649 AegisName: C_Side_Tail_BL - Name: C Side Pony Black + Name: Costume Side Pony (Black) Type: Armor Locations: Costume_Head_Low: true @@ -153475,7 +154828,7 @@ Body: View: 1846 - Id: 31650 AegisName: C_Side_Tail_WH - Name: C Side Pony White + Name: Costume Side Pony (White) Type: Armor Locations: Costume_Head_Low: true @@ -153484,7 +154837,7 @@ Body: View: 1847 - Id: 31651 AegisName: C_Side_Tail_OM - Name: C Side Pony Brown + Name: Costume Side Pony (Brown) Type: Armor Locations: Costume_Head_Low: true @@ -153493,7 +154846,7 @@ Body: View: 1848 - Id: 31652 AegisName: C_Side_Tail_PP - Name: C Side Pony Purple + Name: Costume Side Pony (Purple) Type: Armor Locations: Costume_Head_Low: true @@ -153502,7 +154855,7 @@ Body: View: 1849 - Id: 31653 AegisName: C_Back_Signon_BU - Name: C Chignon Blue + Name: Costume Chignon (Blue) Type: Armor Locations: Costume_Head_Low: true @@ -153511,7 +154864,7 @@ Body: View: 1850 - Id: 31654 AegisName: C_Back_Signon_RD - Name: C Chignon Red + Name: Costume Chignon (Red) Type: Armor Locations: Costume_Head_Low: true @@ -153520,7 +154873,7 @@ Body: View: 1851 - Id: 31655 AegisName: C_Back_Signon_YL - Name: C Chignon Blonde + Name: Costume Chignon (Blonde) Type: Armor Locations: Costume_Head_Low: true @@ -153529,7 +154882,7 @@ Body: View: 1852 - Id: 31656 AegisName: C_Back_Signon_GN - Name: C Chignon Green + Name: Costume Chignon (Green) Type: Armor Locations: Costume_Head_Low: true @@ -153538,7 +154891,7 @@ Body: View: 1853 - Id: 31657 AegisName: C_Back_Signon_BL - Name: C Chignon Black + Name: Costume Chignon (Black) Type: Armor Locations: Costume_Head_Low: true @@ -153547,7 +154900,7 @@ Body: View: 1854 - Id: 31658 AegisName: C_Back_Signon_WH - Name: C Chignon White + Name: Costume Chignon (White) Type: Armor Locations: Costume_Head_Low: true @@ -153556,7 +154909,7 @@ Body: View: 1855 - Id: 31659 AegisName: C_Back_Signon_OM - Name: C Chignon Brown + Name: Costume Chignon (Brown) Type: Armor Locations: Costume_Head_Low: true @@ -153565,7 +154918,7 @@ Body: View: 1856 - Id: 31660 AegisName: C_Back_Signon_PP - Name: C Chignon Purple + Name: Costume Chignon (Purple) Type: Armor Locations: Costume_Head_Low: true @@ -153601,7 +154954,7 @@ Body: View: 492 - Id: 31664 AegisName: C_B_Desert_Wolf_Hat - Name: C Drooping Ernst Von Wolf 11th + Name: Costume Drooping Ernst Von Wolf 11th Type: Armor Locations: Costume_Head_Top: true @@ -153635,7 +154988,7 @@ Body: View: 903 - Id: 31667 AegisName: C_PoringBeret_TW - Name: C Poring Beret + Name: Costume Poring Beret Type: Armor Locations: Costume_Head_Top: true @@ -153644,7 +154997,7 @@ Body: View: 1825 - Id: 31668 AegisName: C_Majoruros_Horn - Name: C Majorous Horns + Name: Costume Majorous Horns Type: Armor Locations: Costume_Head_Top: true @@ -153653,7 +155006,7 @@ Body: View: 888 - Id: 31669 AegisName: C_Adv_Whisper_Mask_J - Name: C Evolved Whisper Mask Mid + Name: Costume Evolved Whisper Mask (Middle) Type: Armor Locations: Costume_Head_Mid: true @@ -153662,7 +155015,7 @@ Body: View: 458 - Id: 31670 AegisName: C_Miyabi_Long_Hair - Name: C Miyabi Long Hair + Name: Costume Miyabi Doll Hair Type: Armor Locations: Costume_Head_Low: true @@ -153671,7 +155024,7 @@ Body: View: 1864 - Id: 31671 AegisName: C_Twin_Canon - Name: C Twin Cannon + Name: Costume Twin Cannons Type: Armor Locations: Costume_Head_Low: true @@ -153680,7 +155033,7 @@ Body: View: 1865 - Id: 31672 AegisName: C_Mermaid_Wig - Name: C Mermaid Wig + Name: Costume Mermaid Wig Type: Armor Locations: Costume_Head_Low: true @@ -153689,7 +155042,7 @@ Body: View: 1866 - Id: 31673 AegisName: C_Picnic_Basket - Name: C Picnic Basket + Name: Costume Picnic Basket Type: Armor Locations: Costume_Head_Mid: true @@ -153698,7 +155051,7 @@ Body: View: 1867 - Id: 31674 AegisName: C_Jitterbug_Cap - Name: C Jitterbug Cap + Name: Costume Jitterbug Cap Type: Armor Locations: Costume_Head_Top: true @@ -153707,7 +155060,7 @@ Body: View: 1868 - Id: 31675 AegisName: C_Orange_Stem_Hat - Name: C Orange Hat + Name: Costume Orange Flavour Hat Type: Armor Locations: Costume_Head_Top: true @@ -153716,7 +155069,7 @@ Body: View: 620 - Id: 31676 AegisName: C_Orange_In_Mouth - Name: C Orange In Mouth + Name: Costume Orange In Mouth Type: Armor Locations: Costume_Head_Low: true @@ -153833,7 +155186,7 @@ Body: View: 1877 - Id: 31689 AegisName: C_Piamette_Roll_HairK - Name: C Piamette Curls + Name: Costume Piamette Curls Type: Armor Locations: Costume_Head_Low: true @@ -153842,7 +155195,7 @@ Body: View: 1775 - Id: 31690 AegisName: C_Flame_Bird - Name: C Flame Bird + Name: Costume Flamebird Type: Armor Locations: Costume_Head_Top: true @@ -153860,7 +155213,7 @@ Body: View: 1034 - Id: 31692 AegisName: C_YDragon_SkyWing - Name: C Dragon Emperor Wings + Name: "[Costume] Emperor Dragon's Wings" Type: Armor Locations: Costume_Head_Mid: true @@ -153953,7 +155306,7 @@ Body: View: 1882 - Id: 31702 AegisName: C_Moon_Cat_Fighter - Name: C Moon Cat Hat + Name: Costume Full Moon Cat Hood Type: Armor Locations: Costume_Head_Top: true @@ -153971,7 +155324,7 @@ Body: View: 397 - Id: 31704 AegisName: C_Sweet_Valentine_Hat - Name: C Sweet Valentine Out + Name: Costume Sweet Valentine Hat Type: Armor Locations: Costume_Head_Top: true @@ -153980,7 +155333,7 @@ Body: View: 865 - Id: 31705 AegisName: C_Red_White_Hat - Name: C Red Hat + Name: Costume Red & White Hat Type: Armor Locations: Costume_Head_Top: true @@ -153989,7 +155342,7 @@ Body: View: 469 - Id: 31706 AegisName: C_Tatenasi_Helmet - Name: C Trident Helm + Name: Costume Tatenasi Helmet Type: Armor Locations: Costume_Head_Mid: true @@ -153998,7 +155351,7 @@ Body: View: 810 - Id: 31707 AegisName: C_Nine_Tail_Fox_Hair - Name: C Nine Tail Fox Hair + Name: Costume Nine Tail Fox Wig Type: Armor Locations: Costume_Head_Top: true @@ -154007,7 +155360,7 @@ Body: View: 1884 - Id: 31708 AegisName: C_Gothic_Skull_Ribbon - Name: C Gothic Skull Ribbon + Name: Costume Gothic Skull Ribbon Type: Armor Locations: Costume_Head_Top: true @@ -154504,7 +155857,7 @@ Body: View: 1679 - Id: 31763 AegisName: C_Fortier_Mask - Name: C Fortier Mask + Name: Costume Fortier Mask Type: Armor Locations: Costume_Head_Mid: true @@ -154556,6 +155909,10 @@ Body: ArmorLevel: 1 EquipLevelMin: 1 View: 1908 + Script: | + hateffect HAT_EF_2019RTC_CeleAura_TW,true; + UnEquipScript: | + hateffect HAT_EF_2019RTC_CeleAura_TW,false; - Id: 31769 AegisName: C_Orange_Bunny_Band Name: Costume Bunny Hairband (Orange) @@ -155031,7 +156388,7 @@ Body: View: 812 - Id: 31823 AegisName: C_Nose_Glasses_J - Name: C Nose Glasses + Name: Costume Nose Glasses Type: Armor Locations: Costume_Head_Mid: true @@ -155040,7 +156397,7 @@ Body: View: 1933 - Id: 31824 AegisName: C_Mask_Of_Cat_J - Name: C Mask of Cat + Name: Costume Monster Cat Mask Type: Armor Locations: Costume_Head_Mid: true @@ -155058,7 +156415,7 @@ Body: View: 801 - Id: 31826 AegisName: C_Sunglass_Bear_Cap_J - Name: C Sunglass Bear Cap + Name: Costume Choppy Bear Hat Type: Armor Locations: Costume_Head_Top: true @@ -155131,7 +156488,7 @@ Body: View: 1939 - Id: 31834 AegisName: C_Halloween_Cat_Long - Name: C Halloween Long Haired Cat Ears + Name: Costume Halloween Cat Long Type: Armor Locations: Costume_Head_Low: true @@ -157128,6 +158485,64 @@ Body: bonus2 bSkillAtk,"LG_CANNONSPEAR",20; bonus2 bSkillAtk,"LG_BANISHINGPOINT",20; } + - Id: 32101 + AegisName: Local01_Violin + Name: Earth Dragon Violin + Type: Weapon + SubType: Musical + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + BardDancer: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Formless,5; + bonus2 bAddEle,Ele_Earth,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Formless,10; + bonus2 bAddEle,Ele_Earth,10; + } + } + - Id: 32102 + AegisName: Local02_Violin + Name: Yinyang Violin + Type: Weapon + SubType: Musical + Weight: 800 + Attack: 130 + Range: 1 + Slots: 2 + Jobs: + BardDancer: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 70 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=7) { + bonus2 bAddRace,RC_Demon,5; + bonus2 bAddEle,Ele_Fire,5; + if (.@r>=9) { + bonus2 bAddRace,RC_Demon,10; + bonus2 bAddEle,Ele_Fire,10; + } + } - Id: 32103 AegisName: Woe_Instrument1_Z Name: Lesser Guild Member's Guitar @@ -157163,6 +158578,30 @@ Body: bonus bVariableCastrate,-30; autobonus3 "{ .@r = getrefine(); bonus2 bSkillAtk,\"BA_MUSICALSTRIKE\",30+(.@r-10); }",1000,60000,"BD_ADAPTATION"; } + - Id: 32104 + AegisName: Hyegun_Erhu + Name: Hyegun Erhu + Type: Weapon + SubType: Musical + Weight: 700 + Attack: 120 + Range: 1 + Slots: 1 + Jobs: + BardDancer: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 60 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bSkillAtk,"BA_MUSICALSTRIKE",5; + if (.@r>=7) + bonus2 bSkillAtk,"BA_MUSICALSTRIKE",5; + if (.@r>=9) + bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; - Id: 32105 AegisName: Variant_Viollin Name: Abyss Violin @@ -160486,7 +161925,7 @@ Body: bonus2 bAddSize,Size_All,10; } - Id: 400100 - AegisName: aegis_400100 + AegisName: C_VIP_Hair_2024 Name: Costume Leon Wig Type: Armor Locations: @@ -166511,6 +167950,11 @@ Body: bonus bAtkRate,40; bonus2 bSkillAtk,"DK_HACKANDSLASHER",BaseLevel/10; bonus2 bSkillAtk,"DK_MADNESS_CRUSHER",BaseLevel/10; + bonus2 bSkillAtk,"DK_DRAGONIC_AURA",BaseLevel/10; + if (.@r>=10) { + bonus bDelayrate,-20; + bonus bPerfectHitAddRate,25; + } - Id: 400421 AegisName: aegis_400421 Name: Two Tone Cap @@ -166710,14 +168154,20 @@ Body: Refineable: true View: 2380 Script: | - bonus bPow,3+getrefine(); + .@r = getrefine(); + bonus bPow,3+.@r; bonus2 bSubRace,RC_Player_Doram,13; bonus2 bSubRace,RC_Player_Human,13; bonus2 bSubClass,Class_Boss,20; bonus2 bSubClass,Class_Normal,20; bonus bAtkRate,40; + bonus2 bSkillAtk,"SHC_DANCING_KNIFE",BaseLevel/10; bonus2 bSkillAtk,"SHC_SHADOW_STAB",BaseLevel/10; bonus2 bSkillAtk,"SHC_ETERNAL_SLASH",BaseLevel/10; + if (.@r>=10) { + bonus bDelayrate,-20; + bonus bPerfectHitAddRate,25; + } - Id: 400438 AegisName: aegis_400438 Name: Bobcat Knit Hat (White) @@ -169412,14 +170862,20 @@ Body: Refineable: true View: 2447 Script: | - bonus bPow,3+getrefine(); + .@r = getrefine; + bonus bPow,3+.@r; bonus2 bSubRace,RC_Player_Human,13; bonus2 bSubRace,RC_Player_Doram,13; bonus2 bSubClass,Class_Boss,20; bonus2 bSubClass,Class_Normal,20; bonus bAtkRate,40; + bonus2 bSkillAtk,"IQ_OLEUM_SANCTUM",BaseLevel/10; bonus2 bSkillAtk,"IQ_MASSIVE_F_BLASTER",BaseLevel/10; bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",BaseLevel/10; + if (.@r>=10) { + bonus bDelayrate,-20; + bonus bCritical,25; + } - Id: 400557 AegisName: aegis_400557 Name: Costume Egg Picky Doll @@ -169695,6 +171151,27 @@ Body: bonus2 bSkillAtk,"IG_OVERSLASH",BaseLevel/10; bonus2 bSkillAtk,"IG_GRAND_JUDGEMENT",BaseLevel/10; bonus2 bSkillAtk,"IG_SHIELD_SHOOTING",BaseLevel/10; + - Id: 400584 + AegisName: Z_Boost_Hat + Name: Boosting Headband + Type: Armor + Defense: 5 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + View: 15 + Script: | + bonus bBaseAtk,25; + bonus bMatk,25; + bonus bAspdRate,5; + bonus bVariableCastrate,-5; + if (getrefine()>=9) { + bonus bBaseAtk,25; + bonus bMatk,25; + } - Id: 400585 AegisName: C_SnowmanHat Name: Costume Snowman Hat @@ -169703,6 +171180,14 @@ Body: Costume_Head_Top: true ArmorLevel: 1 View: 2488 + - Id: 400588 + AegisName: aegis_400588 + Name: Costume Lucky Purse + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2493 - Id: 400592 AegisName: aegis_400592 Name: Yellow Kitty Headphone @@ -169840,6 +171325,14 @@ Body: bonus bDelayrate,-20; } /*Todo : SkillAtk SS_KAGEGARI, SS_KAGENOMAI, SS_KAGEGISSEN, SS_KAGEAKUMU, 1% Per 10 BaseLevel (Not List in SkillDB)*/ + - Id: 400604 + AegisName: aegis_400604 + Name: Costume Black Ribbon Beret # !todo check english name + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2507 - Id: 400605 AegisName: C_VIP_Poring_Cake_Cap Name: Costume Birthday Cake Hat @@ -170227,6 +171720,249 @@ Body: } } } + - Id: 400631 + AegisName: aegis_400631 + Name: Themis Helm + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + Crusader: true + Classes: + All_Upper: true + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 50 + Refineable: true + View: 2099 + Script: | + .@r = getrefine(); + bonus bMaxHP,800; + bonus bMaxHPrate,.@r-5; + if (.@r>=7) + bonus bDef,70; + if (.@r>=9) + bonus2 bSkillAtk,"PA_SACRIFICE",20; + - Id: 400632 + AegisName: aegis_400632 + Name: "[Not For Sale] Themis Helm" + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + Crusader: true + Classes: + All_Upper: true + Locations: + Head_Top: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 50 + Refineable: true + View: 2099 + Script: | + .@r = getrefine(); + bonus bMaxHP,800; + bonus bMaxHPrate,.@r-5; + if (.@r>=7) + bonus bDef,70; + if (.@r>=9) + bonus2 bSkillAtk,"PA_SACRIFICE",20; + - Id: 400633 + AegisName: aegis_400633 + Name: Costume Chic Peony + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2380 + - Id: 400634 + AegisName: aegis_400634 + Name: Costume Devil's Whisper + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2338 + - Id: 400635 + AegisName: aegis_400635 + Name: Costume Flower Summer Knit Hat + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2516 + - Id: 400642 + AegisName: Unyielding_Crown_MSP + Name: "[NFS] Crown of Unyielding Force" + Type: Armor + Weight: 300 + Defense: 10 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + View: 1107 + Script: | + .@r = getrefine(); + bonus bMdef,10; + bonus bVit,5; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,5; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,5; + if (.@r>=9) { + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,3; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,3; + bonus2 bSubRace,RC_Player_Doram,3; + bonus2 bSubRace,RC_Player_Human,3; + bonus bAspd,1; + if (.@r>=11) { + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,2; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,2; + bonus2 bSubRace,RC_Player_Doram,2; + bonus2 bSubRace,RC_Player_Human,2; + bonus bAspd,1; + if (.@r>=13) { + bonus2 bSubRace,RC_Player_Doram,5; + bonus2 bSubRace,RC_Player_Human,5; + bonus bDelayrate,-3; + } + } + } + - Id: 400643 + AegisName: Supremacy_Crown_MSP + Name: "[NFS] Crown of Arcane Supremacy" + Type: Armor + Weight: 300 + Defense: 10 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + View: 1108 + Script: | + .@r = getrefine(); + bonus bMdef,10; + bonus bVit,5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,5; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,5; + if (.@r>=9) { + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,3; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,3; + bonus2 bSubRace,RC_Player_Doram,3; + bonus2 bSubRace,RC_Player_Human,3; + bonus bVariableCastrate,-1; + if (.@r>=11) { + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,2; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,2; + bonus2 bSubRace,RC_Player_Doram,2; + bonus2 bSubRace,RC_Player_Human,2; + bonus bVariableCastrate,-1; + if (.@r>=13) { + bonus2 bSubRace,RC_Player_Doram,5; + bonus2 bSubRace,RC_Player_Human,5; + bonus bVariableCastrate,-1; + bonus bDelayrate,-3; + } + } + } + - Id: 400644 + AegisName: aegis_400644 + Name: Soul Mastery Crown + Type: Armor + Weight: 500 + Defense: 10 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 200 + Refineable: true + View: 2519 + Script: | + .@r = getrefine(); + bonus bSpl,3+.@r; + bonus2 bSubRace,RC_Player_Doram,13; + bonus2 bSubRace,RC_Player_Human,13; + bonus2 bSubClass,Class_Boss,20; + bonus2 bSubClass,Class_Normal,20; + bonus bMatkRate,40; + if (.@r>=10) { + bonus bDelayrate,-20; + bonus2 bIgnoreMdefRaceRate,RC_All,50; + } + /*Todo: SkillAtk SOA_TALISMAN_OF_BLUE_DRAGON, SOA_TALISMAN_OF_WHITE_TIGER, SOA_TALISMAN_OF_RED_PHOENIX, SOA_TALISMAN_OF_BLACK_TORTOISE, SOA_TALISMAN_OF_FOUR_BEARING_GOD, SOA_CIRCLE_OF_DIRECTIONS_AND_ELEMENTALS 1% Per 10 BaseLevel (Skill Not List in DB)*/ + - Id: 400645 + AegisName: aegis_400645 + Name: Garden of Heaven + Type: Armor + Weight: 500 + Defense: 10 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 200 + Refineable: true + View: 2521 + Script: | + .@r = getrefine(); + bonus bSpl,3+.@r; + bonus2 bSubRace,RC_Player_Doram,13; + bonus2 bSubRace,RC_Player_Human,13; + bonus2 bSubClass,Class_Boss,20; + bonus2 bSubClass,Class_Normal,20; + bonus bMatkRate,40; + bonus2 bSkillAtk,"EM_CONFLAGRATION",BaseLevel/10; + bonus2 bSkillAtk,"EM_DIAMOND_STORM",BaseLevel/10; + bonus2 bSkillAtk,"EM_LIGHTNING_LAND",BaseLevel/10; + bonus2 bSkillAtk,"EM_TERRA_DRIVE",BaseLevel/10; + bonus2 bSkillAtk,"EM_VENOM_SWAMP",BaseLevel/10; + bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER",BaseLevel/10; + if (.@r>=10) { + bonus bDelayrate,-20; + bonus2 bIgnoreMdefRaceRate,RC_All,50; + } + - Id: 400649 + AegisName: aegis_400649 + Name: Satanic Crown + Type: Armor + Weight: 500 + Defense: 10 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 200 + Refineable: true + View: 2523 + Script: | + .@r = getrefine(); + bonus bCon,3+.@r; + bonus2 bSubRace,RC_Player_Doram,13; + bonus2 bSubRace,RC_Player_Human,13; + bonus2 bSubClass,Class_Boss,20; + bonus2 bSubClass,Class_Normal,20; + bonus bAtkRate,40; + bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT",BaseLevel/10; + bonus2 bSkillAtk,"ABC_FRENZY_SHOT",BaseLevel/10; + if (.@r>=10) { + bonus bDelayrate,-20; + bonus bCrt,25; + } - Id: 400650 AegisName: FuriousCirclet_IG Name: Furious Crown (Imperial Guard) @@ -170362,7 +172098,7 @@ Body: bonus bVariableCastrate,-15; if (.@r>=9) { bonus2 bMagicAtkEle,Ele_All,10; - bonus2 bLongAtkRate,Ele_All,10; + bonus bLongAtkRate,10; if (.@r>=11) { bonus2 bMagicAddRace,RC_All,5; bonus2 bMagicAddRace,RC_Player_Human,-5; @@ -170383,7 +172119,7 @@ Body: bonus bCon,5; if (.@g>=ENCHANTGRADE_C) { bonus2 bMagicAtkEle,Ele_All,10; - bonus2 bLongAtkRate,Ele_All,10; + bonus bLongAtkRate,10; if (.@g>=ENCHANTGRADE_B) { bonus2 bMagicAddRace,RC_All,5; bonus2 bMagicAddRace,RC_Player_Human,-5; @@ -170395,16 +172131,140 @@ Body: bonus bAtkRate,5; if (.@g>=ENCHANTGRADE_A) { bonus2 bMagicAtkEle,Ele_All,15; - bonus2 bLongAtkRate,Ele_All,15; + bonus bLongAtkRate,15; bonus bPAtk,5; bonus bSMatk,5; } } } } + - Id: 400655 + AegisName: aegis_400655 + Name: Costume Octopus Leg In Mouth + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2401 + - Id: 400656 + AegisName: aegis_400656 + Name: Costume Khalitzburg Knight White Helm + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2392 + - Id: 400657 + AegisName: aegis_400657 + Name: Costume Hyegun Hat (Upper) + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 375 + - Id: 400658 + AegisName: aegis_400658 + Name: Fairy's Crown + Type: Armor + Weight: 300 + Defense: 20 + Slots: 1 + Jobs: + Novice: true + SuperNovice: true + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 50 + Refineable: true + View: 1118 + Script: | + .@r = getrefine(); + bonus bBaseAtk,2*(readparam(bStr)/9); + bonus bMatk,2*(readparam(bInt)/9); + bonus2 bAddEle,Ele_Earth,5; + bonus2 bAddEle,Ele_Fire,5; + bonus2 bAddEle,Ele_Water,5; + bonus2 bAddEle,Ele_Wind,5; + if (.@r>=5) { + bonus bMaxHP,3000; + bonus bMaxSP,300; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,30; + bonus2 bIgnoreMdefRaceRate,RC_All,30; + } + } + - Id: 400659 + AegisName: aegis_400659 + Name: "[Not For Sale] Fairy's Crown" + Type: Armor + Weight: 300 + Defense: 20 + Slots: 1 + Jobs: + Novice: true + SuperNovice: true + Locations: + Head_Top: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 50 + Refineable: true + View: 1118 + Script: | + .@r = getrefine(); + bonus bBaseAtk,2*(readparam(bStr)/9); + bonus bMatk,2*(readparam(bInt)/9); + bonus2 bAddEle,Ele_Earth,5; + bonus2 bAddEle,Ele_Fire,5; + bonus2 bAddEle,Ele_Water,5; + bonus2 bAddEle,Ele_Wind,5; + if (.@r>=5) { + bonus bMaxHP,3000; + bonus bMaxSP,300; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,30; + bonus2 bIgnoreMdefRaceRate,RC_All,30; + } + } + - Id: 400660 + AegisName: aegis_400660 + Name: Ultra Helm + Type: Armor + Weight: 400 + Defense: 5 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + View: 1199 + Script: | + .@r = getrefine(); + bonus bLongAtkRate,5; + bonus bAspdRate,5; + bonus bPerfectHitAddRate,5; + bonus bHit,.@r; + bonus bDelayrate,-.@r; + if (.@r>=7) { + bonus bLongAtkRate,5; + bonus bPerfectHitAddRate,10; + if (.@r>=9) { + bonus bLongAtkRate,5; + bonus bPerfectHitAddRate,10; + } + } - Id: 400661 AegisName: FuriousCirclet_MT - Name: Crown of Wrath (Meister) # !todo check english name + Name: Furious Crown (Meister) Type: Armor Weight: 300 Defense: 30 @@ -170457,7 +172317,7 @@ Body: } - Id: 400662 AegisName: FuriousCirclet_EM - Name: Crown of Wrath (Elemental Master) # !todo check english name + Name: Furious Crown (Elemental Master) Type: Armor Weight: 300 Defense: 30 @@ -170509,7 +172369,7 @@ Body: } - Id: 400663 AegisName: FuriousCirclet_SOA - Name: Crown of Wrath (Soul Ascetic) # !todo check english name + Name: Furious Crown (Soul Ascetic) Type: Armor Weight: 300 Defense: 30 @@ -170558,6 +172418,507 @@ Body: } } } + - Id: 400673 + AegisName: FuriousCirclet_TR + Name: Furious Crown (Troubadour & Trouvere) + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + BardDancer: true + Classes: + Fourth: true + Locations: + Head_Top: true + ArmorLevel: 2 + EquipLevelMin: 235 + Refineable: true + Gradable: true + View: 2415 + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bMatk,10*(.@r/2); + bonus bBaseAtk,10*(.@r/2); + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",4*(.@r/3); + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",4*(.@r/3); + bonus2 bSkillAtk,"TR_METALIC_FURY",4*(.@r/3); + if (.@r>=7) { + bonus bVariableCastrate,-15; + if (.@r>=9) { + bonus bLongAtkRate,10; + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=11) { + bonus2 bMagicAddEle,Ele_All,5; + bonus2 bAddEle,Ele_All,5; + bonus bMatkRate,5; + bonus bAtkRate,5; + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bPAtk,3; + bonus bSMatk,3; + bonus bPow,5; + bonus bSpl,5; + bonus bCon,5; + if (.@g>=ENCHANTGRADE_C) { + bonus bLongAtkRate,10; + bonus2 bMagicAtkEle,Ele_All,10; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bAddRace,RC_All,5; + bonus2 bAddRace,RC_Player_Human,-5; + bonus2 bAddRace,RC_Player_Doram,-5; + bonus2 bMagicAddRace,RC_All,5; + bonus2 bMagicAddRace,RC_Player_Human,-5; + bonus2 bMagicAddRace,RC_Player_Doram,-5; + bonus bMatkRate,5; + bonus bAtkRate,5; + if (.@g>=ENCHANTGRADE_A) { + bonus bLongAtkRate,15; + bonus2 bMagicAtkEle,Ele_All,15; + bonus bPAtk,5; + bonus bSMatk,5; + } + } + } + } + - Id: 400674 + AegisName: FuriousCirclet_BO + Name: Furious Crown (Biolo) + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + Alchemist: true + Classes: + Fourth: true + Locations: + Head_Top: true + ArmorLevel: 2 + EquipLevelMin: 235 + Refineable: true + Gradable: true + View: 2415 + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bBaseAtk,10*(.@r/2); + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",4*(.@r/3); + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",4*(.@r/3); + if (.@r>=7) { + bonus bVariableCastrate,-15; + if (.@r>=9) { + bonus bShortAtkRate,10; + bonus bCritAtkRate,10; + if (.@r>=11) { + bonus2 bAddEle,Ele_All,5; + bonus bAtkRate,5; + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bPAtk,3; + bonus bPow,5; + bonus bCon,5; + if (.@g>=ENCHANTGRADE_C) { + bonus bShortAtkRate,10; + bonus bCritAtkRate,10; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bAddRace,RC_All,5; + bonus2 bAddRace,RC_Player_Human,-5; + bonus2 bAddRace,RC_Player_Doram,-5; + bonus bAtkRate,5; + if (.@g>=ENCHANTGRADE_A) { + bonus bShortAtkRate,15; + bonus bCritAtkRate,15; + bonus bPAtk,5; + } + } + } + } + - Id: 400675 + AegisName: FuriousCirclet_HN + Name: Furious Crown (Hyper Novice) + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + SuperNovice: true + Classes: + Fourth: true + Locations: + Head_Top: true + ArmorLevel: 2 + EquipLevelMin: 235 + Refineable: true + Gradable: true + View: 2415 + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bMatk,10*(.@r/2); + bonus bBaseAtk,10*(.@r/2); + bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",4*(.@r/3); + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",4*(.@r/3); + bonus2 bSkillAtk,"HN_HELLS_DRIVE",4*(.@r/3); + if (.@r>=7) { + bonus bVariableCastrate,-15; + if (.@r>=9) { + bonus bShortAtkRate,10; + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=11) { + bonus bFixedCast,-300; + bonus bMatkRate,5; + bonus bAtkRate,5; + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bPAtk,3; + bonus bSMatk,3; + bonus bPow,5; + bonus bSpl,5; + bonus bCon,5; + if (.@g>=ENCHANTGRADE_C) { + bonus bShortAtkRate,10; + bonus2 bMagicAtkEle,Ele_All,10; + if (.@g>=ENCHANTGRADE_B) { + bonus bFixedCast,-200; + bonus bMatkRate,5; + bonus bAtkRate,5; + if (.@g>=ENCHANTGRADE_A) { + bonus bShortAtkRate,15; + bonus2 bMagicAtkEle,Ele_All,15; + bonus bPAtk,5; + bonus bSMatk,5; + } + } + } + } + - Id: 400676 + AegisName: aegis_400676 + Name: Flaward Hat + Type: Armor + Weight: 300 + Slots: 1 + Jobs: + Alchemist: true + Blacksmith: true + Merchant: true + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 50 + Refineable: true + View: 1128 + Script: | + .@r = getrefine(); + bonus bStr,3; + bonus bInt,3; + bonus bBaseAtk,readparam(bStr)/9; + if (.@r>=5) { + bonus bFixedCast,-200; + if (.@r>=7) { + bonus2 bSkillAtk,"AM_ACIDTERROR",20; + bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",20; + if (.@r>=9) { + bonus2 bSkillUseSPrate,"CR_ACIDDEMONSTRATION",5; + bonus2 bSkillCooldown,"CR_ACIDDEMONSTRATION",-100; + if (.@r>=11) { + bonus bLongAtkRate,10; + if (.@r>=12) { + bonus bFixedCast,-300; + } + } + } + } + } + - Id: 400677 + AegisName: aegis_400677 + Name: "[Not For Sale] Flaward Hat" + Type: Armor + Weight: 300 + Slots: 1 + Jobs: + Alchemist: true + Blacksmith: true + Merchant: true + Locations: + Head_Top: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 50 + Refineable: true + View: 1128 + Script: | + .@r = getrefine(); + bonus bStr,3; + bonus bInt,3; + bonus bBaseAtk,readparam(bStr)/9; + if (.@r>=5) { + bonus bFixedCast,-200; + if (.@r>=7) { + bonus2 bSkillAtk,"AM_ACIDTERROR",20; + bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",20; + if (.@r>=9) { + bonus2 bSkillUseSPrate,"CR_ACIDDEMONSTRATION",5; + bonus2 bSkillCooldown,"CR_ACIDDEMONSTRATION",-100; + if (.@r>=11) { + bonus bLongAtkRate,10; + if (.@r>=12) { + bonus bFixedCast,-300; + } + } + } + } + } + - Id: 400679 + AegisName: aegis_400679 + Name: Pink Shampoo Hat + Type: Armor + Weight: 1000 + Defense: 18 + Slots: 1 + Locations: + Head_Top: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + View: 507 + Script: | + .@r = getrefine(); + bonus bMdef,15; + bonus bDef,50*.@r; + skill "AL_PNEUMA",1; + if (.@r>=5) { + bonus bDelayrate,-10; + bonus bMaxHPrate,20; + bonus bMaxSPrate,20; + bonus2 bSubRace,RC_All,10; + if (.@r>=9) { + bonus bDelayrate,-10; + bonus2 bVariableCastrate,"SL_KAIZEL",-50; + bonus2 bVariableCastrate,"SL_KAUPE",-50; + bonus2 bSubRace,RC_All,10; + if (.@r>=11) { + bonus bDelayrate,-10; + bonus2 bVariableCastrate,"SL_KAIZEL",-50; + bonus2 bVariableCastrate,"SL_KAUPE",-50; + } + } + } + - Id: 400680 + AegisName: aegis_400680 + Name: "[Not For Sale] Pink Shampoo Hat" + Type: Armor + Weight: 1000 + Defense: 18 + Slots: 1 + Locations: + Head_Top: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + View: 507 + Script: | + .@r = getrefine(); + bonus bMdef,15; + bonus bDef,50*.@r; + skill "AL_PNEUMA",1; + if (.@r>=5) { + bonus bDelayrate,-10; + bonus bMaxHPrate,20; + bonus bMaxSPrate,20; + bonus2 bSubRace,RC_All,10; + if (.@r>=9) { + bonus bDelayrate,-10; + bonus2 bVariableCastrate,"SL_KAIZEL",-50; + bonus2 bVariableCastrate,"SL_KAUPE",-50; + bonus2 bSubRace,RC_All,10; + if (.@r>=11) { + bonus bDelayrate,-10; + bonus2 bVariableCastrate,"SL_KAIZEL",-50; + bonus2 bVariableCastrate,"SL_KAUPE",-50; + } + } + } + - Id: 400694 + AegisName: FuriousCirclet_AG + Name: Furious Crown (Arch Mage) # !todo check english name + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + Wizard: true + Classes: + Fourth: true + Locations: + Head_Top: true + ArmorLevel: 2 + EquipLevelMin: 235 + Refineable: true + Gradable: true + View: 2415 + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bMatk,10*(.@r/2); + bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",4*(.@r/3); + bonus2 bSkillAtk,"AG_FLORAL_FLARE_ROAD",4*(.@r/3); + bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",4*(.@r/3); + bonus2 bSkillAtk,"AG_CRIMSON_ARROW",4*(.@r/3); + bonus2 bSkillAtk,"AG_CRIMSON_ARROW_ATK",4*(.@r/3); + if (.@r>=7) { + bonus bVariableCastrate,-15; + if (.@r>=9) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=11) { + bonus bFixedCast,-300; + bonus bMatkRate,5; + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bSMatk,3; + bonus bSpl,5; + bonus bCon,5; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@g>=ENCHANTGRADE_B) { + bonus bFixedCast,-200; + bonus bMatkRate,5; + if (.@g>=ENCHANTGRADE_A) { + bonus2 bMagicAtkEle,Ele_All,15; + bonus bSMatk,5; + } + } + } + } + - Id: 400695 + AegisName: FuriousCirclet_IQ + Name: Furious Crown (Inquisitor) # !todo check english name + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + Monk: true + Classes: + Fourth: true + Locations: + Head_Top: true + ArmorLevel: 2 + EquipLevelMin: 235 + Refineable: true + Gradable: true + View: 2415 + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bBaseAtk,10*(.@r/2); + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",4*(.@r/3); + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",4*(.@r/3); + if (.@r>=7) { + bonus bCritical,15; + if (.@r>=9) { + bonus bShortAtkRate,10; + bonus bCritAtkRate,10; + if (.@r>=11) { + bonus bFixedCast,-300; + bonus bAtkRate,5; + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bPAtk,3; + bonus bPow,5; + bonus bCon,5; + if (.@g>=ENCHANTGRADE_C) { + bonus bShortAtkRate,10; + bonus bLongAtkRate,10; + if (.@g>=ENCHANTGRADE_B) { + bonus bFixedCast,-200; + bonus bAtkRate,5; + if (.@g>=ENCHANTGRADE_A) { + bonus bShortAtkRate,15; + bonus bLongAtkRate,15; + bonus bPAtk,5; + } + } + } + } + - Id: 400696 + AegisName: FuriousCirclet_NW + Name: Furious Crown (Night's Watch) # !todo check english name + Type: Armor + Weight: 300 + Defense: 30 + Slots: 1 + Jobs: + Rebellion: true + Classes: + Fourth: true + Locations: + Head_Top: true + ArmorLevel: 2 + EquipLevelMin: 235 + Refineable: true + Gradable: true + View: 2415 + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bBaseAtk,10*(.@r/2); + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",4*(.@r/3); + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",4*(.@r/3); + if (.@r>=7) { + bonus bDelayrate,-10; + if (.@r>=9) { + bonus bLongAtkRate,10; + bonus bCritAtkRate,10; + if (.@r>=11) { + bonus bFixedCast,-300; + bonus bAtkRate,5; + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bPAtk,3; + bonus bPow,5; + bonus bCon,5; + if (.@g>=ENCHANTGRADE_C) { + bonus bLongAtkRate,10; + bonus bCritAtkRate,10; + if (.@g>=ENCHANTGRADE_B) { + bonus bFixedCast,-200; + bonus bAtkRate,5; + if (.@g>=ENCHANTGRADE_A) { + bonus bLongAtkRate,15; + bonus bPAtk,5; + } + } + } + } - Id: 410000 AegisName: Resonate_Taego_J Name: Ancient Resonance @@ -173213,7 +175574,7 @@ Body: bonus2 bAddSize,Size_All,10; bonus2 bMagicAddSize,Size_All,10; - Id: 410245 - AegisName: aegis_410245 + AegisName: C_Brother_Keen_Eye Name: Costume Brother Keen Eye Type: Armor Locations: @@ -173235,7 +175596,7 @@ Body: bonus bBaseAtk,BaseLevel; bonus bMatk,BaseLevel; - Id: 410248 - AegisName: aegis_410248 + AegisName: C_Tuktuk Name: Costume Tuk Tuk Type: Armor Locations: @@ -173343,7 +175704,7 @@ Body: View: 2421 - Id: 410262 AegisName: C_Sonic_Mini - Name: Costume Sonic Mini-Me + Name: Costume Mini Sonic Type: Armor Locations: Costume_Head_Mid: true @@ -173358,7 +175719,7 @@ Body: NoAuction: true - Id: 410263 AegisName: C_Super_Sonic_Mini - Name: Costume Super Sonic Mini-Me + Name: Costume Mini Super Sonic Type: Armor Locations: Costume_Head_Mid: true @@ -173373,7 +175734,7 @@ Body: NoAuction: true - Id: 410264 AegisName: C_Tails_Mini - Name: Costume Tails Mini-Me + Name: Costume Mini Tails Type: Armor Locations: Costume_Head_Mid: true @@ -173388,7 +175749,7 @@ Body: NoAuction: true - Id: 410265 AegisName: C_S_Attack_Ring - Name: Costume Power Ring Drop + Name: Costume Ring (Hit) Type: Armor Locations: Costume_Head_Low: true @@ -173555,7 +175916,7 @@ Body: Script: | autobonus "{ bonus bLuk,20; bonus bBaseAtk,100; bonus bMatk,100; }",50,10000,BF_WEAPON|BF_MAGIC; - Id: 410276 - AegisName: aegis_410276 + AegisName: C_Grisly_Soul Name: Costume Vengeful Ghost Ears Type: Armor Locations: @@ -173563,7 +175924,7 @@ Body: ArmorLevel: 1 View: 2212 - Id: 410277 - AegisName: aegis_410277 + AegisName: C_Ragdoll Name: Costume Ragdoll Type: Armor Locations: @@ -173648,8 +176009,16 @@ Body: hateffect HAT_EF_COSMIC_CONNECTION,true; UnEquipScript: | hateffect HAT_EF_COSMIC_CONNECTION,false; + - Id: 410288 + AegisName: aegis_410288 + Name: Costume P-Shu & Pink Bunny + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2480 - Id: 410289 - AegisName: aegis_410289 + AegisName: C_Baby_Gloom Name: Costume Baby Gloom Under Night Type: Armor Locations: @@ -173657,7 +176026,7 @@ Body: ArmorLevel: 1 View: 2481 - Id: 410290 - AegisName: aegis_410290 + AegisName: C_Jellyfish Name: Costume Jellyfish Type: Armor Locations: @@ -173694,6 +176063,32 @@ Body: Costume_Head_Top: true ArmorLevel: 1 View: 1463 + - Id: 410294 + AegisName: Little_Abyss_DragonTH_ + Name: Little Abyss Dragon + Type: Armor + Weight: 300 + Slots: 1 + Locations: + Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 2316 + Script: | + bonus bDelayrate,-3; + bonus bBaseAtk,24; + bonus bMatk,24; + bonus2 bSubRace,RC_Dragon,15; + bonus2 bAddRace,RC_Dragon,15; + bonus2 bExpAddRace,RC_Dragon,15; - Id: 410295 AegisName: C_WinterNightBells Name: Costume Winter Night Bells @@ -173701,9 +176096,97 @@ Body: Locations: Costume_Head_Mid: true ArmorLevel: 1 + - Id: 410296 + AegisName: C_One_Sho_Bottle + Name: Costume One Liter Bottle + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2491 + - Id: 410297 + AegisName: C_Blink_Eyes_A_Dragon + Name: Costume Blinking A Dragon + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2492 + - Id: 410298 + AegisName: Comp_Floating_Ball + Name: "[Not For Sale] Floating Ball" + Type: Armor + Weight: 200 + Locations: + Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 1760 + Script: | + bonus bMatk,35; + bonus2 bMagicAddClass,Class_Boss,2; + if (readparam(bDex)>=90) { + bonus bMatk,70; + bonus2 bMagicAddClass,Class_Boss,3; + if (readparam(bDex)>=125) { + bonus bMatk,140; + bonus2 bMagicAddClass,Class_Boss,5; + } + } + - Id: 410299 + AegisName: Comp_Sunglasses_ + Name: "[NFS] Sunglasses" + Type: Armor + Buy: 5000 + Weight: 100 + Slots: 1 + Locations: + Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + View: 12 + - Id: 410300 + AegisName: aegis_410300 + Name: Costume Lady Tanee + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 1815 + - Id: 410301 + AegisName: C_Comp_Dragon_Hat + Name: "[NFS] Costume Little Abyss Dragon" + Type: Armor + Locations: + Costume_Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + View: 2316 - Id: 410302 AegisName: aegis_410302 - Name: Wisdom Core Headphone + Name: Wisdom Core Headphones Type: Armor Weight: 100 Slots: 1 @@ -173715,6 +176198,64 @@ Body: Script: | bonus bBaseAtk,BaseLevel; bonus bMatk,BaseLevel; + - Id: 410303 + AegisName: Little_Abyss_Dragon_MSP + Name: "[NFS] Little Abyss Dragon" + Type: Armor + Locations: + Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 2316 + Script: | + bonus bDelayrate,-1; + bonus bBaseAtk,15; + bonus bMatk,15; + bonus2 bSubRace,RC_Dragon,5; + bonus2 bAddRace,RC_Dragon,5; + bonus2 bExpAddRace,RC_Dragon,10; + - Id: 410304 + AegisName: aegis_410304 + Name: Diabolus Wing + Type: Armor + Weight: 300 + Defense: 2 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 90 + View: 680 + Script: | + bonus bAllStats,5; + - Id: 410305 + AegisName: aegis_410305 + Name: "[Not For Sale] Diabolus Wing" + Type: Armor + Weight: 300 + Defense: 2 + Locations: + Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 90 + View: 680 + Script: | + bonus bAllStats,5; - Id: 410308 AegisName: C_Heine_Tab_1 Name: Costume Heine's Tablet # !todo check english name @@ -173760,14 +176301,275 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true + - Id: 410311 + AegisName: aegis_410311 + Name: Costume Gorgon Coronet + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2250 + - Id: 410312 + AegisName: aegis_410312 + Name: Costume Clover Hairpin + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2515 + - Id: 410313 + AegisName: Eye_Of_Storm_TH + Name: Eye of the Storm + Type: Armor + Weight: 100 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus2 bAddClass,Class_Boss,10; + bonus2 bMagicAddClass,Class_Boss,10; + bonus bDelayrate,-10; + bonus2 bSkillAtk,"WL_CHAINLIGHTNING",BaseLevel/2; + bonus2 bSkillAtk,"SO_VARETYR_SPEAR",BaseLevel/2; + bonus2 bSkillAtk,"SR_RIDEINLIGHTNING",BaseLevel/2; + if (eaclass()&EAJL_THIRD && BaseJob == Job_Monk) { + bonus bLongAtkRate,10; + bonus2 bVariableCastrate,"SR_RIDEINLIGHTNING",-100; + } + if (eaclass()&EAJL_THIRD && BaseJob == Job_Sage) { + bonus2 bSkillCooldown,"SO_VARETYR_SPEAR",-1000; + bonus2 bSkillCooldown,"SO_WATER_INSIGNIA",-55000; + } + if (eaclass()&EAJL_THIRD && BaseJob == Job_Wizard) + skill "SO_WATER_INSIGNIA",1; + hateffect HAT_EF_BLACK_THUNDER,true; + UnEquipScript: | + hateffect HAT_EF_BLACK_THUNDER,false; + - Id: 410314 + AegisName: Comp_EyeStorm_TH + Name: "[Not For Sale] Eye of the Storm" + Type: Armor + Weight: 100 + Locations: + Head_Mid: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus2 bAddClass,Class_Boss,10; + bonus2 bMagicAddClass,Class_Boss,10; + bonus bDelayrate,-10; + bonus2 bSkillAtk,"WL_CHAINLIGHTNING",BaseLevel/2; + bonus2 bSkillAtk,"SO_VARETYR_SPEAR",BaseLevel/2; + bonus2 bSkillAtk,"SR_RIDEINLIGHTNING",BaseLevel/2; + if (eaclass()&EAJL_THIRD && BaseJob == Job_Monk) { + bonus bLongAtkRate,10; + bonus2 bVariableCastrate,"SR_RIDEINLIGHTNING",-100; + } + if (eaclass()&EAJL_THIRD && BaseJob == Job_Sage) { + bonus2 bSkillCooldown,"SO_VARETYR_SPEAR",-1000; + bonus2 bSkillCooldown,"SO_WATER_INSIGNIA",-55000; + } + if (eaclass()&EAJL_THIRD && BaseJob == Job_Wizard) + skill "SO_WATER_INSIGNIA",1; + hateffect HAT_EF_BLACK_THUNDER,true; + UnEquipScript: | + hateffect HAT_EF_BLACK_THUNDER,false; - Id: 410315 AegisName: aegis_410315 - Name: Costume Sacred Faith Ornament # !todo check english name + Name: Costume Sacred Religious Decoration Type: Armor Locations: Costume_Head_Mid: true ArmorLevel: 1 View: 2518 + - Id: 410316 + AegisName: Bear_Candy_Cart + Name: Costume Bear Candy Cart + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2520 + - Id: 410317 + AegisName: aegis_410317 + Name: Costume Eyes Mask + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2524 + - Id: 410318 + AegisName: aegis_410318 + Name: Costume Lord of Death Helmet (Middle) + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 742 + - Id: 410319 + AegisName: aegis_410319 + Name: Costume Thanatos's Maero Mask (Middle) + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 666 + - Id: 410320 + AegisName: aegis_410320 + Name: Costume Demi-Freya's Twinkling Eyes + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2528 + - Id: 410332 + AegisName: aegis_410332 + Name: Karasu Tengu Mask + Type: Armor + Weight: 100 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 666 + Script: | + bonus bBaseAtk,40; + bonus bDelayrate,-10; + bonus2 bHPDrainRate,50,5; + bonus2 bSPDrainRate,30,3; + if (readparam(bStr)>=120) { + bonus bBaseAtk,60; + bonus2 bAddEle,Ele_All,15; + bonus bLongAtkRate,15; + } + - Id: 410333 + AegisName: aegis_410333 + Name: Karasu Tengu Mask + Type: Armor + Weight: 100 + Slots: 1 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 666 + Script: | + bonus bBaseAtk,40; + bonus bDelayrate,-10; + bonus2 bHPDrainRate,50,5; + bonus2 bSPDrainRate,30,3; + if (readparam(bStr)>=120) { + bonus bBaseAtk,60; + bonus2 bAddEle,Ele_All,15; + bonus bLongAtkRate,15; + } + - Id: 410334 + AegisName: aegis_410334 + Name: Wishing Tree + Type: Armor + Weight: 100 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 1270 + Script: | + bonus bInt,10; + bonus bMatk,100; + bonus bVariableCastrate,-15; + if (readparam(bDex)>=120) { + bonus bInt,10; + bonus bMatk,150; + bonus bVariableCastrate,-15; + bonus bDelayrate,-5; + } + - Id: 410335 + AegisName: aegis_410335 + Name: Wishing Tree + Type: Armor + Weight: 100 + Slots: 1 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 1270 + Script: | + bonus bInt,10; + bonus bMatk,100; + bonus bVariableCastrate,-15; + if (readparam(bDex)>=120) { + bonus bInt,10; + bonus bMatk,150; + bonus bVariableCastrate,-15; + bonus bDelayrate,-5; + } + - Id: 410336 + AegisName: aegis_410336 + Name: Cherub Coronet + Type: Armor + Weight: 100 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 2250 + Script: | + bonus bStr,10; + bonus bBaseAtk,140; + bonus bHealPower,30; + bonus bHealPower2,15; + bonus2 bResEff,Eff_Bleeding,10000; + bonus2 bResEff,Eff_Confusion,10000; + if (readparam(bInt)>=120) { + bonus bBaseAtk,200; + bonus bHealPower,50; + bonus bHealPower2,30; + bonus2 bAddClass,Class_Boss,10; + bonus2 bVariableCastrate,"AB_CHEAL",-100; + } + - Id: 410337 + AegisName: aegis_410337 + Name: Cherub Coronet + Type: Armor + Weight: 100 + Slots: 1 + Locations: + Head_Mid: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 2250 + Script: | + bonus bStr,10; + bonus bBaseAtk,140; + bonus bHealPower,30; + bonus bHealPower2,15; + bonus2 bResEff,Eff_Bleeding,10000; + bonus2 bResEff,Eff_Confusion,10000; + if (readparam(bInt)>=120) { + bonus bBaseAtk,200; + bonus bHealPower,50; + bonus bHealPower2,30; + bonus2 bAddClass,Class_Boss,10; + bonus2 bVariableCastrate,"AB_CHEAL",-100; + } + - Id: 410338 + AegisName: aegis_410338 + Name: Costume God of the Sun # !todo check english name + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2555 - Id: 420000 AegisName: Isabella_Carrot Name: Isabella Carrot @@ -174524,9 +177326,9 @@ Body: EquipLevelMin: 100 Script: | bonus bFixedCast,-200; - hateffect(HAT_EF_Magic_Circle_TW,true); + hateffect(HAT_EF_MAGICCIRCLE_BLUE_TW,true); UnEquipScript: | - hateffect(HAT_EF_Magic_Circle_TW,false); + hateffect(HAT_EF_MAGICCIRCLE_BLUE_TW,false); - Id: 420088 AegisName: C_Heart_Angel_TW Name: Costume Little Angel of Love @@ -174686,6 +177488,18 @@ Body: bonus2 bMagicAddRace,RC_Player_Doram,20; bonus2 bMagicAddRace,RC_Player_Human,20; bonus2 bResEff,Eff_Curse,10000; + - Id: 420106 + AegisName: Temporal_Sprout_TW + Name: Exotic Temporal Young Leaf + Type: Armor + Weight: 50 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 848 + Script: | + bonus bDelayrate,-3; - Id: 420107 AegisName: C_Twinkle_Twin Name: Costume Twinkle Twin @@ -175655,7 +178469,7 @@ Body: View: 1679 - Id: 420211 AegisName: C_Sleep_RedSheep - Name: Garment Sheep Counting (Red) # !todo check english name + Name: Costume Sleep Sheep (Red) Type: Armor Locations: Costume_Head_Low: true @@ -175679,6 +178493,14 @@ Body: ArmorLevel: 1 EquipLevelMin: 150 View: 2374 + - Id: 420214 + AegisName: aegis_420214 + Name: Costume Fallen Angel Valletta + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 1674 - Id: 420218 AegisName: aegis_420218 Name: Costume Wonderer Curl (white) @@ -175744,7 +178566,7 @@ Body: View: 2397 - Id: 420225 AegisName: Octopus_Leg_In_Mouth - Name: Bite octopus leg # !todo check english name + Name: Octopus Leg In Mouth Type: Armor Locations: Head_Low: true @@ -175882,7 +178704,7 @@ Body: Script: | bonus2 bExpAddRace,RC_All,8; - Id: 420240 - AegisName: aegis_420240 + AegisName: C_Scroll_Of_Tsunade Name: Costume Tsunade's Scroll Type: Armor Locations: @@ -175890,7 +178712,7 @@ Body: ArmorLevel: 1 View: 1090 - Id: 420241 - AegisName: aegis_420241 + AegisName: C_Temari_Candy_Hair Name: Costume Temari Candy Hair Type: Armor Locations: @@ -175898,13 +178720,12 @@ Body: ArmorLevel: 1 View: 2418 - Id: 420242 - AegisName: aegis_420242 + AegisName: C_Fluttering_Haze Name: Costume Fluttering Haze Type: Armor Locations: Costume_Head_Mid: true ArmorLevel: 1 - View: 2420 Script: | hateffect HAT_EF_C_FLUTTERING_HAZE,true; UnEquipScript: | @@ -176033,20 +178854,58 @@ Body: bonus2 bMagicAddRace2,RC2_Illusion_Luanda,20; - Id: 420254 AegisName: aegis_420254 - Name: Costume Wizard's beard + Name: Costume Wizard's Beard Type: Armor Locations: Costume_Head_Low: true ArmorLevel: 1 View: 1004 - Id: 420255 - AegisName: aegis_420255 - Name: Costume Guillotine Cross Slow Pony + AegisName: C_GC_Hair_OM + Name: Costume Guillotine Cross Low Pony Type: Armor Locations: Costume_Head_Low: true ArmorLevel: 1 View: 2435 + - Id: 420256 + AegisName: aegis_420256 + Name: Imperial Glory + Type: Armor + Weight: 300 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 70 + View: 2056 + Script: | + bonus2 bSubRace,RC_DemiHuman,3; + bonus2 bExpAddRace,RC_All,3; + if (BaseClass == Job_Swordman) + bonus bMaxHP,1000; + - Id: 420257 + AegisName: aegis_420257 + Name: "[Not For Sale] Imperial Glory" + Type: Armor + Weight: 300 + Locations: + Head_Low: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 70 + View: 2056 + Script: | + bonus2 bSubRace,RC_DemiHuman,3; + bonus2 bExpAddRace,RC_All,3; + if (BaseClass == Job_Swordman) + bonus bMaxHP,1000; - Id: 420258 AegisName: aegis_420258 Name: Hero Cloth @@ -176362,7 +179221,7 @@ Body: NoMail: true NoAuction: true - Id: 420304 - AegisName: aegis_420304 + AegisName: C_NightSkyOfRutie Name: Costume Night Sky of Lutie Type: Armor Locations: @@ -176372,6 +179231,17 @@ Body: hateffect HAT_EF_NIGHTSKYOFRUTIE,true; UnEquipScript: | hateffect HAT_EF_NIGHTSKYOFRUTIE,false; + - Id: 420305 + AegisName: aegis_420305 + Name: Costume Mini Tentacle + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2401 + Script: | + bonus2 bDropAddRace,RC_All,7; + bonus2 bExpAddRace,RC_All,20; - Id: 420306 AegisName: aegis_420306 Name: Costume Kotatsu @@ -176381,13 +179251,112 @@ Body: ArmorLevel: 1 View: 2489 - Id: 420307 - AegisName: aegis_420307 - Name: Costume Princess Meer Roll Hair + AegisName: C_Meer_Hair + Name: Costume Twin Wave Roll Hair Type: Armor Locations: Costume_Head_Low: true ArmorLevel: 1 View: 2490 + - Id: 420308 + AegisName: Comp_Mob_Scarf + Name: "[NFS] Mob Scarf" + Type: Armor + Weight: 100 + Locations: + Head_Low: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 1568 + Script: | + skill "SA_SPELLBREAKER",2; + - Id: 420310 + AegisName: Frozen_Flower_US + Name: Plastic Blue Rose + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 110 + View: 1025 + Script: | + bonus2 bAddRace2,RC2_Illusion_Frozen,20; + bonus2 bMagicAddRace2,RC2_Illusion_Frozen,20; + - Id: 420312 + AegisName: Faisca_US + Name: Sparkling Stick + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 1747 + Script: | + bonus2 bAddRace2,RC2_Illusion_Luanda,20; + bonus2 bMagicAddRace2,RC2_Illusion_Luanda,20; + - Id: 420313 + AegisName: Pires_US + Name: Mysterious Red Plate + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 557 + Script: | + bonus2 bAddRace2,RC2_Illusion_Turtle,20; + bonus2 bMagicAddRace2,RC2_Illusion_Turtle,20; + - Id: 420314 + AegisName: White_Fox_US + Name: Calming White Fox + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 2335 + Script: | + bonus2 bAddRace2,RC2_Illusion_Moonlight,20; + bonus2 bMagicAddRace2,RC2_Illusion_Moonlight,20; + - Id: 420315 + AegisName: Morcegos_US + Name: Naughty Bats + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 2093 + Script: | + bonus2 bAddRace2,RC2_Illusion_Vampire,20; + bonus2 bMagicAddRace2,RC2_Illusion_Vampire,20; + - Id: 420316 + AegisName: TwinCannon_LT_TW + Name: Twin Cannon-LT + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 2 + EquipLevelMin: 100 + View: 2497 + Script: | + bonus bDelayrate,-4; + bonus bAspd,1; + bonus bFixedCast,-100; - Id: 420317 AegisName: aegis_420317 Name: Costume White Rabbit Hair @@ -176420,6 +179389,75 @@ Body: Costume_Head_Low: true ArmorLevel: 1 View: 2508 + - Id: 420323 + AegisName: CharmOfAnywhere + Name: Charm of Anywhere + Type: Armor + Weight: 100 + Jobs: + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bAspdRate,10; + bonus bAspd,1; + bonus bMatkRate,3; + bonus bSpl,3; + bonus5 bAutoSpell,"ABC_FROM_THE_ABYSS",max(getskilllv("ABC_FROM_THE_ABYSS"),2),100,BF_SHORT|BF_LONG,0; + hateffect HAT_EF_RAINBOW_POISON_MASTER,true; + UnEquipScript: | + hateffect HAT_EF_RAINBOW_POISON_MASTER,false; + - Id: 420325 + AegisName: aegis_420325 + Name: Costume Chewy Low Twin + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2517 + - Id: 420327 + AegisName: aegis_420327 + Name: Nekomimi Cape (Blue) + Type: Armor + Weight: 100 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 100 + View: 2522 + Script: | + bonus2 bAddSize,Size_All,BaseLevel/10; + bonus2 bMagicAddSize,Size_All,BaseLevel/10; + - Id: 420333 + AegisName: aegis_420333 + Name: Costume Randgris Hair + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2527 + - Id: 420342 + AegisName: aegis_420342 + Name: Wireless Security Drone + Type: Armor + Weight: 450 + Locations: + Head_Low: true + ArmorLevel: 1 + EquipLevelMin: 1 + View: 1788 + Script: | + bonus2 bHPDrainRate,20,2; + bonus2 bSPDrainRate,10,1; + bonus bMagicHPGainValue,300; + bonus bMagicSPGainValue,5; + bonus bDelayrate,-3; + bonus2 bExpAddRace,RC_All,8; - Id: 430001 AegisName: C_Helm_Of_Ra Name: Costume Hat of the Sun God @@ -176593,7 +179631,7 @@ Body: NoAuction: true - Id: 436000 AegisName: Tha_Maero_MaskK - Name: Thanatos's Maeror Mask + Name: Thanatos's Maero Mask Type: Armor View: 666 Weight: 100 @@ -176672,7 +179710,7 @@ Body: bonus bAtkRate,3; - Id: 436005 AegisName: Tha_Maero_MaskK_ - Name: Thanatos's Maeror Mask + Name: Thanatos's Maero Mask Type: Armor View: 666 Weight: 100 @@ -181682,7 +184720,7 @@ Body: } - Id: 450175 AegisName: Temporal_Armor_TW - Name: Temporal Armor + Name: Exotic Temporal Armor Type: Armor Weight: 2000 Defense: 120 @@ -182725,7 +185763,6 @@ Body: AegisName: E_Auto_Armor_B Name: Automatic Armor B-type (Bound) Type: Armor - MagicAttack: 125 Defense: 135 Slots: 1 Locations: @@ -182742,7 +185779,7 @@ Body: NoAuction: true Script: | .@r = getrefine(); - bonus bMatk,10*(.@r/2); + bonus bMatk,125+10*(.@r/2); if (.@r>=7) { bonus bVariableCastrate,-15; } @@ -183361,6 +186398,126 @@ Body: bonus2 bMagicAtkEle,Ele_Neutral,15; bonus bUnbreakableArmor; } + - Id: 450259 + AegisName: P_90Lv_Mail + Name: Booster Adventurer's Premium Mail + Type: Armor + Defense: 100 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bStr,5; + bonus bAgi,5; + bonus bMaxHP,1200; + bonus bMaxSP,100; + bonus bDef,80; + bonus bMdef,5; + if (.@r>=5) { + bonus bDef,20; + bonus bMaxHP,100; + if (.@r>=7) { + bonus bAgi,5; + if (.@r>=9) { + bonus bAtkRate,2; + bonus bMatkRate,2; + } + } + } + - Id: 450260 + AegisName: P_90Lv_Cloth + Name: Booster Adventurer's Premium Cloth + Type: Armor + Defense: 90 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAgi,5; + bonus bDex,5; + bonus bMaxHP,1100; + bonus bMaxSP,100; + bonus bDef,80; + bonus bMdef,5; + if (.@r>=5) { + bonus bDef,20; + bonus bMaxSP,50; + if (.@r>=7) { + bonus bDex,5; + if (.@r>=9) { + bonus bAtkRate,2; + bonus bMatkRate,2; + } + } + } + - Id: 450261 + AegisName: P_90Lv_Robe + Name: Booster Adventurer's Premium Robe + Type: Armor + Defense: 80 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bInt,5; + bonus bDex,5; + bonus bMaxHP,1000; + bonus bMaxSP,150; + bonus bDef,80; + bonus bMdef,5; + if (.@r>=5) { + bonus bDef,20; + bonus bMaxSP,50; + if (.@r>=7) { + bonus bDex,5; + if (.@r>=9) { + bonus bAtkRate,2; + bonus bMatkRate,2; + } + } + } + - Id: 450262 + AegisName: P_90Lv_Dress + Name: Booster Adventurer's Premium Clothing + Type: Armor + Defense: 85 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bVit,5; + bonus bInt,5; + bonus bMaxHP,1100; + bonus bMaxSP,150; + bonus bDef,80; + bonus bMdef,5; + if (.@r>=5) { + bonus bDef,20; + bonus bMaxHP,100; + if (.@r>=7) { + bonus bVit,5; + if (.@r>=9) { + bonus bAtkRate,2; + bonus bMatkRate,2; + } + } + } - Id: 450263 AegisName: Lunar_E_Armor_LT Name: Lunar Eclipse Armor-LT @@ -183380,7 +186537,7 @@ Body: bonus bMdef,10; bonus2 bSubSize,Size_Medium,13; bonus2 bSubSize,Size_Large,13; - bonus bDelayrate,.@r; + bonus bDelayrate,-.@r; bonus bBaseAtk,15*.@r; bonus bMatk,15*.@r; bonus bMaxHPrate,5*(.@r/3); @@ -183458,7 +186615,6 @@ Body: Name: Glacier Robe Type: Armor Weight: 1200 - MagicAttack: 120 Defense: 120 Slots: 1 Locations: @@ -183470,7 +186626,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus bMatk,15*(.@r/2); + bonus bMatk,120+15*(.@r/2); bonus bDef,15*(.@r/2); if (.@r>=7) { bonus2 bMagicAtkEle,Ele_All,5; @@ -183673,7 +186829,6 @@ Body: Name: Dim Glacier Robe Type: Armor Weight: 1200 - MagicAttack: 140 Defense: 145 Slots: 1 Locations: @@ -183687,6 +186842,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); + bonus bMatk,140; bonus bSpl,(.@r/2); bonus bCon,(.@r/2); if (.@r>=7) { @@ -183881,7 +187037,6 @@ Body: Name: Soul Purifying Rune Robe Type: Armor Weight: 500 - MagicAttack: 100 Slots: 1 Locations: Armor: true @@ -183900,7 +187055,7 @@ Body: .@g = getenchantgrade(); .@r = getrefine(); bonus bUseSPrate,10; - bonus bMatk,15*(.@r/2); + bonus bMatk,100+15*(.@r/2); bonus bDef,30*(.@r/2); if (.@r>=7) { bonus bSMatk,2; @@ -184119,7 +187274,6 @@ Body: AegisName: Soul_P_R_Robe2 Name: Engraved Soul Purifying Rune Robe Type: Armor - MagicAttack: 140 Defense: 75 Slots: 1 Locations: @@ -184142,7 +187296,7 @@ Body: bonus bUseSPrate,10; bonus bSpl,3; bonus bCon,3; - bonus bMatk,15*(.@r/2); + bonus bMatk,140+15*(.@r/2); bonus bDef,30*(.@r/2); if (.@r>=7) { bonus bSMatk,2; @@ -184691,6 +187845,137 @@ Body: bonus2 bAddRace,RC_All,2*(.@r/2); bonus2 bMagicAddRace,RC_All,2*(.@r/2); } + - Id: 450300 + AegisName: Z_Boost_Armor + Name: Boosted Adventurer's Armor + Type: Armor + Defense: 80 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHP,700; + bonus bMaxSP,200; + bonus bAllStats,.@r/3; + if (.@r>=7) { + bonus bBaseAtk,30; + bonus bMatk,30; + if (.@r>=9) { + bonus bAspdRate,7; + bonus bVariableCastrate,-7; + } + } + - Id: 450301 + AegisName: Z_Boost_Set1_Armor + Name: Boosting Forged Mail Type A + Type: Armor + Defense: 70 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bVit,3; + bonus bInt,3; + bonus bMaxHP,750; + bonus bMaxSP,175; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bVit,2; + bonus bInt,2; + bonus bMaxHP,250; + bonus bMaxSP,30; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } + - Id: 450302 + AegisName: Z_Boost_Set2_Armor + Name: Boosting Forged Mail Type B + Type: Armor + Defense: 90 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bStr,3; + bonus bLuk,3; + bonus bMaxHP,1200; + bonus bMaxSP,100; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bStr,2; + bonus bLuk,2; + bonus bMaxHP,400; + bonus bMaxSP,20; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } + - Id: 450303 + AegisName: Z_Boost_Set3_Armor + Name: Boosting Forged Mail Type C + Type: Armor + Defense: 70 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAgi,3; + bonus bDex,3; + bonus bMaxHP,900; + bonus bMaxSP,150; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bAgi,2; + bonus bDex,2; + bonus bMaxHP,300; + bonus bMaxSP,30; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } + - Id: 450304 + AegisName: Z_Boost_Set4_Armor + Name: Boosting Forged Mail Type D + Type: Armor + Defense: 50 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bInt,3; + bonus bDex,3; + bonus bMaxHP,600; + bonus bMaxSP,200; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bInt,2; + bonus bDex,2; + bonus bMaxHP,200; + bonus bMaxSP,40; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } - Id: 450309 AegisName: aegis_450309 Name: Grace of Seth @@ -184862,6 +188147,118 @@ Body: bonus2 bMagicAddRace,RC_All,25; } } + - Id: 450340 + AegisName: Z_Boost_Set1_Armor_01 + Name: Boosting Mail Type A + Type: Armor + Defense: 70 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bVit,3; + bonus bInt,3; + bonus bMaxHP,750; + bonus bMaxSP,175; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bVit,2; + bonus bInt,2; + bonus bMaxHP,250; + bonus bMaxSP,30; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } + - Id: 450341 + AegisName: Z_Boost_Set2_Armor_01 + Name: Boosting Mail Type B + Type: Armor + Defense: 90 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bStr,3; + bonus bLuk,3; + bonus bMaxHP,1200; + bonus bMaxSP,100; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bStr,2; + bonus bLuk,2; + bonus bMaxHP,400; + bonus bMaxSP,20; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } + - Id: 450342 + AegisName: Z_Boost_Set3_Armor_01 + Name: Boosting Mail Type C + Type: Armor + Defense: 70 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAgi,3; + bonus bDex,3; + bonus bMaxHP,900; + bonus bMaxSP,150; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bAgi,2; + bonus bDex,2; + bonus bMaxHP,300; + bonus bMaxSP,30; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } + - Id: 450343 + AegisName: Z_Boost_Set4_Armor_01 + Name: Boosting Mail Type D + Type: Armor + Defense: 50 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bInt,3; + bonus bDex,3; + bonus bMaxHP,600; + bonus bMaxSP,200; + bonus2 bSubSize,Size_All,5; + if (.@r>=7) { + bonus bInt,2; + bonus bDex,2; + bonus bMaxHP,200; + bonus bMaxSP,40; + if (.@r>=9) { + bonus2 bAddSize,Size_All,5; + bonus2 bMagicAddSize,Size_All,5; + } + } - Id: 450350 AegisName: Gaebolg_Armor Name: Gaebolg Armor @@ -184918,7 +188315,6 @@ Body: Name: Gaebolg Robe Type: Armor Weight: 1200 - MagicAttack: 130 Defense: 130 Slots: 1 Locations: @@ -184930,7 +188326,7 @@ Body: Script: | .@g = getenchantgrade(); .@r = getrefine(); - bonus bMatk,15*(.@r/2); + bonus bMatk,130+15*(.@r/2); bonus bDef,15*(.@r/2); if (.@r>=7) { bonus2 bMagicAtkEle,Ele_All,3; @@ -184963,6 +188359,51 @@ Body: } } } + - Id: 450368 + AegisName: aegis_450368 + Name: Howling Tiger Pajama + Type: Armor + Weight: 1000 + Defense: 100 + Slots: 1 + Jobs: + Summoner: true + Spirit_Handler: true + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 200 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bSubRace,RC_Player_Doram,7; + bonus2 bSubRace,RC_Player_Human,7; + bonus2 bAddSize,Size_All,.@r*7; + if (.@r>=7) { + bonus bAspdRate,10; + bonus bNoKnockback; + if (.@r>=9) { + bonus2 bSkillCooldown,"SU_HISS",-45000; + bonus bUnbreakableArmor; + } + } + /*Todo : SkillAtk SH_CHUL_HO_SONIC_CLAW, SH_HOWLING_OF_CHUL_HO, SH_HOGOGONG_STRIKE, 1% Per 10 BaseLevel (Not List in SkillDB)*/ + - Id: 450371 + AegisName: aegis_450371 + Name: Ultra Armor + Type: Armor + Weight: 1000 + Defense: 120 + Slots: 1 + Locations: + Armor: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + bonus2 bSubRace,RC_Player_Doram,3; + bonus2 bSubRace,RC_Player_Human,3; + bonus bPerfectHitAddRate,getrefine(); - Id: 460002 AegisName: Aries_Shield_J Name: Aries Shield @@ -185202,6 +188643,51 @@ Body: bonus bBaseAtk,15*(.@r/3); if (BaseLevel >= 170) bonus2 bSubEle,Ele_Neutral,5; + - Id: 460015 + AegisName: Auto_Shield_A + Name: Automatic Shield I + Type: Armor + Weight: 1200 + Defense: 95 + Slots: 1 + Locations: + Left_Hand: true + ArmorLevel: 1 + EquipLevelMin: 120 + Refineable: true + View: 1 + Script: | + .@r = getrefine(); + bonus bMaxHPrate,15; + bonus bMaxSPrate,15; + bonus2 bIgnoreDefRaceRate,RC_All,5*.@r; + bonus2 bIgnoreMdefRaceRate,RC_All,5*.@r; + if (BaseLevel>=175) { + bonus bMaxHPrate,15; + bonus bMaxSPrate,15; + } + - Id: 460016 + AegisName: Auto_Shield_B + Name: Automatic Shield II + Type: Armor + Weight: 400 + Defense: 60 + Slots: 1 + Locations: + Left_Hand: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + View: 1 + Script: | + .@r = getrefine(); + bonus bMaxHPrate,15; + bonus bMaxSPrate,15; + bonus bPerfectHitAddRate,3*.@r; + if (BaseLevel>=175) { + bonus bMaxHPrate,15; + bonus bMaxSPrate,15; + } - Id: 460017 AegisName: Guard_IL Name: Illusion Guard @@ -185719,6 +189205,70 @@ Body: bonus2 bSubEle,Ele_Holy,25-(getskilllv("CR_TRUST") > 0 ? 25 : 0); if (.@r>=7) bonus2 bSubEle,Ele_Neutral,15; + - Id: 460064 + AegisName: aegis_460064 + Name: Rose Quartz Shield + Type: Armor + Weight: 660 + Slots: 1 + Locations: + Left_Hand: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + View: 4 + Script: | + .@r = getrefine(); + bonus bDelayrate,-5; + bonus2 bSkillFixedCast,"MG_FIREBALL",-320; + bonus2 bSkillAtk,"MG_FIREBALL",10*.@r; + if (.@r>=7) { + bonus bVariableCastrate,-10; + if (.@r>=9) { + bonus2 bMagicAtkEle,Ele_Fire,10; + if (.@r>=11) { + bonus bUseSPrate,20; + bonus bMatk,30; + bonus2 bSkillCooldown,"WL_COMET",-20000; + } + } + } + - Id: 460065 + AegisName: aegis_460065 + Name: "[Not For Sale] Rose Quartz Shield" + Type: Armor + Weight: 660 + Slots: 1 + Locations: + Left_Hand: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + View: 4 + Script: | + .@r = getrefine(); + bonus bDelayrate,-5; + bonus2 bSkillFixedCast,"MG_FIREBALL",-320; + bonus2 bSkillAtk,"MG_FIREBALL",10*.@r; + if (.@r>=7) { + bonus bVariableCastrate,-10; + if (.@r>=9) { + bonus2 bMagicAtkEle,Ele_Fire,10; + if (.@r>=11) { + bonus bUseSPrate,20; + bonus bMatk,30; + bonus2 bSkillCooldown,"WL_COMET",-20000; + } + } + } - Id: 460072 AegisName: Shield_Furious Name: Furious Shield @@ -185760,6 +189310,35 @@ Body: } } } + - Id: 460073 + AegisName: aegis_460073 + Name: Ultra Shield + Type: Armor + Weight: 400 + Defense: 60 + Slots: 1 + Locations: + Left_Hand: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + View: 1 + Script: | + .@r = getrefine(); + bonus bAgi,7; + bonus bDex,7; + if (.@r>=5) { + bonus bMaxHPrate,3; + bonus bMaxSPrate,3; + if (.@r>=7) { + bonus bAgi,3; + bonus bDex,3; + if (.@r>=9) { + bonus bAgi,7; + bonus bDex,7; + } + } + } - Id: 470000 AegisName: Atker_Greave Name: Attacker Booster Greaves @@ -188474,7 +192053,7 @@ Body: } - Id: 470113 AegisName: Hollow_Shoes_ - Name: Hollow Shoes + Name: Awakening Hollow Shoes Type: Armor Weight: 500 Defense: 15 @@ -189661,6 +193240,90 @@ Body: } } } + - Id: 470188 + AegisName: P_90Lv_Greave + Name: Booster Adventurer's Premium Greaves + Type: Armor + Defense: 24 + Slots: 1 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bHPrecovRate,20; + bonus bSPrecovRate,7; + if (.@r>=5) + bonus bStr,4; + if (.@r>=7) + bonus bBaseAtk,30; + if (.@r>=9) + bonus bAspdRate,5; + - Id: 470189 + AegisName: P_90Lv_Boots + Name: Booster Adventurer's Premium Boots + Type: Armor + Defense: 22 + Slots: 1 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bHPrecovRate,20; + bonus bSPrecovRate,9; + if (.@r>=5) + bonus bDex,4; + if (.@r>=7) + bonus bFlee,30; + if (.@r>=9) + bonus bBaseAtk,10; + - Id: 470190 + AegisName: P_90Lv_Shoes + Name: Booster Adventurer's Premium Shoes + Type: Armor + Defense: 18 + Slots: 1 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bHPrecovRate,20; + bonus bSPrecovRate,12; + if (.@r>=5) + bonus bInt,4; + if (.@r>=7) + bonus bMatk,30; + if (.@r>=9) + bonus bMatk,10; + - Id: 470191 + AegisName: P_90Lv_Sandal + Name: Booster Adventurer's Premium Magic Shoes + Type: Armor + Defense: 30 + Slots: 1 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bHPrecovRate,20; + bonus bSPrecovRate,12; + if (.@r>=5) + bonus bHealPower,4; + if (.@r>=7) + bonus bHealPower,7; + if (.@r>=9) + bonus bMatkRate,5; - Id: 470192 AegisName: Fifth_Element Name: Fifth Element @@ -190544,6 +194207,113 @@ Body: } } } + - Id: 470216 + AegisName: Z_Boost_Greave + Name: Boosted Adventurer's Boots + Type: Armor + Defense: 30 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bVariableCastrate,-5; + bonus bSPrecovRate,25; + bonus bAllStats,.@r/3; + if (.@r>=5) { + bonus bFlee,30; + if (.@r>=7) { + bonus bBaseAtk,20; + bonus bMatk,20; + bonus bHit,5; + } + } + - Id: 470217 + AegisName: Z_Boost_Set1_Boots + Name: Boosting Forged Boots Type A + Type: Armor + Defense: 23 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } + - Id: 470218 + AegisName: Z_Boost_Set2_Boots + Name: Boosting Forged Boots Type B + Type: Armor + Defense: 25 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } + - Id: 470219 + AegisName: Z_Boost_Set3_Boots + Name: Boosting Forged Boots Type C + Type: Armor + Defense: 23 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } + - Id: 470220 + AegisName: Z_Boost_Set4_Boots + Name: Boosting Forged Boots Type D + Type: Armor + Defense: 18 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } - Id: 470221 AegisName: FateSin_Boots_MT Name: Boots of Good and Evil (Meister) @@ -191456,6 +195226,90 @@ Body: } } } + - Id: 470250 + AegisName: Z_Boost_Set1_Boots_01 + Name: Boosting Boots Type A + Type: Armor + Defense: 23 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } + - Id: 470251 + AegisName: Z_Boost_Set2_Boots_01 + Name: Boosting Boots Type B + Type: Armor + Defense: 25 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } + - Id: 470252 + AegisName: Z_Boost_Set3_Boots_01 + Name: Boosting Boots Type C + Type: Armor + Defense: 23 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } + - Id: 470253 + AegisName: Z_Boost_Set4_Boots_01 + Name: Boosting Boots Type D + Type: Armor + Defense: 18 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSPrecovRate,25; + if (.@r>=7) { + bonus bAtkRate,1; + bonus bMatkRate,1; + if (.@r>=9) { + bonus2 bAddSize,Size_All,3; + bonus2 bMagicAddSize,Size_All,3; + } + } - Id: 470254 AegisName: aegis_470254 Name: Will of Sword and Zen @@ -191486,6 +195340,138 @@ Body: bonus bMatkRate,25; } } + - Id: 470255 + AegisName: Zodiac_Boots_SM + Name: Zodiac Boots (Swordsman) + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Crusader: true + Knight: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bMatk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus bMatkRate,.@r/2; + bonus2 bSkillAtk,"RK_SONICWAVE",15*(.@r/4); + bonus2 bSkillAtk,"LG_RAYOFGENESIS",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470256 + AegisName: Comp_Zodiac_Boots_SM + Name: "[Not For Sale] Zodiac Boots (Swordsman)" + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Crusader: true + Knight: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bMatk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus bMatkRate,.@r/2; + bonus2 bSkillAtk,"RK_SONICWAVE",15*(.@r/4); + bonus2 bSkillAtk,"LG_RAYOFGENESIS",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470258 + AegisName: Zodiac_Boots_MG + Name: Zodiac Boots (Mage) + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Sage: true + Wizard: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatk,50+(10*(.@r/2)); + bonus bMatkRate,.@r/2; + bonus2 bSkillAtk,"WL_CRIMSONROCK",15*(.@r/4); + bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470259 + AegisName: Comp_Zodiac_Boots_MG + Name: "[Not For Sale] Zodiac Boots (Mage)" + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Sage: true + Wizard: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatk,50+(10*(.@r/2)); + bonus bMatkRate,.@r/2; + bonus2 bSkillAtk,"WL_CRIMSONROCK",15*(.@r/4); + bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; - Id: 470260 AegisName: Gaebolg_Boots Name: Gaebolg Boots @@ -191587,7 +195573,7 @@ Body: } } - Id: 470263 - AegisName: aegis_470263 + AegisName: Zodiac_Boots_AC Name: Zodiac Boots (Archer) Type: Armor Weight: 900 @@ -191619,7 +195605,7 @@ Body: } } - Id: 470264 - AegisName: aegis_470264 + AegisName: Comp_Zodiac_Boots_AC Name: "[Not For Sale] Zodiac Boots (Archer)" Type: Armor Weight: 900 @@ -191710,6 +195696,256 @@ Body: } } } + - Id: 470267 + AegisName: Zodiac_Boots_MC + Name: Zodiac Boots (Merchant) + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Alchemist: true + Blacksmith: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus2 bSkillAtk,"NC_ARMSCANNON",15*(.@r/4); + bonus2 bSkillAtk,"GN_CARTCANNON",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470268 + AegisName: Comp_Zodiac_Boots_MC + Name: "[Not For Sale] Zodiac Boots (Merchant)" + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Alchemist: true + Blacksmith: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus2 bSkillAtk,"NC_ARMSCANNON",15*(.@r/4); + bonus2 bSkillAtk,"GN_CARTCANNON",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470270 + AegisName: Zodiac_Boots_AL + Name: Zodiac Boots (Acolyte) + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Monk: true + Priest: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bMatk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus bMatkRate,.@r/2; + bonus2 bSkillAtk,"AB_ADORAMUS",15*(.@r/4); + bonus2 bSkillAtk,"SR_KNUCKLEARROW",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470271 + AegisName: Comp_Zodiac_Boots_AL + Name: "[Not For Sale] Zodiac Boots (Acolyte)" + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Monk: true + Priest: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bMatk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus bMatkRate,.@r/2; + bonus2 bSkillAtk,"AB_ADORAMUS",15*(.@r/4); + bonus2 bSkillAtk,"SR_KNUCKLEARROW",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470272 + AegisName: Zodiac_Boots_TF + Name: Zodiac Boots (Thief) + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Assassin: true + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15*(.@r/4); + bonus2 bSkillAtk,"ASC_BREAKER",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470273 + AegisName: Comp_Zodiac_Boots_TF + Name: "[Not For Sale] Zodiac Boots (Thief)" + Type: Armor + Weight: 900 + Defense: 60 + Slots: 1 + Jobs: + Assassin: true + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Shoes: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,50+(10*(.@r/2)); + bonus bAtkRate,.@r/2; + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15*(.@r/4); + bonus2 bSkillAtk,"ASC_BREAKER",15*(.@r/4); + if (.@r>=9) + bonus bFixedCast,-500; + if (.@r>=11) + bonus bDelayrate,-10; + - Id: 470274 + AegisName: aegis_470274 + Name: Twinhead Dragon Boots + Type: Armor + Weight: 400 + Defense: 12 + Slots: 1 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@a = getskilllv("RK_DRAGONBREATH_WATER"); + .@b = getskilllv("DK_DRAGONIC_BREATH"); + .@r = getrefine(); + bonus2 bSubRace,RC_Player_Doram,10; + bonus2 bSubRace,RC_Player_Human,10; + bonus2 bSubClass,Class_Boss,5; + bonus2 bSubClass,Class_Normal,5; + bonus bMaxHPrate,4*.@a; + bonus bMaxSPrate,4*.@a; + bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",10*.@a; + bonus bLongAtkRate,4*.@b; + bonus2 bSkillAtk,"DK_DRAGONIC_BREATH",10*.@b; + if (getskilllv("RK_DRAGONHOWLING") == 5) + bonus bSpeedRate,25; + if (.@r>=5) { + bonus bAllStats,15; + bonus bDelayrate,-10; + if (.@r>=7) { + bonus bAllStats,15; + bonus bDelayrate,-10; + } + } + - Id: 470277 + AegisName: aegis_470277 + Name: Ultra Shoes + Type: Armor + Weight: 400 + Defense: 18 + Locations: + Shoes: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bDelayrate,-10; + bonus bPerfectHitAddRate,5; + if (.@r>=7) + bonus bPerfectHitAddRate,5; + if (.@r>=9) + bonus bPerfectHitAddRate,10; - Id: 480000 AegisName: Atker_Manteau Name: Attacker Booster Manteau @@ -192722,7 +196958,7 @@ Body: View: 61 - Id: 480071 AegisName: Calabash - Name: Costume Vial + Name: Costume Calabash Type: Armor Locations: Costume_Garment: true @@ -192771,7 +197007,7 @@ Body: } - Id: 480076 AegisName: Temporal_Cape_TW - Name: Temporal Cape # !todo check english name + Name: Exotic Temporal Manteau Type: Armor Weight: 100 Defense: 40 @@ -194435,7 +198671,7 @@ Body: ArmorLevel: 1 View: 130 - Id: 480188 - AegisName: aegis_480188 + AegisName: Valkyrie_Curse_blight Name: Valkyrie Curse Bright Type: Armor Weight: 400 @@ -195624,6 +199860,83 @@ Body: Costume_Garment: true ArmorLevel: 1 View: 136 + - Id: 480265 + AegisName: P_90Lv_Manteau + Name: Booster Adventurer's Premium Cloak + Type: Armor + Defense: 25 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,25; + bonus bAspdRate,7; + bonus bFlee,18; + if (.@r>=5) + bonus bAgi,5; + if (.@r>=7) + bonus bCritAtkRate,8; + - Id: 480266 + AegisName: P_90Lv_Cloak + Name: Booster Adventurer's Premium Scout Cloak + Type: Armor + Defense: 18 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAspdRate,7; + bonus bFlee,25; + if (.@r>=5) + bonus bAspdRate,2; + if (.@r>=7) + bonus bLongAtkRate,5; + - Id: 480267 + AegisName: P_90Lv_Muffler + Name: Booster Adventurer's Premium Muffler + Type: Armor + Defense: 16 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bVariableCastrate,-5; + bonus bFlee,18; + if (.@r>=5) + bonus bVariableCastrate,-4; + if (.@r>=7) + bonus bVariableCastrate,-3; + - Id: 480268 + AegisName: P_90Lv_Cape + Name: Booster Adventurer's Premium Cape + Type: Armor + Defense: 15 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 90 + Refineable: true + Script: | + .@r = getrefine(); + bonus bVariableCastrate,-7; + bonus bFlee,15; + if (.@r>=5) + bonus2 bSubEle,Ele_Neutral,5; + if (.@r>=7) + bonus2 bSubEle,Ele_Neutral,6; - Id: 480269 AegisName: N_Avenger_Cape_TW Name: Revenge Cloak of Naght Sieger @@ -196067,7 +200380,7 @@ Body: hateffect(HAT_EF_rabbit_aura,false); - Id: 480310 AegisName: C_Giant_Mad_Bunny - Name: Costume Big Mad Bunny + Name: Costume Giant Mad Bunny Type: Armor Locations: Costume_Garment: true @@ -196285,7 +200598,7 @@ Body: ArmorLevel: 1 View: 178 - Id: 480319 - AegisName: aegis_480319 + AegisName: Divine_Phoenix Name: Divine Phoenix Type: Armor Weight: 400 @@ -197316,6 +201629,118 @@ Body: } } } + - Id: 480353 + AegisName: Z_Boost_Manteau + Name: Boosted Adventurer's Pauldrons + Type: Armor + Defense: 30 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAspdRate,5; + bonus bHealPower2,15; + bonus bAllStats,.@r/3; + if (.@r>=5) { + bonus bCritAtkRate,5; + bonus bHealPower,10; + if (.@r>=7) { + bonus bBaseAtk,30; + bonus bMatk,30; + bonus bCritical,5; + } + } + - Id: 480354 + AegisName: Z_Boost_Set1_Hood + Name: Boosting Forged Cloak Type A + Type: Armor + Defense: 15 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,3; + bonus bMaxSPrate,3; + bonus bAspdRate,7; + if (.@r>=7) { + bonus bVariableCastrate,-7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } + - Id: 480355 + AegisName: Z_Boost_Set2_Hood + Name: Boosting Forged Cloak Type B + Type: Armor + Defense: 30 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,5; + bonus bMaxSPrate,1; + bonus bAspdRate,7; + if (.@r>=7) { + bonus bVariableCastrate,-7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } + - Id: 480356 + AegisName: Z_Boost_Set3_Hood + Name: Boosting Forged Cloak Type C + Type: Armor + Defense: 25 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,3; + bonus bMaxSPrate,3; + bonus bVariableCastrate,-7; + if (.@r>=7) { + bonus bAspdRate,7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } + - Id: 480357 + AegisName: Z_Boost_Set4_Hood + Name: Boosting Forged Cloak Type D + Type: Armor + Defense: 10 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,1; + bonus bMaxSPrate,5; + bonus bVariableCastrate,-7; + if (.@r>=7) { + bonus bAspdRate,7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } - Id: 480358 AegisName: aegis_480358 Name: Dark Shadow Scarf @@ -197391,15 +201816,15 @@ Body: if (.@r>=11) bonus bDelayrate,-10; - Id: 480360 - AegisName: aegis_480360 - Name: Costume Major Huuma Shuriken + AegisName: C_Big_Shuriken + Name: Costume Giant Shuriken Type: Armor Locations: Costume_Garment: true ArmorLevel: 1 View: 190 - Id: 480361 - AegisName: aegis_480361 + AegisName: C_Evil_Double_Edged Name: Costume Twin Blades of Evil Soul Type: Armor Locations: @@ -197462,6 +201887,14 @@ Body: } } } + - Id: 480368 + AegisName: C_Big_Lollipop + Name: Costume Big Lollipop + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 194 - Id: 480372 AegisName: Giant_Mad_Bunny_TW Name: Mad Bunny Backpack @@ -197604,6 +202037,98 @@ Body: bonus bAspdRate,15; } } + - Id: 480401 + AegisName: Z_Boost_Set1_Hood_01 + Name: Boosting Cloak Type A + Type: Armor + Defense: 15 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,3; + bonus bMaxSPrate,3; + bonus bAspdRate,7; + if (.@r>=7) { + bonus bVariableCastrate,-7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } + - Id: 480402 + AegisName: Z_Boost_Set2_Hood_01 + Name: Boosting Cloak Type B + Type: Armor + Defense: 30 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,5; + bonus bMaxSPrate,1; + bonus bAspdRate,7; + if (.@r>=7) { + bonus bVariableCastrate,-7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } + - Id: 480403 + AegisName: Z_Boost_Set3_Hood_01 + Name: Boosting Cloak Type C + Type: Armor + Defense: 25 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,3; + bonus bMaxSPrate,3; + bonus bVariableCastrate,-7; + if (.@r>=7) { + bonus bAspdRate,7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } + - Id: 480404 + AegisName: Z_Boost_Set4_Hood_01 + Name: Boosting Cloak Type D + Type: Armor + Defense: 10 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,1; + bonus bMaxSPrate,5; + bonus bVariableCastrate,-7; + if (.@r>=7) { + bonus bAspdRate,7; + if (.@r>=9) { + bonus bAtkRate,3; + bonus bMatkRate,3; + } + } - Id: 480405 AegisName: C_SantaTeddyBear Name: Costume Santa Teddy Bear Doll Bag @@ -197612,6 +202137,30 @@ Body: Costume_Garment: true ArmorLevel: 1 View: 202 + - Id: 480406 + AegisName: C_Comp_Valkyrie_Wing + Name: "[NFS] Costume Valkyrie Wings" + Type: Armor + Locations: + Costume_Garment: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + View: 48 + - Id: 480407 + AegisName: C_Leticia_Wing + Name: Costume Leticia's Wings + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 203 - Id: 480408 AegisName: aegis_480408 Name: Costume Dragon Wing @@ -197620,6 +202169,46 @@ Body: Costume_Garment: true ArmorLevel: 1 View: 204 + - Id: 480409 + AegisName: Comp_Arabian_Manteau + Name: "[Not For Sale] Arabian Manteau" + Type: Armor + Weight: 300 + Defense: 10 + Slots: 1 + Locations: + Armor: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMaxHPrate,10; + bonus bCritAtkRate,5; + if (.@r>=7) { + bonus bCritical,5; + bonus bCritAtkRate,5; + if (.@r>=9) { + bonus bCritical,10; + bonus bCritAtkRate,10; + if (.@r>=11) { + bonus bCritical,20; + bonus bCritAtkRate,20; + if (.@r>=13) { + bonus bCritical,30; + bonus bCritAtkRate,30; + } + } + } + } - Id: 480411 AegisName: aegis_480411 Name: Costume White Rabbit Tail @@ -197628,6 +202217,69 @@ Body: Costume_Garment: true ArmorLevel: 1 View: 206 + - Id: 480412 + AegisName: aegis_480412 + Name: Fire Dragon Coat + Type: Armor + Weight: 300 + Defense: 10 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 30 + Refineable: true + Script: | + bonus bMaxHPrate,5; + bonus2 bAddEle,Ele_Fire,2; + bonus2 bMagicAtkEle,Ele_Fire,2; + if (getrefine()>=7) { + bonus2 bAddEle,Ele_Fire,3; + bonus2 bAddEle,Ele_Water,-10; + bonus2 bMagicAtkEle,Ele_Fire,3; + bonus2 bMagicAtkEle,Ele_Water,-10; + } + - Id: 480413 + AegisName: aegis_480413 + Name: "[Not for Sale] Fire Dragon Coat" + Type: Armor + Weight: 300 + Defense: 10 + Slots: 1 + Locations: + Garment: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 30 + Refineable: true + Script: | + bonus bMaxHPrate,5; + bonus2 bAddEle,Ele_Fire,2; + bonus2 bMagicAtkEle,Ele_Fire,2; + if (getrefine()>=7) { + bonus2 bAddEle,Ele_Fire,3; + bonus2 bAddEle,Ele_Water,-10; + bonus2 bMagicAtkEle,Ele_Fire,3; + bonus2 bMagicAtkEle,Ele_Water,-10; + } + - Id: 480414 + AegisName: aegis_480414 + Name: Hood + Type: Armor + Weight: 200 + Defense: 4 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + Refineable: true - Id: 480415 AegisName: Gaebolg_Manteau Name: Gaebolg Manteau @@ -197759,6 +202411,228 @@ Body: Costume_Garment: true ArmorLevel: 1 View: 210 + - Id: 480429 + AegisName: aegis_480429 + Name: Costume cat donuts # !todo check english name + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 212 + - Id: 480430 + AegisName: aegis_480430 + Name: Costume Blooming Staff + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 213 + - Id: 480431 + AegisName: aegis_480431 + Name: Costume Sweet Flower Garden + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 214 + - Id: 480432 + AegisName: aegis_480432 + Name: Costume Glass Rose Garden + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 215 + - Id: 480433 + AegisName: aegis_480433 + Name: Costume Twin Edge + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 216 + - Id: 480434 + AegisName: aegis_480434 + Name: Giant God Snake Skin + Type: Armor + Weight: 400 + Defense: 38 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + bonus bMdef,10; + - Id: 480435 + AegisName: aegis_480435 + Name: Giant God Snake Skin + Type: Armor + Weight: 400 + Defense: 38 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 1 + Refineable: true + Script: | + bonus bMdef,10; + - Id: 480436 + AegisName: aegis_480436 + Name: Costume Baphomet's Scythe + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 217 + - Id: 480437 + AegisName: aegis_480437 + Name: Costume Himelmez's Sword + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 218 + - Id: 480438 + AegisName: aegis_480438 + Name: Costume Big Treasure Chest + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 219 + - Id: 480439 + AegisName: aegis_480439 + Name: Black Mithril Manteau + Type: Armor + Weight: 2500 + Defense: 80 + Slots: 1 + Jobs: + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddSize,Size_All,10; + bonus bPerfectHitAddRate,getskilllv("SC_REPRODUCE")*10; + bonus2 bSkillAtk,"SC_FATALMENACE",2*(BaseLevel/10); + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",2*(BaseLevel/10); + if (.@r>=7) + bonus2 bSkillUseSP,"SC_FATALMENACE",10; + if (.@r>=9) + bonus bDelayrate,-12; + if (.@r>=11) + bonus2 bAddClass,Class_Boss,15; + if (.@r>=13) + bonus bNoSizeFix; + - Id: 480440 + AegisName: aegis_480440 + Name: "[Not For Sale] Black Mithril Manteau" + Type: Armor + Weight: 2500 + Defense: 80 + Slots: 1 + Jobs: + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Garment: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bAddSize,Size_All,10; + bonus bPerfectHitAddRate,getskilllv("SC_REPRODUCE")*10; + bonus2 bSkillAtk,"SC_FATALMENACE",2*(BaseLevel/10); + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",2*(BaseLevel/10); + if (.@r>=7) + bonus2 bSkillUseSP,"SC_FATALMENACE",10; + if (.@r>=9) + bonus bDelayrate,-12; + if (.@r>=11) + bonus2 bAddClass,Class_Boss,15; + if (.@r>=13) + bonus bNoSizeFix; + - Id: 480441 + AegisName: aegis_480441 + Name: Ultra Cloak + Type: Armor + Weight: 400 + Defense: 40 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + Script: | + .@r = getrefine(); + bonus2 bSubClass,Class_Boss,3; + bonus2 bSubClass,Class_Normal,3; + bonus2 bSubRace,RC_Player_Doram,3; + bonus2 bSubRace,RC_Player_Human,3; + bonus bDelayrate,-.@r; + bonus bAtkRate,.@r; + if (.@r>=7) { + bonus bAspdRate,5; + bonus bPerfectHitAddRate,10; + if (.@r>=9) { + skill "AC_CONCENTRATION",5; + } + } + - Id: 480451 + AegisName: aegis_480451 + Name: Automatic Engine Wing C-Type + Type: Armor + Weight: 800 + Defense: 35 + Slots: 1 + Locations: + Garment: true + ArmorLevel: 1 + EquipLevelMin: 100 + Refineable: true + View: 11 + Script: | + .@r = getrefine(); + skill "BS_GREED",1; + bonus bMaxHP,2500; + bonus bBaseAtk,10*(.@r/2); + bonus bMatk,10*(.@r/2); + if (.@r>=7) { + bonus bAspdRate,10; + bonus bVariableCastrate,-15; + bonus bCritical,10; + if (.@r>=9) { + bonus bShortAtkRate,10; + bonus bLongAtkRate,10; + bonus bMatkRate,10; + if (.@r>=11) { + bonus bShortAtkRate,7; + bonus bLongAtkRate,7; + bonus bMatkRate,10; + } + } + } - Id: 490004 AegisName: Atker_Ring Name: Attacker Booster Ring @@ -198911,7 +203785,7 @@ Body: ArmorLevel: 1 EquipLevelMin: 100 Script: | - bonus2 bAddRace,RC_All,10; + bonus bAtkRate,10; bonus bMatkRate,10; bonus bHPGainValue,200; bonus bSPGainValue,20; @@ -199201,7 +204075,7 @@ Body: bonus bSPDrainValue,3; - Id: 490097 AegisName: TimeOverloadRing_TW - Name: Time Overload Ring # !todo check english name + Name: Exotic Temporal Ring Type: Armor Weight: 100 Slots: 1 @@ -201044,7 +205918,7 @@ Body: bonus bLongAtkRate,5; bonus bMaxHPrate,3*getskilllv("RK_DRAGONHOWLING"); - Id: 490220 - AegisName: aegis_490220 + AegisName: Hero_Token_HN Name: Heroic Token (Hyper Novice) Type: Armor Weight: 200 @@ -201063,7 +205937,7 @@ Body: bonus bAtkRate,10; bonus bVariableCastrate,-10; - Id: 490221 - AegisName: aegis_490221 + AegisName: Record_Swordsman_TH Name: Record of Swordsman Type: Armor Weight: 100 @@ -201076,7 +205950,7 @@ Body: bonus bAtkRate,5; bonus bBaseAtk,15*(getskilllv("SM_BASH")/2); - Id: 490222 - AegisName: aegis_490222 + AegisName: Comp_Record_Swordman_TH Name: "[Not for Sale] Record of Swordsman" Type: Armor Weight: 100 @@ -201117,7 +205991,7 @@ Body: bonus bMatkRate,5; skill "AS_CLOAKING",1; - Id: 490229 - AegisName: aegis_490229 + AegisName: Record_Thief_TH Name: Record of Thief Type: Armor Weight: 100 @@ -201137,7 +206011,7 @@ Body: bonus bAtkRate,5; bonus bBaseAtk,15*(getskilllv("TF_HIDING")/2); - Id: 490231 - AegisName: aegis_490231 + AegisName: Comp_Record_Thief_TH Name: "[Not For Sale] Record of Thief" Type: Armor Weight: 100 @@ -201298,7 +206172,7 @@ Body: bonus bShortAtkRate,5; bonus bBaseAtk,3*.@skill; - Id: 490239 - AegisName: aegis_490239 + AegisName: Record_Merchant_TH Name: Record of Merchant Type: Armor Weight: 100 @@ -201319,7 +206193,7 @@ Body: bonus bAtkRate,3*(getskilllv("MC_MAMMONITE")/2); bonus bMatkRate,3*(getskilllv("MC_MAMMONITE")/2); - Id: 490240 - AegisName: aegis_490240 + AegisName: Comp_Record_Merchant_TH Name: "[Not For Sale] Record of Merchant" Type: Armor Weight: 100 @@ -202006,7 +206880,7 @@ Body: Both_Accessory: true ArmorLevel: 2 - Id: 490288 - AegisName: aegis_490288 + AegisName: Record_Mage_TH Name: Record of Mage Type: Armor Weight: 100 @@ -202024,7 +206898,7 @@ Body: bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-10*(getskilllv("MG_SAFETYWALL")/2); bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10*(getskilllv("MG_SAFETYWALL")/2); - Id: 490289 - AegisName: aegis_490289 + AegisName: Comp_Record_Mage_TH Name: "[Not for Sale] Record of Mage" Type: Armor Weight: 100 @@ -202050,7 +206924,7 @@ Body: bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-10*(getskilllv("MG_SAFETYWALL")/2); bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10*(getskilllv("MG_SAFETYWALL")/2); - Id: 490290 - AegisName: aegis_490290 + AegisName: Ameretat Name: Ameretat Type: Armor Weight: 100 @@ -202284,6 +207158,58 @@ Body: bonus bMatkRate,3; bonus bAspdRate,3; bonus bHit,3; + - Id: 490312 + AegisName: P_90Lv_Aring + Name: Booster Adventurer's Premium Ring + Type: Armor + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 90 + Script: | + bonus bAllStats,5; + bonus bMaxHP,250; + bonus bMaxSP,100; + - Id: 490313 + AegisName: P_90Lv_Gloves + Name: Booster Adventurer's Premium Gloves + Type: Armor + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 90 + Script: | + bonus bAllStats,5; + bonus bMaxHP,250; + bonus bMaxSP,100; + - Id: 490314 + AegisName: P_90Lv_Necklace + Name: Booster Adventurer's Premium Necklace + Type: Armor + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 90 + Script: | + bonus bAllStats,5; + bonus bMaxHP,250; + bonus bMaxSP,100; + - Id: 490315 + AegisName: P_90Lv_Mring + Name: Booster Adventurer's Premium Magic Ring + Type: Armor + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 90 + Script: | + bonus bAllStats,5; + bonus bMaxHP,250; + bonus bMaxSP,100; - Id: 490316 AegisName: aegis_490316 Name: Brooch of Matador @@ -202428,7 +207354,7 @@ Body: bonus bAllStats,2; bonus bMdef,5; - Id: 490334 - AegisName: aegis_490334 + AegisName: Record_Acol_TH Name: Record of Acolyte Type: Armor Weight: 100 @@ -202449,7 +207375,7 @@ Body: bonus bBaseAtk,10*(getskilllv("AL_HEAL")/2); bonus bMatk,10*(getskilllv("AL_HEAL")/2); - Id: 490335 - AegisName: aegis_490335 + AegisName: Comp_Record_Acol_TH Name: "[Not For Sale] Record of Acolyte" Type: Armor Weight: 100 @@ -202524,7 +207450,7 @@ Body: bonus bMaxSP,5*BaseLevel; /*Todo Add Item 23044 and Remove Cooldown Item Script*/ - Id: 490340 - AegisName: aegis_490340 + AegisName: Illegal_Tip Name: illegal Chip Type: Armor Weight: 100 @@ -202624,6 +207550,7 @@ Body: bonus2 bSkillAtk,"EM_LIGHTNING_LAND",BaseLevel/10; bonus2 bSkillAtk,"EM_TERRA_DRIVE",BaseLevel/10; bonus2 bSkillAtk,"EM_VENOM_SWAMP",BaseLevel/10; + bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER",BaseLevel/10; - Id: 490364 AegisName: aegis_490364 Name: Above B.E.2 475 @@ -202803,7 +207730,7 @@ Body: bonus2 bExpAddRace,RC_All,5; } - Id: 490376 - AegisName: aegis_490376 + AegisName: Record_Swordsman2_TH Name: Record of Swordsman 2 Type: Armor Weight: 100 @@ -202818,7 +207745,7 @@ Body: bonus2 bSkillAtk,"RK_HUNDREDSPEAR",30; bonus2 bSkillAtk,"LG_EARTHDRIVE",30; - Id: 490377 - AegisName: aegis_490377 + AegisName: Comp_Record_Swords2_TH Name: "[Not For Sale] Record of Swordsman 2" Type: Armor Weight: 100 @@ -203042,8 +207969,25 @@ Body: bonus bAtkRate,5; bonus bMatkRate,5; skill "MG_COLDBOLT",3; + - Id: 490389 + AegisName: ATW_Ring_TW + Name: Barrier Ring + Type: Armor + Weight: 100 + Defense: 5 + Slots: 1 + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 50 + Script: | + bonus bMaxHPrate,10; + bonus bMaxSPrate,10; + bonus bSPrecovRate,15; + bonus2 bExpAddRace,RC_All,2; + skill "AL_ANGELUS",5; - Id: 490390 - AegisName: aegis_490390 + AegisName: Toy_Ring_TH Name: Toy Ring Type: Armor Weight: 1000 @@ -203064,7 +208008,7 @@ Body: bonus2 bSkillAtk,"NC_AXETORNADO",BaseLevel/9; bonus2 bSkillAtk,"GN_CART_TORNADO",2*(BaseLevel/9); - Id: 490391 - AegisName: aegis_490391 + AegisName: Comp_Toy_Ring_TH Name: "[Not For Sale] Toy Ring" Type: Armor Weight: 1000 @@ -203143,7 +208087,7 @@ Body: if (getskilllv("SU_SVG_SPIRIT") == 5) bonus2 bSkillCooldown,"SU_LUNATICCARROTBEAT",-2000; - Id: 490394 - AegisName: aegis_490394 + AegisName: Record_Thief2_TH Name: Record of Thief 2 Type: Armor Weight: 100 @@ -203164,7 +208108,7 @@ Body: bonus2 bSkillAtk,"SC_TRIANGLESHOT",30; bonus2 bSkillAtk,"ASC_METEORASSAULT",30; - Id: 490395 - AegisName: aegis_490395 + AegisName: Comp_Record_Thief2_TH Name: "[Not For Sale] Record of Thief 2" Type: Armor Weight: 100 @@ -203287,7 +208231,7 @@ Body: bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",JobLevel; } - Id: 490400 - AegisName: aegis_490400 + AegisName: Record_Archer_TH Name: Record of Archer Type: Armor Weight: 100 @@ -203306,7 +208250,7 @@ Body: bonus bDelayrate,-5; bonus bLongAtkRate,3*(getskilllv("AC_CONCENTRATION")/2); - Id: 490401 - AegisName: aegis_490401 + AegisName: Comp_Record_Archer_TH Name: "[Not For Sale] Record of Archer" Type: Armor Weight: 100 @@ -203561,7 +208505,7 @@ Body: bonus2 bSkillAtk,"ABC_ABYSS_DAGGER",BaseLevel/10; bonus2 bSkillAtk,"ABC_ABYSS_STRIKE",BaseLevel/10; - Id: 490411 - AegisName: aegis_490411 + AegisName: Record_Merchant2_TH Name: Record of Merchant 2 Type: Armor Weight: 100 @@ -203580,7 +208524,7 @@ Body: bonus2 bSkillAtk,"NC_ARMSCANNON",30; bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",30; - Id: 490412 - AegisName: aegis_490412 + AegisName: Comp_Record_Merch2_TH Name: "[Not For Sale] Record of Merchant 2" Type: Armor Weight: 100 @@ -203738,7 +208682,7 @@ Body: Script: | bonus bAllStats,7; - Id: 490418 - AegisName: aegis_490418 + AegisName: Record_Mage2_TH Name: Record of Mage 2 Type: Armor Weight: 100 @@ -203759,7 +208703,7 @@ Body: bonus2 bSkillAtk,"WL_COMET",30; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",30; - Id: 490419 - AegisName: aegis_490419 + AegisName: Comp_Record_Mage2_TH Name: "[Not For Sale] Record of Mage 2" Type: Armor Weight: 100 @@ -203835,6 +208779,58 @@ Body: bonus bDelayrate,-3; bonus bAtkRate,6; bonus bMatkRate,6; + - Id: 490425 + AegisName: aegis_490425 + Name: Magictool Ice + Type: Armor + Weight: 200 + Slots: 1 + Jobs: + Wizard: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + bonus bDex,3; + bonus bInt,3; + bonus2 bMagicAddSize,Size_All,5; + bonus bDelayrate,-(min(JobLevel,60)/2); + bonus2 bSkillAtk,"WZ_STORMGUST",2*(BaseLevel/3); + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_FIREBOLT",getskilllv("MG_FIREBOLT"),200; + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_LIGHTNINGBOLT",getskilllv("MG_LIGHTNINGBOLT"),200; + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_COLDBOLT",getskilllv("MG_COLDBOLT"),200; + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_SOULSTRIKE",getskilllv("MG_SOULSTRIKE"),200; + - Id: 490426 + AegisName: aegis_490426 + Name: "[Not For Sale] Magictool Ice" + Type: Armor + Weight: 200 + Slots: 1 + Jobs: + Wizard: true + Locations: + Both_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + bonus bDex,3; + bonus bInt,3; + bonus2 bMagicAddSize,Size_All,5; + bonus bDelayrate,-(min(JobLevel,60)/2); + bonus2 bSkillAtk,"WZ_STORMGUST",2*(BaseLevel/3); + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_FIREBOLT",getskilllv("MG_FIREBOLT"),200; + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_LIGHTNINGBOLT",getskilllv("MG_LIGHTNINGBOLT"),200; + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_COLDBOLT",getskilllv("MG_COLDBOLT"),200; + bonus4 bAutoSpellOnSkill,"HW_MAGICCRASHER","MG_SOULSTRIKE",getskilllv("MG_SOULSTRIKE"),200; - Id: 490427 AegisName: aegis_490427 Name: Ring of Storm @@ -203903,6 +208899,250 @@ Body: bonus2 bFixedCastrate,"AB_RENOVATIO",-100; bonus2 bSkillAtk,"CD_PETITIO",BaseLevel/10; bonus2 bSkillAtk,"CD_EFFLIGO",BaseLevel/10; + - Id: 490430 + AegisName: Record_Archer2_TH + Name: Record of Archer 2 + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + BardDancer: true + Hunter: true + Classes: + All_Third: true + Fourth: true + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bAspdRate,10; + bonus2 bAddSize,Size_All,6; + bonus2 bSkillAtk,"SN_SHARPSHOOTING",30; + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",30; + - Id: 490431 + AegisName: Comp_Record_Archer2_TH + Name: "[Not For Sale] Record of Archer 2" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + BardDancer: true + Hunter: true + Classes: + All_Third: true + Fourth: true + Locations: + Left_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bAspdRate,10; + bonus2 bAddSize,Size_All,6; + bonus2 bSkillAtk,"SN_SHARPSHOOTING",30; + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",30; + - Id: 490432 + AegisName: Toy_Screw + Name: Toy Screw + Type: Armor + Weight: 1000 + Defense: 10 + Slots: 1 + Jobs: + Alchemist: true + Blacksmith: true + Classes: + All_Third: true + Fourth: true + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bHit,30; + bonus bAspdRate,10; + bonus bDelayrate,-5; + - Id: 490433 + AegisName: Comp_Toy_Screw_TH + Name: "[Not For Sale] Toy Screw" + Type: Armor + Weight: 1000 + Defense: 10 + Slots: 1 + Jobs: + Alchemist: true + Blacksmith: true + Classes: + All_Third: true + Fourth: true + Locations: + Left_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bHit,30; + bonus bAspdRate,10; + bonus bDelayrate,-5; + - Id: 490434 + AegisName: aegis_490434 + Name: Ring of Unknown Hero (Warlock) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Wizard: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490435 + AegisName: aegis_490435 + Name: "[Not For Sale] Ring of Unknown Hero (Warlock)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Wizard: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490436 + AegisName: Record_Acol2_TH + Name: Record of Acolyte 2 + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Monk: true + Priest: true + Classes: + All_Third: true + Fourth: true + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-5; + bonus2 bAddSize,Size_All,6; + bonus2 bMagicAddSize,Size_All,6; + bonus2 bSkillAtk,"AB_JUDEX",30; + bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",30; + - Id: 490437 + AegisName: Comp_Record_Acol2_TH + Name: "[Not For Sale] Record of Acolyte 2" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Monk: true + Priest: true + Classes: + All_Third: true + Fourth: true + Locations: + Left_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-5; + bonus2 bAddSize,Size_All,6; + bonus2 bMagicAddSize,Size_All,6; + bonus2 bSkillAtk,"AB_JUDEX",30; + bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",30; + - Id: 490438 + AegisName: aegis_490438 + Name: Ring of Unknown Hero (Shadow Chaser) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490439 + AegisName: aegis_490439 + Name: "[NFS] Ring of Unknown Hero (Shadow Chaser)" # Name too long + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Rogue: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; - Id: 490440 AegisName: Eclipsedefmind_LT Name: Lunar Eclipse Guardian Heart-LT @@ -204093,6 +209333,41 @@ Body: bonus bAspdRate,10; bonus bDelayrate,-15; bonus bMatkRate,10; + - Id: 490462 + AegisName: Comp_S_Novice_Figure + Name: "[NFS] Super Novice Figure" + Type: Armor + Weight: 100 + Jobs: + Novice: true + SuperNovice: true + Locations: + Both_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + .@p = getitempos(); + bonus bVariableCastrate,-10; + bonus bAtkRate,10; + bonus bMatkRate,10; + if (.@p == EQP_ACC_L) { + bonus2 bIgnoreMdefRaceRate,RC_All,50; + bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",20; + bonus2 bMagicAtkEle,Ele_Earth,10; + bonus2 bMagicAtkEle,Ele_Neutral,10; + } + if (.@p == EQP_ACC_R) { + bonus bAspdRate,10; + bonus2 bSkillAtk,"PA_SHIELDCHAIN",BaseLevel/3; + } - Id: 490463 AegisName: aegis_490463 Name: Dawson Badge @@ -204227,6 +209502,122 @@ Body: bonus2 bFixedCastrate,"RA_AIMEDBOLT",-100; bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",BaseLevel/10; bonus2 bSkillAtk,"WH_GALESTORM",BaseLevel/10; + - Id: 490474 + AegisName: Z_Boost_Ring + Name: Boosting Ring + Type: Armor + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 1 + Script: | + bonus bDelayrate,-5; + bonus bUseSPrate,5; + - Id: 490475 + AegisName: aegis_490475 + Name: Chemical Glove + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Alchemist: true + Classes: + All_Upper: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + .@a = (getskilllv("AM_AXEMASTERY")/2); + bonus bHit,20; + bonus bAspdRate,5+.@a; + bonus bBaseAtk,5*.@a; + bonus bMaxHPrate,2*.@a; + bonus2 bSkillUseSP,"CR_ACIDDEMONSTRATION",.@a; + bonus2 bAddItemHealRate,501,100; + bonus2 bAddItemHealRate,502,100; + bonus2 bAddItemHealRate,503,100; + bonus2 bAddItemHealRate,504,100; + bonus2 bAddItemHealRate,547,100; + bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",20*(BaseLevel/20); + bonus2 bSkillAtk,"AM_ACIDTERROR",30*(BaseLevel/20); + - Id: 490476 + AegisName: aegis_490476 + Name: "[Not For Sale] Chemical Glove" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Alchemist: true + Classes: + All_Upper: true + Locations: + Both_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + .@a = (getskilllv("AM_AXEMASTERY")/2); + bonus bHit,20; + bonus bAspdRate,5+.@a; + bonus bBaseAtk,5*.@a; + bonus bMaxHPrate,2*.@a; + bonus2 bSkillUseSP,"CR_ACIDDEMONSTRATION",.@a; + bonus2 bAddItemHealRate,501,100; + bonus2 bAddItemHealRate,502,100; + bonus2 bAddItemHealRate,503,100; + bonus2 bAddItemHealRate,504,100; + bonus2 bAddItemHealRate,547,100; + bonus2 bSkillAtk,"CR_ACIDDEMONSTRATION",20*(BaseLevel/20); + bonus2 bSkillAtk,"AM_ACIDTERROR",30*(BaseLevel/20); + - Id: 490479 + AegisName: aegis_490479 + Name: Ring of Unknown Hero (Ninja) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + KagerouOboro: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490480 + AegisName: aegis_490480 + Name: "[Not For Sale] Ring of Unknown Hero (Ninja)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + KagerouOboro: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; - Id: 490481 AegisName: aegis_490481 Name: Five Elements Seal Array @@ -204329,6 +209720,92 @@ Body: Script: | bonus bCritAtkRate,10; bonus bVariableCastrate,-10; + - Id: 490488 + AegisName: aegis_490488 + Name: Ring of Unknown Hero (Archbishop) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Priest: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490489 + AegisName: aegis_490489 + Name: "[Not For Sale] Ring of Unknown Hero (Archbishop)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Priest: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490498 + AegisName: aegis_490498 + Name: Ring of Unknown Hero (Rebellion) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Rebellion: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490499 + AegisName: aegis_490499 + Name: "[Not For Sale] Ring of Unknown Hero (Rebellion)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Rebellion: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; - Id: 490501 AegisName: aegis_490501 Name: Polar Horizon Bracelet @@ -204348,6 +209825,21 @@ Body: bonus2 bSkillAtk,"SJ_FLASHKICK",BaseLevel/5; bonus2 bSkillAtk,"SJ_FALLINGSTA",BaseLevel/5; /*Todo : SkillAtk SKE_TWINKLING_GALAXY, SKE_STAR_BURST, SKE_STAR_CANNON, 1% Per 10 BaseLevel (Skill Not List in DB)*/ + - Id: 490502 + AegisName: Pray_Dusk_Bell_ArcM + Name: Evening Bell of Prayer (Arch Mage) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; - Id: 490507 AegisName: Gaebolg_Ring Name: Gaebolg Ring @@ -204406,6 +209898,48 @@ Body: bonus bVariableCastrate,-5; bonus bSMatk,3; bonus bMatkRate,8; + - Id: 490511 + AegisName: aegis_490511 + Name: Ring of Unknown Hero (Novice) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Novice: true + SuperNovice: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490512 + AegisName: aegis_490512 + Name: "[Not For Sale] Ring of Unknown Hero (Novice)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Novice: true + SuperNovice: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; - Id: 490514 AegisName: aegis_490514 Name: "[Not For Sale] Palace Ring" @@ -204476,6 +210010,67 @@ Body: bonus bDelayrate,-3; bonus bAtkRate,6; bonus bMatkRate,6; + - Id: 490517 + AegisName: Pray_Dusk_Bell + Name: Evening Bell of Prayer (Elemental Master) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490521 + AegisName: aegis_490521 + Name: Ring of Unknown Hero (Minstrel&Wanderer) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + BardDancer: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490522 + AegisName: aegis_490522 + Name: "[NFS] Ring of Unknown Hero (Minstrel&Wanderer)" # Name too long + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + BardDancer: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; - Id: 490523 AegisName: aegis_490523 Name: Duelist Gold Coin @@ -204515,6 +210110,399 @@ Body: bonus bNoMadoFuel; bonus2 bSkillAtk,"MT_SPARK_BLASTER",BaseLevel/10; bonus2 bSkillAtk,"MT_TRIPLE_LASER",BaseLevel/10; + - Id: 490525 + AegisName: P_Dusk_B_Cardinal + Name: Evening Bell of Prayer (Cardinal) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490531 + AegisName: aegis_490531 + Name: Ring of Unknown Hero (Mechanic) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Blacksmith: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490532 + AegisName: aegis_490532 + Name: "[Not For Sale] Ring of Unknown Hero (Mechanic)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Blacksmith: true + Classes: + All_Third: true + Fourth: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490534 + AegisName: P_Dusk_B_InQu + Name: Evening Bell of Prayer (Inquisitor) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490535 + AegisName: HYOUSENSOU_Page + Name: Secret Technique - Chained Ice Array + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + KagerouOboro: true + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bSMatk,5; + bonus2 bSkillAtk,"NJ_HYOUSENSOU",50; + bonus2 bMagicAtkEle,Ele_Water,15; + bonus bVariableCastrate,-(BaseLevel/30); + bonus bMatk,10*(BaseLevel/30); + bonus bMatkRate,BaseLevel/30; + if (getskilllv("NJ_HYOUSENSOU") == 10) + bonus4 bAutoSpellOnSkill,"NJ_HYOUSENSOU","WL_JACKFROST",5,1000; + - Id: 490536 + AegisName: HUUJIN_Page + Name: Secret Technique - Thousands of Birds + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + KagerouOboro: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bSMatk,5; + bonus2 bSkillAtk,"NJ_HUUJIN",50; + bonus2 bMagicAtkEle,Ele_Wind,15; + bonus bVariableCastrate,-(BaseLevel/30); + bonus bMatk,10*(BaseLevel/30); + bonus bMatkRate,BaseLevel/30; + if (getskilllv("NJ_HUUJIN") == 10) + bonus4 bAutoSpellOnSkill,"NJ_HUUJIN","WL_CHAINLIGHTNING",5,1000; + - Id: 490537 + AegisName: aegis_490537 + Name: Bomber Glove + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Archer: true + Hunter: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + bonus bInt,3; + bonus bDex,3; + bonus bMaxSP,50; + bonus2 bSkillAtk,"HT_BLASTMINE",BaseLevel/2; + bonus2 bSkillAtk,"HT_CLAYMORETRAP",BaseLevel/2; + bonus2 bSkillAtk,"HT_LANDMINE",BaseLevel/2; + autobonus "{ bonus bSpeedRate,50; }",50,60000,BF_WEAPON; + - Id: 490538 + AegisName: aegis_490538 + Name: "[Not For Sale] Bomber Glove" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Archer: true + Hunter: true + Locations: + Both_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 70 + Script: | + bonus bInt,3; + bonus bDex,3; + bonus bMaxSP,50; + bonus2 bSkillAtk,"HT_BLASTMINE",BaseLevel/2; + bonus2 bSkillAtk,"HT_CLAYMORETRAP",BaseLevel/2; + bonus2 bSkillAtk,"HT_LANDMINE",BaseLevel/2; + autobonus "{ bonus bSpeedRate,50; }",50,60000,BF_WEAPON; + - Id: 490539 + AegisName: aegis_490539 + Name: Ring of Unknown Hero (Summoner) + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Spirit_Handler: true + Summoner: true + Locations: + Right_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490540 + AegisName: aegis_490540 + Name: "[Not For Sale] Ring of Unknown Hero (Summoner)" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Spirit_Handler: true + Summoner: true + Locations: + Right_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 100 + Script: | + bonus bDelayrate,-3; + bonus bAtkRate,6; + bonus bMatkRate,6; + - Id: 490541 + AegisName: P_Dusk_B_Sha_Cro + Name: Evening Bell of Prayer (Shadow Cross) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490544 + AegisName: aegis_490544 + Name: Overdrive Rampage + Type: Armor + Weight: 100 + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bAspdRate,15; + bonus2 bSubRace,RC_Player_Doram,3; + bonus2 bSubRace,RC_Player_Human,3; + bonus2 bAddSize,Size_All,15; + bonus2 bMagicAddSize,Size_All,15; + bonus bAtkRate,BaseLevel/5; + bonus bMatkRate,BaseLevel/5; + - Id: 490545 + AegisName: aegis_490545 + Name: Overdrive Rampage + Type: Armor + Weight: 100 + Slots: 1 + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bAspdRate,15; + bonus2 bSubRace,RC_Player_Doram,3; + bonus2 bSubRace,RC_Player_Human,3; + bonus2 bAddSize,Size_All,15; + bonus2 bMagicAddSize,Size_All,15; + bonus bAtkRate,BaseLevel/5; + bonus bMatkRate,BaseLevel/5; + - Id: 490546 + AegisName: P_Dusk_B_MT + Name: Evening Bell of Prayer (Meister) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490547 + AegisName: P_Dusk_B_BI + Name: Evening Bell of Prayer (Biolo) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490548 + AegisName: P_Dusk_B_ABC + Name: Evening Bell of Prayer (Abyss Chaser) + Type: Armor + Weight: 100 + Defense: 40 + Slots: 1 + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 200 + Script: | + bonus bMdef,10; + bonus2 bAddSize,Size_All,8; + bonus2 bMagicAddSize,Size_All,8; + - Id: 490555 + AegisName: aegis_490555 + Name: Fairy's Necklace + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Novice: true + SuperNovice: true + Locations: + Both_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 50 + Script: | + bonus bStr,2; + bonus bInt,2; + bonus bLuk,2; + if (readparam(bStr)>=90) + bonus2 bAddSize,Size_All,10; + if (readparam(bAgi)>=90) + bonus bAspd,1; + if (readparam(bVit)>=90) + bonus bMaxHPrate,10; + if (readparam(bInt)>=90) + bonus bMatkRate,10; + if (readparam(bDex)>=90) + bonus bPerfectHitAddRate,10; + if (readparam(bLuk)>=90) + bonus bCritAtkRate,10; + - Id: 490556 + AegisName: aegis_490556 + Name: "[Not For Sale] Fairy's Necklace" + Type: Armor + Weight: 100 + Slots: 1 + Jobs: + Novice: true + SuperNovice: true + Locations: + Both_Accessory: true + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + ArmorLevel: 1 + EquipLevelMin: 50 + Script: | + bonus bStr,2; + bonus bInt,2; + bonus bLuk,2; + if (readparam(bStr)>=90) + bonus2 bAddSize,Size_All,10; + if (readparam(bAgi)>=90) + bonus bAspd,1; + if (readparam(bVit)>=90) + bonus bMaxHPrate,10; + if (readparam(bInt)>=90) + bonus bMatkRate,10; + if (readparam(bDex)>=90) + bonus bPerfectHitAddRate,10; + if (readparam(bLuk)>=90) + bonus bCritAtkRate,10; + - Id: 490557 + AegisName: Sesrumnir_Evt_Ring + Name: Sesrumnir Commemoration Ring + Type: Armor + Weight: 100 + Slots: 1 + Locations: + Left_Accessory: true + ArmorLevel: 1 + EquipLevelMin: 100 + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + bonus bMatkRate,5; + bonus bAtkRate,5; + bonus bAspdRate,5; + bonus bVariableCastrate,-5; + bonus bCritical,5; - Id: 500000 AegisName: IDTest_weapon Name: IDTest weapon @@ -204658,7 +210646,7 @@ Body: Jobs: Crusader: true Locations: - Both_Hand: true + Right_Hand: true WeaponLevel: 3 EquipLevelMin: 70 Refineable: true @@ -206800,6 +212788,96 @@ Body: bonus bVariableCastrate,-5; if (.@r>=9) bonus bAtkRate,5; + - Id: 500082 + AegisName: Z_Boost_N_OH_Sword + Name: Boosting Glacier One-Handed Sword + Type: Weapon + SubType: 1hSword + Attack: 197 + MagicAttack: 130 + Range: 1 + Jobs: + Alchemist: true + Assassin: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Novice: true + Rogue: true + SuperNovice: true + Swordman: true + Thief: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bAtkRate,10; + bonus bMatkRate,10; + bonus bBaseAtk,10*(.@r/2); + bonus bMatk,10*(.@r/2); + bonus bVit,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAtkRate,5; + bonus bMatkRate,5; + } + } + - Id: 500083 + AegisName: Z_Boost_P_OH_Sword + Name: Boosting Ice & Snow One-Handed Sword + Type: Weapon + SubType: 1hSword + Attack: 330 + MagicAttack: 220 + Range: 1 + Jobs: + Alchemist: true + Assassin: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Novice: true + Rogue: true + SuperNovice: true + Swordman: true + Thief: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bAtkRate,15; + bonus bMatkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bMatk,12*(.@r/2); + bonus bVit,5*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAtkRate,10; + bonus bMatkRate,10; + } + } - Id: 500092 AegisName: Dimen_IG_Sword Name: Dimensions Imperial Sword @@ -206954,6 +213032,180 @@ Body: } } } + - Id: 500101 + AegisName: Lapier_Furious + Name: Furious Rapier + Type: Weapon + SubType: 1hSword + Weight: 1400 + Attack: 210 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bShortAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",10; + if (.@r>=10) { + bonus bShortAtkRate,10; + if (.@r>=11) { + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bShortAtkRate,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } + - Id: 500102 + AegisName: SharpSword_Furious + Name: Furious Sharp Sword + Type: Weapon + SubType: 1hSword + Weight: 1400 + Attack: 205 + Range: 1 + Slots: 2 + Jobs: + Alchemist: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bCritAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",10; + if (.@r>=10) { + bonus bCritical,10; + if (.@r>=11) { + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bCritAtkRate,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } + - Id: 500103 + AegisName: WhiteSword_Furious + Name: Furious White Sword + Type: Weapon + SubType: 1hSword + Weight: 1200 + Attack: 205 + Range: 1 + Slots: 2 + Jobs: + SuperNovice: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bShortAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",10; + if (.@r>=10) { + bonus bDelayrate,-10; + if (.@r>=11) { + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bShortAtkRate,15; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } - Id: 510001 AegisName: Boost_Dagger Name: Booster Dagger @@ -209624,6 +215876,208 @@ Body: bonus bBaseAtk,(min(BaseLevel,170)*3); } } + - Id: 510123 + AegisName: Z_Boost_N_Sotaedo + Name: Boosting Glacier Sotaedo + Type: Weapon + SubType: Dagger + Attack: 70 + MagicAttack: 157 + Range: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatkRate,5; + bonus bMatk,4*(.@r/2); + bonus bAgi,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-10; + if (.@r>=9) { + bonus bVariableCastrate,-5; + } + } + - Id: 510124 + AegisName: Z_Boost_N_Nindo + Name: Boosting Glacier Nindo + Type: Weapon + SubType: Dagger + Attack: 92 + MagicAttack: 157 + Range: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatkRate,5; + bonus bMatk,4*(.@r/2); + bonus bAgi,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-10; + if (.@r>=9) { + bonus bVariableCastrate,-5; + } + } + - Id: 510125 + AegisName: Z_Boost_N_Dagger + Name: Boosting Glacier Dagger + Type: Weapon + SubType: Dagger + Attack: 157 + MagicAttack: 85 + Range: 1 + Jobs: + Archer: true + Assassin: true + BardDancer: true + Gunslinger: true + Hunter: true + KagerouOboro: true + Ninja: true + Rebellion: true + Rogue: true + SoulLinker: true + Thief: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bMatkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bMatk,10*(.@r/2); + bonus bHit,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bShortAtkRate,7; + } + } + - Id: 510126 + AegisName: Z_Boost_P_Sotaedo + Name: Boosting Ice & Snow Sotaedo + Type: Weapon + SubType: Dagger + Attack: 90 + MagicAttack: 253 + Range: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatkRate,10; + bonus bMatk,6*(.@r/2); + bonus bAgi,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-10; + if (.@r>=9) { + bonus bVariableCastrate,-5; + } + } + - Id: 510127 + AegisName: Z_Boost_P_Nindo + Name: Boosting Ice & Snow Nindo + Type: Weapon + SubType: Dagger + Attack: 114 + MagicAttack: 253 + Range: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatkRate,10; + bonus bMatk,6*(.@r/2); + bonus bAgi,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-10; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-10; + if (.@r>=9) { + bonus bVariableCastrate,-5; + } + } + - Id: 510128 + AegisName: Z_Boost_P_Dagger + Name: Boosting Ice & Snow Dagger + Type: Weapon + SubType: Dagger + Attack: 254 + MagicAttack: 150 + Range: 1 + Jobs: + Archer: true + Assassin: true + BardDancer: true + Gunslinger: true + Hunter: true + KagerouOboro: true + Ninja: true + Rebellion: true + Rogue: true + SoulLinker: true + Thief: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bMatkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bMatk,12*(.@r/2); + bonus bHit,5*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bShortAtkRate,10; + } + } - Id: 510139 AegisName: Dimen_ABC_Knife Name: Dimensions Abyss Knife @@ -210501,6 +216955,72 @@ Body: bonus bAspdRate,5; if (.@r>=9) bonus bAtkRate,5; + - Id: 520034 + AegisName: Z_Boost_N_Axe + Name: Boosting Glacier Axe + Type: Weapon + SubType: 1hAxe + Attack: 210 + Range: 1 + Jobs: + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bCritical,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAspdRate,10; + } + } + - Id: 520035 + AegisName: Z_Boost_P_Axe + Name: Boosting Ice & Snow Axe + Type: Weapon + SubType: 1hAxe + Attack: 339 + Range: 1 + Jobs: + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bCritical,5*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAspdRate,10; + } + } - Id: 530000 AegisName: Boost_Spear Name: Booster Spear @@ -211506,6 +218026,76 @@ Body: bonus bAtkRate,5; bonus bMatkRate,5; } + - Id: 530050 + AegisName: Z_Boost_N_Lance + Name: Boosting Glacier Lance + Type: Weapon + SubType: 1hSpear + Attack: 220 + MagicAttack: 220 + Range: 3 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bMatkRate,15; + bonus bMaxHPrate,2*(.@r/2); + bonus bBaseAtk,8*(.@r/2); + bonus bMatk,8*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-7; + } + } + - Id: 530051 + AegisName: Z_Boost_P_Lance + Name: Boosting Ice & Snow Lance + Type: Weapon + SubType: 1hSpear + Attack: 372 + MagicAttack: 338 + Range: 3 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bMatkRate,15; + bonus bMaxHPrate,4*(.@r/2); + bonus bBaseAtk,12*(.@r/2); + bonus bMatk,12*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-10; + } + } - Id: 530054 AegisName: Dimen_IG_Spear Name: Dimensions Imperial Spear @@ -214004,6 +220594,64 @@ Body: } } } + - Id: 540077 + AegisName: Z_Boost_N_Book + Name: Boosting Glacier Book + Type: Weapon + SubType: Book + Attack: 157 + MagicAttack: 210 + Range: 1 + Jobs: + Sage: true + Classes: + All_Upper: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatkRate,15; + bonus bMaxSPrate,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-7; + } + } + - Id: 540078 + AegisName: Z_Boost_P_Book + Name: Boosting Ice & Snow Book + Type: Weapon + SubType: Book + Attack: 253 + MagicAttack: 338 + Range: 1 + Jobs: + Sage: true + Classes: + All_Upper: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bMatkRate,15; + bonus bMaxSPrate,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-10; + } + } - Id: 540079 AegisName: Dimen_EM_M_Book Name: Dimensions Elemental Magic Book @@ -214529,6 +221177,9 @@ Body: bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",100; bonus2 bSkillAtk,"MG_FIREBOLT",100; bonus2 bSkillAtk,"MG_COLDBOLT",100; + bonus2 bSkillFixedCast,"MG_LIGHTNINGBOLT",2500; + bonus2 bSkillFixedCast,"MG_FIREBOLT",2500; + bonus2 bSkillFixedCast,"MG_COLDBOLT",2500; if (BaseLevel>=210) { bonus bMatkRate,4; bonus bMatk,40; @@ -218641,6 +225292,78 @@ Body: } } } + - Id: 550122 + AegisName: Z_Boost_N_Staff + Name: Boosting Glacier Staff + Type: Weapon + SubType: Staff + Attack: 189 + MagicAttack: 240 + Range: 1 + Jobs: + Acolyte: true + Mage: true + Monk: true + Novice: true + Priest: true + Sage: true + SuperNovice: true + Wizard: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bMatkRate,15; + bonus bMaxHPrate,(.@r/2); + bonus bMatk,8*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-7; + } + } + - Id: 550123 + AegisName: Z_Boost_P_Staff + Name: Boosting Ice & Snow Staff + Type: Weapon + SubType: Staff + Attack: 281 + MagicAttack: 389 + Range: 1 + Jobs: + Acolyte: true + Mage: true + Monk: true + Novice: true + Priest: true + Sage: true + SuperNovice: true + Wizard: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bMatkRate,15; + bonus bMaxHPrate,2*(.@r/2); + bonus bMatk,12*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-10; + } + } - Id: 550130 AegisName: Dimen_CD_Rod Name: Dimensions Saint Rod @@ -219283,6 +226006,131 @@ Body: } } } + - Id: 550148 + AegisName: Stick_Furious + Name: Furious Stick + Type: Weapon + SubType: Staff + Weight: 1100 + Attack: 100 + MagicAttack: 195 + Range: 1 + Slots: 2 + Jobs: + SuperNovice: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus2 bSkillAtk,"HN_HELLS_DRIVE",10; + if (BaseLevel>=210) { + bonus bMatkRate,4; + bonus bMatk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",10; + } + if (BaseLevel>=230) { + bonus2 bMagicAddSize,Size_All,10; + } + if (.@r>=7) { + bonus2 bMagicAtkEle,Ele_Wind,10; + bonus2 bMagicAtkEle,Ele_Earth,10; + if (.@r>=9) { + bonus2 bSkillAtk,"HN_HELLS_DRIVE",10; + if (.@r>=10) { + bonus bDelayrate,-10; + if (.@r>=11) { + bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",15; + bonus2 bSkillAtk,"HN_HELLS_DRIVE",15; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus2 bMagicAtkEle,Ele_Wind,10; + bonus2 bMagicAtkEle,Ele_Earth,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"HN_HELLS_DRIVE",10; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bSMatk,3*(.@r/2); + bonus bMatkRate,3*(.@r/2); + } + } + } + } + - Id: 550150 + AegisName: Specter_Furious + Name: Furious Vision # !todo check english name + Type: Weapon + SubType: Staff + Weight: 1400 + Attack: 100 + MagicAttack: 185 + Range: 1 + Slots: 2 + Jobs: + Wizard: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",5; + if (BaseLevel>=210) { + bonus bMatkRate,4; + bonus bMatk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",5; + } + if (BaseLevel>=230) { + bonus2 bMagicAddSize,Size_All,10; + } + if (.@r>=7) { + bonus2 bMagicAtkEle,Ele_Ghost,10; + bonus2 bMagicAtkEle,Ele_Dark,10; + if (.@r>=9) { + bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",10; + if (.@r>=10) { + bonus bVariableCastrate,-10; + if (.@r>=11) { + bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus2 bMagicAtkEle,Ele_Ghost,10; + bonus2 bMagicAtkEle,Ele_Dark,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",10; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bSMatk,3*(.@r/2); + bonus bMatkRate,3*(.@r/2); + } + } + } + } - Id: 560000 AegisName: Boost_Knuckle Name: Booster Knuckles @@ -220617,6 +227465,64 @@ Body: bonus bBaseAtk,(min(BaseLevel,170)*3); } } + - Id: 560051 + AegisName: Z_Boost_N_Claw + Name: Boosting Glacier Knuckle + Type: Weapon + SubType: Knuckle + Attack: 278 + Range: 1 + Jobs: + Monk: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus2 bFixedCastrate,"CH_SOULCOLLECT",-50; + bonus bMaxHPrate,2*(.@r/2); + bonus bBaseAtk,4*(.@r/2); + bonus bCritical,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAspdRate,7; + } + } + - Id: 560052 + AegisName: Z_Boost_P_Claw + Name: Boosting Ice & Snow Knuckle + Type: Weapon + SubType: Knuckle + Attack: 448 + Range: 1 + Jobs: + Monk: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,20; + bonus2 bFixedCastrate,"CH_SOULCOLLECT",-50; + bonus bMaxHPrate,4*(.@r/2); + bonus bBaseAtk,10*(.@r/2); + bonus bCritical,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAspdRate,10; + } + } - Id: 560060 AegisName: Dimen_IQ_Knuckle Name: Dimensions Judgment Knuckle @@ -220717,6 +227623,123 @@ Body: } } } + - Id: 560067 + AegisName: GaleClaw_Furious + Name: Furious Gale Claw # !todo check english name + Type: Weapon + SubType: Knuckle + Weight: 2000 + Attack: 215 + Range: 1 + Slots: 2 + Jobs: + Monk: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bCritAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",10; + if (.@r>=10) { + bonus bCritical,10; + if (.@r>=11) { + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bCritAtkRate,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } + - Id: 560068 + AegisName: Exterminate_Furious + Name: Furious Annihilation # !todo check english name + Type: Weapon + SubType: Knuckle + Weight: 1800 + Attack: 215 + Range: 1 + Slots: 2 + Jobs: + Monk: true + Classes: + Fourth: true + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bShortAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",10; + if (.@r>=10) { + bonus bPerfectHitAddRate,10; + bonus bCritical,5; + if (.@r>=11) { + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bShortAtkRate,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"IQ_THIRD_PUNISH",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } - Id: 570000 AegisName: Boost_Guitar Name: Booster Guitar @@ -222003,6 +229026,66 @@ Body: } } } + - Id: 570052 + AegisName: Z_Boost_N_instrument + Name: Boosting Glacier Instrument + Type: Weapon + SubType: Musical + Attack: 189 + Range: 1 + Jobs: + BardDancer: true + Classes: + All_Upper: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bVit,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-7; + } + } + - Id: 570053 + AegisName: Z_Boost_P_instrumen + Name: Boosting Ice & Snow Instrument + Type: Weapon + SubType: Musical + Attack: 305 + Range: 1 + Jobs: + BardDancer: true + Classes: + All_Upper: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bVit,4*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-10; + } + } - Id: 570062 AegisName: Dimen_TR_Vilolin Name: Dimensions Musical Violin @@ -222109,6 +229192,134 @@ Body: } } } + - Id: 570072 + AegisName: MetalVilolin_Furious + Name: Furious Metal Violin + Type: Weapon + SubType: Musical + Weight: 1200 + Attack: 100 + MagicAttack: 185 + Range: 1 + Slots: 2 + Jobs: + BardDancer: true + Classes: + Fourth: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"WM_REVERBERATION",70; + bonus2 bSkillAtk,"TR_METALIC_FURY",5; + if (BaseLevel>=210) { + bonus bMatkRate,4; + bonus bMatk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"WM_REVERBERATION",50; + bonus2 bSkillAtk,"TR_METALIC_FURY",5; + } + if (BaseLevel>=230) { + bonus2 bMagicAddSize,Size_All,10; + } + if (.@r>=7) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=9) { + bonus2 bSkillAtk,"TR_METALIC_FURY",10; + if (.@r>=10) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=11) { + bonus2 bSkillAtk,"WM_REVERBERATION",50; + bonus2 bSkillAtk,"TR_METALIC_FURY",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"WM_REVERBERATION",30; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"TR_METALIC_FURY",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bSMatk,3*(.@r/2); + bonus bMatkRate,3*(.@r/2); + } + } + } + } + - Id: 570073 + AegisName: Harp_Furious + Name: Furious Harp + Type: Weapon + SubType: Musical + Weight: 1300 + Attack: 190 + Range: 1 + Slots: 2 + Jobs: + BardDancer: true + Classes: + Fourth: true + Gender: Male + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bLongAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10; + if (.@r>=10) { + bonus bLongAtkRate,10; + if (.@r>=11) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bLongAtkRate,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } - Id: 580000 AegisName: Boost_Whip Name: Booster Whip @@ -223417,6 +230628,66 @@ Body: } } } + - Id: 580053 + AegisName: Z_Boost_N_Whip + Name: Boosting Glacier Whip + Type: Weapon + SubType: Whip + Attack: 230 + Range: 2 + Jobs: + BardDancer: true + Classes: + All_Upper: true + Gender: Female + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bVit,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-7; + } + } + - Id: 580054 + AegisName: Z_Boost_P_Whip + Name: Boosting Ice & Snow Whip + Type: Weapon + SubType: Whip + Attack: 371 + Range: 2 + Jobs: + BardDancer: true + Classes: + All_Upper: true + Gender: Female + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bVit,4*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-10; + } + } - Id: 580061 AegisName: Dimen_TR_Ribbon Name: Dimensions Musical Ribbon @@ -223523,6 +230794,134 @@ Body: } } } + - Id: 580072 + AegisName: MetalWhip_Furious + Name: Furious Metal Whip + Type: Weapon + SubType: Whip + Weight: 1200 + Attack: 100 + MagicAttack: 185 + Range: 2 + Slots: 2 + Jobs: + BardDancer: true + Classes: + Fourth: true + Gender: Female + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"WM_REVERBERATION",70; + bonus2 bSkillAtk,"TR_METALIC_FURY",5; + if (BaseLevel>=210) { + bonus bMatkRate,4; + bonus bMatk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"WM_REVERBERATION",50; + bonus2 bSkillAtk,"TR_METALIC_FURY",5; + } + if (BaseLevel>=230) { + bonus2 bMagicAddSize,Size_All,10; + } + if (.@r>=7) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=9) { + bonus2 bSkillAtk,"TR_METALIC_FURY",10; + if (.@r>=10) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@r>=11) { + bonus2 bSkillAtk,"WM_REVERBERATION",50; + bonus2 bSkillAtk,"TR_METALIC_FURY",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus2 bMagicAtkEle,Ele_All,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"WM_REVERBERATION",30; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"TR_METALIC_FURY",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bSMatk,3*(.@r/2); + bonus bMatkRate,3*(.@r/2); + } + } + } + } + - Id: 580073 + AegisName: Whip_Furious + Name: Furious Whip + Type: Weapon + SubType: Whip + Weight: 1200 + Attack: 190 + Range: 2 + Slots: 2 + Jobs: + BardDancer: true + Classes: + Fourth: true + Gender: Female + Locations: + Right_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",5; + if (BaseLevel>=210) { + bonus bAtkRate,4; + bonus bBaseAtk,40; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bLongAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10; + if (.@r>=10) { + bonus bLongAtkRate,10; + if (.@r>=11) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bLongAtkRate,10; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",5; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10; + bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,3*(.@r/2); + bonus bAtkRate,3*(.@r/2); + } + } + } + } - Id: 590000 AegisName: Boost_Hall Name: Booster Mace @@ -225332,6 +232731,85 @@ Body: bonus bAtkRate,5; bonus bMatkRate,5; } + - Id: 590067 + AegisName: Z_Boost_N_Mace + Name: Boosting Glacier Mace + Type: Weapon + SubType: Mace + Attack: 157 + MagicAttack: 210 + Range: 1 + Jobs: + Acolyte: true + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Monk: true + Priest: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bMatkRate,2*(.@r/2); + bonus bMaxHPrate,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-7; + } + } + - Id: 590068 + AegisName: Z_Boost_P_Mace + Name: Boosting Ice & Snow Mace + Type: Weapon + SubType: Mace + Attack: 253 + MagicAttack: 338 + Range: 1 + Jobs: + Acolyte: true + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Monk: true + Priest: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bMatkRate,15; + bonus bMatk,10*(.@r/2); + bonus bMaxHPrate,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreMdefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bVariableCastrate,-10; + } + } - Id: 590079 AegisName: Dimen_MT_Mace Name: Dimensions Mechanical Mace @@ -225435,6 +232913,42 @@ Body: } } } + - Id: 590084 + AegisName: aegis_590084 + Name: Orc Mace + Type: Weapon + SubType: Mace + Weight: 800 + Attack: 180 + Range: 1 + Slots: 2 + Jobs: + Acolyte: true + Alchemist: true + Blacksmith: true + Crusader: true + Knight: true + Merchant: true + Monk: true + Novice: true + Priest: true + SuperNovice: true + Swordman: true + Locations: + Right_Hand: true + WeaponLevel: 4 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bBaseAtk,40*(.@r/3); + if (.@r>=6) { + bonus2 bAddRace,RC_All,10; + if (.@r>=9) { + bonus2 bAddRace,RC_All,15; + bonus3 bAutoSpell,"WS_OVERTHRUSTMAX",5,50; + } + } - Id: 590087 AegisName: Hammer_Furious Name: Hammer of Wrath # !todo check english name @@ -226520,6 +234034,67 @@ Body: } } } + - Id: 600045 + AegisName: Z_Boost_N_Sword + Name: Boosting Glacier Sword + Type: Weapon + SubType: 2hSword + Attack: 337 + Range: 1 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + if (.@r>=6) { + bonus bShortAtkRate,10; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAspdRate,15; + } + } + } + - Id: 600046 + AegisName: Z_Boost_P_Sword + Name: Boosting Ice & Snow Sword + Type: Weapon + SubType: 2hSword + Attack: 543 + Range: 1 + Jobs: + Crusader: true + Knight: true + Swordman: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,25; + bonus bBaseAtk,15*(.@r/2); + if (.@r>=6) { + bonus bShortAtkRate,15; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bAspdRate,15; + } + } + } - Id: 600054 AegisName: Dimen_DK_T_Sword Name: Dimensions Dragon Sword @@ -228000,6 +235575,64 @@ Body: bonus bBaseAtk,(min(BaseLevel,170)*3); } } + - Id: 610057 + AegisName: Z_Boost_N_Katar + Name: Boosting Glacier Katar + Type: Weapon + SubType: Katar + Attack: 252 + Range: 1 + Jobs: + Assassin: true + Classes: + All_Upper: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bMaxHPrate,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bShortAtkRate,7; + } + } + - Id: 610058 + AegisName: Z_Boost_P_Katar + Name: Boosting Ice & Snow Katar + Type: Weapon + SubType: Katar + Attack: 406 + Range: 1 + Jobs: + Assassin: true + Classes: + All_Upper: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,15*(.@r/2); + bonus bMaxHPrate,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bShortAtkRate,10; + } + } - Id: 610064 AegisName: Dimen_SHC_Katar Name: Dimensions Shadow Katar @@ -231688,6 +239321,72 @@ Body: } } } + - Id: 640053 + AegisName: Flame_Staff_Furious + Name: Furious Flame Staff # !todo check english name + Type: Weapon + SubType: 2hStaff + Weight: 2000 + Attack: 100 + MagicAttack: 270 + Range: 1 + Slots: 2 + Jobs: + Wizard: true + Classes: + Fourth: true + Locations: + Both_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus2 bSkillAtk,"AG_FLORAL_FLARE_ROAD",10; + if (BaseLevel>=210) { + bonus bMatkRate,7; + bonus bMatk,70; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"AG_CRIMSON_ARROW",5; + bonus2 bSkillAtk,"AG_CRIMSON_ARROW_ATK",5; + } + if (BaseLevel>=230) { + bonus2 bMagicAddSize,Size_All,10; + } + if (.@r>=7) { + bonus2 bMagicAtkEle,Ele_Fire,10; + if (.@r>=9) { + bonus2 bSkillAtk,"AG_FLORAL_FLARE_ROAD",10; + bonus2 bSkillAtk,"AG_CRIMSON_ARROW",10; + bonus2 bSkillAtk,"AG_CRIMSON_ARROW_ATK",10; + if (.@r>=10) { + bonus bVariableCastrate,-10; + if (.@r>=11) { + bonus2 bSkillAtk,"AG_FLORAL_FLARE_ROAD",10; + bonus2 bSkillAtk,"AG_CRIMSON_ARROW",10; + bonus2 bSkillAtk,"AG_CRIMSON_ARROW_ATK",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus2 bMagicAtkEle,Ele_Fire,15; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"AG_FLORAL_FLARE_ROAD",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"AG_CRIMSON_ARROW",10; + bonus2 bSkillAtk,"AG_CRIMSON_ARROW_ATK",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bSMatk,4*(.@r/2); + bonus bMatkRate,4*(.@r/2); + } + } + } + } - Id: 650000 AegisName: Woe_Huuma1_Z Name: Lesser Guild Member's Huuma Shuriken @@ -232732,6 +240431,64 @@ Body: bonus bMatk,(min(BaseLevel,170)*3); } } + - Id: 650044 + AegisName: Z_Boost_N_Huuma + Name: Boosting Glacier Shuriken + Type: Weapon + SubType: Huuma + Attack: 304 + Range: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bStr,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bLongAtkRate,7; + } + } + - Id: 650045 + AegisName: Z_Boost_P_Huuma + Name: Boosting Ice & Snow Shuriken + Type: Weapon + SubType: Huuma + Attack: 455 + Range: 1 + Jobs: + KagerouOboro: true + Ninja: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bUnbreakableWeapon; + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bStr,4*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus bLongAtkRate,10; + } + } - Id: 650046 AegisName: Dimen_SS_Humma Name: Dimensions Moonlight Huuma Shuriken @@ -235079,6 +242836,66 @@ Body: } } } + - Id: 700081 + AegisName: Z_Boost_N_Bow + Name: Boosting Glacier Bow + Type: Weapon + SubType: Bow + Attack: 189 + Range: 5 + Jobs: + Archer: true + BardDancer: true + Hunter: true + Rogue: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bDef,20*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 700082 + AegisName: Z_Boost_P_Bow + Name: Boosting Ice & Snow Bow + Type: Weapon + SubType: Bow + Attack: 281 + Range: 5 + Jobs: + Archer: true + BardDancer: true + Hunter: true + Rogue: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bDef,25*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } - Id: 700092 AegisName: Dimen_ABC_Bow Name: Dimensions Abyss Bow @@ -236145,6 +243962,62 @@ Body: } } } + - Id: 800036 + AegisName: Z_Boost_N_Revolber + Name: Boosting Glacier Revolver + Type: Weapon + SubType: Revolver + Attack: 200 + Range: 7 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bVit,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 800037 + AegisName: Z_Boost_P_Revolver + Name: Boosting Ice & Snow Revolver + Type: Weapon + SubType: Revolver + Attack: 283 + Range: 7 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bVit,4*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } - Id: 810000 AegisName: Ep172_1h_Rifle Name: Lust Pointer @@ -236835,6 +244708,64 @@ Body: } } } + - Id: 810037 + AegisName: Z_Boost_N_Rifle + Name: Boosting Glacier Rifle + Type: Weapon + SubType: Rifle + Attack: 289 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,4*(.@r/2); + bonus bMaxHPrate,.@r/2; + bonus bCritical,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 810038 + AegisName: Z_Boost_P_Rifle + Name: Boosting Ice & Snow Rifle + Type: Weapon + SubType: Rifle + Attack: 381 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,5*(.@r/2); + bonus bMaxHPrate,2*(.@r/2); + bonus bCritical,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } - Id: 810040 AegisName: Dimen_NW_Rifle Name: Dimensions Night Rifle @@ -236885,6 +244816,64 @@ Body: } } } + - Id: 810042 + AegisName: Rifle_Furious + Name: Furious Rifle # !todo check english name + Type: Weapon + SubType: Rifle + Weight: 2400 + Attack: 250 + Range: 9 + Slots: 2 + Jobs: + Rebellion: true + Classes: + Fourth: true + Locations: + Both_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",5; + if (BaseLevel>=210) { + bonus bAtkRate,7; + bonus bBaseAtk,70; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bCritAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",10; + if (.@r>=10) { + bonus bCritical,10; + if (.@r>=11) { + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bCritAtkRate,15; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,4*(.@r/2); + bonus bAtkRate,4*(.@r/2); + } + } + } + } - Id: 820000 AegisName: Ep172_1h_Shotgun Name: Lust Shatter @@ -237490,6 +245479,64 @@ Body: } } } + - Id: 820030 + AegisName: Z_Boost_N_Shotgun + Name: Boosting Glacier Shotgun + Type: Weapon + SubType: Shotgun + Attack: 323 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSplashRange,1; + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bMaxHPrate,.@r/2; + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 820031 + AegisName: Z_Boost_P_Shotgun + Name: Boosting Ice & Snow Shotgun + Type: Weapon + SubType: Shotgun + Attack: 478 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bSplashRange,1; + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bMaxHPrate,2*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } - Id: 830000 AegisName: Boost_Gatling Name: Booster Gatling @@ -238292,6 +246339,120 @@ Body: } } } + - Id: 830034 + AegisName: Z_Boost_N_Gatling + Name: Boosting Glacier Minigun + Type: Weapon + SubType: Gatling + Attack: 288 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bDef,15*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 830035 + AegisName: Z_Boost_P_Gatling + Name: Boosting Ice & Snow Minigun + Type: Weapon + SubType: Gatling + Attack: 431 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,12*(.@r/2); + bonus bDef,20*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 830038 + AegisName: Gatling_Furious + Name: Furious Knight Gatling Gun # !todo check english name + Type: Weapon + SubType: Gatling + Weight: 3200 + Attack: 330 + Range: 9 + Slots: 2 + Jobs: + Rebellion: true + Classes: + Fourth: true + Locations: + Both_Hand: true + WeaponLevel: 5 + EquipLevelMin: 205 + Refineable: true + Gradable: true + Script: | + .@g = getenchantgrade(); + .@r = getrefine(); + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",10; + if (BaseLevel>=210) { + bonus bAtkRate,7; + bonus bBaseAtk,70; + } + if (BaseLevel>=220) { + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",5; + } + if (BaseLevel>=230) { + bonus2 bAddSize,Size_All,10; + } + if (.@r>=7) { + bonus bLongAtkRate,10; + if (.@r>=9) { + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",10; + if (.@r>=10) { + bonus bDelayrate,-10; + if (.@r>=11) { + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",10; + } + } + } + } + if (.@g>=ENCHANTGRADE_D) { + bonus bLongAtkRate,15; + if (.@g>=ENCHANTGRADE_C) { + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",5; + if (.@g>=ENCHANTGRADE_B) { + bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",10; + if (.@g>=ENCHANTGRADE_A) { + bonus bPAtk,4*(.@r/2); + bonus bAtkRate,4*(.@r/2); + } + } + } + } - Id: 840000 AegisName: Ep172_1h_Grenade Name: Lust Boom @@ -238859,7 +247020,7 @@ Body: Refineable: true - Id: 840027 AegisName: aegis_840027 - Name: Level 5 Grenade Launcher # !todo check english name + Name: 5Lv Grenade Launcher Type: Weapon SubType: Grenade Attack: 10 @@ -238918,6 +247079,62 @@ Body: } } } + - Id: 840030 + AegisName: Z_Boost_N_Launcher + Name: Boosting Glacier Launcher + Type: Weapon + SubType: Grenade + Attack: 358 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,8*(.@r/2); + bonus bHit,3*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } + - Id: 840031 + AegisName: Z_Boost_P_Launcher + Name: Boosting Ice & Snow Launcher + Type: Weapon + SubType: Grenade + Attack: 532 + Range: 9 + Jobs: + Gunslinger: true + Rebellion: true + Locations: + Both_Hand: true + WeaponLevel: 3 + EquipLevelMin: 1 + Refineable: true + Script: | + .@r = getrefine(); + bonus bAtkRate,15; + bonus bBaseAtk,10*(.@r/2); + bonus bHit,5*(.@r/2); + if (.@r>=7) { + bonus2 bIgnoreDefRaceRate,RC_All,25; + bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-25; + bonus2 bIgnoreDefRaceRate,RC_Player_Human,-25; + if (.@r>=9) { + bonus2 bSubSize,Size_All,7; + } + } - Id: 840032 AegisName: Dimen_NW_Launcher Name: Dimensions Night Launcher diff --git a/db/re/item_db_etc.yml b/db/re/item_db_etc.yml index d1bff89a58..f8d0608f59 100644 --- a/db/re/item_db_etc.yml +++ b/db/re/item_db_etc.yml @@ -14232,7 +14232,7 @@ Body: Type: Card SubType: Enchant Script: | - autobonus2 "{ bonus bStr,200; bonus2 bHPLossRate,500,1000; }",20,5000,BF_WEAPON,"{ active_transform 1060,5000; specialeffect2 EF_POTION_BERSERK; showscript \"Bigfoot Power !\"; }"; + autobonus2 "{ bonus bStr,200; bonus2 bHPLossRate,500,1000; }",20,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; UnEquipScript: | heal 0,-300; - Id: 4876 @@ -29172,21 +29172,18 @@ Body: Type: Etc Buy: 5 Weight: 1 - Attack: 10 - Id: 7664 AegisName: Shooting_Mine Name: Grenade Launcher Type: Etc Buy: 30 Weight: 1 - Attack: 10 - Id: 7665 AegisName: Dragon_Tail_Missile Name: Dragon Tail Missile Type: Etc Buy: 15 Weight: 1 - Attack: 10 - Id: 7666 AegisName: TimeTravel_Scroll Name: Time Travel Scroll @@ -43794,13 +43791,131 @@ Body: Script: | bonus2 bWeaponDamageRate,W_BOW,10; bonus bCritical,10; + - Id: 29127 + AegisName: Mana_Vermilion + Name: Red Lotus + Type: Card + SubType: Enchant + Script: | + bonus2 bAddEle,Ele_Fire,10; + bonus2 bMagicAtkEle,Ele_Fire,10; + bonus2 bSubEle,Ele_Fire,5; + - Id: 29128 + AegisName: Mana_Braze + Name: Brass + Type: Card + SubType: Enchant + Script: | + bonus2 bAddEle,Ele_Water,10; + bonus2 bMagicAtkEle,Ele_Water,10; + bonus2 bSubEle,Ele_Water,5; + - Id: 29129 + AegisName: Mana_Chrome + Name: Silver + Type: Card + SubType: Enchant + Script: | + bonus2 bAddEle,Ele_Wind,10; + bonus2 bMagicAtkEle,Ele_Wind,10; + bonus2 bSubEle,Ele_Wind,5; + - Id: 29130 + AegisName: Mana_Twilight + Name: Dusk + Type: Card + SubType: Enchant + Script: | + bonus2 bAddEle,Ele_Earth,10; + bonus2 bMagicAtkEle,Ele_Earth,10; + bonus2 bSubEle,Ele_Earth,5; + - Id: 29131 + AegisName: Mana_Chaos + Name: Chaos + Type: Card + SubType: Enchant + Script: | + bonus2 bAddEle,Ele_Dark,10; + bonus2 bMagicAtkEle,Ele_Dark,10; + bonus2 bSubEle,Ele_Dark,5; + - Id: 29132 + AegisName: Mana_Rise + Name: Dawn + Type: Card + SubType: Enchant + Script: | + bonus2 bAddEle,Ele_Holy,10; + bonus2 bMagicAtkEle,Ele_Holy,10; + bonus2 bSubEle,Ele_Holy,5; + - Id: 29133 + AegisName: Mana_Heal + Name: Recover + Type: Card + SubType: Enchant + Script: | + bonus bHealPower,10; + bonus bHealPower2,10; + bonus bAddItemHealRate,10; + - Id: 29134 + AegisName: Heart_Of_Winner + Name: Thoughts of a Champion + Type: Card + SubType: Enchant + Script: | + bonus2 bAddRace,RC_DemiHuman,5; + bonus2 bMagicAddRace,RC_DemiHuman,5; + - Id: 29135 + AegisName: Keen1 + Name: Sharp 1 + Type: Card + SubType: Enchant + Script: | + bonus bCritical,3; + bonus bCritAtkRate,1; + - Id: 29136 + AegisName: Keen2 + Name: Sharp 2 + Type: Card + SubType: Enchant + Script: | + bonus bCritical,6; + bonus bCritAtkRate,2; + - Id: 29137 + AegisName: Keen3 + Name: Sharp 3 + Type: Card + SubType: Enchant + Script: | + bonus bCritical,9; + bonus bCritAtkRate,3; + - Id: 29138 + AegisName: Keen4 + Name: Sharp 4 + Type: Card + SubType: Enchant + Script: | + bonus bCritical,12; + bonus bCritAtkRate,4; + - Id: 29139 + AegisName: Keen5 + Name: Sharp 5 + Type: Card + SubType: Enchant + Script: | + bonus bCritical,15; + bonus bCritAtkRate,5; - Id: 29140 AegisName: Orcish_Hero_Of_Anger Name: Anger of the Brave Type: Card SubType: Enchant Script: | - autobonus "{ bonus3 bAutoSpell,\"NPC_EARTHQUAKE\",3,1000; }",5,5000,BF_NORMAL,"{ active_transform 1850,5000; }"; + autobonus "{ bonus3 bAutoSpell,\"NPC_EARTHQUAKE\",3,1000; }",8,5000,BF_WEAPON,"{ active_transform 1850,5000; }"; + - Id: 29141 + AegisName: Roar_Of_Baphomet + Name: Demon Sheep's Roar + Type: Card + SubType: Enchant + Script: | + autobonus "{ bonus3 bAutoSpell,\"NPC_HELLJUDGEMENT\",6,1000; }",8,5000,BF_WEAPON,"{ active_transform 1929,5000; }"; - Id: 29142 AegisName: Electric_Effect Name: Electric Effect @@ -46274,25 +46389,39 @@ Body: bonus2 bSkillAtk,"SC_FATALMENACE",15; - Id: 29619 AegisName: Shadowchaser_Bottom2 - Name: Shadow Chaser Stone II (Bottom) + Name: Stalker Stone II (Lower) Type: Card SubType: Enchant Script: | bonus bHit,getskilllv("TF_MISS"); - Id: 29620 AegisName: Shadowchaser_Middle2 - Name: Shadow Chaser Stone II (Middle) + Name: Stalker Stone II (Middle) Type: Card SubType: Enchant Script: | bonus2 bSkillAtk,"RG_BACKSTAP",15; - Id: 29621 AegisName: Shadowchaser_Top2 - Name: Shadow Chaser Stone II (Upper) + Name: Stalker Stone II (Upper) Type: Card SubType: Enchant Script: | bonus bBaseAtk,2*getskilllv("RG_SNATCHER"); + - Id: 29647 + AegisName: Lucky_Amulet7 + Name: Traitor + Type: Card + SubType: Enchant + Script: | + if (readparam(bStr)>=110) + bonus2 bSkillCooldown,"RL_SLUGSHOT",-10000; + if (readparam(bAgi)>=110) + bonus2 bSkillAtk,"RL_R_TRIP",30*(readparam(bAgi)/5); + if (readparam(bInt)>=110) + bonus2 bSkillCooldown,"RL_HAMMER_OF_GOD",-20000; + if (readparam(bLuk)>=110) + bonus2 bSkillAtk,"RL_D_TAIL",30*(readparam(bLuk)/5); - Id: 29651 AegisName: Soullinker_Top Name: Soul Linker Stone (Upper) @@ -48585,7 +48714,7 @@ Body: bonus bHit,-50; - Id: 300140 AegisName: ILL_Sropho_Card - Name: Deep Sea Sropho Card + Name: Abysmal Sropho Card Type: Card Weight: 10 Locations: @@ -48603,7 +48732,7 @@ Body: } - Id: 300141 AegisName: ILL_Obeaune_Card - Name: Deep Sea Obeaune Card + Name: Abysmal Obeaune Card Type: Card Weight: 10 Locations: @@ -48614,7 +48743,7 @@ Body: bonus bMatk,30; - Id: 300142 AegisName: ILL_Deviace_Card - Name: Deep Sea Deviace Card + Name: Abysmal Deviace Card Type: Card Weight: 10 Locations: @@ -48633,7 +48762,7 @@ Body: } - Id: 300143 AegisName: ILL_Marse_Card - Name: Deep Sea Marse Card + Name: Abysmal Marse Card Type: Card Weight: 10 Locations: @@ -48645,7 +48774,7 @@ Body: bonus2 bSubRace,RC_Insect,15; - Id: 300144 AegisName: ILL_Merman_Card - Name: Deep Sea Merman Card + Name: Abysmal Merman Card Type: Card Weight: 10 Locations: @@ -48656,7 +48785,7 @@ Body: bonus bBaseAtk,4*(readparam(bStr)/15); - Id: 300145 AegisName: ILL_Abysmal_Witch_Card - Name: Deep Sea Witch Card + Name: Abysmal Witch Card Type: Card Weight: 10 Locations: @@ -48669,7 +48798,7 @@ Body: bonus2 bSubEle,Ele_All,-30; - Id: 300146 AegisName: ILL_Sedora_Card - Name: Deep Sea Sedora Card + Name: Abysmal Sedora Card Type: Card Weight: 10 Locations: @@ -48680,7 +48809,7 @@ Body: bonus2 bCriticalAddRace,RC_Fish,30; - Id: 300147 AegisName: ILL_Sword_Fish_Card - Name: Deep Sea Swordfish Card + Name: Abysmal Swordfish Card Type: Card Weight: 10 Locations: @@ -48696,7 +48825,7 @@ Body: } - Id: 300148 AegisName: ILL_Strouf_Card - Name: Deep Sea Strouf Card + Name: Abysmal Strouf Card Type: Card Weight: 10 Locations: @@ -48712,7 +48841,7 @@ Body: } - Id: 300149 AegisName: ILL_Phen_Card - Name: Deep Sea Phen Card + Name: Abysmal Phen Card Type: Card Weight: 10 Locations: @@ -48724,7 +48853,7 @@ Body: bonus2 bMagicAtkEle,Ele_Wind,3*getrefine(); - Id: 300150 AegisName: ILL_King_Dramoh_Card - Name: Deep Sea King Dramoh Card + Name: Abysmal King Dramoh Card Type: Card Weight: 10 Locations: @@ -48738,7 +48867,7 @@ Body: bonus bAtkRate,(getrefine()/3); - Id: 300151 AegisName: ILL_Kraken_Card - Name: Deep Sea Kraken Card + Name: Abysmal Kraken Card Type: Card Weight: 10 Locations: @@ -50467,8 +50596,8 @@ Body: Script: | bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_DemiHuman,40; - bonus3 bSubRace,RC_Demon,-30,BF_NORMAL; - bonus3 bSubRace,RC_DemiHuman,-30,BF_NORMAL; + bonus3 bSubRace,RC_Demon,-30,BF_WEAPON; + bonus3 bSubRace,RC_DemiHuman,-30,BF_WEAPON; - Id: 300281 AegisName: R001_Bestia_Card Name: R001-Bestia Card @@ -53631,6 +53760,20 @@ Body: bonus bMaxHPrate,-15; bonus bPAtk,.@r; bonus bAtkRate,.@r; + - Id: 300549 + AegisName: aegis_300549 + Name: Summer Vacation Pope Card + Type: Card + Weight: 10 + Locations: + Left_Accessory: true + Flags: + BuyingStore: true + DropEffect: CLIENT + Script: | + bonus bShortAtkRate,3; + bonus bLongAtkRate,3; + bonus2 bMagicAtkEle,Ele_All,3; - Id: 310000 AegisName: Ranger_Top2 Name: Sniper Stone II (Top) @@ -81508,6 +81651,229 @@ Body: bonus bCritAtkRate,(.@param/10); bonus bCritical,(.@param/10); } + - Id: 313269 + AegisName: aegis_313269 + Name: Latent Release (Abyss Chaser VII) + Type: Card + SubType: Enchant + - Id: 313289 + AegisName: aegis_313289 + Name: Latent Awakening (Duple Light I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"AB_DUPLELIGHT_MELEE",BaseLevel*2; + bonus2 bSkillAtk,"AB_DUPLELIGHT_MAGIC",BaseLevel*2; + - Id: 313290 + AegisName: aegis_313290 + Name: Latent Awakening (Counter Slash I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"GC_COUNTERSLASH",BaseLevel/10; + - Id: 313292 + AegisName: aegis_313292 + Name: Latent Awakening (Rolling Cutter II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"GC_ROLLINGCUTTER",BaseLevel/2; + - Id: 313293 + AegisName: aegis_313293 + Name: Latent Awakening (Cross Slash II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"KO_JYUMONJIKIRI",BaseLevel/3; + - Id: 313294 + AegisName: aegis_313294 + Name: Latent Awakening (Swirling Petal II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"KO_HUUMARANKA",BaseLevel/4; + - Id: 313295 + AegisName: aegis_313295 + Name: Latent Awakening (Shield Press II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"LG_SHIELDPRESS",BaseLevel/2; + - Id: 313296 + AegisName: aegis_313296 + Name: Latent Awakening (Ray of Genesis II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"LG_RAYOFGENESIS",BaseLevel/3; + - Id: 313297 + AegisName: aegis_313297 + Name: Latent Awakening (Severe Rainstorm III) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",BaseLevel/3; + - Id: 313298 + AegisName: aegis_313298 + Name: Latent Awakening (Arms Cannon II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"NC_ARMSCANNON",BaseLevel/5; + - Id: 313299 + AegisName: aegis_313299 + Name: Latent Awakening (Axe Tornado II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"NC_AXETORNADO",BaseLevel/2; + - Id: 313300 + AegisName: aegis_313300 + Name: Latent Awakening (Axe Boomerang II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"NC_AXEBOOMERANG",BaseLevel/2; + - Id: 313301 + AegisName: aegis_313301 + Name: Latent Awakening (Arrow Storm III) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RA_ARROWSTORM",BaseLevel/10; + - Id: 313302 + AegisName: aegis_313302 + Name: Latent Awakening (Aimed Bolt II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RA_AIMEDBOLT",BaseLevel/10; + - Id: 313303 + AegisName: aegis_313303 + Name: Latent Awakening (Ignition Break III) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RK_IGNITIONBREAK",BaseLevel/2; + - Id: 313304 + AegisName: aegis_313304 + Name: Latent Awakening (Slug Shot I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RL_SLUGSHOT",BaseLevel/3; + - Id: 313305 + AegisName: aegis_313305 + Name: Latent Awakening (Hammer of God I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",BaseLevel/3; + - Id: 313306 + AegisName: aegis_313306 + Name: Latent Awakening (Anti-Material Blast I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RL_AM_BLAST",BaseLevel/3; + - Id: 313307 + AegisName: aegis_313307 + Name: Latent Awakening (Round Trip II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RL_R_TRIP",BaseLevel/2; + - Id: 313308 + AegisName: aegis_313308 + Name: Latent Awakening (Fire Rain II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"RL_FIRE_RAIN",BaseLevel/2; + - Id: 313309 + AegisName: aegis_313309 + Name: Latent Awakening (Triangle Shot II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SC_TRIANGLESHOT",BaseLevel/3; + - Id: 313310 + AegisName: aegis_313310 + Name: Latent Awakening (Varetyr Spear II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SO_VARETYR_SPEAR",BaseLevel/3; + - Id: 313311 + AegisName: aegis_313311 + Name: Latent Awakening (Diamond Dust I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SO_DIAMONDDUST",BaseLevel/3; + - Id: 313312 + AegisName: aegis_313312 + Name: Latent Awakening (Earth Grave I) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SO_EARTHGRAVE",BaseLevel/3; + - Id: 313313 + AegisName: aegis_313313 + Name: Latent Awakening (Espa II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SP_SPA",BaseLevel/5; + - Id: 313314 + AegisName: aegis_313314 + Name: Latent Awakening (Eswoo II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SP_SWHOO",BaseLevel/5; + - Id: 313315 + AegisName: aegis_313315 + Name: Latent Awakening (Curse Explosion II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SP_CURSEEXPLOSION",BaseLevel/5; + - Id: 313316 + AegisName: aegis_313316 + Name: Latent Awakening (Lion's Howl II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SR_HOWLINGOFLION",BaseLevel/3; + - Id: 313317 + AegisName: aegis_313317 + Name: Latent Awakening (Sky Blow II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"SR_SKYNETBLOW",BaseLevel/2; + - Id: 313318 + AegisName: aegis_313318 + Name: Latent Awakening (Soul Expansion II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"WL_SOULEXPANSION",BaseLevel/5; + - Id: 313319 + AegisName: aegis_313319 + Name: Latent Awakening (Crimson Rock II) + Type: Card + SubType: Enchant + Script: | + bonus2 bSkillAtk,"WL_CRIMSONROCK",BaseLevel/5; + - Id: 313320 + AegisName: aegis_313320 + Name: Skill Stone (Firewall Lv.10) + Type: Card + SubType: Enchant + Script: | + skill "MG_FIREWALL",10; - Id: 313324 AegisName: Biolo_Robe Name: Biolo Stone (Garment) @@ -82693,6 +83059,42 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true + - Id: 1000284 + AegisName: EpisodClear13 + Name: Eps 13 Clear Ticket + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1000285 + AegisName: EpisodClear14 + Name: Eps 14 Clear Ticket + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1000286 + AegisName: EpisodClear15 + Name: Eps 15 Clear Ticket + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true - Id: 1000287 AegisName: EpisodClear17 Name: Episode 17 Clear Ticket @@ -89429,6 +89831,402 @@ Body: Weight: 1 Flags: BuyingStore: true + - Id: 1001689 + AegisName: R_Snowflower_Armor + Name: Printed Snow Flower Armor + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001690 + AegisName: R_Snowflower_Manteau + Name: Printed Snow Flower Manteau + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001691 + AegisName: R_Snowflower_Boots + Name: Printed Snow Flower Boots + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001692 + AegisName: R_Snowflower_Pendant + Name: Printed Snow Flower Pendant + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001693 + AegisName: R_Snowflower_Necklace + Name: Printed Snow Flower Necklace + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001694 + AegisName: R_Snowflower_Robe + Name: Printed Snow Flower Robe + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001695 + AegisName: R_Snowflower_Muffler + Name: Printed Snow Flower Muffler + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001696 + AegisName: R_Snowflower_Shoes + Name: Printed Snow Flower Shoes + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001697 + AegisName: R_Snowflower_Ring + Name: Printed Snow Flower Ring + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001698 + AegisName: R_Snowflower_Earring + Name: Printed Snow Flower Earring + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001699 + AegisName: R_Glacier_T_Sword + Name: Printed Glacier Two-handed Sword + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001700 + AegisName: R_Glacier_Lance + Name: Printed Glacier Lance + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001701 + AegisName: R_Glacier_Sword + Name: Printed Glacier Sword + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001702 + AegisName: R_Glacier_B_Sword + Name: Printed Glacier Basic Sword + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001703 + AegisName: R_Glacier_Spear + Name: Printed Glacier Spear + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001704 + AegisName: R_Glacier_T_Axe + Name: Printed Glacier Mechanic Axe + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001705 + AegisName: R_Glacier_Axe + Name: Printed Glacier Axe + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001706 + AegisName: R_Glacier_Mace + Name: Printed Glacier Mace + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001707 + AegisName: R_Glacier_M_Mace + Name: Printed Glacier Mechanic Mace + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001708 + AegisName: R_Glacier_R_Knife + Name: Printed Glacier Rogue Knife + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001709 + AegisName: R_Glacier_B_Knife + Name: Printed Glacier Basic Knife + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001710 + AegisName: R_Glacier_Knuckle + Name: Printed Glacier Knuckle + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001711 + AegisName: R_Glacier_Katar + Name: Printed Glacier Katar + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001712 + AegisName: R_Glacier_Bow + Name: Printed Glacier Bow + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001713 + AegisName: R_Glacier_Violin + Name: Printed Glacier Violin + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001714 + AegisName: R_Glacier_Whip + Name: Printed Glacier Whip + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001715 + AegisName: R_Glacier_Humma + Name: Printed Glacier Huuma Shuriken + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001716 + AegisName: R_Glacier_Book + Name: Printed Glacier Book + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001717 + AegisName: R_Glacier_Wand + Name: Printed Glacier Wand + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001718 + AegisName: R_Glacier_Staff + Name: Printed Glacier Staff + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001719 + AegisName: R_Glacier_Foxtail + Name: Printed Glacier Foxtail + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001720 + AegisName: R_Glacier_Revolver + Name: Printed Glacier Revolver + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001721 + AegisName: R_Glacier_Rifle + Name: Printed Glacier Rifle + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001722 + AegisName: R_Glacier_Shotgun + Name: Printed Glacier Shotgun + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001723 + AegisName: R_Glacier_Gatling + Name: Printed Glacier Gatling + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001724 + AegisName: R_Glacier_Launcher + Name: Printed Glacier Launcher + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true - Id: 1001737 AegisName: BioloStone_Robe Name: Biolo Stone (Garment) @@ -89444,6 +90242,38 @@ Body: Name: Spirit Handler Stone (Garment) Type: Etc Weight: 100 + - Id: 1001740 + AegisName: Summer_Ticket + Name: Ocean Week Commemoration Ticket + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001741 + AegisName: Summer_W_Melon + Name: Summer Watermelon + Type: Etc + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001742 + AegisName: aegis_1001742 + Name: Festival Food Bag + Type: Etc + Weight: 10 + Flags: + BuyingStore: true - Id: 1001744 AegisName: Kr_B_Event04 Name: Sweet Strawberry Fresh Cream @@ -89456,6 +90286,42 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true + - Id: 1001753 + AegisName: D_EpisodClear13 + Name: Episode 13 Pass Ticket # !todo check english name + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001755 + AegisName: D_EpisodClear14 + Name: Episode 14 Pass Ticket # !todo check english name + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 1001756 + AegisName: D_EpisodClear15 + Name: Episode 15 Pass Ticket # !todo check english name + Type: Etc + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true - Id: 1200000 AegisName: IDTest_arrow Name: IDTest arrow diff --git a/db/re/item_db_usable.yml b/db/re/item_db_usable.yml index 48620ff20f..f0afc95c3e 100644 --- a/db/re/item_db_usable.yml +++ b/db/re/item_db_usable.yml @@ -4371,6 +4371,38 @@ Body: BuyingStore: true # Script: | # /* TODO */ + - Id: 11636 + AegisName: 24_S_Ev_Lime_Soda + Name: Lime Soda + Type: Healing + Weight: 1 + EquipLevelMin: 90 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + itemheal 1800,0; /* average value */ + - Id: 11637 + AegisName: 24_S_Ev_Berry_Soda + Name: Berry Soda + Type: Healing + Weight: 1 + EquipLevelMin: 90 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + itemheal 0,180; /* average value */ - Id: 11701 AegisName: Girl_Bunch_Of_Flower Name: Girl's Bouquet @@ -5700,7 +5732,6 @@ Body: AegisName: Tropical_Sograt Name: Tropical Sograt Type: Usable - Buy: 1000 Weight: 100 Flags: BuyingStore: true @@ -5710,7 +5741,6 @@ Body: AegisName: Vermilion_The_Beach Name: Vermilion on the Beach Type: Usable - Buy: 1000 Weight: 100 Flags: BuyingStore: true @@ -9511,6 +9541,8 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true + Script: | + callfunc "F_CashSiegeTele2"; - Id: 12416 AegisName: Lucky_Egg_C3 Name: Lucky Egg C3 @@ -11333,7 +11365,7 @@ Body: Type: Usable Weight: 10 Script: | - searchstores 10,0; + searchstores 10, SEARCHSTORE_EFFECT_NORMAL; - Id: 12581 AegisName: Vending_Search_Scroll2 Name: Universal Catalog Gold @@ -11348,7 +11380,7 @@ Body: NoMail: true NoAuction: true Script: | - searchstores 10,1; + searchstores 10, SEARCHSTORE_EFFECT_REMOTE; - Id: 12582 AegisName: Siege_Supply_Box Name: WoE Supply Box @@ -11492,7 +11524,7 @@ Body: NoMail: true NoAuction: true Script: | - searchstores 10,1; + searchstores 10, SEARCHSTORE_EFFECT_REMOTE; - Id: 12592 AegisName: Cyclops_Box1 Name: Cyclops Box1 @@ -14443,14 +14475,15 @@ Body: - Id: 12858 AegisName: Golden_Potion_RG Name: RG Golden Potion - Type: Delayconsume + Type: Usable Weight: 30 Delay: Duration: 1000 Status: Reuse_Limit_F Script: | percentheal 100,100; - itemskill "PR_KYRIE",10; + sc_start SC_KYRIE,100000,10; + skilleffect "PR_KYRIE",0; - Id: 12860 AegisName: Mommy_Day_Cake Name: Mommy Day Cake @@ -51127,8 +51160,8 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true -# Script: | -# /* TODO */ + Script: | + getitem 5464,1; - Id: 17203 AegisName: Free_Pass_Box Name: Free Pass Box @@ -51454,7 +51487,6 @@ Body: Type: Usable Buy: 10 Weight: 10 - Defense: 4 Trade: NoDrop: true NoTrade: true @@ -60448,7 +60480,7 @@ Body: getitem 526,100; /* Royal Jelly */ - Id: 23042 AegisName: Seed_Of_Yggdrasil_ - Name: "[Not For Sale]Yggdrasil Seed" + Name: "[Not For Sale] Yggdrasil Seed" Type: Healing Weight: 300 Delay: @@ -63088,7 +63120,6 @@ Body: AegisName: Vend_Arbeit1_1Lv Name: "[1 Day] Consignment Merchant Envelope Lv1" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63097,7 +63128,6 @@ Body: AegisName: Vend_Arbeit1_2Lv Name: "[1 Day] Consignment Merchant Envelope Lv2" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63106,7 +63136,6 @@ Body: AegisName: Vend_Arbeit1_3Lv Name: "[1 Day] Consignment Merchant Envelope Lv3" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63115,7 +63144,6 @@ Body: AegisName: Buy_Arbeit1_1Lv Name: "[1 Day] Personal Shopper Envelope Lv1" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63124,7 +63152,6 @@ Body: AegisName: Buy_Arbeit1_2Lv Name: "[1 Day] Personal Shopper Envelope Lv2" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63133,7 +63160,6 @@ Body: AegisName: Buy_Arbeit1_3Lv Name: "[1 Day] Personal Shopper Envelope Lv3" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63232,7 +63258,6 @@ Body: AegisName: Vend_Arbeit3_1Lv Name: "[3 Day] Consignment Merchant Envelope Lv1" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63241,7 +63266,6 @@ Body: AegisName: Vend_Arbeit3_2Lv Name: Consignment Merchant Envelope Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63250,7 +63274,6 @@ Body: AegisName: Vend_Arbeit3_3Lv Name: "[3 Day] Consignment Merchant Envelope Lv3" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63259,7 +63282,6 @@ Body: AegisName: Buy_Arbeit3_1Lv Name: "[3 Day] Personal Shopper Envelope Lv1" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63268,7 +63290,6 @@ Body: AegisName: Buy_Arbeit3_2Lv Name: Personal Shopper Envelope Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63277,7 +63298,6 @@ Body: AegisName: Buy_Arbeit3_3Lv Name: "[3 Day] Personal Shopper Envelope Lv3" Type: Usable - Weight: 10 Flags: Container: true Script: | @@ -63383,8 +63403,8 @@ Body: Name: Special Shopper Catalog Type: Usable Weight: 10 -# Script: | -# /* TODO */ + Script: | + searchstores 3, SEARCHSTORE_EFFECT_NORMAL; - Id: 23374 AegisName: Fire_Armor_S Name: Fire Armor Scroll @@ -68474,8 +68494,8 @@ Body: Weight: 10 Flags: BuyingStore: true -# Script: | -# /* TODO */ + Script: | + sc_start SC_EXPBOOST,900000,100; - Id: 100352 AegisName: Real_Battle_Manual Name: Real Combat Manual @@ -68483,8 +68503,9 @@ Body: Weight: 10 Flags: BuyingStore: true -# Script: | -# /* TODO */ + Script: | + sc_start SC_EXPBOOST,3600000,100; + sc_start SC_SPEEDUP0,600000,25; - Id: 100354 AegisName: Auto_Armor_Refine_Cube Name: Automatic Armor +11 Refinement Cube @@ -70337,8 +70358,8 @@ Body: Weight: 50 Flags: BuyingStore: true -# Script: | -# /* TODO */ + Script: | + pet 1198; - Id: 100810 AegisName: BroadcastBox_ Name: Broadcast Box @@ -72633,8 +72654,8 @@ Body: Name: Spring Regulator Type: Usable Weight: 10 -# Script: | -# /* TODO */ + Script: | + item_enchant(24); - Id: 101100 AegisName: Poenetentia_Box3 Name: Poenitentia Two Swords Set Box @@ -73599,6 +73620,7 @@ Body: Flags: BuyingStore: true Script: | + /* TODO : pet 21632; */ pet 1005; - Id: 101336 AegisName: aegis_101336 @@ -76678,23 +76700,31 @@ Body: Script: | item_reform(); - Id: 102128 - AegisName: aegis_102128 + AegisName: All_In_One_buff Name: All-in-One Buff Potion # !todo check english name Type: Usable Weight: 10 Flags: BuyingStore: true -# Script: | -# /* TODO */ + Script: | + specialeffect2 EF_POTION_BERSERK; + sc_start SC_M_DEFSCROLL,3600000,0; + sc_start SC_LIMIT_POWER_BOOSTER,3600000,30; + sc_start SC_INFINITY_DRINK,3600000,0; + sc_start SC_SPEEDUP0,600000,25; - Id: 102129 - AegisName: aegis_102129 + AegisName: All_In_One_Healing Name: All-in-one Healing Potion # !todo check english name Type: Usable Weight: 10 Flags: BuyingStore: true -# Script: | -# /* TODO */ + Script: | + specialeffect2 EF_HEAL3; + sc_start2 SC_S_LIFEPOTION,3600000,-5,5; + sc_start2 SC_L_LIFEPOTION,3600000,-7,4; + sc_start2 SC_M_LIFEPOTION,3600000,-4,3; + sc_start SC_SPEEDUP0,600000,25; - Id: 102193 AegisName: aegis_102193 Name: Costume Enchant Stone Box 30 @@ -78644,6 +78674,103 @@ Body: Name: Costume Enchant Stone Box 35 Type: Usable Weight: 10 + Flags: + Container: true + Script: | + getgroupitem(IG_ENCHANT_STONE_BOX35); + - Id: 103065 + AegisName: 24_S_Ev_Noodle + Name: Summer Festival Noodle + Type: Usable + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 103066 + AegisName: 24_S_Ev_Grilled + Name: Herb Calamari Barbecue + Type: Usable + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 103067 + AegisName: 24_S_Ev_Podding + Name: Sweet Watermelon Pudding + Type: Usable + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 103068 + AegisName: 24_S_Ev_Juice + Name: Cool Watermelon Juice + Type: Usable + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 103069 + AegisName: 24_S_Ev_IceFlake + Name: Cool Red Beans Bingsu + Type: Usable + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 103070 + AegisName: 24_S_Ev_Pop_Corn + Name: Gourmet Butter Popcorn + Type: Usable + Weight: 10 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + - Id: 103071 + AegisName: 24_S_Ev_Ripe_Melon + Name: Ripe Golden Melon + Type: Usable + Weight: 50 + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + percentheal 100,100; - Id: 103095 AegisName: Kr_B_Special10 Name: Love Cake @@ -78656,6 +78783,78 @@ Body: NoGuildStorage: true NoMail: true NoAuction: true + - Id: 103106 + AegisName: Stove_Channeling_Box_1 + Name: Channeling Commemoration Box I + Type: Usable + Weight: 400 + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_STOVE_CHANNELING_BOX_1); + - Id: 103107 + AegisName: Stove_Channeling_Box_2 + Name: Channeling Commemoration Box II + Type: Usable + Weight: 400 + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_STOVE_CHANNELING_BOX_2); + - Id: 103108 + AegisName: Stove_Channeling_Box_3 + Name: Channeling Commemoration Box III + Type: Usable + Weight: 400 + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_STOVE_CHANNELING_BOX_3); + - Id: 103109 + AegisName: Stove_Channeling_Box_4 + Name: Channeling Commemoration Box IV + Type: Usable + Weight: 400 + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoStorage: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_STOVE_CHANNELING_BOX_4); - Id: 200000 AegisName: IDTest_Cash Name: IDTest Cash @@ -80783,6 +80982,8 @@ Body: # Name: (Limited) Nyangvine Fruit Package I (Stone Box 35) Name: (Limited) Nyangvine Fruit Package I (Stone Box 35 Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80792,12 +80993,14 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_LI_NYANGVINE_BOX1_35); - Id: 200406 AegisName: LI_Nyangvine_Box2_35 # Name: (Limited) Nyangvine Fruit Package II (Stone Box 35) Name: (Limited) Nyangvine Fruit Package II (Stone Box 3 Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80807,12 +81010,14 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_LI_NYANGVINE_BOX2_35); - Id: 200407 AegisName: LI_Nyangvine_Box3_35 # Name: (Limited) Nyangvine Fruit Package III (Stone Box 35) Name: (Limited) Nyangvine Fruit Package III (Stone Box Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80822,12 +81027,14 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_LI_NYANGVINE_BOX3_35); - Id: 200411 AegisName: A_Speed_Booster_Box Name: Speed Booster Package Type: Cash Weight: 10 + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80837,12 +81044,14 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_A_SPEED_BOOSTER_BOX); - Id: 200412 AegisName: A_Speed_Booster_10_Box Name: Speed Booster Package 10 Sets Type: Cash Weight: 10 + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80852,11 +81061,13 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_A_SPEED_BOOSTER_10_BOX); - Id: 200415 AegisName: L_Infinity_Power_Pack Name: (Limited) Infinity Power Package Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80866,11 +81077,13 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_L_INFINITY_POWER_PACK); - Id: 200416 AegisName: L_All_Red_Pack Name: (Limited) All Red Package Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80880,11 +81093,13 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_L_ALL_RED_PACK); - Id: 200417 AegisName: L_Defense_Potion_Pack Name: (Limited) Defender Package Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80894,11 +81109,13 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_L_DEFENSE_POTION_PACK); - Id: 200418 AegisName: L_Speed_Force_Pack Name: (Limited) Speed Force Package Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80908,11 +81125,13 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_L_SPEED_FORCE_PACK); - Id: 200419 AegisName: L_Special_Speed_Pack Name: (Limited) Speed Booster Special Package Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80922,11 +81141,13 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_L_SPECIAL_SPEED_PACK); - Id: 200420 AegisName: L_Special_Force_Pack Name: (Limited) Force Booster Special Package Type: Cash + Flags: + Container: true Trade: NoDrop: true NoTrade: true @@ -80936,7 +81157,58 @@ Body: NoMail: true NoAuction: true Script: | - /* TODO */ + getgroupitem(IG_L_SPECIAL_FORCE_PACK); + - Id: 200425 + AegisName: CostumeMilePack_35_1 +# Name: Nyangvine Costume Mileage Package I (Stone Box 35) + Name: Nyangvine Costume Mileage Package I (Stone Box 35 + Type: Cash + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_COSTUMEMILEPACK_35_1); + - Id: 200426 + AegisName: CostumeMilePack_35_2 +# Name: Nyangvine Costume Mileage Package II (Stone Box 35) + Name: Nyangvine Costume Mileage Package II (Stone Box 3 + Type: Cash + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_COSTUMEMILEPACK_35_2); + - Id: 200427 + AegisName: CostumeMilePack_35_3 +# Name: Nyangvine Costume Mileage Package III (Stone Box 35) + Name: Nyangvine Costume Mileage Package III (Stone Box + Type: Cash + Flags: + Container: true + Trade: + NoDrop: true + NoTrade: true + NoSell: true + NoCart: true + NoGuildStorage: true + NoMail: true + NoAuction: true + Script: | + getgroupitem(IG_COSTUMEMILEPACK_35_3); - Id: 1100000 AegisName: IDTest_heal Name: IDTest heal diff --git a/db/re/item_enchant.yml b/db/re/item_enchant.yml index b0f841e190..ec0d9d3249 100644 --- a/db/re/item_enchant.yml +++ b/db/re/item_enchant.yml @@ -32187,6 +32187,20 @@ Body: Grimoire_Furious: true Soul_Furious: true SpiritStick_Furious: true + Lapier_Furious: true + SharpSword_Furious: true + WhiteSword_Furious: true + Stick_Furious: true + MetalVilolin_Furious: true + Harp_Furious: true + MetalWhip_Furious: true + Whip_Furious: true + Flame_Staff_Furious: true + Rifle_Furious: true + Gatling_Furious: true + Specter_Furious: true + GaleClaw_Furious: true + Exterminate_Furious: true Reset: Chance: 80000 Price: 500000 @@ -32357,6 +32371,12 @@ Body: FuriousCirclet_MT: true FuriousCirclet_EM: true FuriousCirclet_SOA: true + FuriousCirclet_TR: true + FuriousCirclet_BO: true + FuriousCirclet_HN: true + FuriousCirclet_AG: true + FuriousCirclet_IQ: true + FuriousCirclet_NW: true Reset: Chance: 80000 Price: 500000 diff --git a/db/re/item_group_db.yml b/db/re/item_group_db.yml index 8381785433..0b5c550f39 100644 --- a/db/re/item_group_db.yml +++ b/db/re/item_group_db.yml @@ -51768,7 +51768,7 @@ Body: Item: aegis_19868 Rate: 50 - Index: 3 - Item: aegis_410245 + Item: C_Brother_Keen_Eye Rate: 50 - Index: 4 Item: C_Foxtail @@ -51777,7 +51777,7 @@ Body: Item: aegis_400496 Rate: 50 - Index: 6 - Item: aegis_420242 + Item: C_Fluttering_Haze Rate: 50 - Index: 7 Item: C_Cat_Mouth @@ -92258,7 +92258,7 @@ Body: Item: Hero_Token_SH Rate: 10 - Index: 17 - Item: aegis_490220 + Item: Hero_Token_HN Rate: 10 - Group: JANUARYGIFTBOX_ SubGroups: @@ -109579,7 +109579,7 @@ Body: Item: Small_Mana_Potion Amount: 250 - Index: 1 - Item: aegis_420304 + Item: C_NightSkyOfRutie - Index: 2 Item: K_Secret_Key Amount: 30 @@ -112975,3 +112975,467 @@ Body: Item: E_EXP_Drop_Up_7days - Index: 2 Item: Comp_AID_Buff_Box + - Group: ENCHANT_STONE_BOX35 + SubGroups: + - SubGroup: 1 + List: + - Index: 0 + Item: Range_Stone_Robe_D + Rate: 10 + - Index: 1 + Item: Melee_Stone_Robe_D + Rate: 10 + - Index: 2 + Item: Magic_Stone_Robe_D + Rate: 10 + - Index: 3 + Item: SmatkStone_Robe + Rate: 10 + - Index: 4 + Item: M_PATKStone_Robe + Rate: 10 + - Index: 5 + Item: R_PATKStone_Robe + Rate: 10 + - Index: 6 + Item: ResistDefStone_Robe + Rate: 10 + - Index: 7 + Item: StaminaWISStone_Robe_D + Rate: 10 + - Index: 8 + Item: POWStone_Robe_D + Rate: 10 + - Index: 9 + Item: SplStone_Robe_D + Rate: 10 + - Index: 10 + Item: ConStone_Robe_D + Rate: 10 + - Index: 11 + Item: CrtStone_Robe_D + Rate: 10 + - Index: 12 + Item: aegis_1001615 + Rate: 10 + - Index: 13 + Item: BioloStone_Robe + Rate: 10 + - Index: 14 + Item: InquisitorStone_Robe + Rate: 10 + - Index: 15 + Item: SpiritHandlerStone_Robe + Rate: 10 + - Index: 16 + Item: ReloadStone_Robe_D + Rate: 10 + - Index: 17 + Item: CriticalStone_Robe_D + Rate: 10 + - Index: 18 + Item: DoubleAttack_Stone + Rate: 20 + - Index: 19 + Item: Critical_Stone_Robe + Rate: 20 + - Index: 20 + Item: CastStone_Robe_D + Rate: 40 + - Index: 21 + Item: SPdrainStone_Robe_D + Rate: 40 + - Index: 22 + Item: HPdrainStone_Robe_D + Rate: 80 + - Index: 23 + Item: ASPDStone_Robe_D + Rate: 80 + - Index: 24 + Item: CastStone_Robe + Rate: 80 + - Index: 25 + Item: GeneticStone_Top3 + Rate: 80 + - Index: 26 + Item: GeneticStone_Middle3 + Rate: 80 + - Index: 27 + Item: GeneticStone_Bottom3 + Rate: 80 + - Index: 28 + Item: SuraStone_Top3 + Rate: 80 + - Index: 29 + Item: SuraStone_Middle3 + Rate: 80 + - Index: 30 + Item: SuraStone_Bottom3 + Rate: 80 + - Index: 31 + Item: DoramStone_Top3 + Rate: 80 + - Index: 32 + Item: DoramStone_Middle3 + Rate: 80 + - Index: 33 + Item: DoramStone_Bottom3 + Rate: 80 + - Index: 34 + Item: Stone_Robe_Box + Rate: 170 + - Index: 35 + Item: Stone_Robe3_Box + Rate: 170 + - Index: 36 + Item: Magic_Stone_Top + Rate: 200 + - Index: 37 + Item: Magic_Stone_Middle + Rate: 200 + - Index: 38 + Item: Magic_Stone_Bottom + Rate: 200 + - Index: 39 + Item: Range_Stone_Top + Rate: 200 + - Index: 40 + Item: Range_Stone + Rate: 200 + - Index: 41 + Item: Range_Stone_Bottom + Rate: 200 + - Index: 42 + Item: Melee_Stone_Top + Rate: 200 + - Index: 43 + Item: Melee_Stone_Middle + Rate: 200 + - Index: 44 + Item: Melee_Stone_Bottom + Rate: 200 + - Index: 45 + Item: DefenseStone_Top + Rate: 200 + - Index: 46 + Item: DefenseStone_Middle + Rate: 200 + - Index: 47 + Item: DefenseStone_Bottom + Rate: 200 + - Index: 48 + Item: ReloadStone_Top + Rate: 200 + - Index: 49 + Item: ReloadStone_Middle + Rate: 200 + - Index: 50 + Item: ReloadStone_Bottom + Rate: 200 + - Index: 51 + Item: EXPStone_Middle + Rate: 200 + - Index: 52 + Item: EXPStone_Bottom + Rate: 200 + - Index: 53 + Item: EXPStone_Top + Rate: 200 + - Index: 54 + Item: Stone_Top_Box + Rate: 400 + - Index: 55 + Item: Stone_Top2_Box + Rate: 400 + - Index: 56 + Item: Stone_Middle_Box + Rate: 400 + - Index: 57 + Item: Stone_Middle2_Box + Rate: 400 + - Index: 58 + Item: Stone_Bottom_Box + Rate: 400 + - Index: 59 + Item: Stone_Bottom2_Box + Rate: 400 + - Index: 60 + Item: CastingStone_Top + Rate: 400 + - Index: 61 + Item: CastingStone_Middle + Rate: 400 + - Index: 62 + Item: CastingStone_Bottom + Rate: 400 + - Index: 63 + Item: Critical_Stone + Rate: 400 + - Index: 64 + Item: Critical_Stone_Top + Rate: 400 + - Index: 65 + Item: Critical_Stone_Bottom + Rate: 400 + - Group: STOVE_CHANNELING_BOX_1 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Battle_Manual100 + Amount: 5 + - Index: 1 + Item: E_Token_Of_Siegfried + Amount: 5 + - Index: 2 + Item: Comp_Kafra_Card + Amount: 10 + - Index: 3 + Item: World_Tour_Ticket + Amount: 10 + - Group: STOVE_CHANNELING_BOX_2 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Boarding_Halter_Box30_Z + - Index: 1 + Item: Comp_Almighty + Amount: 10 + - Index: 2 + Item: E_Wing_Of_Fly_3Day_Box + Amount: 3 + - Index: 3 + Item: Buff_Scroll_Box + Amount: 3 + - Group: STOVE_CHANNELING_BOX_3 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: E_Life_Potion_Pack + Amount: 2 + - Index: 1 + Item: Comp_Small_Mana_Potion + Amount: 20 + - Index: 2 + Item: E_Infinity_Drink + Amount: 10 + - Index: 3 + Item: Comp_Power_Booster + Amount: 10 + - Group: STOVE_CHANNELING_BOX_4 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: All_In_One_buff_B + Amount: 10 + - Index: 1 + Item: All_In_One_Healing_B + Amount: 10 + - Index: 2 + Item: Cachua_Coupon + Amount: 10 + - Index: 3 + Item: Evt_Cos_Coin + Amount: 10 + - Group: LI_NYANGVINE_BOX1_35 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Nyangvine_Fruit + Amount: 100 + - Index: 1 + Item: Enchant_Stone_Box35 + Amount: 2 + - Index: 2 + Item: Comp_Bubble_Gum + Amount: 3 + - Group: LI_NYANGVINE_BOX2_35 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Nyangvine_Fruit + Amount: 200 + - Index: 1 + Item: Battle_Manual100 + Amount: 5 + - Index: 2 + Item: Enchant_Stone_Box35 + Amount: 2 + - Group: LI_NYANGVINE_BOX3_35 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Nyangvine_Fruit + Amount: 400 + - Index: 1 + Item: Comp_Bubble_Gum + Amount: 10 + - Index: 2 + Item: Battle_Manual100 + Amount: 5 + - Index: 3 + Item: Enchant_Stone_Box35 + Amount: 5 + - Group: A_SPEED_BOOSTER_BOX + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Speed_Booster + Amount: 10 + - Index: 1 + Item: K_Secret_Key + - Group: A_SPEED_BOOSTER_10_BOX + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Speed_Booster + Amount: 100 + - Index: 1 + Item: K_Secret_Key + Amount: 11 + - Group: L_INFINITY_POWER_PACK + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Limit_Power_Booster + Amount: 100 + - Index: 1 + Item: Infinity_Drink + Amount: 100 + - Index: 2 + Item: K_Secret_Key + Amount: 25 + - Index: 3 + Item: Cachua_Coupon + Amount: 5 + - Group: L_ALL_RED_PACK + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Almighty + Amount: 100 + - Index: 1 + Item: Red_Booster + Amount: 125 + - Index: 2 + Item: K_Secret_Key + Amount: 25 + - Index: 3 + Item: Cachua_Coupon + Amount: 5 + - Group: L_DEFENSE_POTION_PACK + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Small_Life_Potion + Amount: 200 + - Index: 1 + Item: Med_Life_Potion + Amount: 200 + - Index: 2 + Item: Mysterious_Water + Amount: 200 + - Index: 3 + Item: Small_Mana_Potion + Amount: 50 + - Index: 4 + Item: M_DEFScroll + Amount: 300 + - Index: 5 + Item: K_Secret_Key + Amount: 25 + - Index: 6 + Item: Cachua_Coupon + Amount: 5 + - Group: L_SPEED_FORCE_PACK + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Force_Booster + Amount: 100 + - Index: 1 + Item: Speed_Booster + Amount: 100 + - Index: 2 + Item: K_Secret_Key + Amount: 25 + - Index: 3 + Item: Cachua_Coupon + Amount: 5 + - Group: L_SPECIAL_SPEED_PACK + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Speed_Booster + Amount: 200 + - Index: 1 + Item: K_Secret_Key + Amount: 30 + - Index: 2 + Item: Cachua_Coupon + Amount: 10 + - Group: L_SPECIAL_FORCE_PACK + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Force_Booster + Amount: 200 + - Index: 1 + Item: K_Secret_Key + Amount: 30 + - Index: 2 + Item: Cachua_Coupon + Amount: 10 + - Group: COSTUMEMILEPACK_35_1 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Nyangvine_Fruit + Amount: 100 + - Index: 1 + Item: Evt_Cos_Coin + Amount: 12 + - Index: 2 + Item: Enchant_Stone_Box35 + Amount: 3 + - Group: COSTUMEMILEPACK_35_2 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Nyangvine_Fruit + Amount: 200 + - Index: 1 + Item: Evt_Cos_Coin + Amount: 25 + - Index: 2 + Item: Enchant_Stone_Box35 + Amount: 5 + - Group: COSTUMEMILEPACK_35_3 + SubGroups: + - SubGroup: 0 + List: + - Index: 0 + Item: Nyangvine_Fruit + Amount: 400 + - Index: 1 + Item: Evt_Cos_Coin + Amount: 50 + - Index: 2 + Item: Enchant_Stone_Box35 + Amount: 10 diff --git a/db/re/item_reform.yml b/db/re/item_reform.yml index d65955ae8e..424a1b7fc2 100644 --- a/db/re/item_reform.yml +++ b/db/re/item_reform.yml @@ -9837,6 +9837,330 @@ Body: RandomOptionGroup: Group_0 ClearSlots: true RemoveEnchantgrade: true + - BaseItem: Snowflower_Armor + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Armor + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Manteau + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Manteau + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Boots + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Boots + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Pendant + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Pendant + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Necklace + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Necklace + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Robe + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Robe + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Muffler + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Muffler + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Shoes + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Shoes + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Ring + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Ring + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Snowflower_Earring + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Snowflower_Earring + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_T_Sword + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_T_Sword + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Lance + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Lance + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Sword + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Sword + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_B_Sword + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_B_Sword + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Spear + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Spear + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_T_Axe + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_T_Axe + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Axe + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Axe + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Mace + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Mace + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_M_Mace + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_M_Mace + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_R_Knife + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_R_Knife + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_B_Knife + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_B_Knife + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Knuckle + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Knuckle + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Katar + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Katar + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Bow + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Bow + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Violin + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Violin + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Whip + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Whip + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Humma + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Humma + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Book + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Book + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Wand + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Wand + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Staff + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Staff + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Foxtail + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Foxtail + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Revolver + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Revolver + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Rifle + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Rifle + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Shotgun + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Shotgun + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Gatling + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Gatling + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true + - BaseItem: Glacier_Launcher + Materials: + - Material: Imperfect_Rune + Amount: 10 + ResultItem: R_Glacier_Launcher + ChangeRefine: -20 + RandomOptionGroup: Group_0 + ClearSlots: true + RemoveEnchantgrade: true - Item: Season_H_Upgrade BaseItems: - BaseItem: Season_Hood_Spring @@ -10901,6 +11225,206 @@ Body: Amount: 20 ResultItem: FuriousCirclet_SOA ChangeRefine: 1 + - BaseItem: FuriousCirclet_TR + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Ethernium + Amount: 10 + - Material: Enriched_Ethernium + Amount: 20 + ResultItem: FuriousCirclet_TR + ChangeRefine: 1 + - BaseItem: FuriousCirclet_BO + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Ethernium + Amount: 10 + - Material: Enriched_Ethernium + Amount: 20 + ResultItem: FuriousCirclet_BO + ChangeRefine: 1 + - BaseItem: FuriousCirclet_HN + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Ethernium + Amount: 10 + - Material: Enriched_Ethernium + Amount: 20 + ResultItem: FuriousCirclet_HN + ChangeRefine: 1 + - BaseItem: Lapier_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Lapier_Furious + ChangeRefine: 1 + - BaseItem: SharpSword_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: SharpSword_Furious + ChangeRefine: 1 + - BaseItem: WhiteSword_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: WhiteSword_Furious + ChangeRefine: 1 + - BaseItem: Stick_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Stick_Furious + ChangeRefine: 1 + - BaseItem: MetalVilolin_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: MetalVilolin_Furious + ChangeRefine: 1 + - BaseItem: Harp_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Harp_Furious + ChangeRefine: 1 + - BaseItem: MetalWhip_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: MetalWhip_Furious + ChangeRefine: 1 + - BaseItem: Whip_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Whip_Furious + ChangeRefine: 1 + - BaseItem: Flame_Staff_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Flame_Staff_Furious + ChangeRefine: 1 + - BaseItem: Rifle_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Rifle_Furious + ChangeRefine: 1 + - BaseItem: Gatling_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Gatling_Furious + ChangeRefine: 1 + - BaseItem: Specter_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Specter_Furious + ChangeRefine: 1 + - BaseItem: GaleClaw_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: GaleClaw_Furious + ChangeRefine: 1 + - BaseItem: Exterminate_Furious + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Etherdeocon + Amount: 10 + - Material: Enriched_Etherdeocon + Amount: 20 + ResultItem: Exterminate_Furious + ChangeRefine: 1 + - BaseItem: FuriousCirclet_AG + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Ethernium + Amount: 10 + - Material: Enriched_Ethernium + Amount: 20 + ResultItem: FuriousCirclet_AG + ChangeRefine: 1 + - BaseItem: FuriousCirclet_IQ + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Ethernium + Amount: 10 + - Material: Enriched_Ethernium + Amount: 20 + ResultItem: FuriousCirclet_IQ + ChangeRefine: 1 + - BaseItem: FuriousCirclet_NW + MinimumRefine: 9 + MaximumRefine: 11 + Materials: + - Material: HD_Ethernium + Amount: 10 + - Material: Enriched_Ethernium + Amount: 20 + ResultItem: FuriousCirclet_NW + ChangeRefine: 1 - Item: Gaebolg_A_Hammer_1 BaseItems: - BaseItem: Gaebolg_Armor diff --git a/db/re/job_stats.yml b/db/re/job_stats.yml index b74f08294e..87be3fd3bd 100644 --- a/db/re/job_stats.yml +++ b/db/re/job_stats.yml @@ -9213,7 +9213,7 @@ Body: Vit: 1 Int: 1 - Level: 13 - Agi: 1 + Dex: 1 Spl: 1 - Level: 14 Sta: 1 @@ -9229,7 +9229,7 @@ Body: Int: 1 Dex: 1 - Level: 19 - Dex: 1 + Int: 1 - Level: 20 Vit: 1 Int: 1 @@ -11154,7 +11154,6 @@ Body: - Level: 2 Str: 1 Agi: 1 - Sta: 1 - Level: 3 Vit: 1 Luk: 1 @@ -11190,6 +11189,7 @@ Body: Dex: 1 - Level: 15 Luk: 1 + Sta: 1 - Level: 16 Vit: 1 Int: 1 @@ -11230,13 +11230,13 @@ Body: - Level: 30 Str: 1 Int: 1 - Sta: 1 - Level: 31 Dex: 1 Con: 1 - Level: 32 Pow: 1 - Level: 33 + Sta: 1 Crt: 1 - Level: 34 Crt: 1 @@ -11251,7 +11251,10 @@ Body: - Level: 40 Pow: 1 - Level: 41 + Sta: 1 Con: 1 + - Level: 42 + Sta: 1 - Level: 43 Crt: 1 - Level: 44 @@ -11260,6 +11263,7 @@ Body: Con: 1 - Level: 46 Pow: 1 + Sta: 1 - Level: 47 Con: 1 - Level: 48 diff --git a/db/re/mob_db.yml b/db/re/mob_db.yml index d61cd40f69..b98a0ec2a3 100644 --- a/db/re/mob_db.yml +++ b/db/re/mob_db.yml @@ -1,5 +1,5 @@ # This file is a part of rAthena. -# Copyright(C) 2021 rAthena Development Team +# Copyright(C) 2024 rAthena Development Team # https://rathena.org - https://github.com/rathena # # This program is free software: you can redistribute it and/or modify @@ -56,6 +56,7 @@ # WalkSpeed Walk speed. (Default: DEFAULT_WALK_SPEED) # AttackDelay Attack speed. (Default: 0) # AttackMotion Attack animation speed. (Default: 0) +# ClientAttackMotion Client attack speed. (Default: AttackMotion) # DamageMotion Damage animation speed. (Default: 0) # DamageTaken Rate at which the monster will receive incoming damage. (Default: 100) # Ai Aegis monster type AI behavior. (Default: 06) @@ -77,7 +78,7 @@ Header: Type: MOB_DB - Version: 3 + Version: 4 Body: - Id: 1001 @@ -107,6 +108,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 19 Modes: @@ -153,6 +155,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -219,6 +222,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 216 Ai: 03 Modes: @@ -267,6 +271,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -327,6 +332,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -375,6 +381,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 768 DamageMotion: 1 Modes: Detector: true @@ -422,6 +429,7 @@ Body: WalkSpeed: 150 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 03 Drops: @@ -469,6 +477,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 01 Drops: @@ -514,6 +523,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -562,6 +572,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -605,6 +616,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 03 Drops: @@ -650,6 +662,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 01 Drops: @@ -695,6 +708,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -742,6 +756,7 @@ Body: WalkSpeed: 300 AttackDelay: 2864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 05 Drops: @@ -836,6 +851,7 @@ Body: WalkSpeed: 150 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 840 Ai: 01 Modes: @@ -884,6 +900,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 03 Drops: @@ -929,6 +946,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 Drops: @@ -1074,6 +1092,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -1120,6 +1139,7 @@ Body: WalkSpeed: 200 AttackDelay: 1048 AttackMotion: 48 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 17 Drops: @@ -1168,6 +1188,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Drops: @@ -1215,6 +1236,7 @@ Body: WalkSpeed: 200 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 Drops: @@ -1294,6 +1316,7 @@ Body: WalkSpeed: 200 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 Drops: @@ -1341,6 +1364,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 19 Modes: @@ -1389,6 +1413,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 17 Drops: @@ -1437,6 +1462,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -1484,6 +1510,7 @@ Body: WalkSpeed: 250 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 02 Drops: @@ -1528,6 +1555,7 @@ Body: WalkSpeed: 200 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 19 Drops: @@ -1575,6 +1603,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -1622,6 +1651,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -1671,6 +1701,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -1718,6 +1749,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 19 Drops: @@ -1766,6 +1798,7 @@ Body: WalkSpeed: 100 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 384 DamageTaken: 10 Ai: 21 @@ -1825,6 +1858,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 600 DamageMotion: 576 DamageTaken: 10 Ai: 21 @@ -1885,6 +1919,7 @@ Body: WalkSpeed: 300 AttackDelay: 1608 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 17 Drops: @@ -1930,6 +1965,7 @@ Body: WalkSpeed: 300 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Drops: @@ -1977,6 +2013,7 @@ Body: WalkSpeed: 150 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 07 Modes: @@ -2052,6 +2089,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 19 Drops: @@ -2099,6 +2137,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Ai: 04 Drops: @@ -2145,6 +2184,7 @@ Body: WalkSpeed: 100 AttackDelay: 480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -2199,6 +2239,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -2240,6 +2281,7 @@ Body: WalkSpeed: 1000 AttackDelay: 701 AttackMotion: 1 + ClientAttackMotion: 288 DamageMotion: 1 Modes: Detector: true @@ -2287,6 +2329,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -2334,6 +2377,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -2380,6 +2424,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 07 Modes: @@ -2429,6 +2474,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 768 DamageMotion: 540 Ai: 01 Modes: @@ -2478,6 +2524,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 07 Modes: @@ -2527,6 +2574,7 @@ Body: WalkSpeed: 300 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 13 Modes: @@ -2575,6 +2623,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 01 Drops: @@ -2621,6 +2670,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 Drops: @@ -2667,6 +2717,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 07 Drops: @@ -2713,6 +2764,7 @@ Body: WalkSpeed: 200 AttackDelay: 1708 AttackMotion: 1008 + ClientAttackMotion: 432 DamageMotion: 540 Ai: 07 Modes: @@ -2763,6 +2815,7 @@ Body: WalkSpeed: 100 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 300 DamageTaken: 10 Ai: 21 @@ -2819,6 +2872,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Drops: @@ -2866,6 +2920,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 20 Modes: @@ -2913,6 +2968,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Drops: @@ -2958,6 +3014,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Drops: @@ -3005,6 +3062,7 @@ Body: WalkSpeed: 200 AttackDelay: 2492 AttackMotion: 792 + ClientAttackMotion: 696 DamageMotion: 432 Ai: 01 Drops: @@ -3052,6 +3110,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 108 DamageMotion: 384 Ai: 04 Drops: @@ -3099,6 +3158,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Ai: 17 Drops: @@ -3146,6 +3206,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 48 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 17 Drops: @@ -3194,6 +3255,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 10 Drops: @@ -3241,6 +3303,7 @@ Body: WalkSpeed: 200 AttackDelay: 1968 AttackMotion: 768 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 04 Drops: @@ -3288,6 +3351,7 @@ Body: WalkSpeed: 150 AttackDelay: 1776 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 02 Drops: @@ -3335,6 +3399,7 @@ Body: WalkSpeed: 200 AttackDelay: 1754 AttackMotion: 554 + ClientAttackMotion: 360 DamageMotion: 288 Ai: 04 Drops: @@ -3382,6 +3447,7 @@ Body: WalkSpeed: 150 AttackDelay: 1700 AttackMotion: 1000 + ClientAttackMotion: 432 DamageMotion: 500 Ai: 04 Modes: @@ -3431,6 +3497,7 @@ Body: WalkSpeed: 200 AttackDelay: 992 AttackMotion: 792 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 01 Drops: @@ -3476,6 +3543,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 468 DamageMotion: 384 Ai: 17 Drops: @@ -3542,6 +3610,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 17 Drops: @@ -3589,6 +3658,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -3628,6 +3698,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3671,6 +3742,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3714,6 +3786,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3757,6 +3830,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3800,6 +3874,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3844,6 +3919,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 2016 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3887,6 +3963,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3930,6 +4007,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -3982,6 +4060,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 720 DamageMotion: 480 DamageTaken: 10 Ai: 07 @@ -4041,6 +4120,7 @@ Body: WalkSpeed: 150 AttackDelay: 1678 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 648 DamageTaken: 10 Ai: 21 @@ -4099,6 +4179,7 @@ Body: WalkSpeed: 200 AttackDelay: 1080 AttackMotion: 648 + ClientAttackMotion: 600 DamageMotion: 480 Ai: 21 Modes: @@ -4148,6 +4229,7 @@ Body: WalkSpeed: 200 AttackDelay: 1236 AttackMotion: 336 + ClientAttackMotion: 168 DamageMotion: 432 Ai: 21 Class: Boss @@ -4196,6 +4278,7 @@ Body: WalkSpeed: 300 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -4244,6 +4327,7 @@ Body: WalkSpeed: 100 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -4292,6 +4376,7 @@ Body: WalkSpeed: 150 AttackDelay: 1048 AttackMotion: 648 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 21 Class: Boss @@ -4340,6 +4425,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 21 Class: Boss @@ -4387,6 +4473,7 @@ Body: WalkSpeed: 400 AttackDelay: 2048 AttackMotion: 648 + ClientAttackMotion: 312 DamageMotion: 648 Ai: 17 Modes: @@ -4436,6 +4523,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 180 DamageMotion: 384 Ai: 07 Modes: @@ -4485,6 +4573,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 672 Ai: 21 Class: Boss @@ -4529,6 +4618,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -4571,6 +4661,7 @@ Body: WalkSpeed: 150 AttackDelay: 1250 AttackMotion: 720 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 21 Drops: @@ -4618,6 +4709,7 @@ Body: WalkSpeed: 300 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -4665,6 +4757,7 @@ Body: WalkSpeed: 300 AttackDelay: 1468 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 19 Modes: @@ -4716,6 +4809,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 21 Modes: @@ -4765,6 +4859,7 @@ Body: WalkSpeed: 100 AttackDelay: 1504 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 Drops: @@ -4811,6 +4906,7 @@ Body: WalkSpeed: 200 AttackDelay: 1604 AttackMotion: 840 + ClientAttackMotion: 216 DamageMotion: 756 Ai: 17 Drops: @@ -4857,6 +4953,7 @@ Body: WalkSpeed: 150 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 17 Drops: @@ -4904,6 +5001,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -4953,6 +5051,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 180 DamageMotion: 288 Ai: 13 Drops: @@ -5001,6 +5100,7 @@ Body: WalkSpeed: 300 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 240 Ai: 03 Drops: @@ -5048,6 +5148,7 @@ Body: WalkSpeed: 400 AttackDelay: 1680 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Drops: @@ -5097,6 +5198,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -5146,6 +5248,7 @@ Body: WalkSpeed: 250 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Modes: @@ -5197,6 +5300,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 19 Drops: @@ -5245,6 +5349,7 @@ Body: WalkSpeed: 400 AttackDelay: 620 AttackMotion: 420 + ClientAttackMotion: 108 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -5297,6 +5402,7 @@ Body: WalkSpeed: 400 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -5344,6 +5450,7 @@ Body: WalkSpeed: 150 AttackDelay: 1004 AttackMotion: 504 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 17 Modes: @@ -5392,6 +5499,7 @@ Body: WalkSpeed: 300 AttackDelay: 872 AttackMotion: 1344 + ClientAttackMotion: 408 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -5450,6 +5558,7 @@ Body: WalkSpeed: 200 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 17 Drops: @@ -5497,6 +5606,7 @@ Body: WalkSpeed: 300 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 168 DamageMotion: 336 Ai: 21 Drops: @@ -5545,6 +5655,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1432 AttackMotion: 432 + ClientAttackMotion: 180 DamageMotion: 576 Ai: 10 Drops: @@ -5592,6 +5703,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 720 + ClientAttackMotion: 324 DamageMotion: 432 Ai: 04 Drops: @@ -5639,6 +5751,7 @@ Body: WalkSpeed: 300 AttackDelay: 1220 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 648 Ai: 21 Class: Boss @@ -5687,6 +5800,7 @@ Body: WalkSpeed: 200 AttackDelay: 1848 AttackMotion: 1296 + ClientAttackMotion: 480 DamageMotion: 432 Ai: 17 Modes: @@ -5738,6 +5852,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -5787,6 +5902,7 @@ Body: WalkSpeed: 150 AttackDelay: 1320 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 19 Drops: @@ -5836,6 +5952,7 @@ Body: WalkSpeed: 250 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 Drops: @@ -5885,6 +6002,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 Drops: @@ -5934,6 +6052,7 @@ Body: WalkSpeed: 300 AttackDelay: 3074 AttackMotion: 1874 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 13 Drops: @@ -5981,6 +6100,7 @@ Body: WalkSpeed: 200 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 720 Ai: 01 Drops: @@ -6028,6 +6148,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 17 Modes: @@ -6077,6 +6198,7 @@ Body: WalkSpeed: 400 AttackDelay: 1888 AttackMotion: 1152 + ClientAttackMotion: 552 DamageMotion: 828 Ai: 13 Drops: @@ -6124,6 +6246,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 21 Drops: @@ -6173,6 +6296,7 @@ Body: WalkSpeed: 100 AttackDelay: 1364 AttackMotion: 864 + ClientAttackMotion: 312 DamageMotion: 432 Ai: 21 Drops: @@ -6220,6 +6344,7 @@ Body: WalkSpeed: 350 AttackDelay: 528 AttackMotion: 1000 + ClientAttackMotion: 240 DamageMotion: 396 Ai: 21 Drops: @@ -6269,6 +6394,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -6318,6 +6444,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -6367,6 +6494,7 @@ Body: WalkSpeed: 300 AttackDelay: 1228 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -6414,6 +6542,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 13 Class: Boss @@ -6461,6 +6590,7 @@ Body: WalkSpeed: 300 AttackDelay: 1228 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 13 Class: Boss @@ -6509,6 +6639,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 192 DamageMotion: 432 Ai: 02 Modes: @@ -6557,6 +6688,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 19 Modes: @@ -6606,6 +6738,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 840 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 19 Drops: @@ -6653,6 +6786,7 @@ Body: WalkSpeed: 400 AttackDelay: 2280 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 864 Ai: 01 Drops: @@ -6698,6 +6832,7 @@ Body: WalkSpeed: 800 AttackDelay: 1201 AttackMotion: 1 + ClientAttackMotion: 240 DamageMotion: 1 Drops: - Item: Tendon @@ -6740,6 +6875,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 1056 Ai: 19 Modes: @@ -6790,6 +6926,7 @@ Body: WalkSpeed: 300 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 468 DamageMotion: 528 Ai: 17 Drops: @@ -6837,6 +6974,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Drops: @@ -6884,6 +7022,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 19 Drops: @@ -6928,6 +7067,7 @@ Body: WalkSpeed: 100 AttackDelay: 864 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -6986,6 +7126,7 @@ Body: WalkSpeed: 180 AttackDelay: 1720 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 360 Ai: 21 Modes: @@ -7035,6 +7176,7 @@ Body: WalkSpeed: 200 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 19 Drops: @@ -7083,6 +7225,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -7141,6 +7284,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 Drops: @@ -7190,6 +7334,7 @@ Body: WalkSpeed: 200 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 Drops: @@ -7237,6 +7382,7 @@ Body: WalkSpeed: 400 AttackDelay: 2852 AttackMotion: 1152 + ClientAttackMotion: 768 DamageMotion: 840 Ai: 04 Drops: @@ -7276,6 +7422,7 @@ Body: WalkSpeed: 165 AttackDelay: 976 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 19 Drops: @@ -7323,6 +7470,7 @@ Body: WalkSpeed: 250 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 19 Drops: @@ -7371,6 +7519,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 19 Drops: @@ -7419,6 +7568,7 @@ Body: WalkSpeed: 125 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -7477,6 +7627,7 @@ Body: WalkSpeed: 150 AttackDelay: 2544 AttackMotion: 1344 + ClientAttackMotion: 432 DamageMotion: 1152 Ai: 17 Drops: @@ -7525,6 +7676,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 1020 + ClientAttackMotion: 324 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -7583,6 +7735,7 @@ Body: WalkSpeed: 200 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -7632,6 +7785,7 @@ Body: WalkSpeed: 400 AttackDelay: 2208 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 324 Ai: 01 Drops: @@ -7679,6 +7833,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 05 Drops: @@ -7726,6 +7881,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 19 Drops: @@ -7773,6 +7929,7 @@ Body: WalkSpeed: 400 AttackDelay: 1516 AttackMotion: 816 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 04 Drops: @@ -7820,6 +7977,7 @@ Body: WalkSpeed: 250 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -7867,6 +8025,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 17 Drops: @@ -7913,6 +8072,7 @@ Body: WalkSpeed: 400 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 312 DamageMotion: 576 Ai: 01 Drops: @@ -8005,6 +8165,7 @@ Body: WalkSpeed: 400 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -8052,6 +8213,7 @@ Body: WalkSpeed: 250 AttackDelay: 2112 AttackMotion: 912 + ClientAttackMotion: 324 DamageMotion: 576 Ai: 17 Modes: @@ -8229,6 +8391,7 @@ Body: WalkSpeed: 200 AttackDelay: 1688 AttackMotion: 1188 + ClientAttackMotion: 720 DamageMotion: 612 Ai: 17 Modes: @@ -8276,6 +8439,7 @@ Body: WalkSpeed: 150 AttackDelay: 1744 AttackMotion: 1044 + ClientAttackMotion: 252 DamageMotion: 684 Ai: 17 Drops: @@ -8321,6 +8485,7 @@ Body: WalkSpeed: 300 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 17 Modes: @@ -8370,6 +8535,7 @@ Body: WalkSpeed: 150 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 02 Drops: @@ -8415,6 +8581,7 @@ Body: WalkSpeed: 200 AttackDelay: 1780 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Drops: @@ -8464,6 +8631,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Ai: 19 Modes: @@ -8509,6 +8677,7 @@ Body: WalkSpeed: 150 AttackDelay: 840 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Drops: @@ -8577,6 +8746,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Class: Event Modes: @@ -8614,6 +8784,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -8653,6 +8824,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 04 Modes: @@ -8696,6 +8868,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Drops: - Item: Sparkling_Dust @@ -8732,6 +8905,7 @@ Body: WalkSpeed: 250 AttackDelay: 2536 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 672 Ai: 21 Modes: @@ -8777,6 +8951,7 @@ Body: WalkSpeed: 200 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 19 Drops: @@ -8827,6 +9002,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 620 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 19 Drops: @@ -8877,6 +9053,7 @@ Body: WalkSpeed: 100 AttackDelay: 1248 AttackMotion: 500 + ClientAttackMotion: 624 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -8934,6 +9111,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 19 Drops: @@ -8979,6 +9157,7 @@ Body: WalkSpeed: 300 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -9026,6 +9205,7 @@ Body: WalkSpeed: 300 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Ai: 21 Drops: @@ -9072,6 +9252,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 19 Modes: @@ -9123,6 +9304,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 21 Drops: @@ -9170,6 +9352,7 @@ Body: WalkSpeed: 350 AttackDelay: 1848 AttackMotion: 500 + ClientAttackMotion: 864 DamageMotion: 576 Ai: 13 Drops: @@ -9217,6 +9400,7 @@ Body: WalkSpeed: 350 AttackDelay: 1768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 192 Ai: 13 Drops: @@ -9264,6 +9448,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 1252 + ClientAttackMotion: 288 DamageMotion: 476 Ai: 13 Modes: @@ -9315,6 +9500,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 1152 DamageMotion: 1000 Ai: 19 Drops: @@ -9361,6 +9547,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 13 Drops: @@ -9408,6 +9595,7 @@ Body: WalkSpeed: 200 AttackDelay: 1790 AttackMotion: 1440 + ClientAttackMotion: 900 DamageMotion: 540 Ai: 13 Modes: @@ -9457,6 +9645,7 @@ Body: WalkSpeed: 175 AttackDelay: 1744 AttackMotion: 1344 + ClientAttackMotion: 960 DamageMotion: 600 Ai: 13 Drops: @@ -9504,6 +9693,7 @@ Body: WalkSpeed: 250 AttackDelay: 1152 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 240 Ai: 21 Class: Boss @@ -9558,6 +9748,7 @@ Body: WalkSpeed: 100 AttackDelay: 816 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 240 Ai: 21 Class: Boss @@ -9610,6 +9801,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 21 Class: Boss @@ -9659,6 +9851,7 @@ Body: WalkSpeed: 190 AttackDelay: 900 AttackMotion: 500 + ClientAttackMotion: 660 DamageMotion: 864 Ai: 21 Drops: @@ -9706,6 +9899,7 @@ Body: WalkSpeed: 300 AttackDelay: 528 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 21 Drops: @@ -9754,6 +9948,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 21 Modes: @@ -9804,6 +9999,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 1000 Ai: 19 Drops: @@ -9899,6 +10095,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 19 Modes: @@ -9945,6 +10142,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 384 DamageMotion: 1000 Ai: 19 Modes: @@ -9997,6 +10195,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 21 Drops: @@ -10044,6 +10243,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 19 Drops: @@ -10093,6 +10293,7 @@ Body: WalkSpeed: 300 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 288 DamageMotion: 528 Ai: 19 Drops: @@ -10143,6 +10344,7 @@ Body: WalkSpeed: 400 AttackDelay: 832 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 21 Drops: @@ -10197,6 +10399,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 21 Drops: @@ -10245,6 +10448,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 21 Drops: @@ -10289,6 +10493,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Drops: @@ -10638,6 +10843,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -10681,6 +10887,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 768 DamageMotion: 1 Modes: Detector: true @@ -10727,6 +10934,7 @@ Body: WalkSpeed: 200 AttackDelay: 1220 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 288 Ai: 01 Modes: @@ -10763,6 +10971,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -10846,6 +11055,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 07 Drops: @@ -10891,6 +11101,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 13 Drops: @@ -10932,6 +11143,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Drops: - Item: Phracon @@ -10972,6 +11184,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 180 DamageMotion: 576 Ai: 07 Modes: @@ -11019,6 +11232,7 @@ Body: WalkSpeed: 200 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -11066,6 +11280,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -11111,6 +11326,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -11153,6 +11369,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -11198,6 +11415,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Drops: @@ -11245,6 +11463,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 21 Drops: @@ -11292,6 +11511,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 21 Drops: @@ -11339,6 +11559,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -11386,6 +11607,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 17 Drops: @@ -11429,6 +11651,7 @@ Body: WalkSpeed: 100 AttackDelay: 720 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 01 Class: Boss @@ -11482,6 +11705,7 @@ Body: WalkSpeed: 400 AttackDelay: 1296 AttackMotion: 1296 + ClientAttackMotion: 1224 DamageMotion: 432 Ai: 05 Drops: @@ -11529,6 +11753,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 17 Drops: @@ -11576,6 +11801,7 @@ Body: WalkSpeed: 400 AttackDelay: 672 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Drops: @@ -11625,6 +11851,7 @@ Body: WalkSpeed: 200 AttackDelay: 468 AttackMotion: 468 + ClientAttackMotion: 252 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -11685,6 +11912,7 @@ Body: WalkSpeed: 400 AttackDelay: 608 AttackMotion: 408 + ClientAttackMotion: 312 DamageMotion: 336 DamageTaken: 10 Ai: 21 @@ -11741,6 +11969,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -11788,6 +12017,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 21 Drops: @@ -11836,6 +12066,7 @@ Body: WalkSpeed: 200 AttackDelay: 776 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 21 Drops: @@ -11883,6 +12114,7 @@ Body: WalkSpeed: 165 AttackDelay: 700 AttackMotion: 648 + ClientAttackMotion: 396 DamageMotion: 480 Ai: 21 Drops: @@ -11928,6 +12160,7 @@ Body: WalkSpeed: 400 AttackDelay: 770 AttackMotion: 720 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 21 Drops: @@ -11977,6 +12210,7 @@ Body: WalkSpeed: 200 AttackDelay: 1172 AttackMotion: 672 + ClientAttackMotion: 528 DamageMotion: 420 Ai: 05 Drops: @@ -12024,6 +12258,7 @@ Body: WalkSpeed: 100 AttackDelay: 704 AttackMotion: 504 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 21 Class: Boss @@ -12073,6 +12308,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 200 Ai: 21 Modes: @@ -12118,6 +12354,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 Ai: 02 Drops: @@ -12166,6 +12403,7 @@ Body: WalkSpeed: 250 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 900 DamageMotion: 240 Ai: 21 Class: Boss @@ -12214,6 +12452,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Modes: @@ -12263,6 +12502,7 @@ Body: WalkSpeed: 220 AttackDelay: 916 AttackMotion: 816 + ClientAttackMotion: 384 DamageMotion: 336 Ai: 21 Drops: @@ -12310,6 +12550,7 @@ Body: WalkSpeed: 200 AttackDelay: 1036 AttackMotion: 936 + ClientAttackMotion: 108 DamageMotion: 240 Ai: 03 Drops: @@ -12356,6 +12597,7 @@ Body: WalkSpeed: 400 AttackDelay: 1264 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 216 Ai: 17 Drops: @@ -12403,6 +12645,7 @@ Body: WalkSpeed: 200 AttackDelay: 1078 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 21 Modes: @@ -12452,6 +12695,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Drops: @@ -12501,6 +12745,7 @@ Body: WalkSpeed: 200 AttackDelay: 1092 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 Drops: @@ -12550,6 +12795,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 384 Ai: 17 Drops: @@ -12597,6 +12843,7 @@ Body: WalkSpeed: 200 AttackDelay: 1100 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 17 Drops: @@ -12641,6 +12888,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 408 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -12701,6 +12949,7 @@ Body: WalkSpeed: 200 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Drops: @@ -12748,6 +12997,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 10 Drops: @@ -12793,6 +13043,7 @@ Body: WalkSpeed: 200 AttackDelay: 502 AttackMotion: 1999 + ClientAttackMotion: 2112 DamageMotion: 480 Ai: 17 Drops: @@ -12840,6 +13091,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 972 DamageMotion: 480 Ai: 05 Modes: @@ -12887,6 +13139,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 816 DamageMotion: 384 Ai: 10 Drops: @@ -12935,6 +13188,7 @@ Body: WalkSpeed: 200 AttackDelay: 1264 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 288 Ai: 17 Drops: @@ -12983,6 +13237,7 @@ Body: WalkSpeed: 200 AttackDelay: 860 AttackMotion: 660 + ClientAttackMotion: 540 DamageMotion: 624 Ai: 21 Modes: @@ -13031,6 +13286,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 324 DamageMotion: 528 Ai: 17 Drops: @@ -13080,6 +13336,7 @@ Body: WalkSpeed: 200 AttackDelay: 936 AttackMotion: 936 + ClientAttackMotion: 504 DamageMotion: 288 Ai: 17 Drops: @@ -13129,6 +13386,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 05 Drops: @@ -13175,6 +13433,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 Class: Boss @@ -13334,6 +13593,7 @@ Body: WalkSpeed: 265 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 624 DamageMotion: 384 Ai: 12 Class: Guardian @@ -13399,6 +13659,7 @@ Body: WalkSpeed: 100 AttackDelay: 1024 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 480 Ai: 21 Class: Boss @@ -13447,6 +13708,7 @@ Body: WalkSpeed: 150 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 21 Drops: @@ -13495,6 +13757,7 @@ Body: WalkSpeed: 175 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 720 DamageMotion: 240 Ai: 21 Drops: @@ -13542,6 +13805,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 600 + ClientAttackMotion: 1728 DamageMotion: 384 Ai: 21 Modes: @@ -13591,6 +13855,7 @@ Body: WalkSpeed: 155 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 840 Ai: 21 Modes: @@ -13640,6 +13905,7 @@ Body: WalkSpeed: 175 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 21 Modes: @@ -13689,6 +13955,7 @@ Body: WalkSpeed: 175 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 2304 DamageMotion: 440 Ai: 21 Class: Boss @@ -13739,6 +14006,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Drops: @@ -13787,6 +14055,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Drops: @@ -13834,6 +14103,7 @@ Body: WalkSpeed: 175 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 21 Drops: @@ -13883,6 +14153,7 @@ Body: WalkSpeed: 120 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 1056 DamageMotion: 240 Ai: 21 Drops: @@ -13930,6 +14201,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 21 Modes: @@ -13979,6 +14251,7 @@ Body: WalkSpeed: 200 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -14029,6 +14302,7 @@ Body: WalkSpeed: 145 AttackDelay: 1024 AttackMotion: 768 + ClientAttackMotion: 5280 DamageMotion: 480 Ai: 21 Class: Boss @@ -14078,6 +14352,7 @@ Body: WalkSpeed: 155 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 340 Ai: 21 Modes: @@ -14127,6 +14402,7 @@ Body: WalkSpeed: 165 AttackDelay: 1468 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 21 Modes: @@ -14176,6 +14452,7 @@ Body: WalkSpeed: 165 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -14225,6 +14502,7 @@ Body: WalkSpeed: 175 AttackDelay: 1260 AttackMotion: 230 + ClientAttackMotion: 1152 DamageMotion: 192 Ai: 21 Drops: @@ -14272,6 +14550,7 @@ Body: WalkSpeed: 155 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 Ai: 21 Class: Boss @@ -14320,6 +14599,7 @@ Body: WalkSpeed: 200 AttackDelay: 960 AttackMotion: 1008 + ClientAttackMotion: 2496 DamageMotion: 840 Ai: 21 Drops: @@ -14367,6 +14647,7 @@ Body: WalkSpeed: 300 AttackDelay: 1000 AttackMotion: 1152 + ClientAttackMotion: 552 DamageMotion: 828 Ai: 21 Drops: @@ -14414,6 +14695,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 960 + ClientAttackMotion: 1728 DamageMotion: 780 Ai: 21 Drops: @@ -14462,6 +14744,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Drops: @@ -14510,6 +14793,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 500 DamageTaken: 10 Ai: 21 @@ -14568,6 +14852,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 560 + ClientAttackMotion: 576 DamageMotion: 580 Ai: 21 Drops: @@ -14615,6 +14900,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 483 + ClientAttackMotion: 720 DamageMotion: 528 Ai: 17 Drops: @@ -14664,6 +14950,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 540 DamageMotion: 504 Ai: 21 Drops: @@ -14711,6 +14998,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1248 DamageMotion: 528 Ai: 17 Drops: @@ -14760,6 +15048,7 @@ Body: WalkSpeed: 200 AttackDelay: 1612 AttackMotion: 622 + ClientAttackMotion: 576 DamageMotion: 583 Ai: 19 Drops: @@ -14807,6 +15096,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1200 DamageMotion: 528 Ai: 21 Drops: @@ -14854,6 +15144,7 @@ Body: WalkSpeed: 170 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 540 DamageMotion: 672 Ai: 21 Drops: @@ -14901,6 +15192,7 @@ Body: WalkSpeed: 195 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 768 DamageMotion: 440 Ai: 21 Class: Boss @@ -14950,6 +15242,7 @@ Body: WalkSpeed: 175 AttackDelay: 862 AttackMotion: 534 + ClientAttackMotion: 360 DamageMotion: 312 Ai: 21 Modes: @@ -14995,6 +15288,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 756 DamageMotion: 511 Ai: 02 Drops: @@ -15042,6 +15336,7 @@ Body: WalkSpeed: 190 AttackDelay: 1132 AttackMotion: 583 + ClientAttackMotion: 432 DamageMotion: 532 Ai: 19 Drops: @@ -16289,6 +16584,7 @@ Body: WalkSpeed: 155 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 1440 DamageMotion: 432 Ai: 21 Modes: @@ -16323,6 +16619,7 @@ Body: WalkSpeed: 400 AttackDelay: 1840 AttackMotion: 1440 + ClientAttackMotion: 720 DamageMotion: 384 Ai: 17 Drops: @@ -16372,6 +16669,7 @@ Body: WalkSpeed: 400 AttackDelay: 2190 AttackMotion: 2040 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 19 Drops: @@ -16419,6 +16717,7 @@ Body: WalkSpeed: 180 AttackDelay: 1732 AttackMotion: 1332 + ClientAttackMotion: 468 DamageMotion: 540 Ai: 20 Modes: @@ -16460,6 +16759,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1308 AttackMotion: 1008 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -16505,6 +16805,7 @@ Body: WalkSpeed: 165 AttackDelay: 1460 AttackMotion: 960 + ClientAttackMotion: 2304 DamageMotion: 432 Ai: 03 Drops: @@ -16548,6 +16849,7 @@ Body: WalkSpeed: 155 AttackDelay: 1306 AttackMotion: 1056 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Modes: @@ -16598,6 +16900,7 @@ Body: WalkSpeed: 160 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 04 Drops: @@ -16645,6 +16948,7 @@ Body: WalkSpeed: 165 AttackDelay: 1380 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 03 Drops: @@ -16692,6 +16996,7 @@ Body: WalkSpeed: 180 AttackDelay: 1446 AttackMotion: 1296 + ClientAttackMotion: 768 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -16750,6 +17055,7 @@ Body: WalkSpeed: 165 AttackDelay: 850 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 21 Modes: @@ -16799,6 +17105,7 @@ Body: WalkSpeed: 350 AttackDelay: 720 AttackMotion: 864 + ClientAttackMotion: 540 DamageMotion: 504 Ai: 04 Drops: @@ -16842,6 +17149,7 @@ Body: WalkSpeed: 155 AttackDelay: 972 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 470 Ai: 04 Modes: @@ -16891,6 +17199,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 Drops: @@ -16940,6 +17249,7 @@ Body: WalkSpeed: 170 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 672 DamageMotion: 672 Ai: 04 Modes: @@ -16983,6 +17293,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -17032,6 +17343,7 @@ Body: WalkSpeed: 165 AttackDelay: 1300 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 04 Drops: @@ -17071,6 +17383,7 @@ Body: WalkSpeed: 165 AttackDelay: 1492 AttackMotion: 1092 + ClientAttackMotion: 840 DamageMotion: 192 Ai: 04 Drops: @@ -17112,6 +17425,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 864 DamageMotion: 180 Ai: 04 Modes: @@ -17159,6 +17473,7 @@ Body: WalkSpeed: 165 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 Drops: @@ -17202,6 +17517,7 @@ Body: WalkSpeed: 175 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 13 Drops: @@ -17247,6 +17563,7 @@ Body: WalkSpeed: 175 AttackDelay: 1024 AttackMotion: 624 + ClientAttackMotion: 336 DamageMotion: 336 Ai: 13 Drops: @@ -17294,6 +17611,7 @@ Body: WalkSpeed: 195 AttackDelay: 1350 AttackMotion: 1200 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Drops: @@ -17342,6 +17660,7 @@ Body: WalkSpeed: 170 AttackDelay: 1264 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 04 Drops: @@ -17386,6 +17705,7 @@ Body: WalkSpeed: 180 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 480 Ai: 21 Class: Boss @@ -17433,6 +17753,7 @@ Body: WalkSpeed: 145 AttackDelay: 1290 AttackMotion: 1140 + ClientAttackMotion: 780 DamageMotion: 576 DamageTaken: 10 Ai: 21 @@ -17489,6 +17810,7 @@ Body: WalkSpeed: 170 AttackDelay: 1356 AttackMotion: 1056 + ClientAttackMotion: 240 DamageMotion: 540 Ai: 05 Drops: @@ -17537,6 +17859,7 @@ Body: WalkSpeed: 165 AttackDelay: 1430 AttackMotion: 1080 + ClientAttackMotion: 480 DamageMotion: 1080 Ai: 07 Drops: @@ -17584,6 +17907,7 @@ Body: WalkSpeed: 155 AttackDelay: 2416 AttackMotion: 2016 + ClientAttackMotion: 1008 DamageMotion: 432 Ai: 05 Drops: @@ -17627,6 +17951,7 @@ Body: WalkSpeed: 300 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 - Id: 1394 @@ -17652,6 +17977,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 - Id: 1395 @@ -17667,6 +17993,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -17705,6 +18032,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -17743,6 +18071,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -17781,6 +18110,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -17833,6 +18163,7 @@ Body: WalkSpeed: 130 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -17890,6 +18221,7 @@ Body: WalkSpeed: 155 AttackDelay: 1638 AttackMotion: 2016 + ClientAttackMotion: 432 DamageMotion: 576 Ai: 01 Drops: @@ -17939,6 +18271,7 @@ Body: WalkSpeed: 150 AttackDelay: 1003 AttackMotion: 1152 + ClientAttackMotion: 2112 DamageMotion: 336 Ai: 21 Drops: @@ -17987,6 +18320,7 @@ Body: WalkSpeed: 160 AttackDelay: 1148 AttackMotion: 1728 + ClientAttackMotion: 624 DamageMotion: 864 Ai: 01 Drops: @@ -18035,6 +18369,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 05 Drops: @@ -18083,6 +18418,7 @@ Body: WalkSpeed: 250 AttackDelay: 1938 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 17 Modes: @@ -18133,6 +18469,7 @@ Body: WalkSpeed: 200 AttackDelay: 1439 AttackMotion: 1920 + ClientAttackMotion: 624 DamageMotion: 672 Ai: 04 Modes: @@ -18183,6 +18520,7 @@ Body: WalkSpeed: 165 AttackDelay: 2012 AttackMotion: 1728 + ClientAttackMotion: 576 DamageMotion: 672 Ai: 04 Drops: @@ -18238,6 +18576,7 @@ Body: WalkSpeed: 145 AttackDelay: 472 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 13 Modes: @@ -18289,6 +18628,7 @@ Body: WalkSpeed: 160 AttackDelay: 1247 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 17 Drops: @@ -18335,6 +18675,7 @@ Body: WalkSpeed: 410 AttackDelay: 400 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 05 Drops: @@ -18391,6 +18732,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 840 + ClientAttackMotion: 624 DamageMotion: 432 Ai: 05 Drops: @@ -18439,6 +18781,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 756 + ClientAttackMotion: 540 DamageMotion: 360 Ai: 17 Drops: @@ -18495,6 +18838,7 @@ Body: WalkSpeed: 150 AttackDelay: 318 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 04 Drops: @@ -18539,6 +18883,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -18590,6 +18935,7 @@ Body: WalkSpeed: 155 AttackDelay: 780 AttackMotion: 1008 + ClientAttackMotion: 288 DamageMotion: 420 Ai: 17 Drops: @@ -18636,6 +18982,7 @@ Body: WalkSpeed: 200 AttackDelay: 588 AttackMotion: 816 + ClientAttackMotion: 1440 DamageMotion: 420 DamageTaken: 10 Ai: 21 @@ -18691,6 +19038,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 - Id: 1420 @@ -18718,6 +19066,7 @@ Body: WalkSpeed: 300 AttackDelay: 2864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 04 - Id: 1421 @@ -18745,6 +19094,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 Modes: @@ -18774,6 +19124,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -18803,6 +19154,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 - Id: 1424 @@ -18832,6 +19184,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1425 @@ -18859,6 +19212,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 04 - Id: 1426 @@ -18886,6 +19240,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Ai: 04 - Id: 1427 @@ -18913,6 +19268,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -18942,6 +19298,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 - Id: 1429 @@ -18969,6 +19326,7 @@ Body: WalkSpeed: 300 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 04 Modes: @@ -18998,6 +19356,7 @@ Body: WalkSpeed: 300 AttackDelay: 1468 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 04 Modes: @@ -19027,6 +19386,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 04 Modes: @@ -19056,6 +19416,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 04 - Id: 1433 @@ -19083,6 +19444,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Modes: @@ -19112,6 +19474,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 - Id: 1435 @@ -19139,6 +19502,7 @@ Body: WalkSpeed: 300 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 168 DamageMotion: 336 Ai: 04 - Id: 1436 @@ -19166,6 +19530,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 04 - Id: 1437 @@ -19193,6 +19558,7 @@ Body: WalkSpeed: 100 AttackDelay: 1364 AttackMotion: 864 + ClientAttackMotion: 312 DamageMotion: 432 Ai: 04 - Id: 1438 @@ -19220,6 +19586,7 @@ Body: WalkSpeed: 350 AttackDelay: 528 AttackMotion: 1000 + ClientAttackMotion: 240 DamageMotion: 396 Ai: 04 - Id: 1439 @@ -19247,6 +19614,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 04 - Id: 1440 @@ -19274,6 +19642,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 288 DamageMotion: 1000 Ai: 04 - Id: 1441 @@ -19301,6 +19670,7 @@ Body: WalkSpeed: 400 AttackDelay: 832 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 04 - Id: 1442 @@ -19328,6 +19698,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 04 - Id: 1443 @@ -19355,6 +19726,7 @@ Body: WalkSpeed: 400 AttackDelay: 1296 AttackMotion: 1296 + ClientAttackMotion: 1224 DamageMotion: 432 Ai: 04 Drops: @@ -19385,6 +19757,7 @@ Body: WalkSpeed: 400 AttackDelay: 672 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 - Id: 1445 @@ -19412,6 +19785,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 04 - Id: 1446 @@ -19438,6 +19812,7 @@ Body: WalkSpeed: 400 AttackDelay: 770 AttackMotion: 720 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 04 - Id: 1447 @@ -19465,6 +19840,7 @@ Body: WalkSpeed: 100 AttackDelay: 704 AttackMotion: 504 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 04 Class: Boss @@ -19493,6 +19869,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 200 Ai: 04 Modes: @@ -19523,6 +19900,7 @@ Body: WalkSpeed: 250 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 900 DamageMotion: 240 Ai: 04 Class: Boss @@ -19551,6 +19929,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 Modes: @@ -19580,6 +19959,7 @@ Body: WalkSpeed: 220 AttackDelay: 916 AttackMotion: 816 + ClientAttackMotion: 384 DamageMotion: 336 Ai: 04 - Id: 1452 @@ -19607,6 +19987,7 @@ Body: WalkSpeed: 200 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 04 - Id: 1453 @@ -19634,6 +20015,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 972 DamageMotion: 480 Ai: 04 Modes: @@ -19662,6 +20044,7 @@ Body: WalkSpeed: 200 AttackDelay: 860 AttackMotion: 660 + ClientAttackMotion: 540 DamageMotion: 624 Ai: 04 Modes: @@ -19691,6 +20074,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 04 - Id: 1456 @@ -19717,6 +20101,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 04 Class: Boss @@ -19744,6 +20129,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Modes: @@ -19773,6 +20159,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 840 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 04 - Id: 1459 @@ -19800,6 +20187,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 1056 Ai: 04 Modes: @@ -19829,6 +20217,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 04 - Id: 1461 @@ -19856,6 +20245,7 @@ Body: WalkSpeed: 200 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 04 - Id: 1462 @@ -19883,6 +20273,7 @@ Body: WalkSpeed: 200 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 - Id: 1463 @@ -19910,6 +20301,7 @@ Body: WalkSpeed: 400 AttackDelay: 2852 AttackMotion: 1152 + ClientAttackMotion: 768 DamageMotion: 840 Ai: 04 - Id: 1464 @@ -19937,6 +20329,7 @@ Body: WalkSpeed: 165 AttackDelay: 976 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 - Id: 1465 @@ -19964,6 +20357,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 620 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 04 - Id: 1466 @@ -19991,6 +20385,7 @@ Body: WalkSpeed: 150 AttackDelay: 1420 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 528 Ai: 04 - Id: 1467 @@ -20018,6 +20413,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 04 - Id: 1468 @@ -20045,6 +20441,7 @@ Body: WalkSpeed: 400 AttackDelay: 1516 AttackMotion: 816 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 04 - Id: 1469 @@ -20072,6 +20469,7 @@ Body: WalkSpeed: 400 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 - Id: 1470 @@ -20099,6 +20497,7 @@ Body: WalkSpeed: 200 AttackDelay: 1780 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 - Id: 1471 @@ -20126,6 +20525,7 @@ Body: WalkSpeed: 150 AttackDelay: 840 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 - Id: 1472 @@ -20153,6 +20553,7 @@ Body: WalkSpeed: 200 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 04 - Id: 1473 @@ -20180,6 +20581,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 620 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 04 - Id: 1474 @@ -20206,6 +20608,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 - Id: 1475 @@ -20233,6 +20636,7 @@ Body: WalkSpeed: 300 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 04 - Id: 1476 @@ -20260,6 +20664,7 @@ Body: WalkSpeed: 300 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Ai: 04 - Id: 1477 @@ -20288,6 +20693,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 Modes: @@ -20317,6 +20723,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 04 - Id: 1479 @@ -20344,6 +20751,7 @@ Body: WalkSpeed: 350 AttackDelay: 1848 AttackMotion: 500 + ClientAttackMotion: 864 DamageMotion: 576 Ai: 04 - Id: 1480 @@ -20371,6 +20779,7 @@ Body: WalkSpeed: 350 AttackDelay: 1768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 192 Ai: 04 - Id: 1481 @@ -20398,6 +20807,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 1152 DamageMotion: 1000 Ai: 04 - Id: 1482 @@ -20426,6 +20836,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 792 + ClientAttackMotion: 1920 DamageMotion: 384 Ai: 04 - Id: 1483 @@ -20453,6 +20864,7 @@ Body: WalkSpeed: 200 AttackDelay: 1790 AttackMotion: 1440 + ClientAttackMotion: 900 DamageMotion: 540 Ai: 04 Modes: @@ -20482,6 +20894,7 @@ Body: WalkSpeed: 175 AttackDelay: 1744 AttackMotion: 1344 + ClientAttackMotion: 960 DamageMotion: 600 Ai: 04 - Id: 1485 @@ -20509,6 +20922,7 @@ Body: WalkSpeed: 250 AttackDelay: 1152 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 240 Ai: 04 Class: Boss @@ -20538,6 +20952,7 @@ Body: WalkSpeed: 100 AttackDelay: 816 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 240 Ai: 04 Class: Boss @@ -20566,6 +20981,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Class: Boss @@ -20594,6 +21010,7 @@ Body: WalkSpeed: 190 AttackDelay: 900 AttackMotion: 500 + ClientAttackMotion: 660 DamageMotion: 864 Ai: 04 - Id: 1489 @@ -20621,6 +21038,7 @@ Body: WalkSpeed: 300 AttackDelay: 528 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 04 - Id: 1490 @@ -20649,6 +21067,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 04 Modes: @@ -20678,6 +21097,7 @@ Body: WalkSpeed: 250 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Modes: @@ -20711,6 +21131,7 @@ Body: WalkSpeed: 135 AttackDelay: 874 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 576 DamageTaken: 10 Ai: 21 @@ -20769,6 +21190,7 @@ Body: WalkSpeed: 170 AttackDelay: 950 AttackMotion: 2520 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -20814,6 +21236,7 @@ Body: WalkSpeed: 165 AttackDelay: 1247 AttackMotion: 768 + ClientAttackMotion: 240 DamageMotion: 576 Ai: 03 Modes: @@ -20859,6 +21282,7 @@ Body: WalkSpeed: 175 AttackDelay: 2413 AttackMotion: 1248 + ClientAttackMotion: 96 DamageMotion: 768 Ai: 04 Drops: @@ -20913,6 +21337,7 @@ Body: WalkSpeed: 165 AttackDelay: 1543 AttackMotion: 1632 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Drops: @@ -20960,6 +21385,7 @@ Body: WalkSpeed: 200 AttackDelay: 857 AttackMotion: 1056 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 04 Drops: @@ -21007,6 +21433,7 @@ Body: WalkSpeed: 200 AttackDelay: 912 AttackMotion: 1344 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Drops: @@ -21054,6 +21481,7 @@ Body: WalkSpeed: 400 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 672 Ai: 10 Drops: @@ -21110,6 +21538,7 @@ Body: WalkSpeed: 160 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Class: Boss @@ -21167,6 +21596,7 @@ Body: WalkSpeed: 180 AttackDelay: 917 AttackMotion: 1584 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 04 Modes: @@ -21216,6 +21646,7 @@ Body: WalkSpeed: 155 AttackDelay: 847 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Drops: @@ -21261,6 +21692,7 @@ Body: WalkSpeed: 125 AttackDelay: 747 AttackMotion: 1632 + ClientAttackMotion: 1440 DamageMotion: 576 Ai: 04 Modes: @@ -21310,6 +21742,7 @@ Body: WalkSpeed: 147 AttackDelay: 516 AttackMotion: 768 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 04 Modes: @@ -21359,6 +21792,7 @@ Body: WalkSpeed: 175 AttackDelay: 914 AttackMotion: 1344 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -21406,6 +21840,7 @@ Body: WalkSpeed: 150 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 04 Drops: @@ -21449,6 +21884,7 @@ Body: WalkSpeed: 150 AttackDelay: 890 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Drops: @@ -21497,6 +21933,7 @@ Body: WalkSpeed: 155 AttackDelay: 741 AttackMotion: 1536 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 04 Modes: @@ -21547,6 +21984,7 @@ Body: WalkSpeed: 170 AttackDelay: 854 AttackMotion: 2016 + ClientAttackMotion: 720 DamageMotion: 480 DamageTaken: 10 Ai: 10 @@ -21606,6 +22044,7 @@ Body: WalkSpeed: 180 AttackDelay: 890 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 720 Ai: 04 Drops: @@ -21654,6 +22093,7 @@ Body: WalkSpeed: 200 AttackDelay: 1257 AttackMotion: 528 + ClientAttackMotion: 864 DamageMotion: 432 Ai: 04 Drops: @@ -21698,6 +22138,7 @@ Body: WalkSpeed: 160 AttackDelay: 600 AttackMotion: 840 + ClientAttackMotion: 480 DamageMotion: 504 Ai: 02 Drops: @@ -21742,6 +22183,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -21786,6 +22228,7 @@ Body: WalkSpeed: 445 AttackDelay: 106 AttackMotion: 1056 + ClientAttackMotion: 624 DamageMotion: 576 Ai: 17 Drops: @@ -21828,6 +22271,7 @@ Body: WalkSpeed: 165 AttackDelay: 1120 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 04 Modes: @@ -21873,6 +22317,7 @@ Body: WalkSpeed: 160 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Class: Boss @@ -21924,6 +22369,7 @@ Body: WalkSpeed: 170 AttackDelay: 1728 AttackMotion: 816 + ClientAttackMotion: 240 DamageMotion: 1188 Ai: 04 Drops: @@ -21966,6 +22412,7 @@ Body: WalkSpeed: 170 AttackDelay: 1152 AttackMotion: 672 + ClientAttackMotion: 432 DamageMotion: 672 Ai: 01 Drops: @@ -22011,6 +22458,7 @@ Body: WalkSpeed: 200 AttackDelay: 520 AttackMotion: 2304 + ClientAttackMotion: 2112 DamageMotion: 480 Ai: 17 - Id: 1522 @@ -22038,6 +22486,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 - Id: 1523 @@ -22066,6 +22515,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 05 - Id: 1524 @@ -22093,6 +22543,7 @@ Body: WalkSpeed: 150 AttackDelay: 318 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 04 - Id: 1525 @@ -22120,6 +22571,7 @@ Body: WalkSpeed: 100 AttackDelay: 1504 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 - Id: 1526 @@ -22147,6 +22599,7 @@ Body: WalkSpeed: 145 AttackDelay: 472 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 13 Modes: @@ -22176,6 +22629,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 384 Ai: 17 - Id: 1528 @@ -22203,6 +22657,7 @@ Body: WalkSpeed: 200 AttackDelay: 1092 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 - Id: 1529 @@ -22231,6 +22686,7 @@ Body: WalkSpeed: 200 AttackDelay: 588 AttackMotion: 816 + ClientAttackMotion: 288 DamageMotion: 420 Ai: 21 Class: Boss @@ -22259,6 +22715,7 @@ Body: WalkSpeed: 145 AttackDelay: 1290 AttackMotion: 1140 + ClientAttackMotion: 780 DamageMotion: 576 Ai: 21 Class: Boss @@ -22288,6 +22745,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 840 + ClientAttackMotion: 624 DamageMotion: 432 Ai: 05 - Id: 1532 @@ -22315,6 +22773,7 @@ Body: WalkSpeed: 165 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 - Id: 1533 @@ -22343,6 +22802,7 @@ Body: WalkSpeed: 200 AttackDelay: 1612 AttackMotion: 622 + ClientAttackMotion: 576 DamageMotion: 583 Ai: 19 - Id: 1534 @@ -22370,6 +22830,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 - Id: 1535 @@ -22397,6 +22858,7 @@ Body: WalkSpeed: 150 AttackDelay: 1320 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 19 - Id: 1536 @@ -22424,6 +22886,7 @@ Body: WalkSpeed: 250 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 - Id: 1537 @@ -22451,6 +22914,7 @@ Body: WalkSpeed: 200 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 13 - Id: 1538 @@ -22478,6 +22942,7 @@ Body: WalkSpeed: 300 AttackDelay: 3074 AttackMotion: 1874 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 13 - Id: 1539 @@ -22505,6 +22970,7 @@ Body: WalkSpeed: 120 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 1056 DamageMotion: 240 Ai: 21 - Id: 1540 @@ -22532,6 +22998,7 @@ Body: WalkSpeed: 300 AttackDelay: 1608 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 17 - Id: 1541 @@ -22559,6 +23026,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 816 DamageMotion: 384 Ai: 10 - Id: 1542 @@ -22586,6 +23054,7 @@ Body: WalkSpeed: 135 AttackDelay: 874 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 576 Ai: 21 Class: Boss @@ -22614,6 +23083,7 @@ Body: WalkSpeed: 165 AttackDelay: 2012 AttackMotion: 1728 + ClientAttackMotion: 576 DamageMotion: 672 Ai: 04 - Id: 1544 @@ -22641,6 +23111,7 @@ Body: WalkSpeed: 155 AttackDelay: 1638 AttackMotion: 2016 + ClientAttackMotion: 432 DamageMotion: 576 Ai: 01 - Id: 1545 @@ -22668,6 +23139,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 - Id: 1546 @@ -22695,6 +23167,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 - Id: 1547 @@ -22722,6 +23195,7 @@ Body: WalkSpeed: 300 AttackDelay: 1228 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 - Id: 1548 @@ -22749,6 +23223,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 - Id: 1549 @@ -22776,6 +23251,7 @@ Body: WalkSpeed: 400 AttackDelay: 2190 AttackMotion: 2040 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 19 - Id: 1550 @@ -22804,6 +23280,7 @@ Body: WalkSpeed: 410 AttackDelay: 400 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 05 - Id: 1551 @@ -22831,6 +23308,7 @@ Body: WalkSpeed: 300 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 468 DamageMotion: 528 Ai: 17 - Id: 1552 @@ -22859,6 +23337,7 @@ Body: WalkSpeed: 250 AttackDelay: 1938 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 17 Modes: @@ -22888,6 +23367,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 - Id: 1554 @@ -22915,6 +23395,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -22944,6 +23425,7 @@ Body: WalkSpeed: 400 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 672 Ai: 10 - Id: 1556 @@ -22972,6 +23454,7 @@ Body: WalkSpeed: 160 AttackDelay: 1148 AttackMotion: 1728 + ClientAttackMotion: 624 DamageMotion: 864 Ai: 01 - Id: 1557 @@ -22999,6 +23482,7 @@ Body: WalkSpeed: 155 AttackDelay: 2416 AttackMotion: 2016 + ClientAttackMotion: 1008 DamageMotion: 432 Ai: 05 - Id: 1558 @@ -23026,6 +23510,7 @@ Body: WalkSpeed: 250 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 - Id: 1559 @@ -23053,6 +23538,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 19 Modes: @@ -23084,6 +23570,7 @@ Body: WalkSpeed: 150 AttackDelay: 1003 AttackMotion: 1152 + ClientAttackMotion: 2112 DamageMotion: 336 Ai: 21 - Id: 1561 @@ -23110,6 +23597,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 - Id: 1562 @@ -23137,6 +23625,7 @@ Body: WalkSpeed: 200 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 - Id: 1563 @@ -23164,6 +23653,7 @@ Body: WalkSpeed: 200 AttackDelay: 1439 AttackMotion: 1920 + ClientAttackMotion: 624 DamageMotion: 672 Ai: 04 Modes: @@ -23194,6 +23684,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -23224,6 +23715,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 756 + ClientAttackMotion: 540 DamageMotion: 360 Ai: 17 - Id: 1566 @@ -23251,6 +23743,7 @@ Body: WalkSpeed: 175 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 720 DamageMotion: 240 Ai: 21 - Id: 1567 @@ -23278,6 +23771,7 @@ Body: WalkSpeed: 165 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -23307,6 +23801,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 672 Ai: 21 Class: Boss @@ -23335,6 +23830,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 - Id: 1570 @@ -23362,6 +23858,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 1000 Ai: 19 - Id: 1571 @@ -23389,6 +23886,7 @@ Body: WalkSpeed: 400 AttackDelay: 1680 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 - Id: 1572 @@ -23412,6 +23910,7 @@ Body: WalkSpeed: 400 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 1573 @@ -23439,6 +23938,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 - Id: 1574 @@ -23463,6 +23963,7 @@ Body: WalkSpeed: 200 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 19 - Id: 1575 @@ -23490,6 +23991,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1432 AttackMotion: 432 + ClientAttackMotion: 180 DamageMotion: 576 Ai: 10 - Id: 1576 @@ -23517,6 +24019,7 @@ Body: WalkSpeed: 300 AttackDelay: 1220 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 648 Ai: 21 Class: Boss @@ -23544,6 +24047,7 @@ Body: WalkSpeed: 200 AttackDelay: 1172 AttackMotion: 672 + ClientAttackMotion: 528 DamageMotion: 420 Ai: 05 - Id: 1578 @@ -23571,6 +24075,7 @@ Body: WalkSpeed: 400 AttackDelay: 1888 AttackMotion: 1152 + ClientAttackMotion: 552 DamageMotion: 828 Ai: 13 - Id: 1579 @@ -23597,6 +24102,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 10 - Id: 1580 @@ -23624,6 +24130,7 @@ Body: WalkSpeed: 165 AttackDelay: 850 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 21 Modes: @@ -23653,6 +24160,7 @@ Body: WalkSpeed: 200 AttackDelay: 1080 AttackMotion: 648 + ClientAttackMotion: 600 DamageMotion: 480 Ai: 21 Modes: @@ -23684,6 +24192,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 1056 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 21 Class: Boss @@ -23733,6 +24242,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 288 + ClientAttackMotion: 384 DamageMotion: 144 DamageTaken: 10 Ai: 21 @@ -23791,6 +24301,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 672 Ai: 13 Modes: @@ -23833,6 +24344,7 @@ Body: WalkSpeed: 400 AttackDelay: 676 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 Drops: @@ -23865,6 +24377,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 720 Ai: 02 Drops: @@ -23912,6 +24425,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 1536 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 19 Drops: @@ -23959,6 +24473,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 01 Drops: @@ -24004,6 +24519,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 - Id: 1590 @@ -24031,6 +24547,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1308 AttackMotion: 1008 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 - Id: 1591 @@ -24057,6 +24574,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 04 Class: Boss @@ -24087,6 +24605,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 560 + ClientAttackMotion: 576 DamageMotion: 580 Ai: 04 Class: Boss @@ -24123,6 +24642,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Class: Boss @@ -24154,6 +24674,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 - Id: 1595 @@ -24181,6 +24702,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 - Id: 1596 @@ -24208,6 +24730,7 @@ Body: WalkSpeed: 140 AttackDelay: 512 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 672 Ai: 13 Modes: @@ -24237,6 +24760,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -24266,6 +24790,7 @@ Body: WalkSpeed: 180 AttackDelay: 1732 AttackMotion: 1332 + ClientAttackMotion: 468 DamageMotion: 540 Ai: 20 Modes: @@ -24295,6 +24820,7 @@ Body: WalkSpeed: 250 AttackDelay: 2536 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 672 Ai: 21 Modes: @@ -24324,6 +24850,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1200 DamageMotion: 528 Ai: 21 - Id: 1601 @@ -24351,6 +24878,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 483 + ClientAttackMotion: 720 DamageMotion: 528 Ai: 21 - Id: 1602 @@ -24378,6 +24906,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1248 DamageMotion: 528 Ai: 21 - Id: 1603 @@ -24403,6 +24932,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 - Id: 1604 @@ -24430,6 +24960,7 @@ Body: WalkSpeed: 155 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 340 Ai: 21 Modes: @@ -24459,6 +24990,7 @@ Body: WalkSpeed: 145 AttackDelay: 1024 AttackMotion: 768 + ClientAttackMotion: 5280 DamageMotion: 480 Ai: 21 Class: Boss @@ -24488,6 +25020,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1607 @@ -24514,6 +25047,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 - Id: 1608 @@ -24539,6 +25073,7 @@ Body: WalkSpeed: 300 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 13 Modes: @@ -24569,6 +25104,7 @@ Body: WalkSpeed: 160 AttackDelay: 600 AttackMotion: 840 + ClientAttackMotion: 480 DamageMotion: 504 Ai: 02 Class: Boss @@ -24608,6 +25144,7 @@ Body: WalkSpeed: 100 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 Class: Boss @@ -24644,6 +25181,7 @@ Body: WalkSpeed: 200 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 19 Class: Boss @@ -24681,6 +25219,7 @@ Body: WalkSpeed: 180 AttackDelay: 890 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 720 Ai: 04 Class: Boss @@ -24719,6 +25258,7 @@ Body: WalkSpeed: 300 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -24766,6 +25306,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 Drops: @@ -24813,6 +25354,7 @@ Body: WalkSpeed: 350 AttackDelay: 720 AttackMotion: 864 + ClientAttackMotion: 624 DamageMotion: 504 Ai: 04 Drops: @@ -24858,6 +25400,7 @@ Body: WalkSpeed: 180 AttackDelay: 960 AttackMotion: 336 + ClientAttackMotion: 240 DamageMotion: 300 Ai: 17 Drops: @@ -24906,6 +25449,7 @@ Body: WalkSpeed: 300 AttackDelay: 1152 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -24953,6 +25497,7 @@ Body: WalkSpeed: 350 AttackDelay: 420 AttackMotion: 576 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 21 Modes: @@ -25002,6 +25547,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 120 DamageMotion: 360 Ai: 02 Modes: @@ -25050,6 +25596,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 672 Ai: 04 Drops: @@ -25097,6 +25644,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 672 Ai: 04 Drops: @@ -25146,6 +25694,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 600 DamageMotion: 504 Ai: 20 Drops: @@ -25195,6 +25744,7 @@ Body: WalkSpeed: 220 AttackDelay: 128 AttackMotion: 1104 + ClientAttackMotion: 480 DamageMotion: 240 DamageTaken: 10 Ai: 21 @@ -25252,6 +25802,7 @@ Body: WalkSpeed: 220 AttackDelay: 1152 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 - Id: 1625 @@ -25281,6 +25832,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 120 DamageMotion: 360 Ai: 04 Modes: @@ -25312,6 +25864,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Class: Boss @@ -25355,6 +25908,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 04 Modes: @@ -25393,6 +25947,7 @@ Body: WalkSpeed: 300 AttackDelay: 1400 AttackMotion: 960 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 03 Drops: @@ -25434,6 +25989,7 @@ Body: WalkSpeed: 200 AttackDelay: 336 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Drops: @@ -25473,6 +26029,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -25532,6 +26089,7 @@ Body: WalkSpeed: 150 AttackDelay: 1728 AttackMotion: 816 + ClientAttackMotion: 240 DamageMotion: 1188 Ai: 21 Drops: @@ -25580,6 +26138,7 @@ Body: WalkSpeed: 140 AttackDelay: 432 AttackMotion: 540 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 17 Modes: @@ -25629,6 +26188,7 @@ Body: WalkSpeed: 190 AttackDelay: 336 AttackMotion: 840 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 Drops: @@ -25675,6 +26235,7 @@ Body: WalkSpeed: 170 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 19 Modes: @@ -25727,6 +26288,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 19 Modes: @@ -25779,6 +26341,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 19 Drops: @@ -25829,6 +26392,7 @@ Body: WalkSpeed: 180 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 Drops: @@ -25879,6 +26443,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 19 Drops: @@ -25929,6 +26494,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 Drops: @@ -25977,6 +26543,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26014,6 +26581,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26052,6 +26620,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -26090,6 +26659,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26128,6 +26698,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26166,6 +26737,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26205,6 +26777,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26265,6 +26838,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26326,6 +26900,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -26387,6 +26962,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26448,6 +27024,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26509,6 +27086,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26569,6 +27147,7 @@ Body: WalkSpeed: 145 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -26619,6 +27198,7 @@ Body: WalkSpeed: 120 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -26669,6 +27249,7 @@ Body: WalkSpeed: 120 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 04 Drops: @@ -26719,6 +27300,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26769,6 +27351,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26819,6 +27402,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -26870,6 +27454,7 @@ Body: WalkSpeed: 100 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -26929,6 +27514,7 @@ Body: WalkSpeed: 120 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -26962,6 +27548,7 @@ Body: WalkSpeed: 120 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 04 Drops: @@ -26995,6 +27582,7 @@ Body: WalkSpeed: 130 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -27028,6 +27616,7 @@ Body: WalkSpeed: 150 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -27061,6 +27650,7 @@ Body: WalkSpeed: 150 AttackDelay: 1008 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -27092,6 +27682,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -27127,6 +27718,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -27164,6 +27756,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -27199,6 +27792,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -27235,6 +27829,7 @@ Body: WalkSpeed: 180 AttackDelay: 580 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 21 Drops: @@ -27278,6 +27873,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27311,6 +27907,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27358,6 +27955,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27405,6 +28003,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27452,6 +28051,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -27495,6 +28095,7 @@ Body: WalkSpeed: 400 AttackDelay: 1368 AttackMotion: 1344 + ClientAttackMotion: 480 DamageMotion: 432 Ai: 10 Class: Boss @@ -27529,6 +28130,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27562,6 +28164,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27609,6 +28212,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27656,6 +28260,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27703,6 +28308,7 @@ Body: WalkSpeed: 150 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -27750,6 +28356,7 @@ Body: WalkSpeed: 170 AttackDelay: 504 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 04 Drops: @@ -27793,6 +28400,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 360 + ClientAttackMotion: 240 DamageMotion: 864 Ai: 04 Class: Boss @@ -27842,6 +28450,7 @@ Body: WalkSpeed: 250 AttackDelay: 1536 AttackMotion: 1056 + ClientAttackMotion: 336 DamageMotion: 1152 Ai: 04 Drops: @@ -27886,6 +28495,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 - Id: 1684 @@ -27913,6 +28523,7 @@ Body: WalkSpeed: 180 AttackDelay: 1080 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 04 - Id: 1685 @@ -27943,6 +28554,7 @@ Body: WalkSpeed: 180 AttackDelay: 504 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -28002,6 +28614,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 288 Ai: 04 Drops: @@ -28050,6 +28663,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 Drops: @@ -28098,6 +28712,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 384 DamageMotion: 360 DamageTaken: 10 Ai: 10 @@ -28155,6 +28770,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Class: Boss @@ -28175,6 +28791,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 2304 DamageMotion: 511 Ai: 02 Class: Boss @@ -28208,6 +28825,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 1536 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 04 Drops: @@ -28252,6 +28870,7 @@ Body: WalkSpeed: 100 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 04 Drops: @@ -28299,6 +28918,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 1296 DamageMotion: 336 Ai: 04 Drops: @@ -28344,6 +28964,7 @@ Body: WalkSpeed: 150 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -28387,6 +29008,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 1296 DamageMotion: 1000 Ai: 04 Drops: @@ -28428,6 +29050,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 672 Ai: 04 Drops: @@ -28471,6 +29094,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 1296 DamageMotion: 360 Ai: 04 Drops: @@ -28513,6 +29137,7 @@ Body: WalkSpeed: 150 AttackDelay: 176 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 21 Drops: @@ -28560,6 +29185,7 @@ Body: WalkSpeed: 100 AttackDelay: 168 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -28608,6 +29234,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Class: Boss @@ -28657,6 +29284,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 420 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -28704,6 +29332,7 @@ Body: WalkSpeed: 120 AttackDelay: 360 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -28754,6 +29383,7 @@ Body: WalkSpeed: 180 AttackDelay: 576 AttackMotion: 420 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 20 Class: Boss @@ -28806,6 +29436,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 420 Ai: 21 Class: Boss @@ -28855,6 +29486,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 Class: Boss @@ -28904,6 +29536,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 21 Class: Boss @@ -28953,6 +29586,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 21 Class: Boss @@ -29003,6 +29637,7 @@ Body: WalkSpeed: 120 AttackDelay: 115 AttackMotion: 816 + ClientAttackMotion: 672 DamageMotion: 504 DamageTaken: 10 Ai: 21 @@ -29062,6 +29697,7 @@ Body: WalkSpeed: 100 AttackDelay: 115 AttackMotion: 288 + ClientAttackMotion: 192 DamageMotion: 420 Ai: 20 Class: Boss @@ -29100,6 +29736,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 20 Class: Boss @@ -29138,6 +29775,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Class: Boss @@ -29176,6 +29814,7 @@ Body: WalkSpeed: 150 AttackDelay: 160 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 20 Class: Boss @@ -29213,6 +29852,7 @@ Body: WalkSpeed: 170 AttackDelay: 168 AttackMotion: 1008 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 19 Drops: @@ -29260,6 +29900,7 @@ Body: WalkSpeed: 100 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 19 Drops: @@ -29307,6 +29948,7 @@ Body: WalkSpeed: 110 AttackDelay: 151 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -29346,6 +29988,7 @@ Body: WalkSpeed: 180 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 19 Drops: @@ -29393,6 +30036,7 @@ Body: WalkSpeed: 120 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 19 Drops: @@ -29440,6 +30084,7 @@ Body: WalkSpeed: 100 AttackDelay: 252 AttackMotion: 816 + ClientAttackMotion: 528 DamageMotion: 480 Ai: 04 Drops: @@ -29481,6 +30126,7 @@ Body: WalkSpeed: 250 AttackDelay: 432 AttackMotion: 936 + ClientAttackMotion: 240 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -29540,6 +30186,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -29586,6 +30233,7 @@ Body: ElementLevel: 2 WalkSpeed: 1000 AttackDelay: 24 + ClientAttackMotion: 0 Drops: - Item: Elunium Rate: 3 @@ -29630,6 +30278,7 @@ Body: WalkSpeed: 240 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 01 Drops: @@ -29667,6 +30316,7 @@ Body: WalkSpeed: 180 AttackDelay: 1008 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 26 - Id: 1724 @@ -29693,6 +30343,7 @@ Body: WalkSpeed: 300 AttackDelay: 1536 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 27 - Id: 1725 @@ -29715,6 +30366,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -29743,6 +30395,7 @@ Body: WalkSpeed: 150 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 02 - Id: 1727 @@ -29767,6 +30420,7 @@ Body: WalkSpeed: 150 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 312 DamageMotion: 576 Ai: 02 - Id: 1728 @@ -29794,6 +30448,7 @@ Body: WalkSpeed: 150 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 216 DamageMotion: 240 Ai: 02 - Id: 1729 @@ -29819,6 +30474,7 @@ Body: WalkSpeed: 150 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 02 Modes: @@ -29848,6 +30504,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 02 Modes: @@ -29877,6 +30534,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 Ai: 21 Class: Boss @@ -29925,6 +30583,7 @@ Body: WalkSpeed: 140 AttackDelay: 1152 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -29956,6 +30615,7 @@ Body: WalkSpeed: 130 AttackDelay: 1152 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -30014,6 +30674,7 @@ Body: WalkSpeed: 250 AttackDelay: 1080 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 13 Modes: @@ -30063,6 +30724,7 @@ Body: WalkSpeed: 200 AttackDelay: 1296 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 13 Modes: @@ -30113,6 +30775,7 @@ Body: WalkSpeed: 220 AttackDelay: 1440 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 17 Drops: @@ -30160,6 +30823,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 Drops: @@ -30199,6 +30863,7 @@ Body: WalkSpeed: 250 AttackDelay: 1080 AttackMotion: 480 + ClientAttackMotion: 2112 DamageMotion: 504 Ai: 13 Modes: @@ -30232,6 +30897,7 @@ Body: WalkSpeed: 200 AttackDelay: 1296 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 13 Modes: @@ -30265,6 +30931,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 04 Drops: @@ -30295,6 +30962,7 @@ Body: WalkSpeed: 200 AttackDelay: 1078 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 04 Modes: @@ -30324,6 +30992,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -30354,6 +31023,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 Ai: 04 - Id: 1745 @@ -30381,6 +31051,7 @@ Body: WalkSpeed: 110 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 05 Modes: @@ -30414,6 +31085,7 @@ Body: WalkSpeed: 220 AttackDelay: 1440 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 04 Drops: @@ -30446,6 +31118,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1748 @@ -30472,6 +31145,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 - Id: 1749 @@ -30499,6 +31173,7 @@ Body: WalkSpeed: 180 AttackDelay: 1720 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 360 Ai: 04 Modes: @@ -30523,6 +31198,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -30557,6 +31233,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -30613,6 +31290,7 @@ Body: WalkSpeed: 190 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 20 Modes: @@ -30662,6 +31340,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 576 + ClientAttackMotion: 192 DamageMotion: 432 Ai: 20 Modes: @@ -30709,6 +31388,7 @@ Body: WalkSpeed: 250 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -30757,6 +31437,7 @@ Body: WalkSpeed: 250 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -30804,6 +31485,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 Class: Boss @@ -30832,6 +31514,7 @@ Body: WalkSpeed: 170 AttackDelay: 168 AttackMotion: 1008 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 04 - Id: 1758 @@ -30859,6 +31542,7 @@ Body: WalkSpeed: 100 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 - Id: 1759 @@ -30886,6 +31570,7 @@ Body: WalkSpeed: 180 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 04 - Id: 1760 @@ -30913,6 +31598,7 @@ Body: WalkSpeed: 120 AttackDelay: 108 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 - Id: 1761 @@ -30940,6 +31626,7 @@ Body: WalkSpeed: 170 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Modes: @@ -30972,6 +31659,7 @@ Body: WalkSpeed: 130 AttackDelay: 480 AttackMotion: 576 + ClientAttackMotion: 192 DamageMotion: 432 Ai: 04 Modes: @@ -31004,6 +31692,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Class: Boss @@ -31035,6 +31724,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 780 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Class: Boss @@ -31068,6 +31758,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -31103,6 +31794,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 312 DamageMotion: 384 Ai: 21 Class: Boss @@ -31140,6 +31832,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 21 Class: Boss @@ -31183,6 +31876,7 @@ Body: WalkSpeed: 200 AttackDelay: 1344 AttackMotion: 2880 + ClientAttackMotion: 288 DamageMotion: 576 DamageTaken: 10 Ai: 21 @@ -31241,6 +31935,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -31290,6 +31985,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -31339,6 +32035,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -31388,6 +32085,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Drops: @@ -31437,6 +32135,7 @@ Body: WalkSpeed: 140 AttackDelay: 960 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 Modes: @@ -31488,6 +32187,7 @@ Body: WalkSpeed: 190 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 20 Drops: @@ -31533,6 +32233,7 @@ Body: WalkSpeed: 220 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 660 DamageMotion: 420 Ai: 04 Drops: @@ -31580,6 +32281,7 @@ Body: WalkSpeed: 180 AttackDelay: 432 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 02 Drops: @@ -31625,6 +32327,7 @@ Body: WalkSpeed: 250 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 04 Drops: @@ -31672,6 +32375,7 @@ Body: WalkSpeed: 190 AttackDelay: 576 AttackMotion: 370 + ClientAttackMotion: 300 DamageMotion: 270 Ai: 20 Modes: @@ -31722,6 +32426,7 @@ Body: WalkSpeed: 400 AttackDelay: 432 AttackMotion: 840 + ClientAttackMotion: 660 DamageMotion: 216 DamageTaken: 10 Ai: 21 @@ -31780,6 +32485,7 @@ Body: WalkSpeed: 1000 AttackDelay: 672 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 360 Ai: 10 Drops: @@ -31827,6 +32533,7 @@ Body: WalkSpeed: 1000 AttackDelay: 864 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 336 Ai: 10 Drops: @@ -31874,6 +32581,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 600 DamageMotion: 1000 Ai: 07 Drops: @@ -31921,6 +32629,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Class: Boss @@ -31965,6 +32674,7 @@ Body: WalkSpeed: 300 AttackDelay: 936 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 02 Drops: @@ -32013,6 +32723,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 600 + ClientAttackMotion: 480 DamageMotion: 240 DamageTaken: 10 Ai: 21 @@ -32069,6 +32780,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -32100,6 +32812,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -32131,6 +32844,7 @@ Body: WalkSpeed: 250 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 20 Drops: @@ -32159,6 +32873,7 @@ Body: ElementLevel: 2 WalkSpeed: 1000 AttackDelay: 1344 + ClientAttackMotion: 1152 Ai: 10 Drops: - Item: Ice_Piece @@ -32203,6 +32918,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 04 Drops: @@ -32238,6 +32954,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Class: Boss @@ -32298,6 +33015,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 21 - Id: 1794 @@ -32325,6 +33043,7 @@ Body: WalkSpeed: 200 AttackDelay: 412 AttackMotion: 840 + ClientAttackMotion: 600 DamageMotion: 300 Ai: 20 - Id: 1795 @@ -32352,6 +33071,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 04 Class: Boss @@ -32400,6 +33120,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Drops: @@ -32447,6 +33168,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Drops: @@ -32505,6 +33227,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32538,6 +33261,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32572,6 +33296,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -32605,6 +33330,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32638,6 +33364,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32671,6 +33398,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32698,6 +33426,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32730,6 +33459,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32763,6 +33493,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -32796,6 +33527,7 @@ Body: WalkSpeed: 125 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32829,6 +33561,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 Class: Boss @@ -32862,6 +33595,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -32897,6 +33631,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 Drops: @@ -32932,6 +33667,7 @@ Body: WalkSpeed: 150 AttackDelay: 890 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -32975,6 +33711,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 21 Class: Boss @@ -33026,6 +33763,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 Ai: 21 Class: Boss @@ -33054,6 +33792,7 @@ Body: ElementLevel: 1 WalkSpeed: 250 AttackDelay: 1320 + ClientAttackMotion: 504 DamageMotion: 300 Ai: 01 Class: Boss @@ -33134,6 +33873,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 936 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Class: Boss @@ -33180,6 +33920,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Drops: - Item: Piece_Of_Cogwheel @@ -33210,6 +33951,7 @@ Body: WalkSpeed: 100 AttackDelay: 1504 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 Drops: @@ -33238,6 +33980,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Drops: @@ -33268,6 +34011,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 13 Drops: @@ -33298,6 +34042,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -33330,6 +34075,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 Drops: @@ -33361,6 +34107,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -33390,6 +34137,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 01 Drops: @@ -33420,6 +34168,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 Drops: @@ -33449,6 +34198,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 21 Drops: @@ -33477,6 +34227,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 17 Class: Boss @@ -33609,6 +34360,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -33658,6 +34410,7 @@ Body: WalkSpeed: 130 AttackDelay: 212 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -33716,6 +34469,7 @@ Body: WalkSpeed: 150 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Class: Boss @@ -33762,6 +34516,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -33790,6 +34545,7 @@ Body: WalkSpeed: 150 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Class: Boss @@ -33820,6 +34576,7 @@ Body: WalkSpeed: 300 AttackDelay: 1472 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 02 Drops: @@ -33857,6 +34614,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 26 Modes: @@ -33906,6 +34664,7 @@ Body: WalkSpeed: 200 AttackDelay: 1548 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 17 Modes: @@ -33956,6 +34715,7 @@ Body: WalkSpeed: 170 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -34000,6 +34760,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 01 Class: Boss @@ -34045,6 +34806,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Class: Boss @@ -34079,6 +34841,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 17 Class: Boss @@ -34116,6 +34879,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 09 Class: Boss @@ -34153,6 +34917,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 09 Class: Boss @@ -34248,6 +35013,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -34277,6 +35043,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -34306,6 +35073,7 @@ Body: WalkSpeed: 100 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Class: Boss @@ -34335,6 +35103,7 @@ Body: WalkSpeed: 150 AttackDelay: 1678 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 648 Ai: 21 Class: Boss @@ -34370,6 +35139,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 560 + ClientAttackMotion: 576 DamageMotion: 580 Ai: 21 - Id: 1852 @@ -34396,6 +35166,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 312 DamageMotion: 384 Ai: 21 Class: Boss @@ -34423,6 +35194,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 21 Class: Boss @@ -34453,6 +35225,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 02 Drops: @@ -34493,6 +35266,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -34538,6 +35312,7 @@ Body: WalkSpeed: 250 AttackDelay: 1560 AttackMotion: 360 + ClientAttackMotion: 192 DamageMotion: 360 Ai: 02 Modes: @@ -34585,6 +35360,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -34628,6 +35404,7 @@ Body: WalkSpeed: 400 AttackDelay: 2208 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 324 Ai: 01 Drops: @@ -34670,6 +35447,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 Drops: @@ -34715,6 +35493,7 @@ Body: WalkSpeed: 150 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 17 Drops: @@ -34762,6 +35541,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 360 DamageMotion: 1000 Ai: 09 Drops: @@ -34808,6 +35588,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Drops: @@ -34853,6 +35634,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 756 DamageMotion: 511 Ai: 02 Drops: @@ -34889,6 +35671,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Drops: @@ -34936,6 +35719,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 26 Drops: @@ -34984,6 +35768,7 @@ Body: WalkSpeed: 140 AttackDelay: 824 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 360 Ai: 19 Modes: @@ -35031,6 +35816,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 20 Modes: @@ -35076,6 +35862,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 24 Modes: @@ -35107,6 +35894,7 @@ Body: WalkSpeed: 150 AttackDelay: 972 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 432 Ai: 20 Modes: @@ -35150,6 +35938,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 1320 + ClientAttackMotion: 780 DamageMotion: 420 Ai: 21 Class: Boss @@ -35198,6 +35987,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -35254,6 +36044,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 480 + ClientAttackMotion: 252 DamageMotion: 360 Ai: 26 Class: Boss @@ -35282,6 +36073,7 @@ Body: WalkSpeed: 100 AttackDelay: 100 AttackMotion: 576 + ClientAttackMotion: 252 DamageMotion: 480 Ai: 21 Class: Boss @@ -35313,6 +36105,7 @@ Body: WalkSpeed: 100 AttackDelay: 212 AttackMotion: 504 + ClientAttackMotion: 252 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -35370,6 +36163,7 @@ Body: WalkSpeed: 175 AttackDelay: 1816 AttackMotion: 1152 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 21 Class: Event @@ -35406,6 +36200,7 @@ Body: WalkSpeed: 180 AttackDelay: 1446 AttackMotion: 1296 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 21 Class: Boss @@ -35431,6 +36226,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -35464,6 +36260,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 2016 DamageMotion: 1 Modes: IgnoreMagic: true @@ -35506,6 +36303,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 21 Class: Boss @@ -35537,6 +36335,7 @@ Body: WalkSpeed: 320 AttackDelay: 2304 AttackMotion: 840 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 01 Drops: @@ -35585,6 +36384,7 @@ Body: WalkSpeed: 230 AttackDelay: 1728 AttackMotion: 720 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 03 Drops: @@ -35633,6 +36433,7 @@ Body: WalkSpeed: 270 AttackDelay: 1536 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 420 Ai: 04 Drops: @@ -35681,6 +36482,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -35728,6 +36530,7 @@ Body: WalkSpeed: 170 AttackDelay: 1536 AttackMotion: 504 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 04 Drops: @@ -35776,6 +36579,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 864 + ClientAttackMotion: 648 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -35832,6 +36636,7 @@ Body: WalkSpeed: 170 AttackDelay: 1536 AttackMotion: 504 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 - Id: 1887 @@ -35859,6 +36664,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 540 DamageMotion: 528 Ai: 21 Class: Boss @@ -35895,6 +36701,7 @@ Body: WalkSpeed: 450 AttackDelay: 879 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Class: Boss @@ -35928,6 +36735,7 @@ Body: WalkSpeed: 400 AttackDelay: 608 AttackMotion: 408 + ClientAttackMotion: 312 DamageMotion: 336 Ai: 21 Class: Boss @@ -35963,6 +36771,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 864 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 21 Class: Boss @@ -35991,6 +36800,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -36019,6 +36829,7 @@ Body: WalkSpeed: 125 AttackDelay: 747 AttackMotion: 1632 + ClientAttackMotion: 1440 DamageMotion: 576 Ai: 04 Modes: @@ -36049,6 +36860,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 21 - Id: 1894 @@ -36075,6 +36887,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Class: Event @@ -36124,6 +36937,7 @@ Body: WalkSpeed: 170 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 - Id: 1896 @@ -36151,6 +36965,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 20 - Id: 1897 @@ -36178,6 +36993,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -36199,6 +37015,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -36284,6 +37101,7 @@ Body: WalkSpeed: 150 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 03 Modes: @@ -36349,6 +37167,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 13 Class: Boss @@ -36373,6 +37192,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Boss - Id: 1906 @@ -36396,6 +37216,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36423,6 +37244,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Boss - Id: 1908 @@ -36443,6 +37265,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Boss - Id: 1909 @@ -36461,6 +37284,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 288 DamageMotion: 384 Class: Guardian Modes: @@ -36486,6 +37310,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 288 DamageMotion: 384 Class: Guardian Modes: @@ -36511,6 +37336,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36536,6 +37362,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36561,6 +37388,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36586,6 +37414,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36611,6 +37440,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Class: Guardian Modes: @@ -36645,6 +37475,7 @@ Body: WalkSpeed: 100 AttackDelay: 312 AttackMotion: 624 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -36689,6 +37520,7 @@ Body: WalkSpeed: 100 AttackDelay: 312 AttackMotion: 624 + ClientAttackMotion: 336 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -36742,6 +37574,7 @@ Body: WalkSpeed: 110 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Class: Boss @@ -36787,6 +37620,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 648 + ClientAttackMotion: 360 DamageMotion: 300 Ai: 21 Class: Boss @@ -36830,6 +37664,7 @@ Body: WalkSpeed: 150 AttackDelay: 212 AttackMotion: 432 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 21 Class: Boss @@ -36875,6 +37710,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 300 Ai: 21 Class: Boss @@ -36917,6 +37753,7 @@ Body: WalkSpeed: 110 AttackDelay: 312 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 24 Class: Boss @@ -36946,6 +37783,7 @@ Body: WalkSpeed: 150 AttackDelay: 312 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 24 Class: Boss @@ -36975,6 +37813,7 @@ Body: WalkSpeed: 150 AttackDelay: 212 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 360 Ai: 24 Class: Boss @@ -37004,6 +37843,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 24 Class: Boss @@ -37026,6 +37866,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 01 Modes: @@ -37066,6 +37907,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Ai: 01 Modes: @@ -37106,6 +37948,7 @@ Body: WalkSpeed: 150 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 01 Modes: @@ -37144,6 +37987,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -37189,6 +38033,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 21 Class: Boss @@ -37217,6 +38062,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -37239,6 +38085,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Class: Boss @@ -37275,6 +38122,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 480 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 13 Class: Boss @@ -37296,6 +38144,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 0 DamageMotion: 576 Class: Boss Modes: @@ -37321,6 +38170,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 0 DamageMotion: 576 Class: Boss Modes: @@ -37346,6 +38196,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 0 DamageMotion: 576 Class: Boss Modes: @@ -37378,6 +38229,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 - Id: 1938 @@ -37674,6 +38526,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 24 Class: Boss @@ -37703,6 +38556,7 @@ Body: WalkSpeed: 145 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 - Id: 1949 @@ -37774,6 +38628,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -37810,6 +38665,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -37846,6 +38702,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -37882,6 +38739,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 190 + ClientAttackMotion: 960 Ai: 01 Class: Boss Modes: @@ -37966,6 +38824,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 504 Ai: 21 Class: Boss @@ -38013,6 +38872,7 @@ Body: ElementLevel: 4 AttackDelay: 140 AttackMotion: 540 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -38057,6 +38917,7 @@ Body: ElementLevel: 4 AttackDelay: 432 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 27 Class: Boss @@ -38083,6 +38944,7 @@ Body: ElementLevel: 4 AttackDelay: 2864 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 27 Class: Boss @@ -38109,6 +38971,7 @@ Body: ElementLevel: 4 AttackDelay: 1024 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 27 Class: Boss @@ -38135,6 +38998,7 @@ Body: ElementLevel: 4 AttackDelay: 2864 AttackMotion: 288 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 10 Class: Boss @@ -38160,6 +39024,7 @@ Body: WalkSpeed: 100 AttackDelay: 720 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 01 Class: Boss @@ -38195,6 +39060,7 @@ Body: WalkSpeed: 170 AttackDelay: 1728 AttackMotion: 816 + ClientAttackMotion: 240 DamageMotion: 1188 Ai: 21 - Id: 1964 @@ -38219,6 +39085,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Drops: - Item: Blue_Potion @@ -38251,6 +39118,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 - Id: 1966 AegisName: M_DOPPELGANGER @@ -38277,6 +39145,7 @@ Body: WalkSpeed: 100 AttackDelay: 300 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 Class: Boss - Id: 1967 @@ -38305,6 +39174,7 @@ Body: WalkSpeed: 100 AttackDelay: 300 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 288 Class: Boss - Id: 1968 @@ -38333,6 +39203,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 108 DamageMotion: 384 Drops: - Item: Fin @@ -38378,6 +39249,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Drops: - Item: Mistic_Frozen @@ -38420,6 +39292,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Drops: - Item: Mistic_Frozen @@ -38464,6 +39337,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Modes: IgnoreMagic: true @@ -38510,6 +39384,7 @@ Body: WalkSpeed: 400 AttackDelay: 2280 AttackMotion: 1080 + ClientAttackMotion: 288 DamageMotion: 864 Drops: - Item: Single_Cell @@ -38547,6 +39422,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Modes: IgnoreMagic: true @@ -38591,6 +39467,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 20 Modes: @@ -38640,6 +39517,7 @@ Body: WalkSpeed: 190 AttackDelay: 336 AttackMotion: 840 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Drops: @@ -38687,6 +39565,7 @@ Body: WalkSpeed: 200 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Drops: @@ -38734,6 +39613,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 20 Drops: @@ -38782,6 +39662,7 @@ Body: WalkSpeed: 250 AttackDelay: 1840 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 384 Ai: 20 Drops: @@ -38830,6 +39711,7 @@ Body: WalkSpeed: 180 AttackDelay: 580 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Drops: @@ -38879,6 +39761,7 @@ Body: WalkSpeed: 100 AttackDelay: 964 AttackMotion: 648 + ClientAttackMotion: 360 DamageMotion: 300 Ai: 21 Class: Boss @@ -38926,6 +39809,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 21 - Id: 1982 @@ -38954,6 +39838,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 620 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 19 - Id: 1983 @@ -38981,6 +39866,7 @@ Body: WalkSpeed: 130 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 - Id: 1984 @@ -39009,6 +39895,7 @@ Body: WalkSpeed: 145 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 - Id: 1985 @@ -39034,6 +39921,7 @@ Body: WalkSpeed: 250 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 21 - Id: 1986 @@ -39065,6 +39953,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Drops: @@ -39114,6 +40003,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -39165,6 +40055,7 @@ Body: WalkSpeed: 1000 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 10 Drops: @@ -39215,6 +40106,7 @@ Body: WalkSpeed: 130 AttackDelay: 400 AttackMotion: 780 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 13 Drops: @@ -39264,6 +40156,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 660 + ClientAttackMotion: 300 DamageMotion: 588 Ai: 21 Class: Boss @@ -39314,6 +40207,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 960 + ClientAttackMotion: 780 DamageMotion: 360 Ai: 21 Class: Boss @@ -39364,6 +40258,7 @@ Body: WalkSpeed: 120 AttackDelay: 1000 AttackMotion: 624 + ClientAttackMotion: 192 DamageMotion: 300 Ai: 03 Drops: @@ -39413,6 +40308,7 @@ Body: WalkSpeed: 150 AttackDelay: 400 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 21 Drops: @@ -39463,6 +40359,7 @@ Body: WalkSpeed: 110 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 08 Modes: @@ -39514,6 +40411,7 @@ Body: WalkSpeed: 200 AttackDelay: 700 AttackMotion: 600 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 13 Drops: @@ -39600,6 +40498,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 - Id: 1998 @@ -39629,6 +40528,7 @@ Body: WalkSpeed: 100 AttackDelay: 400 AttackMotion: 780 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 13 - Id: 1999 @@ -39660,6 +40560,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -39704,6 +40605,7 @@ Body: WalkSpeed: 200 AttackDelay: 300 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 01 Class: Boss @@ -39731,6 +40633,7 @@ Body: WalkSpeed: 200 AttackDelay: 300 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 01 Class: Boss @@ -39761,6 +40664,7 @@ Body: WalkSpeed: 160 AttackDelay: 1120 AttackMotion: 552 + ClientAttackMotion: 756 DamageMotion: 511 Ai: 02 Drops: @@ -39795,6 +40699,7 @@ Body: WalkSpeed: 160 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Drops: @@ -39836,6 +40741,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Drops: @@ -39876,6 +40782,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -39912,6 +40819,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -39948,6 +40856,7 @@ Body: WalkSpeed: 150 AttackDelay: 608 AttackMotion: 1440 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -39990,6 +40899,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Class: Boss @@ -40020,6 +40930,7 @@ Body: WalkSpeed: 100 AttackDelay: 414 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Class: Boss @@ -40053,6 +40964,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 960 + ClientAttackMotion: 1728 DamageMotion: 780 Ai: 24 - Id: 2011 @@ -40080,6 +40992,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -40120,6 +41033,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -40163,6 +41077,7 @@ Body: WalkSpeed: 250 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 420 DamageMotion: 504 Ai: 03 Drops: @@ -40205,6 +41120,7 @@ Body: ElementLevel: 4 WalkSpeed: 1000 AttackDelay: 24 + ClientAttackMotion: 0 Drops: - Item: Piece_Of_Egg_Shell Rate: 2500 @@ -40240,6 +41156,7 @@ Body: WalkSpeed: 290 AttackDelay: 1426 AttackMotion: 600 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 13 Drops: @@ -40287,6 +41204,7 @@ Body: WalkSpeed: 230 AttackDelay: 504 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 19 Drops: @@ -40330,6 +41248,7 @@ Body: WalkSpeed: 150 AttackDelay: 792 AttackMotion: 540 + ClientAttackMotion: 420 DamageMotion: 420 Ai: 20 Drops: @@ -40373,6 +41292,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 420 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -40420,6 +41340,7 @@ Body: WalkSpeed: 290 AttackDelay: 504 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 13 Drops: @@ -40465,6 +41386,7 @@ Body: WalkSpeed: 240 AttackDelay: 576 AttackMotion: 660 + ClientAttackMotion: 300 DamageMotion: 420 Ai: 13 Drops: @@ -40504,6 +41426,7 @@ Body: WalkSpeed: 240 AttackDelay: 360 AttackMotion: 780 + ClientAttackMotion: 540 DamageMotion: 432 Ai: 05 Drops: @@ -40544,6 +41467,7 @@ Body: WalkSpeed: 150 AttackDelay: 1596 AttackMotion: 1620 + ClientAttackMotion: 576 DamageMotion: 864 Ai: 21 Class: Boss @@ -40594,6 +41518,7 @@ Body: WalkSpeed: 220 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 19 Modes: @@ -40645,6 +41570,7 @@ Body: WalkSpeed: 300 AttackDelay: 1008 AttackMotion: 1200 + ClientAttackMotion: 480 DamageMotion: 540 Ai: 20 Drops: @@ -40685,6 +41611,7 @@ Body: WalkSpeed: 400 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 01 Class: Boss @@ -40737,6 +41664,7 @@ Body: WalkSpeed: 230 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 21 Drops: @@ -40782,6 +41710,7 @@ Body: WalkSpeed: 220 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 24 Modes: @@ -40883,6 +41812,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Drops: @@ -40910,6 +41840,7 @@ Body: WalkSpeed: 250 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 21 Drops: @@ -40940,6 +41871,7 @@ Body: WalkSpeed: 200 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 13 - Id: 2033 @@ -40961,6 +41893,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 960 DamageMotion: 1 Modes: IgnoreMagic: true @@ -40993,6 +41926,7 @@ Body: WalkSpeed: 100 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 216 DamageMotion: 240 Modes: NoRandomWalk: true @@ -41014,6 +41948,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: Detector: true @@ -41040,6 +41975,7 @@ Body: WalkSpeed: 170 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 13 Drops: @@ -41074,6 +42010,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Modes: NoRandomWalk: true @@ -41101,6 +42038,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Modes: NoRandomWalk: true @@ -41129,6 +42067,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 21 Class: Boss @@ -41158,6 +42097,7 @@ Body: WalkSpeed: 100 AttackDelay: 816 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 240 Ai: 21 Class: Boss @@ -41186,6 +42126,7 @@ Body: WalkSpeed: 250 AttackDelay: 1152 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 240 Ai: 21 Class: Boss @@ -41216,6 +42157,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 960 DamageMotion: 360 Ai: 10 Drops: @@ -41245,6 +42187,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -41274,6 +42217,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -41303,6 +42247,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -41332,6 +42277,7 @@ Body: WalkSpeed: 1000 AttackDelay: 504 AttackMotion: 1020 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 06 Drops: @@ -41362,6 +42308,7 @@ Body: WalkSpeed: 150 AttackDelay: 400 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 21 Drops: @@ -41390,6 +42337,7 @@ Body: WalkSpeed: 290 AttackDelay: 1426 AttackMotion: 600 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 13 Drops: @@ -41419,6 +42367,7 @@ Body: WalkSpeed: 300 AttackDelay: 1008 AttackMotion: 1200 + ClientAttackMotion: 480 DamageMotion: 540 Ai: 04 Modes: @@ -41450,6 +42399,7 @@ Body: WalkSpeed: 230 AttackDelay: 504 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 09 Drops: @@ -41509,6 +42459,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 408 DamageMotion: 480 DamageTaken: 10 Ai: 01 @@ -41683,6 +42634,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 1000 Ai: 09 - Id: 2058 @@ -41710,6 +42662,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Modes: NoRandomWalk: true @@ -41738,6 +42691,7 @@ Body: WalkSpeed: 147 AttackDelay: 516 AttackMotion: 768 + ClientAttackMotion: 360 DamageMotion: 384 Modes: NoRandomWalk: true @@ -41767,6 +42721,7 @@ Body: WalkSpeed: 200 AttackDelay: 502 AttackMotion: 1999 + ClientAttackMotion: 2112 DamageMotion: 480 Modes: NoRandomWalk: true @@ -42019,6 +42974,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 21 Class: Event @@ -42054,6 +43010,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 420 DamageMotion: 576 Class: Event Drops: @@ -42090,6 +43047,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 240 DamageMotion: 576 DamageTaken: 10 Ai: 21 @@ -42147,6 +43105,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 17 Drops: @@ -42194,6 +43153,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 864 Ai: 04 Drops: @@ -42241,6 +43201,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 04 Modes: @@ -42291,6 +43252,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 1248 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 Drops: @@ -42335,6 +43297,7 @@ Body: WalkSpeed: 155 AttackDelay: 960 AttackMotion: 1440 + ClientAttackMotion: 300 DamageMotion: 960 Ai: 03 Drops: @@ -42378,6 +43341,7 @@ Body: WalkSpeed: 250 AttackDelay: 528 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 07 Drops: @@ -42419,6 +43383,7 @@ Body: WalkSpeed: 150 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Ai: 21 Class: Boss @@ -42469,6 +43434,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Modes: @@ -42498,6 +43464,7 @@ Body: WalkSpeed: 190 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 20 Modes: @@ -42527,6 +43494,7 @@ Body: WalkSpeed: 155 AttackDelay: 1306 AttackMotion: 1056 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Modes: @@ -42554,6 +43522,7 @@ Body: WalkSpeed: 177 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 960 DamageMotion: 288 Class: Boss - Id: 2080 @@ -42583,6 +43552,7 @@ Body: WalkSpeed: 177 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 960 DamageMotion: 288 Class: Boss Modes: @@ -42628,6 +43598,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 600 Class: Guardian - Id: 2082 @@ -42655,6 +43626,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 864 Ai: 20 - Id: 2083 @@ -42687,6 +43659,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 03 Modes: @@ -42737,6 +43710,7 @@ Body: WalkSpeed: 150 AttackDelay: 336 AttackMotion: 360 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 03 Modes: @@ -42786,6 +43760,7 @@ Body: WalkSpeed: 200 AttackDelay: 504 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 04 Modes: @@ -42837,6 +43812,7 @@ Body: WalkSpeed: 150 AttackDelay: 588 AttackMotion: 768 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Modes: @@ -42890,6 +43866,7 @@ Body: WalkSpeed: 120 AttackDelay: 864 AttackMotion: 1000 + ClientAttackMotion: 300 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -42942,6 +43919,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Modes: Detector: true @@ -42977,6 +43955,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Modes: Detector: true @@ -43012,6 +43991,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Modes: Detector: true @@ -43047,6 +44027,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Modes: Detector: true @@ -43086,6 +44067,7 @@ Body: WalkSpeed: 250 AttackDelay: 360 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 600 Ai: 04 Modes: @@ -43135,6 +44117,7 @@ Body: WalkSpeed: 170 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 01 Modes: @@ -43188,6 +44171,7 @@ Body: WalkSpeed: 150 AttackDelay: 1678 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 648 Ai: 21 Class: Boss @@ -43246,6 +44230,7 @@ Body: WalkSpeed: 300 AttackDelay: 872 AttackMotion: 1344 + ClientAttackMotion: 408 DamageMotion: 432 Ai: 21 Class: Boss @@ -43304,6 +44289,7 @@ Body: WalkSpeed: 100 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 21 Class: Boss @@ -43362,6 +44348,7 @@ Body: WalkSpeed: 145 AttackDelay: 1290 AttackMotion: 1140 + ClientAttackMotion: 780 DamageMotion: 576 Ai: 21 Class: Boss @@ -43420,6 +44407,7 @@ Body: WalkSpeed: 100 AttackDelay: 480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 288 Ai: 21 Class: Boss @@ -43478,6 +44466,7 @@ Body: WalkSpeed: 100 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 300 Ai: 21 Class: Boss @@ -43536,6 +44525,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Class: Boss @@ -43593,6 +44583,7 @@ Body: WalkSpeed: 180 AttackDelay: 1446 AttackMotion: 1296 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 21 Class: Boss @@ -43650,6 +44641,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 408 DamageMotion: 480 Ai: 21 Class: Boss @@ -43701,6 +44693,7 @@ Body: WalkSpeed: 400 AttackDelay: 432 AttackMotion: 840 + ClientAttackMotion: 660 DamageMotion: 216 Ai: 21 Class: Boss @@ -43760,6 +44753,7 @@ Body: WalkSpeed: 200 AttackDelay: 588 AttackMotion: 816 + ClientAttackMotion: 288 DamageMotion: 420 Ai: 21 Class: Boss @@ -43818,6 +44812,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 500 Ai: 21 Class: Boss @@ -43876,6 +44871,7 @@ Body: WalkSpeed: 180 AttackDelay: 504 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 432 Ai: 21 Class: Boss @@ -43935,6 +44931,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -43994,6 +44991,7 @@ Body: WalkSpeed: 200 AttackDelay: 1344 AttackMotion: 2880 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 21 Class: Boss @@ -44052,6 +45050,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -44110,6 +45109,7 @@ Body: WalkSpeed: 130 AttackDelay: 212 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Class: Boss @@ -44169,6 +45169,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -44227,6 +45228,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -44282,6 +45284,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -44491,6 +45494,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 04 Modes: @@ -44518,6 +45522,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 336 DamageMotion: 216 Ai: 01 Modes: @@ -44546,6 +45551,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 336 DamageMotion: 216 Ai: 01 Modes: @@ -44574,6 +45580,7 @@ Body: WalkSpeed: 110 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 08 Modes: @@ -44604,6 +45611,7 @@ Body: WalkSpeed: 110 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 08 Modes: @@ -44639,6 +45647,7 @@ Body: WalkSpeed: 150 AttackDelay: 840 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 576 Ai: 21 Class: Boss @@ -44689,6 +45698,7 @@ Body: WalkSpeed: 250 AttackDelay: 864 AttackMotion: 1056 + ClientAttackMotion: 360 DamageMotion: 576 Ai: 04 Modes: @@ -44734,6 +45744,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 04 Modes: @@ -44777,6 +45788,7 @@ Body: WalkSpeed: 180 AttackDelay: 384 AttackMotion: 792 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Drops: @@ -44808,6 +45820,7 @@ Body: WalkSpeed: 1000 AttackDelay: 192 AttackMotion: 192 + ClientAttackMotion: 0 DamageMotion: 576 Modes: IgnoreMagic: true @@ -44841,6 +45854,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 300 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 04 Drops: @@ -44880,6 +45894,7 @@ Body: WalkSpeed: 250 AttackDelay: 576 AttackMotion: 1140 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 04 Drops: @@ -44908,6 +45923,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 576 + ClientAttackMotion: 768 DamageMotion: 1248 Ai: 25 Class: Boss @@ -44930,6 +45946,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 576 + ClientAttackMotion: 1056 DamageMotion: 1248 Ai: 25 Class: Boss @@ -44952,6 +45969,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 576 + ClientAttackMotion: 768 DamageMotion: 1248 Ai: 25 Class: Boss @@ -44974,6 +45992,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 576 + ClientAttackMotion: 1056 DamageMotion: 1248 Ai: 25 Class: Boss @@ -44996,6 +46015,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 576 + ClientAttackMotion: 768 DamageMotion: 1248 Ai: 25 Class: Boss @@ -45018,6 +46038,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 576 + ClientAttackMotion: 1056 DamageMotion: 1248 Ai: 25 Class: Boss @@ -45053,6 +46074,7 @@ Body: WalkSpeed: 200 AttackDelay: 504 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 24 Modes: @@ -45084,6 +46106,7 @@ Body: WalkSpeed: 150 AttackDelay: 588 AttackMotion: 768 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 24 Modes: @@ -45113,6 +46136,7 @@ Body: WalkSpeed: 150 AttackDelay: 1596 AttackMotion: 1620 + ClientAttackMotion: 576 DamageMotion: 864 Ai: 21 Class: Boss @@ -45126,6 +46150,7 @@ Body: Race: Formless Element: Neutral ElementLevel: 1 + ClientAttackMotion: 960 Ai: 02 - Id: 2148 AegisName: E_BLUE_PLANT @@ -45137,6 +46162,7 @@ Body: Race: Formless Element: Neutral ElementLevel: 1 + ClientAttackMotion: 960 Ai: 02 - Id: 2149 AegisName: E_SAVAGE_BABE @@ -45148,6 +46174,7 @@ Body: Race: Formless Element: Neutral ElementLevel: 1 + ClientAttackMotion: 312 Ai: 02 - Id: 2150 AegisName: WATERMELON @@ -45215,6 +46242,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 360 DamageMotion: 504 Ai: 04 Modes: @@ -45262,6 +46290,7 @@ Body: WalkSpeed: 180 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 04 Modes: @@ -45305,6 +46334,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 Modes: @@ -45346,6 +46376,7 @@ Body: WalkSpeed: 250 AttackDelay: 1152 AttackMotion: 2304 + ClientAttackMotion: 1080 DamageMotion: 432 Ai: 04 Modes: @@ -45391,6 +46422,7 @@ Body: WalkSpeed: 170 AttackDelay: 576 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 17 Modes: @@ -45436,6 +46468,7 @@ Body: WalkSpeed: 130 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -45490,6 +46523,7 @@ Body: Element: Fire ElementLevel: 3 WalkSpeed: 250 + ClientAttackMotion: 1080 Ai: 21 - Id: 2158 AegisName: S_HORNET @@ -45516,6 +46550,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 336 DamageMotion: 216 Ai: 01 Modes: @@ -45546,6 +46581,7 @@ Body: WalkSpeed: 155 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 336 DamageMotion: 340 Ai: 01 Modes: @@ -45576,6 +46612,7 @@ Body: WalkSpeed: 110 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 01 Modes: @@ -45610,6 +46647,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Class: Boss @@ -45660,6 +46698,7 @@ Body: WalkSpeed: 150 AttackDelay: 336 AttackMotion: 360 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -45710,6 +46749,7 @@ Body: WalkSpeed: 200 AttackDelay: 504 AttackMotion: 624 + ClientAttackMotion: 420 DamageMotion: 360 Ai: 20 Class: Boss @@ -45760,6 +46800,7 @@ Body: WalkSpeed: 140 AttackDelay: 588 AttackMotion: 768 + ClientAttackMotion: 1056 DamageMotion: 480 Ai: 20 Class: Boss @@ -45811,6 +46852,7 @@ Body: WalkSpeed: 120 AttackDelay: 864 AttackMotion: 1000 + ClientAttackMotion: 300 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -45868,6 +46910,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Drops: - Item: Piece_Of_Egg_Shell @@ -45904,6 +46947,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Drops: - Item: Piece_Of_Egg_Shell @@ -45939,6 +46983,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Drops: - Item: Piece_Of_Egg_Shell @@ -45974,6 +47019,7 @@ Body: WalkSpeed: 1000 AttackDelay: 96 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 480 Drops: - Item: Piece_Of_Egg_Shell @@ -46013,6 +47059,7 @@ Body: WalkSpeed: 200 AttackDelay: 504 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 20 Class: Boss @@ -46043,6 +47090,7 @@ Body: WalkSpeed: 150 AttackDelay: 588 AttackMotion: 768 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 20 Class: Boss @@ -46073,6 +47121,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 20 Class: Boss @@ -46103,6 +47152,7 @@ Body: WalkSpeed: 150 AttackDelay: 336 AttackMotion: 360 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -46136,6 +47186,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Ai: 20 Class: Boss @@ -46185,6 +47236,7 @@ Body: WalkSpeed: 300 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 468 DamageMotion: 528 Ai: 20 Class: Boss @@ -46234,6 +47286,7 @@ Body: WalkSpeed: 200 AttackDelay: 992 AttackMotion: 792 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 20 Class: Boss @@ -46281,6 +47334,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 48 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 20 Class: Boss @@ -46332,6 +47386,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 468 DamageMotion: 384 Ai: 20 Class: Boss @@ -46384,6 +47439,7 @@ Body: WalkSpeed: 150 AttackDelay: 1776 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 20 Class: Boss @@ -46433,6 +47489,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 108 DamageMotion: 384 Ai: 20 Class: Boss @@ -46482,6 +47539,7 @@ Body: WalkSpeed: 200 AttackDelay: 1968 AttackMotion: 768 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 20 Class: Boss @@ -46531,6 +47589,7 @@ Body: WalkSpeed: 150 AttackDelay: 1272 AttackMotion: 72 + ClientAttackMotion: 216 DamageMotion: 480 Ai: 20 Class: Boss @@ -46580,6 +47639,7 @@ Body: WalkSpeed: 190 AttackDelay: 900 AttackMotion: 500 + ClientAttackMotion: 660 DamageMotion: 864 Ai: 20 Class: Boss @@ -46631,6 +47691,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 20 Class: Boss @@ -46680,6 +47741,7 @@ Body: WalkSpeed: 165 AttackDelay: 2012 AttackMotion: 1728 + ClientAttackMotion: 576 DamageMotion: 672 Ai: 20 Class: Boss @@ -46726,6 +47788,7 @@ Body: WalkSpeed: 165 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -46779,6 +47842,7 @@ Body: WalkSpeed: 165 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -46830,6 +47894,7 @@ Body: WalkSpeed: 165 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -46880,6 +47945,7 @@ Body: WalkSpeed: 165 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -46931,6 +47997,7 @@ Body: WalkSpeed: 165 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -46969,6 +48036,7 @@ Body: WalkSpeed: 1000 AttackDelay: 384 AttackMotion: 720 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 10 Class: Boss @@ -47007,6 +48075,7 @@ Body: WalkSpeed: 300 AttackDelay: 576 AttackMotion: 2160 + ClientAttackMotion: 2016 DamageMotion: 504 Ai: 20 Class: Boss @@ -47048,6 +48117,7 @@ Body: WalkSpeed: 300 AttackDelay: 432 AttackMotion: 720 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 10 Class: Boss @@ -47090,6 +48160,7 @@ Body: WalkSpeed: 300 AttackDelay: 576 AttackMotion: 1584 + ClientAttackMotion: 252 DamageMotion: 360 Ai: 21 Class: Boss @@ -47137,6 +48208,7 @@ Body: WalkSpeed: 150 AttackDelay: 1776 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 20 Modes: @@ -47167,6 +48239,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 108 DamageMotion: 384 Ai: 20 Class: Boss @@ -47197,6 +48270,7 @@ Body: WalkSpeed: 140 AttackDelay: 768 AttackMotion: 1224 + ClientAttackMotion: 420 DamageMotion: 432 Ai: 03 Drops: @@ -47245,6 +48319,7 @@ Body: WalkSpeed: 140 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 720 Ai: 21 Class: Boss @@ -47293,6 +48368,7 @@ Body: WalkSpeed: 250 AttackDelay: 1536 AttackMotion: 1296 + ClientAttackMotion: 240 DamageMotion: 576 Ai: 02 Drops: @@ -47355,6 +48431,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 792 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Modes: @@ -47405,6 +48482,7 @@ Body: WalkSpeed: 130 AttackDelay: 432 AttackMotion: 864 + ClientAttackMotion: 480 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -47463,6 +48541,7 @@ Body: WalkSpeed: 180 AttackDelay: 1008 AttackMotion: 936 + ClientAttackMotion: 792 DamageMotion: 432 Ai: 03 Drops: @@ -47510,6 +48589,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 792 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 04 Modes: @@ -47584,6 +48664,7 @@ Body: WalkSpeed: 1000 AttackDelay: 576 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 240 Ai: 10 Class: Boss @@ -47650,6 +48731,7 @@ Body: WalkSpeed: 120 AttackDelay: 432 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 360 Ai: 21 Class: Boss @@ -47689,6 +48771,7 @@ Body: WalkSpeed: 100 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 01 Modes: @@ -47737,6 +48820,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 02 Drops: @@ -47777,6 +48861,7 @@ Body: WalkSpeed: 160 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 600 DamageMotion: 504 Ai: 02 Modes: @@ -47828,6 +48913,7 @@ Body: WalkSpeed: 200 AttackDelay: 468 AttackMotion: 468 + ClientAttackMotion: 252 DamageMotion: 288 Ai: 02 Class: Boss @@ -47879,6 +48965,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 02 - Id: 2214 @@ -47908,6 +48995,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 02 - Id: 2215 @@ -47936,6 +49024,7 @@ Body: WalkSpeed: 150 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 02 Class: Boss @@ -47965,6 +49054,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 02 Class: Boss @@ -47994,6 +49084,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 600 DamageMotion: 504 Ai: 02 - Id: 2218 @@ -48018,6 +49109,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 540 Ai: 02 Modes: @@ -48057,6 +49149,7 @@ Body: WalkSpeed: 300 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 252 DamageMotion: 540 Ai: 02 Modes: @@ -48097,6 +49190,7 @@ Body: WalkSpeed: 150 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 02 Modes: @@ -48142,6 +49236,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Drops: @@ -48191,6 +49286,7 @@ Body: WalkSpeed: 180 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Drops: @@ -48240,6 +49336,7 @@ Body: WalkSpeed: 180 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 20 Drops: @@ -48290,6 +49387,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 19 Drops: @@ -48339,6 +49437,7 @@ Body: WalkSpeed: 150 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Modes: @@ -48390,6 +49489,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Drops: @@ -48439,6 +49539,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Drops: @@ -48487,6 +49588,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48523,6 +49625,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48559,6 +49662,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48596,6 +49700,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -48632,6 +49737,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48668,6 +49774,7 @@ Body: WalkSpeed: 150 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48704,6 +49811,7 @@ Body: WalkSpeed: 150 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48742,6 +49850,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -48801,6 +49910,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48861,6 +49971,7 @@ Body: WalkSpeed: 100 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -48918,6 +50029,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -48976,6 +50088,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -49034,6 +50147,7 @@ Body: WalkSpeed: 150 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -49090,6 +50204,7 @@ Body: WalkSpeed: 150 AttackDelay: 76 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -49136,6 +50251,7 @@ Body: WalkSpeed: 150 AttackDelay: 200 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 288 Ai: 21 - Id: 2243 @@ -49163,6 +50279,7 @@ Body: WalkSpeed: 130 AttackDelay: 200 AttackMotion: 900 + ClientAttackMotion: 216 DamageMotion: 240 Ai: 21 - Id: 2244 @@ -49191,6 +50308,7 @@ Body: WalkSpeed: 300 AttackDelay: 200 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 - Id: 2245 @@ -49247,6 +50365,7 @@ Body: WalkSpeed: 200 AttackDelay: 912 AttackMotion: 1344 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 02 Drops: @@ -49295,6 +50414,7 @@ Body: WalkSpeed: 445 AttackDelay: 106 AttackMotion: 1056 + ClientAttackMotion: 624 DamageMotion: 576 Ai: 02 Drops: @@ -49326,6 +50446,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 2496 DamageMotion: 480 Ai: 01 Modes: @@ -49380,6 +50501,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 1380 + ClientAttackMotion: 324 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -49437,6 +50559,7 @@ Body: WalkSpeed: 130 AttackDelay: 1600 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -49484,6 +50607,7 @@ Body: WalkSpeed: 100 AttackDelay: 1344 AttackMotion: 2592 + ClientAttackMotion: 432 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -49540,6 +50664,7 @@ Body: WalkSpeed: 120 AttackDelay: 880 AttackMotion: 1224 + ClientAttackMotion: 504 DamageMotion: 360 Ai: 21 Class: Boss @@ -49588,6 +50713,7 @@ Body: WalkSpeed: 100 AttackDelay: 900 AttackMotion: 792 + ClientAttackMotion: 504 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -49645,6 +50771,7 @@ Body: WalkSpeed: 120 AttackDelay: 1000 AttackMotion: 1008 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Class: Boss @@ -49693,6 +50820,7 @@ Body: WalkSpeed: 100 AttackDelay: 900 AttackMotion: 648 + ClientAttackMotion: 360 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -49749,6 +50877,7 @@ Body: WalkSpeed: 120 AttackDelay: 1576 AttackMotion: 504 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -49787,6 +50916,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2258 @@ -49808,6 +50938,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2259 @@ -49829,6 +50960,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2260 @@ -49850,6 +50982,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2261 @@ -49871,6 +51004,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 02 - Id: 2262 @@ -49892,6 +51026,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 02 - Id: 2263 @@ -49913,6 +51048,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2264 @@ -49935,6 +51071,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 - Id: 2265 @@ -49957,6 +51094,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 - Id: 2266 @@ -49979,6 +51117,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2267 @@ -50001,6 +51140,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2268 @@ -50023,6 +51163,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2269 @@ -50045,6 +51186,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2270 @@ -50067,6 +51209,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2271 @@ -50089,6 +51232,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2272 @@ -50111,6 +51255,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2273 @@ -50133,6 +51278,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2274 @@ -50155,6 +51301,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2275 @@ -50177,6 +51324,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2276 @@ -50198,6 +51346,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 02 - Id: 2277 @@ -50226,6 +51375,7 @@ Body: WalkSpeed: 130 AttackDelay: 1600 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -50254,6 +51404,7 @@ Body: WalkSpeed: 120 AttackDelay: 880 AttackMotion: 1224 + ClientAttackMotion: 504 DamageMotion: 360 Ai: 21 Class: Boss @@ -50283,6 +51434,7 @@ Body: WalkSpeed: 120 AttackDelay: 1000 AttackMotion: 1008 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Class: Boss @@ -50311,6 +51463,7 @@ Body: WalkSpeed: 120 AttackDelay: 1576 AttackMotion: 504 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Class: Boss @@ -50342,6 +51495,7 @@ Body: WalkSpeed: 220 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 19 Modes: @@ -50389,6 +51543,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 200 Ai: 21 Modes: @@ -50436,6 +51591,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 1252 + ClientAttackMotion: 288 DamageMotion: 476 Ai: 13 Modes: @@ -50483,6 +51639,7 @@ Body: WalkSpeed: 150 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Modes: @@ -50528,6 +51685,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Modes: @@ -50573,6 +51731,7 @@ Body: WalkSpeed: 300 AttackDelay: 1228 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Modes: @@ -50618,6 +51777,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 05 Modes: @@ -50692,6 +51852,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 02 - Id: 2290 @@ -50713,6 +51874,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 02 - Id: 2291 @@ -50734,6 +51896,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2292 @@ -50755,6 +51918,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 - Id: 2293 @@ -50776,6 +51940,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 - Id: 2294 @@ -50797,6 +51962,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 02 - Id: 2295 @@ -50818,6 +51984,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 216 DamageMotion: 480 Ai: 02 - Id: 2296 @@ -50839,6 +52006,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 - Id: 2297 @@ -50860,6 +52028,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 648 DamageMotion: 480 Ai: 02 - Id: 2298 @@ -50881,6 +52050,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 02 - Id: 2299 @@ -50902,6 +52072,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 02 - Id: 2300 @@ -50923,6 +52094,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2301 @@ -50942,6 +52114,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2302 @@ -50963,6 +52136,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2303 @@ -50984,6 +52158,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 624 DamageMotion: 480 Ai: 02 - Id: 2304 @@ -51007,6 +52182,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 02 - Id: 2305 @@ -51028,6 +52204,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 02 - Id: 2306 @@ -51057,6 +52234,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 02 Class: Boss @@ -51100,6 +52278,7 @@ Body: ElementLevel: 1 WalkSpeed: 400 AttackMotion: 672 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 02 - Id: 2308 @@ -51116,6 +52295,7 @@ Body: Race: Formless Element: Holy ElementLevel: 1 + ClientAttackMotion: 2112 Class: Boss - Id: 2309 AegisName: BUNGISNGIS @@ -51144,6 +52324,7 @@ Body: WalkSpeed: 200 AttackDelay: 1568 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Modes: @@ -51187,6 +52368,7 @@ Body: WalkSpeed: 200 AttackDelay: 1424 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 360 Ai: 21 Modes: @@ -51230,6 +52412,7 @@ Body: WalkSpeed: 100 AttackDelay: 280 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -51279,6 +52462,7 @@ Body: WalkSpeed: 150 AttackDelay: 1664 AttackMotion: 336 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 21 Modes: @@ -51326,6 +52510,7 @@ Body: WalkSpeed: 130 AttackDelay: 1064 AttackMotion: 936 + ClientAttackMotion: 792 DamageMotion: 360 Ai: 21 Modes: @@ -51367,6 +52552,7 @@ Body: WalkSpeed: 100 AttackDelay: 496 AttackMotion: 504 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Modes: @@ -51408,6 +52594,7 @@ Body: WalkSpeed: 100 AttackDelay: 424 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 360 Ai: 21 Modes: @@ -51449,6 +52636,7 @@ Body: WalkSpeed: 400 AttackDelay: 1328 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Drops: @@ -51492,6 +52680,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 1080 + ClientAttackMotion: 936 DamageMotion: 360 Ai: 21 Class: Boss @@ -51536,6 +52725,7 @@ Body: WalkSpeed: 1000 AttackDelay: 920 AttackMotion: 1080 + ClientAttackMotion: 936 DamageMotion: 360 Class: Boss Modes: @@ -51587,6 +52777,7 @@ Body: WalkSpeed: 100 AttackDelay: 1424 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 360 Ai: 21 Class: Boss @@ -51639,6 +52830,7 @@ Body: WalkSpeed: 1000 AttackDelay: 440 AttackMotion: 672 + ClientAttackMotion: 2808 DamageMotion: 432 Ai: 10 Class: Boss @@ -51670,6 +52862,7 @@ Body: WalkSpeed: 1000 AttackDelay: 440 AttackMotion: 672 + ClientAttackMotion: 2808 DamageMotion: 432 Ai: 10 Class: Boss @@ -51703,6 +52896,7 @@ Body: WalkSpeed: 1000 AttackDelay: 440 AttackMotion: 672 + ClientAttackMotion: 2808 DamageMotion: 432 Ai: 10 Class: Boss @@ -51733,6 +52927,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 13 Class: Boss @@ -51770,6 +52965,7 @@ Body: WalkSpeed: 200 AttackDelay: 832 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 21 Drops: @@ -51807,6 +53003,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 21 - Id: 2326 @@ -51835,6 +53032,7 @@ Body: WalkSpeed: 165 AttackDelay: 1430 AttackMotion: 1080 + ClientAttackMotion: 480 DamageMotion: 1080 Ai: 21 - Id: 2327 @@ -51862,6 +53060,7 @@ Body: Element: Dark ElementLevel: 2 WalkSpeed: 1000 + ClientAttackMotion: 936 Class: Boss Modes: IgnoreMagic: true @@ -51903,6 +53102,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 420 DamageMotion: 1 Modes: IgnoreMagic: true @@ -51927,6 +53127,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 432 DamageMotion: 1 - Id: 2330 AegisName: BUWAYA_SLAVE @@ -51954,6 +53155,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 21 Modes: @@ -51977,6 +53179,7 @@ Body: WalkSpeed: 1000 AttackDelay: 384 AttackMotion: 720 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 10 Class: Battlefield @@ -52012,6 +53215,7 @@ Body: WalkSpeed: 100 AttackDelay: 1424 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 360 Ai: 21 Class: Boss @@ -52034,6 +53238,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 432 DamageMotion: 1 Class: Boss Modes: @@ -52066,6 +53271,7 @@ Body: WalkSpeed: 100 AttackDelay: 424 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 360 Ai: 02 - Id: 2335 @@ -52162,6 +53368,7 @@ Body: ElementLevel: 4 WalkSpeed: 1000 AttackMotion: 1000 + ClientAttackMotion: 768 Ai: 10 Class: Battlefield Modes: @@ -52196,6 +53403,7 @@ Body: WalkSpeed: 100 AttackDelay: 280 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -52226,6 +53434,7 @@ Body: WalkSpeed: 150 AttackDelay: 1664 AttackMotion: 336 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 21 Modes: @@ -52255,6 +53464,7 @@ Body: WalkSpeed: 100 AttackDelay: 496 AttackMotion: 504 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Modes: @@ -52288,6 +53498,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -52344,6 +53555,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 864 DamageMotion: 180 Ai: 21 - Id: 2343 @@ -52372,6 +53584,7 @@ Body: ElementLevel: 4 WalkSpeed: 1000 AttackMotion: 2000 + ClientAttackMotion: 768 Ai: 10 Class: Battlefield Modes: @@ -52406,6 +53619,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 288 DamageMotion: 180 Ai: 02 - Id: 2345 @@ -52435,6 +53649,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 1920 DamageMotion: 180 Ai: 21 - Id: 2346 @@ -52463,6 +53678,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 180 Ai: 21 - Id: 2347 @@ -52491,6 +53707,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 408 DamageMotion: 180 Ai: 21 - Id: 2348 @@ -52520,6 +53737,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 864 DamageMotion: 180 Ai: 21 - Id: 2349 @@ -52548,6 +53766,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 1440 DamageMotion: 180 Ai: 21 - Id: 2350 @@ -52576,6 +53795,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 288 DamageMotion: 180 Ai: 21 - Id: 2351 @@ -52604,6 +53824,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 336 DamageMotion: 180 Ai: 21 - Id: 2352 @@ -52628,6 +53849,7 @@ Body: WalkSpeed: 220 AttackDelay: 128 AttackMotion: 1104 + ClientAttackMotion: 2016 DamageMotion: 240 Ai: 02 Class: Boss @@ -52679,6 +53901,7 @@ Body: WalkSpeed: 200 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 864 DamageMotion: 432 Ai: 21 Modes: @@ -52728,6 +53951,7 @@ Body: WalkSpeed: 300 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 21 Modes: @@ -52778,6 +54002,7 @@ Body: WalkSpeed: 250 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 Modes: @@ -52827,6 +54052,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Modes: @@ -52872,6 +54098,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 21 Modes: @@ -52904,6 +54131,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Modes: @@ -52952,6 +54180,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Modes: @@ -52985,6 +54214,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 21 Modes: @@ -53034,6 +54264,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 21 Modes: @@ -53067,6 +54298,7 @@ Body: WalkSpeed: 170 AttackDelay: 854 AttackMotion: 2016 + ClientAttackMotion: 1140 DamageMotion: 480 DamageTaken: 10 Ai: 10 @@ -53126,6 +54358,7 @@ Body: WalkSpeed: 145 AttackDelay: 472 AttackMotion: 1056 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 21 Modes: @@ -53169,6 +54402,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 Modes: @@ -53214,6 +54448,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -53259,6 +54494,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Modes: @@ -53303,6 +54539,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 1728 + ClientAttackMotion: 1536 DamageMotion: 480 Ai: 21 Modes: @@ -53346,6 +54583,7 @@ Body: ElementLevel: 4 WalkSpeed: 150 AttackMotion: 3456 + ClientAttackMotion: 3264 DamageMotion: 480 Ai: 21 Modes: @@ -53389,6 +54627,7 @@ Body: ElementLevel: 4 WalkSpeed: 150 AttackMotion: 4032 + ClientAttackMotion: 1344 DamageMotion: 480 Ai: 21 Modes: @@ -53432,6 +54671,7 @@ Body: ElementLevel: 4 WalkSpeed: 100 AttackMotion: 2304 + ClientAttackMotion: 2112 DamageMotion: 480 Ai: 21 Modes: @@ -53475,6 +54715,7 @@ Body: WalkSpeed: 200 AttackDelay: 480 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 480 Ai: 21 Modes: @@ -53593,6 +54834,7 @@ Body: WalkSpeed: 200 AttackDelay: 2036 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 02 Class: Boss @@ -53621,6 +54863,7 @@ Body: WalkSpeed: 200 AttackDelay: 2076 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 02 Class: Boss @@ -53647,6 +54890,7 @@ Body: WalkSpeed: 100 AttackDelay: 252 AttackMotion: 816 + ClientAttackMotion: 528 DamageMotion: 480 Ai: 02 Modes: @@ -53693,6 +54937,7 @@ Body: WalkSpeed: 200 AttackDelay: 504 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -53719,6 +54964,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 1632 DamageMotion: 420 Ai: 01 Modes: @@ -53763,6 +55009,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 576 DamageMotion: 420 Ai: 01 Modes: @@ -53842,6 +55089,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -53888,6 +55136,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2402 @@ -53918,6 +55167,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Modes: IgnoreMagic: true @@ -53949,6 +55199,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Modes: IgnoreMelee: true @@ -53978,6 +55229,7 @@ Body: WalkSpeed: 400 AttackDelay: 2208 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 324 Ai: 01 Drops: @@ -54018,6 +55270,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 17 Drops: @@ -54060,6 +55313,7 @@ Body: WalkSpeed: 200 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 Drops: @@ -54105,6 +55359,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 360 DamageMotion: 576 Ai: 04 Drops: @@ -54132,6 +55387,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 200 + ClientAttackMotion: 672 Class: Boss Modes: NoRandomWalk: true @@ -54148,6 +55404,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 200 + ClientAttackMotion: 0 Class: Boss Modes: NoRandomWalk: true @@ -54164,6 +55421,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 200 + ClientAttackMotion: 240 Class: Boss Modes: NoRandomWalk: true @@ -54180,6 +55438,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 200 + ClientAttackMotion: 0 Class: Boss Modes: NoRandomWalk: true @@ -54196,6 +55455,7 @@ Body: Element: Fire ElementLevel: 1 WalkSpeed: 200 + ClientAttackMotion: 672 Class: Boss Modes: NoRandomWalk: true @@ -54229,6 +55489,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54273,6 +55534,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -54318,6 +55580,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -54363,6 +55626,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -54408,6 +55672,7 @@ Body: WalkSpeed: 130 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -54453,6 +55718,7 @@ Body: WalkSpeed: 160 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54498,6 +55764,7 @@ Body: WalkSpeed: 155 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54543,6 +55810,7 @@ Body: WalkSpeed: 130 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54588,6 +55856,7 @@ Body: WalkSpeed: 130 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54633,6 +55902,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54678,6 +55948,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54723,6 +55994,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -54768,6 +56040,7 @@ Body: WalkSpeed: 140 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -54810,6 +56083,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -54852,6 +56126,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -54895,6 +56170,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -54938,6 +56214,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -54981,6 +56258,7 @@ Body: WalkSpeed: 130 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -55024,6 +56302,7 @@ Body: WalkSpeed: 160 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 - Id: 2434 @@ -55052,6 +56331,7 @@ Body: WalkSpeed: 155 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -55095,6 +56375,7 @@ Body: WalkSpeed: 130 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -55138,6 +56419,7 @@ Body: WalkSpeed: 130 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -55181,6 +56463,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -55224,6 +56507,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -55267,6 +56551,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -55310,6 +56595,7 @@ Body: WalkSpeed: 140 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 - Id: 2441 @@ -55340,6 +56626,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Class: Boss @@ -55391,6 +56678,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Class: Boss @@ -55440,6 +56728,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55480,6 +56769,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55520,6 +56810,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55560,6 +56851,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55600,6 +56892,7 @@ Body: WalkSpeed: 130 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55640,6 +56933,7 @@ Body: WalkSpeed: 160 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55680,6 +56974,7 @@ Body: WalkSpeed: 155 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -55714,6 +57009,7 @@ Body: WalkSpeed: 300 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -55755,6 +57051,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 288 Ai: 01 Modes: @@ -56132,6 +57429,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -56172,6 +57470,7 @@ Body: WalkSpeed: 350 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -56215,6 +57514,7 @@ Body: WalkSpeed: 300 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -56257,6 +57557,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 09 Modes: @@ -56299,6 +57600,7 @@ Body: WalkSpeed: 150 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 09 Drops: @@ -56341,6 +57643,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 972 DamageMotion: 480 Ai: 05 Modes: @@ -56387,6 +57690,7 @@ Body: WalkSpeed: 300 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 720 DamageMotion: 1000 Ai: 21 Class: Boss @@ -56429,6 +57733,7 @@ Body: ElementLevel: 1 WalkSpeed: 350 AttackMotion: 1000 + ClientAttackMotion: 240 DamageMotion: 396 Ai: 21 Class: Boss @@ -56472,6 +57777,7 @@ Body: WalkSpeed: 250 AttackDelay: 828 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 21 Class: Boss @@ -56516,6 +57822,7 @@ Body: WalkSpeed: 130 AttackDelay: 350 AttackMotion: 864 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -56563,6 +57870,7 @@ Body: WalkSpeed: 120 AttackDelay: 350 AttackMotion: 768 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -56609,6 +57917,7 @@ Body: WalkSpeed: 1000 AttackDelay: 576 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 10 Class: Boss @@ -56659,6 +57968,7 @@ Body: WalkSpeed: 120 AttackDelay: 312 AttackMotion: 1200 + ClientAttackMotion: 300 DamageMotion: 432 Ai: 21 Class: Boss @@ -56707,6 +58017,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 21 Modes: @@ -56755,6 +58066,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 21 Drops: @@ -56801,6 +58113,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 09 Drops: @@ -56843,6 +58156,7 @@ Body: WalkSpeed: 300 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 168 DamageMotion: 336 Ai: 21 Drops: @@ -56885,6 +58199,7 @@ Body: WalkSpeed: 250 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 720 DamageMotion: 240 Ai: 21 Drops: @@ -56930,6 +58245,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 600 DamageMotion: 576 Ai: 21 Class: Boss @@ -56985,6 +58301,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 480 + ClientAttackMotion: 216 DamageMotion: 120 Ai: 21 - Id: 2485 @@ -57014,6 +58331,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 Class: Boss @@ -57148,6 +58466,7 @@ Body: WalkSpeed: 200 AttackDelay: 384 AttackMotion: 720 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 10 Modes: @@ -57197,6 +58516,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 540 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -57247,6 +58567,7 @@ Body: WalkSpeed: 180 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 480 Ai: 21 Class: Boss @@ -57282,6 +58603,7 @@ Body: ElementLevel: 1 WalkSpeed: 1000 AttackDelay: 384 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Class: Boss @@ -57321,6 +58643,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 540 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -57372,6 +58695,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 540 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -57423,6 +58747,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 540 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -57474,6 +58799,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 540 + ClientAttackMotion: 300 DamageMotion: 480 Ai: 21 Class: Boss @@ -57519,6 +58845,7 @@ Body: Element: Ghost ElementLevel: 4 WalkSpeed: 1000 + ClientAttackMotion: 768 Ai: 10 Class: Boss Modes: @@ -57551,6 +58878,7 @@ Body: Element: Ghost ElementLevel: 4 WalkSpeed: 1000 + ClientAttackMotion: 768 Ai: 10 Class: Boss Modes: @@ -57586,6 +58914,7 @@ Body: ElementLevel: 4 WalkSpeed: 1000 AttackDelay: 3000 + ClientAttackMotion: 768 Ai: 10 Class: Boss Modes: @@ -57619,6 +58948,7 @@ Body: ElementLevel: 1 WalkSpeed: 150 AttackDelay: 24 + ClientAttackMotion: 0 Modes: Detector: true IgnoreMagic: true @@ -57662,6 +58992,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 10 Modes: @@ -57707,6 +59038,7 @@ Body: WalkSpeed: 170 AttackDelay: 1276 AttackMotion: 792 + ClientAttackMotion: 1152 DamageMotion: 360 Ai: 21 Drops: @@ -57754,6 +59086,7 @@ Body: WalkSpeed: 230 AttackDelay: 1384 AttackMotion: 792 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 09 Drops: @@ -57801,6 +59134,7 @@ Body: WalkSpeed: 200 AttackDelay: 1452 AttackMotion: 792 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 09 Drops: @@ -57848,6 +59182,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 792 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 17 Modes: @@ -57898,6 +59233,7 @@ Body: WalkSpeed: 120 AttackDelay: 972 AttackMotion: 792 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 09 Drops: @@ -57949,6 +59285,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 10 Modes: @@ -57984,6 +59321,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58021,6 +59359,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58056,6 +59395,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58091,6 +59431,7 @@ Body: WalkSpeed: 200 AttackDelay: 950 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 10 Modes: @@ -58126,6 +59467,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 648 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58161,6 +59503,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58196,6 +59539,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 10 Modes: @@ -58231,6 +59575,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 10 Modes: @@ -58266,6 +59611,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 10 Modes: @@ -58301,6 +59647,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 10 Modes: @@ -58336,6 +59683,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58371,6 +59719,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58406,6 +59755,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 10 Class: Boss @@ -58443,6 +59793,7 @@ Body: WalkSpeed: 200 AttackDelay: 720 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Class: Boss @@ -58480,6 +59831,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 10 Class: Boss @@ -58528,6 +59880,7 @@ Body: WalkSpeed: 200 AttackDelay: 1400 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 10 Modes: @@ -58557,6 +59910,7 @@ Body: WalkSpeed: 200 AttackDelay: 936 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 10 Modes: @@ -58587,6 +59941,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -58617,6 +59972,7 @@ Body: WalkSpeed: 200 AttackDelay: 950 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 10 Modes: @@ -58646,6 +60002,7 @@ Body: WalkSpeed: 170 AttackDelay: 1084 AttackMotion: 2304 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 02 - Id: 2570 @@ -58673,6 +60030,7 @@ Body: WalkSpeed: 100 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 02 - Id: 2571 @@ -58700,6 +60058,7 @@ Body: WalkSpeed: 170 AttackDelay: 576 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 02 - Id: 2572 @@ -58726,6 +60085,7 @@ Body: WalkSpeed: 200 AttackDelay: 1604 AttackMotion: 840 + ClientAttackMotion: 216 DamageMotion: 756 Ai: 02 - Id: 2573 @@ -58751,6 +60111,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2574 @@ -58778,6 +60139,7 @@ Body: WalkSpeed: 200 AttackDelay: 1257 AttackMotion: 528 + ClientAttackMotion: 864 DamageMotion: 432 Ai: 02 - Id: 2575 @@ -58804,6 +60166,7 @@ Body: WalkSpeed: 150 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 02 - Id: 2576 @@ -58827,6 +60190,7 @@ Body: WalkSpeed: 150 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 840 Ai: 02 - Id: 2577 @@ -58853,6 +60217,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 02 - Id: 2578 @@ -58880,6 +60245,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 02 - Id: 2579 @@ -58907,6 +60273,7 @@ Body: WalkSpeed: 155 AttackDelay: 741 AttackMotion: 1536 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 02 - Id: 2580 @@ -58934,6 +60301,7 @@ Body: WalkSpeed: 150 AttackDelay: 1700 AttackMotion: 1000 + ClientAttackMotion: 432 DamageMotion: 500 Ai: 02 - Id: 2581 @@ -58961,6 +60329,7 @@ Body: WalkSpeed: 150 AttackDelay: 890 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2582 @@ -58986,6 +60355,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 02 - Id: 2583 @@ -59013,6 +60383,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 02 - Id: 2584 @@ -59040,6 +60411,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 02 - Id: 2585 @@ -59067,6 +60439,7 @@ Body: WalkSpeed: 300 AttackDelay: 1400 AttackMotion: 960 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 02 - Id: 2586 @@ -59094,6 +60467,7 @@ Body: WalkSpeed: 200 AttackDelay: 776 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 02 - Id: 2587 @@ -59121,6 +60495,7 @@ Body: WalkSpeed: 350 AttackDelay: 720 AttackMotion: 864 + ClientAttackMotion: 624 DamageMotion: 504 Ai: 02 - Id: 2588 @@ -59148,6 +60523,7 @@ Body: WalkSpeed: 180 AttackDelay: 960 AttackMotion: 336 + ClientAttackMotion: 240 DamageMotion: 300 Ai: 02 - Id: 2589 @@ -59175,6 +60551,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2590 @@ -59202,6 +60579,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 768 DamageMotion: 540 Ai: 02 - Id: 2591 @@ -59229,6 +60607,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 02 - Id: 2592 @@ -59256,6 +60635,7 @@ Body: WalkSpeed: 250 AttackDelay: 1536 AttackMotion: 1296 + ClientAttackMotion: 240 DamageMotion: 576 Ai: 02 - Id: 2593 @@ -59283,6 +60663,7 @@ Body: WalkSpeed: 180 AttackDelay: 432 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 02 - Id: 2594 @@ -59310,6 +60691,7 @@ Body: WalkSpeed: 220 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 660 DamageMotion: 420 Ai: 02 - Id: 2595 @@ -59336,6 +60718,7 @@ Body: WalkSpeed: 200 AttackDelay: 1688 AttackMotion: 1188 + ClientAttackMotion: 720 DamageMotion: 612 Ai: 02 - Id: 2596 @@ -59363,6 +60746,7 @@ Body: WalkSpeed: 300 AttackDelay: 936 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 02 - Id: 2597 @@ -59390,6 +60774,7 @@ Body: WalkSpeed: 150 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 - Id: 2598 @@ -59417,6 +60802,7 @@ Body: WalkSpeed: 350 AttackDelay: 420 AttackMotion: 576 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 02 - Id: 2599 @@ -59444,6 +60830,7 @@ Body: WalkSpeed: 120 AttackDelay: 432 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 360 Ai: 02 - Id: 2600 @@ -59471,6 +60858,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 02 - Id: 2601 @@ -59497,6 +60885,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 02 - Id: 2602 @@ -59524,6 +60913,7 @@ Body: WalkSpeed: 155 AttackDelay: 780 AttackMotion: 1008 + ClientAttackMotion: 288 DamageMotion: 420 Ai: 02 - Id: 2603 @@ -59553,6 +60943,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 21 Drops: @@ -59600,6 +60991,7 @@ Body: WalkSpeed: 420 AttackDelay: 1768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 192 Ai: 13 Drops: @@ -59647,6 +61039,7 @@ Body: WalkSpeed: 175 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 21 Drops: @@ -59692,6 +61085,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -59737,6 +61131,7 @@ Body: WalkSpeed: 180 AttackDelay: 580 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -59783,6 +61178,7 @@ Body: WalkSpeed: 150 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 07 Drops: @@ -59829,6 +61225,7 @@ Body: WalkSpeed: 240 AttackDelay: 1054 AttackMotion: 54 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 07 Drops: @@ -59875,6 +61272,7 @@ Body: WalkSpeed: 200 AttackDelay: 1048 AttackMotion: 48 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 17 Drops: @@ -59922,6 +61320,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 1344 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Drops: @@ -59969,6 +61368,7 @@ Body: WalkSpeed: 320 AttackDelay: 2304 AttackMotion: 840 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 01 Drops: @@ -60016,6 +61416,7 @@ Body: WalkSpeed: 150 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 03 Drops: @@ -60063,6 +61464,7 @@ Body: WalkSpeed: 180 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Modes: @@ -60112,6 +61514,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 01 Drops: @@ -60159,6 +61562,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 864 + ClientAttackMotion: 840 DamageMotion: 288 Ai: 02 Drops: @@ -60206,6 +61610,7 @@ Body: WalkSpeed: 200 AttackDelay: 637 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -60257,6 +61662,7 @@ Body: WalkSpeed: 180 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 720 DamageMotion: 504 Ai: 09 Modes: @@ -60300,6 +61706,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 17 Drops: @@ -60342,6 +61749,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 21 Modes: @@ -60389,6 +61797,7 @@ Body: WalkSpeed: 170 AttackDelay: 1356 AttackMotion: 1056 + ClientAttackMotion: 240 DamageMotion: 540 Ai: 05 Drops: @@ -60437,6 +61846,7 @@ Body: WalkSpeed: 127 AttackDelay: 1356 AttackMotion: 1056 + ClientAttackMotion: 240 DamageMotion: 540 Ai: 05 Drops: @@ -60485,6 +61895,7 @@ Body: WalkSpeed: 204 AttackDelay: 1356 AttackMotion: 1056 + ClientAttackMotion: 240 DamageMotion: 540 Ai: 05 Drops: @@ -60533,6 +61944,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 672 Ai: 04 Drops: @@ -60580,6 +61992,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 1020 + ClientAttackMotion: 600 DamageMotion: 360 Ai: 04 Drops: @@ -60627,6 +62040,7 @@ Body: WalkSpeed: 270 AttackDelay: 1536 AttackMotion: 600 + ClientAttackMotion: 420 DamageMotion: 420 Ai: 04 Drops: @@ -60676,6 +62090,7 @@ Body: WalkSpeed: 187 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -60723,6 +62138,7 @@ Body: WalkSpeed: 360 AttackDelay: 1632 AttackMotion: 432 + ClientAttackMotion: 420 DamageMotion: 540 Ai: 17 Drops: @@ -60770,6 +62186,7 @@ Body: WalkSpeed: 350 AttackDelay: 420 AttackMotion: 576 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 21 Modes: @@ -60819,6 +62236,7 @@ Body: WalkSpeed: 155 AttackDelay: 500 AttackMotion: 1440 + ClientAttackMotion: 300 DamageMotion: 960 Ai: 03 Drops: @@ -60862,6 +62280,7 @@ Body: WalkSpeed: 100 AttackDelay: 496 AttackMotion: 504 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 21 Modes: @@ -60899,6 +62318,7 @@ Body: WalkSpeed: 180 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 02 Modes: @@ -60948,6 +62368,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 02 Modes: @@ -60997,6 +62418,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 288 + ClientAttackMotion: 720 DamageMotion: 768 Ai: 02 Modes: @@ -61047,6 +62469,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -61094,6 +62517,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 600 DamageMotion: 504 Ai: 20 Drops: @@ -61141,6 +62565,7 @@ Body: WalkSpeed: 240 AttackDelay: 1000 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Drops: @@ -61186,6 +62611,7 @@ Body: WalkSpeed: 150 AttackDelay: 1744 AttackMotion: 1044 + ClientAttackMotion: 252 DamageMotion: 684 Ai: 17 Drops: @@ -61231,6 +62657,7 @@ Body: WalkSpeed: 140 AttackDelay: 500 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 672 Ai: 13 Modes: @@ -61279,6 +62706,7 @@ Body: WalkSpeed: 300 AttackDelay: 528 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 21 Drops: @@ -61326,6 +62754,7 @@ Body: WalkSpeed: 225 AttackDelay: 1956 AttackMotion: 756 + ClientAttackMotion: 288 DamageMotion: 528 Ai: 09 Drops: @@ -61374,6 +62803,7 @@ Body: WalkSpeed: 180 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 07 Modes: @@ -61423,6 +62853,7 @@ Body: WalkSpeed: 300 AttackDelay: 936 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 432 Ai: 02 Drops: @@ -61469,6 +62900,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 288 Ai: 17 Drops: @@ -61515,6 +62947,7 @@ Body: WalkSpeed: 200 AttackDelay: 1688 AttackMotion: 1188 + ClientAttackMotion: 720 DamageMotion: 612 Ai: 17 Modes: @@ -61562,6 +62995,7 @@ Body: WalkSpeed: 150 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 01 Drops: @@ -61609,6 +63043,7 @@ Body: WalkSpeed: 300 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1248 DamageMotion: 528 Ai: 17 Drops: @@ -61658,6 +63093,7 @@ Body: WalkSpeed: 200 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -61705,6 +63141,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -61752,6 +63189,7 @@ Body: WalkSpeed: 180 AttackDelay: 576 AttackMotion: 420 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 20 Class: Boss @@ -61801,6 +63239,7 @@ Body: WalkSpeed: 187 AttackDelay: 2112 AttackMotion: 912 + ClientAttackMotion: 324 DamageMotion: 576 Ai: 17 Modes: @@ -61850,6 +63289,7 @@ Body: WalkSpeed: 264 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 660 DamageMotion: 420 Ai: 04 Drops: @@ -61897,6 +63337,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Drops: @@ -61943,6 +63384,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 Drops: @@ -61990,6 +63432,7 @@ Body: WalkSpeed: 195 AttackDelay: 1350 AttackMotion: 1200 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Drops: @@ -62038,6 +63481,7 @@ Body: WalkSpeed: 146 AttackDelay: 1350 AttackMotion: 1200 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Drops: @@ -62086,6 +63530,7 @@ Body: WalkSpeed: 228 AttackDelay: 720 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 20 Modes: @@ -62136,6 +63581,7 @@ Body: WalkSpeed: 150 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Drops: @@ -62184,6 +63630,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Drops: @@ -62232,6 +63679,7 @@ Body: WalkSpeed: 400 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -62279,6 +63727,7 @@ Body: WalkSpeed: 135 AttackDelay: 432 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 02 Drops: @@ -62324,6 +63773,7 @@ Body: WalkSpeed: 240 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 09 Drops: @@ -62371,6 +63821,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 09 Drops: @@ -62418,6 +63869,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 1152 + ClientAttackMotion: 2112 DamageMotion: 336 Ai: 21 Drops: @@ -62466,6 +63918,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 420 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -62512,6 +63965,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 468 DamageMotion: 384 Ai: 17 Drops: @@ -62559,6 +64013,7 @@ Body: WalkSpeed: 216 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Drops: @@ -62606,6 +64061,7 @@ Body: WalkSpeed: 190 AttackDelay: 1132 AttackMotion: 583 + ClientAttackMotion: 432 DamageMotion: 532 Ai: 04 Drops: @@ -62653,6 +64109,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 792 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 21 Modes: @@ -62702,6 +64159,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 17 Modes: @@ -62752,6 +64210,7 @@ Body: WalkSpeed: 300 AttackDelay: 1624 AttackMotion: 624 + ClientAttackMotion: 312 DamageMotion: 576 Ai: 01 Drops: @@ -62799,6 +64258,7 @@ Body: WalkSpeed: 180 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 17 Drops: @@ -62846,6 +64306,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 192 DamageMotion: 384 Ai: 17 Drops: @@ -62893,6 +64354,7 @@ Body: WalkSpeed: 250 AttackDelay: 500 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -62940,6 +64402,7 @@ Body: WalkSpeed: 160 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -62988,6 +64451,7 @@ Body: WalkSpeed: 150 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 360 DamageMotion: 576 Ai: 04 Drops: @@ -63032,6 +64496,7 @@ Body: WalkSpeed: 240 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 600 DamageMotion: 1000 Ai: 07 Drops: @@ -63076,6 +64541,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -63118,6 +64584,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -63161,6 +64628,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 768 DamageMotion: 540 Ai: 01 Modes: @@ -63210,6 +64678,7 @@ Body: WalkSpeed: 112 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 21 Drops: @@ -63257,6 +64726,7 @@ Body: WalkSpeed: 180 AttackDelay: 864 AttackMotion: 500 + ClientAttackMotion: 468 DamageMotion: 192 Ai: 21 Drops: @@ -63305,6 +64775,7 @@ Body: WalkSpeed: 160 AttackDelay: 1247 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 17 Drops: @@ -63351,6 +64822,7 @@ Body: WalkSpeed: 120 AttackDelay: 500 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -63401,6 +64873,7 @@ Body: WalkSpeed: 120 AttackDelay: 360 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -63451,6 +64924,7 @@ Body: WalkSpeed: 90 AttackDelay: 360 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 20 Class: Boss @@ -63500,6 +64974,7 @@ Body: WalkSpeed: 480 AttackDelay: 1516 AttackMotion: 816 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 04 Drops: @@ -63547,6 +65022,7 @@ Body: WalkSpeed: 250 AttackDelay: 1536 AttackMotion: 1056 + ClientAttackMotion: 336 DamageMotion: 1152 Ai: 04 Drops: @@ -63594,6 +65070,7 @@ Body: WalkSpeed: 140 AttackDelay: 768 AttackMotion: 1224 + ClientAttackMotion: 420 DamageMotion: 432 Ai: 03 Drops: @@ -63641,6 +65118,7 @@ Body: WalkSpeed: 112 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 09 Drops: @@ -63688,6 +65166,7 @@ Body: WalkSpeed: 180 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 09 Drops: @@ -63736,6 +65215,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 04 Drops: @@ -63785,6 +65265,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 768 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Modes: @@ -63832,6 +65313,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 21 Drops: @@ -63879,6 +65361,7 @@ Body: WalkSpeed: 112 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 04 Drops: @@ -63923,6 +65406,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -63967,6 +65451,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -64011,6 +65496,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -64055,6 +65541,7 @@ Body: WalkSpeed: 300 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -64102,6 +65589,7 @@ Body: WalkSpeed: 180 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 120 DamageMotion: 360 Ai: 02 Modes: @@ -64150,6 +65638,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -64197,6 +65686,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -64244,6 +65734,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -64291,6 +65782,7 @@ Body: WalkSpeed: 120 AttackDelay: 1148 AttackMotion: 1728 + ClientAttackMotion: 624 DamageMotion: 864 Ai: 01 Drops: @@ -64338,6 +65830,7 @@ Body: WalkSpeed: 240 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Drops: @@ -64385,6 +65878,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 1296 DamageMotion: 336 Ai: 04 Drops: @@ -64430,6 +65924,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 324 Ai: 01 Drops: @@ -64477,6 +65972,7 @@ Body: WalkSpeed: 180 AttackDelay: 960 AttackMotion: 336 + ClientAttackMotion: 240 DamageMotion: 300 Ai: 17 Drops: @@ -64524,6 +66020,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 864 Ai: 04 Drops: @@ -64571,6 +66068,7 @@ Body: WalkSpeed: 348 AttackDelay: 1426 AttackMotion: 600 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 13 Drops: @@ -64618,6 +66116,7 @@ Body: WalkSpeed: 200 AttackDelay: 700 AttackMotion: 600 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 13 Drops: @@ -64665,6 +66164,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Drops: @@ -64712,6 +66212,7 @@ Body: WalkSpeed: 150 AttackDelay: 2544 AttackMotion: 1344 + ClientAttackMotion: 432 DamageMotion: 1152 Ai: 17 Drops: @@ -64757,6 +66258,7 @@ Body: WalkSpeed: 187 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 09 Drops: @@ -64805,6 +66307,7 @@ Body: WalkSpeed: 300 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 09 Drops: @@ -64853,6 +66356,7 @@ Body: WalkSpeed: 400 AttackDelay: 832 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 21 Drops: @@ -64900,6 +66404,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 21 Drops: @@ -64946,6 +66451,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 03 Drops: @@ -64991,6 +66497,7 @@ Body: WalkSpeed: 123 AttackDelay: 976 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Drops: @@ -65038,6 +66545,7 @@ Body: WalkSpeed: 480 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 288 DamageMotion: 672 Ai: 10 Drops: @@ -65085,6 +66593,7 @@ Body: WalkSpeed: 195 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 768 DamageMotion: 440 Ai: 21 Class: Boss @@ -65134,6 +66643,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 04 Drops: @@ -65181,6 +66691,7 @@ Body: WalkSpeed: 400 AttackDelay: 2852 AttackMotion: 1152 + ClientAttackMotion: 768 DamageMotion: 840 Ai: 04 Drops: @@ -65220,6 +66731,7 @@ Body: WalkSpeed: 150 AttackDelay: 2420 AttackMotion: 720 + ClientAttackMotion: 288 DamageMotion: 648 Ai: 04 Drops: @@ -65265,6 +66777,7 @@ Body: WalkSpeed: 240 AttackDelay: 1050 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Drops: @@ -65313,6 +66826,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Class: Boss @@ -65361,6 +66875,7 @@ Body: WalkSpeed: 350 AttackDelay: 500 AttackMotion: 1440 + ClientAttackMotion: 528 DamageMotion: 672 Ai: 04 Drops: @@ -65408,6 +66923,7 @@ Body: WalkSpeed: 110 AttackDelay: 151 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -65447,6 +66963,7 @@ Body: WalkSpeed: 82 AttackDelay: 151 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -65486,6 +67003,7 @@ Body: WalkSpeed: 132 AttackDelay: 151 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -65525,6 +67043,7 @@ Body: WalkSpeed: 110 AttackDelay: 151 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 04 Drops: @@ -65564,6 +67083,7 @@ Body: WalkSpeed: 165 AttackDelay: 500 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 Modes: @@ -65614,6 +67134,7 @@ Body: WalkSpeed: 250 AttackDelay: 1816 AttackMotion: 576 + ClientAttackMotion: 720 DamageMotion: 240 Ai: 21 Drops: @@ -65657,6 +67178,7 @@ Body: WalkSpeed: 75 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 04 Modes: @@ -65703,6 +67225,7 @@ Body: WalkSpeed: 1000 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 10 Drops: @@ -65750,6 +67273,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 1320 + ClientAttackMotion: 780 DamageMotion: 420 Ai: 21 Class: Boss @@ -65796,6 +67320,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 17 Drops: @@ -65843,6 +67368,7 @@ Body: WalkSpeed: 1000 AttackDelay: 672 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 360 Ai: 10 Drops: @@ -65888,6 +67414,7 @@ Body: WalkSpeed: 225 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Drops: @@ -65933,6 +67460,7 @@ Body: WalkSpeed: 360 AttackDelay: 1772 AttackMotion: 72 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 04 Drops: @@ -65979,6 +67507,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 01 Drops: @@ -66027,6 +67556,7 @@ Body: WalkSpeed: 110 AttackDelay: 500 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -66073,6 +67603,7 @@ Body: WalkSpeed: 110 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -66119,6 +67650,7 @@ Body: WalkSpeed: 82 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 21 Class: Boss @@ -66164,6 +67696,7 @@ Body: WalkSpeed: 360 AttackDelay: 1400 AttackMotion: 960 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 03 Drops: @@ -66205,6 +67738,7 @@ Body: WalkSpeed: 250 AttackDelay: 1938 AttackMotion: 2112 + ClientAttackMotion: 1920 DamageMotion: 768 Ai: 17 Modes: @@ -66255,6 +67789,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 09 Drops: @@ -66302,6 +67837,7 @@ Body: WalkSpeed: 200 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 09 Drops: @@ -66349,6 +67885,7 @@ Body: WalkSpeed: 150 AttackDelay: 1360 AttackMotion: 960 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 09 Drops: @@ -66396,6 +67933,7 @@ Body: WalkSpeed: 300 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 Drops: @@ -66443,6 +67981,7 @@ Body: WalkSpeed: 250 AttackDelay: 576 AttackMotion: 1140 + ClientAttackMotion: 240 DamageMotion: 504 Ai: 04 Drops: @@ -66483,6 +68022,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 09 Drops: @@ -66527,6 +68067,7 @@ Body: WalkSpeed: 100 AttackDelay: 972 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 09 Drops: @@ -66571,6 +68112,7 @@ Body: WalkSpeed: 150 AttackDelay: 1708 AttackMotion: 1008 + ClientAttackMotion: 432 DamageMotion: 540 Ai: 07 Modes: @@ -66620,6 +68162,7 @@ Body: WalkSpeed: 360 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -66667,6 +68210,7 @@ Body: WalkSpeed: 300 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -66714,6 +68258,7 @@ Body: WalkSpeed: 220 AttackDelay: 500 AttackMotion: 816 + ClientAttackMotion: 384 DamageMotion: 336 Ai: 21 Drops: @@ -66761,6 +68306,7 @@ Body: WalkSpeed: 145 AttackDelay: 472 AttackMotion: 1056 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 21 Modes: @@ -66801,6 +68347,7 @@ Body: WalkSpeed: 135 AttackDelay: 1720 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 360 Ai: 21 Modes: @@ -66850,6 +68397,7 @@ Body: WalkSpeed: 360 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Drops: @@ -66897,6 +68445,7 @@ Body: WalkSpeed: 300 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 1056 Ai: 09 Modes: @@ -66947,6 +68496,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -66994,6 +68544,7 @@ Body: WalkSpeed: 300 AttackDelay: 1540 AttackMotion: 840 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 09 Drops: @@ -67040,6 +68591,7 @@ Body: WalkSpeed: 150 AttackDelay: 1528 AttackMotion: 660 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 09 Modes: @@ -67089,6 +68641,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 10 Drops: @@ -67136,6 +68689,7 @@ Body: WalkSpeed: 100 AttackDelay: 280 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -67182,6 +68736,7 @@ Body: WalkSpeed: 250 AttackDelay: 500 AttackMotion: 960 + ClientAttackMotion: 1728 DamageMotion: 780 Ai: 21 Drops: @@ -67230,6 +68785,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 192 DamageMotion: 432 Ai: 02 Modes: @@ -67279,6 +68835,7 @@ Body: WalkSpeed: 225 AttackDelay: 1472 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 02 Drops: @@ -67314,6 +68871,7 @@ Body: WalkSpeed: 240 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Drops: @@ -67359,6 +68917,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Drops: @@ -67406,6 +68965,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Drops: @@ -67453,6 +69013,7 @@ Body: WalkSpeed: 110 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 08 Modes: @@ -67505,6 +69066,7 @@ Body: WalkSpeed: 93 AttackDelay: 747 AttackMotion: 1632 + ClientAttackMotion: 1440 DamageMotion: 576 Ai: 04 Modes: @@ -67555,6 +69117,7 @@ Body: WalkSpeed: 492 AttackDelay: 400 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 05 Drops: @@ -67597,6 +69160,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -67644,6 +69208,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 300 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 04 Drops: @@ -67683,6 +69248,7 @@ Body: WalkSpeed: 165 AttackDelay: 1120 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 04 Modes: @@ -67727,6 +69293,7 @@ Body: WalkSpeed: 172 AttackDelay: 1728 AttackMotion: 720 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 03 Drops: @@ -67774,6 +69341,7 @@ Body: WalkSpeed: 210 AttackDelay: 1260 AttackMotion: 230 + ClientAttackMotion: 1152 DamageMotion: 192 Ai: 21 Drops: @@ -67821,6 +69389,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 864 + ClientAttackMotion: 720 DamageMotion: 720 Ai: 02 Drops: @@ -67868,6 +69437,7 @@ Body: WalkSpeed: 130 AttackDelay: 500 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -67912,6 +69482,7 @@ Body: WalkSpeed: 160 AttackDelay: 432 AttackMotion: 400 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 09 Modes: @@ -67958,6 +69529,7 @@ Body: WalkSpeed: 150 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 384 Ai: 05 Drops: @@ -68005,6 +69577,7 @@ Body: WalkSpeed: 180 AttackDelay: 1028 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 13 Drops: @@ -68052,6 +69625,7 @@ Body: WalkSpeed: 200 AttackDelay: 1548 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 17 Modes: @@ -68099,6 +69673,7 @@ Body: WalkSpeed: 165 AttackDelay: 500 AttackMotion: 768 + ClientAttackMotion: 240 DamageMotion: 576 Ai: 03 Modes: @@ -68144,6 +69719,7 @@ Body: WalkSpeed: 150 AttackDelay: 800 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 288 Ai: 21 Class: Boss @@ -68192,6 +69768,7 @@ Body: WalkSpeed: 116 AttackDelay: 1638 AttackMotion: 2016 + ClientAttackMotion: 432 DamageMotion: 576 Ai: 01 Drops: @@ -68239,6 +69816,7 @@ Body: WalkSpeed: 240 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 09 Modes: @@ -68290,6 +69868,7 @@ Body: WalkSpeed: 300 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 04 Drops: @@ -68337,6 +69916,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 720 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 21 Drops: @@ -68385,6 +69965,7 @@ Body: WalkSpeed: 445 AttackDelay: 106 AttackMotion: 1056 + ClientAttackMotion: 624 DamageMotion: 576 Ai: 17 Drops: @@ -68426,6 +70007,7 @@ Body: WalkSpeed: 187 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 04 Drops: @@ -68472,6 +70054,7 @@ Body: WalkSpeed: 240 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 17 Drops: @@ -68519,6 +70102,7 @@ Body: WalkSpeed: 180 AttackDelay: 890 AttackMotion: 1320 + ClientAttackMotion: 1080 DamageMotion: 720 Ai: 04 Drops: @@ -68564,6 +70148,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -68613,6 +70198,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 336 DamageMotion: 216 Ai: 01 Modes: @@ -68665,6 +70251,7 @@ Body: WalkSpeed: 150 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 03 Modes: @@ -68712,6 +70299,7 @@ Body: WalkSpeed: 240 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 17 Modes: @@ -68763,6 +70351,7 @@ Body: WalkSpeed: 140 AttackDelay: 960 AttackMotion: 528 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 04 Modes: @@ -68812,6 +70401,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 720 Ai: 01 Drops: @@ -68859,6 +70449,7 @@ Body: WalkSpeed: 170 AttackDelay: 504 AttackMotion: 480 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 04 Drops: @@ -68902,6 +70493,7 @@ Body: WalkSpeed: 127 AttackDelay: 504 AttackMotion: 480 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 04 Drops: @@ -68945,6 +70537,7 @@ Body: WalkSpeed: 180 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 21 Drops: @@ -68992,6 +70585,7 @@ Body: WalkSpeed: 155 AttackDelay: 972 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 470 Ai: 04 Modes: @@ -69039,6 +70633,7 @@ Body: WalkSpeed: 155 AttackDelay: 500 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 470 Ai: 04 Modes: @@ -69086,6 +70681,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 Drops: @@ -69133,6 +70729,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 816 DamageMotion: 384 Ai: 10 Drops: @@ -69180,6 +70777,7 @@ Body: WalkSpeed: 198 AttackDelay: 1460 AttackMotion: 960 + ClientAttackMotion: 2304 DamageMotion: 432 Ai: 03 Drops: @@ -69223,6 +70821,7 @@ Body: WalkSpeed: 165 AttackDelay: 1460 AttackMotion: 960 + ClientAttackMotion: 2304 DamageMotion: 432 Ai: 03 Drops: @@ -69266,6 +70865,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 17 Drops: @@ -69313,6 +70913,7 @@ Body: WalkSpeed: 100 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -69360,6 +70961,7 @@ Body: WalkSpeed: 75 AttackDelay: 1120 AttackMotion: 620 + ClientAttackMotion: 384 DamageMotion: 240 Ai: 21 Drops: @@ -69407,6 +71009,7 @@ Body: WalkSpeed: 198 AttackDelay: 1380 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 03 Drops: @@ -69452,6 +71055,7 @@ Body: WalkSpeed: 165 AttackDelay: 1380 AttackMotion: 1080 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 03 Drops: @@ -69498,6 +71102,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Modes: @@ -69543,6 +71148,7 @@ Body: WalkSpeed: 200 AttackDelay: 1528 AttackMotion: 528 + ClientAttackMotion: 240 DamageMotion: 360 Ai: 21 Modes: @@ -69587,6 +71193,7 @@ Body: WalkSpeed: 165 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 21 Modes: @@ -69633,6 +71240,7 @@ Body: WalkSpeed: 264 AttackDelay: 768 AttackMotion: 1776 + ClientAttackMotion: 912 DamageMotion: 648 Ai: 21 Modes: @@ -69679,6 +71287,7 @@ Body: WalkSpeed: 155 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 340 Ai: 21 Modes: @@ -69728,6 +71337,7 @@ Body: WalkSpeed: 250 AttackDelay: 500 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -69775,6 +71385,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -69822,6 +71433,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1308 AttackMotion: 1008 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -69865,6 +71477,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1308 AttackMotion: 1008 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Drops: @@ -69908,6 +71521,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -69955,6 +71569,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -70002,6 +71617,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 07 Class: Boss @@ -70044,6 +71660,7 @@ Body: WalkSpeed: 150 AttackDelay: 1612 AttackMotion: 622 + ClientAttackMotion: 576 DamageMotion: 583 Ai: 04 Drops: @@ -70091,6 +71708,7 @@ Body: WalkSpeed: 204 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 540 DamageMotion: 672 Ai: 21 Drops: @@ -70138,6 +71756,7 @@ Body: WalkSpeed: 170 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 540 DamageMotion: 672 Ai: 21 Drops: @@ -70185,6 +71804,7 @@ Body: WalkSpeed: 120 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 432 Ai: 09 Drops: @@ -70231,6 +71851,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 01 Modes: @@ -70282,6 +71903,7 @@ Body: WalkSpeed: 120 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 420 DamageMotion: 336 Ai: 04 Drops: @@ -70328,6 +71950,7 @@ Body: WalkSpeed: 480 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -70376,6 +71999,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -70425,6 +72049,7 @@ Body: WalkSpeed: 165 AttackDelay: 500 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 04 Drops: @@ -70468,6 +72093,7 @@ Body: WalkSpeed: 300 AttackDelay: 2276 AttackMotion: 576 + ClientAttackMotion: 168 DamageMotion: 336 Ai: 21 Drops: @@ -70511,6 +72137,7 @@ Body: WalkSpeed: 150 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 09 Drops: @@ -70555,6 +72182,7 @@ Body: WalkSpeed: 240 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 09 Drops: @@ -70604,6 +72232,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -70651,6 +72280,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 504 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 17 Modes: @@ -70698,6 +72328,7 @@ Body: WalkSpeed: 127 AttackDelay: 950 AttackMotion: 2520 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -70745,6 +72376,7 @@ Body: WalkSpeed: 1000 AttackDelay: 864 AttackMotion: 576 + ClientAttackMotion: 504 DamageMotion: 336 Ai: 10 Drops: @@ -70788,6 +72420,7 @@ Body: WalkSpeed: 400 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -70835,6 +72468,7 @@ Body: WalkSpeed: 165 AttackDelay: 500 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 336 Ai: 04 Drops: @@ -70874,6 +72508,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 09 Drops: @@ -70921,6 +72556,7 @@ Body: WalkSpeed: 131 AttackDelay: 862 AttackMotion: 534 + ClientAttackMotion: 360 DamageMotion: 312 Ai: 21 Modes: @@ -70966,6 +72602,7 @@ Body: WalkSpeed: 300 AttackDelay: 576 AttackMotion: 960 + ClientAttackMotion: 420 DamageMotion: 504 Ai: 03 Drops: @@ -71013,6 +72650,7 @@ Body: WalkSpeed: 250 AttackDelay: 360 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 600 Ai: 04 Modes: @@ -71062,6 +72700,7 @@ Body: WalkSpeed: 250 AttackDelay: 500 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Modes: @@ -71111,6 +72750,7 @@ Body: WalkSpeed: 147 AttackDelay: 516 AttackMotion: 768 + ClientAttackMotion: 360 DamageMotion: 384 Ai: 04 Modes: @@ -71160,6 +72800,7 @@ Body: WalkSpeed: 112 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 04 Drops: @@ -71207,6 +72848,7 @@ Body: WalkSpeed: 180 AttackDelay: 980 AttackMotion: 600 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -71256,6 +72898,7 @@ Body: WalkSpeed: 300 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 216 DamageMotion: 240 Ai: 01 Modes: @@ -71304,6 +72947,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 900 + ClientAttackMotion: 216 DamageMotion: 240 Ai: 01 Modes: @@ -71353,6 +72997,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 01 Modes: @@ -71403,6 +73048,7 @@ Body: WalkSpeed: 112 AttackDelay: 176 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 21 Drops: @@ -71450,6 +73096,7 @@ Body: WalkSpeed: 180 AttackDelay: 176 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 21 Drops: @@ -71497,6 +73144,7 @@ Body: WalkSpeed: 150 AttackDelay: 176 AttackMotion: 912 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 21 Drops: @@ -71544,6 +73192,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 1252 + ClientAttackMotion: 288 DamageMotion: 476 Ai: 13 Drops: @@ -71591,6 +73240,7 @@ Body: WalkSpeed: 160 AttackDelay: 600 AttackMotion: 840 + ClientAttackMotion: 480 DamageMotion: 504 Ai: 02 Drops: @@ -71630,6 +73280,7 @@ Body: WalkSpeed: 112 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 840 Ai: 01 Modes: @@ -71679,6 +73330,7 @@ Body: WalkSpeed: 240 AttackDelay: 1248 AttackMotion: 48 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 17 Drops: @@ -71726,6 +73378,7 @@ Body: WalkSpeed: 200 AttackDelay: 1036 AttackMotion: 936 + ClientAttackMotion: 108 DamageMotion: 240 Ai: 03 Drops: @@ -71773,6 +73426,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 Drops: @@ -71814,6 +73468,7 @@ Body: WalkSpeed: 180 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 04 Modes: @@ -71856,6 +73511,7 @@ Body: WalkSpeed: 112 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 17 Drops: @@ -71902,6 +73558,7 @@ Body: WalkSpeed: 180 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1008 Ai: 17 Drops: @@ -71949,6 +73606,7 @@ Body: WalkSpeed: 200 AttackDelay: 1092 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 Drops: @@ -71996,6 +73654,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 17 Drops: @@ -72041,6 +73700,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -72090,6 +73750,7 @@ Body: WalkSpeed: 112 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -72139,6 +73800,7 @@ Body: WalkSpeed: 360 AttackDelay: 1500 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Modes: @@ -72184,6 +73846,7 @@ Body: WalkSpeed: 180 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 20 Drops: @@ -72228,6 +73891,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 21 Modes: @@ -72277,6 +73941,7 @@ Body: WalkSpeed: 200 AttackDelay: 1078 AttackMotion: 768 + ClientAttackMotion: 576 DamageMotion: 384 Ai: 21 Modes: @@ -72325,6 +73990,7 @@ Body: WalkSpeed: 150 AttackDelay: 1604 AttackMotion: 840 + ClientAttackMotion: 216 DamageMotion: 756 Ai: 17 Drops: @@ -72372,6 +74038,7 @@ Body: WalkSpeed: 240 AttackDelay: 1568 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 21 Modes: @@ -72412,6 +74079,7 @@ Body: WalkSpeed: 100 AttackDelay: 140 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 04 Drops: @@ -72459,6 +74127,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 504 Ai: 04 Drops: @@ -72506,6 +74175,7 @@ Body: WalkSpeed: 300 AttackDelay: 1008 AttackMotion: 1200 + ClientAttackMotion: 480 DamageMotion: 540 Ai: 20 Drops: @@ -72551,6 +74221,7 @@ Body: WalkSpeed: 108 AttackDelay: 472 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 13 Modes: @@ -72600,6 +74271,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Drops: @@ -72647,6 +74319,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 840 + ClientAttackMotion: 288 DamageMotion: 900 Ai: 21 Drops: @@ -72694,6 +74367,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 21 Modes: @@ -72743,6 +74417,7 @@ Body: WalkSpeed: 112 AttackDelay: 676 AttackMotion: 504 + ClientAttackMotion: 432 DamageMotion: 504 Ai: 21 Modes: @@ -72790,6 +74465,7 @@ Body: WalkSpeed: 300 AttackDelay: 1152 AttackMotion: 2304 + ClientAttackMotion: 1080 DamageMotion: 432 Ai: 04 Modes: @@ -72835,6 +74511,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 540 DamageMotion: 504 Ai: 21 Drops: @@ -72882,6 +74559,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 468 + ClientAttackMotion: 216 DamageMotion: 768 Ai: 21 Drops: @@ -72929,6 +74607,7 @@ Body: WalkSpeed: 300 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -72976,6 +74655,7 @@ Body: WalkSpeed: 225 AttackDelay: 1792 AttackMotion: 792 + ClientAttackMotion: 576 DamageMotion: 336 Ai: 21 Modes: @@ -73023,6 +74703,7 @@ Body: WalkSpeed: 120 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 17 Drops: @@ -73070,6 +74751,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 17 Drops: @@ -73117,6 +74799,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 1440 + ClientAttackMotion: 720 DamageMotion: 384 Ai: 17 Drops: @@ -73166,6 +74849,7 @@ Body: WalkSpeed: 200 AttackDelay: 504 AttackMotion: 624 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 04 Modes: @@ -73211,6 +74895,7 @@ Body: WalkSpeed: 112 AttackDelay: 864 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Modes: @@ -73251,6 +74936,7 @@ Body: WalkSpeed: 180 AttackDelay: 864 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 21 Modes: @@ -73291,6 +74977,7 @@ Body: WalkSpeed: 190 AttackDelay: 500 AttackMotion: 500 + ClientAttackMotion: 660 DamageMotion: 864 Ai: 21 Drops: @@ -73338,6 +75025,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 04 Modes: @@ -73381,6 +75069,7 @@ Body: WalkSpeed: 112 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 04 Modes: @@ -73424,6 +75113,7 @@ Body: WalkSpeed: 360 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 180 DamageMotion: 384 Ai: 01 Modes: @@ -73474,6 +75164,7 @@ Body: WalkSpeed: 100 AttackDelay: 168 AttackMotion: 480 + ClientAttackMotion: 480 DamageMotion: 360 Ai: 04 Drops: @@ -73520,6 +75211,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 17 Drops: @@ -73567,6 +75259,7 @@ Body: WalkSpeed: 400 AttackDelay: 2048 AttackMotion: 648 + ClientAttackMotion: 312 DamageMotion: 648 Ai: 17 Modes: @@ -73616,6 +75309,7 @@ Body: WalkSpeed: 225 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 360 DamageMotion: 504 Ai: 04 Modes: @@ -73663,6 +75357,7 @@ Body: WalkSpeed: 240 AttackDelay: 1100 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 17 Drops: @@ -73706,6 +75401,7 @@ Body: WalkSpeed: 220 AttackDelay: 1440 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 600 Ai: 17 Drops: @@ -73753,6 +75449,7 @@ Body: WalkSpeed: 250 AttackDelay: 500 AttackMotion: 480 + ClientAttackMotion: 2112 DamageMotion: 504 Ai: 13 Modes: @@ -73802,6 +75499,7 @@ Body: WalkSpeed: 300 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 540 DamageMotion: 768 Ai: 21 Drops: @@ -73849,6 +75547,7 @@ Body: WalkSpeed: 225 AttackDelay: 768 AttackMotion: 360 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 20 Drops: @@ -73896,6 +75595,7 @@ Body: WalkSpeed: 216 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 09 Drops: @@ -73943,6 +75643,7 @@ Body: WalkSpeed: 180 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 09 Drops: @@ -73989,6 +75690,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 10 Modes: @@ -74024,6 +75726,7 @@ Body: WalkSpeed: 170 AttackDelay: 1092 AttackMotion: 792 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 17 Drops: @@ -74073,6 +75776,7 @@ Body: WalkSpeed: 250 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 768 Ai: 21 Drops: @@ -74120,6 +75824,7 @@ Body: WalkSpeed: 170 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 1152 DamageMotion: 384 Ai: 17 Drops: @@ -74169,6 +75874,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 1728 DamageMotion: 660 Ai: 09 Drops: @@ -74216,6 +75922,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 2112 DamageMotion: 336 Ai: 04 Drops: @@ -74265,6 +75972,7 @@ Body: WalkSpeed: 195 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 2304 DamageMotion: 440 Ai: 21 Class: Boss @@ -74311,6 +76019,7 @@ Body: WalkSpeed: 195 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 2304 DamageMotion: 440 Ai: 21 Class: Boss @@ -74343,6 +76052,7 @@ Body: WalkSpeed: 175 AttackDelay: 1345 AttackMotion: 824 + ClientAttackMotion: 2304 DamageMotion: 440 Ai: 21 Class: Boss @@ -74388,6 +76098,7 @@ Body: WalkSpeed: 200 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 09 Drops: @@ -74424,6 +76135,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 01 Drops: @@ -74460,6 +76172,7 @@ Body: WalkSpeed: 155 AttackDelay: 972 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 470 Ai: 04 Drops: @@ -74494,6 +76207,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 Drops: @@ -74528,6 +76242,7 @@ Body: WalkSpeed: 180 AttackDelay: 917 AttackMotion: 1584 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 04 Drops: @@ -74562,6 +76277,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 1296 DamageMotion: 1000 Ai: 04 Drops: @@ -74596,6 +76312,7 @@ Body: WalkSpeed: 180 AttackDelay: 576 AttackMotion: 420 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 20 Class: Boss @@ -74629,6 +76346,7 @@ Body: WalkSpeed: 300 AttackDelay: 384 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -74661,6 +76379,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -74693,6 +76412,7 @@ Body: WalkSpeed: 200 AttackDelay: 1072 AttackMotion: 1056 + ClientAttackMotion: 864 DamageMotion: 384 Ai: 21 Class: Boss @@ -74728,6 +76448,7 @@ Body: WalkSpeed: 180 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 312 DamageMotion: 480 Ai: 21 Class: Boss @@ -74763,6 +76484,7 @@ Body: WalkSpeed: 190 AttackDelay: 480 AttackMotion: 840 + ClientAttackMotion: 624 DamageMotion: 432 Ai: 05 Drops: @@ -74787,6 +76509,7 @@ Body: WalkSpeed: 300 AttackDelay: 1220 AttackMotion: 1080 + ClientAttackMotion: 336 DamageMotion: 648 Class: Event Modes: @@ -74839,6 +76562,7 @@ Body: WalkSpeed: 175 AttackDelay: 800 AttackMotion: 750 + ClientAttackMotion: 300 DamageMotion: 300 - Id: 2938 AegisName: MM_MAGIC_SEAL @@ -74867,6 +76591,7 @@ Body: WalkSpeed: 300 AttackDelay: 1000 AttackMotion: 1000 + ClientAttackMotion: 936 DamageMotion: 1000 - Id: 2939 AegisName: MM_EVIL_SHADOW1 @@ -74895,6 +76620,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 672 DamageMotion: 500 Ai: 10 Modes: @@ -74931,6 +76657,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 288 DamageMotion: 600 Ai: 10 Modes: @@ -74967,6 +76694,7 @@ Body: WalkSpeed: 200 AttackDelay: 1800 AttackMotion: 780 + ClientAttackMotion: 1440 DamageMotion: 480 Ai: 10 Modes: @@ -75003,6 +76731,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 240 DamageMotion: 350 Ai: 10 Class: Boss @@ -75037,6 +76766,7 @@ Body: ElementLevel: 4 WalkSpeed: 1000 AttackMotion: 1000 + ClientAttackMotion: 384 Class: Battlefield Modes: Detector: true @@ -75079,6 +76809,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 576 + ClientAttackMotion: 624 DamageMotion: 420 Ai: 04 Drops: @@ -75113,6 +76844,7 @@ Body: WalkSpeed: 175 AttackDelay: 914 AttackMotion: 1344 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -75149,6 +76881,7 @@ Body: WalkSpeed: 200 AttackDelay: 920 AttackMotion: 720 + ClientAttackMotion: 360 DamageMotion: 200 Ai: 04 Modes: @@ -75187,6 +76920,7 @@ Body: WalkSpeed: 150 AttackDelay: 972 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 432 Ai: 04 Modes: @@ -75225,6 +76959,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 04 Modes: @@ -75261,6 +76996,7 @@ Body: WalkSpeed: 350 AttackDelay: 1768 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 192 Ai: 04 Drops: @@ -75295,6 +77031,7 @@ Body: WalkSpeed: 350 AttackDelay: 1848 AttackMotion: 500 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 04 Drops: @@ -75331,6 +77068,7 @@ Body: WalkSpeed: 250 AttackDelay: 2457 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -75367,6 +77105,7 @@ Body: WalkSpeed: 350 AttackDelay: 528 AttackMotion: 1000 + ClientAttackMotion: 240 DamageMotion: 396 Ai: 04 Drops: @@ -75403,6 +77142,7 @@ Body: WalkSpeed: 155 AttackDelay: 1155 AttackMotion: 1152 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Drops: @@ -75439,6 +77179,7 @@ Body: WalkSpeed: 190 AttackDelay: 735 AttackMotion: 384 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Modes: @@ -75477,6 +77218,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 420 + ClientAttackMotion: 672 DamageMotion: 360 Ai: 04 Drops: @@ -75511,6 +77253,7 @@ Body: ElementLevel: 4 WalkSpeed: 1000 AttackMotion: 1000 + ClientAttackMotion: 384 Class: Battlefield Modes: Detector: true @@ -75539,6 +77282,7 @@ Body: WalkSpeed: 200 AttackDelay: 672 AttackMotion: 420 + ClientAttackMotion: 672 DamageMotion: 360 Ai: 04 Drops: @@ -75625,6 +77369,7 @@ Body: WalkSpeed: 150 AttackDelay: 917 AttackMotion: 1584 + ClientAttackMotion: 540 DamageMotion: 576 Ai: 04 Modes: @@ -75673,6 +77418,7 @@ Body: WalkSpeed: 100 AttackDelay: 720 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 01 Class: Boss @@ -75722,6 +77468,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 03 Modes: @@ -75763,6 +77510,7 @@ Body: WalkSpeed: 200 AttackDelay: 1296 AttackMotion: 1296 + ClientAttackMotion: 468 DamageMotion: 432 Ai: 05 Modes: @@ -75794,6 +77542,7 @@ Body: WalkSpeed: 200 AttackDelay: 1248 AttackMotion: 1248 + ClientAttackMotion: 864 DamageMotion: 432 Ai: 03 Modes: @@ -75837,6 +77586,7 @@ Body: WalkSpeed: 100 AttackDelay: 890 AttackMotion: 960 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 01 Modes: @@ -75888,6 +77638,7 @@ Body: WalkSpeed: 110 AttackDelay: 741 AttackMotion: 1536 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 04 Modes: @@ -75935,6 +77686,7 @@ Body: WalkSpeed: 120 AttackDelay: 1480 AttackMotion: 480 + ClientAttackMotion: 240 DamageMotion: 1056 Ai: 09 Modes: @@ -75982,6 +77734,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 600 DamageMotion: 504 Ai: 20 Modes: @@ -76028,6 +77781,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 1056 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -76081,6 +77835,7 @@ Body: WalkSpeed: 100 AttackDelay: 768 AttackMotion: 1056 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -76114,6 +77869,7 @@ Body: WalkSpeed: 200 AttackDelay: 2612 AttackMotion: 824 + ClientAttackMotion: 336 DamageMotion: 440 Ai: 10 Class: Boss @@ -76145,6 +77901,7 @@ Body: WalkSpeed: 100 AttackDelay: 300 AttackMotion: 384 + ClientAttackMotion: 768 DamageMotion: 288 Ai: 10 Class: Boss @@ -76185,6 +77942,7 @@ Body: WalkSpeed: 1000 AttackDelay: 2700 AttackMotion: 384 + ClientAttackMotion: 780 DamageMotion: 288 Ai: 10 Class: Boss @@ -76230,6 +77988,7 @@ Body: WalkSpeed: 1000 AttackDelay: 2612 AttackMotion: 824 + ClientAttackMotion: 408 DamageMotion: 440 Ai: 10 Class: Boss @@ -76262,6 +78021,7 @@ Body: WalkSpeed: 200 AttackDelay: 2612 AttackMotion: 824 + ClientAttackMotion: 192 DamageMotion: 440 Ai: 10 Class: Boss @@ -76294,6 +78054,7 @@ Body: WalkSpeed: 200 AttackDelay: 300 AttackMotion: 824 + ClientAttackMotion: 672 DamageMotion: 440 Ai: 10 Class: Boss @@ -76326,6 +78087,7 @@ Body: WalkSpeed: 600 AttackDelay: 300 AttackMotion: 824 + ClientAttackMotion: 384 DamageMotion: 440 Ai: 10 Class: Boss @@ -76358,6 +78120,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 824 + ClientAttackMotion: 480 DamageMotion: 440 Ai: 10 Class: Boss @@ -76390,6 +78153,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 824 + ClientAttackMotion: 288 DamageMotion: 440 Ai: 10 Class: Boss @@ -76451,6 +78215,7 @@ Body: WalkSpeed: 1000 AttackDelay: 2000 AttackMotion: 824 + ClientAttackMotion: 384 DamageMotion: 440 Ai: 10 Class: Boss @@ -76485,6 +78250,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 504 DamageMotion: 150 Ai: 10 Modes: @@ -76531,6 +78297,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 252 DamageMotion: 150 Ai: 10 Modes: @@ -76577,6 +78344,7 @@ Body: WalkSpeed: 120 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 432 DamageMotion: 150 Ai: 10 Modes: @@ -76623,6 +78391,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 672 DamageMotion: 150 Ai: 10 Modes: @@ -76669,6 +78438,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 180 DamageMotion: 150 Ai: 10 Modes: @@ -76715,6 +78485,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 432 DamageMotion: 150 Ai: 10 Modes: @@ -76761,6 +78532,7 @@ Body: WalkSpeed: 170 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 768 DamageMotion: 150 Ai: 10 Modes: @@ -76807,6 +78579,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 480 DamageMotion: 150 Ai: 10 Modes: @@ -76853,6 +78626,7 @@ Body: WalkSpeed: 170 AttackDelay: 864 AttackMotion: 400 + ClientAttackMotion: 696 DamageMotion: 150 Ai: 10 Modes: @@ -76901,6 +78675,7 @@ Body: WalkSpeed: 110 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 01 Drops: @@ -76937,6 +78712,7 @@ Body: WalkSpeed: 150 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 288 Ai: 04 Drops: @@ -76972,6 +78748,7 @@ Body: WalkSpeed: 130 AttackDelay: 1540 AttackMotion: 720 + ClientAttackMotion: 324 DamageMotion: 432 Ai: 01 Drops: @@ -77009,6 +78786,7 @@ Body: WalkSpeed: 200 AttackDelay: 1608 AttackMotion: 816 + ClientAttackMotion: 1440 DamageMotion: 396 Ai: 04 Drops: @@ -77048,6 +78826,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 4416 DamageMotion: 288 Modes: IgnoreMagic: true @@ -77079,6 +78858,7 @@ Body: WalkSpeed: 120 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 288 DamageMotion: 768 Ai: 25 Drops: @@ -77150,6 +78930,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 864 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 10 Class: Boss @@ -77208,6 +78989,7 @@ Body: Element: Ghost ElementLevel: 4 WalkSpeed: 1000 + ClientAttackMotion: 768 Class: Boss Modes: Aggressive: true @@ -77243,6 +79025,7 @@ Body: WalkSpeed: 110 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 10 Class: Boss @@ -77276,6 +79059,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 10 Class: Boss @@ -77309,6 +79093,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 10 Class: Boss @@ -77427,6 +79212,7 @@ Body: WalkSpeed: 100 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 240 DamageMotion: 1 Class: Event Modes: @@ -77547,6 +79333,7 @@ Body: WalkSpeed: 100 AttackDelay: 676 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Modes: @@ -77592,6 +79379,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 1248 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 Modes: @@ -77637,6 +79425,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 672 + ClientAttackMotion: 144 DamageMotion: 480 Ai: 04 Modes: @@ -77682,6 +79471,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 1248 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Modes: @@ -77728,6 +79518,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 2592 + ClientAttackMotion: 2400 DamageMotion: 480 Ai: 21 Class: Boss @@ -77775,6 +79566,7 @@ Body: WalkSpeed: 150 AttackDelay: 100 AttackMotion: 576 + ClientAttackMotion: 960 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -77849,6 +79641,7 @@ Body: WalkSpeed: 300 AttackDelay: 1332 AttackMotion: 288 + ClientAttackMotion: 312 DamageMotion: 384 Ai: 25 Modes: @@ -77869,6 +79662,7 @@ Body: WalkSpeed: 300 AttackDelay: 1332 AttackMotion: 288 + ClientAttackMotion: 864 Ai: 25 Modes: NoRandomWalk: true @@ -77888,6 +79682,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 420 Ai: 25 Modes: NoRandomWalk: true @@ -77907,6 +79702,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 192 Ai: 25 Modes: NoRandomWalk: true @@ -77922,6 +79718,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 384 Ai: 25 Modes: NoRandomWalk: true @@ -77941,6 +79738,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 240 Ai: 25 Modes: NoRandomWalk: true @@ -77960,6 +79758,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 360 Ai: 25 Modes: NoRandomWalk: true @@ -77979,6 +79778,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 360 Ai: 25 Modes: NoRandomWalk: true @@ -77998,6 +79798,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 360 Ai: 25 Modes: NoRandomWalk: true @@ -78013,6 +79814,7 @@ Body: WalkSpeed: 160 AttackDelay: 1025 AttackMotion: 720 + ClientAttackMotion: 288 Ai: 25 Modes: NoRandomWalk: true @@ -78040,6 +79842,7 @@ Body: WalkSpeed: 230 AttackDelay: 1415 AttackMotion: 792 + ClientAttackMotion: 768 Ai: 24 Class: Battlefield Modes: @@ -78074,6 +79877,7 @@ Body: WalkSpeed: 175 AttackDelay: 800 AttackMotion: 750 + ClientAttackMotion: 576 DamageMotion: 300 - Id: 3088 AegisName: MM_BRINARANEA_BABY @@ -78101,6 +79905,7 @@ Body: WalkSpeed: 300 AttackDelay: 1000 AttackMotion: 1000 + ClientAttackMotion: 420 DamageMotion: 1000 Ai: 04 Modes: @@ -78130,6 +79935,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 540 DamageMotion: 500 Ai: 21 Class: Boss @@ -78159,6 +79965,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 288 DamageMotion: 600 Ai: 21 Class: Boss @@ -78187,6 +79994,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 420 DamageMotion: 768 Ai: 21 Class: Boss @@ -78219,6 +80027,7 @@ Body: WalkSpeed: 200 AttackDelay: 608 AttackMotion: 408 + ClientAttackMotion: 360 DamageMotion: 336 Ai: 21 Class: Boss @@ -78326,6 +80135,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 460 + ClientAttackMotion: 540 DamageMotion: 350 Ai: 10 Class: Boss @@ -78361,6 +80171,7 @@ Body: WalkSpeed: 200 AttackDelay: 750 AttackMotion: 510 + ClientAttackMotion: 420 DamageMotion: 500 Ai: 21 Class: Boss @@ -78393,6 +80204,7 @@ Body: WalkSpeed: 350 AttackDelay: 2000 AttackMotion: 750 + ClientAttackMotion: 336 DamageMotion: 750 Ai: 10 Class: Boss @@ -78424,6 +80236,7 @@ Body: WalkSpeed: 200 AttackDelay: 500 AttackMotion: 510 + ClientAttackMotion: 336 DamageMotion: 350 Ai: 10 Class: Boss @@ -78575,6 +80388,7 @@ Body: WalkSpeed: 110 AttackDelay: 576 AttackMotion: 480 + ClientAttackMotion: 336 DamageMotion: 432 Ai: 10 Class: Boss @@ -78610,6 +80424,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 648 + ClientAttackMotion: 336 DamageMotion: 300 Ai: 10 Class: Boss @@ -78677,6 +80492,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 2592 + ClientAttackMotion: 2400 DamageMotion: 480 Ai: 21 Class: Boss @@ -78721,6 +80537,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 2592 + ClientAttackMotion: 2400 DamageMotion: 480 Ai: 21 Class: Boss @@ -79029,6 +80846,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 2400 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 09 - Id: 3123 @@ -79059,6 +80877,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 2400 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 09 - Id: 3124 @@ -79088,6 +80907,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 2016 + ClientAttackMotion: 1824 DamageMotion: 672 Ai: 26 Class: Boss @@ -79136,6 +80956,7 @@ Body: WalkSpeed: 100 AttackDelay: 676 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -79180,6 +81001,7 @@ Body: WalkSpeed: 150 AttackDelay: 676 AttackMotion: 1056 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 10 Modes: @@ -79226,6 +81048,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 10 Drops: @@ -79270,6 +81093,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 10 Modes: @@ -79361,6 +81185,7 @@ Body: WalkSpeed: 250 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 768 Ai: 10 Modes: @@ -79399,6 +81224,7 @@ Body: WalkSpeed: 170 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 1344 DamageMotion: 384 Ai: 10 Modes: @@ -79437,6 +81263,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 384 DamageMotion: 660 Ai: 10 Modes: @@ -79475,6 +81302,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 288 DamageMotion: 336 Ai: 10 Modes: @@ -79515,6 +81343,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 2112 + ClientAttackMotion: 576 DamageMotion: 768 Ai: 10 Modes: @@ -79553,6 +81382,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 2112 + ClientAttackMotion: 576 DamageMotion: 768 Ai: 10 Modes: @@ -79583,6 +81413,7 @@ Body: WalkSpeed: 200 AttackDelay: 800 AttackMotion: 2112 + ClientAttackMotion: 420 DamageMotion: 768 Modes: IgnoreMagic: true @@ -79617,6 +81448,7 @@ Body: WalkSpeed: 150 AttackDelay: 500 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Drops: - Item: White_Slim_Potion @@ -79651,6 +81483,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 1 + ClientAttackMotion: 288 DamageMotion: 1 Ai: 25 - Id: 3170 @@ -79669,6 +81502,7 @@ Body: WalkSpeed: 180 AttackDelay: 76 AttackMotion: 1 + ClientAttackMotion: 288 DamageMotion: 1 Ai: 25 # - Id: 3171 @@ -79706,6 +81540,7 @@ Body: WalkSpeed: 155 AttackDelay: 2416 AttackMotion: 2016 + ClientAttackMotion: 1008 DamageMotion: 432 Ai: 05 Drops: @@ -79753,6 +81588,7 @@ Body: WalkSpeed: 140 AttackDelay: 432 AttackMotion: 540 + ClientAttackMotion: 240 DamageMotion: 432 Ai: 04 Modes: @@ -79798,6 +81634,7 @@ Body: WalkSpeed: 140 AttackDelay: 432 AttackMotion: 540 + ClientAttackMotion: 300 DamageMotion: 432 Ai: 17 Modes: @@ -79845,6 +81682,7 @@ Body: WalkSpeed: 170 AttackDelay: 168 AttackMotion: 1008 + ClientAttackMotion: 528 DamageMotion: 300 Ai: 09 Drops: @@ -79886,6 +81724,7 @@ Body: WalkSpeed: 180 AttackDelay: 168 AttackMotion: 768 + ClientAttackMotion: 528 DamageMotion: 360 Ai: 17 Modes: @@ -79927,6 +81766,7 @@ Body: WalkSpeed: 150 AttackDelay: 1596 AttackMotion: 1620 + ClientAttackMotion: 576 DamageMotion: 864 Ai: 17 Modes: @@ -79971,6 +81811,7 @@ Body: WalkSpeed: 170 AttackDelay: 168 AttackMotion: 1008 + ClientAttackMotion: 864 DamageMotion: 300 Ai: 01 Class: Boss @@ -80034,6 +81875,7 @@ Body: WalkSpeed: 1000 AttackDelay: 800 AttackMotion: 500 + ClientAttackMotion: 1152 DamageMotion: 300 Ai: 10 Class: Boss @@ -80077,6 +81919,7 @@ Body: WalkSpeed: 250 AttackDelay: 1000 AttackMotion: 750 + ClientAttackMotion: 1056 DamageMotion: 600 Ai: 04 Class: Boss @@ -80114,6 +81957,7 @@ Body: WalkSpeed: 250 AttackDelay: 1000 AttackMotion: 750 + ClientAttackMotion: 1056 DamageMotion: 600 Ai: 04 Class: Boss @@ -80150,6 +81994,7 @@ Body: WalkSpeed: 300 AttackDelay: 1250 AttackMotion: 750 + ClientAttackMotion: 1056 DamageMotion: 600 Ai: 04 Class: Boss @@ -80182,6 +82027,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 384 DamageMotion: 500 Ai: 04 Class: Boss @@ -80217,6 +82063,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 384 DamageMotion: 500 Ai: 04 Class: Boss @@ -80250,6 +82097,7 @@ Body: WalkSpeed: 330 AttackDelay: 1250 AttackMotion: 800 + ClientAttackMotion: 384 DamageMotion: 800 Ai: 04 Class: Boss @@ -80285,6 +82133,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 960 DamageMotion: 384 Ai: 05 Modes: @@ -80328,6 +82177,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 624 + ClientAttackMotion: 1056 DamageMotion: 360 Ai: 07 Modes: @@ -80367,6 +82217,7 @@ Body: WalkSpeed: 250 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 7488 DamageMotion: 240 Ai: 21 Drops: @@ -80409,6 +82260,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 21 Drops: @@ -80462,6 +82314,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 100 + ClientAttackMotion: 192 Ai: 25 Class: Boss Modes: @@ -80503,6 +82356,7 @@ Body: Element: Neutral ElementLevel: 1 WalkSpeed: 200 + ClientAttackMotion: 192 Ai: 25 Class: Boss Modes: @@ -80645,6 +82499,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -80696,6 +82551,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -80745,6 +82601,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -80794,6 +82651,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -80845,6 +82703,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -80896,6 +82755,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -80943,6 +82803,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -80974,6 +82835,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81005,6 +82867,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81036,6 +82899,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81067,6 +82931,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -81098,6 +82963,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81130,6 +82996,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81182,6 +83049,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81235,6 +83103,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81288,6 +83157,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 240 DamageMotion: 288 Ai: 21 Class: Boss @@ -81341,6 +83211,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81393,6 +83264,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81446,6 +83318,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -81497,6 +83370,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -81548,6 +83422,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81599,6 +83474,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -81650,6 +83526,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -81701,6 +83578,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -81752,6 +83630,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 21 Class: Boss @@ -81801,6 +83680,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -81832,6 +83712,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -81863,6 +83744,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -81894,6 +83776,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -81925,6 +83808,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -81956,6 +83840,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -81987,6 +83872,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82019,6 +83905,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82071,6 +83958,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82123,6 +84011,7 @@ Body: WalkSpeed: 100 AttackDelay: 576 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82175,6 +84064,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -82227,6 +84117,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82279,6 +84170,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82331,6 +84223,7 @@ Body: WalkSpeed: 100 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 21 Class: Boss @@ -82382,6 +84275,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 10 Modes: @@ -82428,6 +84322,7 @@ Body: WalkSpeed: 300 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 384 DamageMotion: 660 Ai: 02 Modes: @@ -82478,6 +84373,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 1728 DamageMotion: 336 Ai: 10 Modes: @@ -82528,6 +84424,7 @@ Body: WalkSpeed: 300 AttackDelay: 2400 AttackMotion: 500 + ClientAttackMotion: 2160 DamageMotion: 400 Ai: 10 Modes: @@ -82577,6 +84474,7 @@ Body: WalkSpeed: 120 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 600 Ai: 10 Modes: @@ -82622,6 +84520,7 @@ Body: WalkSpeed: 135 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 960 DamageMotion: 500 Ai: 10 Modes: @@ -82659,6 +84558,7 @@ Body: WalkSpeed: 1000 AttackDelay: 3000 AttackMotion: 600 + ClientAttackMotion: 960 DamageMotion: 550 Ai: 01 Class: Battlefield @@ -82692,6 +84592,7 @@ Body: WalkSpeed: 150 AttackDelay: 1250 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 350 Ai: 10 Class: Boss @@ -82743,6 +84644,7 @@ Body: WalkSpeed: 200 AttackDelay: 2050 AttackMotion: 500 + ClientAttackMotion: 408 DamageMotion: 660 Ai: 10 Modes: @@ -82775,6 +84677,7 @@ Body: WalkSpeed: 220 AttackDelay: 2155 AttackMotion: 960 + ClientAttackMotion: 816 DamageMotion: 480 Ai: 10 Modes: @@ -83060,6 +84963,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Modes: @@ -83108,6 +85012,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Modes: @@ -83156,6 +85061,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -83205,6 +85111,7 @@ Body: WalkSpeed: 200 AttackDelay: 988 AttackMotion: 288 + ClientAttackMotion: 240 DamageMotion: 168 Ai: 01 Modes: @@ -83254,6 +85161,7 @@ Body: WalkSpeed: 150 AttackDelay: 1148 AttackMotion: 648 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 03 Modes: @@ -83303,6 +85211,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 01 Modes: @@ -83352,6 +85261,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 01 Modes: @@ -83401,6 +85311,7 @@ Body: WalkSpeed: 300 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Modes: @@ -83449,6 +85360,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 17 Modes: @@ -83498,6 +85410,7 @@ Body: WalkSpeed: 250 AttackDelay: 1156 AttackMotion: 456 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 17 Modes: @@ -83547,6 +85460,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Modes: @@ -83595,6 +85509,7 @@ Body: WalkSpeed: 200 AttackDelay: 1048 AttackMotion: 48 + ClientAttackMotion: 288 DamageMotion: 192 Ai: 17 Modes: @@ -83644,6 +85559,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 03 Modes: @@ -83693,6 +85609,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 01 Modes: @@ -83741,6 +85658,7 @@ Body: WalkSpeed: 200 AttackDelay: 1576 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 17 Modes: @@ -83790,6 +85708,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -83838,6 +85757,7 @@ Body: WalkSpeed: 300 AttackDelay: 1960 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 01 Modes: @@ -83886,6 +85806,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 03 Modes: @@ -83933,6 +85854,7 @@ Body: WalkSpeed: 150 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -83982,6 +85904,7 @@ Body: WalkSpeed: 200 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 576 Ai: 07 Modes: @@ -84031,6 +85954,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 180 DamageMotion: 384 Ai: 07 Modes: @@ -84082,6 +86006,7 @@ Body: WalkSpeed: 300 AttackDelay: 1608 AttackMotion: 816 + ClientAttackMotion: 912 DamageMotion: 396 Ai: 17 Modes: @@ -84131,6 +86056,7 @@ Body: WalkSpeed: 200 AttackDelay: 1564 AttackMotion: 864 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 19 Modes: @@ -84179,6 +86105,7 @@ Body: WalkSpeed: 200 AttackDelay: 1076 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 01 Modes: @@ -84228,6 +86155,7 @@ Body: WalkSpeed: 200 AttackDelay: 1708 AttackMotion: 1008 + ClientAttackMotion: 432 DamageMotion: 540 Ai: 07 Modes: @@ -84277,6 +86205,7 @@ Body: WalkSpeed: 250 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Modes: @@ -84326,6 +86255,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 384 Ai: 21 Modes: @@ -84375,6 +86305,7 @@ Body: WalkSpeed: 175 AttackDelay: 862 AttackMotion: 534 + ClientAttackMotion: 360 DamageMotion: 312 Ai: 21 Modes: @@ -84421,6 +86352,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 02 Modes: @@ -84470,6 +86402,7 @@ Body: WalkSpeed: 190 AttackDelay: 1132 AttackMotion: 583 + ClientAttackMotion: 432 DamageMotion: 532 Ai: 19 Modes: @@ -84519,6 +86452,7 @@ Body: WalkSpeed: 165 AttackDelay: 1430 AttackMotion: 1080 + ClientAttackMotion: 480 DamageMotion: 1080 Ai: 07 Modes: @@ -84569,6 +86503,7 @@ Body: WalkSpeed: 200 AttackDelay: 1612 AttackMotion: 622 + ClientAttackMotion: 576 DamageMotion: 583 Ai: 19 Modes: @@ -84618,6 +86553,7 @@ Body: WalkSpeed: 200 AttackDelay: 1100 AttackMotion: 900 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 17 Modes: @@ -84663,6 +86599,7 @@ Body: WalkSpeed: 200 AttackDelay: 2492 AttackMotion: 792 + ClientAttackMotion: 696 DamageMotion: 432 Ai: 01 Modes: @@ -84714,6 +86651,7 @@ Body: WalkSpeed: 200 AttackDelay: 860 AttackMotion: 660 + ClientAttackMotion: 540 DamageMotion: 624 Ai: 21 Modes: @@ -84761,6 +86699,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 10 Modes: @@ -84806,6 +86745,7 @@ Body: WalkSpeed: 170 AttackDelay: 950 AttackMotion: 2520 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Modes: @@ -84855,6 +86795,7 @@ Body: WalkSpeed: 200 AttackDelay: 1236 AttackMotion: 336 + ClientAttackMotion: 168 DamageMotion: 432 Ai: 21 Modes: @@ -84905,6 +86846,7 @@ Body: WalkSpeed: 150 AttackDelay: 1048 AttackMotion: 648 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 21 Modes: @@ -84955,6 +86897,7 @@ Body: WalkSpeed: 200 AttackDelay: 1080 AttackMotion: 648 + ClientAttackMotion: 600 DamageMotion: 480 Ai: 21 Modes: @@ -85005,6 +86948,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 21 Modes: @@ -85054,6 +86998,7 @@ Body: WalkSpeed: 200 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 21 Modes: @@ -85105,6 +87050,7 @@ Body: WalkSpeed: 300 AttackDelay: 872 AttackMotion: 1344 + ClientAttackMotion: 408 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -85164,6 +87110,7 @@ Body: WalkSpeed: 100 AttackDelay: 1072 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 384 DamageTaken: 10 Ai: 21 @@ -85223,6 +87170,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 1020 + ClientAttackMotion: 324 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -85284,6 +87232,7 @@ Body: WalkSpeed: 150 AttackDelay: 1678 AttackMotion: 780 + ClientAttackMotion: 660 DamageMotion: 648 DamageTaken: 10 Ai: 21 @@ -85343,6 +87292,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 288 + ClientAttackMotion: 384 DamageMotion: 144 DamageTaken: 10 Ai: 21 @@ -85376,7 +87326,7 @@ Body: StealProtected: true - Id: 3431 AegisName: MIN_G_RODA_FROG - Name: Roda Frog + Name: Roda Frog Level: 100 Hp: 100000 Attack: 632 @@ -85398,6 +87348,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 02 Modes: @@ -85405,7 +87356,7 @@ Body: Aggressive: true - Id: 3432 AegisName: MIN_G_WOLF - Name: Wolf + Name: Wolf Level: 100 Hp: 100000 Attack: 647 @@ -85428,6 +87379,7 @@ Body: WalkSpeed: 200 AttackDelay: 1054 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 02 Modes: @@ -85458,6 +87410,7 @@ Body: WalkSpeed: 200 AttackDelay: 1864 AttackMotion: 864 + ClientAttackMotion: 768 DamageMotion: 540 Ai: 02 Modes: @@ -85486,6 +87439,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 02 Modes: @@ -85516,6 +87470,7 @@ Body: WalkSpeed: 200 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Modes: @@ -85544,6 +87499,7 @@ Body: WalkSpeed: 300 AttackDelay: 1260 AttackMotion: 192 + ClientAttackMotion: 1092 DamageMotion: 192 Ai: 17 Modes: @@ -85574,6 +87530,7 @@ Body: WalkSpeed: 175 AttackDelay: 1772 AttackMotion: 120 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Modes: @@ -85604,6 +87561,7 @@ Body: WalkSpeed: 250 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 04 Modes: @@ -85634,6 +87592,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 1000 Ai: 04 Modes: @@ -85664,6 +87623,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 21 Modes: @@ -85699,6 +87659,7 @@ Body: WalkSpeed: 200 AttackDelay: 1120 AttackMotion: 420 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 Drops: @@ -85742,6 +87703,7 @@ Body: WalkSpeed: 200 AttackDelay: 1604 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 2016 Ai: 17 Drops: @@ -85789,6 +87751,7 @@ Body: WalkSpeed: 190 AttackDelay: 576 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 Drops: @@ -85832,6 +87795,7 @@ Body: WalkSpeed: 300 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 04 Drops: @@ -85872,6 +87836,7 @@ Body: WalkSpeed: 250 AttackDelay: 1440 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -85912,6 +87877,7 @@ Body: WalkSpeed: 250 AttackDelay: 1440 AttackMotion: 576 + ClientAttackMotion: 216 DamageMotion: 432 Ai: 04 Drops: @@ -85950,6 +87916,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 480 Ai: 04 Drops: @@ -85990,6 +87957,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1536 + ClientAttackMotion: 1344 DamageMotion: 480 Ai: 04 - Id: 3450 @@ -86020,6 +87988,7 @@ Body: WalkSpeed: 200 AttackDelay: 2000 AttackMotion: 1536 + ClientAttackMotion: 432 DamageMotion: 480 Ai: 04 Class: Boss @@ -86074,6 +88043,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 600 DamageMotion: 500 Ai: 04 Modes: @@ -86123,6 +88093,7 @@ Body: WalkSpeed: 400 AttackDelay: 768 AttackMotion: 2784 + ClientAttackMotion: 2592 DamageMotion: 480 Ai: 04 Drops: @@ -86175,6 +88146,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 - Id: 3455 @@ -86197,6 +88169,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -86265,6 +88238,7 @@ Body: WalkSpeed: 300 AttackDelay: 960 AttackMotion: 1632 + ClientAttackMotion: 1440 DamageMotion: 480 Ai: 21 Class: Boss @@ -86322,6 +88296,7 @@ Body: WalkSpeed: 250 AttackDelay: 768 AttackMotion: 528 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 21 Class: Boss @@ -86368,6 +88343,7 @@ Body: WalkSpeed: 150 AttackDelay: 2112 AttackMotion: 1152 + ClientAttackMotion: 1920 DamageMotion: 672 Ai: 21 Class: Boss @@ -86410,6 +88386,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 09 - Id: 3477 @@ -86439,6 +88416,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 600 DamageMotion: 500 Ai: 09 Drops: @@ -86484,6 +88462,7 @@ Body: WalkSpeed: 200 AttackDelay: 676 AttackMotion: 648 + ClientAttackMotion: 432 DamageMotion: 432 Ai: 09 Class: Boss @@ -86518,6 +88497,7 @@ Body: WalkSpeed: 175 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 09 Drops: @@ -86566,6 +88546,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 576 + ClientAttackMotion: 624 DamageMotion: 420 Ai: 09 Drops: @@ -86615,6 +88596,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 672 DamageMotion: 500 Ai: 09 Drops: @@ -86663,6 +88645,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 288 DamageMotion: 600 Ai: 09 Drops: @@ -86711,6 +88694,7 @@ Body: WalkSpeed: 200 AttackDelay: 1800 AttackMotion: 780 + ClientAttackMotion: 1440 DamageMotion: 480 Ai: 09 Drops: @@ -86754,6 +88738,7 @@ Body: WalkSpeed: 300 AttackDelay: 960 AttackMotion: 1632 + ClientAttackMotion: 912 DamageMotion: 480 Ai: 21 Class: Boss @@ -86782,6 +88767,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 576 + ClientAttackMotion: 624 DamageMotion: 420 Ai: 09 # - Id: 3486 @@ -86811,6 +88797,7 @@ Body: WalkSpeed: 100 AttackDelay: 500 AttackMotion: 840 + ClientAttackMotion: 600 DamageMotion: 300 Ai: 04 Drops: @@ -86856,6 +88843,7 @@ Body: WalkSpeed: 150 AttackDelay: 1000 AttackMotion: 1100 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 Drops: @@ -86901,6 +88889,7 @@ Body: WalkSpeed: 200 AttackDelay: 1500 AttackMotion: 1500 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 Drops: @@ -86948,6 +88937,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 Modes: @@ -86998,6 +88988,7 @@ Body: WalkSpeed: 100 AttackDelay: 0 AttackMotion: 0 + ClientAttackMotion: 2496 DamageMotion: 0 Ai: 01 Class: Guardian @@ -87049,6 +89040,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 72 DamageMotion: 480 Ai: 02 Drops: @@ -87093,6 +89085,7 @@ Body: WalkSpeed: 200 AttackDelay: 1456 AttackMotion: 456 + ClientAttackMotion: 264 DamageMotion: 336 Ai: 01 Drops: @@ -87138,6 +89131,7 @@ Body: WalkSpeed: 400 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 192 DamageMotion: 480 Ai: 01 Modes: @@ -87185,6 +89179,7 @@ Body: WalkSpeed: 150 AttackDelay: 1292 AttackMotion: 792 + ClientAttackMotion: 648 DamageMotion: 216 Ai: 01 Modes: @@ -87234,6 +89229,7 @@ Body: WalkSpeed: 200 AttackDelay: 2016 AttackMotion: 816 + ClientAttackMotion: 336 DamageMotion: 288 Ai: 01 Drops: @@ -87281,6 +89277,7 @@ Body: WalkSpeed: 300 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 240 Ai: 03 Drops: @@ -87322,6 +89319,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 01 Drops: @@ -87368,6 +89366,7 @@ Body: WalkSpeed: 300 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 864 DamageMotion: 576 Ai: 04 Drops: @@ -87413,6 +89412,7 @@ Body: WalkSpeed: 250 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 960 DamageMotion: 576 Ai: 04 Drops: @@ -87460,6 +89460,7 @@ Body: WalkSpeed: 250 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 04 Drops: @@ -87507,6 +89508,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 72 DamageMotion: 480 Ai: 21 Class: Boss @@ -87553,6 +89555,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 576 Ai: 21 Drops: @@ -87600,6 +89603,7 @@ Body: WalkSpeed: 250 AttackDelay: 864 AttackMotion: 1056 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 04 Modes: @@ -87647,6 +89651,7 @@ Body: WalkSpeed: 400 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 72 DamageMotion: 480 Ai: 02 # - Id: 3509 @@ -87678,13 +89683,14 @@ Body: WalkSpeed: 150 AttackDelay: 1200 AttackMotion: 1200 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 09 Drops: - Item: Black_Mask Rate: 3000 - Item: Silver_Bracelet - Rate: 3000 + Rate: 3000 - Item: Center_Potion_B Rate: 100 - Item: White_Potion_B @@ -87718,6 +89724,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 04 Drops: @@ -87760,6 +89767,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 04 Drops: @@ -87802,6 +89810,7 @@ Body: WalkSpeed: 140 AttackDelay: 824 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 360 Ai: 21 Modes: @@ -87846,6 +89855,7 @@ Body: WalkSpeed: 180 AttackDelay: 1100 AttackMotion: 1100 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 20 Class: Boss @@ -87888,6 +89898,7 @@ Body: ElementLevel: 2 WalkSpeed: 1000 AttackDelay: 1344 + ClientAttackMotion: 1152 Ai: 10 Modes: IgnoreMagic: true @@ -87921,6 +89932,7 @@ Body: WalkSpeed: 180 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 768 DamageMotion: 144 Ai: 20 Class: Boss @@ -87969,6 +89981,7 @@ Body: WalkSpeed: 210 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 04 - Id: 3518 @@ -87998,6 +90011,7 @@ Body: WalkSpeed: 180 AttackDelay: 1100 AttackMotion: 1100 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 09 Drops: @@ -88038,6 +90052,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 04 Drops: @@ -88080,6 +90095,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 432 + ClientAttackMotion: 576 DamageMotion: 360 Ai: 04 Drops: @@ -88122,6 +90138,7 @@ Body: WalkSpeed: 140 AttackDelay: 824 AttackMotion: 432 + ClientAttackMotion: 336 DamageMotion: 360 Ai: 21 Modes: @@ -88166,6 +90183,7 @@ Body: WalkSpeed: 180 AttackDelay: 1100 AttackMotion: 1100 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 20 Class: Boss @@ -88208,6 +90226,7 @@ Body: ElementLevel: 2 WalkSpeed: 1000 AttackDelay: 1344 + ClientAttackMotion: 1152 Ai: 10 Modes: IgnoreMagic: true @@ -88241,6 +90260,7 @@ Body: WalkSpeed: 180 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 768 DamageMotion: 144 Ai: 20 Class: Boss @@ -88289,6 +90309,7 @@ Body: WalkSpeed: 150 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 04 - Id: 3526 @@ -88318,6 +90339,7 @@ Body: WalkSpeed: 400 AttackDelay: 432 AttackMotion: 840 + ClientAttackMotion: 660 DamageMotion: 216 DamageTaken: 10 Ai: 21 @@ -88365,6 +90387,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 - Id: 3528 @@ -88394,6 +90417,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 # - Id: 3529 @@ -88503,6 +90527,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 - Id: 3570 @@ -88532,6 +90557,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 # - Id: 3571 @@ -88664,6 +90690,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 Class: Boss @@ -88723,6 +90750,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 780 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 04 Drops: @@ -88762,6 +90790,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 1296 DamageMotion: 1 Modes: IgnoreMagic: true @@ -88787,6 +90816,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 1296 DamageMotion: 1 Modes: IgnoreMagic: true @@ -88812,6 +90842,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 1296 DamageMotion: 1 Modes: IgnoreMagic: true @@ -88847,6 +90878,7 @@ Body: WalkSpeed: 400 AttackDelay: 1296 AttackMotion: 1902 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 Drops: @@ -88894,6 +90926,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 Drops: @@ -88944,6 +90977,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 1268 + ClientAttackMotion: 1248 DamageMotion: 480 Ai: 21 Class: Boss @@ -89001,6 +91035,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 720 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 04 - Id: 3630 @@ -89030,6 +91065,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Class: Boss @@ -89061,6 +91097,7 @@ Body: WalkSpeed: 250 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 1260 DamageMotion: 360 Ai: 04 Drops: @@ -89109,6 +91146,7 @@ Body: WalkSpeed: 250 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 768 DamageMotion: 360 Ai: 04 Drops: @@ -89158,6 +91196,7 @@ Body: WalkSpeed: 150 AttackDelay: 772 AttackMotion: 672 + ClientAttackMotion: 576 DamageMotion: 360 DamageTaken: 10 Ai: 21 @@ -89220,6 +91259,7 @@ Body: WalkSpeed: 200 AttackDelay: 1384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 09 Modes: @@ -89251,6 +91291,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -89298,6 +91339,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -89345,6 +91387,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -89392,6 +91435,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -89439,6 +91483,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -89486,6 +91531,7 @@ Body: WalkSpeed: 200 AttackDelay: 2228 AttackMotion: 528 + ClientAttackMotion: 336 DamageMotion: 576 Ai: 04 Drops: @@ -89533,6 +91579,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -89580,6 +91627,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -89627,6 +91675,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -89674,6 +91723,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -89721,6 +91771,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -89768,6 +91819,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 04 Drops: @@ -89813,6 +91865,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -89858,6 +91911,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -89903,6 +91957,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -89948,6 +92003,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -89993,6 +92049,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -90038,6 +92095,7 @@ Body: WalkSpeed: 400 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 04 Drops: @@ -90092,6 +92150,7 @@ Body: WalkSpeed: 100 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -90150,6 +92209,7 @@ Body: WalkSpeed: 100 AttackDelay: 2612 AttackMotion: 912 + ClientAttackMotion: 576 DamageMotion: 288 Ai: 21 Class: Boss @@ -90207,6 +92267,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 20 Modes: @@ -90256,6 +92317,7 @@ Body: WalkSpeed: 150 AttackDelay: 1816 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 20 Modes: @@ -90305,6 +92367,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 21 Drops: @@ -90352,6 +92415,7 @@ Body: WalkSpeed: 200 AttackDelay: 1180 AttackMotion: 480 + ClientAttackMotion: 192 DamageMotion: 648 Ai: 21 Drops: @@ -90399,6 +92463,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -90446,6 +92511,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 04 Drops: @@ -90493,6 +92559,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 19 Drops: @@ -90540,6 +92607,7 @@ Body: WalkSpeed: 250 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 19 Drops: @@ -90589,6 +92657,7 @@ Body: WalkSpeed: 150 AttackDelay: 1080 AttackMotion: 780 + ClientAttackMotion: 864 DamageMotion: 180 Ai: 04 Modes: @@ -90620,6 +92689,7 @@ Body: WalkSpeed: 175 AttackDelay: 1024 AttackMotion: 624 + ClientAttackMotion: 336 DamageMotion: 336 Ai: 13 # - Id: 3671 @@ -90781,6 +92851,7 @@ Body: WalkSpeed: 180 AttackDelay: 900 AttackMotion: 770 + ClientAttackMotion: 420 DamageMotion: 550 Ai: 04 Drops: @@ -90826,6 +92897,7 @@ Body: WalkSpeed: 200 AttackDelay: 1200 AttackMotion: 672 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Drops: @@ -90871,6 +92943,7 @@ Body: WalkSpeed: 180 AttackDelay: 800 AttackMotion: 420 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -90916,6 +92989,7 @@ Body: WalkSpeed: 150 AttackDelay: 750 AttackMotion: 400 + ClientAttackMotion: 480 DamageMotion: 420 Ai: 01 Modes: @@ -90965,6 +93039,7 @@ Body: WalkSpeed: 190 AttackDelay: 1100 AttackMotion: 650 + ClientAttackMotion: 528 DamageMotion: 500 Ai: 04 Drops: @@ -91013,6 +93088,7 @@ Body: WalkSpeed: 250 AttackDelay: 900 AttackMotion: 1000 + ClientAttackMotion: 960 DamageMotion: 500 DamageTaken: 10 Ai: 04 @@ -91056,6 +93132,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Modes: IgnoreMagic: true @@ -91083,6 +93160,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 504 DamageMotion: 1 Modes: IgnoreMagic: true @@ -91114,6 +93192,7 @@ Body: WalkSpeed: 180 AttackDelay: 900 AttackMotion: 770 + ClientAttackMotion: 420 DamageMotion: 550 Ai: 04 - Id: 3745 @@ -91141,6 +93220,7 @@ Body: WalkSpeed: 200 AttackDelay: 1200 AttackMotion: 672 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 - Id: 3746 @@ -91168,6 +93248,7 @@ Body: WalkSpeed: 180 AttackDelay: 800 AttackMotion: 420 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 - Id: 3747 @@ -91199,6 +93280,7 @@ Body: WalkSpeed: 200 AttackDelay: 2050 AttackMotion: 500 + ClientAttackMotion: 420 DamageMotion: 660 Ai: 04 Drops: @@ -91246,6 +93328,7 @@ Body: WalkSpeed: 120 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 600 Ai: 04 Drops: @@ -91293,6 +93376,7 @@ Body: WalkSpeed: 150 AttackDelay: 1500 AttackMotion: 600 + ClientAttackMotion: 432 DamageMotion: 500 Ai: 04 Drops: @@ -91340,6 +93424,7 @@ Body: WalkSpeed: 250 AttackDelay: 1280 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 19 Drops: @@ -91385,6 +93470,7 @@ Body: WalkSpeed: 400 AttackDelay: 500 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 19 Drops: @@ -91432,6 +93518,7 @@ Body: WalkSpeed: 400 AttackDelay: 924 AttackMotion: 912 + ClientAttackMotion: 816 DamageMotion: 288 Ai: 19 Drops: @@ -91475,6 +93562,7 @@ Body: WalkSpeed: 250 AttackDelay: 2456 AttackMotion: 912 + ClientAttackMotion: 408 DamageMotion: 504 Ai: 19 Drops: @@ -91524,6 +93612,7 @@ Body: WalkSpeed: 150 AttackDelay: 1826 AttackMotion: 816 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 19 Modes: @@ -91565,6 +93654,7 @@ Body: ElementLevel: 1 WalkSpeed: 1000 AttackMotion: 1 + ClientAttackMotion: 576 Drops: - Item: Alchol Rate: 50 @@ -91609,6 +93699,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 864 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 19 Class: Boss @@ -91663,6 +93754,7 @@ Body: WalkSpeed: 145 AttackDelay: 1290 AttackMotion: 1140 + ClientAttackMotion: 780 DamageMotion: 576 Ai: 19 Class: Boss @@ -91714,11 +93806,14 @@ Body: ChaseRange: 12 Size: Medium Race: Demon + RaceGroups: + Illusion_Moonlight: true Element: Fire ElementLevel: 3 WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 120 DamageMotion: 288 Ai: 19 Class: Boss @@ -91769,11 +93864,14 @@ Body: ChaseRange: 12 Size: Medium Race: Brute + RaceGroups: + Illusion_Moonlight: true Element: Fire ElementLevel: 3 WalkSpeed: 150 AttackDelay: 840 AttackMotion: 540 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 19 Drops: @@ -91814,11 +93912,14 @@ Body: ChaseRange: 12 Size: Medium Race: Undead + RaceGroups: + Illusion_Moonlight: true Element: Undead ElementLevel: 1 WalkSpeed: 200 AttackDelay: 2468 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 19 Drops: @@ -91859,11 +93960,14 @@ Body: ChaseRange: 12 Size: Medium Race: Undead + RaceGroups: + Illusion_Moonlight: true Element: Undead ElementLevel: 1 WalkSpeed: 190 AttackDelay: 1720 AttackMotion: 500 + ClientAttackMotion: 960 DamageMotion: 420 Ai: 19 Drops: @@ -91904,11 +94008,14 @@ Body: ChaseRange: 12 Size: Medium Race: Demon + RaceGroups: + Illusion_Moonlight: true Element: Water ElementLevel: 2 WalkSpeed: 250 AttackDelay: 912 AttackMotion: 2112 + ClientAttackMotion: 360 DamageMotion: 576 Ai: 19 Drops: @@ -91951,11 +94058,14 @@ Body: ChaseRange: 12 Size: Medium Race: Undead + RaceGroups: + Illusion_Moonlight: true Element: Undead ElementLevel: 1 WalkSpeed: 300 AttackDelay: 2864 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 19 Drops: @@ -91998,11 +94108,14 @@ Body: ChaseRange: 12 Size: Medium Race: Undead + RaceGroups: + Illusion_Moonlight: true Element: Dark ElementLevel: 1 WalkSpeed: 140 AttackDelay: 768 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Drops: @@ -92045,11 +94158,14 @@ Body: ChaseRange: 12 Size: Medium Race: Undead + RaceGroups: + Illusion_Moonlight: true Element: Undead ElementLevel: 3 WalkSpeed: 150 AttackDelay: 1450 AttackMotion: 864 + ClientAttackMotion: 672 DamageMotion: 288 Ai: 19 Drops: @@ -92140,6 +94256,7 @@ Body: WalkSpeed: 100 AttackDelay: 960 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 Modes: @@ -92188,6 +94305,7 @@ Body: WalkSpeed: 100 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 1000 Ai: 04 Drops: @@ -92224,6 +94342,7 @@ Body: WalkSpeed: 440 AttackDelay: 1372 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Modes: @@ -92260,11 +94379,14 @@ Body: ChaseRange: 12 Size: Medium Race: Demon + RaceGroups: + Illusion_Frozen: true Element: Water ElementLevel: 1 WalkSpeed: 190 AttackDelay: 576 AttackMotion: 370 + ClientAttackMotion: 300 DamageMotion: 270 Ai: 20 Modes: @@ -92305,11 +94427,14 @@ Body: ChaseRange: 12 Size: Large Race: Formless + RaceGroups: + Illusion_Frozen: true Element: Water ElementLevel: 2 WalkSpeed: 220 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 660 DamageMotion: 420 Ai: 04 Drops: @@ -92348,11 +94473,14 @@ Body: ChaseRange: 12 Size: Large Race: Formless + RaceGroups: + Illusion_Frozen: true Element: Water ElementLevel: 3 WalkSpeed: 250 AttackDelay: 861 AttackMotion: 660 + ClientAttackMotion: 600 DamageMotion: 144 Ai: 04 Drops: @@ -92391,10 +94519,13 @@ Body: ChaseRange: 12 Size: Small Race: Formless + RaceGroups: + Illusion_Frozen: true Element: Water ElementLevel: 2 WalkSpeed: 1000 AttackDelay: 1344 + ClientAttackMotion: 1152 Drops: - Item: Frozen_PieceOfRock Rate: 200 @@ -92443,11 +94574,14 @@ Body: ChaseRange: 12 Size: Large Race: Brute + RaceGroups: + Illusion_Frozen: true Element: Water ElementLevel: 4 WalkSpeed: 400 AttackDelay: 432 AttackMotion: 840 + ClientAttackMotion: 660 DamageMotion: 216 Ai: 21 Class: Boss @@ -92485,11 +94619,14 @@ Body: ChaseRange: 12 Size: Medium Race: Formless + RaceGroups: + Illusion_Frozen: true Element: Neutral ElementLevel: 1 WalkSpeed: 1000 AttackDelay: 500 AttackMotion: 500 + ClientAttackMotion: 0 DamageMotion: 500 Modes: NORANDOMWALK: true @@ -92512,11 +94649,14 @@ Body: ChaseRange: 12 Size: Medium Race: Formless + RaceGroups: + Illusion_Frozen: true Element: Neutral ElementLevel: 1 WalkSpeed: 1000 AttackDelay: 500 AttackMotion: 500 + ClientAttackMotion: 0 DamageMotion: 500 Modes: NORANDOMWALK: true @@ -92557,6 +94697,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 540 DamageMotion: 504 Ai: 21 Drops: @@ -92606,6 +94747,7 @@ Body: WalkSpeed: 250 AttackDelay: 1100 AttackMotion: 483 + ClientAttackMotion: 720 DamageMotion: 528 Ai: 21 Drops: @@ -92655,6 +94797,7 @@ Body: WalkSpeed: 170 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 540 DamageMotion: 672 Ai: 21 Drops: @@ -92704,6 +94847,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1248 DamageMotion: 528 Ai: 21 Drops: @@ -92753,6 +94897,7 @@ Body: WalkSpeed: 250 AttackDelay: 1452 AttackMotion: 483 + ClientAttackMotion: 1200 DamageMotion: 528 Ai: 21 Drops: @@ -92802,6 +94947,7 @@ Body: WalkSpeed: 200 AttackDelay: 900 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 500 Ai: 21 Class: Boss @@ -92862,6 +95008,7 @@ Body: WalkSpeed: 170 AttackDelay: 768 AttackMotion: 1632 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 21 Class: Boss @@ -92916,6 +95063,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 2496 DamageMotion: 480 Ai: 21 Class: Boss @@ -92955,6 +95103,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Class: Boss @@ -92994,6 +95143,7 @@ Body: WalkSpeed: 300 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -93041,6 +95191,7 @@ Body: WalkSpeed: 300 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -93088,6 +95239,7 @@ Body: WalkSpeed: 300 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -93135,6 +95287,7 @@ Body: WalkSpeed: 300 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 02 Drops: @@ -93338,6 +95491,7 @@ Body: WalkSpeed: 200 AttackDelay: 512 AttackMotion: 780 + ClientAttackMotion: 540 DamageMotion: 504 Ai: 21 Modes: @@ -94017,34 +96171,519 @@ Body: # AegisName: VH_ENTWEIHEN_S # - Id: 20254 # AegisName: VH_MIMIC -# - Id: 20255 -# AegisName: ILL_TEDDY_BEAR_R -# - Id: 20256 -# AegisName: ILL_TEDDY_BEAR_Y -# - Id: 20257 -# AegisName: ILL_TEDDY_BEAR_G -# - Id: 20258 -# AegisName: ILL_TEDDY_BEAR_W -# - Id: 20259 -# AegisName: ILL_TEDDY_BEAR_B -# - Id: 20260 -# AegisName: ILL_TEDDY_BEAR_S -# - Id: 20261 -# AegisName: ILL_PITMAN -# - Id: 20262 -# AegisName: ILL_MINERAL -# - Id: 20263 -# AegisName: ILL_OBSIDIAN -# - Id: 20264 -# AegisName: G_ILL_TEDDY_BEAR_R -# - Id: 20265 -# AegisName: G_ILL_TEDDY_BEAR_Y -# - Id: 20266 -# AegisName: G_ILL_TEDDY_BEAR_G -# - Id: 20267 -# AegisName: G_ILL_TEDDY_BEAR_W -# - Id: 20268 -# AegisName: G_ILL_TEDDY_BEAR_B + - Id: 20255 + AegisName: ILL_TEDDY_BEAR_R + Name: Red Teddy Bear + Level: 155 + Hp: 328072 + BaseExp: 19972 + JobExp: 22503 + Attack: 2022 + Attack2: 225 + Defense: 212 + MagicDefense: 88 + Str: 132 + Agi: 100 + Vit: 155 + Int: 132 + Dex: 133 + Luk: 132 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Fire + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 04 + Drops: + - Item: NasariansSoulstone + Rate: 1000 + - Item: Iron_Ore + Rate: 2000 + - Item: Oridecon + Rate: 500 + - Item: Bearopy + Rate: 1500 + - Item: Boots_ + Rate: 50 + - Item: Colorful_T_Bear_Card + Rate: 1 + StealProtected: true + - Id: 20256 + AegisName: ILL_TEDDY_BEAR_Y + Name: Yellow Teddy Bear + Level: 155 + Hp: 294044 + BaseExp: 19384 + JobExp: 23165 + Attack: 1819 + Attack2: 202 + Defense: 200 + MagicDefense: 112 + Str: 102 + Agi: 132 + Vit: 102 + Int: 182 + Dex: 155 + Luk: 102 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Wind + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 04 + Drops: + - Item: Bearopy + Rate: 1500 + - Item: NasariansSoulstone + Rate: 1000 + - Item: Elunium + Rate: 500 + - Item: Screw + Rate: 2500 + - Item: Survival_Rod_ + Rate: 50 + - Item: Colorful_T_Bear_Card + Rate: 1 + StealProtected: true + - Id: 20257 + AegisName: ILL_TEDDY_BEAR_G + Name: Green Teddy Bear + Level: 157 + Hp: 331960 + BaseExp: 21646 + JobExp: 25117 + Attack: 2113 + Attack2: 235 + Defense: 227 + MagicDefense: 110 + Str: 129 + Agi: 128 + Vit: 141 + Int: 173 + Dex: 158 + Luk: 129 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Poison + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 708 + DamageMotion: 504 + Ai: 04 + Drops: + - Item: Bearopy + Rate: 1500 + - Item: NasariansSoulstone + Rate: 1000 + - Item: Green_Bearopy + Rate: 500 + - Item: Green_Herb + Rate: 2500 + - Item: Colorful_T_Bear_Card + Rate: 1 + StealProtected: true + - Id: 20258 + AegisName: ILL_TEDDY_BEAR_W + Name: White Teddy Bear + Level: 155 + Hp: 311841 + BaseExp: 20334 + JobExp: 23595 + Attack: 1985 + Attack2: 221 + Defense: 213 + MagicDefense: 103 + Str: 121 + Agi: 120 + Vit: 133 + Int: 162 + Dex: 149 + Luk: 121 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Neutral + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 04 + Drops: + - Item: Bearopy + Rate: 2500 + - Item: NasariansSoulstone + Rate: 1500 + - Item: Oridecon_Hammer + Rate: 500 + - Item: Steel + Rate: 250 + - Item: Survival_Rod2_ + Rate: 50 + - Item: Colorful_T_Bear_Card + Rate: 1 + StealProtected: true + - Id: 20259 + AegisName: ILL_TEDDY_BEAR_B + Name: Blue Teddy Bear + Level: 152 + Hp: 280657 + BaseExp: 18300 + JobExp: 21235 + Attack: 1786 + Attack2: 198 + Defense: 192 + MagicDefense: 93 + Str: 109 + Agi: 108 + Vit: 120 + Int: 146 + Dex: 134 + Luk: 109 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Water + ElementLevel: 1 + WalkSpeed: 300 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 04 + Drops: + - Item: Bearopy + Rate: 1500 + - Item: Screw + Rate: 2500 + - Item: Iron + Rate: 1000 + - Item: Blue_Herb + Rate: 500 + - Item: Chonchon_Doll_HQ + Rate: 1000 + - Item: Colorful_T_Bear_Card + Rate: 1 + StealProtected: true + - Id: 20260 + AegisName: ILL_TEDDY_BEAR_S + Name: Shining Teddy Bear + Level: 160 + Hp: 10724874 + BaseExp: 1793444 + JobExp: 1618614 + Attack: 4168 + Attack2: 2895 + Defense: 313 + MagicDefense: 152 + Str: 178 + Agi: 176 + Vit: 195 + Int: 238 + Dex: 219 + Luk: 178 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Large + Race: Formless + Element: Holy + ElementLevel: 4 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 21 + Drops: + - Item: Elunium + Rate: 2000 + - Item: Oridecon + Rate: 2000 + - Item: Clay_Doll + Rate: 1500 + - Item: Counter_Dagger + Rate: 300 + - Item: Screw + Rate: 4000 + - Item: Shining_T_Bear_Card + Rate: 1 + StealProtected: true + - Id: 20261 + AegisName: ILL_PITMAN + Name: Hardworking Pitman + Level: 154 + Hp: 305605 + Attack: 1945 + Attack2: 216 + Defense: 209 + MagicDefense: 101 + Str: 118 + Agi: 117 + Vit: 130 + Int: 159 + Dex: 146 + Luk: 118 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Large + Race: Demon + Element: Earth + ElementLevel: 2 + WalkSpeed: 180 + AttackDelay: 960 + AttackMotion: 336 + DamageMotion: 300 + Ai: 04 + Drops: + - Item: Old_Pick + Rate: 1500 + - Item: Old_Steel_Plate + Rate: 250 + - Item: Lantern + Rate: 2500 + - Item: Gun_Powder + Rate: 1000 + - Item: Gate_KeeperDD + Rate: 50 + - Item: Pitman_Worker_Card + Rate: 1 + StealProtected: true + - Id: 20262 + AegisName: ILL_MINERAL + Name: Soul Fragment + Level: 153 + Hp: 290324 + BaseExp: 18931 + JobExp: 21967 + Attack: 1847 + Attack2: 205 + Defense: 198 + MagicDefense: 96 + Str: 113 + Agi: 112 + Vit: 124 + Int: 151 + Dex: 139 + Luk: 113 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Neutral + ElementLevel: 2 + WalkSpeed: 250 + AttackDelay: 648 + AttackMotion: 480 + DamageMotion: 360 + Ai: 04 + Drops: + - Item: Fragment_Of_Crystal + Rate: 2500 + - Item: Golden_Jewel + Rate: 250 + - Item: Gothic_China_Doll + Rate: 1000 + - Item: Yellow_Gemstone + Rate: 300 + - Item: Fragment_Of_Soul_Card + Rate: 1 + StealProtected: true + - Id: 20263 + AegisName: ILL_OBSIDIAN + # Name: Sinister Dwelling Obsidian + Name: Sinister Obsidian + Level: 156 + Hp: 318593 + Attack: 2027 + Attack2: 225 + Defense: 217 + MagicDefense: 106 + Str: 124 + Agi: 122 + Vit: 136 + Int: 166 + Dex: 152 + Luk: 124 + AttackRange: 1 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Earth + ElementLevel: 2 + WalkSpeed: 350 + AttackDelay: 720 + AttackMotion: 864 + DamageMotion: 504 + Ai: 04 + Drops: + - Item: Dark_Crystal_Fragment + Rate: 1500 + - Item: Crystal_Jewel + Rate: 250 + - Item: Coal + Rate: 250 + - Item: Elunium + Rate: 40 + - Item: Sinister_Obsidian_Card + Rate: 1 + StealProtected: true + - Id: 20264 + AegisName: G_ILL_TEDDY_BEAR_R + Name: Red Teddy Bear + Level: 155 + Hp: 309520 + Attack: 2022 + Attack2: 225 + Defense: 212 + MagicDefense: 88 + Str: 132 + Agi: 100 + Vit: 155 + Int: 132 + Dex: 133 + Luk: 132 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Fire + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 24 + - Id: 20265 + AegisName: G_ILL_TEDDY_BEAR_Y + Name: Yellow Teddy Bear + Level: 155 + Hp: 294044 + Attack: 1819 + Attack2: 202 + Defense: 200 + MagicDefense: 112 + Str: 102 + Agi: 132 + Vit: 102 + Int: 182 + Dex: 155 + Luk: 102 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Wind + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 24 + - Id: 20266 + AegisName: G_ILL_TEDDY_BEAR_G + Name: Green Teddy Bear + Level: 157 + Hp: 331960 + Attack: 2113 + Attack2: 235 + Defense: 227 + MagicDefense: 110 + Str: 129 + Agi: 128 + Vit: 141 + Int: 173 + Dex: 158 + Luk: 129 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Poison + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 24 + - Id: 20267 + AegisName: G_ILL_TEDDY_BEAR_W + Name: White Teddy Bear + Level: 155 + Hp: 311841 + Attack: 1985 + Attack2: 221 + Defense: 213 + MagicDefense: 103 + Str: 121 + Agi: 120 + Vit: 133 + Int: 162 + Dex: 149 + Luk: 121 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Neutral + ElementLevel: 1 + WalkSpeed: 150 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 24 + - Id: 20268 + AegisName: G_ILL_TEDDY_BEAR_B + Name: Blue Teddy Bear + Level: 152 + Hp: 280657 + Attack: 1786 + Attack2: 198 + Defense: 192 + MagicDefense: 93 + Str: 109 + Agi: 108 + Vit: 120 + Int: 146 + Dex: 134 + Luk: 109 + AttackRange: 2 + SkillRange: 10 + ChaseRange: 12 + Size: Small + Race: Formless + Element: Water + ElementLevel: 1 + WalkSpeed: 300 + AttackDelay: 512 + AttackMotion: 780 + DamageMotion: 504 + Ai: 24 - Id: 20269 AegisName: GUILD_SKILL_FLAG Name: Guild Skill Flag @@ -94063,6 +96702,7 @@ Body: ElementLevel: 1 WalkSpeed: 300 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 384 Modes: NoRandomWalk: true @@ -94095,6 +96735,7 @@ Body: WalkSpeed: 200 AttackDelay: 860 AttackMotion: 660 + ClientAttackMotion: 540 DamageMotion: 624 Ai: 07 Drops: @@ -94144,6 +96785,7 @@ Body: WalkSpeed: 150 AttackDelay: 632 AttackMotion: 518 + ClientAttackMotion: 384 DamageMotion: 288 Ai: 04 Drops: @@ -94193,6 +96835,7 @@ Body: WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 900 DamageMotion: 672 Ai: 10 Drops: @@ -94240,6 +96883,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 288 + ClientAttackMotion: 384 DamageMotion: 144 Ai: 21 Class: Boss @@ -94292,6 +96936,7 @@ Body: WalkSpeed: 175 AttackDelay: 2413 AttackMotion: 1248 + ClientAttackMotion: 96 DamageMotion: 768 Ai: 04 Drops: @@ -94341,6 +96986,7 @@ Body: WalkSpeed: 200 AttackDelay: 857 AttackMotion: 1056 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 05 Drops: @@ -94390,6 +97036,7 @@ Body: WalkSpeed: 200 AttackDelay: 912 AttackMotion: 1344 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 04 Drops: @@ -94439,6 +97086,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 288 + ClientAttackMotion: 288 DamageMotion: 144 Ai: 21 Class: Boss @@ -94482,11 +97130,14 @@ Body: ChaseRange: 12 Size: Large Race: Formless + RaceGroups: + Illusion_Luanda: true Element: Neutral ElementLevel: 4 WalkSpeed: 200 AttackDelay: 1332 AttackMotion: 1332 + ClientAttackMotion: 936 DamageMotion: 672 Ai: 24 - Id: 20279 @@ -94509,11 +97160,14 @@ Body: ChaseRange: 12 Size: Medium Race: Demihuman + RaceGroups: + Illusion_Luanda: true Element: Earth ElementLevel: 2 WalkSpeed: 200 AttackDelay: 857 AttackMotion: 1056 + ClientAttackMotion: 420 DamageMotion: 576 Ai: 24 - Id: 20280 @@ -94536,11 +97190,14 @@ Body: ChaseRange: 12 Size: Medium Race: Demihuman + RaceGroups: + Illusion_Luanda: true Element: Fire ElementLevel: 2 WalkSpeed: 200 AttackDelay: 912 AttackMotion: 1344 + ClientAttackMotion: 420 DamageMotion: 480 Ai: 24 # - Id: 20281 @@ -94688,6 +97345,7 @@ Body: WalkSpeed: 220 AttackDelay: 128 AttackMotion: 1004 + ClientAttackMotion: 960 DamageMotion: 240 Ai: 21 Class: Boss @@ -94732,6 +97390,7 @@ Body: WalkSpeed: 110 AttackDelay: 741 AttackMotion: 1536 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 04 Drops: @@ -94771,6 +97430,7 @@ Body: WalkSpeed: 165 AttackDelay: 1552 AttackMotion: 1152 + ClientAttackMotion: 336 DamageMotion: 336 Ai: 04 Drops: @@ -94810,6 +97470,7 @@ Body: WalkSpeed: 200 AttackDelay: 432 AttackMotion: 864 + ClientAttackMotion: 360 DamageMotion: 360 Ai: 04 Drops: @@ -94847,6 +97508,7 @@ Body: ElementLevel: 1 WalkSpeed: 1000 AttackDelay: 101 + ClientAttackMotion: 480 DamageMotion: 480 Modes: IgnoreMagic: true @@ -94878,6 +97540,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 216 DamageMotion: 360 Modes: IgnoreMagic: true @@ -94913,6 +97576,7 @@ Body: WalkSpeed: 250 AttackDelay: 872 AttackMotion: 1044 + ClientAttackMotion: 540 DamageMotion: 432 Ai: 21 Class: Boss @@ -94953,6 +97617,7 @@ Body: WalkSpeed: 250 AttackDelay: 872 AttackMotion: 1044 + ClientAttackMotion: 540 DamageMotion: 432 Class: Boss Ai: 21 @@ -94983,6 +97648,7 @@ Body: WalkSpeed: 200 AttackDelay: 1872 AttackMotion: 360 + ClientAttackMotion: 384 DamageMotion: 864 Ai: 04 Drops: @@ -95023,6 +97689,7 @@ Body: WalkSpeed: 250 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 04 Drops: @@ -95063,6 +97730,7 @@ Body: WalkSpeed: 200 AttackDelay: 206 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 288 Ai: 04 Drops: @@ -95093,6 +97761,7 @@ Body: WalkSpeed: 1000 AttackDelay: 76 AttackMotion: 384 + ClientAttackMotion: 0 DamageMotion: 288 Class: Boss Modes: @@ -95127,6 +97796,7 @@ Body: WalkSpeed: 200 AttackDelay: 1100 AttackMotion: 650 + ClientAttackMotion: 528 DamageMotion: 500 Ai: 04 - Id: 20353 @@ -95156,6 +97826,7 @@ Body: WalkSpeed: 250 AttackDelay: 1872 AttackMotion: 672 + ClientAttackMotion: 540 DamageMotion: 480 Ai: 21 Class: Boss @@ -95188,6 +97859,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 19 Drops: @@ -95233,6 +97905,7 @@ Body: WalkSpeed: 175 AttackDelay: 1270 AttackMotion: 1268 + ClientAttackMotion: 144 DamageMotion: 480 Ai: 19 Drops: @@ -95278,6 +97951,7 @@ Body: WalkSpeed: 200 AttackDelay: 432 AttackMotion: 1268 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 19 Drops: @@ -95323,6 +97997,7 @@ Body: WalkSpeed: 175 AttackDelay: 432 AttackMotion: 1268 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 19 Drops: @@ -95368,6 +98043,7 @@ Body: WalkSpeed: 200 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 528 DamageMotion: 240 Ai: 19 Drops: @@ -95411,6 +98087,7 @@ Body: WalkSpeed: 175 AttackDelay: 1289 AttackMotion: 1080 + ClientAttackMotion: 528 DamageMotion: 240 Ai: 19 Drops: @@ -95454,6 +98131,7 @@ Body: WalkSpeed: 200 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 540 DamageMotion: 576 Ai: 19 Drops: @@ -95497,6 +98175,7 @@ Body: WalkSpeed: 150 AttackDelay: 1781 AttackMotion: 768 + ClientAttackMotion: 540 DamageMotion: 576 Ai: 19 Drops: @@ -95540,6 +98219,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 792 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 19 Drops: @@ -95585,6 +98265,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 792 + ClientAttackMotion: 360 DamageMotion: 432 Ai: 19 Drops: @@ -95630,6 +98311,7 @@ Body: WalkSpeed: 220 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 19 Drops: @@ -95673,6 +98355,7 @@ Body: WalkSpeed: 200 AttackDelay: 936 AttackMotion: 1020 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 19 Drops: @@ -95716,6 +98399,7 @@ Body: WalkSpeed: 120 AttackDelay: 824 AttackMotion: 780 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 21 Drops: @@ -95760,6 +98444,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 972 DamageMotion: 480 Ai: 05 Drops: @@ -95801,6 +98486,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 600 DamageMotion: 384 Ai: 05 Drops: @@ -95848,6 +98534,7 @@ Body: WalkSpeed: 200 AttackDelay: 528 AttackMotion: 500 + ClientAttackMotion: 336 DamageMotion: 240 Ai: 21 Drops: @@ -95893,6 +98580,7 @@ Body: WalkSpeed: 150 AttackDelay: 1960 AttackMotion: 576 + ClientAttackMotion: 336 DamageMotion: 420 Ai: 05 Drops: @@ -95939,6 +98627,7 @@ Body: WalkSpeed: 180 AttackDelay: 1732 AttackMotion: 1332 + ClientAttackMotion: 468 DamageMotion: 540 Ai: 21 Drops: @@ -95988,6 +98677,7 @@ Body: WalkSpeed: 165 AttackDelay: 1216 AttackMotion: 816 + ClientAttackMotion: 720 DamageMotion: 432 Ai: 21 Drops: @@ -96036,6 +98726,7 @@ Body: WalkSpeed: 175 AttackDelay: 1020 AttackMotion: 720 + ClientAttackMotion: 336 DamageMotion: 384 Ai: 21 Drops: @@ -96084,6 +98775,7 @@ Body: WalkSpeed: 175 AttackDelay: 1024 AttackMotion: 624 + ClientAttackMotion: 336 DamageMotion: 336 Ai: 21 Drops: @@ -96132,6 +98824,7 @@ Body: WalkSpeed: 165 AttackDelay: 1260 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 336 Ai: 21 Drops: @@ -96180,6 +98873,7 @@ Body: WalkSpeed: 150 AttackDelay: 1700 AttackMotion: 1000 + ClientAttackMotion: 432 DamageMotion: 500 Ai: 21 Drops: @@ -96228,6 +98922,7 @@ Body: WalkSpeed: 300 AttackDelay: 2190 AttackMotion: 2040 + ClientAttackMotion: 720 DamageMotion: 336 Ai: 21 Drops: @@ -96277,6 +98972,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 384 DamageMotion: 336 Ai: 21 Drops: @@ -96323,6 +99019,7 @@ Body: WalkSpeed: 150 AttackDelay: 1056 AttackMotion: 1056 + ClientAttackMotion: 432 DamageMotion: 336 Ai: 21 Drops: @@ -96370,6 +99067,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 144 + ClientAttackMotion: 528 DamageMotion: 288 DamageTaken: 10 Ai: 21 @@ -96416,6 +99114,7 @@ Body: WalkSpeed: 300 AttackDelay: 1028 AttackMotion: 1020 + ClientAttackMotion: 384 DamageMotion: 420 Ai: 21 # - Id: 20383 @@ -96517,6 +99216,7 @@ Body: WalkSpeed: 200 AttackDelay: 608 AttackMotion: 408 + ClientAttackMotion: 1056 DamageMotion: 336 DamageTaken: 10 Ai: 21 @@ -96571,6 +99271,7 @@ Body: WalkSpeed: 100 AttackDelay: 672 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 192 Ai: 21 Drops: @@ -96617,6 +99318,7 @@ Body: WalkSpeed: 150 AttackDelay: 1020 AttackMotion: 500 + ClientAttackMotion: 1056 DamageMotion: 768 DamageTaken: 10 Ai: 21 @@ -96669,6 +99371,7 @@ Body: WalkSpeed: 100 AttackDelay: 868 AttackMotion: 768 + ClientAttackMotion: 408 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -96932,6 +99635,7 @@ Body: - Id: 20543 AegisName: MD_ED_M_SCIENCE Name: MD_ED_M_SCIENCE + ClientAttackMotion: 1584 # - Id: 20544 # AegisName: MINERAL_R_MJ # - Id: 20545 @@ -96989,6 +99693,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 17 # - Id: 20561 @@ -97080,6 +99785,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 1056 DamageMotion: 672 Ai: 04 Drops: @@ -97127,6 +99833,7 @@ Body: WalkSpeed: 350 AttackDelay: 768 AttackMotion: 1440 + ClientAttackMotion: 1056 DamageMotion: 672 Ai: 04 Drops: @@ -97174,6 +99881,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -97221,6 +99929,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -97268,6 +99977,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -97315,6 +100025,7 @@ Body: WalkSpeed: 250 AttackDelay: 648 AttackMotion: 480 + ClientAttackMotion: 300 DamageMotion: 360 Ai: 04 Drops: @@ -97362,6 +100073,7 @@ Body: WalkSpeed: 250 AttackDelay: 360 AttackMotion: 360 + ClientAttackMotion: 480 DamageMotion: 600 Ai: 21 Drops: @@ -97407,6 +100119,7 @@ Body: WalkSpeed: 250 AttackDelay: 360 AttackMotion: 360 + ClientAttackMotion: 480 DamageMotion: 600 Ai: 21 Drops: @@ -97432,6 +100145,7 @@ Body: WalkSpeed: 200 AttackDelay: 1008 AttackMotion: 1200 + ClientAttackMotion: 1536 DamageMotion: 540 Ai: 21 Class: Boss @@ -97485,6 +100199,7 @@ Body: WalkSpeed: 350 AttackDelay: 420 AttackMotion: 576 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 21 Class: Boss @@ -97535,6 +100250,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 360 + ClientAttackMotion: 120 DamageMotion: 360 Ai: 02 Drops: @@ -97582,6 +100298,7 @@ Body: WalkSpeed: 180 AttackDelay: 960 AttackMotion: 336 + ClientAttackMotion: 480 DamageMotion: 300 Ai: 04 Drops: @@ -97664,6 +100381,7 @@ Body: WalkSpeed: 120 AttackDelay: 480 AttackMotion: 1632 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Class: Boss @@ -97716,6 +100434,7 @@ Body: WalkSpeed: 120 AttackDelay: 480 AttackMotion: 1632 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Class: Boss @@ -97767,6 +100486,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -97808,6 +100528,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -97855,6 +100576,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 04 Modes: @@ -97900,6 +100622,7 @@ Body: WalkSpeed: 150 AttackDelay: 512 AttackMotion: 528 + ClientAttackMotion: 432 DamageMotion: 240 Ai: 04 Modes: @@ -97948,6 +100671,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 360 DamageMotion: 504 Ai: 04 Modes: @@ -97993,6 +100717,7 @@ Body: WalkSpeed: 300 AttackDelay: 500 AttackMotion: 576 + ClientAttackMotion: 360 DamageMotion: 504 Ai: 04 Modes: @@ -98041,6 +100766,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 336 DamageMotion: 480 Ai: 04 Drops: @@ -98081,6 +100807,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 04 Drops: @@ -98119,6 +100846,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 04 Drops: @@ -98163,6 +100891,7 @@ Body: WalkSpeed: 200 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -98207,6 +100936,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -98253,6 +100983,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -98308,6 +101039,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -98361,6 +101093,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 04 Drops: @@ -98407,6 +101140,7 @@ Body: WalkSpeed: 150 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -98455,6 +101189,7 @@ Body: WalkSpeed: 200 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -98502,6 +101237,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 - Id: 20639 @@ -98533,6 +101269,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 Drops: @@ -98579,6 +101316,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 02 Drops: @@ -98623,6 +101361,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Drops: @@ -98671,6 +101410,7 @@ Body: WalkSpeed: 150 AttackDelay: 648 AttackMotion: 1296 + ClientAttackMotion: 720 DamageMotion: 480 Ai: 21 Class: Boss @@ -98717,6 +101457,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 864 + ClientAttackMotion: 432 DamageMotion: 1152 Ai: 04 Drops: @@ -98765,6 +101506,7 @@ Body: WalkSpeed: 150 AttackDelay: 1200 AttackMotion: 1200 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 Drops: @@ -98813,6 +101555,7 @@ Body: WalkSpeed: 200 AttackDelay: 624 AttackMotion: 624 + ClientAttackMotion: 192 DamageMotion: 144 Ai: 04 Drops: @@ -98861,6 +101604,7 @@ Body: WalkSpeed: 200 AttackDelay: 960 AttackMotion: 480 + ClientAttackMotion: 288 DamageMotion: 540 Ai: 04 Drops: @@ -98905,6 +101649,7 @@ Body: WalkSpeed: 200 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 04 Modes: @@ -98956,9 +101701,11 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 480 DamageTaken: 10 Ai: 21 + Class: Boss Modes: Mvp: true MvpDrops: @@ -99009,6 +101756,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99055,6 +101803,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99101,6 +101850,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99147,6 +101897,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99193,6 +101944,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99235,6 +101987,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 - Id: 20655 @@ -99262,6 +102015,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 - Id: 20656 @@ -99289,6 +102043,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 720 + ClientAttackMotion: 960 DamageMotion: 432 Ai: 04 - Id: 20657 @@ -99316,6 +102071,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 - Id: 20658 @@ -99343,6 +102099,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 720 + ClientAttackMotion: 960 DamageMotion: 432 Ai: 04 - Id: 20659 @@ -99373,6 +102130,7 @@ Body: WalkSpeed: 120 AttackDelay: 768 AttackMotion: 768 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 21 Modes: @@ -99418,6 +102176,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99462,6 +102221,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99506,6 +102266,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99550,6 +102311,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99594,6 +102356,7 @@ Body: WalkSpeed: 150 AttackDelay: 1540 AttackMotion: 2112 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -99638,6 +102401,7 @@ Body: WalkSpeed: 180 AttackDelay: 1344 AttackMotion: 1344 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -99679,6 +102443,7 @@ Body: WalkSpeed: 180 AttackDelay: 1344 AttackMotion: 1344 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -99723,6 +102488,7 @@ Body: WalkSpeed: 120 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 384 DamageMotion: 840 Ai: 21 Modes: @@ -99766,6 +102532,7 @@ Body: WalkSpeed: 120 AttackDelay: 1136 AttackMotion: 720 + ClientAttackMotion: 384 DamageMotion: 840 Ai: 21 Modes: @@ -99812,6 +102579,7 @@ Body: WalkSpeed: 155 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 04 Drops: @@ -99855,6 +102623,7 @@ Body: WalkSpeed: 155 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 04 Drops: @@ -99901,6 +102670,7 @@ Body: WalkSpeed: 155 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 04 Drops: @@ -99944,6 +102714,7 @@ Body: WalkSpeed: 120 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 04 Drops: @@ -99988,6 +102759,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 576 DamageMotion: 1 Ai: 06 Class: Battlefield @@ -100024,6 +102796,7 @@ Body: WalkSpeed: 130 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 01 Drops: @@ -100067,6 +102840,7 @@ Body: WalkSpeed: 120 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 01 Drops: @@ -100111,6 +102885,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 576 DamageMotion: 1 Ai: 06 Class: Battlefield @@ -100147,6 +102922,7 @@ Body: WalkSpeed: 150 AttackDelay: 1440 AttackMotion: 1440 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 04 Drops: @@ -100186,6 +102962,7 @@ Body: WalkSpeed: 150 AttackDelay: 1440 AttackMotion: 1440 + ClientAttackMotion: 864 DamageMotion: 480 Ai: 04 Drops: @@ -100220,6 +102997,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Ai: 06 Class: Battlefield @@ -100256,6 +103034,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 Drops: @@ -100303,6 +103082,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 - Id: 20682 @@ -100334,6 +103114,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 1268 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 Drops: @@ -100383,6 +103164,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 240 DamageMotion: 420 Ai: 04 Drops: @@ -100429,6 +103211,7 @@ Body: WalkSpeed: 130 AttackDelay: 912 AttackMotion: 1824 + ClientAttackMotion: 960 DamageMotion: 480 Ai: 04 Drops: @@ -100475,6 +103258,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 1536 + ClientAttackMotion: 360 DamageMotion: 960 Ai: 04 Drops: @@ -100519,6 +103303,7 @@ Body: WalkSpeed: 100 AttackDelay: 522 AttackMotion: 1044 + ClientAttackMotion: 756 DamageMotion: 684 Ai: 04 Drops: @@ -100563,6 +103348,7 @@ Body: WalkSpeed: 200 AttackDelay: 1672 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 288 Ai: 04 Drops: @@ -100607,6 +103393,7 @@ Body: WalkSpeed: 150 AttackDelay: 384 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 05 Drops: @@ -100654,6 +103441,7 @@ Body: WalkSpeed: 125 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 540 DamageMotion: 576 Ai: 04 Drops: @@ -100698,6 +103486,7 @@ Body: WalkSpeed: 125 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -100742,6 +103531,7 @@ Body: WalkSpeed: 150 AttackDelay: 1280 AttackMotion: 1080 + ClientAttackMotion: 528 DamageMotion: 240 Ai: 04 Drops: @@ -100788,6 +103578,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 1152 + ClientAttackMotion: 480 DamageMotion: 720 Ai: 04 Drops: @@ -100834,6 +103625,7 @@ Body: WalkSpeed: 120 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -100880,6 +103672,7 @@ Body: WalkSpeed: 120 AttackDelay: 912 AttackMotion: 1248 + ClientAttackMotion: 1296 DamageMotion: 576 Ai: 04 Drops: @@ -100924,6 +103717,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 01 - Id: 20697 @@ -100951,6 +103745,7 @@ Body: WalkSpeed: 150 AttackDelay: 1152 AttackMotion: 1344 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 01 - Id: 20698 @@ -100978,6 +103773,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 - Id: 20699 @@ -101005,6 +103801,7 @@ Body: WalkSpeed: 150 AttackDelay: 384 AttackMotion: 384 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 - Id: 20700 @@ -101032,6 +103829,7 @@ Body: WalkSpeed: 200 AttackDelay: 960 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 # - Id: 20701 @@ -101261,6 +104059,7 @@ Body: WalkSpeed: 250 AttackDelay: 550 AttackMotion: 1056 + ClientAttackMotion: 480 DamageMotion: 576 Ai: 04 Drops: @@ -101306,6 +104105,7 @@ Body: WalkSpeed: 200 AttackDelay: 936 AttackMotion: 1155 + ClientAttackMotion: 288 DamageMotion: 672 Ai: 04 Drops: @@ -101351,6 +104151,7 @@ Body: WalkSpeed: 400 AttackDelay: 480 AttackMotion: 970 + ClientAttackMotion: 768 DamageMotion: 770 Ai: 04 Drops: @@ -101396,6 +104197,7 @@ Body: WalkSpeed: 270 AttackDelay: 1070 AttackMotion: 1512 + ClientAttackMotion: 936 DamageMotion: 485 Ai: 04 Drops: @@ -101443,6 +104245,7 @@ Body: WalkSpeed: 220 AttackDelay: 708 AttackMotion: 1225 + ClientAttackMotion: 504 DamageMotion: 675 Ai: 04 Drops: @@ -101488,6 +104291,7 @@ Body: WalkSpeed: 220 AttackDelay: 168 AttackMotion: 965 + ClientAttackMotion: 576 DamageMotion: 578 Ai: 04 Drops: @@ -101535,6 +104339,7 @@ Body: WalkSpeed: 250 AttackDelay: 335 AttackMotion: 1250 + ClientAttackMotion: 384 DamageMotion: 384 Ai: 04 Drops: @@ -101582,6 +104387,7 @@ Body: WalkSpeed: 180 AttackDelay: 276 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -101629,6 +104435,7 @@ Body: WalkSpeed: 220 AttackDelay: 168 AttackMotion: 1154 + ClientAttackMotion: 528 DamageMotion: 865 Ai: 04 Drops: @@ -101676,6 +104483,7 @@ Body: WalkSpeed: 180 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 970 Ai: 04 Drops: @@ -101721,6 +104529,7 @@ Body: WalkSpeed: 180 AttackDelay: 422 AttackMotion: 870 + ClientAttackMotion: 384 DamageMotion: 480 Ai: 21 Class: Boss @@ -101809,6 +104618,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 648 DamageMotion: 300 Ai: 20 - Id: 20835 @@ -101834,6 +104644,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 576 DamageMotion: 300 Ai: 20 - Id: 20836 @@ -101859,6 +104670,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 672 DamageMotion: 300 Ai: 20 - Id: 20837 @@ -101884,6 +104696,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 840 DamageMotion: 300 Ai: 20 # - Id: 20838 @@ -101923,6 +104736,7 @@ Body: WalkSpeed: 210 AttackDelay: 360 AttackMotion: 1250 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 21 Class: Boss @@ -101971,6 +104785,7 @@ Body: WalkSpeed: 100 AttackDelay: 432 AttackMotion: 288 + ClientAttackMotion: 0 DamageMotion: 576 Ai: 10 Class: Battlefield @@ -102003,6 +104818,7 @@ Body: WalkSpeed: 100 AttackDelay: 1 AttackMotion: 1 + ClientAttackMotion: 0 DamageMotion: 1 Ai: 06 - Id: 20848 @@ -102028,6 +104844,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 480 DamageMotion: 300 Ai: 20 - Id: 20849 @@ -102053,6 +104870,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 864 DamageMotion: 300 Ai: 20 - Id: 20850 @@ -102078,6 +104896,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 600 DamageMotion: 300 Ai: 20 - Id: 20851 @@ -102103,6 +104922,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 500 + ClientAttackMotion: 840 DamageMotion: 300 Ai: 20 # - Id: 20856 @@ -102262,6 +105082,7 @@ Body: WalkSpeed: 150 AttackDelay: 700 AttackMotion: 1152 # TODO + ClientAttackMotion: 384 DamageMotion: 300 Ai: 04 Drops: @@ -102311,6 +105132,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 1152 + ClientAttackMotion: 576 DamageMotion: 432 Ai: 04 Drops: @@ -102360,6 +105182,7 @@ Body: WalkSpeed: 190 AttackDelay: 576 AttackMotion: 1152 + ClientAttackMotion: 288 DamageMotion: 576 Ai: 04 Drops: @@ -102409,6 +105232,7 @@ Body: WalkSpeed: 180 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 480 DamageMotion: 432 Ai: 04 Drops: @@ -102458,6 +105282,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -102507,6 +105332,7 @@ Body: WalkSpeed: 160 AttackDelay: 540 AttackMotion: 1080 + ClientAttackMotion: 480 DamageMotion: 768 Ai: 04 Drops: @@ -102556,6 +105382,7 @@ Body: WalkSpeed: 155 AttackDelay: 900 AttackMotion: 1800 + ClientAttackMotion: 792 DamageMotion: 480 Ai: 04 Drops: @@ -102605,6 +105432,7 @@ Body: WalkSpeed: 150 AttackDelay: 1536 AttackMotion: 3072 + ClientAttackMotion: 1920 DamageMotion: 576 Ai: 04 Drops: @@ -102652,6 +105480,7 @@ Body: WalkSpeed: 150 AttackDelay: 1440 AttackMotion: 2880 + ClientAttackMotion: 864 DamageMotion: 576 DamageTaken: 10 Ai: 21 @@ -102849,6 +105678,7 @@ Body: WalkSpeed: 200 AttackDelay: 924 AttackMotion: 1848 + ClientAttackMotion: 1176 DamageMotion: 480 Ai: 04 Drops: @@ -102898,6 +105728,7 @@ Body: WalkSpeed: 125 AttackDelay: 674 AttackMotion: 1248 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 04 Drops: @@ -102947,6 +105778,7 @@ Body: WalkSpeed: 150 AttackDelay: 1332 AttackMotion: 2664 + ClientAttackMotion: 936 DamageMotion: 480 Ai: 04 Drops: @@ -102996,6 +105828,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 1152 + ClientAttackMotion: 672 DamageMotion: 720 Ai: 04 Drops: @@ -103043,6 +105876,7 @@ Body: WalkSpeed: 150 AttackDelay: 768 AttackMotion: 1536 + ClientAttackMotion: 960 DamageMotion: 960 Ai: 04 Drops: @@ -103090,6 +105924,7 @@ Body: WalkSpeed: 150 AttackDelay: 672 AttackMotion: 1344 + ClientAttackMotion: 1056 DamageMotion: 768 DamageTaken: 10 Ai: 21 @@ -103137,6 +105972,7 @@ Body: WalkSpeed: 155 AttackDelay: 238 AttackMotion: 576 + ClientAttackMotion: 384 DamageMotion: 360 Ai: 04 Drops: @@ -103184,6 +106020,7 @@ Body: WalkSpeed: 150 AttackDelay: 384 AttackMotion: 768 + ClientAttackMotion: 480 DamageMotion: 384 Ai: 04 Drops: @@ -103233,6 +106070,7 @@ Body: WalkSpeed: 175 AttackDelay: 336 AttackMotion: 672 + ClientAttackMotion: 480 DamageMotion: 288 Ai: 04 Drops: @@ -103282,6 +106120,7 @@ Body: WalkSpeed: 150 AttackDelay: 624 AttackMotion: 1248 + ClientAttackMotion: 672 DamageMotion: 576 Ai: 04 Drops: @@ -103331,6 +106170,7 @@ Body: WalkSpeed: 150 AttackDelay: 480 AttackMotion: 960 + ClientAttackMotion: 288 DamageMotion: 480 Ai: 04 Drops: @@ -103380,6 +106220,7 @@ Body: WalkSpeed: 125 AttackDelay: 510 AttackMotion: 1020 + ClientAttackMotion: 720 DamageMotion: 576 Ai: 04 Drops: @@ -103429,6 +106270,7 @@ Body: WalkSpeed: 180 AttackDelay: 792 AttackMotion: 1584 + ClientAttackMotion: 1152 DamageMotion: 576 Ai: 04 Drops: @@ -103478,6 +106320,7 @@ Body: WalkSpeed: 155 AttackDelay: 768 AttackMotion: 1536 + ClientAttackMotion: 768 DamageMotion: 480 Ai: 04 Drops: @@ -103527,6 +106370,7 @@ Body: WalkSpeed: 150 AttackDelay: 517 AttackMotion: 1134 + ClientAttackMotion: 864 DamageMotion: 480 DamageTaken: 10 Ai: 21 @@ -103806,6 +106650,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103828,6 +106673,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103850,6 +106696,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103872,6 +106719,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103894,6 +106742,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103916,6 +106765,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103938,6 +106788,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103960,6 +106811,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -103982,6 +106834,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104004,6 +106857,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104026,6 +106880,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104048,6 +106903,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104070,6 +106926,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104093,6 +106950,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 482 Modes: NoRandomWalk: true @@ -104115,6 +106973,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104138,6 +106997,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104161,6 +107021,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104184,6 +107045,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104207,6 +107069,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104230,6 +107093,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104253,6 +107117,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104276,6 +107141,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104299,6 +107165,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1672 AttackMotion: 672 + ClientAttackMotion: 0 DamageMotion: 480 Class: Boss Modes: @@ -104737,6 +107604,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 04 - Id: 21293 @@ -104762,6 +107630,7 @@ Body: WalkSpeed: 150 AttackDelay: 252 AttackMotion: 504 + ClientAttackMotion: 216 DamageMotion: 360 Ai: 04 - Id: 21294 @@ -104787,6 +107656,7 @@ Body: WalkSpeed: 150 AttackDelay: 432 AttackMotion: 432 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 04 - Id: 21295 @@ -104816,6 +107686,7 @@ Body: WalkSpeed: 150 AttackDelay: 1008 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 936 Ai: 04 Drops: @@ -104859,6 +107730,7 @@ Body: WalkSpeed: 1000 AttackDelay: 432 AttackMotion: 864 + ClientAttackMotion: 504 DamageMotion: 1512 Ai: 10 Drops: @@ -104900,6 +107772,7 @@ Body: WalkSpeed: 150 AttackDelay: 936 AttackMotion: 1872 + ClientAttackMotion: 1728 DamageMotion: 432 Ai: 04 Drops: @@ -104943,6 +107816,7 @@ Body: WalkSpeed: 130 AttackDelay: 571 AttackMotion: 1152 + ClientAttackMotion: 648 DamageMotion: 288 Ai: 04 Drops: @@ -104988,6 +107862,7 @@ Body: WalkSpeed: 250 AttackDelay: 792 AttackMotion: 1584 + ClientAttackMotion: 648 DamageMotion: 504 Ai: 02 Drops: @@ -105031,6 +107906,7 @@ Body: WalkSpeed: 170 AttackDelay: 504 AttackMotion: 1008 + ClientAttackMotion: 504 DamageMotion: 360 Ai: 04 Drops: @@ -105080,6 +107956,7 @@ Body: WalkSpeed: 200 AttackDelay: 420 AttackMotion: 840 + ClientAttackMotion: 480 DamageMotion: 432 DamageTaken: 10 Ai: 21 @@ -105132,6 +108009,7 @@ Body: WalkSpeed: 130 AttackDelay: 760 AttackMotion: 1080 + ClientAttackMotion: 792 DamageMotion: 360 Ai: 04 Drops: @@ -105173,6 +108051,7 @@ Body: WalkSpeed: 200 AttackDelay: 1152 AttackMotion: 1152 + ClientAttackMotion: 288 DamageMotion: 432 Ai: 02 Drops: @@ -105214,6 +108093,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 576 + ClientAttackMotion: 360 DamageMotion: 648 Ai: 04 Drops: @@ -105255,6 +108135,7 @@ Body: WalkSpeed: 100 AttackDelay: 506 AttackMotion: 1008 + ClientAttackMotion: 576 DamageMotion: 504 Ai: 07 Drops: @@ -105298,6 +108179,7 @@ Body: WalkSpeed: 120 AttackDelay: 720 AttackMotion: 720 + ClientAttackMotion: 432 DamageMotion: 1512 Ai: 04 Drops: @@ -105337,6 +108219,7 @@ Body: WalkSpeed: 150 AttackDelay: 792 AttackMotion: 792 + ClientAttackMotion: 432 DamageMotion: 360 Ai: 04 Drops: @@ -105374,6 +108257,7 @@ Body: WalkSpeed: 200 AttackDelay: 864 AttackMotion: 864 + ClientAttackMotion: 480 DamageMotion: 480 Ai: 04 - Id: 21309 @@ -105401,6 +108285,7 @@ Body: WalkSpeed: 150 AttackDelay: 648 AttackMotion: 648 + ClientAttackMotion: 360 DamageMotion: 480 Ai: 04 - Id: 21310 @@ -105428,6 +108313,7 @@ Body: WalkSpeed: 150 AttackDelay: 648 AttackMotion: 648 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 - Id: 21311 @@ -105455,6 +108341,7 @@ Body: WalkSpeed: 140 AttackDelay: 648 AttackMotion: 648 + ClientAttackMotion: 1152 DamageMotion: 480 Ai: 04 - Id: 21312 @@ -105482,6 +108369,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 432 + ClientAttackMotion: 960 DamageMotion: 360 Ai: 04 - Id: 21313 @@ -105509,6 +108397,7 @@ Body: WalkSpeed: 200 AttackDelay: 576 AttackMotion: 288 + ClientAttackMotion: 144 DamageMotion: 360 Ai: 04 - Id: 21314 @@ -105536,6 +108425,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 1440 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -105580,6 +108470,7 @@ Body: WalkSpeed: 150 AttackDelay: 736 AttackMotion: 1104 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 Class: Boss @@ -105614,6 +108505,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 1440 + ClientAttackMotion: 2592 DamageMotion: 480 Ai: 21 Class: Boss @@ -105648,6 +108540,7 @@ Body: WalkSpeed: 150 AttackDelay: 736 AttackMotion: 1104 + ClientAttackMotion: 672 DamageMotion: 480 Ai: 21 Class: Boss @@ -105682,6 +108575,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 1152 + ClientAttackMotion: 672 DamageMotion: 720 Ai: 04 Drops: @@ -105715,6 +108609,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 05 - Id: 21320 @@ -105819,6 +108714,7 @@ Body: WalkSpeed: 165 AttackDelay: 540 AttackMotion: 1080 + ClientAttackMotion: 660 DamageMotion: 336 Ai: 04 Drops: @@ -105864,6 +108760,7 @@ Body: WalkSpeed: 150 AttackDelay: 1600 AttackMotion: 900 + ClientAttackMotion: 252 DamageMotion: 240 Ai: 04 Drops: @@ -105975,6 +108872,7 @@ Body: WalkSpeed: 150 AttackDelay: 720 AttackMotion: 1440 + ClientAttackMotion: 504 DamageMotion: 480 Ai: 21 Class: Boss @@ -106011,6 +108909,7 @@ Body: WalkSpeed: 150 AttackDelay: 736 AttackMotion: 1104 + ClientAttackMotion: 576 DamageMotion: 480 Ai: 21 Class: Boss @@ -106075,6 +108974,7 @@ Body: WalkSpeed: 150 AttackDelay: 576 AttackMotion: 1152 + ClientAttackMotion: 480 DamageMotion: 720 Ai: 04 - Id: 21378 @@ -106102,6 +109002,7 @@ Body: WalkSpeed: 150 AttackDelay: 864 AttackMotion: 432 + ClientAttackMotion: 288 DamageMotion: 360 Ai: 05 # - Id: 21379 @@ -106145,6 +109046,7 @@ Body: WalkSpeed: 300 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 96 DamageMotion: 384 Ai: 21 Drops: @@ -106192,6 +109094,7 @@ Body: WalkSpeed: 350 AttackDelay: 1288 AttackMotion: 648 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Drops: @@ -106239,6 +109142,7 @@ Body: WalkSpeed: 200 AttackDelay: 1000 AttackMotion: 792 + ClientAttackMotion: 336 DamageMotion: 336 Ai: 21 Drops: @@ -106282,6 +109186,7 @@ Body: WalkSpeed: 250 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 96 DamageMotion: 576 Ai: 21 Drops: @@ -106329,6 +109234,7 @@ Body: WalkSpeed: 250 AttackDelay: 1288 AttackMotion: 288 + ClientAttackMotion: 96 DamageMotion: 576 Ai: 21 Drops: @@ -106367,6 +109273,7 @@ Body: WalkSpeed: 1000 AttackDelay: 1001 AttackMotion: 1 + ClientAttackMotion: 672 DamageMotion: 1 Ai: 06 Drops: @@ -106414,6 +109321,7 @@ Body: WalkSpeed: 250 AttackDelay: 1848 AttackMotion: 1296 + ClientAttackMotion: 1008 DamageMotion: 432 Ai: 21 Drops: @@ -106461,6 +109369,7 @@ Body: WalkSpeed: 150 AttackDelay: 1276 AttackMotion: 576 + ClientAttackMotion: 288 DamageMotion: 384 Ai: 21 Drops: @@ -106506,6 +109415,7 @@ Body: WalkSpeed: 300 AttackDelay: 1768 AttackMotion: 768 + ClientAttackMotion: 432 DamageMotion: 384 Ai: 21 Drops: @@ -106553,6 +109463,7 @@ Body: WalkSpeed: 100 AttackDelay: 864 AttackMotion: 1000 + ClientAttackMotion: 624 DamageMotion: 480 Ai: 21 Drops: @@ -108199,6 +111110,10 @@ Body: # AegisName: EP21_MD_BOX1 # - Id: 22378 # AegisName: MD_Airboat_Boss5 +# - Id: 22379 +# AegisName: EV_NPC_VACATION_POPE +# - Id: 22380 +# AegisName: E_WATER_M_RING # - Id: 23000 # AegisName: DARK_ILLUSION2 # - Id: 23001 diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index a4bbcd28d9..52c9eb2ad4 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -13105,6 +13105,108 @@ 20280,G_ILL_WOOTAN_FIGHTER@KN_BRANDISHSPEAR,attack,57,5,2000,0,10000,yes,target,always,0,,,,,,6, 20280,G_ILL_WOOTAN_FIGHTER@NPC_FIREATTACK,attack,186,4,1000,0,5000,yes,target,always,0,,,,,,, +// Illusion of Teddy Bear +20255,ILL_TEDDY_BEAR_R@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20255,ILL_TEDDY_BEAR_R@NPC_CURSEATTACK,chase,181,3,1000,500,5000,no,target,always,0,,,,,,2, +20255,ILL_TEDDY_BEAR_R@NPC_CRITICALSLASH,attack,170,1,1500,500,5000,no,target,always,0,,,,,,6, +20255,ILL_TEDDY_BEAR_R@NPC_FIREATTACK,attack,186,2,1000,0,5000,yes,target,always,0,,,,,,37, +20255,ILL_TEDDY_BEAR_R@BS_HAMMERFALL,attack,110,5,500,1500,5000,no,target,always,0,,,,,,8, +20256,ILL_TEDDY_BEAR_Y@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20256,ILL_TEDDY_BEAR_Y@MG_LIGHTNINGBOLT,chase,20,2,1500,1000,5000,no,target,always,0,,,,,,, +20256,ILL_TEDDY_BEAR_Y@NPC_CURSEATTACK,chase,181,5,1000,500,5000,no,target,always,0,,,,,,2, +20256,ILL_TEDDY_BEAR_Y@WZ_VERMILION,attack,85,3,500,1500,10000,no,target,always,0,,,,,,6, +20256,ILL_TEDDY_BEAR_Y@WZ_STORMGUST,attack,89,3,1000,1500,10000,no,target,always,0,,,,,,37, +20256,ILL_TEDDY_BEAR_Y@HW_GANBANTEIN,attack,483,1,1000,0,5000,no,target,skillused,18,,,,,,8, +20256,ILL_TEDDY_BEAR_Y@MG_LIGHTNINGBOLT,attack,20,3,500,1500,10000,no,target,always,0,,,,,,, +20257,ILL_TEDDY_BEAR_G@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20257,ILL_TEDDY_BEAR_G@NPC_BLOODDRAIN,chase,199,1,1500,0,5000,yes,target,always,0,,,,,,, +20257,ILL_TEDDY_BEAR_G@NPC_CLOUD_KILL,attack,739,3,500,1500,20000,no,target,always,0,,,,,,6, +20258,ILL_TEDDY_BEAR_W@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20258,ILL_TEDDY_BEAR_W@NPC_CHEAL,chase,729,5,3000,500,3000,no,self,friendhpltmaxrate,99,,,,,,, +20258,ILL_TEDDY_BEAR_W@NPC_CHEAL,chase,729,5,3000,500,3000,no,self,myhpltmaxrate,99,,,,,,, +20258,ILL_TEDDY_BEAR_W@NPC_CHEAL,attack,729,5,1500,500,5000,no,self,always,0,,,,,,2, +20258,ILL_TEDDY_BEAR_W@AL_HEAL,attack,28,9,2000,0,2000,yes,friend,friendhpltmaxrate,99,,,,,,, +20258,ILL_TEDDY_BEAR_W@AL_HEAL,attack,28,9,2000,0,2000,yes,friend,myhpltmaxrate,99,,,,,,3, +20258,ILL_TEDDY_BEAR_W@AM_POTIONPITCHER,attack,231,4,5000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,, +20258,ILL_TEDDY_BEAR_W@AM_POTIONPITCHER,attack,231,4,5000,500,5000,no,friend,myhpltmaxrate,30,,,,,,5, +20258,ILL_TEDDY_BEAR_W@NPC_ALLHEAL,attack,687,1,10000,5000,30000,no,self,myhpltmaxrate,10,,,,,,6, +20258,ILL_TEDDY_BEAR_W@CR_HOLYCROSS,attack,253,5,500,0,5000,yes,target,always,0,,,,,,32, +20259,ILL_TEDDY_BEAR_B@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20259,ILL_TEDDY_BEAR_B@MG_COLDBOLT,chase,14,2,1500,1000,5000,no,target,always,0,,,,,,23, +20259,ILL_TEDDY_BEAR_B@NPC_STORMGUST2,attack,723,1,500,1500,10000,no,target,always,0,,,,,,20, +20259,ILL_TEDDY_BEAR_B@NPC_WATERATTACK,attack,184,2,1500,0,5000,yes,target,always,0,,,,,,6, +20259,ILL_TEDDY_BEAR_B@MG_COLDBOLT,attack,14,3,500,1500,10000,no,target,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_AGIUP,attack,350,1,5000,0,20000,yes,self,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_BLEEDING2,attack,764,5,2000,500,10000,no,target,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_CRITICALWOUND,attack,673,3,1000,500,20000,no,target,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_WIDESIGHT,attack,669,1,10000,0,30000,yes,self,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_WEAPONBRAKER,attack,343,1,10000,0,40000,yes,target,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_DARKBREATH,attack,202,5,2000,3000,10000,no,target,myhpltmaxrate,60,,,,,,0, +20260,ILL_TEDDY_BEAR_S@CR_HOLYCROSS,attack,253,10,500,0,5000,yes,target,always,0,,,,,,32, +20260,ILL_TEDDY_BEAR_S@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_CALLSLAVE,idle,352,1,10000,0,10000,yes,self,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_CALLSLAVE,chase,352,1,10000,0,5000,yes,self,always,0,,,,,,, +// 20260,ILL_TEDDY_BEAR_S@NPC_EARTHQUAKE_K,attack,750,5,1500,2000,20000,no,target,myhpltmaxrate,30,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_EARTHQUAKE,attack,653,5,1500,2000,20000,no,target,myhpltmaxrate,30,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_PULSESTRIKE,attack,661,5,3000,3000,20000,no,self,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@NPC_SUMMONSLAVE,idle,196,1,10000,1000,30000,no,self,slavele,1,20255,20256,20257,20259,,, +20260,ILL_TEDDY_BEAR_S@NPC_SUMMONSLAVE,attack,196,1,5000,1000,30000,no,self,slavele,1,20255,20256,20257,20259,,, +20260,ILL_TEDDY_BEAR_S@NPC_POWERUP,attack,349,5,10000,0,60000,yes,self,myhpltmaxrate,20,,,,,,6, +20260,ILL_TEDDY_BEAR_S@NPC_GRANDDARKNESS,attack,339,10,3000,1000,5000,no,self,always,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@AL_TELEPORT,walk,26,1,5000,0,10000,yes,self,rudeattacked,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@AL_TELEPORT,chase,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20260,ILL_TEDDY_BEAR_S@SA_LANDPROTECTOR,attack,288,2,3000,1000,10000,no,target,groundattacked,0,,,,,,6, +20260,ILL_TEDDY_BEAR_S@AL_PNEUMA,attack,25,1,3000,0,5000,yes,target,longrangeattacked,0,,,,,,18, +20261,ILL_PITMAN@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20261,ILL_PITMAN@AL_TELEPORT,chase,26,1,5000,0,5000,yes,self,mobnearbygt,4,,,,,,, +20261,ILL_PITMAN@NPC_SILENCEATTACK,chase,178,3,500,0,5000,no,target,always,0,,,,,,6, +20261,ILL_PITMAN@NPC_COMBOATTACK,attack,171,3,500,700,5000,no,target,always,0,,,,,,, +20261,ILL_PITMAN@TF_SPRINKLESAND,attack,149,1,500,0,5000,no,target,always,0,,,,,,6, +20261,ILL_PITMAN@SM_MAGNUM,attack,7,3,1000,0,20000,yes,self,always,0,,,,,,32, +20261,ILL_PITMAN@NPC_GUIDEDATTACK,attack,172,3,2000,0,15000,yes,target,always,0,,,,,,37, +20262,ILL_MINERAL@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,0,,,,,,, +20262,ILL_MINERAL@AS_GRIMTOOTH,idle,137,3,5000,0,500,yes,target,mystatuson,0,,,,,,, +20262,ILL_MINERAL@AL_HEAL,idle,28,9,5000,0,1500,yes,friend,mystatuson,0,,,,,,18, +20262,ILL_MINERAL@TF_HIDING,chase,51,1,2000,0,10000,yes,self,always,0,,,,,,19, +20262,ILL_MINERAL@TF_HIDING,chase,51,1,10000,0,10000,yes,self,myhpltmaxrate,30,,,,,,19, +20262,ILL_MINERAL@AL_TELEPORT,chase,26,1,5000,0,5000,yes,self,mobnearbygt,4,,,,,,, +20262,ILL_MINERAL@NPC_COMBOATTACK,attack,171,3,500,700,5000,no,target,always,0,,,,,,, +20262,ILL_MINERAL@TF_SPRINKLESAND,attack,149,1,500,0,5000,no,target,always,0,,,,,,6, +20262,ILL_MINERAL@NPC_GUIDEDATTACK,attack,172,3,2000,0,15000,yes,target,always,0,,,,,,37, +20262,ILL_MINERAL@NPC_RANDOMATTACK,attack,183,2,1500,500,5000,yes,target,always,0,,,,,,, +20263,ILL_OBSIDIAN@TF_HIDING,idle,51,1,500,500,5000,yes,self,always,0,,,,,,19, +20263,ILL_OBSIDIAN@AS_GRIMTOOTH,idle,137,3,5000,0,500,yes,target,mystatuson,0,,,,,,, +20263,ILL_OBSIDIAN@WZ_EARTHSPIKE,chase,90,3,1500,500,5000,no,target,always,0,,,,,,, +20263,ILL_OBSIDIAN@CR_SHIELDCHARGE,attack,250,3,1000,1000,5000,no,target,always,0,,,,,,, +20263,ILL_OBSIDIAN@NPC_GROUNDATTACK,attack,185,2,500,500,5000,yes,target,always,0,,,,,,, +20263,ILL_OBSIDIAN@TF_HIDING,attack,51,1,500,500,50000,yes,self,always,0,,,,,,19, +20264,G_ILL_TEDDY_BEAR_R@NPC_CURSEATTACK,chase,181,3,1000,500,5000,no,target,always,0,,,,,,2, +20264,G_ILL_TEDDY_BEAR_R@NPC_CRITICALSLASH,attack,170,1,1500,500,5000,no,target,always,0,,,,,,6, +20264,G_ILL_TEDDY_BEAR_R@NPC_FIREATTACK,attack,186,5,1000,0,5000,yes,target,always,0,,,,,,37, +20264,G_ILL_TEDDY_BEAR_R@BS_HAMMERFALL,attack,110,5,500,1500,5000,no,target,always,0,,,,,,8, +20265,G_ILL_TEDDY_BEAR_Y@MG_LIGHTNINGBOLT,chase,20,2,1500,1000,5000,no,target,always,0,,,,,,, +20265,G_ILL_TEDDY_BEAR_Y@NPC_CURSEATTACK,chase,181,5,1000,500,5000,no,target,always,0,,,,,,2, +20265,G_ILL_TEDDY_BEAR_Y@WZ_VERMILION,attack,85,3,500,1500,10000,no,target,always,0,,,,,,6, +20265,G_ILL_TEDDY_BEAR_Y@WZ_STORMGUST,attack,89,3,1000,1500,10000,no,target,always,0,,,,,,37, +20265,G_ILL_TEDDY_BEAR_Y@HW_GANBANTEIN,attack,483,1,1000,0,5000,no,target,skillused,18,,,,,,8, +20265,G_ILL_TEDDY_BEAR_Y@MG_LIGHTNINGBOLT,attack,20,3,500,1500,10000,no,target,always,0,,,,,,, +20266,G_ILL_TEDDY_BEAR_G@NPC_BLOODDRAIN,chase,199,1,1500,0,5000,yes,target,always,0,,,,,,, +20266,G_ILL_TEDDY_BEAR_G@NPC_CLOUD_KILL,attack,739,3,500,1500,20000,no,target,always,0,,,,,,6, +20267,G_ILL_TEDDY_BEAR_W@NPC_CHEAL,chase,729,5,3000,500,3000,no,self,friendhpltmaxrate,99,,,,,,, +20267,G_ILL_TEDDY_BEAR_W@NPC_CHEAL,chase,729,5,3000,500,3000,no,self,myhpltmaxrate,99,,,,,,, +20267,G_ILL_TEDDY_BEAR_W@NPC_CHEAL,attack,729,5,1500,500,5000,no,self,always,0,,,,,,2, +20267,G_ILL_TEDDY_BEAR_W@AL_HEAL,attack,28,9,2000,0,2000,yes,friend,friendhpltmaxrate,99,,,,,,, +20267,G_ILL_TEDDY_BEAR_W@AL_HEAL,attack,28,9,2000,0,2000,yes,friend,myhpltmaxrate,99,,,,,,3, +20267,G_ILL_TEDDY_BEAR_W@AM_POTIONPITCHER,attack,231,4,5000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,, +20267,G_ILL_TEDDY_BEAR_W@AM_POTIONPITCHER,attack,231,4,5000,500,5000,no,friend,myhpltmaxrate,30,,,,,,5, +20267,G_ILL_TEDDY_BEAR_W@NPC_ALLHEAL,attack,687,1,10000,5000,30000,no,self,myhpltmaxrate,10,,,,,,6, +20267,G_ILL_TEDDY_BEAR_W@CR_HOLYCROSS,attack,253,5,500,0,5000,yes,target,always,0,,,,,,32, +20268,G_ILL_TEDDY_BEAR_B@MG_COLDBOLT,chase,14,2,1500,1000,5000,no,target,always,0,,,,,,23, +20268,G_ILL_TEDDY_BEAR_B@NPC_STORMGUST2,attack,723,1,500,1500,10000,no,target,always,0,,,,,,20, +20268,G_ILL_TEDDY_BEAR_B@NPC_WATERATTACK,attack,184,2,1500,0,5000,yes,target,always,0,,,,,,6, +20268,G_ILL_TEDDY_BEAR_B@MG_COLDBOLT,attack,14,3,500,1500,10000,no,target,always,0,,,,,,, + // Episode 17.1 - Illusion (custom) #!todo 20340,EL-A17T@NPC_AGIUP,chase,350,5,2000,0,60000,no,self,always,0,,,,,,6, 20340,EL-A17T@NPC_POWERUP,attack,349,5,2000,0,60000,no,self,always,0,,,,,,6, @@ -14673,7 +14775,7 @@ 21360,EP18_MD_SCHULANG_L@NPC_TELEKINESISATTACK,attack,191,2,3000,0,5000,yes,target,always,0,,,,,,, 21360,EP18_MD_SCHULANG_L@NPC_POWERUP,attack,349,3,5000,0,30000,yes,self,always,0,,,,,,, 21360,EP18_MD_SCHULANG_L@NPC_DARKSTRIKE,chase,340,3,3000,200,15000,yes,target,always,0,,,,,,, -// 21360,EP18_MD_SCHULANG_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55, +21360,EP18_MD_SCHULANG_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55, 21360,EP18_MD_SCHULANG_L@NPC_BLOODDRAIN,attack,199,1,2000,0,10000,yes,target,always,0,,,,,,, 21360,EP18_MD_SCHULANG_L@NPC_DARKSTRIKE,attack,340,3,3000,200,15000,yes,target,always,0,,,,,,, 21360,EP18_MD_SCHULANG_L@NPC_WIDESTONE2,attack,759,3,3000,500,30000,no,target,always,0,,,,,,, @@ -14698,6 +14800,6 @@ 21361,EP18_MD_DEMI_FREYJA_L@NPC_HELLJUDGEMENT2,attack,768,5,1000,500,120000,yes,target,always,0,,,,,,, 21361,EP18_MD_DEMI_FREYJA_L@NPC_CHANGEDARKNESS,attack,168,1,1000,0,120000,yes,self,always,0,,,,,,, 21361,EP18_MD_DEMI_FREYJA_L@NPC_CHANGEHOLY,attack,167,1,3000,0,120000,yes,self,always,0,,,,,,, -// 21361,EP18_MD_DEMI_FREYJA_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55, +21361,EP18_MD_DEMI_FREYJA_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55, 21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,chase,780,3,8000,300,30000,no,target,always,0,,,,,,, 21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,attack,780,5,7000,300,30000,yes,target,always,0,,,,,,, diff --git a/db/re/pet_db.yml b/db/re/pet_db.yml index e9cfd1067a..4d92826de8 100644 --- a/db/re/pet_db.yml +++ b/db/re/pet_db.yml @@ -66,14 +66,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bCritical,1; - bonus bLuk,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bCritical,1; bonus bLuk,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bCritical,1; + bonus bLuk,2; + } Evolution: - Target: MASTERING ItemRequirements: @@ -92,14 +92,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bBaseAtk,3; - bonus bHit,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bBaseAtk,5; bonus bHit,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bBaseAtk,3; + bonus bHit,3; + } Evolution: - Target: DR_EGGRING ItemRequirements: @@ -132,14 +132,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubEle,Ele_Poison,10; - bonus bLuk,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubEle,Ele_Poison,15; bonus bLuk,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubEle,Ele_Poison,10; + bonus bLuk,2; + } - Mob: LUNATIC TameItem: Rainbow_Carrot EggItem: Lunatic_Egg @@ -152,14 +152,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bCritical,2; - bonus bBaseAtk,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bCritical,3; bonus bBaseAtk,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bCritical,2; + bonus bBaseAtk,2; + } Evolution: - Target: DR_LUNATIC ItemRequirements: @@ -182,14 +182,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bBaseAtk,5; - bonus bStr,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bBaseAtk,8; bonus bStr,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bBaseAtk,5; + bonus bStr,1; + } - Mob: CHONCHON TameItem: Rotten_Fish EggItem: Chonchon_Egg @@ -201,14 +201,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bAgi,1; - bonus bFlee,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bAgi,2; bonus bFlee,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bAgi,1; + bonus bFlee,2; + } - Mob: STEEL_CHONCHON TameItem: Lusty_Iron EggItem: Steel_Chonchon_Egg @@ -220,12 +220,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bFlee,6; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bFlee,9; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bFlee,6; + } - Mob: HUNTER_FLY TameItem: Monster_Juice EggItem: Hunter_Fly_Egg @@ -237,13 +237,13 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bFlee2,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bFlee2,2; bonus bHit,1; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bFlee2,2; + } - Mob: SAVAGE_BABE TameItem: Sweet_Milk EggItem: Savage_Bebe_Egg @@ -256,14 +256,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bVit,1; - bonus bMaxHP,50; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bVit,2; bonus bMaxHP,75; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bVit,1; + bonus bMaxHP,50; + } Evolution: - Target: SAVAGE ItemRequirements: @@ -287,14 +287,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bInt,1; - bonus bMaxSP,50; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bInt,2; bonus bMaxSP,75; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bInt,1; + bonus bMaxSP,50; + } Evolution: - Target: DESERT_WOLF ItemRequirements: @@ -318,14 +318,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bHPrecovRate,5; - bonus bMaxHP,25; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bHPrecovRate,8; bonus bMaxHP,38; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bHPrecovRate,5; + bonus bMaxHP,25; + } Evolution: - Target: METALLER ItemRequirements: @@ -349,12 +349,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bHit,5; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bHit,8; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bHit,5; + } - Mob: POISON_SPORE TameItem: Deadly_Noxious_Herb EggItem: Poison_Spore_Egg @@ -367,14 +367,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bStr,1; - bonus bInt,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bStr,2; bonus bInt,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bStr,1; + bonus bInt,1; + } - Mob: PECOPECO TameItem: Fatty_Chubby_Earthworm EggItem: PecoPeco_Egg @@ -386,12 +386,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bMaxHP,150; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bMaxHP,200; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bMaxHP,150; + } Evolution: - Target: GRAND_PECO ItemRequirements: @@ -416,14 +416,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bFlee2,1; - bonus bAgi,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bFlee2,1; bonus bAgi,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bFlee2,1; + bonus bAgi,1; + } - Mob: YOYO TameItem: Tropical_Banana EggItem: Yoyo_Egg @@ -435,12 +435,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bCritical,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bCritical,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bCritical,3; + } Evolution: - Target: CHOCO ItemRequirements: @@ -463,12 +463,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bBaseAtk,10; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bBaseAtk,15; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bBaseAtk,10; + } Evolution: - Target: HIGH_ORC ItemRequirements: @@ -494,14 +494,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bDef,1; - bonus bInt,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bDef,2; bonus bInt,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bDef,1; + bonus bInt,1; + } - Mob: DOKEBI TameItem: Old_Broom EggItem: Dokkaebi_Egg @@ -514,12 +514,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bMatkRate,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bMatkRate,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bMatkRate,1; + } Evolution: - Target: AM_MUT ItemRequirements: @@ -543,14 +543,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bStr,1; - bonus bDex,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bStr,2; bonus bDex,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bStr,1; + bonus bDex,1; + } - Mob: ISIS TameItem: Armlet_Of_Obedience EggItem: Isis_Egg @@ -563,12 +563,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bAddClass,Class_All,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bAddClass,Class_All,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bAddClass,Class_All,1; + } Evolution: - Target: LITTLE_ISIS ItemRequirements: @@ -592,13 +592,13 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bAspdRate,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bAspdRate,1; bonus bAgi,1; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bAspdRate,1; + } Evolution: - Target: DELETER_2 ItemRequirements: @@ -622,16 +622,16 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bAddClass,Class_All,1; - bonus bMatkRate,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bAddClass,Class_All,1; bonus bMatkRate,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bAddClass,Class_All,1; + bonus bMatkRate,1; + } Evolution: - Target: DIABOLIC2 ItemRequirements: @@ -655,16 +655,16 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bResEff,Eff_Stun,100; - bonus bMdef,1; - bonus bDef,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bResEff,Eff_Stun,200; bonus bMdef,2; bonus bDef,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bResEff,Eff_Stun,100; + bonus bMdef,1; + bonus bDef,1; + } # Evolution: # - Target: ILL_BAPHOMET_J # ItemRequirements: @@ -687,14 +687,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bResEff,Eff_Stun,100; - bonus bVit,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bResEff,Eff_Stun,200; bonus bVit,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bResEff,Eff_Stun,100; + bonus bVit,1; + } Evolution: - Target: HYEGUN ItemRequirements: @@ -717,18 +717,18 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bAddRace,RC_DemiHuman,2; - bonus2 bMagicAddRace,RC_DemiHuman,2; - bonus2 bAddRace,RC_Player_Human,2; - bonus2 bMagicAddRace,RC_Player_Human,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bAddRace,RC_DemiHuman,3; bonus2 bMagicAddRace,RC_DemiHuman,3; bonus2 bAddRace,RC_Player_Human,3; bonus2 bMagicAddRace,RC_Player_Human,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bAddRace,RC_DemiHuman,2; + bonus2 bMagicAddRace,RC_DemiHuman,2; + bonus2 bAddRace,RC_Player_Human,2; + bonus2 bMagicAddRace,RC_Player_Human,2; + } - Mob: ALICE TameItem: Sway_Apron EggItem: Alice_Egg @@ -740,16 +740,16 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubRace,RC_DemiHuman,1; - bonus2 bSubRace,RC_Player_Human,1; - bonus bMdef,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; bonus bMdef,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bSubRace,RC_Player_Human,1; + bonus bMdef,1; + } Evolution: - Target: ALIZA ItemRequirements: @@ -770,12 +770,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubEle,Ele_Neutral,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubEle,Ele_Neutral,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubEle,Ele_Neutral,1; + } - Mob: GOBLINE_XMAS TameItem: Sweet_Candy_Striper EggItem: Santa_Goblin_Egg @@ -787,14 +787,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubEle,Ele_Water,1; - bonus bMaxHP,30; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubEle,Ele_Water,2; bonus bMaxHP,45; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubEle,Ele_Water,1; + bonus bMaxHP,30; + } - Mob: CHUNG_E_ TameItem: Tantanmen EggItem: Chung_E_Egg @@ -806,16 +806,16 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubRace,RC_DemiHuman,1; - bonus2 bSubRace,RC_Player_Human,1; - bonus bDef,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; bonus bDef,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubRace,RC_DemiHuman,1; + bonus2 bSubRace,RC_Player_Human,1; + bonus bDef,1; + } - Mob: ECLIPSE_P EggItem: Spring_Rabbit_Egg FoodItem: Bok_Choy @@ -874,12 +874,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bAgi,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bAgi,4; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bAgi,3; + } Evolution: - Target: WANDER_MAN_H ItemRequirements: @@ -910,12 +910,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bMaxHP,100; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bMaxHP,150; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bMaxHP,100; + } Evolution: - Target: FIRE_GOLEM ItemRequirements: @@ -956,14 +956,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bResEff,Eff_Stone,500; - bonus bVit,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bResEff,Eff_Stone,800; bonus bVit,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bResEff,Eff_Stone,500; + bonus bVit,1; + } - Mob: WHISPER TameItem: Fit_Pipe EggItem: Whisper_Egg @@ -974,7 +974,7 @@ Body: CaptureRate: 500 SpecialPerformance: false Script: > - if (getpetinfo(PETINFO_INTIMATE) == PET_INTIMATE_LOYAL) { + if (getpetinfo(PETINFO_INTIMATE) >= PET_INTIMATE_LOYAL) { skill "TF_HIDING",1; bonus bFlee,10; } @@ -994,14 +994,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bAddRace,RC_DemiHuman,3; - bonus2 bAddRace,RC_Player_Human,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bAddRace,RC_DemiHuman,5; bonus2 bAddRace,RC_Player_Human,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bAddRace,RC_DemiHuman,3; + bonus2 bAddRace,RC_Player_Human,3; + } - Mob: SUCCUBUS TameItem: Boy's_Naivety EggItem: Succubus_Egg @@ -1014,13 +1014,13 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bHPDrainRate,30,5; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bHPDrainRate,30,5; bonus bMaxHPrate,1; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bHPDrainRate,30,5; + } - Mob: INCUBUS TameItem: Gril's_Naivety EggItem: Incubus_Egg @@ -1031,7 +1031,7 @@ Body: CaptureRate: 50 SpecialPerformance: false Script: > - if (getpetinfo(PETINFO_INTIMATE) == PET_INTIMATE_LOYAL) { + if (getpetinfo(PETINFO_INTIMATE) >= PET_INTIMATE_LOYAL) { bonus2 bSPDrainRate,30,1; bonus bMaxSPrate,5; } @@ -1051,12 +1051,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bResEff,Eff_Sleep,10000; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bInt,1; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bResEff,Eff_Sleep,10000; + } Evolution: - Target: NIGHTMARE_TERROR_H ItemRequirements: @@ -1080,12 +1080,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bAgi,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bAgi,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bAgi,2; + } - Mob: MIYABI_NINGYO TameItem: Gril_Doll EggItem: Miyabi_Ningyo_Egg @@ -1098,14 +1098,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bVariableCastrate,-3; - bonus bInt,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bVariableCastrate,-5; bonus bInt,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bVariableCastrate,-3; + bonus bInt,1; + } - Mob: WICKED_NYMPH TameItem: Charming_Lotus EggItem: Wicked_Nymph_Egg @@ -1118,14 +1118,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bSPrecovRate,5; - bonus bMaxSP,30; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bSPrecovRate,8; bonus bMaxSP,45; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bSPrecovRate,5; + bonus bMaxSP,30; + } # Evolution: # - Target: BACSOJIN2 # ItemRequirements: @@ -1149,12 +1149,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubEle,Ele_Fire,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubEle,Ele_Fire,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubEle,Ele_Fire,3; + } - Mob: DULLAHAN TameItem: Luxury_Whisky_Bottle EggItem: Dullahan_Egg @@ -1167,12 +1167,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bCritAtkRate,5; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bCritAtkRate,8; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bCritAtkRate,5; + } - Mob: LOLI_RURI TameItem: Very_Red_Juice EggItem: Loli_Ruri_Egg @@ -1185,12 +1185,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus3 bAutoSpellWhenHit,"AL_HEAL",2,10; bonus bMaxHPrate,3; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus3 bAutoSpellWhenHit,"AL_HEAL",2,10; + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10; bonus bMaxHPrate,3; } # Evolution: @@ -1216,12 +1216,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bMaxSP,10; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bMaxSP,15; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bMaxSP,10; + } - Mob: LEAF_CAT TameItem: Very_Soft_Plant EggItem: Leaf_Cat_Egg @@ -1234,14 +1234,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bSubRace,RC_Brute,3; - bonus2 bSubRace,RC_Player_Doram,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Player_Doram,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bSubRace,RC_Brute,3; + bonus2 bSubRace,RC_Player_Doram,3; + } # Evolution: # - Target: WILD_ROSE3 # ItemRequirements: @@ -1274,14 +1274,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bAddEle,Ele_Fire,1; - bonus2 bSubEle,Ele_Fire,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bAddEle,Ele_Fire,2; bonus2 bSubEle,Ele_Fire,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bAddEle,Ele_Fire,1; + bonus2 bSubEle,Ele_Fire,2; + } - Mob: E_CRAMP TameItem: Leaf_Cat_Ball EggItem: Mystic_Leaf_Cat_Ball @@ -1377,12 +1377,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bHPrecovRate,50; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bHPrecovRate,75; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bHPrecovRate,50; + } - Mob: NINE_TAIL TameItem: Sap_Jelly EggItem: Nine_Tail_Egg @@ -1393,14 +1393,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bCritical,2; - bonus bHit,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bCritical,3; bonus bHit,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bCritical,2; + bonus bHit,2; + } Evolution: - Target: CAT_O_NINE_TAIL ItemRequirements: @@ -1422,14 +1422,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bHit,1; - bonus bDex,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bHit,1; bonus bDex,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bHit,1; + bonus bDex,1; + } Evolution: - Target: HODREMLIN ItemRequirements: @@ -1451,12 +1451,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bHit,4; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bHit,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bHit,4; + } Evolution: - Target: ANCIENT_MUMMY ItemRequirements: @@ -1478,12 +1478,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bMaxSP,50; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bMaxSP,100; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bMaxSP,50; + } Evolution: - Target: XM_TEDDY_BEAR ItemRequirements: @@ -1527,22 +1527,22 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bCritical,1; - bonus bLuk,2; - } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bCritical,1; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bCritical,3; bonus bLuk,3; } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bCritical,2; bonus bLuk,3; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bCritical,3; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bCritical,1; bonus bLuk,3; } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bCritical,1; + bonus bLuk,2; + } Evolution: - Target: ANGELING ItemRequirements: @@ -1566,25 +1566,25 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bHPrecovRate,5; - bonus bMaxHP,25; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bAddRace,RC_Plant,6; + bonus2 bMagicAddRace,RC_Plant,6; + bonus bHPrecovRate,20; + bonus bMaxHP,70; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bHPrecovRate,10; - bonus bMaxHP,38; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bAddRace,RC_Plant,3; bonus2 bMagicAddRace,RC_Plant,3; bonus bHPrecovRate,15; bonus bMaxHP,55; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bAddRace,RC_Plant,6; - bonus2 bMagicAddRace,RC_Plant,6; - bonus bHPrecovRate,20; - bonus bMaxHP,70; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bHPrecovRate,10; + bonus bMaxHP,38; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bHPrecovRate,5; + bonus bMaxHP,25; } - Mob: ANGELING EggItem: Angeling_Egg @@ -1598,21 +1598,21 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bMaxHPrate,1; - bonus bHealPower,2; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bMaxHPrate,2; + bonus bHealPower,8; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bMaxHPrate,1; - bonus bHealPower,4; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bMaxHPrate,2; bonus bHealPower,6; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bMaxHPrate,2; - bonus bHealPower,8; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bMaxHPrate,1; + bonus bHealPower,4; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bMaxHPrate,1; + bonus bHealPower,2; } - Mob: MOONLIGHT EggItem: Moonlight_Egg @@ -1654,21 +1654,21 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bVit,1; - bonus bMaxHP,50; - } - else if (.@i == PET_INTIMATE_NEUTRAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bVit,2; - bonus bMaxHP,50; + bonus bMaxHP,200; } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bVit,2; bonus bMaxHP,100; } - else if (.@i == PET_INTIMATE_LOYAL) { + else if (.@i >= PET_INTIMATE_NEUTRAL) { bonus bVit,2; - bonus bMaxHP,200; + bonus bMaxHP,50; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bVit,1; + bonus bMaxHP,50; } - Mob: HIGH_ORC EggItem: High_Orc_Egg @@ -1682,17 +1682,17 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bBaseAtk,10; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bBaseAtk,25; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bBaseAtk,15; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bBaseAtk,20; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bBaseAtk,25; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bBaseAtk,15; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bBaseAtk,10; } # Evolution: # - Target: ORK_HERO2 @@ -1717,20 +1717,20 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bCritical,3; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bLongAtkRate,3; + bonus bCritical,9; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bLongAtkRate,1; - bonus bCritical,5; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bLongAtkRate,2; bonus bCritical,7; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bLongAtkRate,3; - bonus bCritical,9; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bLongAtkRate,1; + bonus bCritical,5; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bCritical,3; } - Mob: ANCIENT_MUMMY EggItem: Ancient_Mummy_Egg @@ -1744,21 +1744,21 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bHit,4; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bAddRace,RC_Dragon,6; + bonus2 bMagicAddRace,RC_Dragon,6; + bonus bHit,6; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bHit,5; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bAddRace,RC_Dragon,3; bonus2 bMagicAddRace,RC_Dragon,3; bonus bHit,6; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bAddRace,RC_Dragon,6; - bonus2 bMagicAddRace,RC_Dragon,6; - bonus bHit,6; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bHit,5; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bHit,4; } - Mob: AM_MUT EggItem: Ammut_Egg @@ -1772,17 +1772,17 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bMatkRate,1; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bMatkRate,4; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bMatkRate,2; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bMatkRate,3; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bMatkRate,4; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bMatkRate,2; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bMatkRate,1; } - Mob: CAT_O_NINE_TAIL EggItem: Cat_O_Nine_Tail_Egg @@ -1834,17 +1834,17 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bMaxHP,150; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bMaxHP,400; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bMaxHP,200; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bMaxHP,300; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bMaxHP,400; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bMaxHP,200; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bMaxHP,150; } - Mob: HYEGUN EggItem: Hyegun_Egg @@ -1885,24 +1885,24 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bHit,1; - bonus bDex,1; - } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bHit,1; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bCritAtkRate,9; + bonus bHit,2; bonus bDex,2; } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bCritAtkRate,7; bonus bHit,2; bonus bDex,2; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bCritAtkRate,9; - bonus bHit,2; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bHit,1; bonus bDex,2; } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bHit,1; + bonus bDex,1; + } # Evolution: # - Target: GLOOMUNDERNIGHT2 # ItemRequirements: @@ -1949,21 +1949,21 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bBaseAtk,3; - bonus bHit,3; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bBaseAtk,9; + bonus bHit,9; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bBaseAtk,5; - bonus bHit,5; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bBaseAtk,7; bonus bHit,7; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bBaseAtk,9; - bonus bHit,9; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bBaseAtk,5; + bonus bHit,5; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bBaseAtk,3; + bonus bHit,3; } - Mob: DR_LUNATIC EggItem: Leaf_Lunatic_Egg @@ -1977,25 +1977,25 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bCritical,2; - bonus bBaseAtk,2; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bAddRace,RC_Formless,6; + bonus2 bMagicAddRace,RC_Formless,6; + bonus bCritical,5; + bonus bBaseAtk,5; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bCritical,3; - bonus bBaseAtk,3; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bAddRace,RC_Formless,3; bonus2 bMagicAddRace,RC_Formless,3; bonus bCritical,4; bonus bBaseAtk,4; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bAddRace,RC_Formless,6; - bonus2 bMagicAddRace,RC_Formless,6; - bonus bCritical,5; - bonus bBaseAtk,5; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bCritical,3; + bonus bBaseAtk,3; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bCritical,2; + bonus bBaseAtk,2; } - Mob: LITTLE_ISIS EggItem: Littleisis_Egg @@ -2009,17 +2009,17 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus2 bAddClass,Class_All,1; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bAddClass,Class_All,4; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus2 bAddClass,Class_All,2; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bAddClass,Class_All,3; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bAddClass,Class_All,4; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus2 bAddClass,Class_All,2; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus2 bAddClass,Class_All,1; } - Mob: DIABOLIC2 TameItem: Red_Burning_Stone @@ -2067,20 +2067,20 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bAspdRate,1; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bAspdRate,3; + bonus bAgi,3; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bAspdRate,1; - bonus bAgi,1; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bAspdRate,2; bonus bAgi,2; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bAspdRate,3; - bonus bAgi,3; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bAspdRate,1; + bonus bAgi,1; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bAspdRate,1; } - Mob: SWEETS_DROPS EggItem: Sweets_Drops_Egg @@ -2109,21 +2109,21 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bInt,1; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bResEff,Eff_Sleep,10000; + bonus bMaxSPrate,3; + bonus bInt,4; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bInt,2; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bResEff,Eff_Sleep,10000; bonus bMaxSPrate,1; bonus bInt,3; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bResEff,Eff_Sleep,10000; - bonus bMaxSPrate,3; - bonus bInt,4; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bInt,2; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bInt,1; } - Mob: WANDER_MAN_H EggItem: Wanderer_H_EGG @@ -2137,21 +2137,21 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bCritAtkRate,7; + bonus bCritical,3; bonus bAgi,4; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bCritical,1; - bonus bAgi,4; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bCritAtkRate,5; bonus bCritical,2; bonus bAgi,4; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bCritAtkRate,7; - bonus bCritical,3; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bCritical,1; + bonus bAgi,4; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { bonus bAgi,4; } - Mob: ALIOT @@ -2166,20 +2166,20 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bAspdRate,2; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bAspdRate,5; + bonus bHit,12; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bAspdRate,3; - bonus bHit,6; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bAspdRate,4; bonus bHit,9; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bAspdRate,5; - bonus bHit,12; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bAspdRate,3; + bonus bHit,6; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bAspdRate,2; } # Evolution: # - Target: KIEL_D_01_2 @@ -2204,19 +2204,19 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bVariableCastrate,-2; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bMagicAtkEle,Ele_Neutral,5; + bonus bVariableCastrate,-5; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bVariableCastrate,-3; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bMagicAtkEle,Ele_Neutral,3; bonus bVariableCastrate,-4; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bMagicAtkEle,Ele_Neutral,5; - bonus bVariableCastrate,-5; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bVariableCastrate,-3; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bVariableCastrate,-2; } - Mob: ALIZA EggItem: Aliza_EGG @@ -2230,20 +2230,20 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bMdef,4; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus bMdef,7; + bonus bHealPower,6; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bMdef,5; - bonus bHealPower,2; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus bMdef,6; bonus bHealPower,4; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus bMdef,7; - bonus bHealPower,6; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bMdef,5; + bonus bHealPower,2; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bMdef,4; } # - Mob: BACSOJIN2 # EggItem: Bacsojin_Egg2 @@ -2256,20 +2256,20 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bMaxSPrate,2; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bDelayrate,-3; +# bonus bMaxSPrate,5; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bDelayrate,-1; -# bonus bMaxSPrate,3; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bDelayrate,-2; # bonus bMaxSPrate,4; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bDelayrate,-3; -# bonus bMaxSPrate,5; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bDelayrate,-1; +# bonus bMaxSPrate,3; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bMaxSPrate,2; # } # # - Mob: ORK_HERO2 @@ -2284,19 +2284,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bAtkRate,1; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bCritAtkRate,3; +# bonus bAtkRate,7; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bAtkRate,2; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bCritAtkRate,1; # bonus bAtkRate,4; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bCritAtkRate,3; -# bonus bAtkRate,7; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bAtkRate,2; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bAtkRate,1; # } # # - Mob: PHREEONI2 @@ -2311,20 +2311,20 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bHit,6; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bHit,18; +# bonus bPerfectHitRate,15; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bHit,10; -# bonus bPerfectHitRate,5; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bHit,14; # bonus bPerfectHitRate,10; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bHit,18; -# bonus bPerfectHitRate,15; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bHit,10; +# bonus bPerfectHitRate,5; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bHit,6; # } # - Mob: EP17_2_CHILD_ADMIN1 @@ -2389,7 +2389,7 @@ Body: # CaptureRate: 0 # unknown # SpecialPerformance: false # unknown # Script: > -# if (getpetinfo(PETINFO_INTIMATE) == PET_INTIMATE_LOYAL) { +# if (getpetinfo(PETINFO_INTIMATE) >= PET_INTIMATE_LOYAL) { # bonus bMatk,10; # bonus bBaseAtk,10; # } @@ -2414,12 +2414,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus bInt,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus bInt,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus bInt,2; + } - Mob: ROWEEN EggItem: Roween_Egg FoodItem: Rotten_Meat @@ -2431,12 +2431,12 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bMagicAtkEle,Ele_Wind,2; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bMagicAtkEle,Ele_Wind,3; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bMagicAtkEle,Ele_Wind,2; + } # - Mob: SKELION # EggItem: Roost_Of_Skelion # EquipItem: Dark_Mane @@ -2448,7 +2448,7 @@ Body: # SpecialPerformance: false # unknown # AllowAutoFeed: true # Script: > -# if (getpetinfo(PETINFO_INTIMATE) == PET_INTIMATE_LOYAL) { +# if (getpetinfo(PETINFO_INTIMATE) >= PET_INTIMATE_LOYAL) { # bonus bMatk,20; # bonus bBaseAtk,20; # } @@ -2465,21 +2465,21 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bMatk,10; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus2 bMagicAtkEle,Ele_Fire,7; +# bonus2 bMagicAtkEle,Ele_Ghost,7; +# bonus bMatk,40; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bMatk,20; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus2 bMagicAtkEle,Ele_Fire,5; # bonus2 bMagicAtkEle,Ele_Ghost,5; # bonus bMatk,30; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus2 bMagicAtkEle,Ele_Fire,7; -# bonus2 bMagicAtkEle,Ele_Ghost,7; -# bonus bMatk,40; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bMatk,20; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bMatk,10; # } # # - Mob: WANDERING_DUCK @@ -2495,12 +2495,12 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_CORDIAL) { -# bonus bPerfectHitRate,5; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus bPerfectHitRate,10; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus bPerfectHitRate,5; +# } # # - Mob: KIEL_D_01_2 # EggItem: Kiel_Egg @@ -2514,24 +2514,24 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bAspdRate,4; -# bonus bHit,9; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bShortAtkRate,5; +# bonus bAspdRate,7; +# bonus bHit,18; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bShortAtkRate,1; -# bonus bAspdRate,5; -# bonus bHit,12; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bShortAtkRate,3; # bonus bAspdRate,6; # bonus bHit,15; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bShortAtkRate,5; -# bonus bAspdRate,7; -# bonus bHit,18; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bShortAtkRate,1; +# bonus bAspdRate,5; +# bonus bHit,12; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bAspdRate,4; +# bonus bHit,9; # } # - Mob: DARK_PRIEST @@ -2545,14 +2545,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bMagicAddEle,Ele_Holy,3; - bonus bInt,1; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bMagicAddEle,Ele_Holy,5; bonus bInt,2; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bMagicAddEle,Ele_Holy,3; + bonus bInt,1; + } # Evolution: # - Target: DARK_ILLUSION2 # ItemRequirements: @@ -2576,23 +2576,23 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bInt,1; - bonus bMaxSP,50; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bMagicAtkEle,Ele_Earth,5; + bonus bInt,4; + bonus bMaxSP,130; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bInt,2; - bonus bMaxSP,75; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bMagicAtkEle,Ele_Earth,3; bonus bInt,3; bonus bMaxSP,105; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bMagicAtkEle,Ele_Earth,5; - bonus bInt,4; - bonus bMaxSP,130; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bInt,2; + bonus bMaxSP,75; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bInt,1; + bonus bMaxSP,50; } # - Mob: ILL_BAPHOMET_J # EggItem: Chaos_Bapho_Jr_Egg @@ -2606,20 +2606,20 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bFlee,6; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bMaxSPrate,3; +# bonus bFlee,15; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bMaxSPrate,1; -# bonus bFlee,9; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bMaxSPrate,2; # bonus bFlee,12; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bMaxSPrate,3; -# bonus bFlee,15; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bMaxSPrate,1; +# bonus bFlee,9; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bFlee,6; # } # # Evolution: @@ -2643,19 +2643,19 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { - bonus bMaxHP,200; + if (.@i >= PET_INTIMATE_LOYAL) { + bonus2 bMagicAtkEle,Ele_Fire,5; + bonus bMaxHP,500; } - else if (.@i == PET_INTIMATE_NEUTRAL) { - bonus bMaxHP,300; - } - else if (.@i == PET_INTIMATE_CORDIAL) { + else if (.@i >= PET_INTIMATE_CORDIAL) { bonus2 bMagicAtkEle,Ele_Fire,3; bonus bMaxHP,400; } - else if (.@i == PET_INTIMATE_LOYAL) { - bonus2 bMagicAtkEle,Ele_Fire,5; - bonus bMaxHP,500; + else if (.@i >= PET_INTIMATE_NEUTRAL) { + bonus bMaxHP,300; + } + else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { + bonus bMaxHP,200; } # - Mob: KNIGHT_OF_ABYSS2 # EggItem: Abyss_Knight_Egg @@ -2669,21 +2669,21 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bAtkRate,2; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus2 bAddClass,Class_Boss,5; +# bonus bPAtk,2; +# bonus bAtkRate,5; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bAtkRate,3; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus2 bAddClass,Class_Boss,3; # bonus bPAtk,1; # bonus bAtkRate,4; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus2 bAddClass,Class_Boss,5; -# bonus bPAtk,2; -# bonus bAtkRate,5; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bAtkRate,3; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bAtkRate,2; # } # # - Mob: CWHITEKNIGHT @@ -2697,14 +2697,14 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_CORDIAL) { -# bonus bMatkRate,1; -# bonus bAtkRate,1; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus bMatkRate,2; # bonus bAtkRate,2; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus bMatkRate,1; +# bonus bAtkRate,1; +# } # # Evolution: # - Target: KNIGHT_OF_ABYSS2 @@ -2739,21 +2739,21 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bMatkRate,2; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus2 bMagicAddClass,Class_Boss,5; +# bonus bSMatk,2; +# bonus bMatkRate,5; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bMatkRate,3; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus2 bMagicAddClass,Class_Boss,3; # bonus bSMatk,1; # bonus bMatkRate,4; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus2 bMagicAddClass,Class_Boss,5; -# bonus bSMatk,2; -# bonus bMatkRate,5; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bMatkRate,3; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bMatkRate,2; # } # # - Mob: BAPHOMET2 @@ -2768,24 +2768,24 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bMaxSPrate,1; -# bonus bFlee,8; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bLongAtkRate,5; +# bonus bMaxSPrate,7; +# bonus bFlee,20; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bLongAtkRate,1; -# bonus bMaxSPrate,3; -# bonus bFlee,12; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bLongAtkRate,3; # bonus bMaxSPrate,5; # bonus bFlee,16; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bLongAtkRate,5; -# bonus bMaxSPrate,7; -# bonus bFlee,20; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bLongAtkRate,1; +# bonus bMaxSPrate,3; +# bonus bFlee,12; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bMaxSPrate,1; +# bonus bFlee,8; # } # - Mob: FARMILIAR @@ -2800,14 +2800,14 @@ Body: Script: > .@i = getpetinfo(PETINFO_INTIMATE); - if (.@i == PET_INTIMATE_CORDIAL) { - bonus2 bResEff,Eff_Curse,1000; - bonus bInt,3; - } - else if (.@i == PET_INTIMATE_LOYAL) { + if (.@i >= PET_INTIMATE_LOYAL) { bonus2 bResEff,Eff_Curse,2000; bonus bInt,5; } + else if (.@i >= PET_INTIMATE_CORDIAL) { + bonus2 bResEff,Eff_Curse,1000; + bonus bInt,3; + } # - Mob: DARK_ILLUSION2 # EggItem: Dark_Illusion_Egg # FoodItem: Pet_Food @@ -2820,19 +2820,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bVariableCastrate,-2; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus2 bMagicAtkEle,Ele_Dark,5; +# bonus bVariableCastrate,-5; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bVariableCastrate,-3; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus2 bMagicAtkEle,Ele_Dark,3; # bonus bVariableCastrate,-4; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus2 bMagicAtkEle,Ele_Dark,5; -# bonus bVariableCastrate,-5; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bVariableCastrate,-3; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bVariableCastrate,-2; # } # # Evolution: @@ -2858,21 +2858,21 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bMaxHPrate,1; -# bonus bVit,1; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bMaxHPrate,5; +# bonus bVit,4; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bMaxHPrate,2; -# bonus bVit,2; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bMaxHPrate,3; # bonus bVit,3; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bMaxHPrate,5; -# bonus bVit,4; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bMaxHPrate,2; +# bonus bVit,2; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bMaxHPrate,1; +# bonus bVit,1; # } # # - Mob: WILD_ROSE3 @@ -2887,19 +2887,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bCritical,2; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bAspdRate,5; +# bonus bCritical,7; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bCritical,3; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bAspdRate,3; # bonus bCritical,5; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bAspdRate,5; -# bonus bCritical,7; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bCritical,3; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bCritical,2; # } # # Evolution: @@ -2925,19 +2925,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bCritical,5; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bCRate,3; +# bonus bCritical,8; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bCritical,6; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bCRate,1; # bonus bCritical,7; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bCRate,3; -# bonus bCritical,8; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bCritical,6; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bCritical,5; # } # # - Mob: LARVA_VIOLET @@ -2951,14 +2951,14 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_CORDIAL) { -# bonus bCritical,3; -# bonus bHit,5; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus bCritical,5; # bonus bHit,10; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus bCritical,3; +# bonus bHit,5; +# } # # - Mob: EP20_COPO # TameItem: Ep20_Fatty_Icegangu @@ -2972,14 +2972,14 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_CORDIAL) { -# bonus bMatkRate,1; -# bonus bAtkRate,1; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus bMatkRate,2; # bonus bAtkRate,2; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus bMatkRate,1; +# bonus bAtkRate,1; +# } # # Evolution: # - Target: EP20_ICEWIND1 @@ -3014,19 +3014,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bAtkRate,1; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bAtkRate,3; +# bonus bPow,2; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bAtkRate,2; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bAtkRate,2; # bonus bPow,1; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bAtkRate,3; -# bonus bPow,2; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bAtkRate,2; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bAtkRate,1; # } # # - Mob: EP20_ICEWIND2 @@ -3041,19 +3041,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus bMatkRate,1; +# if (.@i >= PET_INTIMATE_LOYAL) { +# bonus bMatkRate,3; +# bonus bSpl,2; # } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus bMatkRate,2; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { +# else if (.@i >= PET_INTIMATE_CORDIAL) { # bonus bMatkRate,2; # bonus bSpl,1; # } -# else if (.@i == PET_INTIMATE_LOYAL) { -# bonus bMatkRate,3; -# bonus bSpl,2; +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus bMatkRate,2; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus bMatkRate,1; # } # # - Mob: DARK_LORD2 @@ -3068,19 +3068,19 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_AWKWARD || .@i == PET_INTIMATE_SHY) { -# bonus2 bMagicAtkEle,Ele_Dark,3; -# } -# else if (.@i == PET_INTIMATE_NEUTRAL) { -# bonus2 bMagicAtkEle,Ele_Dark,5; -# } -# else if (.@i == PET_INTIMATE_CORDIAL) { -# bonus2 bMagicAtkEle,Ele_Dark,7; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus2 bMagicAtkEle,Ele_Dark,7; # bonus bSpeedRate,25; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus2 bMagicAtkEle,Ele_Dark,7; +# } +# else if (.@i >= PET_INTIMATE_NEUTRAL) { +# bonus2 bMagicAtkEle,Ele_Dark,5; +# } +# else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) { +# bonus2 bMagicAtkEle,Ele_Dark,3; +# } # # - Mob: VR_CHAO # EggItem: Sonic_Chao_Egg @@ -3093,14 +3093,14 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_CORDIAL) { -# bonus bMaxHP,200; -# bonus bMaxSP,20; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus bMaxHP,300; # bonus bMaxSP,30; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus bMaxHP,200; +# bonus bMaxSP,20; +# } # # - Mob: EP21_ICESEAHORSE # TameItem: Ep21_Fatty_Shrimp @@ -3114,12 +3114,12 @@ Body: # Script: > # .@i = getpetinfo(PETINFO_INTIMATE); # -# if (.@i == PET_INTIMATE_CORDIAL) { -# bonus bMRes,5; -# bonus bRes,5; -# } -# else if (.@i == PET_INTIMATE_LOYAL) { +# if (.@i >= PET_INTIMATE_LOYAL) { # bonus bMRes,10; # bonus bRes,10; # } +# else if (.@i >= PET_INTIMATE_CORDIAL) { +# bonus bMRes,5; +# bonus bRes,5; +# } # diff --git a/db/re/quest_db.yml b/db/re/quest_db.yml index f07aa5d0d7..70f3984e6a 100644 --- a/db/re/quest_db.yml +++ b/db/re/quest_db.yml @@ -1404,21 +1404,21 @@ Body: TimeLimit: 4h - Id: 3455 Title: Illusion Investigation Team - Machoko - # - Id: 3456 - # Title: Illusion of Teddy Bear 100 Kills - # Targets: - # - Id: 1 - # Count: 100 - # Location: ein_d02_i - # MapMobTargets: - # ILL_TEDDY_BEAR_B: true - # ILL_MINERAL: true - # ILL_PITMAN: true - # ILL_TEDDY_BEAR_R: true - # ILL_TEDDY_BEAR_Y: true - # ILL_TEDDY_BEAR_W: true - # ILL_OBSIDIAN: true - # ILL_TEDDY_BEAR_G: true + - Id: 3456 + Title: Illusion of Teddy Bear 100 Kills + Targets: + - Id: 1 + Count: 100 + Location: ein_d02_i + MapMobTargets: + ILL_TEDDY_BEAR_B: true + ILL_MINERAL: true + ILL_PITMAN: true + ILL_TEDDY_BEAR_R: true + ILL_TEDDY_BEAR_Y: true + ILL_TEDDY_BEAR_W: true + ILL_OBSIDIAN: true + ILL_TEDDY_BEAR_G: true - Id: 3457 Title: Illusion of Teddy Bear 100 Kills - Standby TimeLimit: 4h @@ -8038,14 +8038,74 @@ Body: - Id: 11555 Title: In search of the taste of hometown - Waiting TimeLimit: 4h + - Id: 11556 + Title: Missing Steven + - Id: 11557 + Title: Missing Steven + - Id: 11558 + Title: Missing Steven + - Id: 11559 + Title: Missing Steven + - Id: 11560 + Title: Missing Steven + - Id: 11561 + Title: Missing Steven + - Id: 11562 + Title: Missing Steven + - Id: 11563 + Title: Nasarian Conspiracy + Targets: + - Mob: ILL_TEDDY_BEAR_R + Count: 10 + - Mob: ILL_TEDDY_BEAR_Y + Count: 10 + - Mob: ILL_TEDDY_BEAR_G + Count: 10 + - Id: 11564 + Title: Nasarian Conspiracy + Targets: + - Mob: ILL_TEDDY_BEAR_B + Count: 10 + - Mob: ILL_TEDDY_BEAR_W + Count: 10 + - Id: 11565 + Title: RUN! + Targets: + - Mob: ILL_PITMAN + Count: 10 + - Mob: ILL_MINERAL + Count: 10 + - Mob: ILL_OBSIDIAN + Count: 10 - Id: 11566 - Title: Escape!!!! - Wait + Title: RUN! - Pending TimeLimit: 4h + - Id: 11567 + Title: Things That Shouldn't Exist + Targets: + - Mob: ILL_TEDDY_BEAR_R + Count: 10 + - Mob: ILL_TEDDY_BEAR_Y + Count: 10 + - Mob: ILL_TEDDY_BEAR_G + Count: 10 + - Id: 11568 + Title: Things That Shouldn't Exist + Targets: + - Mob: ILL_TEDDY_BEAR_B + Count: 10 + - Mob: ILL_TEDDY_BEAR_W + Count: 10 - Id: 11569 - Title: Present not to exist-wait + Title: Things That Shouldn't Exist - Pending TimeLimit: 4h + - Id: 11570 + Title: Let the Light Devour the Darkness + Targets: + - Mob: ILL_TEDDY_BEAR_S + Count: 1 - Id: 11571 - Title: Let the light consume the darkness - Wait + Title: Let the Light Devour the Darkness - Pending TimeLimit: 4h - Id: 11596 Title: Old Memories diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index ad6173cd0a..a6f0d5974a 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -7235,6 +7235,7 @@ Body: TargetType: Self DamageFlags: IgnoreDefense: true + SimpleDefense: true Range: 9 Hit: Single HitCount: 1 @@ -7663,8 +7664,8 @@ Body: Type: Weapon TargetType: Attack DamageFlags: - IgnoreDefense: true IgnoreFlee: true + SimpleDefense: true Flags: TargetTrap: true Range: -2 @@ -7698,7 +7699,6 @@ Body: - Level: 5 Time: 1000 Duration1: 3000 - Duration2: 300000 FixedCastTime: - Level: 1 Time: 2000 @@ -8878,6 +8878,7 @@ Body: HitCount: 1 SplashArea: -1 AfterCastActDelay: 300 + Duration1: 15000 Duration2: 27000 Cooldown: 4000 Requires: @@ -9135,6 +9136,7 @@ Body: HitCount: 1 SplashArea: -1 AfterCastActDelay: 300 + Duration1: 4500 Duration2: 4500 Cooldown: 4000 Requires: @@ -9453,6 +9455,7 @@ Body: DamageFlags: IgnoreAtkCard: true IgnoreFlee: true + SimpleDefense: true Flags: IsNpc: true TargetSelf: true @@ -18361,6 +18364,43 @@ Body: HitCount: 1 Duration1: 60000 Status: Relieve_off + - Id: 776 + Name: NPC_DEADLYCURSE + Description: Deadly Curse + MaxLevel: 1 + TargetType: Attack + DamageFlags: + NoDamage: true + Flags: + IgnoreGtb: true + IsNpc: true + Range: 1 + Duration1: 15000 + Status: Deadly_Defeasance + - Id: 779 + Name: NPC_DEADLYCURSE2 + Description: Deadly Curse 2 + MaxLevel: 5 + TargetType: Self + DamageFlags: + NoDamage: true + Splash: true + Flags: + IgnoreGtb: true + IsNpc: true + SplashArea: + - Level: 1 + Area: 2 + - Level: 2 + Area: 3 + - Level: 3 + Area: 4 + - Level: 4 + Area: 5 + - Level: 5 + Area: 6 + Duration2: 30000 + Status: Deadly_Defeasance - Id: 780 Name: NPC_CANE_OF_EVIL_EYE Description: Cane of evil eye @@ -19111,6 +19151,7 @@ Body: DamageFlags: Splash: true IgnoreFlee: true + SimpleDefense: true Flags: TargetTrap: true Range: 9 @@ -22656,6 +22697,7 @@ Body: DamageFlags: Splash: true IgnoreFlee: true + SimpleDefense: true Flags: AllowOnMado: true Range: 9 @@ -24520,7 +24562,7 @@ Body: TargetType: Attack Range: 1 Hit: Single - HitCount: 5 + HitCount: -5 CopyFlags: Skill: Reproduce: true @@ -28790,6 +28832,7 @@ Body: DamageFlags: Splash: true IgnoreFlee: true + SimpleDefense: true Range: - Level: 1 Size: 7 @@ -29688,6 +29731,19 @@ Body: - Level: 2 Amount: 100 Status: Odins_Power + - Id: 2543 + Name: ALL_RAY_OF_PROTECTION + Description: Ray of Protection + MaxLevel: 1 + Type: Magic + TargetType: Support + DamageFlags: + NoDamage: true + Range: 1 + Hit: Single + HitCount: 1 + Duration1: 60000 + Status: Protection - Id: 2544 Name: MC_CARTDECORATE Description: Decorate Cart @@ -33146,6 +33202,7 @@ Body: DamageFlags: Splash: true IgnoreFlee: true + SimpleDefense: true Flags: TargetTrap: true Range: 9 diff --git a/db/re/status.yml b/db/re/status.yml index 9f58af3423..ec6999e469 100644 --- a/db/re/status.yml +++ b/db/re/status.yml @@ -72,6 +72,7 @@ Body: Stun: true Sleep: true Burning: true + Protection: true EndOnStart: Aeterna: true EndReturn: @@ -125,6 +126,7 @@ Body: Stun: true Sleep: true Burning: true + Protection: true EndOnStart: Aeterna: true - Status: Stun @@ -144,6 +146,7 @@ Body: Inspiration: true Gvg_Stun: true Stun: true + Protection: true - Status: Sleep DurationLookup: NPC_SLEEPATTACK States: @@ -162,6 +165,7 @@ Body: Inspiration: true Gvg_Sleep: true Sleep: true + Protection: true - Status: Poison DurationLookup: NPC_POISON CalcFlags: @@ -180,6 +184,7 @@ Body: Inspiration: true Poison: true Dpoison: true + Protection: true - Status: Curse DurationLookup: NPC_WIDECURSE CalcFlags: @@ -198,6 +203,7 @@ Body: Inspiration: true Gvg_Curse: true Curse: true + Protection: true - Status: Silence DurationLookup: NPC_SILENCEATTACK States: @@ -214,6 +220,7 @@ Body: Inspiration: true Gvg_Silence: true Silence: true + Protection: true - Status: Confusion DurationLookup: NPC_WIDECONFUSE Flags: @@ -223,6 +230,7 @@ Body: Fail: Refresh: true Inspiration: true + Protection: true EndReturn: Confusion: true - Status: Blind @@ -242,6 +250,7 @@ Body: Fear: true Gvg_Blind: true Blind: true + Protection: true - Status: Bleeding Icon: EFST_BLOODING DurationLookup: NPC_BLEEDING @@ -259,6 +268,7 @@ Body: Fail: Refresh: true Inspiration: true + Protection: true - Status: Dpoison DurationLookup: NPC_POISON CalcFlags: @@ -999,6 +1009,7 @@ Body: Flags: SendOption: true - Status: Extremityfist + Icon: EFST_EXTREMITYFIST DurationLookup: MO_EXTREMITYFIST CalcFlags: Regen: true @@ -6107,14 +6118,6 @@ Body: NoBanishingBuster: true NoDispell: true RemoveOnHermode: true - - Status: Extremityfist2 - Icon: EFST_EXTREMITYFIST - DurationLookup: MO_EXTREMITYFIST - Flags: - NoRemoveOnDead: true - NoDispell: true - NoBanishingBuster: true - NoClearance: true - Status: Mtf_Aspd2 Icon: EFST_MTF_ASPD2 CalcFlags: @@ -8927,6 +8930,24 @@ Body: NoClearance: true EndOnStart: Decreaseagi: true + - Status: Protection + Icon: EFST_RAY_OF_PROTECTION + Flags: + NoClearbuff: true + NoDispell: true + NoBanishingBuster: true + NoClearance: true + EndOnStart: + Stun: true + Sleep: true + Curse: true + Stone: true + Poison: true + Blind: true + Silence: true + Bleeding: true + Confusion: true + Freeze: true - Status: Hogogong Icon: EFST_HOGOGONG DurationLookup: SH_HOWLING_OF_CHUL_HO diff --git a/doc/ea_job_system.txt b/doc/ea_job_system.txt index 7860fc4c62..1ff151db29 100644 --- a/doc/ea_job_system.txt +++ b/doc/ea_job_system.txt @@ -63,11 +63,12 @@ The eA Job System: EAJL_2 0x300 - The third category is type. Classes can either be normal, rebirth/advanced, - adopted, or third class. + adopted, third class or fourth class. EAJL_UPPER 0x1000 EAJL_BABY 0x2000 EAJL_THIRD 0x4000 + EAJL_FOURTH 0x8000 So using these three categories, any job class can be constructed from the others. Let's take a swordman, for example. @@ -143,6 +144,11 @@ EAJL_THIRD: if(@eac&EAJL_THIRD) mes "Wow, you've really grown!"; +EAJL_FOURTH: + Checks if a class is a fourth job. + if(@eac&EAJL_FOURTH) + mes "Wow, you've really grown!"; + EAJ_UPPERMASK: The upper mask can be used to "strip" the upper/baby characteristics of a class, used when you want to know if someone is a certain class regardless @@ -169,13 +175,19 @@ EAJ_BASEMASK: check will always fail for the same reasons previously explained. EAJ_THIRDMASK: - This mask strips 3rd class attributes. It will give the "normal" class of + This mask strips 3rd class attributes. It will give the "normal" class of a third job, regardless of rebirth/adopted status. When used on non-third class characters, it will return the second job, or, if that also doesn't exist, the first. if ((@eac&EAJ_THIRDMASK) == EAJ_WARLOCK_T) mes "You've gone through rebirth, I see."; +EAJ_FOURTHMASK: + This mask strips 4th class attributes. Although currently there are none, + it is suggested to use this for checking. + if ((@eac&EAJ_FOURTHMASK) == EAJ_DRAGON_KNIGHT) + mes "Oh you are a Dragon Knight, I see."; + The script commands eaclass, roclass: ------------------------------------------------------------------------------- diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index cabb8ad189..d547dc5bb2 100644 --- a/doc/item_bonus.txt +++ b/doc/item_bonus.txt @@ -31,7 +31,7 @@ This list contains all available constants referenced in the 'bonus' commands. RC2_Bio5_Swordman_Thief, RC2_Bio5_Acolyte_Merchant, RC2_Bio5_Mage_Archer, RC2_Bio5_MVP, RC2_Clocktower, RC2_Thanatos, RC2_Faceworm, RC2_Hearthunter, RC2_Rockridge, RC2_Werner_Lab, RC2_Temple_Demon, RC2_Illusion_Vampire, RC2_Malangdo, RC2_EP172ALPHA, RC2_EP172BETA, RC2_EP172BATH, - RC2_Illusion_Turtle, RC2_Rachel_Sanctuary, RC2_Illusion_Luanda + RC2_Illusion_Turtle, RC2_Rachel_Sanctuary, RC2_Illusion_Luanda, RC2_Illusion_Frozen, RC2_Illusion_Moonlight * Class (c) Class_Normal, Class_Boss, Class_Guardian, Class_All diff --git a/doc/mob_db.txt b/doc/mob_db.txt index 0dce617cbb..c928061442 100644 --- a/doc/mob_db.txt +++ b/doc/mob_db.txt @@ -204,6 +204,18 @@ AttackMotion: Attack animation motion. Low value means monster's attack will be --------------------------------------- +ClientAttackMotion: The time from the start of a normal attack until the damage frame shows on client. At the same time you also get stopped on the client. +This value is only needed if you use the "synchronize_damage" feature (battle/battle.conf). + +If you created a custom sprite, you want to set this value to the timing of the damage frame in your *.act file. +In Act Editor you can set the damage frame by setting the frame sound to "atk". If you don't define a damage frame, it will default to the second to last +frame. Also keep in mind that the Act Editor displays slightly inaccurate speed. Every 25ms in Act Editor is 24ms in reality. + +Example: Drops has a animation speed of 24ms per frame and the 13th frame (frame #12) is the damage frame. This means the damage shows after 12 frames. +That's why Drops has a ClientAttackMotion of 24*12 = 288. + +--------------------------------------- + DamageMotion: Damage animation motion, same as aMotion but used to display the "I am hit" animation. Coincidentally, this same value is used to determine how long it is before the monster/player can move again. Endure is dMotion = 0, obviously. --------------------------------------- diff --git a/doc/permissions.txt b/doc/permissions.txt index e1d3b46802..7e48504409 100644 --- a/doc/permissions.txt +++ b/doc/permissions.txt @@ -11,6 +11,12 @@ This file describes the functions of player group permissions, configured in '/conf/groups.conf' under the "permissions" bracket. +The permission name used in '/conf/groups.conf' goes after the asterisk "*", +while the constant name used in scripts and src goes between the parentheses "()" +in the following format: + +*permission_name (PC_PERM_CONSTANT_NAME) + To search for a permission, write "*" before its name. The format of this file is as follows: 1. Basic Permissions @@ -22,20 +28,20 @@ The format of this file is as follows: ======================== --------------------------------------- -*can_trade +*can_trade (PC_PERM_TRADE) Allows player to distribute items, such as through trades, dropping, vending, storage, mail, etc. --------------------------------------- -*can_party +*can_party (PC_PERM_PARTY) Allows player to create and join parties. --------------------------------------- -*attendance +*attendance (PC_PERM_ATTENDANCE) Allows player to use the daily attendance system. @@ -46,78 +52,78 @@ Allows player to use the daily attendance system. =========================== --------------------------------------- -*all_skill +*all_skill (PC_PERM_ALL_SKILL) Grants player all available skills in the player's skill tree. --------------------------------------- -*all_equipment +*all_equipment (PC_PERM_USE_ALL_EQUIPMENT) Allows player to equip any item, regardless of requirements (class, level, etc.). Note that this can cause client errors if a sprite does not exist. --------------------------------------- -*skill_unconditional +*skill_unconditional (PC_PERM_SKILL_UNCONDITIONAL) Allows player to use any skill, regardless of required conditions (SP, items, etc.). --------------------------------------- -*join_chat +*join_chat (PC_PERM_JOIN_ALL_CHAT) Allows player to join password-protected chatrooms. --------------------------------------- -*kick_chat +*kick_chat (PC_PERM_NO_CHAT_KICK) Prevents player from being kicked from a chatroom. --------------------------------------- -*view_hpmeter +*view_hpmeter (PC_PERM_VIEW_HPMETER) Allows player to see the HP bar of every player. --------------------------------------- -*view_equipment +*view_equipment (PC_PERM_VIEW_EQUIPMENT) Allows player to view the equipment of every player, regardless of that player's setting. --------------------------------------- -*hack_info +*hack_info (PC_PERM_RECEIVE_HACK_INFO) Allows player to receive all information about players who try to hack, spoof a name, etc. --------------------------------------- -*disable_pvm +*disable_pvm (PC_PERM_DISABLE_PVM) Prevents player from attacking monsters. --------------------------------------- -*disable_pvp +*disable_pvp (PC_PERM_DISABLE_PVP) Prevents player from attacking other players. --------------------------------------- -*can_trade_bounded +*can_trade_bounded (PC_PERM_TRADE_BOUNDED) Allows player to do normal item actions with bounded items (drop, sell, trade, etc.). --------------------------------------- -*item_unconditional +*item_unconditional (PC_PERM_ITEM_UNCONDITIONAL) Allows player to consume any consumable item regardless the requirements (bypass noitemconsumption mapflag, item's class, gender, status changes, @@ -125,7 +131,7 @@ item delay, etc). --------------------------------------- -*trade_unconditional +*trade_unconditional (PC_PERM_TRADE_UNCONDITIONAL) Allows player to ignore the trade conditions of items (drop, trade, sell, cart, storage/gstorage, mail and auction). @@ -136,32 +142,32 @@ Allows player to ignore the trade conditions of items (drop, trade, sell, cart, ====================== --------------------------------------- -*all_commands +*all_commands (PC_PERM_USE_ALL_COMMANDS) Allows usage of all atcommands and charcommands. --------------------------------------- -*disable_commands_when_dead +*disable_commands_when_dead (PC_PERM_DISABLE_CMD_DEAD) Disables usage of atcommands when player is dead. --------------------------------------- -*hide_session +*hide_session (PC_PERM_HIDE_SESSION) Hides player session from being displayed by atcommands (@who, @whomap, etc.). --------------------------------------- -*who_display_aid +*who_display_aid (PC_PERM_WHO_DISPLAY_AID) Displays all GMs and character/account IDs in the @who command. --------------------------------------- -*any_warp +*any_warp (PC_PERM_WARP_ANYWHERE) Allows player to bypass 'nowarp', 'nowarpto', 'noteleport', and 'nomemo' mapflags in commands which modify a character's map or coordinates (@memo, @@ -169,63 +175,63 @@ mapflags in commands which modify a character's map or coordinates (@memo, --------------------------------------- -*receive_requests +*receive_requests (PC_PERM_RECEIVE_REQUESTS) Allows player to receive requests through the @requests command. --------------------------------------- -*show_bossmobs +*show_bossmobs (PC_PERM_SHOW_BOSS) Displays boss mobs in the @showmobs command. --------------------------------------- -*channel_admin +*channel_admin (PC_PERM_CHANNEL_ADMIN) Allows player to modify #channel settings regardless of ownership and to join password-protected channels without a password. --------------------------------------- -*use_check +*use_check (PC_PERM_USE_CHECK) Allows player to use the client command /check (displays character status). --------------------------------------- -*use_changemaptype +*use_changemaptype (PC_PERM_USE_CHANGEMAPTYPE) Allows player to use the client command /changemaptype. --------------------------------------- -*command_enable +*command_enable (PC_PERM_ENABLE_COMMAND) Enable to use atcommand while talking with NPC. --------------------------------------- -*bypass_stat_onclone +*bypass_stat_onclone (PC_PERM_BYPASS_STAT_ONCLONE) Bypass max parameter limit while using @clonestat --------------------------------------- -*bypass_max_stat +*bypass_max_stat (PC_PERM_BYPASS_MAX_STAT) Allow to bypass the maximum stat parameter (at conf/player.conf) to maximum value 32,767. --------------------------------------- -*macro_detect +*macro_detect (PC_PERM_MACRO_DETECT) Allows player to use the client command /macro_detector. --------------------------------------- -*macro_register +*macro_register (PC_PERM_MACRO_REGISTER) Allows player to use the client commands /macro_register (used to add new captcha) and /macro_preview (used to preview captcha by ID). diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 1b0a1c9602..36ffd3c48a 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -1,4 +1,4 @@ -//===== rAthena Documentation================================ +//===== rAthena Documentation================================ //= rAthena Script Commands //===== By:================================================== //= rAthena Dev Team @@ -135,11 +135,26 @@ and 'doc/mapflags.txt'. {,{,{,{,}}}}%TAB%monster%TAB%{,}%TAB%,{,{,{,{,{,}}}}} Map name is the name of the map the monsters will spawn on. x,y are the -coordinates where the mob should spawn. If xs and ys are non-zero, they -specify the 'radius' of a spawn-rectangle area centered at x,y. -Putting zeros instead of these coordinates will spawn the monsters randomly. +coordinates where the mob should spawn. Putting zeros instead of these +coordinates will spawn the monsters randomly. + +If the coordinates are non-zero and xs and ys are above 1, each monster will +spawn in a radius around x,y. At server start, each monster will get assigned +its own center cell adding or substracting up to (xs-1),(ys-1) from the given +x,y coordinates. Each time a monster respawns, it will spawn in a radius around +its personal center cell by adding or substracting up to (xs-1),(ys-1) again. +This results in a total possible spawn area over all monsters of the spawn line +of (xs,ys)*4-3, but with a strong bias towards the center of that area: +2,2 - 5x5 +3,3 - 9x9 +4,4 - 13x13 +5,5 - 17x17 +etc. + Note this is only the initial spawn zone, as mobs random-walk, they are free to move away from their specified spawn region. +You can disable the picking of a random center cell for each monster in the +battle config. (See /conf/battle/monster.conf::randomize_center_cell.) Monster name is the name the monsters will have on screen, and has no relation whatsoever to their names anywhere else. It's the mob id that counts, which @@ -188,6 +203,8 @@ Natural enemies for AI monsters are normal monsters. Alternately, a monster spawned using 'boss_monster' instead of 'monster' is able to be detected on the map with the SC_BOSSMAPINFO status (used by Convex Mirror). +A boss monster spawn with fixed coordinates will always spawn at the given +coordinates, even if they are blocked (e.g. by Icewall). ** NPC names @@ -5677,22 +5694,35 @@ Example: --------------------------------------- -*searchstores ,; +*searchstores ,{,""}; Invokes the store search window, which allows to search for both vending -and buying stores. Parameter uses indicates, how many searches can be -started, before the window has to be reopened. Effect value affects, -what happens, when a result item is double-clicked and can be one of the -following: +and buying stores. - 0 = Shows the store's position on the mini-map and highlights the - shop sign with yellow color, when the store is on same map - as the invoking player. - 1 = Directly opens the shop, regardless of distance. +Parameter indicates how many searches can be started +before the window has to be reopened. -Example: - // Item Universal_Catalog_Gold (10 uses, effect: open shop) - searchstores 10,1; +Parameter affects what happens when a result item is double-clicked +and can be one of the following: + + SEARCHSTORE_EFFECT_NORMAL : Shows the store's position on the mini-map and highlights the + shop sign with yellow color, when the store is on same map + as the invoking player. + SEARCHSTORE_EFFECT_REMOTE : Directly opens the shop, regardless of distance. + +Optional parameter indicates the name of map where the stores will be searched. +If not set, the search will be on the map the invoking character is currently on. +Special values for are: + + "this" : Will search for stores on the map where the invoking character is currently on. (default) + "all" : Will search for stores on all maps. + +Examples: + // Item Vending_Search_Scroll (10 uses, effect: show mark on minimap, current map) + searchstores 10, SEARCHSTORE_EFFECT_NORMAL; + + // Search stores (1 use, effect: open shop, all maps on the server) + searchstores 1, SEARCHSTORE_EFFECT_REMOTE, "all"; --------------------------------------- @@ -6591,7 +6621,8 @@ Available : PCBLOCK_COMMANDS Prevent the player from using atcommands/charcommands. PCBLOCK_NPCCLICK Prevent the player from clicking/touching any NPC/shop/warp. PCBLOCK_EMOTION Prevent the player from using emotions. - PCBLOCK_NPC Simulate NPC interaction. Useful for NPC with no mes window. Sum of PCBLOCK_MOVE|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK. + PCBLOCK_EQUIP Prevent the player from replacing equipment. + PCBLOCK_NPC Simulate NPC interaction. Useful for NPC with no mes window. Sum of PCBLOCK_MOVE|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK|PCBLOCK_EQUIP. PCBLOCK_ALL Sum of all the flags. Examples: @@ -6620,8 +6651,8 @@ Examples: --------------------------------------- -macro_detector({}); -macro_detector({""}); +*macro_detector({}); +*macro_detector({""}); This command will display the captcha UI challenge onto the invoking character or the given /. @@ -6642,6 +6673,46 @@ Example: --------------------------------------- +*permission_check({,}); + +This command will return true if the attached character has the specified permission, false otherwise. +If is given, it will check the permission for that character instead. + +A full list of the player permission constants (with the 'PC_PERM' prefix) along with the +full permissions documentation can be found in 'doc/permissions.txt'. + + +Example: + if (permission_check(PC_PERM_TRADE)) { + mes "You have permission to trade!"; + } + else { + mes "You do not have permission to trade!"; + } + end; + +--------------------------------------- + +*permission_add({,}); +*permission_remove({,}); + +These commands will temporarily add or remove the specified permission to the attached character, +or the given until the player logs out. + +A full list of the player permission constants (with the 'PC_PERM' prefix) along with the +full permissions documentation can be found in 'doc/permissions.txt'. + +Examples: + // Adds the 'can_trade' permission to the attached character, + // allowing them to trade, drop, sell, store and mail items. + permission_add(PC_PERM_TRADE); + + // Removes the 'can_party' permission from the attached character, + // preventing them from joining or creating parties. + permission_remove(PC_PERM_PARTY); + +--------------------------------------- + ================================== |5.- Mob / NPC -related commands.| ================================== @@ -7944,17 +8015,15 @@ Return values: // --------------------------------------- -*npcspeed ; -*npcwalkto ,; -*npcstop; +*npcspeed( {,""} ); +*npcwalkto( , {,""} } ); +*npcstop( {"", {""}}); -These commands will make the NPC object in question move around the map. As they -currently are, they are a bit buggy and are not useful for much more than making -an NPC move randomly around the map. +These commands will make the NPC object in question move around the map. -'npcspeed' will set the NPCs walking speed to a specified value. As in the -@speed GM command, 200 is the slowest possible speed while 0 is the fastest -possible (instant motion). 100 is the default character walking speed. +'npcspeed' will permanently set the NPCs walking speed to a specified value. As in the +@speed GM command, MAX_WALK_SPEED (1000) is the slowest possible speed while MIN_WALK_SPEED (20) is the fastest +possible (instant motion). DEFAULT_NPC_WALK_SPEED (200) is the default NPC walking speed. 'npcwalkto' will start the NPC sprite moving towards the specified coordinates on the same map it is currently on. The script proceeds immediately after the @@ -7962,10 +8031,17 @@ NPC begins moving. 'npcstop' will stop the motion. +The value in npcstop affects how the unit is stopped. The following flags are bitwise values (can be combined using the pipe operator): + USW_NONE = Unit will keep walking to their original destination. + USW_FIXPOS = Issue a fixpos packet afterwards. + USW_MOVE_ONCE = Force the unit to move one cell if it hasn't yet. + USW_MOVE_FULL_CELL = Enable moving to the next cell when unit was already half-way there (may cause on-touch/place side-effects, such as a scripted map change). + USW_FORCE_STOP = Force stop moving. +Default: USW_FIXPOS | USW_MOVE_FULL_CELL | USW_FORCE_STOP + While in transit, the NPC will be clickable, but invoking it will cause it to stop moving, which will make its coordinates different from what the client -computed based on the speed and motion coordinates. The effect is rather -unnerving. +computed based on the speed and motion coordinates. Only a few NPC sprites have walking animations, and those that do, do not get the animation invoked when moving the NPC, due to the problem in the NPC walking @@ -9780,6 +9856,7 @@ For details on the other parameters, see 'announce'. This function checks if a party meets certain requirements, returning 1 if all conditions are met and 0 otherwise. It will only check online characters. +The command returns 0 is the party ID does not exist. amount - number of online party members (default is 1). min - minimum level of all characters in the party (default is 1). diff --git a/doc/skill_db.txt b/doc/skill_db.txt index 6b6461b975..265fe9a3d4 100644 --- a/doc/skill_db.txt +++ b/doc/skill_db.txt @@ -58,6 +58,7 @@ IgnoreFlee - Skill ignores target's flee (Magic type always ignores) IgnoreDefCard - Skill ignores target's defense cards. IgnoreLongCard - Skill ignores caster's long range damage cards. Critical - Skill can critical. +SimpleDefense - (Renewal-only) Physical damage is flatly reduced by DEF+DEF2. RES is ignored. --------------------------------------- diff --git a/doc/yaml/db/mob_db.yml b/doc/yaml/db/mob_db.yml index d4d8939469..3c295089a7 100644 --- a/doc/yaml/db/mob_db.yml +++ b/doc/yaml/db/mob_db.yml @@ -39,6 +39,7 @@ # WalkSpeed Walk speed. (Default: DEFAULT_WALK_SPEED) # AttackDelay Attack speed. (Default: 0) # AttackMotion Attack animation speed. (Default: 0) +# ClientAttackMotion Client attack speed. (Default: AttackMotion) # DamageMotion Damage animation speed. (Default: 0) # DamageTaken Rate at which the monster will receive incoming damage. (Default: 100) # Ai Aegis monster type AI behavior. (Default: 06) diff --git a/npc/re/cities/brasilis.txt b/npc/cities/brasilis.txt similarity index 87% rename from npc/re/cities/brasilis.txt rename to npc/cities/brasilis.txt index d847f8f8a7..405d4ee256 100644 --- a/npc/re/cities/brasilis.txt +++ b/npc/cities/brasilis.txt @@ -1,26 +1,19 @@ -//===== rAthena Script ======================================= +//===== rAthena Script ======================================= //= Brasilis Town -//===== By: ================================================== -//= L0ne_W0lf -//===== Current Version: ===================================== -//= 1.4 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= +//===== Description: ========================================= //= [Official Conversion] //= Brasilis Town Script -//===== Additional Comments: ================================= -//= 1.0 First version. Transportation and Basic NPCs. +//===== Changelog: =========================================== +//= 1.0 First version. Transportation and Basic NPCs. [L0ne_W0lf] //= 1.1 Fixed Zeny not being removed for payment. [Kisuka] //= 1.2 Updated dialog, added Ice Cream Maker. [L0ne_W0lf] //= 1.3 Moved Alberta NPC to pre-re/re paths. [Euphy] //= 1.4 Added VIP features. [Euphy] -//============================================================ +//============================================================ // Brasilis Transportation :: brasilis_trans //============================================================ -/* Pre-Renewal coordinates: alberta,247,115,3 */ -alberta,246,82,3 script Crewman#bra2 100,{ +- script ::Crewman_bra2 -1,{ mes "[Crewman]"; mes "Hey, have you heard of a place called Brasilis?"; mes "It's a tropical city that's hot like the desert but also rainy. It is a very mysterious place."; diff --git a/npc/custom/jobmaster.txt b/npc/custom/jobmaster.txt index fa2e0f2bc7..efa5e5cde1 100644 --- a/npc/custom/jobmaster.txt +++ b/npc/custom/jobmaster.txt @@ -184,7 +184,28 @@ function Job_Options { Job_Options(.@job_opt,roclass(.@eac|EAJL_THIRD)); // Expanded SN is "third" cls } } + + // babies don't get to become 4th jobs + if (.FourthExpanded && .@eac == EAJ_REBELLION) { + Require_Level(.Req_Fourth[0], .Req_Fourth[1]); + Job_Options(.@job_opt, roclass(EAJ_NIGHT_WATCH)); + } + + if (.FourthExpanded && .@eac == EAJ_KAGEROUOBORO) { + Require_Level(.Req_Fourth[0], .Req_Fourth[1]); + Job_Options(.@job_opt, roclass(EAJ_SHINKIRO_SHIRANUI)); + } + + if (.FourthExpanded && .@eac == EAJ_SUPER_NOVICE_E) { + Require_Level(.Req_Fourth[0], .Req_Fourth[1]); + Job_Options(.@job_opt, roclass(EAJ_HYPER_NOVICE)); + } + if (.FourthExpanded && .@eac == EAJ_SUMMONER) { + Require_Level(.Req_SHandler[0], .Req_SHandler[1]); + Job_Options(.@job_opt, roclass(EAJ_SPIRIT_HANDLER)); + } + if (.SecondExpanded && ((.@eac&(~EAJL_BABY)) == EAJ_NINJA || // is (Baby) Ninja (.@eac&(~EAJL_BABY)) == EAJ_GUNSLINGER)) { // is (Baby) Gunslinger @@ -483,6 +504,7 @@ OnInit: // Settings .FourthClass = true; // Enable fourth classes? + .FourthExpanded = true; // Enable new expanded fourth classes: Ex. Hyper Novice, Rebellion, Shinkiro/Shiranui? .ThirdClass = true; // Enable third classes? .RebirthClass = true; // Enable rebirth classes? .SecondExpanded = true; // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? @@ -504,6 +526,7 @@ OnInit: setarray .Req_Fourth[0],200,70; // Minimum base level, job level to change to fourth class setarray .Req_Exp_NJ_GS[0],99,70; // Minimum base level, job level to turn into Expanded Ninja and Gunslinger setarray .Req_Exp_SNOVI[0],99,99; // Minimum base level, job level to turn into Expanded Super Novice + setarray .Req_SHandler[0],200,60; // Minimum base level, job level to turn into Spirit Handler .SNovice = 45; // Minimum base level to turn into Super Novice // Setting adjustments by PACKETVER diff --git a/npc/custom/warper.txt b/npc/custom/warper.txt index e853524d7c..5af9ed9214 100644 --- a/npc/custom/warper.txt +++ b/npc/custom/warper.txt @@ -110,7 +110,18 @@ function Pick { Go(.@map$,.@x,.@y); } function Restrict { - if ((getarg(0) == "RE" && !checkre(0)) || (getarg(0) == "Pre-RE" && checkre(0))) { + .@type$ = getarg(0); + + if (.@type$ == "Brasilis") { + // If the official warper to Brasilis is enabled, meaning is either + // Renewal mode or Pre-renewal Brasilis is enabled, we lift the restriction + if (getnpcid(0, "Crewman_bra2")) + return; + // Otherwise we apply the renewal restriction + .@type$ = "RE"; + } + + if ((.@type$ == "RE" && !checkre(0)) || (.@type$ == "Pre-RE" && checkre(0))) { if (getarg(1,0)) { set @warp_block,0; for (set .@i,1; .@i 4999) { + mes "[Hotel Keeper]"; + mes "I will show you a great room."; + close2; + if (Zeny < 5000) + end; + Zeny -= 5000; + percentheal 100,100; + warp "bra_in01",144,69; + end; + } + mes "[Hotel Keeper]"; + mes "I'm sorry, but the service charge is 5,000 zeny per night."; + case 3: + close; + } +} + //======================= Inn Function ============================== function script F_InnMaid { .@npc_name$ = getarg(0); diff --git a/npc/other/CashShop_Functions.txt b/npc/other/CashShop_Functions.txt index 629fcb2c85..0d8dd736d1 100644 --- a/npc/other/CashShop_Functions.txt +++ b/npc/other/CashShop_Functions.txt @@ -263,6 +263,26 @@ function script F_CashSiegeTele { return; } +// Siege Teleport Scroll 2 (WoE 1.5) +//============================================================ +// - Warp player to selected guild castle. +// - No arguments. +function script F_CashSiegeTele2 { + switch(select("Mardoll (arug_cas01):Cyr (arug_cas02):Horn (arug_cas03):Gefn (arug_cas04):Badanis (arug_cas05):Himinn (schg_cas01):Andlangr (schg_cas02):Vidblainn (schg_cas03):Hljod (schg_cas04):Schatirnil (schg_cas05)")) { + case 1: warp "aru_gld",159,272; end; + case 2: warp "aru_gld",86,50; end; + case 3: warp "aru_gld",63,157; end; + case 4: warp "aru_gld",307,354; end; + case 5: warp "aru_gld",298,110; end; + case 6: warp "sch_gld",300,100; end; + case 7: warp "sch_gld",284,249; end; + case 8: warp "sch_gld",102,196; end; + case 9: warp "sch_gld",140,83; end; + case 10: warp "sch_gld",70,320; end; + } + return; +} + // Curious Snowball //============================================================ // - You can get an effect of Restore, Endure, or Wing of Butterfly. diff --git a/npc/pre-re/cities/brasilis.txt b/npc/pre-re/cities/brasilis.txt new file mode 100644 index 0000000000..df7ac4afcf --- /dev/null +++ b/npc/pre-re/cities/brasilis.txt @@ -0,0 +1,20 @@ +//===== rAthena Script ======================================= +//= Brasilis Town Pre-Renewal +//===== Description: ========================================= +//= [Official Conversion based on bRO & jRO servers] +//= Brasilis town NPCs. +// +// Note: +// - Brasilis was introduced in Pre-Renewal only for bRO and +// jRO official servers with differences in monster stats, +// spawns and quests. +// It was added in Renewal for every other official server. +// Since we follow kRO this is disabled by default. +// You can enable it on npc/pre-re/scripts_athena.conf +//===== Changelog: =========================================== +//= 1.0 First Version [Daegaladh] +//============================================================ + +// Brasilis Transportation :: brasilis_trans +//============================================================ +alberta,247,115,3 duplicate(Crewman_bra2) Crewman#bra2 100 diff --git a/npc/pre-re/guides/guides_brasilis.txt b/npc/pre-re/guides/guides_brasilis.txt new file mode 100644 index 0000000000..56552bbc20 --- /dev/null +++ b/npc/pre-re/guides/guides_brasilis.txt @@ -0,0 +1,77 @@ +//===== rAthena Script ======================================= +//= Brasilis Guide +//===== Description: ========================================= +//= [Official Conversion based on bRO & jRO servers] +//= Guide for the city of Brasilis. +// +// Note: +// - Brasilis was introduced in Pre-Renewal only for bRO and +// jRO official servers with differences in monster stats, +// spawns and quests. +// It was added in Renewal for every other official server. +// Since we follow kRO this is disabled by default. +// You can enable it on npc/pre-re/scripts_athena.conf +//===== Changelog: =========================================== +//= 1.0 First Version [Daegaladh] +//============================================================ + +brasilis,219,97,3 script Brasilis Guide 478,{ + mes "[Brasilis Guide]"; + mes "Welcome to ^8B4513Brasilis^000000, a country as passionate as the sun."; + mes "If you have any questions, please ask me."; + next; + switch(select("Ask about locations:Remove Marks from Mini-Map:Cancel")) { + case 1: + mes "[Brasilis Guide]"; + mes "Where can I guide you?"; + next; + switch(select("[ Hotel ]:[ Jungle Cable ]:[ Art Museum ]:[ Market ]:[ Verass Monument ]")) { + case 1: + mes "[Brasilis Guide]"; + mes "The Brasilis Hotel is located just above, ^FF3355+^000000."; + mes "Is there anything else I can do for you?"; + viewpoint 1,274,151,2,0xFF3355; + close; + case 2: + mes "[Brasilis Guide]"; + mes "Do you want to go through the rough jungle? You can take a "; + mes "Jungle Cable here ^CE6300+^000000."; + mes "Is there anything else I can do for you?"; + viewpoint 1,308,335,3,0xCE6300; + close; + case 3: + mes "[Brasilis Guide]"; + mes "The pride of Brasilis, the world scale Art Museum is at ^A5BAAD+^000000."; + mes "Is there anything else I can do for you?"; + viewpoint 1,137,167,4,0x00FF00; + close; + case 4: + mes "[Brasilis Guide]"; + mes "You can buy items for hunting at the Market here ^55FF33+^000000."; + mes "Is there anything else I can do for you?"; + viewpoint 1,254,248,5,0x55FF33; + close; + case 5: + mes "[Brasilis Guide]"; + mes "The iconic monument of Brasilis, the Verass Monument stands at ^3355FF+^000000."; + mes "Is there anything else I can do for you?"; + viewpoint 1,195,235,6,0x3355FF; + close; + } + end; + case 2: + mes "[Brasilis Guide]"; + mes "I'll remove all marks from your mini-map."; + mes "Is there anything else I can do for you?"; + viewpoint 0,274,151,2,0x00FF00; + viewpoint 0,308,335,3,0x00FF00; + viewpoint 0,137,167,4,0x00FF00; + viewpoint 0,254,248,5,0x00FF00; + viewpoint 0,195,235,6,0x00FF00; + close; + case 3: + mes "[Brasilis Guide]"; + mes "Wandering on your own is always the best way to explore. Anyway, take care."; + close; + } +} diff --git a/npc/pre-re/merchants/hair_style.txt b/npc/pre-re/merchants/hair_style.txt index 786329e699..4a1185b3c2 100644 --- a/npc/pre-re/merchants/hair_style.txt +++ b/npc/pre-re/merchants/hair_style.txt @@ -594,7 +594,7 @@ lhz_in02,100,143,3 script Hair Dresser#li 122,{ mes "you can be more daring than"; mes "that! Be fashionably adventurous, you fashionable adventurer~"; emotion ET_THROB; - close; + close3; } } else { @@ -917,7 +917,7 @@ lhz_in02,100,143,3 script Hair Dresser#li 122,{ mes "I'll make you the best looking"; mes "person in the entire world!"; emotion ET_BEST; - close; + close3; case 2: mes "[Prince Shammi]"; mes "Oh, did you forget which"; @@ -925,7 +925,7 @@ lhz_in02,100,143,3 script Hair Dresser#li 122,{ mes "number? By all means, please"; mes "check again! Find the one that"; mes "is perfect just for you, okay?"; - close; + close3; } } break; diff --git a/npc/pre-re/mobs/dungeons/bra_dun.txt b/npc/pre-re/mobs/dungeons/bra_dun.txt new file mode 100644 index 0000000000..3a1f8da397 --- /dev/null +++ b/npc/pre-re/mobs/dungeons/bra_dun.txt @@ -0,0 +1,64 @@ +//===== rAthena Script ======================================= +//= Brasilis Dungeon Monster Spawn Script +//===== Description: ========================================= +//= [Official Conversion based on bRO & jRO servers] +// +// Note: +// - Brasilis was introduced in Pre-Renewal only for bRO and +// jRO official servers with differences in monster stats, +// spawns and quests. +// It was added in Renewal for every other official server. +// Since we follow kRO this is disabled by default. +// You can enable it on npc/pre-re/scripts_athena.conf +//===== Changelog: =========================================== +//= 1.0 First Version [Playtester] +//============================================================ + +//bRO Pre-Renewal spawns + +//================================================== +// bra_dun01 - Behind the Waterfall +//================================================== +bra_dun01 monster Iara 2069,60,5000 +bra_dun01 monster Piranha 2070,100,5000 +bra_dun01 monster Hydra 1068,10,5000 +bra_dun01 monster Plankton 1161,10,5000 +bra_dun01 monster Marina 1141,10,5000 +bra_dun01 monster Black Mushroom 1084,10,180000,90000 + +//================================================== +// bra_dun02 - Behind the Waterfall +//================================================== +bra_dun02 monster Iara 2069,120,5000 +bra_dun02 monster Piranha 2070,80,5000 +bra_dun02 monster Hydra 1068,20,5000 +bra_dun02 monster Plankton 1161,20,5000 +bra_dun02 monster Marina 1141,10,5000 +bra_dun02 monster Black Mushroom 1084,10,180000,90000 +bra_dun02 boss_monster Boitata 2068,1,7200000,600000,1 + + +//jRO Pre-Renewal spawns + +//================================================== +// bra_dun01 - Behind the Waterfall +//================================================== +//bra_dun01 monster Kukre 1070,40,5000 +//bra_dun01 monster Hydra 1068,60,5000 +//bra_dun01 monster Marina 1141,5,5000 +//bra_dun01 monster Thara Frog 1034,40,5000 +//bra_dun01 monster Piranha 2070,50,5000 +//bra_dun01 monster Iara 2069,30,5000 +//bra_dun01 monster Headless Mule 2071,10,5000 +//bra_dun01 monster Black Mushroom 1084,5,120000,60000 + +//================================================== +// bra_dun02 - Behind the Waterfall +//================================================== +//bra_dun02 monster Hydra 1068,20,5000 +//bra_dun02 monster Piranha 2070,60,5000 +//bra_dun02 monster Iara 2069,40,5000 +//bra_dun02 monster Headless Mule 2071,40,5000 +//bra_dun02 monster Shining Plant 1083,1,1800000,900000 +//bra_dun02 monster Red Mushroom 1084,5,120000,60000 +//bra_dun02 boss_monster Boitata 2068,1,7200000,600000,1 diff --git a/npc/pre-re/mobs/fields/brasilis.txt b/npc/pre-re/mobs/fields/brasilis.txt new file mode 100644 index 0000000000..934c68b09c --- /dev/null +++ b/npc/pre-re/mobs/fields/brasilis.txt @@ -0,0 +1,48 @@ +//===== rAthena Script ======================================= +//= Brasilis Fields Monster Spawn Script +//===== Description: ========================================= +//= [Official Conversion based on bRO & jRO servers] +// +// Note: +// - Brasilis was introduced in Pre-Renewal only for bRO and +// jRO official servers with differences in monster stats, +// spawns and quests. +// It was added in Renewal for every other official server. +// Since we follow kRO this is disabled by default. +// You can enable it on npc/pre-re/scripts_athena.conf +//===== Changelog: =========================================== +//= 1.0 First Version [Playtester] +//============================================================ + +//================================================== +// Brasilis, Strange Hydras +//================================================== +brasilis,283,88,6,6 monster Strange Hydra 2081,5,30000 +brasilis,284,104,6,6 monster Strange Hydra 2081,4,30000 +brasilis,215,80,6,6 monster Strange Hydra 2081,4,30000 +brasilis,96,50,8,8 monster Strange Hydra 2081,5,30000 + +//bRO Pre-Renewal spawns + +//================================================== +// bra_fild01 - Brasilis Field +//================================================== +bra_fild01 monster Headless Mule 2071,40,5000 +bra_fild01 monster Curupira 2074,80,5000 +bra_fild01 monster Dokebi 1110,20,5000 +bra_fild01 monster Jaguar 2072,10,5000 +bra_fild01 monster Savage 1166,20,5000 +bra_fild01 monster Toucan 2073,10,5000 +bra_fild01 monster Red Mushroom 1085,3,360000,180000 + +//jRO Pre-Renewal spawns + +//================================================== +// bra_fild01 +//================================================== +//bra_fild01 monster Savage 1166,10,5000 +//bra_fild01 monster Dokebi 1110,20,5000 +//bra_fild01 monster Curupira 2074,50,5000 +//bra_fild01 monster Jaguar 2072,35,5000 +//bra_fild01 monster Toucan 2073,40,5000 +//bra_fild01 monster Red Mushroom 1085,5,120000,60000 diff --git a/npc/pre-re/scripts_athena.conf b/npc/pre-re/scripts_athena.conf index 38f3165d31..1f1e48fc71 100644 --- a/npc/pre-re/scripts_athena.conf +++ b/npc/pre-re/scripts_athena.conf @@ -98,3 +98,34 @@ npc: npc/pre-re/quests/quests_nameless.txt npc: npc/pre-re/quests/quests_niflheim.txt npc: npc/pre-re/quests/the_sign_quest.txt npc: npc/pre-re/quests/quests_veins.txt + +// - Disable Brasilis by default -------------------------------- +// DO NOT COMMENT!!! +// Instead, follow the instructions below. +// -------------------------------------------------------------- +delnpc: npc/cities/brasilis.txt +delnpc: npc/quests/quests_brasilis.txt +delnpc: npc/warps/cities/brasilis.txt +delnpc: npc/warps/dungeons/bra_dun.txt +delnpc: npc/warps/fields/bra_fild.txt + +// -------------------- Pre-Renewal Brasilis -------------------- +// Brasilis was introduced in Pre-Renewal only for bRO and +// jRO official servers with differences in monster stats, +// spawns and quests. +// It was added in Renewal for every other official server. +// Since we follow kRO this is disabled by default. +// +// Uncomment the following NPC scripts to enable bRO/jRO's +// Pre-Renewal version of Brasilis. +// You also need to uncomment the data from file +// mob_summon.yml in /db/import/ folder +//npc: npc/cities/brasilis.txt +//npc: npc/quests/quests_brasilis.txt +//npc: npc/warps/cities/brasilis.txt +//npc: npc/warps/dungeons/bra_dun.txt +//npc: npc/warps/fields/bra_fild.txt +//npc: npc/pre-re/cities/brasilis.txt +//npc: npc/pre-re/guides/guides_brasilis.txt +//npc: npc/pre-re/mobs/dungeons/bra_dun.txt +//npc: npc/pre-re/mobs/fields/brasilis.txt diff --git a/npc/quests/bard_quest.txt b/npc/quests/bard_quest.txt index 52eab8c02b..c4d7d0249b 100644 --- a/npc/quests/bard_quest.txt +++ b/npc/quests/bard_quest.txt @@ -157,19 +157,19 @@ geffen,132,38,3 script Bard#2 51,{ next; mes "[Errende]"; mes "I hope that you'll always remain honest and respectful towards other people, and that you continue to ignore greed for fortune or power."; - goto L_End; + close3; } else if (gef_bard_q > 11 && gef_bard_q < 14) { cutin "bard_eland02",2; mes "[Errende]"; mes "It seems you haven't found it yet. Well, take your time, I can wait as long as you want. It doesn't really bore me, since waiting seems to be a part of my profession."; - goto L_End; + close3; } else if (gef_bard_q == 11) { cutin "bard_eland01",2; mes "[Errende]"; mes "Mr. Skezti has a small book store on the book street at the right side of Mineta in Juno. If you show him the seal, he'll help you out."; - goto L_End; + close3; } else if (gef_bard_q == 10) { cutin "bard_eland01",2; @@ -199,7 +199,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "show him the Seal of Friendship."; mes "Good luck, now~"; set gef_bard_q,11; - goto L_End; + close3; } else if (gef_bard_q == 20) { cutin "bard_eland03",2; @@ -249,7 +249,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "[Errende]"; mes "Waaah, wah~"; mes "You can't just ignore me like that! Where's your sense of merriment, your sense of romance?"; - goto L_End; + close3; } } else if (gef_bard_q == 27) { @@ -295,7 +295,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "I beseech you, if you meet him, please ask him of the 8th love and inform me of that lyric immediately~"; set gef_bard_q,22; } - goto L_End; + close3; } else if (gef_bard_q == 26) { cutin "bard_eland01",2; @@ -349,17 +349,17 @@ geffen,132,38,3 script Bard#2 51,{ mes "in advance~"; set gef_bard_q,24; } - goto L_End; + close3; } else if (.@inputstr$ == "Gunther") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; - goto L_End; + close3; } else if (.@inputstr$ == "Gunther Doubleharmony") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; - goto L_End; + close3; } else if (.@inputstr$ == "Errende") { cutin "bard_eland04",2; @@ -368,7 +368,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "If I did, why would"; mes "I not know what"; mes "this song is about?"; - goto L_End; + close3; } else { mes "[Errende]"; @@ -381,7 +381,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "How could I forget"; mes "the 8th love?"; set gef_bard_q,26; - goto L_End; + close3; } } else if (gef_bard_q == 25) { @@ -427,7 +427,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "heart wrenching song."; mes "But at what cost to your soul?^000000"; } - goto L_End; + close3; } else { cutin "bard_eland01",2; @@ -438,7 +438,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "Noboooody looooves meee"; mes "Friends foooooor never..."; mes "Ooooooooh wah!^000000"; - goto L_End; + close3; } } else if (gef_bard_q == 24) { @@ -464,7 +464,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "Once again,"; mes "thank you so much"; mes "for your help."; - goto L_End; + close3; } else if (gef_bard_q == 22) { mes "[Errende]"; @@ -480,7 +480,7 @@ geffen,132,38,3 script Bard#2 51,{ next; mes "[Errende]"; mes "Please ask ^483D8BGunther^000000 about the ^483D8B8th love^000000 in ^483D8BAt One, I Fall in Love^000000. Thank you in advance."; - goto L_End; + close3; } else if (gef_bard_q == 23) { cutin "bard_eland02",2; @@ -570,19 +570,19 @@ geffen,132,38,3 script Bard#2 51,{ mes "in advance~"; set gef_bard_q,24; } - goto L_End; + close3; } else if (.@inputstr$ == "Gunther") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; set gef_bard_q,26; - goto L_End; + close3; } else if (.@inputstr$ == "Gunther Doubleharmony") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; set gef_bard_q,26; - goto L_End; + close3; } else if (.@inputstr$ == "Errende") { cutin "bard_eland04",2; @@ -592,7 +592,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "I not know what this"; mes "song is about?"; set gef_bard_q,26; - goto L_End; + close3; } else { mes "[Errende]"; @@ -605,7 +605,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "How could I forget"; mes "the 8th love?"; set gef_bard_q,26; - goto L_End; + close3; } } else if (gef_bard_q == 21) { @@ -655,7 +655,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "I beseech you, if you meet him, please ask him of the 8th love and inform me of that lyric immediately~"; set gef_bard_q,2; } - goto L_End; + close3; } else if (gef_bard_q == 6) { cutin "bard_eland04",2; @@ -699,23 +699,23 @@ geffen,132,38,3 script Bard#2 51,{ mes "I'll pay you back somehow! Thank you for your trouble in advance~"; set gef_bard_q,4; } - goto L_End; + close3; } else if (.@inputstr$ == "Gunther") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; - goto L_End; + close3; } else if (.@inputstr$ == "Gunther Doubleharmony") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; - goto L_End; + close3; } else if (.@inputstr$ == "Errende") { cutin "bard_eland04",2; mes "[Errende]"; mes "Surely you jest! If I did, why would I not know what this song is about?"; - goto L_End; + close3; } else { mes "[Errende]"; @@ -727,7 +727,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "How could I forget"; mes "the 8th love?"; set gef_bard_q,6; - goto L_End; + close3; } } else if (gef_bard_q == 5) { @@ -764,7 +764,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "heart wrenching song."; mes "But at what cost to your soul?^000000"; } - goto L_End; + close3; } else { cutin "bard_eland01",2; @@ -775,7 +775,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "Noboooody looooves meee"; mes "Friends foooooor never..."; mes "Ooooooooooh wah!^000000"; - goto L_End; + close3; } } else if (gef_bard_q == 4) { @@ -800,7 +800,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "Once again,"; mes "thank you so much"; mes "for your help."; - goto L_End; + close3; } else if (gef_bard_q == 2) { cutin "bard_eland04",2; @@ -813,7 +813,7 @@ geffen,132,38,3 script Bard#2 51,{ next; mes "[Errende]"; mes "Please ask ^483D8BGunther^000000 about the ^483D8B8th love^000000 in ^483D8BAt One, I Fall in Love^000000. Thank you in advance."; - goto L_End; + close3; } else if (gef_bard_q == 3) { cutin "bard_eland02",2; @@ -898,27 +898,27 @@ geffen,132,38,3 script Bard#2 51,{ mes "I'll pay you back somehow! Thank you for your trouble in advance~"; set gef_bard_q,4; } - goto L_End; + close3; } else if (.@inputstr$ == "Gunther") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; set gef_bard_q,6; - goto L_End; + close3; } else if (.@inputstr$ == "Gunther Doubleharmony") { mes "[Errende]"; mes "Gunther? I don't think he would do this. He always puts lines in his songs like 'doubleharmony for you.' Plus, he's too silly for that."; set gef_bard_q,6; - goto L_End; + close3; } else if (.@inputstr$ == "Errende") { cutin "bard_eland04",2; mes "[Errende]"; mes "Surely you jest! If I did, why would I not know what this song is about?"; set gef_bard_q,6; - goto L_End; + close3; } else { mes "[Errende]"; @@ -930,7 +930,7 @@ geffen,132,38,3 script Bard#2 51,{ mes "How could I forget"; mes "the 8th love?"; set gef_bard_q,6; - goto L_End; + close3; } } else if (gef_bard_q == 1) { @@ -993,11 +993,7 @@ geffen,132,38,3 script Bard#2 51,{ } } - -L_End: - close2; - cutin "",255; - end; + close3; // SubRoutine for 5 similiar dialogues of the quest @@ -1114,7 +1110,7 @@ S_StorySong: mes "[Errende]"; mes "Oh, how disappointing. But promise me that you will drop by later, so that we can share stories and merriment."; } - goto L_End; + close3; case 2: .@num = getarg(0); @@ -1149,7 +1145,7 @@ S_StorySong: mes "My apologies,"; mes "But I cannot offer my services for free. Even a Bard needs zeny to live, wouldn't you agree?"; } - goto L_End; + close3; case 2: cutin "bard_eland03",2; @@ -1218,7 +1214,7 @@ S_StorySong: mes "may never know"; mes "with certainty."; } - goto L_End; + close3; } else if (.@random == 2) { @@ -1321,7 +1317,7 @@ S_StorySong: if(gef_bard_q==1) set gef_bard_q,7; if(gef_bard_q==21) set gef_bard_q,27; } - goto L_End; + close3; } mes "^483D8BA good Bard sings"; @@ -1345,7 +1341,7 @@ S_StorySong: mes "[Errende]"; mes "H-how can you say such a thing, "+ @name$ +"? Have you ever been a Bard before? It's difficult to come up with fresh, original melodies!"; } - goto L_End; + close3; case 3: cutin "bard_eland01",2; @@ -1355,7 +1351,7 @@ S_StorySong: mes "enjoyed when you"; mes "are in the mood for it."; mes "Please come again."; - goto L_End; + close3; } @@ -1364,7 +1360,7 @@ S_StorySong: mes "[Errende]"; mes "Hmm~?"; mes "Well, alright. Though, listening to a good story or cheerful song can really do you some good. Alright then, see you later."; - goto L_End; + close3; } } diff --git a/npc/quests/cooking_quest.txt b/npc/quests/cooking_quest.txt index 6701ac0e40..6666949e95 100644 --- a/npc/quests/cooking_quest.txt +++ b/npc/quests/cooking_quest.txt @@ -61,7 +61,7 @@ mes "cooking when Novices"; mes "like yourself are running"; mes "around here like children."; - close; + close3; } cutin "orleans_1",0; mes "[Charles Orleans]"; diff --git a/npc/re/quests/quests_brasilis.txt b/npc/quests/quests_brasilis.txt similarity index 98% rename from npc/re/quests/quests_brasilis.txt rename to npc/quests/quests_brasilis.txt index 604c733379..b0de102852 100644 --- a/npc/re/quests/quests_brasilis.txt +++ b/npc/quests/quests_brasilis.txt @@ -1,12 +1,6 @@ //===== rAthena Script ======================================= //= Brasilis Quests -//===== By =================================================== -//= L0ne_W0lf -//===== Version ============================================== -//= 1.3 -//===== Compatible With ====================================== -//= rAthena Project -//===== Description ========================================== +//===== Description: ========================================= //= [Official Conversion] //= Lost Puppies (Repeatable, 24 hours.) //= Suspicious Beach (Repeatable, 24 hours. iRO/cRO version.) @@ -14,13 +8,14 @@ //= Brasilis Water Lily Quest //= Brasilis Dungeon Access Quest //= Iara (Buff reward. Repeatable, 24 hours.) -//===== Comments ============================================= -//= 1.0 First version. -//= 1.1 Hydra Ball (12408) +//===== Changelog: =========================================== +//= 1.0 First version. [L0ne_W0lf] +//= 1.1 Hydra Ball (12408). [og2] //= 1.2 Optimization. [Euphy] //= 1.2a Added 'consumeitem' command. [Euphy] //= 1.3 Added VIP features and fixed some EXP values. [Euphy] //= 1.3a Clean-up. [Capuche] +//= 1.4 Added pre-renewal differences [Daegaladh] //============================================================ // Lost Puppies :: dogdog.sc @@ -59,10 +54,12 @@ brasilis,297,307,5 script Angelo#br 1_M_04,{ erasequest 9031; setquest 9032; specialeffect2 EF_ASSUMPTIO; - consumeitem 607; //Yggdrasilberry - .@rand = rand(1,10); - if (.@rand > 4 && .@rand < 9) getitem 504,2; //White_Potion - else if (.@rand > 8) getitem 608,1; //Seed_Of_Yggdrasil + if (checkre(0)) { + consumeitem 607; //Yggdrasilberry + .@rand = rand(1,10); + if (.@rand > 4 && .@rand < 9) getitem 504,2; //White_Potion + else if (.@rand > 8) getitem 608,1; //Seed_Of_Yggdrasil + } close; } mes "[Angelo]"; @@ -229,11 +226,15 @@ brasilis,192,133,6 script Lucia#brasilis 4_F_BRZ_WOMAN,{ //recall_completequest 9029; if (.@nQState2 > -1) erasequest 9029; setquest 9029; - consumeitem 607; //Yggdrasilberry + if (checkre(0)) + consumeitem 607; //Yggdrasilberry consumeitem 12070; //Luk_Dish05 consumeitem 12055; //Vit_Dish05 consumeitem 12065; //Dex_Dish05 - getitem 11502,3; //Light_Blue_Pot + if (checkre(0)) + getitem 11502,3; //Light_Blue_Pot + else + getitem 505,5; //Blue_Potion close; } else { @@ -410,10 +411,12 @@ brasilis,187,162,5 script Candy Maker 4_M_BRZ_MAN1,{ brazil_gua = 11; completequest 2200; getitem 12414,1; //Guarana_Candy - if (VIP_SCRIPT && vip_status(VIP_STATUS_ACTIVE)) - getexp 105000,15000; - else - getexp 70000,10000; + if (checkre(0)) { + if (VIP_SCRIPT && vip_status(VIP_STATUS_ACTIVE)) + getexp 105000,15000; + else + getexp 70000,10000; + } close; } else if (brazil_gua == 11) { @@ -1030,9 +1033,9 @@ brasilis,203,286,3 script Botanist Karmen#bra 4_F_HUWOMAN,{ brazil_regia = 10; completequest 2207; if (VIP_SCRIPT && vip_status(VIP_STATUS_ACTIVE)) - getexp 75000,15000; + getexp 75000, checkre(0)?15000:0; else - getexp 50000,10000; + getexp 50000, checkre(0)?10000:0; close; } else { @@ -2855,9 +2858,13 @@ bra_dun02,157,74,5 script Iara#nk 4_F_BRZ_WOMAN,2,2,{ mes "But... I think that the curse has been with me too long."; mes "Get away from me quickly."; delitem 11517,1; //Puri_Potion - percentheal 100,100; - sc_start SC_INCFLEE,3600000,20; - sc_start SC_INCCRI,3600000,10; + if (checkre(0)) { + percentheal 100,100; + sc_start SC_INCFLEE,3600000,20; + sc_start SC_INCCRI,3600000,10; + } + else + sc_start SC_INCCRI,3600000,7; consumeitem 12043; //Str_Dish03 consumeitem 12063; //Dex_Dish03 consumeitem 12058; //Agi_Dish03 diff --git a/npc/quests/quests_rachel.txt b/npc/quests/quests_rachel.txt index 43e6e51806..fbb5b93c44 100644 --- a/npc/quests/quests_rachel.txt +++ b/npc/quests/quests_rachel.txt @@ -3816,7 +3816,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "wouldn't come here to pray..."; mes "Well, I hope you enjoy your"; mes "time here, adventurer."; - goto L_End; + close3; } mes "[Priestess Nemma]"; mes "Oh! I'm glad to see that"; @@ -3869,7 +3869,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "all your journeys. May the"; mes "grace of the goddess always"; mes "support us in all that we do~"; - goto L_End; + close3; } mes "[Priestess Nemma]"; mes "Great! How much would you"; @@ -3898,7 +3898,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "protecting you, wherever you go~"; break; } - goto L_End; + close3; } else { cutin "ra_nemma03",2; @@ -3939,7 +3939,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "protecting you, wherever you go~"; break; } - goto L_End; + close3; case 2: mes "[Priestess Nemma]"; mes "Oh! If you'd like some"; @@ -3968,7 +3968,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "Oh, how sweet of you~"; break; } - goto L_End; + close3; } } else { @@ -3976,7 +3976,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ cutin "ra_nemma01",2; mes "[Priestess Nemma]"; mes "Welcome to our temple!"; - goto L_End; + close3; } if (ra_tem_q < 1) { mes "[Priestess Nemma]"; @@ -4009,7 +4009,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "to go inside. ^333333*Sob*^000000 P-Panno!"; mes "Panno, I neeeed heeeeelp~!"; set ra_tem_q,1; - goto L_End; + close3; } else if ((ra_tem_q >= 1) && (ra_tem_q < 10)) { mes "[Priestess Nemma]"; @@ -4024,7 +4024,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "Panno would know"; mes "what to do... I think."; mes "Ooh, Panno, help me!"; - goto L_End; + close3; } else if (ra_tem_q == 10) { cutin "ra_nemma04",2; @@ -4050,7 +4050,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "I'm outside. What if"; mes "the gate locks up again?"; mes "Oooh, what should I do?!"; - goto L_End; + close3; } else if (ra_tem_q == 11) { emotion ET_DELIGHT; @@ -4062,7 +4062,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "longer asking for donations,"; mes "but you can still redeem your"; mes "Lottery Tickets inside, okay?"; - goto L_End; + close3; } else if (ra_tem_q == 12) { mes "[Priestess Nemma]"; @@ -4089,7 +4089,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "like, ^FF000020 of them^000000! Thank"; mes "you thank you thank you!"; set ra_tem_q,13; - goto L_End; + close3; } else if (ra_tem_q == 13) { mes "[Priestess Nemma]"; @@ -4124,7 +4124,7 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "to play! Hm, maybe"; mes "our pope would like"; mes "to see these too?"; - goto L_End; + close3; } cutin "ra_nemma02",2; mes "[Priestess Nemma]"; @@ -4143,20 +4143,16 @@ ra_temple,116,174,3 script Nemma#ra_temple 920,{ mes "have much to pay you"; mes "back with, anyway~"; } - goto L_End; + close3; } else { cutin "ra_nemma01",2; mes "[Priestess Nemma]"; mes "Welcome to our temple!"; } - goto L_End; + close3; } - -L_End: - close2; - cutin "",255; - end; + close3; S_Donate: .@num = getarg(0); @@ -6329,7 +6325,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "everything I know."; mes "Remember to keep"; mes "quiet about what I said."; - goto L_End; + close3; } } else if (ra_tem_q < 2) { @@ -6358,7 +6354,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "time, so please visit"; mes "me at your leisure."; mes "Go with Freya."; - goto L_End; + close3; case 2: cutin "ra_fano01",2; @@ -6397,14 +6393,14 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "side of the hallway. However,"; mes "you can only enter if you've"; mes "been permitted beforehand."; - goto L_End; + close3; case 3: mes "[Priestess Panno]"; mes "......................"; mes "No chit-chat"; mes "inside the temple."; - goto L_End; + close3; } } else if (ra_tem_q == 10) { @@ -6439,7 +6435,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "time, so please visit"; mes "me at your leisure."; mes "Go with Freya."; - goto L_End; + close3; case 2: cutin "ra_fano01",2; @@ -6478,7 +6474,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "side of the hallway. However,"; mes "you can only enter if you've"; mes "been permitted beforehand."; - goto L_End; + close3; case 3: cutin "ra_fano02",2; @@ -6525,7 +6521,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "[Priestess Panno]"; mes "........."; set ra_tem_q,11; - goto L_End; + close3; } } else if (ra_tem_q == 11) { @@ -6660,7 +6656,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "Excuse me now, I need"; mes "to get back to work."; set ra_tem_q,12; - goto L_End; + close3; } cutin "ra_fano02",2; mes "[Priestess Panno]"; @@ -6668,7 +6664,7 @@ ra_temin,170,46,3 script Panno#rachel 920,{ mes "Behave yourself, and"; mes "respect those who have"; mes "come here just to worship."; - goto L_End; + close3; L_Lottery: if(checkweight(607,1) == 0){ @@ -6680,7 +6676,7 @@ L_Lottery: mes "something large, unwieldy"; mes "and heavy? Put your junk"; mes "away in Storage first."; - goto L_End; + close3; } mes "[Priestess Panno]"; mes "Here we go"; @@ -6716,7 +6712,7 @@ L_Lottery: else if (.@bonus_donate > 5 && .@bonus_donate < 11) getitem 518,1; //Honey 5% else if (.@bonus_donate > 0 && .@bonus_donate < 6) getitem 526,1; //Royal Jelly 5% else getitem 547,1; //Condensed White Potion 39% - goto L_End; + close3; } mes "[Priestess Panno]"; mes "You..."; @@ -6736,7 +6732,7 @@ L_Lottery: cutin "ra_fano03",2; mes "[Priestess Panno]"; mes "May Freya be with you."; - goto L_End; + close3; L_End: close2; diff --git a/npc/quests/seals/mjolnir_seal.txt b/npc/quests/seals/mjolnir_seal.txt index 63062018c4..e8a296cffa 100644 --- a/npc/quests/seals/mjolnir_seal.txt +++ b/npc/quests/seals/mjolnir_seal.txt @@ -284,7 +284,7 @@ prontera,124,297,3 script Tialfi 706,{ next; mes "[Tialfi]"; mes "I think we'd better wait and see what's happening. Someone will deliver the news to us. Though, I am unsure of whether or not it will be good news or bad..."; - close; + close3; } else if (BaseLevel < 70) { cutin "god_tialpi02",2; diff --git a/npc/quests/the_sign_quest.txt b/npc/quests/the_sign_quest.txt index 36f81e78ec..5d920a5a53 100644 --- a/npc/quests/the_sign_quest.txt +++ b/npc/quests/the_sign_quest.txt @@ -3093,13 +3093,11 @@ OnTouch_: end; } -/* Currently broken. prt_maze02,25,161,0 script #music -1,7,7,{ OnTouch_: - soundeffect "effect\\¼®¾çÀÇ ¾î½Ø½Å.wav",1; + soundeffect "effect\\ ؽ.wav",1; end; } -*/ prt_maze02,132,132,0 script #skill -1,{ OnEnable: diff --git a/npc/re/cities/alberta.txt b/npc/re/cities/alberta.txt index b7454cee16..0140183fb3 100644 --- a/npc/re/cities/alberta.txt +++ b/npc/re/cities/alberta.txt @@ -21,6 +21,10 @@ alberta,246,74,3 duplicate(Sea_Captain_amatsu) Sea Captain#ama1 709 //============================================================ alberta,246,29,3 duplicate(Aibakthing_ayothaya) Aibakthing#ayo 843 +// cities/brasilis.txt +//============================================================ +alberta,246,82,3 duplicate(Crewman_bra2) Crewman#bra2 100 + // cities/gonryun.txt //============================================================ alberta,246,62,3 duplicate(Kunlun_Envoy_gonryun) Kunlun Envoy#gon 776 diff --git a/npc/re/cities/dicastes.txt b/npc/re/cities/dicastes.txt index 606a4f86d0..0e861ff76d 100644 --- a/npc/re/cities/dicastes.txt +++ b/npc/re/cities/dicastes.txt @@ -84,8 +84,8 @@ dicastes01,234,158,0 script Training Galten#a 450,{ mes "if I keep up with my training every day."; close; } - mes " "; - mes " "; + mes " "; + mes " "; next; mes "Don't know what it means."; close; @@ -130,7 +130,7 @@ dicastes01,248,129,0 script Training Galten#d 450,{ close; } mes " "; - mes " "; + mes " "; next; mes "Don't know what it means."; close; diff --git a/npc/re/custom/lasagna/lasagna_npcs.txt b/npc/re/custom/lasagna/lasagna_npcs.txt index ad53bacf90..058a208ed2 100644 --- a/npc/re/custom/lasagna/lasagna_npcs.txt +++ b/npc/re/custom/lasagna/lasagna_npcs.txt @@ -323,7 +323,7 @@ lasa_fild01,60,322,3 script Vigilante Aglio#doram02 4_DR_AGLIO,{ cutin "tutorial02.BMP",4; mes "^4d4dff!- Notice -!^000000"; mes "^4d4dffCheck out the quest details by pressing the shortcut key [Alt+U],^000000 or through the Quest icon found in the menu tray.^000000"; - close; + close3; } mes "[Vigilante Aglio]"; mes "Whoa, you're good!"; diff --git a/npc/re/custom/lasagna/warps.txt b/npc/re/custom/lasagna/warps.txt deleted file mode 100644 index 1f598a60fe..0000000000 --- a/npc/re/custom/lasagna/warps.txt +++ /dev/null @@ -1,45 +0,0 @@ -//===== rAthena Script ======================================= -//= Lasagna Warps -//===== Changelogs: ========================================== -//= 1.0 First Version. [Capuche] -//============================================================ - -lasa_fild02,348,244,0 warp lasa_fild02#lasa_dun01 1,1,lasa_dun01,24,143 -lasa_dun01,18,143,0 warp lasa_dun01#lasa_fild02 1,1,lasa_fild02,344,243 - -lasa_dun_q,190,14,0 warp lasa_dun_q#lasa_dun01 1,1,lasa_dun01,152,98 -lasa_dun01,157,98,0 warp lasa_dun01#lasa_dun02 1,1,lasa_dun02,22,171 -lasa_dun02,18,171,0 warp lasa_dun02#lasa_dun01 1,1,lasa_dun01,153,98 - -lasa_dun02,146,58,0 warp lasa_dun02#lasa_dun03 1,1,lasa_dun03,190,18 -lasa_dun03,190,15,0 warp lasa_dun03#lasa_dun02 1,1,lasa_dun02,146,54 - -lasa_fild01,134,381,0 warp lasa_fild01#lasagna_1 2,2,lasagna,153,58 -lasagna,150,54,0 warp lasagna#lasa_fild01_1 2,2,lasa_fild01,131,378 - -lasa_fild01,341,375,0 warp lasa_fild01#lasagna_2 2,2,lasagna,327,56 -lasagna,327,51,0 warp lasagna#lasa_fild01_2 2,2,lasa_fild01,344,371 - -lasagna,358,91,0 warp lasagna#lasa_fild02 2,2,lasa_fild02,20,98 -lasa_fild02,16,98,0 warp lasa_fild02#lasagna 2,2,lasagna,355,92 - -lasa_in01,159,61,0 warp lasa_in01#lasagna 1,1,lasagna,68,202 - -// Boat -conch_in,60,61,0 warp2 warp_conch_in#out 1,1,lasagna,206,323 -conch_in,51,60,0 warp2 warp_conch_in#A_B 1,1,conch_in,31,60 -conch_in,34,60,0 warp2 warp_conch_in#B_A 1,1,conch_in,53,59 -conch_in,63,53,0 warp2 warp_conch_in#C_D 1,1,conch_in,63,33 -conch_in,63,35,0 warp2 warp_conch_in#D_C 1,1,conch_in,64,55 -conch_in,64,66,0 warp2 warp_conch_in#E_F 1,1,conch_in,63,89 -conch_in,63,87,0 warp2 warp_conch_in#F_E 1,1,conch_in,63,64 -conch_in,101,53,0 warp2 warp_conch_in#G_H 1,1,conch_in,101,33 -conch_in,101,35,0 warp2 warp_conch_in#H_G 1,1,conch_in,102,55 -conch_in,101,66,0 warp2 warp_conch_in#I_J 1,1,conch_in,101,89 -conch_in,102,87,0 warp2 warp_conch_in#J_I 1,1,conch_in,101,64 -conch_in,137,53,0 warp2 warp_conch_in#K_L 1,1,conch_in,139,33 -conch_in,139,35,0 warp2 warp_conch_in#L_K 1,1,conch_in,138,55 -conch_in,137,66,0 warp2 warp_conch_in#M_N 1,1,conch_in,139,89 -conch_in,140,87,0 warp2 warp_conch_in#N_M 1,1,conch_in,137,64 -conch_in,142,60,0 warp2 warp_conch_in#O_P 1,1,conch_in,162,61 -conch_in,159,61,0 warp2 warp_conch_in#P_O 1,1,conch_in,140,59 diff --git a/npc/re/guides/guides_brasilis.txt b/npc/re/guides/guides_brasilis.txt index 8f330a620e..c63bae69d4 100644 --- a/npc/re/guides/guides_brasilis.txt +++ b/npc/re/guides/guides_brasilis.txt @@ -1,19 +1,13 @@ -//===== rAthena Script ======================================= +//===== rAthena Script ======================================= //= Brasilis Guide -//===== By: ================================================== -//= L0ne_W0lf -//===== Current Version: ===================================== -//= 1.2 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= [Official Conversion] +//===== Description: ========================================= +//= [Official Conversion based on bRO & jRO servers] //= Guide for the city of Brasilis. -//===== Additional Comments: ================================= -//= 1.0 First Version, Renewal guide. -//= 1.1 Added a missing close. +//===== Changelog: =========================================== +//= 1.0 First Version, Renewal guide. [L0ne_W0lf] +//= 1.1 Added a missing close. [L0ne_W0lf] //= 1.2 Navigation system update. [Euphy] -//============================================================ +//============================================================ brasilis,219,97,3 script Brasilis Guide 478,{ mes "[Brasilis Guide]"; @@ -59,6 +53,7 @@ brasilis,219,97,3 script Brasilis Guide 478,{ viewpoint 1,195,235,6,0x3355FF; close; } + end; case 2: mes "[Brasilis Guide]"; mes "I'll remove all marks from your mini-map."; diff --git a/npc/re/guild3/agit_main_te.txt b/npc/re/guild3/agit_main_te.txt index 7b66736840..d3121a0e45 100644 --- a/npc/re/guild3/agit_main_te.txt +++ b/npc/re/guild3/agit_main_te.txt @@ -438,7 +438,7 @@ function GuardianData; if (select( "Fire","Cancel" ) == 2) { mes "[ Hired Kafra Employee ]"; mes "I'll work hard for you... Thank you!"; - close; + close3; } mes "[ Hired Kafra Employee ]"; mes "Oh, my goodness! This is nonsense!"; diff --git a/npc/re/instances/CharlestonCrisis.txt b/npc/re/instances/CharlestonCrisis.txt index 0d8243d693..f04a905559 100644 --- a/npc/re/instances/CharlestonCrisis.txt +++ b/npc/re/instances/CharlestonCrisis.txt @@ -727,11 +727,11 @@ OnTimer300: } 1@mcd,141,214,5 script Charleston 2#1 4_F_CHARLESTON02,{ - cutin "dalle01.bmp",2; if (is_party_leader() == false) { + cutin "dalle01.bmp",2; mes "[Charleston 1]"; mes "Please let me talk to your leader about the supplementation of the factory."; - close; + close3; } if ('ep15_1_mcd01 > 11) end; diff --git a/npc/re/instances/OldGlastHeim.txt b/npc/re/instances/OldGlastHeim.txt index 07540849e9..62fd90c0ce 100644 --- a/npc/re/instances/OldGlastHeim.txt +++ b/npc/re/instances/OldGlastHeim.txt @@ -163,7 +163,7 @@ glast_01,204,273,5 script Hugin 4_M_SAGE_C,{ 1@gl_k,206,79,0 warp #3Control2 2,2,1@gl_k,195,79 1@gl_k,227,216,0 warp #4Control 2,2,1@gl_k,215,216 1@gl_k,222,216,0 warp #4Control2 2,2,1@gl_k,233,216 -1@gl_k,150,284,0 warp #2F Entrance 2,2,2@gl_k,150,46 +// 1@gl_k,150,284,0 warp #2F Entrance 2,2,2@gl_k,150,46 2@gl_k,149,32,0 warp #1 Control 2,2,1@gl_k,150,270 2@gl_k,145,123,0 warp #22 Control 2,2,2@gl_k,126,123 2@gl_k,136,122,0 warp #22 Control2 2,2,2@gl_k,150,116 @@ -188,8 +188,8 @@ glast_01,204,273,5 script Hugin 4_M_SAGE_C,{ next; if (select( "Omit moderately.", "Appreciate everything." ) == 1) { cutin "GL_BARMUND1.bmp",2; - mes "[Barmund]"; - mes "Have I seen you " + strcharinfo(0) + ""; + mes "[Varmundt]"; + mes "I've seen you, " + strcharinfo(0) + "."; mes "I'm sure I can trust you. Let's leave right away."; close2; cutin "",255; @@ -1073,8 +1073,13 @@ OnTimer5000: close3; } -// note: never hidden 1@gl_k,156,258,3 script Varmundt#2 4_M_BARMUND,{ + if ('step < 6) + end; + if (checkweight(6607,1, 6608,1) == 0) { + mes "^ff0000It seems like you have too many types or weights of items. Please organize your inventory.^000000"; + close; + } cutin "gl_barmund1",2; mes "[Varmundt]"; if (checkquest(12318,HUNTING) != 2) { @@ -1216,10 +1221,24 @@ OnMyMobDead: enablenpc instance_npcname("Varmundt#21"); donpcevent instance_npcname("#ghmemorialmob05") + "::OnStart"; disablenpc instance_npcname("#ghmemorialmob04"); + 'step = 6; } end; } +1@gl_k,150,284,0 script #2F Entrance WARPNPC,2,2,{ + end; +OnTouch: + if (checkquest(12318,HUNTING) == 2) { + mes "^0000ffIt seems that you did not receive a reward for clearing the first floor. Talk to Varmundt and receive your reward.^000000"; + close2; + warp 'map_name$[0],156,256; + end; + } + warp 'map_name$[1],150,46; + end; +} + // Floor 2 //============================================================ 2@gl_k,148,67,1 script Heinrich#21 4_M_HEINRICH,{ @@ -1246,9 +1265,9 @@ OnEffect: 2@gl_k,150,66,0 script #Servanton HIDDEN_WARP_NPC,7,7,{ end; OnTouch_: - if ('step != 5) + if ('step != 6) end; - 'step = 6; + 'step = 7; disablenpc(); if ('mode == 1) donpcevent instance_npcname("#talkinstance5") + "::OnStart"; @@ -1372,16 +1391,18 @@ OnTouch_: disablenpc(); .@hidden_name$ = strnpcinfo(2); .@event_type = atoi( charat(.@hidden_name$,4) ); + .@event_number = atoi( charat(.@hidden_name$,6) ); if (.@event_type == 2) - .@label$ = instance_npcname("#ghmemorialmob05") + "::OnMyMobDead"; + .@event$ = instance_npcname("#ghmemorialmob05") + "::OnMyMobDead" + .@event_number; // left side else - .@label$ = instance_npcname("#ghmemorialmob06") + "::OnMyMobDead"; + .@event$ = instance_npcname("#ghmemorialmob06") + "::OnMyMobDead" + .@event_number; // right side + killmonster 'map_name$[1], .@event$; getmapxy .@map$,.@x,.@y, BL_NPC; - monster .@map$,.@x,.@y, "Corrupted Palace Guard", 2468,1, .@label$; - monster .@map$,.@x,.@y, "Archer of Death", 2469,1, .@label$; - monster .@map$,.@x,.@y, "Corrupted Abysmal Knight", 2470,1, .@label$; - monster .@map$,.@x,.@y, "Suffered Khalitzburg", 2471,1, .@label$; - monster .@map$,.@x,.@y, "Bloody Knight", 2472,1, .@label$; + monster .@map$,.@x,.@y, "Corrupted Palace Guard", 2468,1, .@event$; + monster .@map$,.@x,.@y, "Archer of Death", 2469,1, .@event$; + monster .@map$,.@x,.@y, "Corrupted Abysmal Knight", 2470,1, .@event$; + monster .@map$,.@x,.@y, "Suffered Khalitzburg", 2471,1, .@event$; + monster .@map$,.@x,.@y, "Bloody Knight", 2472,1, .@event$; initnpctimer; end; OnTimer30000: @@ -1417,7 +1438,13 @@ OnStart: enablenpc instance_npcname("#ogh_2-" + .@i); end; -OnMyMobDead: +OnMyMobDead1: +OnMyMobDead2: +OnMyMobDead3: +OnMyMobDead4: +OnMyMobDead5: +OnMyMobDead6: +OnMyMobDead7: if (mobcount('map_name$[1], instance_npcname("#ghmemorialmob05") + "::OnBossDead") > 0) // Prevent boss re-spawn end; if ('mode == 2) // Higher (but unknown) spawn rate in fast mode @@ -1445,7 +1472,9 @@ OnBossDead: for ( .@i = 1; .@i <= 7; .@i++ ) donpcevent instance_npcname("#ogh_2-" + .@i) + "::OnStop"; - killmonster 'map_name$[1], instance_npcname("#ghmemorialmob05") + "::OnMyMobDead"; + .@npc_name$ = instance_npcname("#ghmemorialmob05"); + for ( .@i = 1; .@i <= 7; .@i++ ) + killmonster 'map_name$[1], .@npc_name$ + "::OnMyMobDead" + .@i; end; } @@ -1506,6 +1535,13 @@ OnStart: end; OnMyMobDead: +OnMyMobDead1: +OnMyMobDead2: +OnMyMobDead3: +OnMyMobDead4: +OnMyMobDead5: +OnMyMobDead6: +OnMyMobDead7: if (mobcount('map_name$[1], instance_npcname("#ghmemorialmob06") + "::OnBossDead") > 0) // Prevent boss re-spawn end; if ('mode == 2) // Higher (but unknown) spawn rate in fast mode @@ -1535,7 +1571,10 @@ OnBossDead: for ( .@i = 1; .@i <= 7; .@i++ ) donpcevent instance_npcname("#ogh_3-" + .@i) + "::OnStop"; - killmonster 'map_name$[1], instance_npcname("#ghmemorialmob06") + "::OnMyMobDead"; + .@npc_name$ = instance_npcname("#ghmemorialmob06"); + killmonster 'map_name$[1], .@npc_name$ + "::OnMyMobDead"; + for ( .@i = 1; .@i <= 7; .@i++ ) + killmonster 'map_name$[1], .@npc_name$ + "::OnMyMobDead" + .@i; // Hidden mobs setarray .@coord[0], @@ -1552,9 +1591,9 @@ OnBossDead: 2@gl_k,150,180,0 script #Geron HIDDEN_WARP_NPC,7,7,{ end; OnTouch_: - if ('step != 6) + if ('step != 7) end; - 'step = 7; + 'step = 8; disablenpc instance_npcname("#Geron"); mapannounce 'map_name$[1], "???: Do not come here! It's a trap... Kkkkah!!!", bc_map,0xFF7777,FW_NORMAL,15; enablenpc instance_npcname("Himelmez#22"); @@ -1574,15 +1613,19 @@ OnTouch_: else if (.@i == 3) .@mobs = 5; else if (.@i < 7) .@mobs = 6; else .@mobs = 7; + .@event$ = instance_npcname( strnpcinfo(0) ) + "::OnMobDead"; + killmonster 'map_name$[1], .@event$; getmapxy .@map$,.@x,.@y, BL_NPC; specialeffect EF_VENOMDUST; - monster .@map$,.@x,.@y,"Maggot",2467,.@mobs; + monster .@map$,.@x,.@y,"Maggot",2467,.@mobs, .@event$; initnpctimer; end; OnTimer45000: enablenpc(); stopnpctimer; end; +OnMobDead: + end; } 2@gl_k,145,236,4 duplicate(Decomposed body#1) Decomposed body#2 4_M_DIEMAN,5,5 2@gl_k,141,222,2 duplicate(Decomposed body#1) Decomposed body#3 4_M_DIEMAN,5,5 @@ -1646,9 +1689,9 @@ OnTimer45000: mes "That is amazing ~ you made it all the way here. May I say thank you?"; close3; OnTouch_: - if ('step != 7) + if ('step != 8) end; - 'step = 8; + 'step = 9; disablenpc(); if ('mode == 1) donpcevent instance_npcname("#talkinstance7") + "::OnStart"; @@ -1972,9 +2015,13 @@ OnTimer10000: 2@gl_k,158,241,1 script Hugin#21 4_M_SAGE_C,{ - if ('step != 8) + if ('step != 9) end; if (checkquest(12319,HUNTING) == 2) {// note: complete hunting 'Corrupted Soul Hunt' prerequis + if (checkweight(6607,5, 6608,5) == 0) { + mes "^ff0000It seems like you have too many types or weights of items. Please organize your inventory.^000000"; + close; + } mes "[Hugin]"; mes "Hm, you are very well. First of all, let me give you some loot from Amdarais."; erasequest 12319; @@ -2031,7 +2078,7 @@ OnTimer10000: // Treasure Room //============================================================ 1@gl_k,165,136,3 script Strange crack#2 CLEAR_NPC,{ - if ('step != 8) + if ('step != 9) end; if (isbegin_quest(12322) == 0) {// Space Distortion mes "The crack looks suspicious but nothing more to check."; diff --git a/npc/re/instances/SealedOs.txt b/npc/re/instances/SealedOs.txt index 848be59d7d..869b641b16 100644 --- a/npc/re/instances/SealedOs.txt +++ b/npc/re/instances/SealedOs.txt @@ -263,7 +263,6 @@ OnTouch: 1@os_b,137,139,0 duplicate(Thick Wire#171_os_0) Thick Wire#171_os_2 4_ENERGY_BLUE 1@os_b,122,212,5 script Dien#171_os_3 4_F_DIENE,{ -OnTalk: cutin "ep162_dn01",2; mes "[Dien]"; mes "Oh!"; @@ -281,8 +280,14 @@ OnTalk: mes "It will take some time to break it~"; npctalk "Cotnes : Oh, is this gate too hard? It will take some time to break it."; next; - doevent instance_npcname("Dien#171_os_3") + "::OnTalk"; - close; + cutin "ep162_dn01",2; + mes "[Dien]"; + mes "Oh!"; + mes "If you go to the right, I think you can go back on the railroad without having to break the door."; + npctalk "Dien : Oh! If you go to the right, I think you can go back on the railroad without having to break the door"; + if (!'unlocked) + donpcevent instance_npcname("#171_sealedos_control") + "::OnEvent04"; + close3; } 1@os_b,146,221,7 script Ridsh#171_os_2 4_F_LEEDSH,{ diff --git a/npc/re/jobs/2e/kagerou_oboro.txt b/npc/re/jobs/2e/kagerou_oboro.txt index e990d79ac2..ccab28ab95 100644 --- a/npc/re/jobs/2e/kagerou_oboro.txt +++ b/npc/re/jobs/2e/kagerou_oboro.txt @@ -836,7 +836,7 @@ job_ko,81,124,4 script Kuuga Gai#ko 730,{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50; for (set .@i,getarraysize(.@n)-1; .@i>0; set .@i,.@i-1) { - set .@rand, rand(.@i); + set .@rand, rand(0,.@i); set .@tmp, .@n[.@i]; set .@n[.@i], .@n[.@rand]; set .@n[.@rand], .@tmp; diff --git a/npc/re/jobs/novice/academy.txt b/npc/re/jobs/novice/academy.txt index 2481a2f526..16947da956 100644 --- a/npc/re/jobs/novice/academy.txt +++ b/npc/re/jobs/novice/academy.txt @@ -5218,7 +5218,7 @@ new_1-3,99,169,3 script Friendly Poring#ac 4_PORING,{ next; mes "[Poring]"; mes "It may fail, but keep trying to lure way those Little Porings!"; - close; + close3; } } else if (isbegin_quest(2297) == 1) { mes "[Poring]"; diff --git a/npc/re/kafras/kafras.txt b/npc/re/kafras/kafras.txt index 6cf5c4b0c8..bbbc8c76d4 100644 --- a/npc/re/kafras/kafras.txt +++ b/npc/re/kafras/kafras.txt @@ -29,15 +29,6 @@ //= 1.7 Added Rock Ridge Kafra. [Capuche] //============================================================ -// Brasilis -//============================================================ -brasilis,197,221,4 script Kafra Employee::kaf_bra 4_F_KAFRA1,{ - cutin "kafra_01",2; - callfunc "F_Kafra",0,3,0,80,700; - savepoint "brasilis",195,259,1,1; - callfunc "F_KafEnd",0,1,"in the city of Brasilis"; -} - // Dewata //============================================================ dewata,202,184,6 script Kafra Employee::kaf_dewata 4_F_KAFRA1,{ diff --git a/npc/re/mapflag/night.txt b/npc/re/mapflag/night.txt index 43a300f782..eb0d57b393 100644 --- a/npc/re/mapflag/night.txt +++ b/npc/re/mapflag/night.txt @@ -8,10 +8,8 @@ //============================================================ //============================================================ -// Episode 13 +// Episode 13.3 //============================================================ -brasilis mapflag nightenabled -bra_fild01 mapflag nightenabled dicastes01 mapflag nightenabled dicastes02 mapflag nightenabled dic_fild01 mapflag nightenabled diff --git a/npc/re/mapflag/nobranch.txt b/npc/re/mapflag/nobranch.txt index ca00428cbe..0846ac11aa 100644 --- a/npc/re/mapflag/nobranch.txt +++ b/npc/re/mapflag/nobranch.txt @@ -42,12 +42,6 @@ job3_war01 mapflag nobranch job3_war02 mapflag nobranch jupe_core2 mapflag nobranch -//============================================================ -// Brasilis -//============================================================ -brasilis mapflag nobranch -bra_in01 mapflag nobranch - //============================================================ // Episode 13.3 //============================================================ diff --git a/npc/re/mapflag/nomemo.txt b/npc/re/mapflag/nomemo.txt index b127e3ccae..f7733f66c5 100644 --- a/npc/re/mapflag/nomemo.txt +++ b/npc/re/mapflag/nomemo.txt @@ -18,7 +18,7 @@ paramk mapflag nomemo //============================================================ -// Episode 13 +// Episode 13.3 //============================================================ job3_arch01 mapflag nomemo job3_arch02 mapflag nomemo @@ -37,9 +37,6 @@ job3_gen01 mapflag nomemo job3_sha01 mapflag nomemo jupe_core2 mapflag nomemo s_atelier mapflag nomemo -bra_in01 mapflag nomemo -bra_dun01 mapflag nomemo -bra_dun02 mapflag nomemo dicastes01 mapflag nomemo dicastes02 mapflag nomemo dic_in01 mapflag nomemo diff --git a/npc/re/mapflag/nopenalty.txt b/npc/re/mapflag/nopenalty.txt index 93de46400b..48970dbf1b 100644 --- a/npc/re/mapflag/nopenalty.txt +++ b/npc/re/mapflag/nopenalty.txt @@ -16,8 +16,6 @@ paramk mapflag nopenalty //============================================================ // Municipality (Cities/Towns/Villages) //============================================================ -brasilis mapflag nopenalty -bra_in01 mapflag nopenalty dicastes01 mapflag nopenalty dicastes02 mapflag nopenalty dic_in01 mapflag nopenalty diff --git a/npc/re/mapflag/nopvp.txt b/npc/re/mapflag/nopvp.txt index 44959e1728..ad6165e05b 100644 --- a/npc/re/mapflag/nopvp.txt +++ b/npc/re/mapflag/nopvp.txt @@ -85,8 +85,6 @@ paramk mapflag pvp off // Municipality (Cities/Towns/Villages) //============================================================ moc_para01 mapflag pvp off -brasilis mapflag pvp off -bra_in01 mapflag pvp off dicastes01 mapflag pvp off dicastes02 mapflag pvp off dic_in01 mapflag pvp off diff --git a/npc/re/mapflag/noteleport.txt b/npc/re/mapflag/noteleport.txt index cd84b77d07..bfe1030528 100644 --- a/npc/re/mapflag/noteleport.txt +++ b/npc/re/mapflag/noteleport.txt @@ -26,10 +26,9 @@ paramk mapflag noteleport moc_para01 mapflag noteleport //============================================================ -// Episode 13 +// Episode 13.3 //============================================================ s_atelier mapflag noteleport -bra_in01 mapflag noteleport dic_in01 mapflag noteleport job3_gen01 mapflag noteleport job3_sha01 mapflag noteleport diff --git a/npc/re/mapflag/reset.txt b/npc/re/mapflag/reset.txt index 6fc6d02a55..42fee3d1bc 100644 --- a/npc/re/mapflag/reset.txt +++ b/npc/re/mapflag/reset.txt @@ -7,7 +7,6 @@ //= 1.1 Added Izlude duplicates. [Euphy] //============================================================ -brasilis mapflag reset dewata mapflag reset dicastes01 mapflag reset dicastes02 mapflag reset diff --git a/npc/re/mapflag/restricted.txt b/npc/re/mapflag/restricted.txt index 3e28207f2b..a38d461c24 100644 --- a/npc/re/mapflag/restricted.txt +++ b/npc/re/mapflag/restricted.txt @@ -247,7 +247,6 @@ lhz_d_n2 mapflag restricted 6 //============================================================ // Municipality (Cities/Towns/Villages) //============================================================ -brasilis mapflag restricted 7 dewata mapflag restricted 7 dicastes01 mapflag restricted 7 eclage mapflag restricted 7 diff --git a/npc/re/mapflag/town.txt b/npc/re/mapflag/town.txt index ef4b31aafc..b2a409c644 100644 --- a/npc/re/mapflag/town.txt +++ b/npc/re/mapflag/town.txt @@ -7,7 +7,6 @@ //= 1.1 Added Izlude duplicates. [Euphy] //============================================================ -brasilis mapflag town dewata mapflag town dicastes01 mapflag town eclage mapflag town diff --git a/npc/re/merchants/barters/enchan_illusion_dungeons.yml b/npc/re/merchants/barters/enchan_illusion_dungeons.yml index d5ca64d39a..aa473a9731 100644 --- a/npc/re/merchants/barters/enchan_illusion_dungeons.yml +++ b/npc/re/merchants/barters/enchan_illusion_dungeons.yml @@ -433,6 +433,7 @@ Body: RequiredItems: - Index: 0 Item: Staff_Of_Bordeaux + Refine: 9 - Index: 1 Item: IllusionStone Amount: 30 @@ -444,6 +445,7 @@ Body: RequiredItems: - Index: 0 Item: Moonlight_Sword + Refine: 9 - Index: 1 Item: IllusionStone Amount: 60 @@ -455,6 +457,7 @@ Body: RequiredItems: - Index: 0 Item: Long_Mace + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -466,6 +469,7 @@ Body: RequiredItems: - Index: 0 Item: Spectral_Spear + Refine: 9 - Index: 1 Item: IllusionStone Amount: 20 @@ -477,6 +481,7 @@ Body: RequiredItems: - Index: 0 Item: Nurse_Cap + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -488,6 +493,7 @@ Body: RequiredItems: - Index: 0 Item: Apple_Of_Archer + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -499,6 +505,7 @@ Body: RequiredItems: - Index: 0 Item: Puente_Robe + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -510,6 +517,7 @@ Body: RequiredItems: - Index: 0 Item: Muffler_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -521,6 +529,7 @@ Body: RequiredItems: - Index: 0 Item: Shoes_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -534,6 +543,7 @@ Body: RequiredItems: - Index: 0 Item: Huuma_Fluttering_Snow + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -545,6 +555,7 @@ Body: RequiredItems: - Index: 0 Item: Combo_Battle_Glove + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -556,6 +567,7 @@ Body: RequiredItems: - Index: 0 Item: Herald_Of_GOD_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -567,6 +579,7 @@ Body: RequiredItems: - Index: 0 Item: Clack_Of_Servival + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -578,6 +591,7 @@ Body: RequiredItems: - Index: 0 Item: Cap_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 50 @@ -591,6 +605,7 @@ Body: RequiredItems: - Index: 0 Item: Infiltrator_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 80 @@ -602,6 +617,7 @@ Body: RequiredItems: - Index: 0 Item: Ghoul_Leg + Refine: 9 - Index: 1 Item: IllusionStone Amount: 10 @@ -613,6 +629,7 @@ Body: RequiredItems: - Index: 0 Item: Wizardy_Staff + Refine: 9 - Index: 1 Item: IllusionStone Amount: 40 @@ -624,6 +641,7 @@ Body: RequiredItems: - Index: 0 Item: Balistar_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 50 @@ -635,6 +653,7 @@ Body: RequiredItems: - Index: 0 Item: Book_Of_The_Apocalypse + Refine: 9 - Index: 1 Item: IllusionStone Amount: 50 @@ -646,6 +665,7 @@ Body: RequiredItems: - Index: 0 Item: Cape_Of_Ancient_Lord_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 30 @@ -681,6 +701,7 @@ Body: RequiredItems: - Index: 0 Item: Immaterial_Sword + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -692,6 +713,7 @@ Body: RequiredItems: - Index: 0 Item: War_Axe + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -703,6 +725,7 @@ Body: RequiredItems: - Index: 0 Item: Pole_Axe + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -714,6 +737,7 @@ Body: RequiredItems: - Index: 0 Item: Huuma_Bird_Wing + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -725,6 +749,7 @@ Body: RequiredItems: - Index: 0 Item: Iron_Driver + Refine: 9 - Index: 1 Item: IllusionStone Amount: 100 @@ -749,6 +774,7 @@ Body: RequiredItems: - Index: 0 Item: Tablet + Refine: 9 - Index: 1 Item: IllusionStone Amount: 50 @@ -760,6 +786,7 @@ Body: RequiredItems: - Index: 0 Item: Hunter_Bow_ + Refine: 9 - Index: 1 Item: IllusionStone Amount: 80 @@ -777,6 +804,7 @@ Body: RequiredItems: - Index: 0 Item: Goibne's_Helmet + Refine: 9 - Index: 1 Item: IllusionStone Amount: 120 @@ -791,6 +819,7 @@ Body: RequiredItems: - Index: 0 Item: Goibne's_Armor + Refine: 9 - Index: 1 Item: IllusionStone Amount: 80 @@ -805,6 +834,7 @@ Body: RequiredItems: - Index: 0 Item: Goibne's_Combat_Boots + Refine: 9 - Index: 1 Item: IllusionStone Amount: 80 @@ -819,6 +849,7 @@ Body: RequiredItems: - Index: 0 Item: Goibne's_Shoulder_Arms + Refine: 9 - Index: 1 Item: IllusionStone Amount: 120 @@ -828,3 +859,89 @@ Body: - Index: 3 Item: Token_Of_Bigstone Amount: 150 + - Name: barter_ill_teddy + Items: + - Index: 0 + Item: Counter_Dagger_IL + RequiredItems: + - Index: 0 + Item: Counter_Dagger + Refine: 9 + - Index: 1 + Item: IllusionStone + Amount: 95 + - Index: 2 + Item: Green_Bearopy + Amount: 75 + - Index: 3 + Item: Chonchon_Doll_HQ + Amount: 50 + - Index: 1 + Item: Gate_KeeperDD_IL + RequiredItems: + - Index: 0 + Item: Gate_KeeperDD + Refine: 9 + - Index: 1 + Item: IllusionStone + Amount: 95 + - Index: 2 + Item: Gothic_China_Doll + Amount: 75 + - Index: 3 + Item: NasariansSoulstone + Amount: 150 + - Index: 2 + Item: Survival_Staff_IL + RequiredItems: + - Index: 0 + Item: Survival_Rod_ + Refine: 9 + - Index: 1 + Item: Survival_Rod2_ + Refine: 9 + - Index: 2 + Item: IllusionStone + Amount: 125 + - Index: 3 + Item: Gothic_China_Doll + Amount: 100 + - Index: 4 + Item: Chonchon_Doll_HQ + Amount: 100 + - Index: 5 + Item: Clay_Doll + Amount: 15 + - Index: 3 + Item: Boots_IL + RequiredItems: + - Index: 0 + Item: Boots_ + Refine: 9 + - Index: 1 + Item: IllusionStone + Amount: 85 + - Index: 2 + Item: Green_Bearopy + Amount: 50 + - Index: 3 + Item: Gothic_China_Doll + Amount: 50 + - Index: 4 + Item: Headband_Of_Power_IL + RequiredItems: + - Index: 0 + Item: Headband_Of_Power + Refine: 9 + - Index: 1 + Item: IllusionStone + Amount: 115 + - Index: 2 + Item: NasariansSoulstone + Amount: 100 + - Index: 3 + Item: Chonchon_Doll_HQ + Amount: 50 + - Index: 4 + Item: Clay_Doll + Amount: 5 diff --git a/npc/re/merchants/enchan_illusion_dungeons.txt b/npc/re/merchants/enchan_illusion_dungeons.txt index 853f7a1af8..9b42e04c00 100644 --- a/npc/re/merchants/enchan_illusion_dungeons.txt +++ b/npc/re/merchants/enchan_illusion_dungeons.txt @@ -15,6 +15,7 @@ //= 1.6 Added Illusion of Underwater exchange [Capuche] //= 1.7 Added Illusion of Twins enchanter [Capuche] //= 1.8 Added Illusion Merchant [Haydrich] +//= 1.9 Added Illusion of Teddy Bear exchange [Atemo] //============================================================ //============================================================ @@ -884,3 +885,53 @@ OnInit: npcshopupdate "market_resonance_stone",100004,2000000,99999; end; } + + +//============================================================ +//= Illusion of Teddy Bear +//============================================================ + +ein_d02_i,177,158,3 script Bear Wanting Illusion Stone#ITB 4_NASARIAN,{ + .@item_name$ = getitemname(25271); // IllusionStone + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "If you give me an " + .@item_name$ + ", I'll do something nice for you!"; + next; + switch( select( "Reason for being here", "Good thing [Illusion equipment]", "Quit" ) ) { + case 1: + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "I don't know why...!"; + mes "The other teddy bears were in line, so I was in line too!"; + mes "Whoaaaaaa!!!!"; + mes "I didn't know it was here!"; + next; + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "A teddy bear with an " + .@item_name$ + "!"; + mes "Strong!"; + mes "I don't have any " + .@item_name$ + "s!"; + mes "Less... stronger..."; + next; + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "What are " + .@item_name$ + "s?"; + mes "I don't know but I want some!"; + close; + case 2: + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "Makes you good with what you have!"; + next; + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "If you want to do well, bring equipment refined to ^ff0000+9 or higher. It'll all disappear... haha?^000000"; + next; + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "^ff0000" + .@item_name$ + "^000000!!! " + .@item_name$ + " is the most important thing, but... other materials are also needed."; + mes "For every good thing you need another good thing."; + next; + close2; + callshop( "barter_ill_teddy" ); + end; + case 3: + mes "[Bear Wanting " + .@item_name$ + "]"; + mes "Okay..."; + close; + } + end; +} diff --git a/npc/re/merchants/inn.txt b/npc/re/merchants/inn.txt deleted file mode 100644 index 40f967c1ed..0000000000 --- a/npc/re/merchants/inn.txt +++ /dev/null @@ -1,54 +0,0 @@ -//===== rAthena Script ======================================= -//= Inn Npcs -//===== By: ================================================== -//= c, L0ne_W0lf -//===== Current Version: ===================================== -//= 1.1 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= Inn Npcs, Save and Heal -//===== Additional Comments: ================================= -//= 1.0 Added Brasilis inn receptionist. [c] -//= 1.1 Updated dialog for Brasilis inn. [L0ne_W0lf] -//============================================================ - -// Brasilis -//============================================================ -bra_in01,27,24,3 script Hotel Keeper#bra1 478,{ - mes "[Hotel Keeper]"; - mes "Welcome to the beautiful Brasilis Hotel."; - next; - switch(select("Save:Rest -5000 zeny")) { - case 1: - mes "[Hotel Keeper]"; - mes "Do you want to save here at the Brasilis Hotel?"; - next; - switch(select("No thank you.:Absolutely.")) { - case 1: - mes "[Hotel Keeper]"; - mes "Ok then, enjoy your stay."; - close; - case 2: - mes "[Hotel Keeper]"; - mes "Your respawn has been saved here at the hotel. I hope that you enjoy your stay here in Brasilis."; - savepoint "bra_in01",144,69,1,1; - close; - } - case 2: - if (Zeny > 4999) { - mes "[Hotel Keeper]"; - mes "I will show you a great room."; - close2; - set Zeny, Zeny-5000; - percentheal 100,100; - warp "bra_in01",144,69; - end; - } - else { - mes "[Hotel Keeper]"; - mes "I'm sorry, but the service charge is 5,000 zeny per night."; - close; - } - } -} diff --git a/npc/re/merchants/shopping_boards.txt b/npc/re/merchants/shopping_boards.txt new file mode 100644 index 0000000000..b8c5e0c311 --- /dev/null +++ b/npc/re/merchants/shopping_boards.txt @@ -0,0 +1,29 @@ +//===== rAthena Script ======================================= +//= Shopping Boards +//===== Description: ========================================= +//= Shopping Boards work like Bargain Hunter's Catalogues. +//= They are found in towns and search exclusively in their respective maps. +//= Searches are limited to 1 use per board click (you can re-use the board without closing it to get another search). +//= https://irowiki.org/wiki/Commerce#Shopping_Boards +//===== Changelog: =========================================== +//= 1.0 Initial version. [Pokye] +//============================================================ + +- script Shopping Board -1,{ + searchstores 1, SEARCHSTORE_EFFECT_REMOTE; + end; +} + +alberta,119,65,3 duplicate(Shopping Board) Shopping Board#alb 4_BOARD3 +aldebaran,146,120,3 duplicate(Shopping Board) Shopping Board#alde 4_BOARD3 +comodo,206,153,3 duplicate(Shopping Board) Shopping Board#cmd 4_BOARD3 +geffen,130,68,3 duplicate(Shopping Board) Shopping Board#gef 4_BOARD3 +izlude,127,116,3 duplicate(Shopping Board) Shopping Board#izl 4_BOARD3 +morocc,166,109,3 duplicate(Shopping Board) Shopping Board#moc 4_BOARD3 +payon,183,103,3 duplicate(Shopping Board) Shopping Board#pay 4_BOARD3 +prontera,159,193,3 duplicate(Shopping Board) Shopping Board#prt1 4_BOARD3 +prontera,182,214,3 duplicate(Shopping Board) Shopping Board#prt2 4_BOARD3 +prontera,130,215,3 duplicate(Shopping Board) Shopping Board#prt3 4_BOARD3 +prontera,146,85,3 duplicate(Shopping Board) Shopping Board#prt4 4_BOARD3 +xmas,155,144,3 duplicate(Shopping Board) Shopping Board#xmas 4_BOARD3 +yuno,146,187,3 duplicate(Shopping Board) Shopping Board#yuno 4_BOARD3 \ No newline at end of file diff --git a/npc/re/mobs/championmobs.txt b/npc/re/mobs/championmobs.txt index 9ac9ab4391..8c7398f5bb 100644 --- a/npc/re/mobs/championmobs.txt +++ b/npc/re/mobs/championmobs.txt @@ -3,329 +3,334 @@ //===== By: ================================================== //= nanakiwurtz //===== Current Version: ===================================== -//= 1.1 +//= 1.2 //===== Compatible With: ===================================== //= rAthena Project //===== Additional Comments: ================================= //= 1.0 First version //= 1.1 Correct Spawn by Navigation's mob data. [attackjom] +//= 1.2 Correct respawn times and prontera field spawns [Playtester] //============================================================ -abbey02,0,0 monster Swift Zombie Slaughter 2603,3,300000 -gl_prison,0,0 monster Solid Zombie Prisoner 2604,1,300000 -gld_dun04,0,0 monster Zombie Master Ringleader 2605,2,300000 -pay_dun00,0,0 monster Furious Zombie 2606,2,300000 -schg_dun01,0,0 monster Elusive Zakudam 2607,2,300000 -prt_fild03,0,0 monster Swift Yoyo 2608,2,300000 -ayo_fild02,0,0 monster Solid Yoyo 2609,1,300000 -pay_fild06,0,0 monster Wormtail Ringleader 2610,3,300000 -um_fild02,0,0 monster Furious Wootan Fighter 2611,1,300000 -mosk_dun01,0,0 monster Elusive Wood Goblin 2612,2,300000 -moc_fild03,0,0 monster Swift Wolf 2613,2,300000 -gl_step,0,0 monster Solid Wind Ghost 2614,2,300000 -gef_dun03,0,0 monster Solid Wind Ghost 2614,1,300000 -pay_fild01,0,0 monster Willow Ringleader 2615,2,300000 -um_fild04,0,0 monster Furious Wild Rose 2616,1,300000 -gon_dun03,0,0 monster Elusive Evil Nymph 2617,2,300000 -gl_sew01,0,0 monster Solid Whisper 2618,1,300000 -treasure_n2,0,0 monster Weak Skeleton Ringleader 2619,2,300000 -gl_cas02,0,0 monster Furious Wanderer 2620,2,300000 -gefenia04,0,0 monster Elusive Violy 2621,2,300000 -gefenia03,0,0 monster Swift Violy 2622,2,300000 -gefenia02,0,0 monster Solid Violy 2623,2,300000 -ein_fild04,0,0 monster Venomous Ringleader 2624,2,300000 -juperos_01,0,0 monster Furious Venatu 2625,3,300000 -mosk_dun03,0,0 monster Elusive Vavayaga 2626,2,300000 -ra_san01,0,0 monster Swift Vanberk 2627,2,300000 -iz_dun01,0,0 monster Solid Vadon 2628,2,300000 -ein_fild02,0,0 monster Ungoliant Ringleader 2629,2,300000 -bra_fild01,0,0 monster Furious Toucan 2630,3,300000 -ma_fild01,0,0 monster Elusive Tiyanak 2631,2,300000 -prt_sewb4,0,0 monster Solid Thief Bug 2632,2,300000 -prt_sewb3,0,0 monster Thief Bug Ringleader 2633,3,300000 -prt_sewb2,0,0 monster Furious Thief Bug 2634,2,300000 -beach_dun3,0,0 monster Elusive Thara Frog 2635,2,300000 -ein_fild03,0,0 monster Swift Teddy Bear 2636,2,300000 -man_fild03,0,0 monster Solid Tatacho 2637,1,300000 -mjo_dun01,0,0 monster Tarou Ringleader 2638,2,300000 -ayo_dun02,0,0 monster Furious Tamruan 2639,2,300000 -gl_sew03,0,0 monster Elusive Sting 2640,2,300000 -lhz_fild02,0,0 monster Swift Stem Worm 2641,2,300000 -moc_fild13,0,0 monster Solid Steel Chonchon 2642,3,300000 -ve_fild07,0,0 monster Stapo Ringleader 2643,2,300000 -beach_dun2,0,0 monster Furious Stalactic Golem 2644,2,300000 -prt_fild02,0,0 monster Elusive Stainer 2645,3,300000 -treasure_n1,0,0 monster Swift Spore 2646,2,300000 -tur_dun02,0,0 monster Solid Solider 2647,2,300000 -pay_dun02,0,0 monster Soldier Skeleton Ringleader 2648,3,300000 -pay_dun01,0,0 monster Furious Soldier Skeleton 2649,2,300000 -tha_t09,0,0 monster Elusive Lady Solace 2650,2,300000 //--Remove after Thanatos Ravamped Patch -pay_dun03,0,0 monster Swift Sohee 2651,2,300000 -ice_dun02,0,0 monster Solid Snowier 2652,2,300000 -pay_fild02,0,0 monster Boa Ringleader 2653,3,300000 -ayo_fild01,0,0 monster Furious Smokie 2654,2,300000 -yuno_fild06,0,0 monster Elusive Sleeper 2655,1,300000 -yuno_fild02,0,0 monster Swift Sleeper 2656,2,300000 -odin_tem02,0,0 monster Solid Skogul 2657,1,300000 -gld2_pay,0,0 monster Skeleton General Ringleader 2658,2,300000 -gld_dun01_2,0,0 monster Furious Skeleton General 2659,2,300000 -mjo_dun03,0,0 monster Elusive Skeleton Worker 2660,2,300000 -ice_dun01,0,0 monster Swift Siroma 2661,1,300000 -mosk_fild02,0,0 monster Solid Side Winder 2662,1,300000 -mjolnir_03,0,0 monster Side Winder Ringleader 2663,2,300000 -ama_dun03,0,0 monster Furious Shinobi 2664,2,300000 -tha_t11,0,0 monster Elusive Mistress of Shelter 2665,2,300000 //--Remove after Thanatos Ravamped Patch -hu_fild06,0,0 monster Swift Shellfish 2666,1,300000 -lhz_dun03,0,0 monster Solid Cecil Damon 2667,3,300000 -cmd_fild04,0,0 monster Sea Otter Ringleader 2668,2,300000 -iz_dun05,0,0 monster Furious Lamp Rey 2669,2,300000 -moc_fild18,0,0 monster Elusive Scorpion 2670,3,300000 -mjolnir_09,0,0 monster Swift Savage Babe 2671,2,300000 -prt_maze01,0,0 monster Solid Savage 2672,2,300000 -mjolnir_07,0,0 monster Savage Ringleader 2673,3,300000 -moc_fild16,0,0 monster Furious Sandman 2674,2,300000 -thor_v03,0,0 monster Elusive Salamander 2675,2,300000 -treasure02,0,0 monster Swift Sailor Skeleton 2676,1,300000 -ra_fild12,0,0 monster Solid Roween 2677,2,300000 -prt_fild00,0,0 monster Roda Frog Ringleader 2678,2,300000 -gef_fild01,0,0 monster Furious Roda Frog 2679,2,300000 -prt_fild07,0,0 monster Elusive Rocker 2680,2,300000 -tha_t01,0,0 monster Swift Rideword 2681,2,300000 -//tha_t01,0,0 monster Swift Rideword 2681,1,300000 //--Applied after Thanatos Revamped Patch. -c_tower1,0,0 monster Solid Rideword 2682,2,300000 -gon_fild01,0,0 monster Dumpling Child Ringleader 2683,2,300000 -tha_t10,0,0 monster Furious Baroness of Retribution 2684,2,300000 //--Remove after Thanatos Ravamped Patch -tha_t08,0,0 monster Elusive Baroness of Retribution 2685,2,300000 -//tha_t08,0,0 monster Elusive Baroness of Retribution 2685,1,300000 //--Applied after Thanatos Revamped Patch. -tha_t07,0,0 monster Swift Baroness of Retribution 2686,2,300000 -//tha_t07,0,0 monster Swift Baroness of Retribution 2686,1,300000 //--Applied after Thanatos Revamped Patch. -in_sphinx2,0,0 monster Solid Requiem 2687,2,300000 -lhz_dun01,0,0 monster Remover Ringleader 2688,3,300000 -mal_dun01,0,0 monster Elusive Red Eruma 2689,2,300000 -gl_knt02,0,0 monster Swift Raydric 2690,2,300000 -gl_knt01,0,0 monster Solid Raydric 2691,2,300000 -lhz_dun02,0,0 monster Laurell Weinder Ringleader 2692,3,300000 -dic_dun03,0,0 monster Furious Rake Scaraba 2693,2,300000 -cmd_fild07,0,0 monster Elusive Raggler 2694,2,300000 -lhz_fild01,0,0 monster Swift Rafflesia 2695,3,300000 -lhz_fild01,0,0 monster Poring Ringleader 2696,2,300000 -lhz_fild01,0,0 monster Furious Poring 2697,2,300000 -lhz_fild01,0,0 monster Elusive Poring 2698,2,300000 -gef_fild07,0,0 monster Swift Poring 2699,2,300000 -ein_fild09,0,0 monster Solid Porcellio 2700,2,300000 -prt_maze03,0,0 monster Poporing Ringleader 2701,2,300000 -prt_maze02,0,0 monster Furious Poporing 2702,2,300000 -pay_fild04,0,0 monster Elusive Poporing 2703,2,300000 -ama_dun02,0,0 monster Swift Poison Toad 2704,1,300000 -mjolnir_06,0,0 monster Solid Poison Spore 2705,3,300000 -odin_tem03,0,0 monster Plasma Ringleader 2706,2,300000 -iz_dun00,0,0 monster Furious Plankton 2707,2,300000 -ein_dun01,0,0 monster Elusive Pitman 2708,2,300000 -bra_dun01,0,0 monster Swift Piranha 2709,2,300000 -spl_fild01,0,0 monster Solid Dark Pinguicula 2710,2,300000 -spl_fild02,0,0 monster Pinguicula Ringleader 2711,2,300000 -moc_fild12,0,0 monster Furious Picky 2712,2,300000 -iz_dun03,0,0 monster Elusive Phen 2713,2,300000 -gef_fild08,0,0 monster Swift Petite 2714,2,300000 -gef_fild06,0,0 monster Solid Petite 2715,2,300000 -treasure02,0,0 monster Penomena Ringleader 2716,2,300000 -alde_dun03,0,0 monster Furious Penomena 2717,2,300000 -moc_fild02,0,0 monster Elusive Peco Peco 2718,2,300000 -in_sphinx5,0,0 monster Swift Pasana 2719,2,300000 -um_fild03,0,0 monster Solid Parasite 2720,1,300000 -tha_t05,0,0 monster Owl Duke Ringleader 2721,2,300000 -//tha_t05,0,0 monster Owl Duke Ringleader 2721,3,300000 //--Applied after Thanatos Revamped Patch. -gef_fild10,0,0 monster Furious Orc Warrior 2722,2,300000 -orcsdun01,0,0 monster Elusive Orc Zombie 2723,2,300000 -orcsdun02,0,0 monster Swift Orc Skeleton 2724,2,300000 -gef_fild03,0,0 monster Solid Orc Lady 2725,3,300000 -tha_t12,0,0 monster Dame of Sentinel Ringleader 2726,2,300000 //--Remove after Thanatos Ravamped Patch -ein_fild05,0,0 monster Furious Noxious 2727,2,300000 -hu_fild05,0,0 monster Elusive Novus 2728,2,300000 -hu_fild04,0,0 monster Swift Novus 2729,2,300000 -hu_fild02,0,0 monster Solid Novus 2730,2,300000 -hu_fild01,0,0 monster Novus Ringleader 2731,2,300000 -mag_dun02,0,0 monster Furious Nightmare Terror 2732,2,300000 -gl_chyard_,0,0 monster Elusive Wraith Dead (Nightmare) 2733,2,180000,0 +abbey01,0,0 monster Swift Banshee 2887,3,180000 +abbey02,0,0 monster Swift Zombie Slaughter 2603,3,180000 +abbey03,0,0 monster Necromancer Ringleader 2736,2,180000 +abyss_01,0,0 monster Furious Ferus 2832,2,180000 +abyss_02,0,0 monster Acidus Ringleader 2913,2,180000 +abyss_03,0,0 monster Solid Acidus 2912,2,180000 +alde_dun01,0,0 monster Arclouze Ringleader 2894,1,180000 +alde_dun02,0,0 monster Solid High Orc 2805,2,180000 +alde_dun03,0,0 monster Furious Penomena 2717,2,180000 +alde_dun04,0,0 monster Furious Bathory 2885,1,180000 +ama_dun01,0,0 monster Miyabi Doll Ringleader 2746,2,180000 +ama_dun02,0,0 monster Swift Poison Toad 2704,1,180000 +ama_dun03,0,0 monster Furious Shinobi 2664,2,180000 +ama_fild01,0,0 monster Swift Karakasa 2789,2,180000 +anthell01,0,0 monster Elusive Deniro 2857,3,180000 +anthell02,0,0 monster Solid Andre 2902,2,180000 +arug_dun01,0,0 monster Elusive Banshee Master 2886,2,180000 +ayo_dun01,0,0 monster Leaf Cat Ringleader 2781,2,180000 +ayo_dun02,0,0 monster Furious Tamruan 2639,2,180000 +ayo_fild01,0,0 monster Furious Smokie 2654,2,180000 +ayo_fild02,0,0 monster Solid Yoyo 2609,1,180000 +beach_dun,0,0 monster Swift Medusa 2759,2,180000 +beach_dun2,0,0 monster Furious Stalactic Golem 2644,2,180000 +beach_dun3,0,0 monster Elusive Thara Frog 2635,2,180000 +bif_fild01,0,0 monster Miming Ringleader 2751,2,180000 +bif_fild02,0,0 monster Furious Little Fatum 2777,2,180000 +bra_dun01,0,0 monster Swift Piranha 2709,2,180000 +bra_dun02,0,0 monster Solid Iara 2795,3,180000 +bra_fild01,0,0 monster Furious Toucan 2630,3,180000 +c_tower1,0,0 monster Solid Rideword 2682,2,180000 +c_tower2,0,0 monster Furious Clock 2871,1,180000 +c_tower3,0,0 monster Elusive Alarm 2910,1,180000 +c_tower4,0,0 monster Clock Ringleader 2870,2,180000 +cmd_fild01,0,0 monster Elusive Grove 2808,2,180000 +cmd_fild02,0,0 monster Swift Seal 2829,3,180000 +cmd_fild03,0,0 monster Solid Alligator 2907,3,180000 +cmd_fild04,0,0 monster Sea Otter Ringleader 2668,2,180000 +cmd_fild06,0,0 monster Furious Golem 2812,2,180000 +cmd_fild07,0,0 monster Elusive Raggler 2694,2,180000 +cmd_fild08,0,0 monster Elusive Deniro 2857,2,180000 +cmd_fild09,0,0 monster Swift Metaller 2754,2,180000 +dew_dun01,0,0 monster Elusive Comodo 2867,2,180000 +dew_dun02,0,0 monster Solid Banaspaty 2888,2,180000 +dew_fild01,0,0 monster Swift Rafflesia Arnoldi 2906,2,180000 +dic_dun01,0,0 monster Swift Uni-horn Scaraba 2799,2,180000 +dic_dun02,0,0 monster Elusive Antler Scaraba 2896,2,180000 +dic_dun03,0,0 monster Furious Rake Scaraba 2693,2,180000 +dic_fild01,0,0 monster Swift Centipede 2873,2,180000 +dic_fild02,0,0 monster Dolomedes Ringleader 2850,2,180000 +ecl_fild01,0,0 monster Elusive Menblatt 2758,1,180000 +ecl_tdun01,0,0 monster Solid Cenere 2874,1,180000 +ecl_tdun02,0,0 monster Solid Antique Book 2898,1,180000 +ecl_tdun03,0,0 monster Swift Antique Book 2897,1,180000 +ein_dun01,0,0 monster Elusive Pitman 2708,2,180000 +ein_dun02,0,0 monster Solid Mineral 2750,2,180000 +ein_fild02,0,0 monster Ungoliant Ringleader 2629,2,180000 +ein_fild03,0,0 monster Swift Teddy Bear 2636,2,180000 +ein_fild04,0,0 monster Venomous Ringleader 2624,2,180000 +ein_fild05,0,0 monster Furious Noxious 2727,2,180000 +ein_fild06,0,0 monster Solid Holden 2745,2,180000 +ein_fild07,0,0 monster Metaling Ringleader 2756,2,180000 +ein_fild08,0,0 monster Solid Metaling 2755,2,180000 +ein_fild09,0,0 monster Solid Porcellio 2700,2,180000 +gef_dun00,0,0 monster Furious Hunter Fly 2797,1,180000 +gef_dun01,0,0 monster Elusive Ghoul 2823,2,180000 +gef_dun02,0,0 monster Solid Deviruchi 2854,2,180000 +gef_dun03,0,0 monster Solid Wind Ghost 2614,1,180000 +gef_fild00,0,0 monster Elusive Chonchon 2872,2,180000 +gef_fild01,0,0 monster Furious Roda Frog 2679,2,180000 +gef_fild02,0,0 monster Solid Coco 2869,3,180000 +gef_fild03,0,0 monster Solid Orc Lady 2725,3,180000 +gef_fild04,0,0 monster Solid Mandragora 2765,2,180000 +gef_fild05,0,0 monster Swift Creamy 2863,2,180000 +gef_fild06,0,0 monster Solid Petite 2715,2,180000 +gef_fild07,0,0 monster Swift Poring 2699,2,180000 +gef_fild08,0,0 monster Swift Petite 2714,2,180000 +gef_fild09,0,0 monster Swift Coco 2868,2,180000 +gef_fild10,0,0 monster Furious Orc Warrior 2722,2,180000 +gef_fild11,0,0 monster Swift Goblin 2814,3,180000 +gefenia01,0,0 monster Swift False Angel 2834,2,180000 +gefenia02,0,0 monster Solid Violy 2623,2,180000 +gefenia03,0,0 monster Swift Violy 2622,2,180000 +gefenia04,0,0 monster Elusive Violy 2621,2,180000 +gl_cas01,0,0 monster Elusive Carat 2877,2,180000 gl_cas02_,0,0 monster Furious Wanderer (Nightmare) 2734,2,180000,0 -man_fild01,0,0 monster Solid Nephentes 2735,2,300000 -abbey03,0,0 monster Necromancer Ringleader 2736,2,300000 -xmas_dun02,0,0 monster Furious Myst Case 2737,2,300000 -ve_fild04,0,0 monster Elusive Muscipular 2738,2,300000 -moc_pryd03,0,0 monster Swift Mummy 2739,2,300000 -moc_pryd02,0,0 monster Solid Mummy 2740,2,300000 -moc_fild01,0,0 monster Muka Ringleader 2741,3,300000 -moc_fild22,0,0 monster Furious Incarnation of Morocc 2742,3,300000 -moc_fild21,0,0 monster Elusive Incarnation of Morocc 2743,2,300000 -moc_fild20,0,0 monster Swift Incarnation of Morocc 2744,1,300000 -ein_fild06,0,0 monster Solid Holden 2745,2,300000 -ama_dun01,0,0 monster Miyabi Doll Ringleader 2746,2,300000 -moc_prydn1,0,0 monster Furious Minorous 2747,2,300000 -moc_pryd05,0,0 monster Elusive Minorous 2748,2,300000 -in_sphinx4,0,0 monster Swift Minorous 2749,1,300000 -ein_dun02,0,0 monster Solid Mineral 2750,2,300000 -bif_fild01,0,0 monster Miming Ringleader 2751,2,300000 -moc_prydn2,0,0 monster Furious Mimic 2752,2,300000 -moc_pryd06,0,0 monster Elusive Mimic 2753,2,300000 -cmd_fild09,0,0 monster Swift Metaller 2754,2,300000 -ein_fild08,0,0 monster Solid Metaling 2755,2,300000 -ein_fild07,0,0 monster Metaling Ringleader 2756,2,300000 -iz_dun04,0,0 monster Furious Merman 2757,2,300000 -ecl_fild01,0,0 monster Elusive Menblatt 2758,1,300000 -beach_dun,0,0 monster Swift Medusa 2759,2,300000 -mjo_dun02,0,0 monster Solid Martin 2760,2,300000 -gl_in01,0,0 monster Marionette Ringleader 2761,1,300000 -xmas_fild01,0,0 monster Furious Marin 2762,1,300000 -in_sphinx3,0,0 monster Elusive Marduk 2763,1,300000 -prt_maze03,0,0 monster Swift Mantis 2764,2,300000 -gef_fild04,0,0 monster Solid Mandragora 2765,2,300000 -ma_dun01,0,0 monster Manananggal Ringleader 2766,2,300000 -gl_dun02,0,0 monster Furious Majoruros 2767,1,300000 -prt_fild09,0,0 monster Elusive Magnolia 2768,2,300000 -ve_fild03,0,0 monster Swift Magmaring 2769,2,300000 -prt_fild08,0,0 monster Solid Lunatic 2770,1,300000 -prt_fild01,0,0 monster Lunatic Ringleader 2771,2,300000 -niflheim,0,0 monster Furious Lude 2772,1,300000 -spl_fild03,0,0 monster Elusive Luciola Vespa 2773,1,300000 -nif_fild02,0,0 monster Swift Loli Ruri 2774,1,300000 -gon_dun02,0,0 monster Solid Enchanted Peach Tree 2775,1,300000 -new_1-3,0,0 monster Baby Poring Ringleader 2776,2,300000 -bif_fild02,0,0 monster Furious Little Fatum 2777,2,300000 -lou_dun01,0,0 monster Elusive Jing Guai 2778,2,300000 -mosk_dun02,0,0 monster Swift Les 2779,1,300000 -gld_dun01,0,0 monster Solid Leib Olmai 2780,2,300000 -ayo_dun01,0,0 monster Leaf Cat Ringleader 2781,2,300000 -teg_dun02,0,0 monster Furious Wickebine Tres 2782,2,300000,0 -teg_dun01,0,0 monster Elusive Eremes 2783,2,300000,0 -ra_fild06,0,0 monster Swift Kobold Archer 2784,3,300000 -ra_fild05,0,0 monster Solid Kobold 2785,3,300000 -thor_v02,0,0 monster Knocker Ringleader 2786,1,300000 -mjolnir_08,0,0 monster Furious Beetle King 2787,2,300000 -thor_v01,0,0 monster Elusive Kasa 2788,2,300000 -ama_fild01,0,0 monster Swift Karakasa 2789,2,300000 -moc_pryd04,0,0 monster Solid Isis 2790,2,300000 -ra_san02,0,0 monster Isilla Ringleader 2791,2,300000 -gl_prison1,0,0 monster Furious Injustice 2792,2,300000 -lou_fild01,0,0 monster Elusive Mi Gao 2793,1,300000 -ice_dun03,0,0 monster Swift Ice Titan 2794,2,300000 -bra_dun02,0,0 monster Solid Iara 2795,3,300000 -lou_dun02,0,0 monster Yao Jun Ringleader 2796,1,300000 -gef_dun00,0,0 monster Furious Hunter Fly 2797,1,300000 -prt_fild05,0,0 monster Elusive Hornet 2798,2,300000 -dic_dun01,0,0 monster Swift Uni-horn Scaraba 2799,2,300000 -pay_fild09,0,0 monster Solid Horn 2800,2,300000 -ra_san03,0,0 monster Hodremlin Ringleader 2801,2,300000 -moc_fild17,0,0 monster Furious Hode 2802,2,300000 -ra_fild04,0,0 monster Elusive Hill Wind 2803,3,300000 -ra_fild03,0,0 monster Swift Hill Wind 2804,3,300000 -alde_dun02,0,0 monster Solid High Orc 2805,2,300000 -yuno_fild04,0,0 monster Harpy Ringleader 2806,3,300000 -yuno_fild03,0,0 monster Furious Harpy 2807,3,300000 -cmd_fild01,0,0 monster Elusive Grove 2808,2,300000 -pay_fild10,0,0 monster Swift Greatest General 2809,2,300000 -yuno_fild09,0,0 monster Solid Grand Peco 2810,2,300000 -yuno_fild08,0,0 monster Grand Peco Ringleader 2811,2,300000 -cmd_fild06,0,0 monster Furious Golem 2812,2,300000 -prt_fild11,0,0 monster Elusive Goblin 2813,3,300000 -gef_fild11,0,0 monster Swift Goblin 2814,3,300000 -yuno_fild11,0,0 monster Solid Goat 2815,2,300000 -yuno_fild07,0,0 monster Goat Ringleader 2816,2,300000 -gld2_prt,0,0 monster Furious Dark Hammer Kobold 2817,2,300000 -gld_dun03_2,0,0 monster Elusive Dark Hammer Kobold 2818,2,300000 -gld2_gef,0,0 monster Swift Dark Shadow 2819,2,300000 -gld_dun04_2,0,0 monster Solid Dark Shadow 2820,2,300000 -gld_dun02,0,0 monster Giant Hornet Ringleader 2821,2,300000 -nameless_n,0,0 monster Furious Ghoul 2822,1,300000 -gef_dun01,0,0 monster Elusive Ghoul 2823,2,300000 -yuno_fild12,0,0 monster Swift Geographer 2824,1,300000 -yuno_fild01,0,0 monster Solid Geographer 2825,2,300000 -glast_01,0,0 monster Gargoyle Ringleader 2826,1,300000 -gl_sew02,0,0 monster Furious Gargoyle 2827,1,300000 -ve_fild01,0,0 monster Elusive Galion 2828,1,300000 -cmd_fild02,0,0 monster Swift Seal 2829,3,300000 -tur_dun05,0,0 monster Solid Freezer 2830,1,300000 -tur_dun03,0,0 monster Freezer Ringleader 2831,1,300000 -abyss_01,0,0 monster Furious Ferus 2832,2,300000 -prt_sewb1,0,0 monster Elusive Familiar 2833,1,300000 -gefenia01,0,0 monster Swift False Angel 2834,2,300000 -prt_fild06,0,0 monster Solid Fabre 2835,2,300000 -pay_fild03,0,0 monster Fabre Ringleader 2836,3,300000 -mag_dun01,0,0 monster Furious Explosion 2837,1,300000 -gl_church,0,0 monster Elusive Evil Druid 2838,2,300000 -prt_fild10,0,0 monster Swift Elder Willow 2839,3,300000 -mjolnir_02,0,0 monster Solid Elder Willow 2840,3,300000 -ra_san04,0,0 monster Echio Ringleader 2841,1,300000 -mjolnir_12,0,0 monster Furious Dustiness 2842,2,300000 -um_fild01,0,0 monster Swift Dryad 2843,2,300000 -ve_fild02,0,0 monster Solid Drosera 2844,2,300000 -moc_fild07,0,0 monster Drops Ringleader 2845,3,300000 -mjolnir_04,0,0 monster Furious Driller 2846,3,300000 -in_sphinx1,0,0 monster Elusive Drainliar 2847,1,300000 -tur_dun01,0,0 monster Swift Dragon Tail 2848,1,300000 -nyd_dun01,0,0 monster Solid Draco 2849,2,300000 -dic_fild02,0,0 monster Dolomedes Ringleader 2850,2,300000 -pay_dun04,0,0 monster Furious Dokebi 2851,2,300000 -nif_fild01,0,0 monster Elusive Disguise 2852,2,300000 -jupe_core,0,0 monster Swift Dimik 2853,3,300000 -gef_dun02,0,0 monster Solid Deviruchi 2854,2,300000 -ra_fild01,0,0 monster Baby Desert Wolf Ringleader 2855,2,300000 -moc_fild11,0,0 monster Furious Baby Desert Wolf 2856,3,300000 -cmd_fild08,0,0 monster Elusive Deniro 2857,2,300000 -anthell01,0,0 monster Elusive Deniro 2857,3,300000 -tha_t06,0,0 monster Swift Death Word 2858,2,300000 -//tha_t06,0,0 monster Swift Death Word 2858,3,300000 //--Applied after Thanatos Revamped Patch. -tha_t04,0,0 monster Solid Death Word 2859,2,300000 -tha_t03,0,0 monster Death Word Ringleader 2860,2,300000 -gl_chyard,0,0 monster Furious Dark Priest 2861,2,300000 -lou_dun03,0,0 monster Elusive Zhu Po Long 2862,1,300000 -gef_fild05,0,0 monster Swift Creamy 2863,2,300000 -iz_dun02,0,0 monster Solid Cornutus 2864,2,300000 -xmas_dun01,0,0 monster Cookie Ringleader 2865,2,300000 -kh_kiehl01,0,0 monster Furious Constant 2866,2,300000 -dew_dun01,0,0 monster Elusive Comodo 2867,2,300000 -gef_fild09,0,0 monster Swift Coco 2868,2,300000 -gef_fild02,0,0 monster Solid Coco 2869,3,300000 -c_tower4,0,0 monster Clock Ringleader 2870,2,300000 -c_tower2,0,0 monster Furious Clock 2871,1,300000 -gef_fild00,0,0 monster Elusive Chonchon 2872,2,300000 -dic_fild01,0,0 monster Swift Centipede 2873,2,300000 -ecl_tdun01,0,0 monster Solid Cenere 2874,1,300000 -lhz_dun04,0,0 monster Celia Ringleader 2875,3,300000 -gld_dun03,0,0 monster Furious Caterpillar 2876,2,300000 -gl_cas01,0,0 monster Elusive Carat 2877,2,300000 -mjolnir_01,0,0 monster Swift Caramel 2878,2,300000 -ma_fild02,0,0 monster Solid Bungisngis 2879,2,300000 -odin_tem01,0,0 monster Breeze Ringleader 2880,1,300000 -lhz_fild03,0,0 monster Furious Breeze 2881,3,300000 -man_fild02,0,0 monster Elusive Bradium Golem 2882,2,300000 -gon_dun01,0,0 monster Swift Bloody Butterfly 2883,2,300000 -pay_fild07,0,0 monster Bigfoot Ringleader 2884,2,300000 -alde_dun04,0,0 monster Furious Bathory 2885,1,300000 -arug_dun01,0,0 monster Elusive Banshee Master 2886,2,300000 -abbey01,0,0 monster Swift Banshee 2887,3,300000 -dew_dun02,0,0 monster Solid Banaspaty 2888,2,300000 -tur_dun04,0,0 monster Assaulter Ringleader 2889,1,300000 -mjolnir_10,0,0 monster Furious Argos 2890,2,300000 -mjolnir_11,0,0 monster Elusive Argiope 2891,2,300000 -mjolnir_05,0,0 monster Swift Argiope 2892,2,300000 -gl_dun01,0,0 monster Solid Arclouze 2893,1,300000 -alde_dun01,0,0 monster Arclouze Ringleader 2894,1,300000 -juperos_02,0,0 monster Furious Apocalypse 2895,3,300000 -dic_dun02,0,0 monster Elusive Antler Scaraba 2896,2,300000 -ecl_tdun03,0,0 monster Swift Antique Book 2897,1,300000 -ecl_tdun02,0,0 monster Solid Antique Book 2898,1,300000 -gl_sew04,0,0 monster Furious Anolian 2899,2,300000 -gld2_ald,0,0 monster Elusive Angra Mantis 2900,2,300000 -gld_dun02_2,0,0 monster Swift Angra Mantis 2901,2,300000 -anthell02,0,0 monster Solid Andre 2902,2,300000 -tha_t02,0,0 monster Ancient Mimic Ringleader 2903,2,300000 -ra_fild08,0,0 monster Furious Anacondaq 2904,2,300000 -prt_fild04,0,0 monster Elusive Ambernite 2905,2,300000 -dew_fild01,0,0 monster Swift Rafflesia Arnoldi 2906,2,300000 -cmd_fild03,0,0 monster Solid Alligator 2907,3,300000 -kh_dun01,0,0 monster Aliza Ringleader 2908,1,300000 -kh_dun02,0,0 monster Furious Alicel 2909,1,300000 -c_tower3,0,0 monster Elusive Alarm 2910,1,300000 -ra_san05,0,0 monster Swift Agav 2911,2,300000 -abyss_03,0,0 monster Solid Acidus 2912,2,300000 -abyss_02,0,0 monster Acidus Ringleader 2913,2,300000 +gl_cas02,0,0 monster Furious Wanderer 2620,2,180000 +gl_church,0,0 monster Elusive Evil Druid 2838,2,180000 +gl_chyard_,0,0 monster Elusive Wraith Dead (Nightmare) 2733,2,180000,0 +gl_chyard,0,0 monster Furious Dark Priest 2861,2,180000 +gl_dun01,0,0 monster Solid Arclouze 2893,1,180000 +gl_dun02,0,0 monster Furious Majoruros 2767,1,180000 +gl_in01,0,0 monster Marionette Ringleader 2761,1,180000 +gl_knt01,0,0 monster Solid Raydric 2691,2,180000 +gl_knt02,0,0 monster Swift Raydric 2690,2,180000 +gl_prison,0,0 monster Solid Zombie Prisoner 2604,1,180000 +gl_prison1,0,0 monster Furious Injustice 2792,2,180000 +gl_sew01,0,0 monster Solid Whisper 2618,1,180000 +gl_sew02,0,0 monster Furious Gargoyle 2827,1,180000 +gl_sew03,0,0 monster Elusive Sting 2640,2,180000 +gl_sew04,0,0 monster Furious Anolian 2899,2,180000 +gl_step,0,0 monster Solid Wind Ghost 2614,2,180000 +glast_01,0,0 monster Gargoyle Ringleader 2826,1,180000 +gld_dun01_2,0,0 monster Furious Skeleton General 2659,2,180000 +gld_dun01,0,0 monster Solid Leib Olmai 2780,2,180000 +gld_dun02_2,0,0 monster Swift Angra Mantis 2901,2,180000 +gld_dun02,0,0 monster Giant Hornet Ringleader 2821,2,180000 +gld_dun03_2,0,0 monster Elusive Dark Hammer Kobold 2818,2,180000 +gld_dun03,0,0 monster Furious Caterpillar 2876,2,180000 +gld_dun04_2,0,0 monster Solid Dark Shadow 2820,2,180000 +gld_dun04,0,0 monster Zombie Master Ringleader 2605,2,180000 +gld2_ald,0,0 monster Elusive Angra Mantis 2900,2,180000 +gld2_gef,0,0 monster Swift Dark Shadow 2819,2,180000 +gld2_pay,0,0 monster Skeleton General Ringleader 2658,2,180000 +gld2_prt,0,0 monster Furious Dark Hammer Kobold 2817,2,180000 +gon_dun01,0,0 monster Swift Bloody Butterfly 2883,2,180000 +gon_dun02,0,0 monster Solid Enchanted Peach Tree 2775,1,180000 +gon_dun03,0,0 monster Elusive Evil Nymph 2617,2,180000 +gon_fild01,0,0 monster Dumpling Child Ringleader 2683,2,180000 +hu_fild01,0,0 monster Novus Ringleader 2731,2,180000 +hu_fild02,0,0 monster Solid Novus 2730,2,180000 +hu_fild04,0,0 monster Swift Novus 2729,2,180000 +hu_fild05,0,0 monster Elusive Novus 2728,2,180000 +hu_fild06,0,0 monster Swift Shellfish 2666,1,180000 +ice_dun01,0,0 monster Swift Siroma 2661,1,180000 +ice_dun02,0,0 monster Solid Snowier 2652,2,180000 +ice_dun03,0,0 monster Swift Ice Titan 2794,2,180000 +in_sphinx1,0,0 monster Elusive Drainliar 2847,1,180000 +in_sphinx2,0,0 monster Solid Requiem 2687,2,180000 +in_sphinx3,0,0 monster Elusive Marduk 2763,1,180000 +in_sphinx4,0,0 monster Swift Minorous 2749,1,180000 +in_sphinx5,0,0 monster Swift Pasana 2719,2,180000 +iz_dun00,0,0 monster Furious Plankton 2707,2,180000 +iz_dun01,0,0 monster Solid Vadon 2628,2,180000 +iz_dun02,0,0 monster Solid Cornutus 2864,2,180000 +iz_dun03,0,0 monster Elusive Phen 2713,2,180000 +iz_dun04,0,0 monster Furious Merman 2757,2,180000 +iz_dun05,0,0 monster Furious Lamp Rey 2669,2,180000 +jupe_core,0,0 monster Swift Dimik 2853,3,180000 +juperos_01,0,0 monster Furious Venatu 2625,3,180000 +juperos_02,0,0 monster Furious Apocalypse 2895,3,180000 +kh_dun01,0,0 monster Aliza Ringleader 2908,1,180000 +kh_dun02,0,0 monster Furious Alicel 2909,1,180000 +kh_kiehl01,0,0 monster Furious Constant 2866,2,180000 +lhz_dun01,0,0 monster Remover Ringleader 2688,3,180000 +lhz_dun02,0,0 monster Laurell Weinder Ringleader 2692,3,180000 +lhz_dun03,0,0 monster Solid Cecil Damon 2667,3,180000 +lhz_dun04,0,0 monster Celia Ringleader 2875,3,180000 +lhz_fild01,0,0 monster Swift Rafflesia 2695,3,180000 +lhz_fild01,0,0 monster Poring Ringleader 2696,2,180000 +lhz_fild01,0,0 monster Furious Poring 2697,2,180000 +lhz_fild01,0,0 monster Elusive Poring 2698,2,180000 +lhz_fild02,0,0 monster Swift Stem Worm 2641,2,180000 +lhz_fild03,0,0 monster Furious Breeze 2881,3,180000 +lou_dun01,0,0 monster Elusive Jing Guai 2778,2,180000 +lou_dun02,0,0 monster Yao Jun Ringleader 2796,1,180000 +lou_dun03,0,0 monster Elusive Zhu Po Long 2862,1,180000 +lou_fild01,0,0 monster Elusive Mi Gao 2793,1,180000 +ma_dun01,0,0 monster Manananggal Ringleader 2766,2,180000 +ma_fild01,0,0 monster Elusive Tiyanak 2631,2,180000 +ma_fild02,0,0 monster Solid Bungisngis 2879,2,180000 +mag_dun01,0,0 monster Furious Explosion 2837,1,180000 +mag_dun02,0,0 monster Furious Nightmare Terror 2732,2,180000 +mal_dun01,0,0 monster Elusive Red Eruma 2689,2,180000 +man_fild01,0,0 monster Solid Nephentes 2735,2,180000 +man_fild02,0,0 monster Elusive Bradium Golem 2882,2,180000 +man_fild03,0,0 monster Solid Tatacho 2637,1,180000 +mjo_dun01,0,0 monster Tarou Ringleader 2638,2,180000 +mjo_dun02,0,0 monster Solid Martin 2760,2,180000 +mjo_dun03,0,0 monster Elusive Skeleton Worker 2660,2,180000 +mjolnir_01,0,0 monster Swift Caramel 2878,2,180000 +mjolnir_02,0,0 monster Solid Elder Willow 2840,3,180000 +mjolnir_03,0,0 monster Side Winder Ringleader 2663,2,180000 +mjolnir_04,0,0 monster Furious Driller 2846,3,180000 +mjolnir_05,0,0 monster Swift Argiope 2892,2,180000 +mjolnir_06,0,0 monster Solid Poison Spore 2705,3,180000 +mjolnir_07,0,0 monster Savage Ringleader 2673,3,180000 +mjolnir_08,0,0 monster Furious Beetle King 2787,2,180000 +mjolnir_09,0,0 monster Swift Savage Babe 2671,2,180000 +mjolnir_10,0,0 monster Furious Argos 2890,2,180000 +mjolnir_11,0,0 monster Elusive Argiope 2891,2,180000 +mjolnir_12,0,0 monster Furious Dustiness 2842,2,180000 +moc_fild01,0,0 monster Muka Ringleader 2741,3,180000 +moc_fild02,0,0 monster Elusive Peco Peco 2718,2,180000 +moc_fild03,0,0 monster Swift Wolf 2613,2,180000 +moc_fild07,0,0 monster Drops Ringleader 2845,3,180000 +moc_fild11,0,0 monster Furious Baby Desert Wolf 2856,3,180000 +moc_fild12,0,0 monster Furious Picky 2712,2,180000 +moc_fild13,0,0 monster Solid Steel Chonchon 2642,3,180000 +moc_fild16,0,0 monster Furious Sandman 2674,2,180000 +moc_fild17,0,0 monster Furious Hode 2802,2,180000 +moc_fild18,0,0 monster Elusive Scorpion 2670,3,180000 +moc_fild20,0,0 monster Swift Incarnation of Morocc 2744,1,180000 +moc_fild21,0,0 monster Elusive Incarnation of Morocc 2743,2,180000 +moc_fild22,0,0 monster Furious Incarnation of Morocc 2742,3,180000 +moc_pryd02,0,0 monster Solid Mummy 2740,2,180000 +moc_pryd03,0,0 monster Swift Mummy 2739,2,180000 +moc_pryd04,0,0 monster Solid Isis 2790,2,180000 +moc_pryd05,0,0 monster Elusive Minorous 2748,2,180000 +moc_pryd06,0,0 monster Elusive Mimic 2753,2,180000 +moc_prydn1,0,0 monster Furious Minorous 2747,2,180000 +moc_prydn2,0,0 monster Furious Mimic 2752,2,180000 +mosk_dun01,0,0 monster Elusive Wood Goblin 2612,2,180000 +mosk_dun02,0,0 monster Swift Les 2779,1,180000 +mosk_dun03,0,0 monster Elusive Vavayaga 2626,2,180000 +mosk_fild02,0,0 monster Solid Side Winder 2662,1,180000 +nameless_n,0,0 monster Furious Ghoul 2822,1,180000 +new_1-3,0,0 monster Baby Poring Ringleader 2776,2,180000 +nif_fild01,0,0 monster Elusive Disguise 2852,2,180000 +nif_fild02,0,0 monster Swift Loli Ruri 2774,1,180000 +niflheim,0,0 monster Furious Lude 2772,1,180000 +nyd_dun01,0,0 monster Solid Draco 2849,2,180000 +odin_tem01,0,0 monster Breeze Ringleader 2880,1,180000 +odin_tem02,0,0 monster Solid Skogul 2657,1,180000 +odin_tem03,0,0 monster Plasma Ringleader 2706,2,180000 +orcsdun01,0,0 monster Elusive Orc Zombie 2723,2,180000 +orcsdun02,0,0 monster Swift Orc Skeleton 2724,2,180000 +pay_dun00,0,0 monster Furious Zombie 2606,2,180000 +pay_dun01,0,0 monster Furious Soldier Skeleton 2649,2,180000 +pay_dun02,0,0 monster Soldier Skeleton Ringleader 2648,3,180000 +pay_dun03,0,0 monster Swift Sohee 2651,2,180000 +pay_dun04,0,0 monster Furious Dokebi 2851,2,180000 +pay_fild01,0,0 monster Willow Ringleader 2615,2,180000 +pay_fild02,0,0 monster Boa Ringleader 2653,3,180000 +pay_fild03,0,0 monster Fabre Ringleader 2836,3,180000 +pay_fild04,0,0 monster Elusive Poporing 2703,2,180000 +pay_fild06,0,0 monster Wormtail Ringleader 2610,3,180000 +pay_fild07,0,0 monster Bigfoot Ringleader 2884,2,180000 +pay_fild09,0,0 monster Solid Horn 2800,2,180000 +pay_fild10,0,0 monster Swift Greatest General 2809,2,180000 +prt_fild00,0,0 monster Roda Frog Ringleader 2678,2,180000 +prt_fild01,0,0 monster Lunatic Ringleader 2771,2,180000 +prt_fild02,0,0 monster Elusive Stainer 2645,3,180000 +prt_fild03,0,0 monster Swift Yoyo 2608,2,180000 +prt_fild04,0,0 monster Elusive Ambernite 2905,2,180000 +prt_fild05,0,0 monster Elusive Hornet 2798,2,180000 +prt_fild06,0,0 monster Solid Fabre 2835,2,180000 +prt_fild07,0,0 monster Elusive Rocker 2680,3,180000 +prt_fild08,0,0 monster Solid Lunatic 2770,1,180000 +prt_fild08,0,0 monster Poring Ringleader 2696,1,180000 +prt_fild08,0,0 monster Furious Poring 2697,1,180000 +prt_fild08,0,0 monster Elusive Poring 2698,1,180000 +prt_fild08,0,0 monster Swift Poring 2699,1,180000 +prt_fild09,0,0 monster Elusive Magnolia 2768,2,180000 +prt_fild10,0,0 monster Swift Elder Willow 2839,3,180000 +prt_fild11,0,0 monster Elusive Goblin 2813,3,180000 +prt_maze01,0,0 monster Solid Savage 2672,2,180000 +prt_maze02,0,0 monster Furious Poporing 2702,2,180000 +prt_maze03,0,0 monster Poporing Ringleader 2701,2,180000 +prt_maze03,0,0 monster Swift Mantis 2764,2,180000 +prt_sewb1,0,0 monster Elusive Familiar 2833,1,180000 +prt_sewb2,0,0 monster Furious Thief Bug 2634,2,180000 +prt_sewb3,0,0 monster Thief Bug Ringleader 2633,3,180000 +prt_sewb4,0,0 monster Solid Thief Bug 2632,2,180000 +ra_fild01,0,0 monster Baby Desert Wolf Ringleader 2855,2,180000 +ra_fild03,0,0 monster Swift Hill Wind 2804,3,180000 +ra_fild04,0,0 monster Elusive Hill Wind 2803,3,180000 +ra_fild05,0,0 monster Solid Kobold 2785,3,180000 +ra_fild06,0,0 monster Swift Kobold Archer 2784,3,180000 +ra_fild08,0,0 monster Furious Anacondaq 2904,2,180000 +ra_fild12,0,0 monster Solid Roween 2677,2,180000 +ra_san01,0,0 monster Swift Vanberk 2627,2,180000 +ra_san02,0,0 monster Isilla Ringleader 2791,2,180000 +ra_san03,0,0 monster Hodremlin Ringleader 2801,2,180000 +ra_san04,0,0 monster Echio Ringleader 2841,1,180000 +ra_san05,0,0 monster Swift Agav 2911,2,180000 +schg_dun01,0,0 monster Elusive Zakudam 2607,2,180000 +spl_fild01,0,0 monster Solid Dark Pinguicula 2710,2,180000 +spl_fild02,0,0 monster Pinguicula Ringleader 2711,2,180000 +spl_fild03,0,0 monster Elusive Luciola Vespa 2773,1,180000 +teg_dun01,0,0 monster Elusive Eremes 2783,2,180000,0 +teg_dun02,0,0 monster Furious Wickebine Tres 2782,2,180000,0 +tha_t01,0,0 monster Swift Rideword 2681,2,180000 +//tha_t01,0,0 monster Swift Rideword 2681,1,180000 //--Applied after Thanatos Revamped Patch. +tha_t02,0,0 monster Ancient Mimic Ringleader 2903,2,180000 +tha_t03,0,0 monster Death Word Ringleader 2860,2,180000 +tha_t04,0,0 monster Solid Death Word 2859,2,180000 +tha_t05,0,0 monster Owl Duke Ringleader 2721,2,180000 +//tha_t05,0,0 monster Owl Duke Ringleader 2721,3,180000 //--Applied after Thanatos Revamped Patch. +tha_t06,0,0 monster Swift Death Word 2858,2,180000 +//tha_t06,0,0 monster Swift Death Word 2858,3,180000 //--Applied after Thanatos Revamped Patch. +tha_t07,0,0 monster Swift Baroness of Retribution 2686,2,180000 +//tha_t07,0,0 monster Swift Baroness of Retribution 2686,1,180000 //--Applied after Thanatos Revamped Patch. +tha_t08,0,0 monster Elusive Baroness of Retribution 2685,2,180000 +//tha_t08,0,0 monster Elusive Baroness of Retribution 2685,1,180000 //--Applied after Thanatos Revamped Patch. +tha_t09,0,0 monster Elusive Lady Solace 2650,2,180000 //--Remove after Thanatos Ravamped Patch +tha_t10,0,0 monster Furious Baroness of Retribution 2684,2,180000 //--Remove after Thanatos Ravamped Patch +tha_t11,0,0 monster Elusive Mistress of Shelter 2665,2,180000 //--Remove after Thanatos Ravamped Patch +tha_t12,0,0 monster Dame of Sentinel Ringleader 2726,2,180000 //--Remove after Thanatos Ravamped Patch +thor_v01,0,0 monster Elusive Kasa 2788,2,180000 +thor_v02,0,0 monster Knocker Ringleader 2786,1,180000 +thor_v03,0,0 monster Elusive Salamander 2675,2,180000 +treasure_n1,0,0 monster Swift Spore 2646,2,180000 +treasure_n2,0,0 monster Weak Skeleton Ringleader 2619,2,180000 +treasure02,0,0 monster Swift Sailor Skeleton 2676,1,180000 +treasure02,0,0 monster Penomena Ringleader 2716,2,180000 +tur_dun01,0,0 monster Swift Dragon Tail 2848,1,180000 +tur_dun02,0,0 monster Solid Solider 2647,2,180000 +tur_dun03,0,0 monster Freezer Ringleader 2831,1,180000 +tur_dun04,0,0 monster Assaulter Ringleader 2889,1,180000 +tur_dun05,0,0 monster Solid Freezer 2830,1,180000 +um_fild01,0,0 monster Swift Dryad 2843,2,180000 +um_fild02,0,0 monster Furious Wootan Fighter 2611,1,180000 +um_fild03,0,0 monster Solid Parasite 2720,1,180000 +um_fild04,0,0 monster Furious Wild Rose 2616,1,180000 +ve_fild01,0,0 monster Elusive Galion 2828,1,180000 +ve_fild02,0,0 monster Solid Drosera 2844,2,180000 +ve_fild03,0,0 monster Swift Magmaring 2769,2,180000 +ve_fild04,0,0 monster Elusive Muscipular 2738,2,180000 +ve_fild07,0,0 monster Stapo Ringleader 2643,2,180000 +xmas_dun01,0,0 monster Cookie Ringleader 2865,2,180000 +xmas_dun02,0,0 monster Furious Myst Case 2737,2,180000 +xmas_fild01,0,0 monster Furious Marin 2762,1,180000 +yuno_fild01,0,0 monster Solid Geographer 2825,2,180000 +yuno_fild02,0,0 monster Swift Sleeper 2656,2,180000 +yuno_fild03,0,0 monster Furious Harpy 2807,3,180000 +yuno_fild04,0,0 monster Harpy Ringleader 2806,3,180000 +yuno_fild06,0,0 monster Elusive Sleeper 2655,1,180000 +yuno_fild07,0,0 monster Goat Ringleader 2816,2,180000 +yuno_fild08,0,0 monster Grand Peco Ringleader 2811,2,180000 +yuno_fild09,0,0 monster Solid Grand Peco 2810,2,180000 +yuno_fild11,0,0 monster Solid Goat 2815,2,180000 +yuno_fild12,0,0 monster Swift Geographer 2824,1,180000 diff --git a/npc/re/mobs/dungeons/bra_dun.txt b/npc/re/mobs/dungeons/bra_dun.txt index 0bb404dab1..0da9a2dcc8 100644 --- a/npc/re/mobs/dungeons/bra_dun.txt +++ b/npc/re/mobs/dungeons/bra_dun.txt @@ -1,37 +1,29 @@ //===== rAthena Script ======================================= //= Brasilis Dungeon Monster Spawn Script -//===== By: ================================================== -//= Kisuka -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= Official monster spawns in Brasilis Dungeon. -//===== Additional Comments: ================================= +//===== Changelog: =========================================== //= 1.0 Official spawns from Aegis [Kisuka] //============================================================ //================================================== // bra_dun01 - Behind the Waterfall //================================================== -bra_dun01,0,0 monster Piranha 2070,80,5000 -bra_dun01,0,0 monster Iara 2069,30,5000 -bra_dun01,0,0 monster Black Mushroom 1084,5,180000,90000 -bra_dun01,0,0 monster Marina 1141,20,5000 -bra_dun01,0,0 monster Kukre 1070,10,5000 -bra_dun01,0,0 monster Plankton 1161,10,5000 -bra_dun01,0,0 monster Hydra 1068,15,5000 +bra_dun01 monster Piranha 2070,80,5000 +bra_dun01 monster Iara 2069,30,5000 +bra_dun01 monster Black Mushroom 1084,5,180000,90000 +bra_dun01 monster Marina 1141,20,5000 +bra_dun01 monster Kukre 1070,10,5000 +bra_dun01 monster Plankton 1161,10,5000 +bra_dun01 monster Hydra 1068,15,5000 //================================================== // bra_dun02 - Behind the Waterfall //================================================== -bra_dun02,0,0 monster Piranha 2070,60,5000 -bra_dun02,0,0 monster Iara 2069,110,5000 -bra_dun02,0,0 monster Marina 1141,10,5000 -bra_dun02,0,0 monster Kukre 1070,10,5000 -bra_dun02,0,0 monster Plankton 1161,10,5000 -bra_dun02,0,0 monster Hydra 1068,15,5000 -bra_dun02,0,0 monster Shining Plant 1083,2,5000 -bra_dun02,0,0 monster Black Mushroom 1084,5,5000 -bra_dun02,0,0,0,0 boss_monster Boitata 2068,1,7200000,600000,1 +bra_dun02 monster Piranha 2070,60,5000 +bra_dun02 monster Iara 2069,110,5000 +bra_dun02 monster Marina 1141,10,5000 +bra_dun02 monster Kukre 1070,10,5000 +bra_dun02 monster Plankton 1161,10,5000 +bra_dun02 monster Hydra 1068,15,5000 +bra_dun02 monster Shining Plant 1083,2,5000 +bra_dun02 monster Black Mushroom 1084,5,5000 +bra_dun02 boss_monster Boitata 2068,1,7200000,600000,1 diff --git a/npc/re/mobs/dungeons/ein_dun.txt b/npc/re/mobs/dungeons/ein_dun.txt index dfade4a99f..c62aa01fe7 100644 --- a/npc/re/mobs/dungeons/ein_dun.txt +++ b/npc/re/mobs/dungeons/ein_dun.txt @@ -14,6 +14,7 @@ //= 1.3 Official kRO 10.1 spawns [Playtester] //= 1.4 More accurate spawns [Playtester] //= 1.5 Corrected MVP spawn variance. [L0ne_W0lf] +//= 1.6 Added Illusion of Teddy Bear. [Atemo] //============================================================ //================================================== @@ -49,3 +50,46 @@ ein_dun03 monster White Porcellio 20602,22 ein_dun03 monster Jeweliant 20598,20 ein_dun03 monster Jewel 20600,3 ein_dun03 boss_monster Jungoliant 20601,1,7200000,600000,0 + +//================================================== +// Illusion of Teddy Bear +//================================================== +ein_d02_i monster Red Teddybear 20255,25,5000,0,"ein_d02_i_boss::OnMobDead" +ein_d02_i monster Yellow Teddybear 20256,25,5000,0,"ein_d02_i_boss::OnMobDead" +ein_d02_i monster Green Teddybear 20257,25,5000,0,"ein_d02_i_boss::OnMobDead" +ein_d02_i monster White Teddybear 20258,20,5000,0,"ein_d02_i_boss::OnMobDead" +ein_d02_i monster Blue Teddybear 20259,20,5000,0,"ein_d02_i_boss::OnMobDead" +ein_d02_i monster Pitman Labor Type 20261,20 +ein_d02_i monster Piece of Spirit 20262,15 +ein_d02_i monster Spirit Dwelling Obsidian 20263,15 + +- script ein_d02_i_boss -1,{ + end; +OnMobDead: + if (playerattached()) { + if (.count < 2500) + .count++; + if (!.boss_spawn && !.cooldown && .count == 2500) { + .boss_spawn = true; + .count = 0; + killmonster "ein_d02_i", "ein_d02_i_boss::OnBossDeath"; + // mapannounce "ein_d02_i", "", bc_map; // Unknown text + getunitdata( killedgid, .@data ); + monster "ein_d02_i", .@data[UMOB_X], .@data[UMOB_Y], "--ja--", 20260,1, "ein_d02_i_boss::OnBossDeath"; // ILL_TEDDY_BEAR_S + end; + } + } + end; +OnBossDeath: + // (no announce) + killmonster "ein_d02_i", "ein_d02_i_boss::OnBossDeath"; + .boss_spawn = false; + .cooldown = true; + initnpctimer; + end; + +OnTimer7200000: + .cooldown = false; + stopnpctimer; + end; +} diff --git a/npc/re/mobs/fields/brasilis.txt b/npc/re/mobs/fields/brasilis.txt index 126ec477b1..259954b777 100644 --- a/npc/re/mobs/fields/brasilis.txt +++ b/npc/re/mobs/fields/brasilis.txt @@ -1,22 +1,16 @@ //===== rAthena Script ======================================= //= Brasilis Fields Monster Spawn Script -//===== By: ================================================== -//= Kisuka -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Additional Comments: ================================= +//===== Changelog: =========================================== //= 1.0 Official spawns from Aegis [Kisuka] //============================================================ //================================================== // bra_fild01 - Brasilis Field //================================================== -bra_fild01,0,0 monster Curupira 2074,50,5000 -bra_fild01,0,0 monster Dokebi 1110,10,5000 -bra_fild01,0,0 monster Savage 1166,5,5000 -bra_fild01,0,0 monster Headless Mule 2071,40,5000 -bra_fild01,0,0 monster Red Mushroom 1085,5,5000 -bra_fild01,0,0 monster Jaguar 2072,55,5000 -bra_fild01,0,0 monster Toucan 2073,60,5000 +bra_fild01 monster Curupira 2074,50,5000 +bra_fild01 monster Dokebi 1110,10,5000 +bra_fild01 monster Savage 1166,5,5000 +bra_fild01 monster Headless Mule 2071,40,5000 +bra_fild01 monster Red Mushroom 1085,5,5000 +bra_fild01 monster Jaguar 2072,55,5000 +bra_fild01 monster Toucan 2073,60,5000 diff --git a/npc/re/mobs/fields/prontera.txt b/npc/re/mobs/fields/prontera.txt index 30edb70bfa..51744d8f0d 100644 --- a/npc/re/mobs/fields/prontera.txt +++ b/npc/re/mobs/fields/prontera.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Athena (1.0) //===== Current Version: ===================================== -//= 1.7 +//= 1.8 //===== Additional Comments: ================================= //= 1.2 fixed some map name typos [Lupus] //= 1.3 Official kRO 10.1 spawns [Playtester] @@ -11,6 +11,7 @@ //= 1.5 Updated to Renewal spawns. //= 1.6 Added Prontera Field 8 duplicates. [Euphy] //= 1.7 Correct Spawn by Navigation's mob data. [attackjom] +//= 1.8 Official 18.1 Field 8 spawns, duplicates removed [Playtester] //============================================================ //================================================== @@ -90,36 +91,27 @@ prt_fild07,225,110,5,5 monster Black Mushroom 1084,3,360000,180000 //================================================== // prt_fild08 - Prontera Field //================================================== -prt_fild08,0,0 monster Poring 1002,110,5000 -prt_fild08,0,0 monster Lunatic 1063,110,5000 -prt_fild08,0,0 monster Fabre 1007,88,5000 -prt_fild08,0,0 monster Little Poring 2398,33,50000 -prt_fild08,0,0 monster Pupa 1008,66,5000 - -//================================================== -// prt_fild08 - Duplicates -//================================================== -prt_fild08a,0,0 monster Poring 1002,110,5000 -prt_fild08a,0,0 monster Lunatic 1063,110,5000 -prt_fild08a,0,0 monster Fabre 1007,88,5000 -prt_fild08a,0,0 monster Little Poring 2398,33,50000 -prt_fild08a,0,0 monster Pupa 1008,66,5000 -prt_fild08b,0,0 monster Poring 1002,110,5000 -prt_fild08b,0,0 monster Lunatic 1063,110,5000 -prt_fild08b,0,0 monster Fabre 1007,88,5000 -prt_fild08b,0,0 monster Little Poring 2398,33,50000 -prt_fild08b,0,0 monster Pupa 1008,66,5000 -prt_fild08c,0,0 monster Poring 1002,110,5000 -prt_fild08c,0,0 monster Lunatic 1063,110,5000 -prt_fild08c,0,0 monster Fabre 1007,88,5000 -prt_fild08c,0,0 monster Little Poring 2398,33,50000 -prt_fild08c,0,0 monster Pupa 1008,66,5000 -prt_fild08d,0,0 monster Poring 1002,110,5000 -prt_fild08d,0,0 monster Lunatic 1063,110,5000 -prt_fild08d,0,0 monster Fabre 1007,88,5000 -prt_fild08d,0,0 monster Little Poring 2398,33,50000 -prt_fild08d,0,0 monster Pupa 1008,66,5000 - +prt_fild08,0,0 monster Poring 1002,20,5000 +prt_fild08,0,0 monster Lunatic 1063,20,5000 +prt_fild08,0,0 monster Fabre 1007,10,5000 +prt_fild08,305,233,10,10 monster Poring 1002,2,15000 +prt_fild08,305,233,10,10 monster Lunatic 1063,2,15000 +prt_fild08,305,233,10,10 monster Fabre 1007,2,15000 +prt_fild08,271,249,20,20 monster Poring 1002,5,15000 +prt_fild08,271,249,20,20 monster Lunatic 1063,5,15000 +prt_fild08,271,249,20,20 monster Fabre 1007,5,15000 +prt_fild08,94,335,50,50 monster Poring 1002,20,10000 +prt_fild08,166,334,50,50 monster Poring 1002,20,10000 +prt_fild08,253,337,50,50 monster Poring 1002,20,10000 +prt_fild08,228,230,30,30 monster Lunatic 1063,10,10000 +prt_fild08,246,263,50,50 monster Lunatic 1063,10,10000 +prt_fild08,190,237,50,50 monster Lunatic 1063,10,10000 +prt_fild08,100,256,50,50 monster Lunatic 1063,10,10000 +prt_fild08,70,164,70,70 monster Fabre 1007,20,10000 +prt_fild08,144,147,70,70 monster Fabre 1007,20,10000 +prt_fild08,263,79,90,90 monster Fabre 1007,20,10000 +prt_fild08,336,113,40,40 monster Pupa 1008,20,10000 +prt_fild08,330,269,40,40 monster Little Poring 2398,20,10000 //================================================== // prt_fild09 - Prontera Field diff --git a/npc/re/other/clans.txt b/npc/re/other/clans.txt index e2d573e5b4..0fba407124 100644 --- a/npc/re/other/clans.txt +++ b/npc/re/other/clans.txt @@ -103,7 +103,7 @@ prt_in,33,114,5 script Raffam Oranpere 10058,{ if( getcharid( 2 ) ){ mes "[Raffam Oranpere]"; mes "Come back to join after you leave your current guild."; - close; + close3; }else if( getcharid( 5 ) != 0 ){ cutin "laperm04.bmp", 2; mes "[Raffam Oranpere]"; @@ -268,7 +268,7 @@ prt_in,35,114,5 script Devon Aire 10059,{ if( getcharid( 2 ) ){ mes "[Devon Aire]"; mes "Leave your guild first to join my Clan, duh."; - close; + close3; }else if( getcharid( 5 ) != 0 ){ cutin "debon03.bmp", 2; mes "[Devon Aire]"; @@ -421,7 +421,7 @@ prt_in,37,114,5 script Berman Aire 10060,{ mes "[Berman Aire]"; mes "Oh, no."; mes "In order to join, you first have to leave your current guild."; - close; + close3; }else if( getcharid( 5 ) != 0 ){ mes "[Berman Aire]"; mes "You're already in a Clan."; @@ -567,7 +567,7 @@ prt_in,39,114,5 script Shaam Rumi 10027,{ if( getcharid( 2 ) ){ mes "[Shaam Rumi]"; mes "Did you finish things up with your guild?"; - close; + close3; }else if( getcharid( 5 ) != 0 ){ mes "[Shaam Rumi]"; mes "Eh, you're already in a Clan. Hey, this isn't funny."; diff --git a/npc/re/quests/eden/56-70.txt b/npc/re/quests/eden/56-70.txt index 0927dd9ce0..3f2eda53f3 100644 --- a/npc/re/quests/eden/56-70.txt +++ b/npc/re/quests/eden/56-70.txt @@ -17,6 +17,7 @@ //= 1.5 Optimized, based on code by Zopokx. [Euphy] //= 1.6 Added support to Para_Team_Mark_ in Eden Group. [Ragno] //= 1.7 Added use of F_HasEdenGroupMark function. [Ragno] +//= 1.8 Reverting Magic Wand Quest to request Trunks. [Carlosgrr] //============================================================ moc_para01,42,38,3 script Mission [56 - 70] 857,{ @@ -49,7 +50,7 @@ moc_para01,42,38,3 script Mission [56 - 70] 857,{ case 1: callsub L_HuntingQuest,3260,16000,6000; case 2: callsub L_HuntingQuest,3261,16000,7000; case 3: callsub L_Quest,3262,17000,7000,1032,40; - case 4: callsub L_Quest,3263,18000,8000,1021,30,7150,30; + case 4: callsub L_Quest,3263,18000,8000,1021,30,1019,30; } } end; @@ -354,7 +355,7 @@ L_Details: next; mes "To make the wand, I need some special materials."; next; - mes "Please bring me 30 Dokebi Horns and 30 Bamboo Cut. If you do so, I will lend you my magic wand once. Haha, good deal?"; + mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?"; next; mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; next; diff --git a/npc/re/quests/illusion_investigation.txt b/npc/re/quests/illusion_investigation.txt index ea17339fc9..6ea3e57d38 100644 --- a/npc/re/quests/illusion_investigation.txt +++ b/npc/re/quests/illusion_investigation.txt @@ -618,7 +618,6 @@ OnInit: end; } -/* ein_d02_i,161,180,5 script Machoko#machoco 8_F_GIRL,{ if (BaseLevel < 150) end; @@ -767,7 +766,6 @@ OnInit: questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "checkquest(3457,PLAYTIME) == 2" ); end; } -*/ tur_d03_i,125,186,5 script Orian#orian 4_M_LGTPOOR,{ if (BaseLevel < 150) diff --git a/npc/re/quests/quests_16_1.txt b/npc/re/quests/quests_16_1.txt index 1feafa6c62..f2f5dcb40e 100644 --- a/npc/re/quests/quests_16_1.txt +++ b/npc/re/quests/quests_16_1.txt @@ -4057,7 +4057,7 @@ prt_cas_q,20,139,3 script Spica Nerius#ep16_room01 4_EP16_SPICA,{ next; mes "[Spica]"; mes "" + strcharinfo(0) + ", why don't you go back to your room and wait for the message?"; - close; + close3; } mes "[Spica]"; mes "Why don't you go visit other families if you have not visited them all?"; @@ -4105,7 +4105,7 @@ prt_cas_q,20,139,3 script Spica Nerius#ep16_room01 4_EP16_SPICA,{ next; mes "[Spica]"; mes "I wonder if the old folks would hear me out though."; - close; + close3; } mes "[Spica]"; mes "Skia told me something similar to that."; @@ -8968,7 +8968,7 @@ prt_cas_q,93,74,4 script Po Richard#EP161GAM 4_M_6THPRIN1,{ emotion ET_OTL; mes "[Po Richard]"; mes "I guess the offer hasn't been attractive to you. I am sorry, but come back later when you change your mind."; - close; + close3; } emotion ET_OK; mes "[Po Richard]"; diff --git a/npc/re/quests/quests_16_2.txt b/npc/re/quests/quests_16_2.txt index 6d0c33dc8a..44d1e141bf 100644 --- a/npc/re/quests/quests_16_2.txt +++ b/npc/re/quests/quests_16_2.txt @@ -3650,6 +3650,7 @@ que_swat,145,57,3 script Philopontess#ep162_04 4_M_PHILOFONTES,{ terra_gloria_main = 25; questinfo_refresh(); close2; + cutin "",255; npctalk "Oh, please come here for a moment.", "Rookie#ep162_03", bc_self; end; } @@ -3669,7 +3670,7 @@ que_swat,145,57,3 script Philopontess#ep162_04 4_M_PHILOFONTES,{ mes "[Tess]"; mes "Not now?"; mes "Then get some rest and come back please."; - close; + close3; } mes "[Tess]"; mes "Since we don't know where they are hiding, start looking in corners such as cabinets and boxes."; @@ -3876,7 +3877,7 @@ rebel_in,70,78,3 script Elena Volkova#16.2rm 4_F_ELENA,{ if (countitem(25161) < 1) { mes "[USU commander Elena]"; mes "...Why are you empty-handed? Where is the cookie?"; - close; + close3; } emotion ET_DELIGHT; mes "[USU commander Elena]"; diff --git a/npc/re/quests/quests_17_1.txt b/npc/re/quests/quests_17_1.txt index c38b925f9f..5f7d7f8131 100644 --- a/npc/re/quests/quests_17_1.txt +++ b/npc/re/quests/quests_17_1.txt @@ -3955,7 +3955,7 @@ sp_rudus,184,360,5 script Elena Volkova#171_rudus 4_F_ELENA,{ setquest 7859; getitem 25723,15; getexp 800000,800000; - close; + close3; } if (isbegin_quest(7859) == 1) { cutin "162elena_01",2; @@ -4359,6 +4359,7 @@ sp_rudus,130,200,4 script Morning#171_rudus 4_EP17_MORNING,{ unittalk getcharid(3),strcharinfo(0) + " : This kid seems to be Morning.",bc_self; switch (prompt("Find a meal for Morning.:Chat with Morning.")) { case 255: + cutin "",255; setpcblock PCBLOCK_ALL,false; end; case 1: @@ -4382,6 +4383,7 @@ sp_rudus,130,200,4 script Morning#171_rudus 4_EP17_MORNING,{ sleep2 2000; switch (prompt("I'll bring it.:Something urgent happened.")) { case 255: + cutin "",255; setpcblock PCBLOCK_ALL,false; end; case 1: diff --git a/npc/re/quests/quests_17_2.txt b/npc/re/quests/quests_17_2.txt index 71d42315e5..17b314693f 100644 --- a/npc/re/quests/quests_17_2.txt +++ b/npc/re/quests/quests_17_2.txt @@ -3944,7 +3944,7 @@ ba_in01,51,157,3 script Est#ep172_est01 4_F_ESTLOVELOY,{ if (!is_party_leader()) { mes "^4D4DFFThis place is a memorial dungeon."; mes "You have to be a party leader to create a memorial dungeon.^000000"; - close; + close3; } if (instance_create(.@md_name$) == -3) dispbottom "The reservation of the instance '" + .@md_name$ + "' has failed due to an active instance."; diff --git a/npc/re/quests/quests_illusion_dungeons.txt b/npc/re/quests/quests_illusion_dungeons.txt index 2edc1936ce..090cc733a8 100644 --- a/npc/re/quests/quests_illusion_dungeons.txt +++ b/npc/re/quests/quests_illusion_dungeons.txt @@ -14,6 +14,7 @@ //= 1.5 Added Illusion of Luanda [Capuche] //= 1.6 Added Illusion of Underwater [Capuche] //= 1.7 Added Illusion of Twins [Capuche] +//= 1.8 Added Illusion of Teddy Bear [Atemo] //============================================================ //============================================================ @@ -9563,6 +9564,7 @@ iz_d04_i,127,228,4 script Jerrymon#jerry3 1_M_01,{ .@menu$[0] = "^999999" + getitemname(25899) + " Collection - Pending^000000"; break; case 2: + .@menu$[0] = "Collect " + getitemname(25899) + ""; break; } @@ -9586,6 +9588,7 @@ iz_d04_i,127,228,4 script Jerrymon#jerry3 1_M_01,{ .@menu$[1] = "^999999Deep Sea Creatures Killed - Pending^000000"; break; case 2: + .@menu$[1] = "Kill Deep Sea Creatures"; break; } @@ -11809,3 +11812,996 @@ ant_d02_i,125,73,6 script(CLOAKED) Vitata#part9 ILL_VITATA,{ ant_d02_i,128,73,6 duplicate(dummy_cloaked_npc) Quiet Maya#part10 ILL_MAYA ant_d02_i,129,73,2 duplicate(dummy_cloaked_npc) Vitata#part11 ILL_VITATA + + +//============================================================ +//= Illusion of Teddy Bear +//============================================================ + +ein_d02_i,161,189,3 script Exit#IBTin 4_ENERGY_BLUE,{ + warp "ein_dun01",189,80; + end; +} + +einbroch,149,242,5 script Coughing young man#ITB 4_M_NFMAN,3,3,{ + if (BaseLevel < 150) { + mes "[Coughing young man]"; + mes "The time has passed..."; + mes "Why haven't you come back yet..."; + mes "Cough Cough!!"; + next; + mes "^ff0000 You can start this quest from level 150.^000000"; + close; + } + if (ill_teddy == 0) { + mes "[Coughing young man]"; + mes "The time has passed..."; + mes "Why haven't you come back yet..."; + mes "Cough Cough!!"; + next; + mes "[Coughing young man]"; + mes "Cough...cough...cough..."; + mes "Ha ha ha... did something happen?"; + mes "If I don't go and check it myself..."; + mes "Cough cough"; + mes "Cough...lucky..."; + next; + mes "-plop-"; + next; + if (select( "Help him", "Ignore" ) == 2) { + mes "[Coughing young man]"; + mes "...cough..."; + mes "Cough cough... cough"; + close; + } + mes "[Coughing young man]"; + mes "...cough..."; + mes "Thank you."; + mes "Cough cough... cough"; + next; + select( "You'd better take a break" ); + mes "[Coughing young man]"; + mes "Cough..."; + mes "That's true, but... Cough... My friend who went to the mine for work hasn't come back yet... Cough."; + next; + mes "[Coughing young man]"; + mes "A few days ago, as soon as work was over... he left... he said he would come back..."; + mes "He hasn't come back...cough...yet."; + next; + mes "[Coughing young man]"; + mes "Cough...cough cough...cough"; + mes "I've talked to the guards, but...cough...cough...they didn't take it seriously..."; + next; + mes "[Coughing young man]"; + mes "^ff0000Steven^000000 is not that kind of guy...Cough cough"; + mes "If he hasn't contacted me yet, something must have happened."; + next; + mes "[Coughing young man]"; + mes "It seemed like he was going to ^ff0000the first floor of the mine in Einbech^000000."; + mes "If you look around, maybe you'll find a clue...even if it's just a small thing?"; + ill_teddy = 1; + setquest 11556; + close; + } + if (ill_teddy == 1) { + mes "[Coughing young man]"; + mes "A few days ago, as soon as work was over... he left... he said he would come back..."; + mes "He hasn't come back...cough...yet."; + next; + mes "[Coughing young man]"; + mes "Cough...cough cough...cough"; + mes "I've talked to the guards, but...cough...cough...they didn't take it seriously..."; + next; + mes "[Coughing young man]"; + mes "^ff0000Steven^000000 is not that kind of guy...Cough cough"; + mes "If he hasn't contacted me yet, something must have happened."; + next; + mes "[Coughing young man]"; + mes "It seemed like he was going to ^ff0000the first floor of the mine in Einbech^000000."; + mes "If you look around, maybe you'll find a clue...even if it's just a small thing?"; + close; + } + if (ill_teddy < 5) { + mes "[Coughing young man]"; + mes "Ah! Cough Cough!"; + mes "You're back!"; + mes "Steven is...cough"; + mes "Did you find him?"; + close; + } + if (ill_teddy == 5) { + mes "[Acid]"; + mes "Ah! Cough Cough!"; + mes "You're back!"; + mes "Steven is...cough"; + mes "Did you find him?"; + next; + select( "Pass the money" ); + mes "[Acid]"; + mes "...."; + mes "As expected...cough cough...what happened?"; + next; + mes "[Acid]"; + mes "There's no way they just sent money like this when nothing happened."; + next; + mes "[Acid]"; + mes "I ..cough..must go myself...cough..cough.."; + mes "Maybe it doesn't help much, but...cough"; + mes "My dearest friend...cough..may be in danger, but I can't stay still!...cluck"; + next; + mes "[Acid]"; + mes "Cough cough..Adventurer..Cough..Take me with you!"; + mes "Please!"; + ill_teddy = 6; + erasequest 11560; + setquest 11561; + close; + } + if (ill_teddy == 6) { + mes "[Acid]"; + mes "I ..cough..must go myself...cough..cough.."; + mes "Maybe it doesn't help much, but...cough"; + mes "My dearest friend...cough..may be in danger, but I can't stay still!...cluck"; + next; + mes "[Acid]"; + mes "Cough cough..Adventurer..Cough..Take me with you!"; + mes "Please!"; + close; + } + mes "[Acid]"; + mes "I've been in the mines for most of these days, so my cough seems to be getting better."; + mes "My body has become healthy!"; + mes "The air here is worse than the mine... Cough"; + close; + +OnTouch: + if (BaseLevel >= 150 && ill_teddy == 0) + npctalk "Coughing young man: Cough Cough!!", "", bc_self; + end; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "BaseLevel >= 150 && ill_teddy == 0" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11560) == 1" ); + end; +} + +ein_dun01,198,79,3 script Teddy Bear#ITB10 4_NASARIAN,{ + if (ill_teddy == 1) { + mes "[Teddy Bear in line]"; + mes "Stand in line!"; + next; + select( "Why are you standing here?" ); + mes "[Teddy Bear in line]"; + mes "What?"; + mes "Do you think I'd give such advanced information to a stranger I am seeing for the first time?"; + next; + mes "[Teddy Bear in line]"; + mes "If you're that curious, stand behind me and wait for your turn!"; + next; + mes "[Teddy Bear in line]"; + mes "Information isn't something you get for free."; + mes "All the time and effort..."; + next; + mes "[???????????]"; + mes "AAAAAAAAAA!!!!"; + mes "Let go!!!!"; + mes "You furry bastards!!!!"; + next; + mes "- A man's scream is heard from the front of the line. Let's check the situation at the front. -"; + ill_teddy = 2; + erasequest 11556; + setquest 11557; + close; + } + if (ill_teddy == 2) { + mes "[Teddy Bear in line]"; + mes "Have you heard something strange?"; + next; + mes "- A man's scream is heard from the front of the line. Let's check the situation at the front. -"; + close; + } + mes "[Teddy Bear in line]"; + mes "Stand in line!"; + close; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11556) == 1" ); + end; +} + +ein_dun01,189,84,7 script Bear#3 4_NASARIAN,{ + mes "[Teddy Bear in line]"; + mes "Hey there!!! Don't cut in line!!!"; + close; +} + +ein_dun01,189,82,7 duplicate(dummy_npc) Bear#4 4_NASARIAN +ein_dun01,190,80,7 duplicate(dummy_npc) Bear#5 4_NASARIAN +ein_dun01,191,80,5 duplicate(dummy_npc) Bear#6 4_NASARIAN + +ein_dun01,195,80,5 script Resident#8 4_M_EINMAN2,{ + mes "[Resident]"; + mes "One day, everyone started queuing up here, so I stood here too."; + mes "What's in front?"; + mes "Well? I'm just here because I'm curious..."; + close; +} + +ein_dun01,196,80,1 script Bear#9 4_NASARIAN,{ + mes "[Teddy Bear in line]"; + mes "Everyone stands in line for days waiting for their turn."; + close; +} + +ein_dun01,189,85,7 script Teddy Bear#IBT1 4_NASARIAN,{ + if (ill_teddy < 2) { + mes "[Teddy Bear in line]"; + mes "Whoops, it's my turn to go in soon."; + close; + } + if (ill_teddy == 2) { + mes "[Teddy Bear in line]"; + mes "Whh..what happened?"; + mes "I heard a scream when the man in front of me just entered."; + next; + select( "About the man." ); + mes "[Teddy Bear in line]"; + mes "What?"; + mes "I didn't even have time to look at that!"; + next; + mes "[Teddy Bear in line]"; + mes "Flaw... Hehe... ."; + mes "I've been waiting in line for days, but suddenly I'm not interested anymore..."; + next; + mes "[Teddy Bear in line]"; + mes "If you're really curious, I'll give you my position. Why don't you go in and check it out?"; + next; + mes "[Teddy Bear in line]"; + mes "I...it's not because I'm scared!"; + mes "I just... I guess what is inside is boring for me now."; + mes "Because I've lost interest?!"; + ill_teddy = 3; + erasequest 11557; + setquest 11558; + close; + } + if (ill_teddy == 3) { + mes "[Teddy Bear in line]"; + mes "Flaw... Hehe... ."; + mes "I've been waiting in line for days, but suddenly I'm not interested anymore..."; + next; + mes "[Teddy Bear in line]"; + mes "If you're really curious, I'll give you my position. Why don't you go in and check it out?"; + next; + mes "[Teddy Bear in line]"; + mes "I...it's not because I'm scared!"; + mes "I just... I guess what is inside is boring for me now."; + mes "Because I've lost interest?!"; + close; + } + mes "[Teddy Bear in line]"; + mes "What?"; + mes "The guy in front has already ran away!"; + mes "Don't get confused!"; + close; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11557) == 1" ); + end; +} + +ein_dun01,189,87,3 script An entrance somewhere#IBTin 4_ENERGY_BLUE,{ + if (ill_teddy < 3) { + mes "- Can't get in yet -"; + close; + } + warp "ein_d02_i",168,197; + end; +} + + +ein_d02_i,170,193,5 script Steven#IBT 4W_M_02,3,3,{ + if (checkweight(1201,3) == 0) { + mes "- Wait a moment!!"; + mes "- You have too many items. -"; + mes "- You can't receive this. -"; + mes "- Lighten your weight and -"; + mes "- try again. -"; + close; + } + if (ill_teddy < 3) + end; + if (ill_teddy == 3) { + mes "[Steven]"; + mes "Can't you let me go?!"; + mes "Let me go!"; + mes "This sucks!!!!"; + npctalk "Steven: Can't you let me go?!", "", bc_self; + cloakoffnpcself( "White Teddy Bear#IBT" ); + cloakoffnpcself( "Teddy Bear#IBT" ); + next; + mes "[Teddy Bear]"; + mes "Oops!"; + mes "Caught, I got caught!"; + mes "Let's run!!!!"; + npctalk "White Teddy Bear: Caught, I got caught!", "White Teddy Bear#IBT", bc_self; + npctalk "Teddy Bear: Let's Run!!!!", "Teddy Bear#IBT", bc_self; + ill_teddy = 4; + erasequest 11558; + setquest 11559; + close2; + cloakonnpcself( "White Teddy Bear#IBT" ); + cloakonnpcself( "Teddy Bear#IBT" ); + end; + } + if (ill_teddy == 4) { + mes "[Steven]"; + mes "What..."; + mes "That's..."; + next; + mes "[Steven]"; + mes "Hey!"; + mes "You there!"; + mes "Did you see that too?"; + mes "The Teddy Bear just..."; + next; + select( "Tell him about the coughing young man." ); + mes "[Steven]"; + mes "Huh? The coughing young man in Einbroch asked you to find me?"; + mes "Is it Acid..."; + next; + mes "[Steven]"; + mes "I told him I'd come back right away, but what the hell was the rumor about? There were a lot of people and monsters waiting in line."; + next; + mes "[Steven]"; + mes "So how was Acid?"; + mes "He couldn't sleep well because his cough got so bad."; + next; + mes "[Steven]"; + mes "I have to go back and send him to the hospital, but..."; + mes "If I'm not mistaken, that's..."; + next; + mes "[Steven]"; + mes "Ugh...things got messy..."; + next; + mes "[Steven]"; + mes "Hey."; + mes "Do me a favor."; + mes "He has to go to the hospital today and won't have enough money."; + next; + mes "[Steven]"; + mes "I think I need to do some work here."; + mes "You go back and tell him that I'm all right."; + mes "Give him this money too."; + next; + mes "[Steven]"; + mes "Please."; + mes "When I go back... I don't have anything, but I'll give you something in return."; + npctalk "Steven: Please.", "", bc_self; + ill_teddy = 5; + erasequest 11559; + setquest 11560; + close; + } + if (ill_teddy == 5) { + mes "[Steven]"; + mes "Hey."; + mes "Do me a favor."; + mes "He has to go to the hospital today and won't have enough money."; + next; + mes "[Steven]"; + mes "I think I need to do some work here."; + mes "You go back and tell him that I'm all right."; + mes "Give him this money too."; + next; + mes "[Steven]"; + mes "Please."; + mes "When I go back... I don't have anything, but I'll give you something in return."; + npctalk "Steven: Please.", "", bc_self; + close; + } + if (ill_teddy == 6) { + mes "[Steven]"; + mes "Oh you are here?"; + mes "Did he go to the hospital?"; + next; + mes "[Acid]"; + mes "Steven!"; + mes "Why make people so worried..."; + cloakoffnpcself( "Acid#IBT_inN01" ); + next; + mes "[Steven]"; + mes "No... why are you here?"; + mes "Go to the hospital!"; + next; + mes "[Acid]"; + mes "Do I have a hospital or a shop now?!"; + next; + mes "[Steven]"; + mes "Ugh..."; + mes "Okay...okay!"; + mes "Be quiet for now!"; + mes "Can you hear something strange coming from the north?"; + npctalk "Steven: Ugh... nagging...", "", bc_self; + ill_teddy = 7; + erasequest 11561; + setquest 11562; + close2; + cloakonnpcself( "Acid#IBT_inN01" ); + end; + } + if (ill_teddy == 7) { + mes "[Steven]"; + mes "Ugh..."; + mes "Okay!"; + mes "Be quiet for now!"; + mes "Can you hear something strange coming from the north?"; + npctalk "Steven: Ugh... nagging...", "", bc_self; + close; + } + if (ill_teddy == 8) { + if (checkquest(11563,HUNTING) != 2 || checkquest(11564,HUNTING) != 2) { + mes "[Steven]"; + mes "Too many of them."; + mes "This is too dangerous."; + mes "Let's clear things up and talk again."; + close; + } + mes "[Steven]"; + mes "Whoa..."; + mes "Did you send them out?"; + next; + mes "[Acid]"; + mes "Aren't those just Teddy Bears?"; + mes "Invading... they called themselves Nazarians, right?"; + cloakoffnpcself( "Acid#IBT_inN01" ); + next; + mes "[Steven]"; + mes "What the hell is going on..."; + mes "I'm out of my mind..."; + next; + select( "About Teddy Bear" ); + mes "[Acid]"; + mes "Steven brought it because he said he was looking for something salty to eat at home."; + next; + mes "[Acid]"; + mes "The pay is so good compared to the job, and the delivery place is also a mine, so it was a bit suspicious..."; + next; + mes "[Acid]"; + mes "I've been told that idiot is excited."; + next; + mes "[Steven]"; + mes "What an idiot!"; + mes "Thanks to you, I get hospital bills and your cough..."; + mes "Oh... Come to think of it, you don't cough anymore, do you?"; + npctalk "Steven: What an idiot!", "", bc_self; + next; + mes "[Acid]"; + mes "Uh... is that so?"; + mes "Come to think of it, I feel like I can breathe easier!"; + next; + mes "[Steven]"; + mes "No matter how many times I went to the hospital, there was no improvement..."; + mes "Maybe it was just the bad air!"; + npctalk "Steven: Air worse than in the mine...", "", bc_self; + next; + mes "[Acid]"; + mes "No, that's not important right now..."; + mes "The doll we made is alive and moving!"; + mes "They even tried to kidnap you!"; + next; + mes "[Steven]"; + mes "Kidnapped... Come to think of it, I helped a man who was being chased by a terrific Teddy Bear on the way back."; + next; + mes "[Steven]"; + mes "...I'm not the only one brought here, am I?"; + mes "I guess I'll have to stay here and watch the situation."; + mes "Acid! You can go back to the village for now."; + next; + mes "[Steven]"; + mes "Thank you for helping me too."; + mes "I can't give you much, but I'll give you the rare ore I found earlier."; + mes "It might come in handy somewhere!"; + ill_teddy = 9; + erasequest 11563; + erasequest 11564; + getitem 25271,5; // IllusionStone + getexp 3500000,2500000; + close2; + cloakonnpcself( "Acid#IBT_inN01" ); + end; + } + + // daily + switch( checkquest(11566,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Steven]"; + mes "Get some rest"; + mes "If you overdo it, you'll only ruin your health."; + close; + case 2: + erasequest 11566; + break; + } + switch( checkquest(11565,HUNTING) ) { + case -1: + mes "[Steven]"; + mes "Ugh..."; + mes "Where do these guys keep popping up?"; + next; + mes "[Steven]"; + mes "If you're familiar with combat, puppeteers who aren't familiar with combat won't find it easy to get out of here."; + next; + mes "[Steven]"; + mes "For now, I'm also taking care of it, but I'm not good enough alone."; + mes "If you're not busy right now, help me defeat " + getmonsterinfo("ILL_PITMAN", MOB_NAME) + ", " + getmonsterinfo("ILL_MINERAL", MOB_NAME) + ", and " + getmonsterinfo("ILL_OBSIDIAN", MOB_NAME) + "."; + mes "I think I'll be able to breathe a little more if I catch 10 of them."; + next; + if (select( "Accept", "Quit" ) == 2) { + mes "[Steven]"; + mes "Okay..."; + close; + } + mes "[Steven]"; + mes "Then please help me defeat"; + mes "10 " + getmonsterinfo("ILL_PITMAN", MOB_NAME) + ", " + getmonsterinfo("ILL_MINERAL", MOB_NAME) + ", and " + getmonsterinfo("ILL_OBSIDIAN", MOB_NAME) + "!"; + setquest 11565; + close; + case 0: + case 1: + mes "[Steven]"; + mes "How are you?"; + mes "How are things going with " + getmonsterinfo("ILL_PITMAN", MOB_NAME) + ", " + getmonsterinfo("ILL_MINERAL", MOB_NAME) + ", and " + getmonsterinfo("ILL_OBSIDIAN", MOB_NAME) + "?"; + close; + case 2: + mes "[Steven]"; + mes "Whoa..."; + mes "Good job!"; + mes "Are you feeling a little safer now?"; + erasequest 11565; + setquest 11566; + getitem 25271,1; // IllusionStone + getexp 1000000,900000; + close; + } + end; + +OnTouch: + if (ill_teddy == 3) { + mes "[Steven]"; + mes "Can't you let me go?!"; + mes "Let me go!"; + mes "This sucks!!!!"; + npctalk "Steven: Can't you let me go?!", "", bc_self; + cloakoffnpcself( "White Teddy Bear#IBT" ); + cloakoffnpcself( "Teddy Bear#IBT" ); + next; + mes "[Teddy Bear]"; + mes "Oops!"; + mes "Caught, I got caught!"; + mes "Let's run!!!!"; + npctalk "White Teddy Bear: Caught, I got caught!", "White Teddy Bear#IBT", bc_self; + npctalk "Teddy Bear: Let's Run!!!!", "Teddy Bear#IBT", bc_self; + ill_teddy = 4; + erasequest 11558; + setquest 11559; + close2; + cloakonnpcself( "White Teddy Bear#IBT" ); + cloakonnpcself( "Teddy Bear#IBT" ); + end; + } + end; + +OnInit: + // main quest + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11558) == 1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11559) == 1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11561) == 1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11563,HUNTING) == 2 && checkquest(11564,HUNTING) == 2" ); + + // daily + questinfo( QTYPE_QUEST, QMARK_YELLOW, "ill_teddy == 9 && checkquest(11565,HUNTING) == -1 && checkquest(11566,PLAYTIME) == -1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11565,HUNTING) == 2" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11566,PLAYTIME) == 2" ); + end; +} + +ein_d02_i,135,229,1 duplicate(dummy_cloaked_npc) Acid#IBT_inN 4_M_NFMAN +ein_d02_i,169,193,5 duplicate(dummy_cloaked_npc) White Teddy Bear#IBT 4_TEDDY_BEAR_W +ein_d02_i,171,193,3 duplicate(dummy_cloaked_npc) Teddy Bear#IBT 4_NASARIAN +ein_d02_i,172,192,1 duplicate(dummy_cloaked_npc) Acid#IBT_inN01 4_M_NFMAN + +ein_d02_i,132,233,0 script #ITBSuspicious place HIDDEN_WARP_NPC,3,3,{ + end; +OnTouch: + if (ill_teddy == 7) { + mes "[??????]"; + mes "Um hahahahahahahahaha!!!!"; + mes "Listen, people!"; + mes "Finally the day has come when we will rise again!"; + cloakoffnpcself( "??????#IBT_inB01" ); + cloakoffnpcself( "??????#IBT_inB02_1" ); + cloakoffnpcself( "??????#IBT_inB03" ); + cloakoffnpcself( "??????#IBT_inB04" ); + cloakoffnpcself( "??????#IBT_inB05" ); + cloakoffnpcself( "??????#IBT_inB06" ); + cloakoffnpcself( "??????#IBT_inB07" ); + cloakoffnpcself( "??????#IBT_inB08" ); + cloakoffnpcself( "??????#IBT_inB09" ); + cloakoffnpcself( "??????#IBT_inB10" ); + cloakoffnpcself( "??????#IBT_inB11" ); + cloakoffnpcself( "??????#IBT_inB12" ); + cloakoffnpcself( "??????#IBT_inB13" ); + cloakoffnpcself( "??????#IBT_inB15" ); + cloakoffnpcself( "??????#IBT_inB16" ); + cloakoffnpcself( "??????#IBT_inB17" ); + cloakoffnpcself( "??????#IBT_inB18" ); + cloakoffnpcself( "??????#IBT_inB19" ); + cloakoffnpcself( "??????#IBT_inB20" ); + cloakoffnpcself( "??????#IBT_inB21" ); + cloakoffnpcself( "??????#IBT_inB22" ); + npctalk "?????? : Mmmhahahahahahahahahaha!!!!", "??????#IBT_inB01", bc_self; + next; + mes "[??????]"; + mes "Forget the shameful past of being trapped in the dark and damp ground."; + npctalk "?????? : Forget the shameful past of being trapped in the dark and damp ground.", "????????#IBT_inB01", bc_self; + next; + mes "[??????]"; + mes "This land!!!"; + npctalk "?????? : This land!!!", "????????#IBT_inB01", bc_self; + sleep2 500; + mes "This world!!!!"; + npctalk "?????? : This world!!!!", "??????#IBT_inB01", bc_self; + sleep2 500; + mes "Until the day they are at our feet, us Nazarians!!!!"; + npctalk "?????? : Until the day they are at our feet, us Nazarians!!!!", "??????#IBT_inB01", bc_self; + sleep2 500; + mes "Will not stop the invasion!"; + npctalk "?????? : Will not stop the invasion!", "??????#IBT_inB01", bc_self; + next; + mes "[Nazarians]"; + mes "Okay! A new body has arrived!"; + mes "We will plant our holy core into the body that is only an empty shell!"; + next; + mes "[??????]"; + mes "Drivius! Come on get it!!!"; + next; + mes "[Drivius]"; + mes "Yes!!! His Majesty is here!!!"; + next; + mes "[Emperor of Nazarians]"; + mes "Ha ha... look!"; + mes "This bright and beautiful figure..."; + next; + mes "[Emperor of Nazarians]"; + mes "People!!!"; + mes "Welcome!"; + mes "Brave newly born soldiers!!!!"; + cloakonnpcself( "??????#IBT_inB02_1" ); + cloakoffnpcself( "??????#IBT_inB02_2" ); + npctalk "?????? : ...oh...ahah...", "??????#IBT_inB01", bc_self; + next; + mes "[Nazarians]"; + mes "Waaaaaaaa!!!!"; + mes "Long live the Emperor!!!!"; + next; + mes "[Nazarians]"; + mes "Hooray!!! Hooray!!!"; + next; + mes "[Nazarians]"; + mes "Look at those dashing soldiers over there!!!"; + mes "Awesome!!!!"; + next; + mes "[Emperor of Nazarians]"; + mes "The world will bow before the mighty power of the Nazarians!!!!!"; + next; + mes "[Nazarians]"; + mes "Waaaaaaaa!!!!"; + mes "Long live the Emperor!!!!"; + mes "Hooray!!! Hooray!!!"; + cloakoffnpcself( "Steven#IBT_inN" ); + cloakoffnpcself( "Acid#IBT_inN" ); + next; + mes "[Steven]"; + mes "Wait what's that?"; + mes "Isn't that the doll we made?"; + next; + mes "[Acid]"; + mes "I guess so?"; + next; + mes "[Steven]"; + mes "It does not only look like that, it is the one we made!"; + next; + mes "[Steven]"; + mes "It's the one who made a mess because you sewed wrong?? Yes!"; + next; + mes "[Acid]"; + mes "What a mess..."; + mes "That one has its own cuteness point?"; + next; + mes "[Steven]"; + mes "...cute horns..."; + next; + mes "[Emperor of Nazarians]"; + mes "Hmm..."; + mes "Oops..."; + next; + mes "[Emperor of Nazarians]"; + mes "It looks like a rat has lurked into the sacred assembly."; + next; + mes "[Emperor of Nazarians]"; + mes "Warriors of Nazarians!!!!"; + mes "Punish the intruder!!!"; + next; + mes "[Nazarians]"; + mes "From our name!"; + mes "We'll do it!"; + next; + mes "[Nazarians]"; + mes "Waaaaaaa!!!"; + mes "Punish them!"; + mes "It's an intruder!!!"; + next; + mes "[Steven]"; + mes "Oops!"; + mes "Looks like we got caught?!"; + next; + mes "[Steven]"; + mes "Hey!"; + mes "There are many enemies, so let's scatter and run away!"; + next; + mes "[Steven]"; + mes "Take care of those chasing us appropriately."; + mes "Then see you near the exit in a minute!"; + ill_teddy = 8; + erasequest 11562; + setquest 11563; + setquest 11564; + close2; + cloakonnpcself( "Steven#IBT_inN" ); + cloakonnpcself( "Acid#IBT_inN" ); + cloakonnpcself( "??????#IBT_inB01" ); + cloakonnpcself( "??????#IBT_inB02_2" ); + cloakonnpcself( "??????#IBT_inB03" ); + cloakonnpcself( "??????#IBT_inB04" ); + cloakonnpcself( "??????#IBT_inB05" ); + cloakonnpcself( "??????#IBT_inB06" ); + cloakonnpcself( "??????#IBT_inB07" ); + cloakonnpcself( "??????#IBT_inB08" ); + cloakonnpcself( "??????#IBT_inB09" ); + cloakonnpcself( "??????#IBT_inB10" ); + cloakonnpcself( "??????#IBT_inB11" ); + cloakonnpcself( "??????#IBT_inB12" ); + cloakonnpcself( "??????#IBT_inB13" ); + cloakonnpcself( "??????#IBT_inB15" ); + cloakonnpcself( "??????#IBT_inB16" ); + cloakonnpcself( "??????#IBT_inB17" ); + cloakonnpcself( "??????#IBT_inB18" ); + cloakonnpcself( "??????#IBT_inB19" ); + cloakonnpcself( "??????#IBT_inB20" ); + cloakonnpcself( "??????#IBT_inB21" ); + cloakonnpcself( "??????#IBT_inB22" ); + end; + } + end; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(11562) == 1" ); + end; +} + +ein_d02_i,142,244,3 duplicate(dummy_cloaked_npc) ??????#IBT_inB01 4_NASARIAN_EM +ein_d02_i,141,244,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB02_1 4_TEDDY_BEAR_B_L +ein_d02_i,141,244,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB02_2 4_TEDDY_BEAR_B +ein_d02_i,140,244,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB03 4_TEDDY_BEAR_W +ein_d02_i,141,240,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB04 4_NASARIAN +ein_d02_i,139,240,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB05 4_TEDDY_BEAR_W +ein_d02_i,140,238,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB06 4_NASARIAN +ein_d02_i,136,240,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB07 4_TEDDY_BEAR_W +ein_d02_i,133,240,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB08 4_TEDDY_BEAR_B +ein_d02_i,142,237,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB09 4_NASARIAN +ein_d02_i,140,236,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB10 4_TEDDY_BEAR_W +ein_d02_i,142,243,1 duplicate(dummy_cloaked_npc) ??????#IBT_inB11 4_NASARIAN +ein_d02_i,144,242,3 duplicate(dummy_cloaked_npc) ??????#IBT_inB12 4_NASARIAN +ein_d02_i,144,240,1 duplicate(dummy_cloaked_npc) ??????#IBT_inB13 4_NASARIAN +ein_d02_i,141,246,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB14 4_TEDDY_BEAR_W +ein_d02_i,141,237,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB15 4_NASARIAN +ein_d02_i,141,242,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB16 4_TEDDY_BEAR_B +ein_d02_i,137,240,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB17 4_NASARIAN +ein_d02_i,136,238,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB18 4_NASARIAN +ein_d02_i,138,238,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB19 4_NASARIAN +ein_d02_i,141,241,7 duplicate(dummy_cloaked_npc) ??????#IBT_inB20 4_TEDDY_BEAR_B +ein_d02_i,145,241,1 duplicate(dummy_cloaked_npc) ??????#IBT_inB21 4_NASARIAN +ein_d02_i,140,243,5 duplicate(dummy_cloaked_npc) ??????#IBT_inB22 4_NASARIAN +ein_d02_i,133,233,7 duplicate(dummy_cloaked_npc) Steven#IBT_inN 4W_M_02 + +ein_d02_i,168,206,5 script Gloomy Teddy Bear#ITB 4_TEDDY_BEAR_B_L,{ + if (checkweight(1201,3) == 0) { + mes "- Wait a moment!!"; + mes "- You have too many items. -"; + mes "- You can't receive this. -"; + mes "- Lighten your weight and -"; + mes "- try again. -"; + close; + } + if (ill_teddy < 9) { + mes "[Gloomy Teddy Bear]"; + mes "Ah..."; + mes "Is this a dream or reality..."; + mes "Am I dead... or am I alive..."; + next; + mes "[Gloomy Teddy Bear]"; + mes "We're... not supposed to come back..."; + mes "I have to go back..."; + close; + } + switch( checkquest(11569,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Gloomy Teddy Bear]"; + mes "Whoops...don't rush me like that..."; + close; + case 2: + erasequest 11569; + break; + } + switch( checkquest(11567,HUNTING) ) { + case -1: + mes "[Gloomy Teddy Bear]"; + mes "Ah..."; + mes "Is this a dream or reality..."; + mes "Am I dead... or am I alive..."; + next; + mes "[Gloomy Teddy Bear]"; + mes "We're... not supposed to come back..."; + mes "I have to go back..."; + next; + mes "[Gloomy Teddy Bear]"; + mes "Hey... don't just stand there, help me..."; + mes "Me... the Nazarians..."; + next; + mes "[Gloomy Teddy Bear]"; + mes "^ff0000Kill 10 " + getmonsterinfo("ILL_TEDDY_BEAR_R", MOB_NAME) + ", " + getmonsterinfo("ILL_TEDDY_BEAR_Y", MOB_NAME) + ", " + getmonsterinfo("ILL_TEDDY_BEAR_G", MOB_NAME) + ", " + getmonsterinfo("ILL_TEDDY_BEAR_B", MOB_NAME) + ", and " + getmonsterinfo("ILL_TEDDY_BEAR_W", MOB_NAME) + "^000000 and return them to the depths... to rest..."; + next; + if (select( "Accept", "Quit" ) == 2) { + mes "[Gloomy Teddy Bear]"; + mes "...Ah..."; + close; + } + mes "[Gloomy Teddy Bear]"; + mes "I want to end this... infernal nightmare..."; + mes "Come on..."; + setquest 11567; + setquest 11568; + close; + case 0: + case 1: + mes "[Gloomy Teddy Bear]"; + mes "Ah... When will the peaceful rest..."; + mes "...is the request yet..."; + close; + case 2: + switch( checkquest(11568,HUNTING) ) { + case -1: + end; + case 0: + case 1: + mes "[Gloomy Teddy Bear]"; + mes "Ah... When will the peaceful rest..."; + mes "...is the request yet..."; + close; + case 2: + mes "[Gloomy Teddy Bear]"; + mes "Why is it still... not going away..."; + mes "This horrible nightmare..."; + erasequest 11567; + erasequest 11568; + setquest 11569; + getitem 25271,1; // IllusionStone + getexp 1300000,1000000; + close; + } + end; + } + end; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "ill_teddy == 9 && checkquest(11569,PLAYTIME) == -1 && checkquest(11567,HUNTING) == -1 && checkquest(11568,HUNTING) == -1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11569,PLAYTIME) == 2" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11567,HUNTING) == 2 && checkquest(11568,HUNTING) == 2" ); + end; +} + + +ein_d02_i,191,192,3 script Porcelain Doll Craftsman#ITB 4_F_HUWOMAN,{ + if (checkweight(1201,3) == 0) { + mes "- Wait a moment!!"; + mes "- You have too many items. -"; + mes "- You can't receive this. -"; + mes "- Lighten your weight and -"; + mes "- try again. -"; + close; + } + if (ill_teddy < 9) { + mes "[Porcelain Doll Craftsman]"; + mes "Kyaaaaaa!!!!!"; + mes "You were surprised!"; + close; + } + switch( checkquest(11571,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Porcelain Doll Craftsman]"; + mes "Adventurer, welcome back."; + mes "Thanks to you, I have been able to continue my studies in the deep parts of the mine."; + mes "Please come back again at dawn."; + close; + case 2: + erasequest 11571; + break; + } + switch( checkquest(11570,HUNTING) ) { + case -1: + mes "[Porcelain Doll Craftsman]"; + mes "Kyaaaaaa!!!!!"; + mes "You were surprised!"; + next; + mes "[Porcelain Doll Craftsman]"; + mes "Have you ever seen a huge ^ff0000" + getmonsterinfo("ILL_TEDDY_BEAR_S", MOB_NAME) + "^000000 nearby?"; + mes "I barely made it to the entrance, but when I try to leave, he shows up and has been hiding here for days."; + next; + if (select( "Help", "Quit" ) == 2) { + mes "[Porcelain Doll Craftsman]"; + mes "Sob!"; + mes "It's over!!!"; + mes "I'm stuck here forever!"; + close; + } + mes "[Porcelain Doll Craftsman]"; + mes "Alive!!!"; + mes "Did you see that?"; + mes "It's a huge ^ff0000" + getmonsterinfo("ILL_TEDDY_BEAR_S", MOB_NAME) + "^000000."; + mes "You must kill it!"; + setquest 11570; + close; + case 0: + case 1: + mes "[Porcelain Doll Craftsman]"; + mes "How are you?"; + mes "Have you killed ^ff0000" + getmonsterinfo("ILL_TEDDY_BEAR_S", MOB_NAME) + "^000000?"; + close; + case 2: + // unknown text + erasequest 11570; + setquest 11571; + getitem 25271,1; // IllusionStone + getexp 1500000,1100000; + end; + } + end; + +OnInit: + questinfo( QTYPE_QUEST, QMARK_YELLOW, "ill_teddy == 9 && checkquest(11571,PLAYTIME) == -1 && checkquest(11570,HUNTING) == -1" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11571,PLAYTIME) == 2" ); + questinfo( QTYPE_QUEST, QMARK_YELLOW, "checkquest(11570,HUNTING) == 2" ); + end; +} + +ein_d02_i,169,244,1 script White Bear#ITBz01 4_TEDDY_BEAR_W,3,3,{ + end; +OnTouch: + npctalk "White Teddy Bear: Ah... dear Charlotte... to be in a place like this...", "", bc_self; + end; +} + +ein_d02_i,169,244,1 script Sirumsireum Teddy Bear#ITBz02 4_TEDDY_BEAR_B_L,{ + npctalk "Teddy Bear: What have you done to me...", "", bc_self; + end; +} diff --git a/npc/re/quests/quests_malaya.txt b/npc/re/quests/quests_malaya.txt index c8524524ef..9ec0dfb60d 100644 --- a/npc/re/quests/quests_malaya.txt +++ b/npc/re/quests/quests_malaya.txt @@ -2625,13 +2625,13 @@ OnTouch: delitem 6506, 1; // Memorial_Boquet erasequest 7398; setquest 7399; - close; + close3; } else if (malaya_diwata == 5) { cutin "malaya_diwata02", 2; mes "[Diwata]"; mes "I promise I'll be a good little girl if those hillbillies leave me alone."; mes "If they bother me again, however, I won't be."; - close; + close3; } else { if (checkquest(7402) == -1) { if (checkquest(7403) == -1) { @@ -2650,7 +2650,7 @@ OnTouch: mes "The flowers you bring makes me calm down."; mes "...."; mes ".. It's not because I miss people or I like the flowers. Don't take it the wrong way."; - close; + close3; } cutin "malaya_diwata01", 2; mes "[Diwata]"; @@ -2658,7 +2658,7 @@ OnTouch: mes "What? Oh, it's you."; mes "Those hillbillies came back again!"; mes "I'm going to kill them!"; - close; + close3; } cutin "malaya_diwata02", 2; mes "[Diwata]"; @@ -2669,7 +2669,7 @@ OnTouch: mes "The flowers you bring makes me calm down."; mes "...."; mes ".. It's not because I miss people or I like the flowers. Don't take it the wrong way."; - close; + close3; } cutin "malaya_diwata01", 2; mes "[Diwata]"; @@ -2718,7 +2718,7 @@ OnTouch: delitem 6506, 1; // Memorial_Boquet setquest 7403; erasequest 7402; - close; + close3; } cutin "", 255; end; diff --git a/npc/re/quests/quests_mora.txt b/npc/re/quests/quests_mora.txt index cdefa1cb56..9a832605be 100644 --- a/npc/re/quests/quests_mora.txt +++ b/npc/re/quests/quests_mora.txt @@ -3389,26 +3389,26 @@ L_ShowReport: mes "[Experimental Results]"; mes "*** Researcher - Inffle"; mes "*** Research Assistant - "+strcharinfo(0); - mes ""; + mes " "; mes ""; mes "*** Bath of Mora Village"; - mes ""; + mes " "; mes ""; mes "To investigate the mysterious power of the bath water"; mes "and to find out ways to better utilize"; mes "the water."; - mes ""; + mes " "; mes ""; mes "1. Obtained an unidentified DNA sample."; mes "Obtained a sample of an unidentified DNA,"; mes "and collected more samples to look further into it."; - mes ""; + mes " "; mes "2. A comparison analysis on the unidentified DNA"; mes "Concluded that the DNA belongs to"; mes "an unidentified creature living in the bath water."; mes "combine and result in"; mes "from the swordfish DNA."; - mes ""; + mes " "; mes "3. Research on the puddles around the village"; mes "From the four puddles around the village,"; mes "confirmed that the testing substances were"; @@ -3416,9 +3416,9 @@ L_ShowReport: mes "It is thought that the four puddles"; mes "combine and result in"; mes "the mysterious power."; - mes ""; + mes " "; mes ""; - mes "*** Temperature ***** 33.5 "; + mes "*** Temperature ***** 33.5"; mes "*** PH ************ 9.8"; mes "*** Solid residues *** 176"; mes "*** K+ ************ 0,23"; diff --git a/npc/re/scripts_athena.conf b/npc/re/scripts_athena.conf index cfc15a64cb..fb6a1bec1e 100644 --- a/npc/re/scripts_athena.conf +++ b/npc/re/scripts_athena.conf @@ -14,7 +14,6 @@ npc: npc/re/battleground/bg_common.txt // --------------------------- Cities --------------------------- npc: npc/re/cities/alberta.txt -npc: npc/re/cities/brasilis.txt npc: npc/re/cities/comodo.txt npc: npc/re/cities/dewata.txt npc: npc/re/cities/dicastes.txt @@ -154,7 +153,6 @@ npc: npc/re/merchants/guild_warehouse.txt npc: npc/re/merchants/hd_refiner.txt npc: npc/re/merchants/HorrorToyFactory_merchants.txt npc: npc/re/merchants/InfiniteSpace_merchants.txt -npc: npc/re/merchants/inn.txt npc: npc/re/merchants/malangdo_costume.txt npc: npc/re/merchants/moro_cav_exchange.txt npc: npc/re/merchants/mysterious_cookie_shop.txt @@ -177,6 +175,7 @@ npc: npc/re/merchants/enchan_upg.txt npc: npc/re/merchants/te_merchant.txt npc: npc/re/merchants/shadow_refiner.txt npc: npc/re/merchants/eden_market.txt +//npc: npc/re/merchants/shopping_boards.txt // --------------------------- Others --------------------------- npc: npc/re/other/achievements.txt @@ -245,7 +244,6 @@ npc: npc/re/quests/quests_17_1.txt npc: npc/re/quests/quests_17_2.txt npc: npc/re/quests/quests_18_1.txt npc: npc/re/quests/quests_aldebaran.txt -npc: npc/re/quests/quests_brasilis.txt npc: npc/re/quests/quests_dewata.txt npc: npc/re/quests/quests_dicastes.txt npc: npc/re/quests/quests_dungeons_200.txt @@ -273,4 +271,3 @@ npc: npc/re/quests/woe_te/te_goditem_alde1.txt npc: npc/re/custom/lasagna/lasa_dun.txt npc: npc/re/custom/lasagna/lasa_fild.txt npc: npc/re/custom/lasagna/lasagna_npcs.txt -npc: npc/re/custom/lasagna/warps.txt diff --git a/npc/re/scripts_mapflags.conf b/npc/re/scripts_mapflags.conf index c003b6d013..1320b6576e 100644 --- a/npc/re/scripts_mapflags.conf +++ b/npc/re/scripts_mapflags.conf @@ -21,3 +21,4 @@ npc: npc/re/mapflag/restricted.txt npc: npc/re/mapflag/town.txt npc: npc/re/mapflag/reset.txt npc: npc/re/mapflag/skill_duration.txt +npc: npc/re/mapflag/nodynamicnpc.txt diff --git a/npc/re/scripts_warps.conf b/npc/re/scripts_warps.conf index 10735a0ca2..18d358524e 100644 --- a/npc/re/scripts_warps.conf +++ b/npc/re/scripts_warps.conf @@ -4,12 +4,12 @@ // --------------------------- Cities --------------------------- npc: npc/re/warps/cities/alberta.txt -npc: npc/re/warps/cities/brasilis.txt npc: npc/re/warps/cities/dewata.txt npc: npc/re/warps/cities/dicastes.txt npc: npc/re/warps/cities/eclage.txt npc: npc/re/warps/cities/einbech.txt npc: npc/re/warps/cities/einbroch.txt +npc: npc/re/warps/cities/lasagna.txt npc: npc/re/warps/cities/lighthalzen.txt npc: npc/re/warps/cities/izlude.txt npc: npc/re/warps/cities/malangdo.txt @@ -21,7 +21,6 @@ npc: npc/re/warps/cities/yggdrasil.txt // -------------------------- Dungeons -------------------------- npc: npc/re/warps/dungeons/amicitia.txt -npc: npc/re/warps/dungeons/bra_dun.txt npc: npc/re/warps/dungeons/dic_dun.txt npc: npc/re/warps/dungeons/ecl_dun.txt npc: npc/re/warps/dungeons/ein_dun.txt @@ -38,7 +37,6 @@ npc: npc/re/warps/dungeons/thor_v.txt // --------------------------- Fields --------------------------- npc: npc/re/warps/fields/bif_fild.txt -npc: npc/re/warps/fields/bra_fild.txt npc: npc/re/warps/fields/com_fild.txt npc: npc/re/warps/fields/dic_fild.txt npc: npc/re/warps/fields/geffen_fild.txt diff --git a/npc/re/warps/cities/lasagna.txt b/npc/re/warps/cities/lasagna.txt new file mode 100644 index 0000000000..f5d777058a --- /dev/null +++ b/npc/re/warps/cities/lasagna.txt @@ -0,0 +1,47 @@ +//===== rAthena Script ======================================= +//= Lasagna Warps +//===== Changelogs: ========================================== +//= 1.0 First Version. [Capuche] +//= 1.1 Official conversion. [Lemongrass] +//============================================================ + +lasa_fild02,348,244,0 warp lasadun01_in 1,1,lasa_dun01,24,143 +lasa_dun01,18,143,0 warp lasadun_out 1,1,lasa_fild02,344,243 + +lasa_dun_q,190,14,0 warp dun_q_dun01 1,1,lasa_dun01,152,98 +lasa_dun01,157,98,0 warp lasadun01_to2f 1,1,lasa_dun02,22,171 +lasa_dun02,18,171,0 warp lasadun02_to1f 1,1,lasa_dun01,153,98 + +lasa_dun02,146,58,0 warp lasadun02_to3f 1,1,lasa_dun03,190,18 +lasa_dun03,190,15,0 warp lasadun03_to2f 1,1,lasa_dun02,146,54 + +lasa_fild01,134,381,0 warp lasagna_in01 2,2,lasagna,153,58 +lasagna,150,54,0 warp lasagna_out01 2,2,lasa_fild01,131,378 + +lasa_fild01,341,375,0 warp lasagna_in02 1,1,lasagna,327,56 +lasagna,327,51,0 warp lasagna_out02 1,1,lasa_fild01,344,371 + +lasagna,358,91,0 warp lasagna_in03 1,1,lasa_fild02,20,98 +// lasa_fild02,16,98,0 warp lasagna_in03 1,1,lasagna,355,92 // (NPC name is not unique) +lasa_fild02,16,98,0 warp lasagna_in03#01 1,1,lasagna,355,92 + +lasa_in01,159,61,0 warp dining_lasa 1,1,lasagna,68,202 + +// Boat +conch_in,60,61,0 warp2 conch_lasagna 1,1,lasagna,206,323 +conch_in,51,60,0 warp2 hall_cap 1,1,conch_in,31,60 +conch_in,34,60,0 warp2 cap_hall 1,1,conch_in,53,59 +conch_in,63,53,0 warp2 hall_in04 1,1,conch_in,63,33 +conch_in,63,35,0 warp2 in04_hall 1,1,conch_in,64,55 +conch_in,64,66,0 warp2 hall_in01 1,1,conch_in,63,89 +conch_in,63,87,0 warp2 in01_hall 1,1,conch_in,63,64 +conch_in,101,53,0 warp2 hall_in05 1,1,conch_in,101,33 +conch_in,101,35,0 warp2 in05_hall 1,1,conch_in,102,55 +conch_in,101,66,0 warp2 hall_in02 1,1,conch_in,101,89 +conch_in,102,87,0 warp2 in02_hall 1,1,conch_in,101,64 +conch_in,137,53,0 warp2 hall_in06 1,1,conch_in,139,33 +conch_in,139,35,0 warp2 in06_hall 1,1,conch_in,138,55 +conch_in,137,66,0 warp2 hall_in03 1,1,conch_in,139,89 +conch_in,140,87,0 warp2 in03_hall 1,1,conch_in,137,64 +conch_in,142,60,0 warp2 hall_dining 1,1,conch_in,162,61 +conch_in,159,61,0 warp2 dining_hall 1,1,conch_in,140,59 diff --git a/npc/re/warps/dungeons/bra_dun.txt b/npc/re/warps/dungeons/bra_dun.txt deleted file mode 100644 index 004bcf1483..0000000000 --- a/npc/re/warps/dungeons/bra_dun.txt +++ /dev/null @@ -1,17 +0,0 @@ -//===== rAthena Script ======================================= -//= Brasilis Dungeon Warp -//===== By: ================================================== -//= L0ne_W0lf -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= [Official Conversion] -//= Brasilis Dungeon warp script -//===== Additional Comments: ================================= -//= 1.0 First version. -//============================================================ - -bra_dun01,199,35,0 warp brad1tobrad2 1,1,bra_dun02,261,263 -bra_dun02,261,265,0 warp brad2tobrad1 1,1,bra_dun01,199,37 diff --git a/npc/re/warps/fields/bra_fild.txt b/npc/re/warps/fields/bra_fild.txt deleted file mode 100644 index 81c4960fc7..0000000000 --- a/npc/re/warps/fields/bra_fild.txt +++ /dev/null @@ -1,17 +0,0 @@ -//===== rAthena Script ======================================= -//= Brasilis Fild Warps Script -//===== By: ================================================== -//= Protimus -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= [Official Conversion] -//= Warp Points for Brasilis -//===== Additional Comments: ================================= -//= 1.0 First version. -//============================================================ - -bra_fild01,72,34,0 warp bra_fild01_brasilis 1,1,brasilis,309,334 -brasilis,308,336,0 warp brasilis_bra_fild01 1,1,bra_fild01,74,34 diff --git a/npc/scripts_athena.conf b/npc/scripts_athena.conf index ff8f2e7a25..6f45653de3 100644 --- a/npc/scripts_athena.conf +++ b/npc/scripts_athena.conf @@ -34,6 +34,7 @@ npc: npc/cities/alberta.txt npc: npc/cities/aldebaran.txt npc: npc/cities/amatsu.txt npc: npc/cities/ayothaya.txt +npc: npc/cities/brasilis.txt npc: npc/cities/comodo.txt npc: npc/cities/einbech.txt npc: npc/cities/einbroch.txt @@ -250,6 +251,7 @@ npc: npc/quests/quests_alberta.txt npc: npc/quests/quests_aldebaran.txt npc: npc/quests/quests_amatsu.txt npc: npc/quests/quests_ayothaya.txt +npc: npc/quests/quests_brasilis.txt npc: npc/quests/quests_comodo.txt npc: npc/quests/quests_ein.txt npc: npc/quests/quests_geffen.txt diff --git a/npc/scripts_mapflags.conf b/npc/scripts_mapflags.conf index 132005f58d..245d2a48d8 100644 --- a/npc/scripts_mapflags.conf +++ b/npc/scripts_mapflags.conf @@ -29,3 +29,4 @@ npc: npc/mapflag/skill_damage.txt npc: npc/mapflag/town.txt npc: npc/mapflag/nocostume.txt npc: npc/mapflag/skill_duration.txt +npc: npc/mapflag/nodynamicnpc.txt diff --git a/npc/scripts_warps.conf b/npc/scripts_warps.conf index 4a42ccfa2a..460ea0f93a 100644 --- a/npc/scripts_warps.conf +++ b/npc/scripts_warps.conf @@ -7,6 +7,7 @@ npc: npc/warps/cities/alberta.txt npc: npc/warps/cities/aldebaran.txt npc: npc/warps/cities/amatsu.txt npc: npc/warps/cities/ayothaya.txt +npc: npc/warps/cities/brasilis.txt npc: npc/warps/cities/comodo.txt npc: npc/warps/cities/einbech.txt npc: npc/warps/cities/einbroch.txt @@ -37,6 +38,7 @@ npc: npc/warps/dungeons/ama_dun.txt npc: npc/warps/dungeons/anthell.txt npc: npc/warps/dungeons/ayo_dun.txt npc: npc/warps/dungeons/beach_dun.txt +npc: npc/warps/dungeons/bra_dun.txt npc: npc/warps/dungeons/c_tower.txt npc: npc/warps/dungeons/ein_dun.txt npc: npc/warps/dungeons/gef_dun.txt @@ -67,6 +69,7 @@ npc: npc/warps/dungeons/xmas_dun.txt // --------------------------- Fields --------------------------- npc: npc/warps/fields/abyss_warper.txt npc: npc/warps/fields/amatsu_fild.txt +npc: npc/warps/fields/bra_fild.txt npc: npc/warps/fields/ein_fild.txt npc: npc/warps/fields/gefenia.txt npc: npc/warps/fields/glastheim.txt diff --git a/npc/re/warps/cities/brasilis.txt b/npc/warps/cities/brasilis.txt similarity index 76% rename from npc/re/warps/cities/brasilis.txt rename to npc/warps/cities/brasilis.txt index f143e946f0..77f7f16b66 100644 --- a/npc/re/warps/cities/brasilis.txt +++ b/npc/warps/cities/brasilis.txt @@ -1,16 +1,7 @@ //===== rAthena Script ======================================= -//= Brasilis Town Warps Script -//===== By: ================================================== -//= L0ne_W0lf -//===== Current Version: ===================================== -//= 1.2 -//===== Compatible With: ===================================== -//= rAthena Project; RO Episode 13.1+ -//===== Description: ========================================= -//= [Official Conversion] -//= Warp Points for Brasilis -//===== Additional Comments: ================================= -//= 1.0 First version. +//= Brasilis Town Warps +//===== Changelog: =========================================== +//= 1.0 First version. [L0ne_W0lf] //= 1.1 Fixed warps according to official. [Protimus] //= 1.1a Added Field warp according to official. [Jguy] //= 1.2 Added missing warps & removed duplicated one. [Daegaladh] diff --git a/npc/warps/dungeons/bra_dun.txt b/npc/warps/dungeons/bra_dun.txt new file mode 100644 index 0000000000..bddf1ff4b7 --- /dev/null +++ b/npc/warps/dungeons/bra_dun.txt @@ -0,0 +1,8 @@ +//===== rAthena Script ======================================= +//= Brasilis Dungeon Warps +//===== Changelog: =========================================== +//= 1.0 First version. [L0ne_W0lf] +//============================================================ + +bra_dun01,199,35,0 warp brad1tobrad2 1,1,bra_dun02,261,263 +bra_dun02,261,265,0 warp brad2tobrad1 1,1,bra_dun01,199,37 diff --git a/npc/warps/fields/bra_fild.txt b/npc/warps/fields/bra_fild.txt new file mode 100644 index 0000000000..85d7f31cff --- /dev/null +++ b/npc/warps/fields/bra_fild.txt @@ -0,0 +1,8 @@ +//===== rAthena Script ======================================= +//= Brasilis Field Warps +//===== Changelog: =========================================== +//= 1.0 First version. [Protimus] +//============================================================ + +bra_fild01,72,34,0 warp bra_fild01_brasilis 1,1,brasilis,309,334 +brasilis,308,336,0 warp brasilis_bra_fild01 1,1,bra_fild01,74,34 diff --git a/sql-files/mob_db.sql b/sql-files/mob_db.sql index 713e9f714d..de0a9513b0 100644 --- a/sql-files/mob_db.sql +++ b/sql-files/mob_db.sql @@ -63,6 +63,8 @@ CREATE TABLE `mob_db` ( `racegroup_illusion_turtle` tinyint(1) unsigned DEFAULT NULL, `racegroup_rachel_sanctuary` tinyint(1) unsigned DEFAULT NULL, `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL, `element` varchar(24) DEFAULT NULL, `element_level` tinyint(4) unsigned DEFAULT NULL, `walk_speed` smallint(6) unsigned DEFAULT NULL, diff --git a/sql-files/mob_db2.sql b/sql-files/mob_db2.sql index 4aded17b1c..6d1fe05577 100644 --- a/sql-files/mob_db2.sql +++ b/sql-files/mob_db2.sql @@ -63,6 +63,8 @@ CREATE TABLE `mob_db2` ( `racegroup_illusion_turtle` tinyint(1) unsigned DEFAULT NULL, `racegroup_rachel_sanctuary` tinyint(1) unsigned DEFAULT NULL, `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL, `element` varchar(24) DEFAULT NULL, `element_level` tinyint(4) unsigned DEFAULT NULL, `walk_speed` smallint(6) unsigned DEFAULT NULL, diff --git a/sql-files/mob_db2_re.sql b/sql-files/mob_db2_re.sql index d13df47f4c..93d339fa13 100644 --- a/sql-files/mob_db2_re.sql +++ b/sql-files/mob_db2_re.sql @@ -65,6 +65,8 @@ CREATE TABLE `mob_db2_re` ( `racegroup_illusion_turtle` tinyint(1) unsigned DEFAULT NULL, `racegroup_rachel_sanctuary` tinyint(1) unsigned DEFAULT NULL, `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL, `element` varchar(24) DEFAULT NULL, `element_level` tinyint(4) unsigned DEFAULT NULL, `walk_speed` smallint(6) unsigned DEFAULT NULL, diff --git a/sql-files/mob_db_re.sql b/sql-files/mob_db_re.sql index d96fa6551f..d582cb710b 100644 --- a/sql-files/mob_db_re.sql +++ b/sql-files/mob_db_re.sql @@ -65,6 +65,8 @@ CREATE TABLE `mob_db_re` ( `racegroup_illusion_turtle` tinyint(1) unsigned DEFAULT NULL, `racegroup_rachel_sanctuary` tinyint(1) unsigned DEFAULT NULL, `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL, `element` varchar(24) DEFAULT NULL, `element_level` tinyint(4) unsigned DEFAULT NULL, `walk_speed` smallint(6) unsigned DEFAULT NULL, diff --git a/sql-files/upgrades/upgrade_20240519.sql b/sql-files/upgrades/upgrade_20240519.sql new file mode 100644 index 0000000000..122108fc40 --- /dev/null +++ b/sql-files/upgrades/upgrade_20240519.sql @@ -0,0 +1,16 @@ +ALTER TABLE `mob_db` + ADD COLUMN `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + ADD COLUMN `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL +; +ALTER TABLE `mob_db2` + ADD COLUMN `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + ADD COLUMN `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL +; +ALTER TABLE `mob_db_re` + ADD COLUMN `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + ADD COLUMN `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL +; +ALTER TABLE `mob_db2_re` + ADD COLUMN `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL, + ADD COLUMN `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL +; diff --git a/src/char/char-server.vcxproj b/src/char/char-server.vcxproj index 02f0b6a2e0..8d6fe0b0de 100644 --- a/src/char/char-server.vcxproj +++ b/src/char/char-server.vcxproj @@ -128,6 +128,7 @@ Disabled $(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;_DEBUG;_CONSOLE;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) MultiThreadedDebug + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories) true @@ -148,6 +149,7 @@ true $(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories) true @@ -170,6 +172,7 @@ true $(DefineConstants);WIN32;FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories) true diff --git a/src/char/char.cpp b/src/char/char.cpp index 6b74b33f27..5298b4c714 100644 --- a/src/char/char.cpp +++ b/src/char/char.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "char_clif.hpp" #include "char_cnslif.hpp" @@ -1357,10 +1358,12 @@ int char_check_char_name(char * name, char * esc_name) if( name[0] == '\0' ) return -2; // empty character name /** - * The client does not allow you to create names with less than 4 characters, however, - * the use of WPE can bypass this, and this fixes the exploit. + * By default the client does not allow you to create names with less than 4 characters, + * however the use of WPE can bypass this, and this fixes the exploit. + * It can also be changed in the configuration file in conjunction with the + * 'Remove 4/6 letter Character Name Limit' client diff patch. **/ - if( strlen( name ) < 4 ) + if( strlen( name ) < charserv_config.char_config.char_name_min_length ) return -2; // check content of character name if( remove_control_chars(name) ) @@ -2158,16 +2161,23 @@ int char_pincode_compare( int fd, struct char_session_data* sd, char* pin ){ } } - -void char_pincode_decrypt( uint32 userSeed, char* pin ){ +bool char_pincode_decrypt( uint32 userSeed, char* pin ){ int i; char tab[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; char *buf; - + + if (safestrnlen(pin, 4) != PINCODE_LENGTH) + return false; + + for (i = 0; i < PINCODE_LENGTH; ++i) { + if (!ISDIGIT(pin[i])) + return false; + } + for( i = 1; i < 10; i++ ){ int pos; uint32 multiplier = 0x3498, baseSeed = 0x881234; - + userSeed = baseSeed + userSeed * multiplier; pos = userSeed % ( i + 1 ); if( i != pos ){ @@ -2184,6 +2194,8 @@ void char_pincode_decrypt( uint32 userSeed, char* pin ){ } strcpy( pin, buf ); aFree( buf ); + + return true; } #endif @@ -2753,6 +2765,7 @@ void char_set_defaults(){ charserv_config.char_config.char_name_option = 0; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor] safestrncpy(charserv_config.char_config.unknown_char_name,"Unknown",sizeof(charserv_config.char_config.unknown_char_name)); // Name to use when the requested name cannot be determined safestrncpy(charserv_config.char_config.char_name_letters,"",sizeof(charserv_config.char_config.char_name_letters)); // list of letters/symbols allowed (or not) in a character name. by [Yor] + charserv_config.char_config.char_name_min_length = 4; // Minimum character name length charserv_config.save_log = 1; // show loading/saving messages charserv_config.log_char = 1; // loggin char or not [devil] @@ -2824,6 +2837,7 @@ void char_config_split_startpoint( char* w1_value, char* w2_value, struct s_poin size_t fields_length = 3 + 1; (*count) = 0; // Reset to begin reading + memset(start_point, 0, sizeof(struct s_point_str) * MAX_STARTPOINT); fields = (char **)aMalloc(fields_length * sizeof(char *)); if (fields == nullptr) @@ -2863,6 +2877,8 @@ void char_config_split_startitem(char *w1_value, char *w2_value, struct startite int i = 0; size_t fields_length = 3 + 1; + memset(start_items, 0, sizeof(struct startitem) * MAX_STARTITEM); + fields = (char **)aMalloc(fields_length * sizeof(char *)); if (fields == nullptr) return; // Failed to allocate memory. @@ -3016,6 +3032,8 @@ bool char_config_read(const char* cfgName, bool normal){ charserv_config.char_config.char_name_option = atoi(w2); } else if (strcmpi(w1, "char_name_letters") == 0) { safestrncpy(charserv_config.char_config.char_name_letters, w2, sizeof(charserv_config.char_config.char_name_letters)); + } else if (strcmpi(w1, "char_name_min_length") == 0) { + charserv_config.char_config.char_name_min_length = cap_value(atoi(w2), 0, NAME_LENGTH - 1); } else if (strcmpi(w1, "char_del_level") == 0) { //disable/enable char deletion by its level condition [Lupus] charserv_config.char_config.char_del_level = atoi(w2); } else if (strcmpi(w1, "char_del_delay") == 0) { diff --git a/src/char/char.hpp b/src/char/char.hpp index f03dd9b158..9b857e3825 100644 --- a/src/char/char.hpp +++ b/src/char/char.hpp @@ -151,6 +151,7 @@ struct Char_Config { char unknown_char_name[NAME_LENGTH]; // Name to use when the requested name cannot be determined char char_name_letters[1024]; // list of letters/symbols allowed (or not) in a character name. by [Yor] int char_name_option; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor] + uint8 char_name_min_length; // Minimum character name length (default: 4) int char_del_option; // Character deletion type, email = 1, birthdate = 2 (default) int char_del_restriction; // Character deletion restriction (0: none, 1: if the character is in a party, 2: if the character is in a guild, 3: if the character is in a party or a guild) bool char_rename_party; // Character renaming in a party @@ -266,6 +267,7 @@ struct char_session_data { uint32 pincode_seed; time_t pincode_change; uint16 pincode_try; + bool pincode_correct; // Addon system unsigned int char_moves[MAX_CHARS]; // character moves left uint8 isvip; @@ -318,7 +320,7 @@ int char_family(int pl1,int pl2,int pl3); int char_loadName(uint32 char_id, char* name); int char_check_char_name(char * name, char * esc_name); -void char_pincode_decrypt( uint32 userSeed, char* pin ); +bool char_pincode_decrypt( uint32 userSeed, char* pin ); int char_pincode_compare( int fd, struct char_session_data* sd, char* pin ); void char_auth_ok(int fd, struct char_session_data *sd); void char_set_charselect(uint32 account_id); diff --git a/src/char/char_clif.cpp b/src/char/char_clif.cpp index a2ce8b4a7d..0b3a9c54cf 100644 --- a/src/char/char_clif.cpp +++ b/src/char/char_clif.cpp @@ -167,15 +167,22 @@ int chclif_parse_pincode_check( int fd, struct char_session_data* sd ){ char pin[PINCODE_LENGTH+1]; - if( charserv_config.pincode_config.pincode_enabled==0 || RFIFOL(fd,2) != sd->account_id ) + if( charserv_config.pincode_config.pincode_enabled==0 || RFIFOL(fd,2) != sd->account_id ) { + set_eof(fd); return 1; + } memset(pin,0,PINCODE_LENGTH+1); strncpy((char*)pin, RFIFOCP(fd, 6), PINCODE_LENGTH); RFIFOSKIP(fd,10); - char_pincode_decrypt(sd->pincode_seed, pin ); + if (!char_pincode_decrypt(sd->pincode_seed, pin )) { + set_eof(fd); + return 1; + } + if( char_pincode_compare( fd, sd, pin ) ){ + sd->pincode_correct = true; chclif_pincode_sendstate( fd, sd, PINCODE_PASSED ); } return 1; @@ -257,28 +264,34 @@ bool pincode_allowed( char* pincode ){ int chclif_parse_pincode_change( int fd, struct char_session_data* sd ){ FIFOSD_CHECK(14); - if( charserv_config.pincode_config.pincode_enabled==0 || RFIFOL(fd,2) != sd->account_id ) + if( charserv_config.pincode_config.pincode_enabled==0 || RFIFOL(fd,2) != sd->account_id ) { + set_eof(fd); return 1; + } else { char oldpin[PINCODE_LENGTH+1]; char newpin[PINCODE_LENGTH+1]; - + memset(oldpin,0,PINCODE_LENGTH+1); memset(newpin,0,PINCODE_LENGTH+1); strncpy(oldpin, RFIFOCP(fd,6), PINCODE_LENGTH); strncpy(newpin, RFIFOCP(fd,10), PINCODE_LENGTH); RFIFOSKIP(fd,14); - - char_pincode_decrypt(sd->pincode_seed,oldpin); + + if (!char_pincode_decrypt(sd->pincode_seed,oldpin) || !char_pincode_decrypt(sd->pincode_seed,newpin)) { + set_eof(fd); + return 1; + } + if( !char_pincode_compare( fd, sd, oldpin ) ) return 1; - char_pincode_decrypt(sd->pincode_seed,newpin); if( pincode_allowed(newpin) ){ chlogif_pincode_notifyLoginPinUpdate( sd->account_id, newpin ); strncpy(sd->pincode, newpin, sizeof(newpin)); ShowInfo("Pincode changed for AID: %d\n", sd->account_id); - + sd->pincode_correct = true; + chclif_pincode_sendstate( fd, sd, PINCODE_PASSED ); }else{ chclif_pincode_sendstate( fd, sd, PINCODE_ILLEGAL ); @@ -293,21 +306,27 @@ int chclif_parse_pincode_change( int fd, struct char_session_data* sd ){ int chclif_parse_pincode_setnew( int fd, struct char_session_data* sd ){ FIFOSD_CHECK(10); - if( charserv_config.pincode_config.pincode_enabled==0 || RFIFOL(fd,2) != sd->account_id ) + if( charserv_config.pincode_config.pincode_enabled==0 || RFIFOL(fd,2) != sd->account_id ) { + set_eof(fd); return 1; + } else { char newpin[PINCODE_LENGTH+1]; memset(newpin,0,PINCODE_LENGTH+1); strncpy( newpin, RFIFOCP(fd,6), PINCODE_LENGTH ); RFIFOSKIP(fd,10); - char_pincode_decrypt( sd->pincode_seed, newpin ); + if (!char_pincode_decrypt( sd->pincode_seed, newpin )) { + set_eof(fd); + return 1; + } if( pincode_allowed(newpin) ){ chlogif_pincode_notifyLoginPinUpdate( sd->account_id, newpin ); strncpy( sd->pincode, newpin, sizeof( newpin ) ); + sd->pincode_correct = true; - chclif_pincode_sendstate( fd, sd, PINCODE_PASSED ); + chclif_pincode_sendstate( fd, sd, PINCODE_PASSED ); }else{ chclif_pincode_sendstate( fd, sd, PINCODE_ILLEGAL ); } @@ -741,6 +760,7 @@ int chclif_parse_reqtoconnect(int fd, struct char_session_data* sd,uint32 ipl){ sd->login_id2 = login_id2; sd->sex = sex; sd->auth = false; // not authed yet + sd->pincode_correct = false; // not entered pincode correctly yet // send back account_id WFIFOHEAD(fd,4); @@ -763,6 +783,7 @@ int chclif_parse_reqtoconnect(int fd, struct char_session_data* sd,uint32 ipl){ {// authentication found (coming from map server) char_get_authdb().erase(account_id); char_auth_ok(fd, sd); + sd->pincode_correct = true; // already entered pincode correctly yet } else {// authentication not found (coming from login server) @@ -950,7 +971,7 @@ int chclif_parse_select_accessible_map( int fd, struct char_session_data* sd, ui void chclif_accessible_maps( int fd ){ #if PACKETVER >= 20100714 - struct PACKET_HC_NOTIFY_ACCESSIBLE_MAPNAME* p = (struct PACKET_HC_NOTIFY_ACCESSIBLE_MAPNAME*)packet_buffer; + PACKET_HC_NOTIFY_ACCESSIBLE_MAPNAME* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_HC_NOTIFY_ACCESSIBLE_MAPNAME; p->packetLength = sizeof( *p ); @@ -1553,6 +1574,54 @@ int chclif_parse(int fd) { unsigned short cmd; cmd = RFIFOW(fd,0); + +#if PACKETVER_SUPPORTS_PINCODE + // If the pincode system is enabled + if( charserv_config.pincode_config.pincode_enabled ){ + switch( cmd ){ + // Connect of player + case 0x65: + // Client keep-alive packet (every 12 seconds) + case 0x187: + // Checks the entered pin + case 0x8b8: + // Request PIN change + case 0x8be: + // Request for PIN window + case 0x8c5: + // Request character list + case 0x9a1: + // Connect of map-server + case 0x2af8: + break; + + // Before processing any other packets, do a few checks + default: + // To reach this block the client should have attained a session already + if( sd != nullptr ){ + // If the pincode was entered correctly + if( sd->pincode_correct ){ + break; + } + + // If no pincode is set (yet) + if( strlen( sd->pincode ) <= 0 ){ + break; + } + + // The pincode was not entered correctly, yet the player (=bot) tried to send a different packet => Goodbye! + set_eof( fd ); + return 0; + }else{ + // Unknown packet received + ShowError( "chclif_parse: Received unknown packet " CL_WHITE "0x%x" CL_RESET " from ip '" CL_WHITE "%s" CL_RESET "'! Disconnecting!\n", cmd, ip2str( ipl, nullptr ) ); + set_eof( fd ); + return 0; + } + } + } +#endif + switch( cmd ) { case 0x65: next=chclif_parse_reqtoconnect(fd,sd,ipl); break; // char select @@ -1596,7 +1665,7 @@ int chclif_parse(int fd) { break; // unknown packet received default: - ShowError("parse_char: Received unknown packet " CL_WHITE "0x%x" CL_RESET " from ip '" CL_WHITE "%s" CL_RESET "'! Disconnecting!\n", RFIFOW(fd,0), ip2str(ipl, nullptr)); + ShowError( "chclif_parse: Received unknown packet " CL_WHITE "0x%x" CL_RESET " from ip '" CL_WHITE "%s" CL_RESET "'! Disconnecting!\n", cmd, ip2str( ipl, nullptr ) ); set_eof(fd); return 0; } diff --git a/src/char/char_logif.cpp b/src/char/char_logif.cpp index 1e0cf3c3b2..6448cbc6ee 100644 --- a/src/char/char_logif.cpp +++ b/src/char/char_logif.cpp @@ -96,7 +96,7 @@ void chlogif_pincode_start(int fd, struct char_session_data* sd){ TIMER_FUNC(chlogif_send_acc_tologin){ if ( chlogif_isconnected() ){ // send account list to login server - int users = char_get_onlinedb().size(); + size_t users = char_get_onlinedb().size(); int i = 0; WFIFOHEAD(login_fd,8+users*4); @@ -176,7 +176,7 @@ void chlogif_send_global_accreg(const char *key, unsigned int index, int64 int_v if (!chlogif_isconnected()) return; - int nlen = WFIFOW(login_fd, 2); + int16 nlen = WFIFOW( login_fd, 2 ); size_t len; len = strlen(key)+1; @@ -185,7 +185,7 @@ void chlogif_send_global_accreg(const char *key, unsigned int index, int64 int_v nlen += 1; safestrncpy(WFIFOCP(login_fd,nlen), key, len); - nlen += len; + nlen += static_cast( len ); WFIFOL(login_fd, nlen) = index; nlen += 4; @@ -201,7 +201,7 @@ void chlogif_send_global_accreg(const char *key, unsigned int index, int64 int_v nlen += 1; safestrncpy(WFIFOCP(login_fd,nlen), string_value, len); - nlen += len; + nlen += static_cast( len ); } } else { WFIFOB(login_fd, nlen) = int_value ? 0 : 1; diff --git a/src/char/char_mapif.cpp b/src/char/char_mapif.cpp index 5e04a87669..b10d5c2a39 100644 --- a/src/char/char_mapif.cpp +++ b/src/char/char_mapif.cpp @@ -195,7 +195,7 @@ void chmapif_send_misc(int fd) { * @param map_id * @param count Number of map from new map-server has **/ -void chmapif_send_maps(int fd, int map_id, int count, unsigned char *mapbuf) { +void chmapif_send_maps( int fd, int map_id, size_t count, unsigned char* mapbuf ){ uint16 x; if (count == 0) { @@ -205,7 +205,7 @@ void chmapif_send_maps(int fd, int map_id, int count, unsigned char *mapbuf) { unsigned char buf[INT16_MAX]; // Transmitting maps information to the other map-servers WBUFW(buf,0) = 0x2b04; - WBUFW( buf, 2 ) = count * MAP_NAME_LENGTH_EXT + 10; + WBUFW( buf, 2 ) = static_cast( count * MAP_NAME_LENGTH_EXT + 10 ); WBUFL(buf,4) = htonl(map_server[map_id].ip); WBUFW(buf,8) = htons(map_server[map_id].port); memcpy( WBUFP( buf, 10 ), mapbuf, count * MAP_NAME_LENGTH_EXT ); @@ -317,7 +317,7 @@ int chmapif_parse_askscdata(int fd){ ShowWarning("Too many status changes for %d:%d, some of them were not loaded.\n", aid, cid); if (count > 0) { - WFIFOW(fd,2) = 14 + count*sizeof(struct status_change_data); + WFIFOW( fd, 2 ) = static_cast( 14 + count * sizeof( struct status_change_data ) ); WFIFOW(fd,12) = count; WFIFOSET(fd,WFIFOW(fd,2)); } @@ -574,7 +574,7 @@ int chmapif_parse_req_skillcooldown(int fd){ ShowWarning("Too many skillcooldowns for %d:%d, some of them were not loaded.\n", aid, cid); if( count > 0 ) { - WFIFOW(fd,2) = 14 + count * sizeof(struct skill_cooldown_data); + WFIFOW( fd, 2 ) = static_cast( 14 + count * sizeof( struct skill_cooldown_data ) ); WFIFOW(fd,12) = count; WFIFOSET(fd,WFIFOW(fd,2)); //Clear the data once loaded. diff --git a/src/char/int_achievement.cpp b/src/char/int_achievement.cpp index f6d72fcc00..6d29060bc0 100644 --- a/src/char/int_achievement.cpp +++ b/src/char/int_achievement.cpp @@ -264,7 +264,7 @@ void mapif_achievement_load( int fd, uint32 char_id ){ WFIFOHEAD(fd, num_achievements * sizeof(struct achievement) + 8); WFIFOW(fd, 0) = 0x3862; - WFIFOW(fd, 2) = num_achievements * sizeof(struct achievement) + 8; + WFIFOW(fd, 2) = static_cast( num_achievements * sizeof( struct achievement ) + 8 ); WFIFOL(fd, 4) = char_id; if (num_achievements > 0) diff --git a/src/char/int_clan.cpp b/src/char/int_clan.cpp index 4359e1d23a..927cef395e 100644 --- a/src/char/int_clan.cpp +++ b/src/char/int_clan.cpp @@ -60,9 +60,12 @@ std::shared_ptr inter_clan_fromsql(int clan_id){ clan = std::make_shared(); clan->id = clan_id; - Sql_GetData(sql_handle, 0, &data, &len); memcpy(clan->name, data, min(len, NAME_LENGTH)); - Sql_GetData(sql_handle, 1, &data, &len); memcpy(clan->master, data, min(len, NAME_LENGTH)); - Sql_GetData(sql_handle, 2, &data, &len); memcpy(clan->map, data, min(len, MAP_NAME_LENGTH_EXT)); + Sql_GetData( sql_handle, 0, &data, &len ); + memcpy( clan->name, data, std::min( len, static_cast( NAME_LENGTH ) ) ); + Sql_GetData( sql_handle, 1, &data, &len ); + memcpy( clan->master, data, std::min( len, static_cast( NAME_LENGTH ) ) ); + Sql_GetData( sql_handle, 2, &data, &len ); + memcpy( clan->map, data, std::min( len, static_cast( MAP_NAME_LENGTH_EXT ) ) ); Sql_GetData(sql_handle, 3, &data, nullptr); clan->max_member = atoi(data); clan->connect_member = 0; @@ -96,16 +99,13 @@ std::shared_ptr inter_clan_fromsql(int clan_id){ } int mapif_clan_info( int fd ){ - int offset; - int length; - - length = 4 + clan_db.size() * sizeof( struct clan ); + size_t offset = 4; + size_t length = offset + clan_db.size() * sizeof( struct clan ); WFIFOHEAD( fd, length ); WFIFOW( fd, 0 ) = 0x38A0; - WFIFOW( fd, 2 ) = length; + WFIFOW( fd, 2 ) = static_cast( length ); - offset = 4; for( const auto& pair : clan_db ){ std::shared_ptr clan = pair.second; diff --git a/src/char/int_guild.cpp b/src/char/int_guild.cpp index 123ddbe580..01cce53e97 100644 --- a/src/char/int_guild.cpp +++ b/src/char/int_guild.cpp @@ -83,9 +83,11 @@ TIMER_FUNC(guild_save_timer){ if( state != 2 ) //Reached the end of the guild db without saving. last_id = 0; //Reset guild saved, return to beginning. - state = guild_db.size(); - if( state < 1 ) state = 1; //Calculate the time slot for the next save. - add_timer(tick + (charserv_config.autosave_interval)/state, guild_save_timer, 0, 0); + size_t count = std::max( guild_db.size(), static_cast( 1 ) ); + + // Calculate the time slot for the next save. + add_timer( tick + charserv_config.autosave_interval / count, guild_save_timer, 0, 0 ); + return 0; } diff --git a/src/char/int_quest.cpp b/src/char/int_quest.cpp index 912325e5f8..a63f77a463 100644 --- a/src/char/int_quest.cpp +++ b/src/char/int_quest.cpp @@ -23,18 +23,15 @@ * @return Array of found entries. It has *count entries, and it is care of the * caller to aFree() it afterwards. */ -struct quest *mapif_quests_fromsql(uint32 char_id, int *count) { +struct quest *mapif_quests_fromsql( uint32 char_id, size_t& count ){ struct quest *questlog = nullptr; struct quest tmp_quest; SqlStmt *stmt; - if( !count ) - return nullptr; - stmt = SqlStmt_Malloc(sql_handle); if( stmt == nullptr ) { SqlStmt_ShowDebug(stmt); - *count = 0; + count = 0; return nullptr; } @@ -52,23 +49,27 @@ struct quest *mapif_quests_fromsql(uint32 char_id, int *count) { ) { SqlStmt_ShowDebug(stmt); SqlStmt_Free(stmt); - *count = 0; + count = 0; return nullptr; } - *count = (int)SqlStmt_NumRows(stmt); - if( *count > 0 ) { - int i = 0; + count = static_cast::type>( SqlStmt_NumRows( stmt ) ); + if( count > 0 ) { + size_t i = 0; - questlog = (struct quest *)aCalloc(*count, sizeof(struct quest)); + questlog = (struct quest *)aCalloc( count, sizeof( struct quest ) ); while( SQL_SUCCESS == SqlStmt_NextRow(stmt) ) { - if( i >= *count ) //Sanity check, should never happen + // Sanity check, should never happen + if( i >= count ){ break; + } + memcpy(&questlog[i++], &tmp_quest, sizeof(tmp_quest)); } - if( i < *count ) { + + if( i < count ) { //Should never happen. Compact array - *count = i; + count = i; questlog = (struct quest *)aRealloc(questlog, sizeof(struct quest) * i); } } @@ -136,18 +137,21 @@ bool mapif_quest_update(uint32 char_id, struct quest qd) { * @see inter_parse_frommap */ int mapif_parse_quest_save(int fd) { - int i, j, k, old_n, new_n = (RFIFOW(fd,2) - 8) / sizeof(struct quest); uint32 char_id = RFIFOL(fd,4); struct quest *old_qd = nullptr, *new_qd = nullptr; bool success = true; + size_t old_n, new_n = ( RFIFOW( fd, 2 ) - 8 ) / sizeof( struct quest ); if( new_n > 0 ) new_qd = (struct quest*)RFIFOP(fd,8); - old_qd = mapif_quests_fromsql(char_id, &old_n); - for( i = 0; i < new_n; i++ ) { + old_qd = mapif_quests_fromsql( char_id, old_n ); + + for( size_t i = 0, j; i < new_n; i++ ) { ARR_FIND(0, old_n, j, new_qd[i].quest_id == old_qd[j].quest_id); if( j < old_n ) { //Update existing quests + size_t k; + //Only states and counts are changable. ARR_FIND(0, MAX_QUEST_OBJECTIVES, k, new_qd[i].count[k] != old_qd[j].count[k]); if( k != MAX_QUEST_OBJECTIVES || new_qd[i].state != old_qd[j].state ) @@ -162,8 +166,10 @@ int mapif_parse_quest_save(int fd) { success &= mapif_quest_add(char_id, new_qd[i]); } - for( i = 0; i < old_n; i++ ) //Quests not in new_qd but in old_qd are to be erased. + // Quests not in new_qd but in old_qd are to be erased. + for( size_t i = 0; i < old_n; i++ ){ success &= mapif_quest_delete(char_id, old_qd[i].quest_id); + } if( old_qd ) aFree(old_qd); @@ -189,14 +195,12 @@ int mapif_parse_quest_save(int fd) { */ int mapif_parse_quest_load(int fd) { uint32 char_id = RFIFOL(fd,2); - struct quest *tmp_questlog = nullptr; - int num_quests; - - tmp_questlog = mapif_quests_fromsql(char_id, &num_quests); + size_t num_quests; + struct quest* tmp_questlog = mapif_quests_fromsql( char_id, num_quests ); WFIFOHEAD(fd,num_quests * sizeof(struct quest) + 8); WFIFOW(fd,0) = 0x3860; - WFIFOW(fd,2) = num_quests * sizeof(struct quest) + 8; + WFIFOW(fd,2) = static_cast( num_quests * sizeof( struct quest ) + 8 ); WFIFOL(fd,4) = char_id; if( num_quests > 0 ) diff --git a/src/char/inter.cpp b/src/char/inter.cpp index 9777c9a451..1fe9b71d89 100644 --- a/src/char/inter.cpp +++ b/src/char/inter.cpp @@ -709,7 +709,7 @@ int inter_accreg_fromsql(uint32 account_id, uint32 char_id, int fd, int type) plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); @@ -723,7 +723,7 @@ int inter_accreg_fromsql(uint32 account_id, uint32 char_id, int fd, int type) plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); WFIFOW(fd, 14) += 1; @@ -789,7 +789,7 @@ int inter_accreg_fromsql(uint32 account_id, uint32 char_id, int fd, int type) plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); @@ -1038,11 +1038,14 @@ void inter_final(void) * @param fd **/ void inter_Storage_sendInfo(int fd) { - int size = sizeof(struct s_storage_table), len = 4 + interServerDb.size() * size, offset; + size_t offset = 4; + size_t size = sizeof( struct s_storage_table ); + size_t len = offset + interServerDb.size() * size; + // Send storage table information WFIFOHEAD(fd, len); WFIFOW(fd, 0) = 0x388c; - WFIFOW(fd, 2) = len; + WFIFOW( fd, 2 ) = static_cast( len ); offset = 4; for( auto storage : interServerDb ){ memcpy(WFIFOP(fd, offset), storage.second.get(), size); @@ -1297,7 +1300,7 @@ int mapif_parse_Registry(int fd) size_t lenkey = RFIFOB( fd, cursor ); const char* src_key= RFIFOCP(fd, cursor + 1); std::string key( src_key, lenkey ); - cursor += lenkey + 1; + cursor += static_cast( lenkey + 1 ); uint32 index = RFIFOL(fd, cursor); cursor += 4; @@ -1317,7 +1320,7 @@ int mapif_parse_Registry(int fd) size_t len_val = RFIFOB( fd, cursor ); const char* src_val= RFIFOCP(fd, cursor + 1); std::string sval( src_val, len_val ); - cursor += len_val + 1; + cursor += static_cast( len_val + 1 ); inter_savereg( account_id, char_id, key.c_str(), index, 0, sval.c_str(), true ); break; } diff --git a/src/common/common-minicore.vcxproj b/src/common/common-minicore.vcxproj index 3e5448fff8..cc39d34bc3 100644 --- a/src/common/common-minicore.vcxproj +++ b/src/common/common-minicore.vcxproj @@ -144,6 +144,7 @@ Disabled $(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) MultiThreadedDebug + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\ true @@ -163,6 +164,7 @@ true $(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\ true @@ -184,6 +186,7 @@ true $(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\ true diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj index 4f1e7254f7..61b20327cd 100644 --- a/src/common/common.vcxproj +++ b/src/common/common.vcxproj @@ -181,6 +181,7 @@ Disabled $(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) MultiThreadedDebug + true stdcpp17 $(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories) true @@ -203,6 +204,7 @@ true $(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories) true @@ -227,6 +229,7 @@ true $(DefineConstants);WIN32;FD_SETSIZE=4096;PCRE_SUPPORT;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories) true diff --git a/src/common/grfio.cpp b/src/common/grfio.cpp index 80d84b9414..0fb252d8b4 100644 --- a/src/common/grfio.cpp +++ b/src/common/grfio.cpp @@ -385,7 +385,7 @@ static void grfio_localpath_create(char* buffer, size_t size, const char* filena /// Reads a file into a newly allocated buffer (from grf or data directory). -void* grfio_reads(const char* fname, int* size) +void* grfio_reads(const char* fname, size_t* size) { unsigned char* buf2 = nullptr; @@ -457,7 +457,7 @@ void* grfio_reads(const char* fname, int* size) } int32 grfio_read_rsw_water_level( const char* fname ){ - unsigned char* rsw = (unsigned char *)grfio_read( fname ); + unsigned char* rsw = (unsigned char *)grfio_reads( fname ); if( rsw == nullptr ){ // Error already reported in grfio_read @@ -714,7 +714,7 @@ static void grfio_resourcecheck(void) { char restable[256]; char *buf; - int size; + size_t size; FILE* fp; int i = 0; @@ -744,7 +744,7 @@ static void grfio_resourcecheck(void) buf[size] = '\0'; ptr = buf; - while( ptr - buf < size ) + while( static_cast( ptr - buf ) < size ) { if( grfio_parse_restable_row(ptr) ) ++i; diff --git a/src/common/grfio.hpp b/src/common/grfio.hpp index 548d03ff8c..31d489fe4f 100644 --- a/src/common/grfio.hpp +++ b/src/common/grfio.hpp @@ -10,9 +10,8 @@ const int32 RSW_NO_WATER = 1000000; void grfio_init(const char* fname); void grfio_final(void); -void* grfio_reads(const char* fname, int* size); +void* grfio_reads(const char* fname, size_t* size = nullptr); char* grfio_find_file(const char* fname); -#define grfio_read(fn) grfio_reads(fn, nullptr) int32 grfio_read_rsw_water_level( const char* fname ); unsigned long grfio_crc32(const unsigned char *buf, unsigned int len); diff --git a/src/common/mmo.hpp b/src/common/mmo.hpp index 4a00641239..671f40b09f 100644 --- a/src/common/mmo.hpp +++ b/src/common/mmo.hpp @@ -90,7 +90,8 @@ typedef uint32 t_itemid; #define MAX_FAME 1000000000 ///Max fame points #define MAX_CART 100 ///Maximum item in cart #define MAX_SKILL 1623 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit -#define DEFAULT_WALK_SPEED 150 ///Default walk speed +#define DEFAULT_WALK_SPEED 150 ///Default walk speed (other than NPC) +#define DEFAULT_NPC_WALK_SPEED 200 ///Default NPC walk speed #define MIN_WALK_SPEED 20 ///Min walk speed #define MAX_WALK_SPEED 1000 ///Max walk speed #define MAX_STORAGE 600 ///Max number of storage slots a player can have @@ -114,7 +115,7 @@ typedef uint32 t_itemid; #define MAX_CLAN 500 #define MAX_CLANALLIANCE 6 #ifndef MAX_BARTER_REQUIREMENTS - #define MAX_BARTER_REQUIREMENTS 5 + #define MAX_BARTER_REQUIREMENTS 6 #endif #ifndef WEB_AUTH_TOKEN_LENGTH #define WEB_AUTH_TOKEN_LENGTH 16+1 @@ -151,7 +152,7 @@ const t_itemid WEDDING_RING_F = 2635; //For character names, title names, guilds, maps, etc. //Includes null-terminator as it is the length of the array. #define NAME_LENGTH (23 + 1) -#define PASSWD_LENGTH (32+1) +#define PASSWD_LENGTH (32 + 1) //NPC names can be longer than it's displayed on client (NAME_LENGTH). #define NPC_NAME_LENGTH 50 // for npc name + 2 for a "::" + for label + 1 for EOS @@ -1123,8 +1124,8 @@ enum e_pc_reg_loading { enum e_party_member_withdraw { PARTY_MEMBER_WITHDRAW_LEAVE, ///< /leave PARTY_MEMBER_WITHDRAW_EXPEL, ///< Kicked - PARTY_MEMBER_WITHDRAW_CANT_LEAVE, ///< TODO: Cannot /leave - PARTY_MEMBER_WITHDRAW_CANT_EXPEL, ///< TODO: Cannot be kicked + PARTY_MEMBER_WITHDRAW_CANT_LEAVE, ///< Cannot /leave + PARTY_MEMBER_WITHDRAW_CANT_EXPEL, ///< Cannot be kicked }; enum e_rank { diff --git a/src/common/strlib.cpp b/src/common/strlib.cpp index ddcf462b3a..4bc25ab069 100644 --- a/src/common/strlib.cpp +++ b/src/common/strlib.cpp @@ -1011,7 +1011,7 @@ size_t _StringBuf_Vprintf( const char* file, int line, const char* func, StringB int n = vsnprintf( self->ptr_, size, fmt, apcopy ); va_end(apcopy); /* If that worked, return the length. */ - if( n > -1 && n < size ) + if( n > -1 && static_cast(n) < size ) { self->ptr_ += n; return self->ptr_ - self->buf_; diff --git a/src/login/account.cpp b/src/login/account.cpp index c10b6efab5..1b2a16d943 100644 --- a/src/login/account.cpp +++ b/src/login/account.cpp @@ -760,7 +760,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c Sql* sql_handle = ((AccountDB_SQL*)self)->accounts; AccountDB_SQL* db = (AccountDB_SQL*)self; char* data; - int plen = 0; + int16 plen = 0; size_t len; if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `key`, `index`, `value` FROM `%s` WHERE `account_id`='%" PRIu32 "'", db->global_acc_reg_str_table, account_id) ) @@ -790,7 +790,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); @@ -804,7 +804,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); WFIFOW(fd, 14) += 1; @@ -857,7 +857,7 @@ void mmo_send_global_accreg(AccountDB* self, int fd, uint32 account_id, uint32 c plen += 1; safestrncpy(WFIFOCP(fd,plen), data, len); - plen += len; + plen += static_cast( len ); Sql_GetData(sql_handle, 1, &data, nullptr); diff --git a/src/login/login-server.vcxproj b/src/login/login-server.vcxproj index e6fd165699..ecce1d3119 100644 --- a/src/login/login-server.vcxproj +++ b/src/login/login-server.vcxproj @@ -128,6 +128,7 @@ Disabled FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;WIN32;_DEBUG;_CONSOLE;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions) MultiThreadedDebug + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories) true @@ -148,6 +149,7 @@ true FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories) true @@ -170,6 +172,7 @@ true FD_SETSIZE=4096;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) MultiThreaded + true stdcpp17 $(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories) true diff --git a/src/login/login.cpp b/src/login/login.cpp index 5e5c818ccf..fb9b21e9bb 100644 --- a/src/login/login.cpp +++ b/src/login/login.cpp @@ -232,7 +232,7 @@ int login_mmo_auth_new(const char* userid, const char* pass, const char sex, con return 3; } - if( login_config.new_acc_length_limit && ( strlen(userid) < 4 || strlen(pass) < 4 ) ) + if( strlen(userid) < login_config.acc_name_min_length || strlen(pass) < login_config.password_min_length) return 1; // check for invalid inputs @@ -633,8 +633,10 @@ bool login_config_read(const char* cfgName, bool normal) { login_config.log_login = (bool)config_switch(w2); else if(!strcmpi(w1, "new_account")) login_config.new_account_flag = (bool)config_switch(w2); - else if(!strcmpi(w1, "new_acc_length_limit")) - login_config.new_acc_length_limit = (bool)config_switch(w2); + else if(!strcmpi(w1, "acc_name_min_length")) + login_config.acc_name_min_length = cap_value(atoi(w2), 0, NAME_LENGTH - 1); + else if(!strcmpi(w1, "password_min_length")) + login_config.password_min_length = cap_value(atoi(w2), 0, PASSWD_LENGTH - 1); else if(!strcmpi(w1, "start_limited_time")) login_config.start_limited_time = atoi(w2); else if(!strcmpi(w1, "use_MD5_passwords")) @@ -751,7 +753,13 @@ void login_set_defaults() { safestrncpy(login_config.date_format, "%Y-%m-%d %H:%M:%S", sizeof(login_config.date_format)); login_config.console = false; login_config.new_account_flag = true; - login_config.new_acc_length_limit = true; +#if PACKETVER >= 20181114 + login_config.acc_name_min_length = 6; + login_config.password_min_length = 6; +#else + login_config.acc_name_min_length = 4; + login_config.password_min_length = 4; +#endif login_config.use_md5_passwds = false; login_config.group_id_to_connect = -1; login_config.min_group_id_to_connect = -1; diff --git a/src/login/login.hpp b/src/login/login.hpp index 0e99c18774..b477180c75 100644 --- a/src/login/login.hpp +++ b/src/login/login.hpp @@ -88,7 +88,9 @@ struct Login_Config { bool log_login; /// whether to log login server actions or not char date_format[32]; /// date format used in messages bool console; /// console input system enabled? - bool new_account_flag,new_acc_length_limit; /// autoregistration via _M/_F ? / if yes minimum length is 4? + bool new_account_flag; /// autoregistration via _M/_F ? + uint8 acc_name_min_length; /// minimum account name length + uint8 password_min_length; /// minimum password length int start_limited_time; /// new account expiration time (-1: unlimited) bool use_md5_passwds; /// work with password hashes instead of plaintext passwords? int group_id_to_connect; /// required group id to connect diff --git a/src/login/loginclif.cpp b/src/login/loginclif.cpp index c2e7ef9739..d22777cf20 100644 --- a/src/login/loginclif.cpp +++ b/src/login/loginclif.cpp @@ -111,7 +111,7 @@ static void logclif_auth_ok(struct login_session_data* sd) { login_log(ip, sd->userid, 100, "login ok"); ShowStatus("Connection of the account '%s' accepted.\n", sd->userid); - PACKET_AC_ACCEPT_LOGIN* p = (PACKET_AC_ACCEPT_LOGIN*)packet_buffer; + PACKET_AC_ACCEPT_LOGIN* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_AC_ACCEPT_LOGIN; p->packetLength = sizeof( *p ); diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 823bf534a0..ef821c6487 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -1606,7 +1606,7 @@ ACMD_FUNC(baselevelup) sd->status.base_level += (unsigned int)level; status_calc_pc(sd, SCO_FORCE); status_percent_heal(&sd->bl, 100, 100); - clif_misceffect(&sd->bl, 0); + clif_misceffect( sd->bl, NOTIFYEFFECT_BASE_LEVEL_UP ); for (uint32 j = sd->status.base_level - level; j <= sd->status.base_level; j++) { achievement_update_objective(sd, AG_GOAL_LEVEL, 1, j); achievement_update_objective(sd, AG_GOAL_STATUS, 2, j, sd->status.class_); @@ -1651,7 +1651,7 @@ ACMD_FUNC(baselevelup) party_send_levelup(sd); if( level > 0 && battle_config.atcommand_levelup_events ) - npc_script_event(sd,NPCE_BASELVUP); + npc_script_event( *sd, NPCE_BASELVUP ); return 0; } @@ -1679,7 +1679,7 @@ ACMD_FUNC(joblevelup) level = pc_maxjoblv(sd) - sd->status.job_level; sd->status.job_level += (unsigned int)level; sd->status.skill_point += level; - clif_misceffect(&sd->bl, 1); + clif_misceffect( sd->bl, NOTIFYEFFECT_JOB_LEVEL_UP ); for (uint32 i = sd->status.job_level - level; i <= sd->status.job_level; i++) achievement_update_objective(sd, AG_GOAL_LEVEL, 1, i); clif_displaymessage(fd, msg_txt(sd,24)); // Job level raised. @@ -1709,7 +1709,7 @@ ACMD_FUNC(joblevelup) status_calc_pc(sd, SCO_FORCE); if( level > 0 && battle_config.atcommand_levelup_events ) - npc_script_event(sd,NPCE_JOBLVUP); + npc_script_event( *sd, NPCE_JOBLVUP ); return 0; } @@ -2416,11 +2416,11 @@ ACMD_FUNC(refine) sd->inventory.u.items_inventory[i].refine = final_refine; current_position = sd->inventory.u.items_inventory[i].equip; pc_unequipitem(sd, i, 3); - clif_refine(fd, 0, i, sd->inventory.u.items_inventory[i].refine); + clif_refine( *sd, i, ITEMREFINING_SUCCESS ); clif_delitem( *sd, i, 1, 3 ); clif_additem(sd, i, 1, 0); pc_equipitem(sd, i, current_position); - clif_misceffect(&sd->bl, 3); + clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS ); if( sd->inventory_data[i]->type == IT_WEAPON ){ achievement_update_objective(sd, AG_ENCHANT_SUCCESS, 2, sd->inventory_data[i]->weapon_level, sd->inventory.u.items_inventory[i].refine); } @@ -2499,7 +2499,7 @@ ACMD_FUNC(grade) clif_delitem( *sd, i, 1, 3 ); clif_additem(sd, i, 1, 0); pc_equipitem(sd, i, current_position); - clif_misceffect(&sd->bl, 3); + clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS ); count++; } } @@ -2562,7 +2562,7 @@ ACMD_FUNC(produce) tmp_item.card[2] = GetWord(sd->status.char_id, 0); tmp_item.card[3] = GetWord(sd->status.char_id, 1); clif_produceeffect(sd, 0, item_id); - clif_misceffect(&sd->bl, 3); + clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS ); if ((flag = pc_additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) clif_additem(sd, 0, 0, flag); @@ -3758,16 +3758,12 @@ ACMD_FUNC(lostskill) *------------------------------------------*/ ACMD_FUNC(spiritball) { - uint32 max_spiritballs; int number; nullpo_retr(-1, sd); - max_spiritballs = zmin(ARRAYLENGTH(sd->spirit_timer), 0x7FFF); - - if( !message || !*message || (number = atoi(message)) < 0 || number > max_spiritballs ) - { + if( !message || !*message || ( number = atoi( message ) ) < 0 || number > MAX_SPIRITBALL ){ char msg[CHAT_SIZE_MAX]; - safesnprintf(msg, sizeof(msg), msg_txt(sd,1028), max_spiritballs); // Please enter a party name (usage: @party ). + safesnprintf( msg, sizeof( msg ), msg_txt( sd, 1028 ), MAX_SPIRITBALL ); // Please enter an amount (usage: @spiritball ). clif_displaymessage(fd, msg); return -1; } @@ -3817,7 +3813,7 @@ ACMD_FUNC(party) return -1; } - party_create(sd, party, 0, 0); + party_create( *sd, party, 0, 0 ); return 0; } @@ -3845,7 +3841,7 @@ ACMD_FUNC(guild) prev = battle_config.guild_emperium_check; battle_config.guild_emperium_check = 0; - guild_create(sd, guild); + guild_create( *sd, guild ); battle_config.guild_emperium_check = prev; return 0; @@ -3858,8 +3854,9 @@ ACMD_FUNC(breakguild) if (sd->status.guild_id) { // Check if the player has a guild if (sd->guild) { // Check if guild was found if (sd->state.gmaster_flag) { // Check if player is guild master - int ret = 0; - ret = guild_break(sd, sd->guild->guild.name); // Break guild + // Break guild + int ret = guild_break( *sd, sd->guild->guild.name ); + if (ret) { // Check if anything went wrong return 0; // Guild was broken } else { @@ -4454,7 +4451,7 @@ ACMD_FUNC(mapinfo) { clif_displaymessage(fd, atcmd_output); if (!mapdata->skill_damage.empty()) { clif_displaymessage(fd, msg_txt(sd, 1054)); // > [Map Skill] Name : Player, Monster, Boss Monster, Other | Caster - for (auto skilldmg : mapdata->skill_damage) { + for (const auto& skilldmg : mapdata->skill_damage) { sprintf(atcmd_output," %s : %d%%, %d%%, %d%%, %d%% | %d", skill_get_name(skilldmg.first), skilldmg.second.rate[SKILLDMG_PC], @@ -4923,7 +4920,7 @@ ACMD_FUNC(repairall) } if (count > 0) { - clif_misceffect(&sd->bl, 3); + clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS ); clif_equiplist(sd); clif_displaymessage(fd, msg_txt(sd,107)); // All items have been repaired. } else { @@ -6154,7 +6151,7 @@ ACMD_FUNC(clearcart) #define MAX_SKILLID_PARTIAL_RESULTS 5 #define MAX_SKILLID_PARTIAL_RESULTS_LEN 74 // "skill " (6) + "%d:" (up to 5) + "%s" (up to 30) + " (%s)" (up to 33) ACMD_FUNC(skillid) { - int skillen, i, found = 0; + int i, found = 0; char partials[MAX_SKILLID_PARTIAL_RESULTS][MAX_SKILLID_PARTIAL_RESULTS_LEN]; nullpo_retr(-1, sd); @@ -6164,7 +6161,7 @@ ACMD_FUNC(skillid) { return -1; } - skillen = strlen(message); + size_t skillen = strlen( message ); for(const auto & skill : skill_db) { uint16 skill_id = skill.second->nameid; @@ -6398,7 +6395,6 @@ void getring (map_session_data* sd) if((flag = pc_additem(sd,&item_tmp,1,LOG_TYPE_COMMAND))) { clif_additem(sd,0,0,flag); - map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,4,0); } } @@ -6424,6 +6420,28 @@ ACMD_FUNC(marry) return -1; } + if (!pc_inventoryblank(sd)) { + clif_msg_color(sd, MSI_CANT_GET_ITEM_BECAUSE_COUNT, color_table[COLOR_RED]); + return -1; + } + + if (!pc_inventoryblank(pl_sd)) { + clif_msg_color(pl_sd, MSI_CANT_GET_ITEM_BECAUSE_COUNT, color_table[COLOR_RED]); + return -1; + } + + uint32 w = 0; + + if (w = itemdb_weight((sd->status.sex) ? WEDDING_RING_M : WEDDING_RING_F) && w + sd->weight > sd->max_weight) { + clif_msg_color(sd, MSI_CANT_GET_ITEM_BECAUSE_WEIGHT, color_table[COLOR_RED]); + return -1; + } + + if (w = itemdb_weight((pl_sd->status.sex) ? WEDDING_RING_M : WEDDING_RING_F) && w + pl_sd->weight > pl_sd->max_weight) { + clif_msg_color(pl_sd, MSI_CANT_GET_ITEM_BECAUSE_WEIGHT, color_table[COLOR_RED]); + return -1; + } + if (pc_marriage(sd, pl_sd)) { clif_displaymessage(fd, msg_txt(sd,1173)); // They are married... wish them well. clif_wedding_effect(&pl_sd->bl); //wedding effect and music [Lupus] @@ -6521,7 +6539,7 @@ ACMD_FUNC(autotrade) { } if (battle_config.at_logout_event) - npc_script_event(sd, NPCE_LOGOUT); //Logout Event + npc_script_event( *sd, NPCE_LOGOUT ); channel_pcquit(sd,0xF); //leave all chan clif_authfail_fd(sd->fd, 15); @@ -6564,7 +6582,7 @@ ACMD_FUNC(changegm) if( !battle_config.guild_leaderchange_woe && is_agit_start() ){ #if PACKETVER >= 20151001 - clif_msg(sd, GUILD_MASTER_WOE); + clif_msg(sd, MSI_IMPOSSIBLE_CHANGE_GUILD_MASTER_IN_SIEGE_TIME); #else clif_displaymessage(fd, msg_txt(sd,1513)); // Currently in WoE hours, unable to delegate Guild leader #endif @@ -6573,7 +6591,7 @@ ACMD_FUNC(changegm) if( battle_config.guild_leaderchange_delay && DIFF_TICK(time(nullptr),sd->guild->guild.last_leader_change) < battle_config.guild_leaderchange_delay ){ #if PACKETVER >= 20151001 - clif_msg(sd, GUILD_MASTER_DELAY); + clif_msg(sd, MSI_IMPOSSIBLE_CHANGE_GUILD_MASTER_NOT_TIME); #else clif_displaymessage(fd, msg_txt(sd,1514)); // You have to wait for a while before delegating a new Guild leader #endif @@ -7717,7 +7735,9 @@ ACMD_FUNC(misceffect) return -1; if (sscanf(message, "%11d", &effect) < 1) return -1; - clif_misceffect(&sd->bl,effect); + if (effect < NOTIFYEFFECT_BASE_LEVEL_UP || effect > NOTIFYEFFECT_TAEKWON_BASE_LEVEL_UP) + return -1; + clif_misceffect( sd->bl, static_cast(effect) ); return 0; } @@ -8870,7 +8890,7 @@ ACMD_FUNC(showdelay) *------------------------------------------*/ ACMD_FUNC(invite) { - unsigned int did = sd->duel_group; + size_t did = sd->duel_group; map_session_data *target_sd = nullptr; memset(atcmd_player_name, '\0', sizeof(atcmd_player_name)); @@ -8957,7 +8977,7 @@ ACMD_FUNC(duel) target_sd = map_nick2sd(atcmd_player_name,true); if(target_sd != nullptr) { - unsigned int newduel; + size_t newduel; if((newduel = duel_create(sd, 2)) != -1) { if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) { clif_displaymessage(fd, msg_txt(sd,353)); // "Duel: Player already in duel." @@ -9689,8 +9709,6 @@ static void atcommand_commands_sub(map_session_data* sd, const int fd, AtCommand clif_displaymessage(fd, msg_txt(sd,273)); // "Commands available:" for (cmd = (AtCommandInfo*)dbi_first(iter); dbi_exists(iter); cmd = (AtCommandInfo*)dbi_next(iter)) { - unsigned int slen = 0; - switch( type ) { case COMMAND_CHARCOMMAND: if( cmd->char_groups[sd->group->index] == 0 ) @@ -9705,7 +9723,7 @@ static void atcommand_commands_sub(map_session_data* sd, const int fd, AtCommand } - slen = strlen(cmd->command); + size_t slen = strlen( cmd->command ); // flush the text buffer if this command won't fit into it if (slen + cur - line_buff >= CHATBOX_SIZE) { @@ -9727,7 +9745,8 @@ static void atcommand_commands_sub(map_session_data* sd, const int fd, AtCommand int i, count_bind, gm_lvl = pc_get_group_level(sd); for( i = count_bind = 0; i < atcmd_binding_count; i++ ) { if ( gm_lvl >= ( (type - 1) ? atcmd_binding[i]->level2 : atcmd_binding[i]->level ) ) { - unsigned int slen = strlen(atcmd_binding[i]->command); + size_t slen = strlen( atcmd_binding[i]->command ); + if ( count_bind == 0 ) { cur = line_buff; memset(line_buff,' ',CHATBOX_SIZE); @@ -9821,7 +9840,8 @@ ACMD_FUNC(accinfo) { */ ACMD_FUNC(set) { char reg[46], val[128], name[32]; - int toset = 0, len; + int toset = 0; + size_t len; uint32 index; bool is_str = false; int64 uid; @@ -11585,7 +11605,7 @@ bool is_atcommand(const int fd, map_session_data* sd, const char* message, int t void atcommand_db_load_groups(){ DBIterator *iter = db_iterator(atcommand_db); AtCommandInfo* cmd; - int pc_group_max = player_group_db.size(); + size_t pc_group_max = player_group_db.size(); for (cmd = (AtCommandInfo*)dbi_first(iter); dbi_exists(iter); cmd = (AtCommandInfo*)dbi_next(iter)) { cmd->at_groups = (char*)aMalloc( pc_group_max * sizeof(char) ); diff --git a/src/map/battle.cpp b/src/map/battle.cpp index cb7b3889a6..01b742119e 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -393,7 +393,20 @@ int battle_delay_damage(t_tick tick, int amotion, struct block_list *src, struct damage = 0; } - if ( !battle_config.delay_battle_damage || amotion <= 1 ) { + // The client refuses to display animations slower than 1x speed + // So we need to shorten AttackMotion to be in-sync with the client in this case + if (battle_config.synchronize_damage && skill_id == 0 && src->type == BL_MOB && amotion > status_get_clientamotion(src)) + amotion = status_get_clientamotion(src); + // Check for delay battle damage config + else if (!battle_config.delay_battle_damage) + amotion = 1; + // Aegis places a damage-delay cap of 1 sec to non player attacks + // We only want to apply this cap if damage was not synchronized + else if (src->type != BL_PC && amotion > 1000) + amotion = 1000; + + // Skip creation of timer + if (amotion <= 1) { //Deal damage battle_damage(src, target, damage, ddelay, skill_lv, skill_id, dmg_lv, attack_type, additional_effects, gettick(), isspdamage); return 0; @@ -411,8 +424,6 @@ int battle_delay_damage(t_tick tick, int amotion, struct block_list *src, struct dat->additional_effects = additional_effects; dat->src_type = src->type; dat->isspdamage = isspdamage; - if (src->type != BL_PC && amotion > 1000) - amotion = 1000; //Aegis places a damage-delay cap of 1 sec to non player attacks. [Skotlex] if( src->type == BL_PC ) ((TBL_PC*)src)->delayed_damage++; @@ -1364,7 +1375,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe if (sce->val3 <= 0) { // Shield Down sce->val2--; if (sce->val2 > 0) { - clif_millenniumshield(target, sce->val2); + clif_millenniumshield( *target, sce->val2 ); sce->val3 = 1000; // Next shield } else status_change_end(target, SC_MILLENNIUMSHIELD); // All shields down @@ -1426,11 +1437,9 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe // ATK_DEF Type if ((sce = sc->getSCE(SC_LIGHTNINGWALK)) && !(flag & BF_MAGIC) && flag&BF_LONG && rnd() % 100 < sce->val1) { - const int dx[8] = { 0,-1,-1,-1,0,1,1,1 }; - const int dy[8] = { 1,1,0,-1,-1,-1,0,1 }; uint8 dir = map_calc_dir(target, src->x, src->y); - if (unit_movepos(target, src->x - dx[dir], src->y - dy[dir], 1, 1)) { + if (unit_movepos(target, src->x - dirx[dir], src->y - diry[dir], 1, 1)) { clif_blown(target); unit_setdir(target, dir); } @@ -2380,15 +2389,6 @@ static int battle_calc_sizefix(int64 damage, map_session_data *sd, unsigned char return (int)cap_value(damage, INT_MIN, INT_MAX); } -static int battle_calc_status_attack(struct status_data *status, short hand) -{ - //left-hand penalty on sATK is always 50% [Baalberith] - if (hand == EQI_HAND_L) - return status->batk; - else - return 2 * status->batk; -} - /** * Calculates renewal Variance, OverUpgradeBonus, and SizePenaltyMultiplier of weapon damage parts for player * @param src Block list of attacker @@ -3397,10 +3397,12 @@ static bool battle_skill_stacks_masteries_vvs(uint16 skill_id, e_bonus_chk_flag case LG_EARTHDRIVE: case NPC_DRAGONBREATH: return false; +#ifndef RENEWAL case LK_SPIRALPIERCE: - // Spiral Pierce is influenced only by refine bonus and Star Crumbs for players + // In Pre-Renewal Spiral Pierce is influenced only by refine bonus and Star Crumbs for players if (chk_flag != BCHK_REFINE && chk_flag != BCHK_STAR) return false; +#endif break; } @@ -3423,8 +3425,13 @@ static int battle_calc_equip_attack(struct block_list *src, int skill_id) struct status_data *status = status_get_status_data(src); map_session_data *sd = BL_CAST(BL_PC, src); - if (sd) // add arrow atk if using an applicable skill - eatk += (is_skill_using_arrow(src, skill_id) ? sd->bonus.arrow_atk : 0); + // Add arrow atk if using an applicable skill + if (sd != nullptr && is_skill_using_arrow(src, skill_id)) { + int16 ammo_idx = sd->equip_index[EQI_AMMO]; + // Attack of cannon balls is not added to equip attack, it needs to be added by the skills that use them + if (ammo_idx >= 0 && sd->inventory_data[ammo_idx] != nullptr && sd->inventory_data[ammo_idx]->subtype != AMMO_CANNONBALL) + eatk += sd->bonus.arrow_atk; + } return eatk + status->eatk; } @@ -3925,6 +3932,16 @@ static void battle_calc_attack_masteries(struct Damage* wd, struct block_list *s #endif } break; +#ifdef RENEWAL + case GN_CARTCANNON: + case NC_ARMSCANNON: + // Arrow attack of these skills is not influenced by P.ATK so we add it as mastery attack + if (sd != nullptr) { + struct status_data* tstatus = status_get_status_data(target); + ATK_ADD(wd->masteryAtk, wd->masteryAtk2, battle_attr_fix(src, target, sd->bonus.arrow_atk, sd->bonus.arrow_ele, tstatus->def_ele, tstatus->ele_lv)); + } + break; +#endif } if (sc) { // Status change considered as masteries @@ -3974,8 +3991,8 @@ static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,s int right_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_R, false); int left_element = battle_get_weapon_element(wd, src, target, skill_id, skill_lv, EQI_HAND_L, false); - wd->statusAtk += battle_calc_status_attack(sstatus, EQI_HAND_R); - wd->statusAtk2 += battle_calc_status_attack(sstatus, EQI_HAND_L); + wd->statusAtk += sstatus->batk; + wd->statusAtk2 += sstatus->batk; if (sd && sd->sc.getSCE(SC_SEVENWIND)) { // Mild Wind applies element to status ATK as well as weapon ATK [helvetica] wd->statusAtk = battle_attr_fix(src, target, wd->statusAtk, right_element, tstatus->def_ele, tstatus->ele_lv); @@ -3985,6 +4002,9 @@ static void battle_calc_damage_parts(struct Damage* wd, struct block_list *src,s wd->statusAtk2 = battle_attr_fix(src, target, wd->statusAtk2, ELE_NEUTRAL, tstatus->def_ele, tstatus->ele_lv); } + // Right-hand status attack is doubled after elemental adjustments + wd->statusAtk *= 2; + // Check critical if (wd->type == DMG_MULTI_HIT_CRITICAL || wd->type == DMG_CRITICAL) critical = true; @@ -4062,26 +4082,34 @@ static void battle_calc_skill_base_damage(struct Damage* wd, struct block_list * case LK_SPIRALPIERCE: case ML_SPIRALPIERCE: if (sd) { - short index = sd->equip_index[EQI_HAND_R]; + battle_calc_damage_parts(wd, src, target, skill_id, skill_lv); + // Officially statusAtk + weaponAtk + equipAtk make base attack + // We simulate this here by adding them all into equip attack + ATK_ADD2(wd->equipAtk, wd->equipAtk2, wd->statusAtk + wd->weaponAtk, wd->statusAtk2 + wd->weaponAtk2); + // Set statusAtk and weaponAtk to 0 + ATK_RATE(wd->statusAtk, wd->statusAtk2, 0); + ATK_RATE(wd->weaponAtk, wd->weaponAtk2, 0); + + // Add weight + short index = sd->equip_index[EQI_HAND_R]; if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_WEAPON) - wd->equipAtk += sd->inventory_data[index]->weight*7/100; // weight from spear is treated as equipment ATK on official [helvetica] + wd->equipAtk += sd->inventory_data[index]->weight / 10; - battle_calc_damage_parts(wd, src, target, skill_id, skill_lv); - wd->masteryAtk = 0; // weapon mastery is ignored for spiral - - switch (tstatus->size) { //Size-fix. Is this modified by weapon perfection? - case SZ_SMALL: //Small: 115% - ATK_RATE(wd->damage, wd->damage2, 115); - RE_ALLATK_RATE(wd, 115); + // 70% damage modifier is applied to base attack + weight + ATK_RATE(wd->equipAtk, wd->equipAtk2, 70); + + // Additional skill-specific size fix + switch (tstatus->size) { + case SZ_SMALL: //Small: 130% + ATK_RATE(wd->equipAtk, wd->equipAtk2, 130); break; - //case SZ_MEDIUM: //Medium: 100% - case SZ_BIG: //Large: 85% - ATK_RATE(wd->damage, wd->damage2, 85); - RE_ALLATK_RATE(wd, 85); + case SZ_MEDIUM: //Medium: 115% + ATK_RATE(wd->equipAtk, wd->equipAtk2, 115); break; + //case SZ_BIG: //Large: 100% } } else { wd->damage = battle_calc_base_damage(src, sstatus, &sstatus->rhw, sc, tstatus->size, 0); //Monsters have no weight and use ATK instead @@ -5154,6 +5182,9 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * //ATK [{(Skill Level x 150) + 300} x Caster's Base Level / 120]% + ATK [(AGI x 2) + (Caster's Job Level x 4)]% skillratio += -100 + 300 + 150 * skill_lv; RE_LVL_DMOD(120); + skillratio += sstatus->agi * 2; + // If 4th job, job level of your 3rd job counts + skillratio += (sd ? (sd->class_&JOBL_FOURTH ? sd->change_level_4th : sd->status.job_level) * 4 : 0); break; case GC_VENOMPRESSURE: skillratio += 900; @@ -5306,8 +5337,11 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * RE_LVL_DMOD(100); break; case LG_SHIELDPRESS: - skillratio += -100 + 200 * skill_lv + sstatus->str; + skillratio += -100 + 200 * skill_lv; if (sd) { + // Shield Press only considers base STR without job bonus + skillratio += sd->status.str; + if( sc != nullptr && sc->getSCE( SC_SHIELD_POWER ) ){ skillratio += skill_lv * 15 * pc_checkskill( sd, IG_SHIELD_MASTERY ); } @@ -6348,19 +6382,6 @@ static int64 battle_calc_skill_constant_addition(struct Damage* wd, struct block atk = 40 * pc_checkskill(sd, RA_RESEARCHTRAP); break; #endif - case GC_COUNTERSLASH: - atk = sstatus->agi * 2 + (sd ? sd->status.job_level * 4 : 0); - break; - case LG_SHIELDPRESS: - if (sd) { - int damagevalue = 0; - short index = sd->equip_index[EQI_HAND_L]; - - if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR) - damagevalue = sstatus->vit * sd->inventory.u.items_inventory[index].refine; - atk = damagevalue; - } - break; } return atk; } @@ -6684,41 +6705,31 @@ static void battle_calc_defense_reduction(struct Damage* wd, struct block_list * } #ifdef RENEWAL - switch(skill_id) { - case RK_DRAGONBREATH: - case RK_DRAGONBREATH_WATER: - case NC_ARMSCANNON: - case GN_CARTCANNON: - if (attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) || attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L)) - return; - if (is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) || is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L)) - return; - [[fallthrough]]; - case CR_GRANDCROSS: // Grand Cross is marked as "IgnoreDefense" in renewal as it's applied at the end after already combining ATK and MATK - case NPC_GRANDDARKNESS: - // Defense reduction by flat value. - // This completely bypasses the normal RE DEF Reduction formula. - wd->damage -= (def1 + vit_def); - if (is_attack_left_handed(src, skill_id)) - wd->damage2 -= (def1 + vit_def); - break; + std::bitset nk = battle_skill_get_damage_properties(skill_id, wd->miscflag); + + if (nk[NK_SIMPLEDEFENSE]) { + // Defense reduction by flat value. + // This completely bypasses the normal RE DEF Reduction formula. + wd->damage -= (def1 + vit_def); + if (is_attack_left_handed(src, skill_id)) + wd->damage2 -= (def1 + vit_def); + } + else { /** * RE DEF Reduction * Damage = Attack * (4000+eDEF)/(4000+eDEF*10) - sDEF * Pierce defence gains 1 atk per def/2 */ - default: - if( def1 == -400 ) /* -400 creates a division by 0 and subsequently crashes */ - def1 = -399; - ATK_ADD2(wd->damage, wd->damage2, - is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ? (def1*battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv))/200 : 0, - is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ? (def1*battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv))/200 : 0 - ); - if( !attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) && !is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ) - wd->damage = wd->damage * (4000+def1) / (4000+10*def1) - vit_def; - if( is_attack_left_handed(src, skill_id) && !attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) && !is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ) - wd->damage2 = wd->damage2 * (4000+def1) / (4000+10*def1) - vit_def; - break; + if (def1 == -400) /* -400 creates a division by 0 and subsequently crashes */ + def1 = -399; + ATK_ADD2(wd->damage, wd->damage2, + is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R) ? (def1 * battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv)) / 200 : 0, + is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L) ? (def1 * battle_calc_attack_skill_ratio(wd, src, target, skill_id, skill_lv)) / 200 : 0 + ); + if (!attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_R) && !is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_R)) + wd->damage = wd->damage * (4000 + def1) / (4000 + 10 * def1) - vit_def; + if (is_attack_left_handed(src, skill_id) && !attack_ignores_def(wd, src, target, skill_id, skill_lv, EQI_HAND_L) && !is_attack_piercing(wd, src, target, skill_id, skill_lv, EQI_HAND_L)) + wd->damage2 = wd->damage2 * (4000 + def1) / (4000 + 10 * def1) - vit_def; } #else if (def1 > 100) def1 = 100; @@ -6849,6 +6860,15 @@ static void battle_calc_attack_plant(struct Damage* wd, struct block_list *src,s return; } + // Triple Attack has a special property that it does not split damage on plant mode + // In pre-renewal, it requires the monster to have exactly 100 def + if (skill_id == MO_TRIPLEATTACK && wd->div_ < 0 +#ifndef RENEWAL + && tstatus->def == 100 +#endif + ) + wd->div_ *= -1; + //For plants we don't continue with the weapon attack code, so we have to apply DAMAGE_DIV_FIX here battle_apply_div_fix(wd, skill_id); @@ -7417,18 +7437,14 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl #endif battle_calc_skill_base_damage(&wd, src, target, skill_id, skill_lv); // base skill damage - int64 ratio = 0; - #ifndef RENEWAL - ratio = battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv); // skill level ratios + // Skill ratio + ATK_RATE(wd.damage, wd.damage2, battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv)); - ATK_RATE(wd.damage, wd.damage2, ratio); + // Additive damage bonus + ATK_ADD(wd.damage, wd.damage2, battle_calc_skill_constant_addition(&wd, src, target, skill_id, skill_lv)); #endif - int64 bonus_damage = battle_calc_skill_constant_addition(&wd, src, target, skill_id, skill_lv); // other skill bonuses - - ATK_ADD(wd.damage, wd.damage2, bonus_damage); - #ifdef RENEWAL if(skill_id == HW_MAGICCRASHER) { // Add weapon attack for MATK onto Magic Crasher struct status_data *sstatus = status_get_status_data(src); @@ -7487,7 +7503,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl if( is_attack_left_handed( src, skill_id ) ){ wd.damage2 = wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.percentAtk2; } - // Apply PATK mod + // Apply P.ATK mod // But for Dragonbreaths it only applies if Dragonic Aura is skilled if( ( skill_id != RK_DRAGONBREATH && skill_id != RK_DRAGONBREATH_WATER ) || pc_checkskill( sd, DK_DRAGONIC_AURA ) > 0 ){ wd.damage = (int64)floor( (float)( wd.damage * ( 100 + sstatus->patk ) / 100 ) ); @@ -7500,11 +7516,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl if( is_attack_left_handed( src, skill_id ) ){ wd.damage2 += wd.masteryAtk2; } - // Apply bonus damage - wd.damage += bonus_damage; - if( is_attack_left_handed( src, skill_id ) ){ - wd.damage2 += bonus_damage; - } // CritAtkRate modifier if (wd.type == DMG_CRITICAL || wd.type == DMG_MULTI_HIT_CRITICAL) { @@ -7526,9 +7537,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.long_attack_atk_rate); } - ratio = battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv); // skill level ratios + // Skill ratio + ATK_RATE(wd.damage, wd.damage2, battle_calc_attack_skill_ratio(&wd, src, target, skill_id, skill_lv)); - ATK_RATE(wd.damage, wd.damage2, ratio); + // Additive damage bonus + ATK_ADD(wd.damage, wd.damage2, battle_calc_skill_constant_addition(&wd, src, target, skill_id, skill_lv)); // Advance Katar Mastery if (sd) { @@ -7540,8 +7553,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl // Res reduces physical damage by a percentage and // is calculated before DEF and other reductions. - // This should be the official formula. [Rytech] - if ((wd.damage + wd.damage2) && tstatus->res > 0) { + // All skills that use the simple defense formula (damage substracted by DEF+DEF2) ignore Res + // TODO: Res formula probably should be: (2000+x)/(2000+5x), but with the reduction rounded down + if ((wd.damage + wd.damage2) && tstatus->res > 0 && !nk[NK_SIMPLEDEFENSE]) { short res = tstatus->res; short ignore_res = 0;// Value used as a percentage. @@ -7556,16 +7570,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl ignore_res += sc->getSCE(SC_POTENT_VENOM)->val2; } - ignore_res = min(ignore_res, 100); + ignore_res = min(ignore_res, battle_config.max_res_mres_ignored); if (ignore_res > 0) res -= res * ignore_res / 100; - // Max damage reduction from Res is officially 50%. - // That means 625 Res is needed to hit that cap. - if (res > battle_config.max_res_mres_reduction) - res = battle_config.max_res_mres_reduction; - // Apply damage reduction. wd.damage = wd.damage * (5000 + res) / (5000 + 10 * res); wd.damage2 = wd.damage2 * (5000 + res) / (5000 + 10 * res); @@ -7626,6 +7635,16 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl if(sd && sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST) ATK_ADD(wd.damage, wd.damage2, 10 * pc_checkskill(sd, TK_RUN)); break; + case LG_SHIELDPRESS: + if (sd) { + int damagevalue = 0; + short index = sd->equip_index[EQI_HAND_L]; + + if (index >= 0 && sd->inventory_data[index] && sd->inventory_data[index]->type == IT_ARMOR) + damagevalue = sstatus->vit * sd->inventory.u.items_inventory[index].refine; + ATK_ADD(wd.damage, wd.damage2, damagevalue); + } + break; case SR_TIGERCANNON: // (Tiger Cannon skill level x 240) + (Target Base Level x 40) if (wd.miscflag&8) { @@ -8215,8 +8234,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case WL_SUMMON_ATK_WATER: case WL_SUMMON_ATK_WIND: case WL_SUMMON_ATK_GROUND: - skillratio += -100 + (1 + skill_lv) / 2 * (status_get_lv(src) + (sd ? sd->status.job_level : 0)); - RE_LVL_DMOD(100); // ! TODO: Confirm new formula + skillratio += 200; + RE_LVL_DMOD(100); break; case LG_RAYOFGENESIS: skillratio += -100 + 350 * skill_lv + sstatus->int_; // !TODO: What's the INT bonus? @@ -8794,7 +8813,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list (sc->getSCE(SC_EARTH_INSIGNIA) && sc->getSCE(SC_EARTH_INSIGNIA)->val1 == 3 && s_ele == ELE_EARTH)) skillratio += 25; } - +#ifdef RENEWAL + // S.MATK needs to be applied before the skill ratio to prevent rounding issues + if (sd && sstatus->smatk > 0) + ad.damage += ad.damage * sstatus->smatk / 100; +#endif MATK_RATE(skillratio); //Constant/misc additions from skills @@ -8825,12 +8848,9 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list ad.damage -= (int64)ad.damage*i/100; #ifdef RENEWAL - if (sd && sstatus->smatk > 0) - ad.damage += ad.damage * sstatus->smatk / 100; - // MRes reduces magical damage by a percentage and // is calculated before MDEF and other reductions. - // This should be the official formula. [Rytech] + // TODO: MRes formula probably should be: (2000+x)/(2000+5x), but with the reduction rounded down if (ad.damage && tstatus->mres > 0) { short mres = tstatus->mres; short ignore_mres = 0;// Value used as percentage. @@ -8842,16 +8862,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list if (sc && sc->getSCE(SC_A_VITA)) ignore_mres += sc->getSCE(SC_A_VITA)->val2; - ignore_mres = min(ignore_mres, 100); + ignore_mres = min(ignore_mres, battle_config.max_res_mres_ignored); if (ignore_mres > 0) mres -= mres * ignore_mres / 100; - // Max damage reduction from MRes is officially 50%. - // That means 625 MRes is needed to hit that cap. - if (mres > battle_config.max_res_mres_reduction) - mres = battle_config.max_res_mres_reduction; - // Apply damage reduction. ad.damage = ad.damage * (5000 + mres) / (5000 + 10 * mres); } @@ -9193,17 +9208,40 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * #endif break; case NJ_ZENYNAGE: + md.damage = skill_get_zeny( skill_id, skill_lv ); + + if( md.damage == 0 ){ + md.damage = 2; + } + + md.damage += rnd_value( static_cast( 0 ), md.damage ); + + // Specific to Boss Class + if( status_get_class_( target ) == CLASS_BOSS ){ + md.damage /= 3; + } + + if( tsd != nullptr ){ + md.damage /= 2; + } + break; case KO_MUCHANAGE: - md.damage = skill_get_zeny(skill_id, skill_lv); - if (!md.damage) - md.damage = (skill_id == NJ_ZENYNAGE ? 2 : 10); - md.damage = (skill_id == NJ_ZENYNAGE ? rnd()%md.damage + md.damage : md.damage * rnd_value(50,100)) / (skill_id == NJ_ZENYNAGE ? 1 : 100); - if (sd && skill_id == KO_MUCHANAGE && !pc_checkskill(sd, NJ_TOBIDOUGU)) - md.damage = md.damage / 2; - if (status_get_class_(target) == CLASS_BOSS) // Specific to Boss Class - md.damage = md.damage / (skill_id == NJ_ZENYNAGE ? 3 : 2); - else if (tsd && skill_id == NJ_ZENYNAGE) - md.damage = md.damage / 2; + md.damage = skill_get_zeny( skill_id, skill_lv ); + + if( md.damage == 0 ){ + md.damage = 10; + } + + md.damage = rnd_value( md.damage / 2, md.damage ); + + if( pc_checkskill( sd, NJ_TOBIDOUGU ) == 0 ){ + md.damage /= 2; + } + + // Specific to Boss Class + if( status_get_class_( target ) == CLASS_BOSS ){ + md.damage /= 2; + } break; #ifdef RENEWAL case NJ_ISSEN: @@ -9377,7 +9415,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * if (sd) { if (md.damage > sd->status.zeny) md.damage = sd->status.zeny; - pc_payzeny(sd,(int)cap_value(md.damage, INT_MIN, INT_MAX),LOG_TYPE_STEAL); + pc_payzeny( sd, static_cast( md.damage ), LOG_TYPE_CONSUME ); } break; } @@ -9870,7 +9908,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if (sd->weapontype1 > W_KATAR && sd->weapontype1 < W_HUUMA) clif_skill_fail( *sd, 0, USESKILL_FAIL_NEED_MORE_BULLET ); else - clif_arrow_fail(sd,0); + clif_arrow_fail( *sd, ARROWFAIL_NO_AMMO ); return ATK_NONE; } //Ammo check by Ishizu-chan @@ -9878,7 +9916,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t switch (sd->status.weapon) { case W_BOW: if (sd->inventory_data[index]->subtype != AMMO_ARROW) { - clif_arrow_fail(sd,0); + clif_arrow_fail( *sd, ARROWFAIL_NO_AMMO ); return ATK_NONE; } break; @@ -9922,7 +9960,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if (dist <= 0 || (!map_check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) { uint16 skill_lv = tsc->getSCE(SC_AUTOCOUNTER)->val1; - clif_skillcastcancel(target); //Remove the casting bar. [Skotlex] + clif_skillcastcancel( *target ); //Remove the casting bar. [Skotlex] clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0, false); //Display MISS. status_change_end(target, SC_AUTOCOUNTER); skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0); @@ -10531,6 +10569,22 @@ struct block_list* battle_get_master(struct block_list *src) return prev; } +bool battle_get_exception_ai(block_list &src) { + mob_data *md = BL_CAST(BL_MOB, &src); + + if (!md) + return false; + + switch (md->special_state.ai) { + case AI_ABR: + case AI_ATTACK: + case AI_BIONIC: + case AI_ZANZOU: + return true; + } + return false; +} + /*========================================== * Checks the state between two targets * (enemy, friend, party, guild, etc) @@ -10782,7 +10836,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if( !md->special_state.ai ) { //Normal mobs if( - ( target->type == BL_MOB && t_bl->type == BL_PC && ( ((TBL_MOB*)target)->special_state.ai != AI_ZANZOU && ((TBL_MOB*)target)->special_state.ai != AI_ATTACK ) ) || + ( target->type == BL_MOB && t_bl->type == BL_PC && !battle_get_exception_ai(*target) ) || ( t_bl->type == BL_MOB && (((TBL_MOB*)t_bl)->special_state.ai == AI_NONE || ((TBL_MOB*)t_bl)->special_state.ai == AI_WAVEMODE )) ) state |= BCT_PARTY; //Normal mobs with no ai or with AI_WAVEMODE are friends. @@ -11203,6 +11257,7 @@ static const struct _battle_data { { "pk_level_range", &battle_config.pk_level_range, 0, 0, INT_MAX, }, { "manner_system", &battle_config.manner_system, 0xFFF, 0, 0xFFF, }, { "pet_equip_required", &battle_config.pet_equip_required, 0, 0, 1, }, + { "pet_unequip_destroy", &battle_config.pet_unequip_destroy, 1, 0, 1, }, { "multi_level_up", &battle_config.multi_level_up, 0, 0, 1, }, { "multi_level_up_base", &battle_config.multi_level_up_base, 0, 0, MAX_LEVEL, }, { "multi_level_up_job", &battle_config.multi_level_up_job, 0, 0, MAX_LEVEL, }, @@ -11273,7 +11328,7 @@ static const struct _battle_data { { "mob_status_def_rate", &battle_config.mob_sc_def_rate, 100, 0, INT_MAX, }, { "pc_max_status_def", &battle_config.pc_max_sc_def, 100, 0, INT_MAX, }, { "mob_max_status_def", &battle_config.mob_max_sc_def, 100, 0, INT_MAX, }, - { "sg_miracle_skill_ratio", &battle_config.sg_miracle_skill_ratio, 1, 0, 10000, }, + { "sg_miracle_skill_ratio", &battle_config.sg_miracle_skill_ratio, 1, 0, 20000, }, { "sg_angel_skill_ratio", &battle_config.sg_angel_skill_ratio, 10, 0, 10000, }, { "autospell_stacking", &battle_config.autospell_stacking, 0, 0, 1, }, { "override_mob_names", &battle_config.override_mob_names, 0, 0, 2, }, @@ -11506,12 +11561,16 @@ static const struct _battle_data { { "pet_legacy_formula", &battle_config.pet_legacy_formula, 0, 0, 1, }, { "pet_distance_check", &battle_config.pet_distance_check, 5, 0, 50, }, { "pet_hide_check", &battle_config.pet_hide_check, 1, 0, 1, }, + { "instance_block_leave", &battle_config.instance_block_leave, 1, 0, 1, }, + { "instance_block_leaderchange", &battle_config.instance_block_leaderchange, 1, 0, 1, }, + { "instance_block_invite", &battle_config.instance_block_invite, 1, 0, 1, }, + { "instance_block_expulsion", &battle_config.instance_block_expulsion, 1, 0, 1, }, // 4th Job Stuff { "use_traitpoint_table", &battle_config.use_traitpoint_table, 1, 0, 1, }, { "trait_points_job_change", &battle_config.trait_points_job_change, 7, 1, 1000, }, { "max_trait_parameter", &battle_config.max_trait_parameter, 100, 10, SHRT_MAX, }, - { "max_res_mres_reduction", &battle_config.max_res_mres_reduction, 625, 1, SHRT_MAX, }, + { "max_res_mres_ignored", &battle_config.max_res_mres_ignored, 50, 0, 100, }, { "max_ap", &battle_config.max_ap, 200, 100, 1000000000, }, { "ap_rate", &battle_config.ap_rate, 100, 1, INT_MAX, }, { "restart_ap_rate", &battle_config.restart_ap_rate, 0, 0, 100, }, @@ -11539,6 +11598,8 @@ static const struct _battle_data { { "mob_respawn_time", &battle_config.mob_respawn_time, 1000, 1000, INT_MAX, }, { "mob_unlock_time", &battle_config.mob_unlock_time, 2000, 0, INT_MAX, }, + { "map_edge_size", &battle_config.map_edge_size, 15, 1, 40, }, + { "randomize_center_cell", &battle_config.randomize_center_cell, 1, 0, 1, }, { "feature.stylist", &battle_config.feature_stylist, 1, 0, 1, }, { "feature.banking_state_enforce", &battle_config.feature_banking_state_enforce, 0, 0, 1, }, @@ -11547,6 +11608,8 @@ static const struct _battle_data { #else { "feature.instance_allow_reconnect", &battle_config.instance_allow_reconnect, 0, 0, 1, }, #endif + { "synchronize_damage", &battle_config.synchronize_damage, 0, 0, 1, }, + { "item_stacking", &battle_config.item_stacking, 1, 0, 1, }, #include }; diff --git a/src/map/battle.hpp b/src/map/battle.hpp index dabf9264be..d82cc3aeff 100644 --- a/src/map/battle.hpp +++ b/src/map/battle.hpp @@ -260,6 +260,7 @@ struct Battle_Config int pet_max_atk2; //[Skotlex] int pet_no_gvg; //Disables pets in gvg. [Skotlex] int pet_equip_required; + int pet_unequip_destroy; int pet_master_dead; int skill_min_damage; @@ -721,11 +722,15 @@ struct Battle_Config int pet_distance_check; int pet_hide_check; + int instance_block_leave; + int instance_block_leaderchange; + int instance_block_invite; + int instance_block_expulsion; // 4th Jobs Stuff int trait_points_job_change; int use_traitpoint_table; int max_trait_parameter; - int max_res_mres_reduction; + int max_res_mres_ignored; int max_ap; int ap_rate; int restart_ap_rate; @@ -749,10 +754,14 @@ struct Battle_Config int mob_respawn_time; int mob_unlock_time; + int map_edge_size; + int randomize_center_cell; int feature_stylist; int feature_banking_state_enforce; int instance_allow_reconnect; + int synchronize_damage; + int item_stacking; #include }; diff --git a/src/map/battleground.cpp b/src/map/battleground.cpp index 8bd4c29206..dbcc7e6fd7 100644 --- a/src/map/battleground.cpp +++ b/src/map/battleground.cpp @@ -612,7 +612,7 @@ int bg_team_leave(map_session_data *sd, bool quit, bool deserter) sc_start(nullptr, &sd->bl, SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT, 100, 1, static_cast(bg->deserter_time) * 1000); // Deserter timer } - return bgteam->members.size(); + return static_cast( bgteam->members.size() ); } return -1; diff --git a/src/map/buyingstore.cpp b/src/map/buyingstore.cpp index 4e03d54a89..1a1bab8332 100644 --- a/src/map/buyingstore.cpp +++ b/src/map/buyingstore.cpp @@ -248,7 +248,7 @@ int8 buyingstore_create( map_session_data* sd, int zenylimit, unsigned char resu Sql_ShowDebug(mmysql_handle); StringBuf_Destroy(&buf); - clif_buyingstore_myitemlist(sd); + clif_buyingstore_myitemlist( *sd ); clif_buyingstore_entry( *sd ); idb_put(buyingstore_db, sd->status.char_id, sd); @@ -307,13 +307,13 @@ void buyingstore_open(map_session_data* sd, uint32 account_id) return; } - if( !searchstore_queryremote(sd, account_id) && ( sd->bl.m != pl_sd->bl.m || !check_distance_bl(&sd->bl, &pl_sd->bl, AREA_SIZE) ) ) + if( !searchstore_queryremote(*sd, account_id) && ( sd->bl.m != pl_sd->bl.m || !check_distance_bl(&sd->bl, &pl_sd->bl, AREA_SIZE) ) ) {// out of view range return; } // success - clif_buyingstore_itemlist(sd, pl_sd); + clif_buyingstore_itemlist( *sd, *pl_sd ); } /** @@ -354,13 +354,13 @@ void buyingstore_trade( map_session_data* sd, uint32 account_id, unsigned int bu return; } - if( !searchstore_queryremote(sd, account_id) && ( sd->bl.m != pl_sd->bl.m || !check_distance_bl(&sd->bl, &pl_sd->bl, AREA_SIZE) ) ) + if( !searchstore_queryremote(*sd, account_id) && ( sd->bl.m != pl_sd->bl.m || !check_distance_bl(&sd->bl, &pl_sd->bl, AREA_SIZE) ) ) {// out of view range clif_buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0); return; } - searchstore_clearremote(sd); + searchstore_clearremote(*sd); // buyer lost zeny in the mean time? fix the limit if( pl_sd->status.zeny < pl_sd->buyingstore.zenylimit ){ @@ -703,6 +703,7 @@ void do_init_buyingstore_autotrade( void ) { // initialize player CREATE(at->sd, map_session_data, 1); // TODO: Dont use Memory Manager allocation anymore and rely on the C++ container + new (at->sd) map_session_data(); pc_setnewpc(at->sd, at->account_id, at->char_id, 0, gettick(), at->sex, 0); at->sd->state.autotrade = 1|4; if (battle_config.autotrade_monsterignore) diff --git a/src/map/cashshop.cpp b/src/map/cashshop.cpp index 4d98fe5bf9..f3bbc377d1 100644 --- a/src/map/cashshop.cpp +++ b/src/map/cashshop.cpp @@ -438,7 +438,7 @@ static void cashshop_read_db( void ){ * @param item_list Array of item ID * @return true: success, false: fail */ -bool cashshop_buylist( map_session_data* sd, uint32 kafrapoints, int n, struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub* item_list ){ +bool cashshop_buylist( map_session_data* sd, uint32 kafrapoints, int n, const PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub* item_list ){ uint32 totalcash = 0; uint32 totalweight = 0; int i,new_; diff --git a/src/map/cashshop.hpp b/src/map/cashshop.hpp index 4cf2e514c1..788e30d0dd 100644 --- a/src/map/cashshop.hpp +++ b/src/map/cashshop.hpp @@ -14,12 +14,14 @@ #include // t_itemid #include // ShowWarning, ShowStatus +#include "clif.hpp" + class map_session_data; void do_init_cashshop( void ); void do_final_cashshop( void ); void cashshop_reloaddb( void ); -bool cashshop_buylist( map_session_data* sd, uint32 kafrapoints, int n, struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub* item_list ); +bool cashshop_buylist( map_session_data* sd, uint32 kafrapoints, int n, const PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub* item_list ); // Taken from AEGIS (CASH_SHOP_TAB_CODE) enum e_cash_shop_tab : uint16{ diff --git a/src/map/chat.cpp b/src/map/chat.cpp index 384b0b1775..d11f912063 100644 --- a/src/map/chat.cpp +++ b/src/map/chat.cpp @@ -105,7 +105,7 @@ int chat_createpcchat(map_session_data* sd, const char* title, const char* pass, cd->usersd[0] = sd; pc_setchatid(sd,cd->bl.id); pc_stop_attack(sd); - clif_createchat(sd,0); + clif_createchat( *sd, CREATEROOM_SUCCESS ); clif_dispchat(cd,0); if (status_isdead(&sd->bl)) @@ -113,7 +113,7 @@ int chat_createpcchat(map_session_data* sd, const char* title, const char* pass, else achievement_update_objective(sd, AG_CHATTING_CREATE, 1, 1); } else - clif_createchat(sd,1); + clif_createchat( *sd, CREATEROOM_LIMIT_EXCEEDED ); return 0; } @@ -134,31 +134,31 @@ int chat_joinchat(map_session_data* sd, int chatid, const char* pass) cd = (struct chat_data*)map_id2bl(chatid); if( cd == nullptr || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->state.vending || sd->state.buyingstore || sd->chatID || ((cd->owner->type == BL_NPC) ? cd->users+1 : cd->users) >= cd->limit ) { - clif_joinchatfail(sd,0); + clif_joinchatfail( *sd, ENTERROOM_FULL ); return 0; } if( !cd->pub && strncmp(pass, cd->pass, sizeof(cd->pass)) != 0 && !pc_has_permission(sd, PC_PERM_JOIN_ALL_CHAT) ) { - clif_joinchatfail(sd,1); + clif_joinchatfail( *sd, ENTERROOM_WRONG_PASSWORD ); return 0; } if( sd->status.base_level < cd->minLvl || sd->status.base_level > cd->maxLvl ) { if(sd->status.base_level < cd->minLvl) - clif_joinchatfail(sd,5); + clif_joinchatfail( *sd, ENTERROOM_TOO_LOW_LEVEL ); else - clif_joinchatfail(sd,6); + clif_joinchatfail( *sd, ENTERROOM_TOO_HIGH_LEVEL ); return 0; } if( sd->status.zeny < cd->zeny ) { - clif_joinchatfail(sd,4); + clif_joinchatfail( *sd, ENTERROOM_NO_ZENY ); return 0; } if( cd->owner->type != BL_NPC && idb_exists(cd->kick_list,sd->status.char_id) ) { - clif_joinchatfail(sd,2);//You have been kicked out of the room. + clif_joinchatfail( *sd, ENTERROOM_KICKED ); return 0; } diff --git a/src/map/chrif.cpp b/src/map/chrif.cpp index fd8c7e85cc..7e4e5536a8 100644 --- a/src/map/chrif.cpp +++ b/src/map/chrif.cpp @@ -1311,7 +1311,8 @@ int chrif_save_scdata(map_session_data *sd) { //parses the sc_data of the player } WFIFOW(char_fd,12) = count; - WFIFOW(char_fd,2) = 14 +count*sizeof(struct status_change_data); //Total packet size + // Total packet size + WFIFOW( char_fd, 2 ) = static_cast( 14 + count * sizeof( struct status_change_data ) ); WFIFOSET(char_fd,WFIFOW(char_fd,2)); #endif return 0; @@ -1350,7 +1351,7 @@ int chrif_skillcooldown_save(map_session_data *sd) { return 0; WFIFOW(char_fd, 12) = count; - WFIFOW(char_fd, 2) = 14 + count * sizeof (struct skill_cooldown_data); + WFIFOW( char_fd, 2 ) = static_cast( 14 + count * sizeof( struct skill_cooldown_data ) ); WFIFOSET(char_fd, WFIFOW(char_fd, 2)); return 0; diff --git a/src/map/clan.cpp b/src/map/clan.cpp index cdbdf9d5e1..65ae6bac1f 100644 --- a/src/map/clan.cpp +++ b/src/map/clan.cpp @@ -11,6 +11,7 @@ #include #include +#include "battle.hpp" #include "clif.hpp" #include "instance.hpp" #include "intif.hpp" @@ -73,13 +74,12 @@ struct clan* clan_searchname( const char* name ){ return c; } -map_session_data* clan_getavailablesd( struct clan* clan ){ +map_session_data* clan_getavailablesd( struct clan& clan ){ int i; - nullpo_retr(nullptr, clan); + ARR_FIND( 0, clan.max_member, i, clan.members[i] != nullptr ); - ARR_FIND( 0, clan->max_member, i, clan->members[i] != nullptr ); - return ( i < clan->max_member ) ? clan->members[i] : nullptr; + return ( i < clan.max_member ) ? clan.members[i] : nullptr; } int clan_getMemberIndex( struct clan* clan, uint32 account_id ){ @@ -110,111 +110,123 @@ int clan_getNextFreeMemberIndex( struct clan* clan ){ } } -void clan_member_joined( map_session_data* sd ){ - nullpo_retv(sd); - - if( sd->clan != nullptr ){ +void clan_member_joined( map_session_data& sd ){ + if( sd.clan != nullptr ){ clif_clan_basicinfo( sd ); - clif_clan_onlinecount( sd->clan ); + clif_clan_onlinecount( *sd.clan ); return; } - struct clan* clan = clan_search(sd->status.clan_id); - int index; + struct clan* clan = clan_search( sd.status.clan_id ); - nullpo_retv(clan); + if( clan == nullptr ){ + return; + } - if( ( index = clan_getNextFreeMemberIndex(clan) ) >= 0 ){ - sd->clan = clan; - clan->members[index] = sd; + int index = clan_getNextFreeMemberIndex( clan ); + + if( index >= 0 ){ + sd.clan = clan; + clan->members[index] = &sd; clan->connect_member++; clif_clan_basicinfo(sd); intif_clan_member_joined(clan->id); - clif_clan_onlinecount(clan); + clif_clan_onlinecount( *clan ); } } -void clan_member_left( map_session_data* sd ){ - int index; - struct clan* clan; +void clan_member_left( map_session_data& sd ){ + struct clan* clan = sd.clan; - nullpo_retv(sd); - nullpo_retv(clan = sd->clan); + if( clan == nullptr ){ + return; + } - if( ( index = clan_getMemberIndex(clan,sd->status.account_id) ) >= 0 ){ + int index = clan_getMemberIndex( clan, sd.status.account_id ); + + if( index >= 0 ){ clan->members[index] = nullptr; clan->connect_member--; intif_clan_member_left(clan->id); - clif_clan_onlinecount(clan); + clif_clan_onlinecount( *clan ); } } -bool clan_member_join( map_session_data *sd, int clan_id, uint32 account_id, uint32 char_id ){ - struct clan *clan; +bool clan_member_join( map_session_data& sd, int clan_id, uint32 account_id, uint32 char_id ){ + struct clan *clan = clan_search( clan_id ); - nullpo_ret(sd); - - if( ( clan = clan_search( clan_id ) ) == nullptr ){ + if( clan == nullptr ){ return false; } - if( sd->status.account_id != account_id || sd->status.char_id != char_id || sd->status.clan_id != 0 ){ + if( sd.status.account_id != account_id || sd.status.char_id != char_id || sd.status.clan_id != 0 ){ return false; } - sd->status.clan_id = clan->id; + if( clan->instance_id > 0 && battle_config.instance_block_invite ){ + return false; + } + + sd.status.clan_id = clan->id; clan_member_joined(sd); return true; } -bool clan_member_leave( map_session_data* sd, int clan_id, uint32 account_id, uint32 char_id ){ - struct clan *clan; +bool clan_member_leave( map_session_data& sd, int clan_id, uint32 account_id, uint32 char_id ){ + if( sd.status.account_id != account_id || sd.status.char_id != char_id || sd.status.clan_id != clan_id ){ + return false; + } - nullpo_ret(sd); + struct clan* clan = sd.clan; - if( sd->status.account_id != account_id || sd->status.char_id != char_id || sd->status.clan_id != clan_id || ( clan = sd->clan ) == nullptr ){ + if( clan == nullptr ){ + return false; + } + + if( clan->instance_id > 0 && battle_config.instance_block_leave ){ return false; } clan_member_left(sd); - sd->clan = nullptr; - sd->status.clan_id = 0; + sd.clan = nullptr; + sd.status.clan_id = 0; clif_clan_leave(sd); return true; } -void clan_recv_message(int clan_id,uint32 account_id,const char *mes,int len) { - struct clan *clan; +void clan_recv_message( int clan_id, uint32 account_id, const char *mes, size_t len ){ + struct clan *clan = clan_search( clan_id ); - nullpo_retv( clan = clan_search(clan_id) ); + if( clan == nullptr ){ + return; + } - clif_clan_message(clan,mes,len); + clif_clan_message( *clan, mes, len ); } -void clan_send_message( map_session_data *sd, const char *mes, int len ){ - nullpo_retv(sd); - nullpo_retv(sd->clan); +void clan_send_message( map_session_data& sd, const char *mes, size_t len ){ + if( sd.clan == nullptr ){ + return; + } - intif_clan_message(sd->status.clan_id,sd->status.account_id,mes,len); - clan_recv_message(sd->status.clan_id,sd->status.account_id,mes,len); - log_chat( LOG_CHAT_CLAN, sd->status.clan_id, sd->status.char_id, sd->status.account_id, mapindex_id2name( sd->mapindex ), sd->bl.x, sd->bl.y, nullptr, mes ); + intif_clan_message( sd.status.clan_id, sd.status.account_id, mes, len ); + clan_recv_message( sd.status.clan_id, sd.status.account_id, mes, len ); + log_chat( LOG_CHAT_CLAN, sd.status.clan_id, sd.status.char_id, sd.status.account_id, mapindex_id2name( sd.mapindex ), sd.bl.x, sd.bl.y, nullptr, mes ); } -int clan_get_alliance_count( struct clan *clan, int flag ){ - int i, count; +int clan_get_alliance_count( struct clan& clan, int flag ){ + int count = 0; - nullpo_ret(clan); - - for( i = 0, count = 0; i < MAX_CLANALLIANCE; i++ ){ - if( clan->alliance[i].clan_id > 0 && clan->alliance[i].opposition == flag ){ + for( int i = 0; i < MAX_CLANALLIANCE; i++ ){ + if( clan.alliance[i].clan_id > 0 && clan.alliance[i].opposition == flag ){ count++; } } diff --git a/src/map/clan.hpp b/src/map/clan.hpp index a6ab49bc80..c12e3636ea 100644 --- a/src/map/clan.hpp +++ b/src/map/clan.hpp @@ -14,13 +14,13 @@ void do_final_clan(); struct clan* clan_search( int id ); struct clan* clan_searchname( const char* name ); void clan_load_clandata( int count, struct clan* clans ); -void clan_member_joined( map_session_data* sd ); -void clan_member_left( map_session_data* sd ); -bool clan_member_join( map_session_data *sd, int clan_id, uint32 account_id, uint32 char_id ); -bool clan_member_leave( map_session_data* sd, int clan_id, uint32 account_id, uint32 char_id ); -void clan_send_message( map_session_data *sd, const char *mes, int len ); -void clan_recv_message(int clan_id,uint32 account_id,const char *mes,int len); -map_session_data* clan_getavailablesd( struct clan* clan ); -int clan_get_alliance_count( struct clan *clan, int flag ); +void clan_member_joined( map_session_data& sd ); +void clan_member_left( map_session_data& sd ); +bool clan_member_join( map_session_data& sd, int clan_id, uint32 account_id, uint32 char_id ); +bool clan_member_leave( map_session_data& sd, int clan_id, uint32 account_id, uint32 char_id ); +void clan_send_message( map_session_data& sd, const char *mes, size_t len ); +void clan_recv_message( int clan_id, uint32 account_id, const char *mes, size_t len ); +map_session_data* clan_getavailablesd( struct clan& clan ); +int clan_get_alliance_count( struct clan& clan, int flag ); #endif /* CLAN_HPP */ diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 441b64b729..86541c9d26 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -180,7 +180,7 @@ static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsig // client-side: x0+=sx0*0.0625-0.5 and y0+=sy0*0.0625-0.5 -static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) { +static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, short x1, short y1, uint8 sx0, uint8 sy0) { p += pos; p[0] = (uint8)(x0>>2); p[1] = (uint8)((x0<<6) | ((y0>>4)&0x3f)); @@ -1391,35 +1391,29 @@ static void clif_spawn_unit( struct block_list *bl, enum send_target target ){ /*========================================== * Prepares 'unit walking' packet *------------------------------------------*/ -static void clif_set_unit_walking( struct block_list *bl, map_session_data *tsd, struct unit_data *ud, enum send_target target ){ - nullpo_retv( bl ); - nullpo_retv( ud ); - - map_session_data* sd; - status_change* sc = status_get_sc( bl ); - struct view_data* vd = status_get_viewdata( bl ); +static void clif_set_unit_walking( struct block_list& bl, map_session_data* tsd, struct unit_data& ud, enum send_target target ){ struct packet_unit_walking p; - int g_id = status_get_guild_id(bl); - - sd = BL_CAST(BL_PC, bl); p.PacketType = unit_walkingType; #if PACKETVER >= 20091103 p.PacketLength = sizeof(p); #endif #if PACKETVER >= 20071106 - p.objecttype = clif_bl_type( bl, true ); + p.objecttype = clif_bl_type( &bl, true ); #endif + map_session_data* sd = BL_CAST(BL_PC, &bl); #if PACKETVER >= 20131223 - p.AID = bl->id; + p.AID = bl.id; p.GID = (sd) ? sd->status.char_id : 0; // CCODE #else - p.GID = bl->id; + p.GID = bl.id; #endif - p.speed = status_get_speed(bl); + p.speed = status_get_speed( &bl ); + status_change* sc = status_get_sc( &bl ); p.bodyState = (sc) ? sc->opt1 : 0; p.healthState = (sc) ? sc->opt2 : 0; p.effectState = (sc) ? sc->option : 0; + struct view_data* vd = status_get_viewdata( &bl ); p.job = vd->class_; p.head = vd->hair_style; p.weapon = vd->weapon; @@ -1436,31 +1430,31 @@ static void clif_set_unit_walking( struct block_list *bl, map_session_data *tsd, #if PACKETVER >= 20101124 p.robe = vd->robe; #endif - p.GUID = g_id; - p.GEmblemVer = status_get_emblem_id(bl); + p.GUID = status_get_guild_id( &bl ); + p.GEmblemVer = status_get_emblem_id( &bl ); p.honor = (sd) ? sd->status.manner : 0; p.virtue = (sc) ? sc->opt3 : 0; p.isPKModeON = (sd && sd->status.karma) ? 1 : 0; p.sex = vd->sex; - WBUFPOS2( &p.MoveData[0], 0, bl->x, bl->y, ud->to_x, ud->to_y, 8, 8 ); + WBUFPOS2(&p.MoveData[0], 0, bl.x, bl.y, ud.to_x, ud.to_y, ud.sx, ud.sy); p.xSize = p.ySize = (sd) ? 5 : 0; - p.clevel = clif_setlevel(bl); + p.clevel = clif_setlevel( &bl ); #if PACKETVER >= 20080102 p.font = (sd) ? sd->status.font : 0; #endif #if PACKETVER >= 20120221 - if( battle_config.monster_hp_bars_info && !map_getmapflag(bl->m, MF_HIDEMOBHPBAR) && bl->type == BL_MOB && (status_get_hp(bl) < status_get_max_hp( bl ) ) ){ - p.maxHP = status_get_max_hp(bl); - p.HP = status_get_hp(bl); + if( battle_config.monster_hp_bars_info && !map_getmapflag(bl.m, MF_HIDEMOBHPBAR) && bl.type == BL_MOB && (status_get_hp( &bl ) < status_get_max_hp( &bl ) ) ){ + p.maxHP = status_get_max_hp( &bl ); + p.HP = status_get_hp( &bl ); } else { p.maxHP = -1; p.HP = -1; } - if( bl->type == BL_MOB ){ - p.isBoss = ( (mob_data*)bl )->get_bosstype(); - }else if( bl->type == BL_PET ){ - p.isBoss = ( (pet_data*)bl )->db->get_bosstype(); + if( bl.type == BL_MOB ){ + p.isBoss = reinterpret_cast( &bl )->get_bosstype(); + }else if( bl.type == BL_PET ){ + p.isBoss = reinterpret_cast( &bl )->db->get_bosstype(); }else{ p.isBoss = BOSSTYPE_NONE; } @@ -1470,44 +1464,27 @@ static void clif_set_unit_walking( struct block_list *bl, map_session_data *tsd, #endif /* Might be earlier, this is when the named item bug began */ #if PACKETVER >= 20131223 - safestrncpy(p.name, status_get_name(bl), NAME_LENGTH); + safestrncpy(p.name, status_get_name( &bl ), NAME_LENGTH); #endif - clif_send( &p, sizeof(p), tsd ? &tsd->bl : bl, target ); + clif_send( &p, sizeof(p), tsd ? &tsd->bl : &bl, target ); // if disguised, send the info to self - if( disguised( bl ) ){ + if( disguised( &bl ) ){ #if PACKETVER >= 20091103 - p.objecttype = pcdb_checkid( status_get_viewdata(bl)->class_ ) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE + p.objecttype = pcdb_checkid( status_get_viewdata( &bl )->class_ ) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE #if PACKETVER >= 20131223 - p.AID = disguised_bl_id( bl->id ); + p.AID = disguised_bl_id( bl.id ); #else - p.GID = disguised_bl_id( bl->id ); + p.GID = disguised_bl_id( bl.id ); #endif #else - p.GID = disguised_bl_id( bl->id ); + p.GID = disguised_bl_id( bl.id ); #endif - clif_send(&p,sizeof(p),bl,SELF); + clif_send(&p, sizeof(p), &bl, SELF); } } -//Modifies the buffer for disguise characters and sends it to self. -//Used for spawn/walk packets, where the ID offset changes for packetver >=9 -static void clif_setdisguise(struct block_list *bl, unsigned char *buf,int len) -{ -#if PACKETVER >= 20091103 - WBUFB(buf,4)= pcdb_checkid(status_get_viewdata(bl)->class_) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE - WBUFL(buf,5)=-bl->id; -#elif PACKETVER >= 20071106 - WBUFB(buf,2)= pcdb_checkid(status_get_viewdata(bl)->class_) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE - WBUFL(buf,3)=-bl->id; -#else - WBUFL(buf,2)=-bl->id; -#endif - clif_send(buf, len, bl, SELF); -} - - /// Changes sprite of an NPC object (ZC_NPCSPRITE_CHANGE). /// 01b0 .L .B .L /// type: @@ -1528,7 +1505,7 @@ void clif_class_change_target(struct block_list *bl,int class_,int type, enum se } void clif_servantball( map_session_data& sd, struct block_list* target, enum send_target send_target ){ - struct PACKET_ZC_SPIRITS p = {}; + PACKET_ZC_SPIRITS p = {}; p.PacketType = HEADER_ZC_SPIRITS; p.AID = sd.bl.id; @@ -1542,7 +1519,7 @@ void clif_servantball( map_session_data& sd, struct block_list* target, enum sen } void clif_abyssball( map_session_data& sd, struct block_list* target, enum send_target send_target ){ - struct PACKET_ZC_SPIRITS p = {}; + PACKET_ZC_SPIRITS p = {}; p.PacketType = HEADER_ZC_SPIRITS; p.AID = sd.bl.id; @@ -1721,7 +1698,7 @@ int clif_spawn( struct block_list *bl, bool walking ){ if (sd->spiritball > 0) clif_spiritball(&sd->bl); if (sd->sc.getSCE(SC_MILLENNIUMSHIELD)) - clif_millenniumshield(&sd->bl, sd->sc.getSCE(SC_MILLENNIUMSHIELD)->val2); + clif_millenniumshield( sd->bl, sd->sc.getSCE( SC_MILLENNIUMSHIELD )->val2 ); if (sd->soulball > 0) clif_soulball(sd); if (sd->servantball > 0) @@ -1735,11 +1712,11 @@ int clif_spawn( struct block_list *bl, bool walking ){ if( sd->bg_id && map_getmapflag(sd->bl.m, MF_BATTLEGROUND) ) clif_sendbgemblem_area(sd); if (sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0) - clif_spiritcharm(sd); + clif_spiritcharm( *sd ); if (sd->status.robe) clif_refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA); clif_efst_status_change_sub(bl, bl, AREA); - clif_hat_effects(sd,bl,AREA); + clif_hat_effects( *sd, sd->bl, AREA ); } break; case BL_MOB: @@ -1781,7 +1758,7 @@ void clif_hominfo( map_session_data *sd, struct homun_data *hd, int flag ){ nullpo_retv( hd ); struct status_data *status = &hd->battle_status; - struct PACKET_ZC_PROPERTY_HOMUN p; + PACKET_ZC_PROPERTY_HOMUN p = {}; p.packetType = HEADER_ZC_PROPERTY_HOMUN; safestrncpy( p.name, hd->homunculus.name, sizeof( p.name ) ); @@ -1984,16 +1961,14 @@ void clif_homskillup( homun_data& hd, uint16 skill_id ){ /// result: /// 0 = failure /// 1 = success -void clif_hom_food( map_session_data *sd, int foodid, int fail ){ - nullpo_retv( sd ); +void clif_hom_food( map_session_data& sd, int32 foodid, bool success ){ + PACKET_ZC_FEED_MER packet{}; - struct PACKET_ZC_FEED_MER p; + packet.packetType = HEADER_ZC_FEED_MER; + packet.result = success; + packet.itemId = client_nameid( foodid ); - p.packetType = 0x22f; - p.result = fail; - p.itemId = client_nameid( foodid ); - - clif_send( &p, sizeof( p ), &sd->bl, SELF ); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -2010,104 +1985,63 @@ void clif_walkok( map_session_data& sd ){ } -static void clif_move2( struct block_list *bl, struct view_data *vd, struct unit_data *ud ){ - status_change *sc = nullptr; - - if ((sc = status_get_sc(bl)) && sc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_INVISIBLE|OPTION_CHASEWALK)) - clif_ally_only = true; - - clif_set_unit_walking( bl, nullptr, ud, AREA_WOS ); - - if(vd->cloth_color) - clif_refreshlook(bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,AREA_WOS); - if(vd->body_style) - clif_refreshlook(bl,bl->id,LOOK_BODY2,vd->body_style,AREA_WOS); - - switch(bl->type) { - case BL_PC: - { - TBL_PC *sd = ((TBL_PC*)bl); -// clif_movepc(sd); - if(sd->state.size==SZ_BIG) // tiny/big players [Valaris] - clif_specialeffect(&sd->bl,EF_GIANTBODY2,AREA); - else if(sd->state.size==SZ_MEDIUM) - clif_specialeffect(&sd->bl,EF_BABYBODY2,AREA); - if (sd->status.robe) - clif_refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA); - } - break; - case BL_MOB: - { - TBL_MOB *md = ((TBL_MOB*)bl); - if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris] - clif_specialeffect(&md->bl,EF_GIANTBODY2,AREA); - else if(md->special_state.size==SZ_MEDIUM) - clif_specialeffect(&md->bl,EF_BABYBODY2,AREA); - } - break; - case BL_PET: - if(vd->head_bottom) // needed to display pet equip properly - clif_pet_equip_area((TBL_PET*)bl); - break; - } - clif_ally_only = false; -} - - /// Notifies clients in an area, that an other visible object is walking. -/// 0086 .L .6B .L (ZC_NOTIFY_MOVE) /// Note: unit must not be self -void clif_move(struct unit_data *ud) +void clif_move( struct unit_data& ud ) { - struct view_data* vd; - struct block_list* bl = ud->bl; - status_change *sc = nullptr; - PACKET_ZC_NOTIFY_MOVE packet{}; + struct block_list* bl = ud.bl; + struct view_data* vd = status_get_viewdata(bl); - packet.packetType = HEADER_ZC_NOTIFY_MOVE; - - vd = status_get_viewdata(bl); - if (!vd ) + if (bl == nullptr || vd == nullptr) return; - //This performance check is needed to keep GM-hidden objects from being notified to bots. - else if( vd->class_ == JT_INVISIBLE ){ - // If the player was disguised we still need to update the disguised unit, since the main unit will be updated through clif_walkok - if(disguised(bl)) { - packet.gid = disguised_bl_id(bl->id); - WBUFPOS2(packet.moveData, 0, bl->x, bl->y, ud->to_x, ud->to_y, 8, 8); - packet.moveStartTime = client_tick(gettick()); - clif_send(&packet, sizeof(packet), bl, SELF); - } + // This performance check is needed to keep GM-hidden objects from being notified to bots. + if (vd->class_ == JT_INVISIBLE) return; - } // Hide NPC from Maya Purple card if (clif_npc_mayapurple(bl)) return; - if (ud->state.speed_changed) { - // Since we don't know how to update the speed of other objects, - // use the old walk packet to update the data. - ud->state.speed_changed = 0; - clif_move2(bl, vd, ud); - return; - } + status_change* sc = nullptr; - if ((sc = status_get_sc(bl)) && sc->option&(OPTION_HIDE|OPTION_CLOAK|OPTION_INVISIBLE|OPTION_CHASEWALK)) + if ((sc = status_get_sc(bl)) && sc->option & (OPTION_HIDE | OPTION_CLOAK | OPTION_INVISIBLE | OPTION_CHASEWALK)) clif_ally_only = true; - packet.gid = bl->id; - WBUFPOS2(packet.moveData,0,bl->x,bl->y,ud->to_x,ud->to_y,8,8); - packet.moveStartTime = client_tick(gettick()); + clif_set_unit_walking( *bl, nullptr, ud, AREA_WOS ); - clif_send(&packet, sizeof(packet), bl, AREA_WOS); + if (vd->cloth_color) + clif_refreshlook(bl, bl->id, LOOK_CLOTHES_COLOR, vd->cloth_color, AREA_WOS); + if (vd->body_style) + clif_refreshlook(bl, bl->id, LOOK_BODY2, vd->body_style, AREA_WOS); - if (disguised(bl)) { - packet.gid = disguised_bl_id(bl->id); - - clif_send(&packet, sizeof(packet), bl, SELF); + switch (bl->type) { + case BL_PC: + { + map_session_data* sd = reinterpret_cast( bl ); + if (sd->state.size == SZ_BIG) // tiny/big players [Valaris] + clif_specialeffect(&sd->bl, EF_GIANTBODY2, AREA); + else if (sd->state.size == SZ_MEDIUM) + clif_specialeffect(&sd->bl, EF_BABYBODY2, AREA); + if (sd->status.robe) + clif_refreshlook(bl, bl->id, LOOK_ROBE, sd->status.robe, AREA); + } + break; + case BL_MOB: + { + mob_data* md = reinterpret_cast( bl ); + if (md->special_state.size == SZ_BIG) // tiny/big mobs [Valaris] + clif_specialeffect(&md->bl, EF_GIANTBODY2, AREA); + else if (md->special_state.size == SZ_MEDIUM) + clif_specialeffect(&md->bl, EF_BABYBODY2, AREA); + } + break; + case BL_PET: + if (vd->head_bottom) // needed to display pet equip properly + clif_pet_equip_area(BL_CAST(BL_PET, bl)); + break; } + clif_ally_only = false; } @@ -2224,40 +2158,31 @@ void clif_npcbuysell( map_session_data& sd, npc_data& nd ){ /// Presents list of items, that can be bought in an NPC shop. /// 00c6 .W { .L .L .B .W }* (ZC_PC_PURCHASE_ITEMLIST) -void clif_buylist( map_session_data *sd, struct npc_data *nd ){ - nullpo_retv( sd ); - nullpo_retv( nd ); +void clif_buylist( map_session_data& sd, npc_data& nd ){ + PACKET_ZC_PC_PURCHASE_ITEMLIST* p = reinterpret_cast( packet_buffer ); - int fd = sd->fd; - - if( !session_isActive( fd ) ){ - return; - } - - uint16 len = sizeof( struct PACKET_ZC_PC_PURCHASE_ITEMLIST ) + nd->u.shop.count * sizeof( struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub ); - WFIFOHEAD( fd, len ); - struct PACKET_ZC_PC_PURCHASE_ITEMLIST *p = (struct PACKET_ZC_PC_PURCHASE_ITEMLIST *)WFIFOP( fd, 0 ); p->packetType = HEADER_ZC_PC_PURCHASE_ITEMLIST; + p->packetLength = sizeof( *p ); - int count = 0; - for( int i = 0, discount = npc_shop_discount( nd ); i < nd->u.shop.count; i++ ){ - int val = nd->u.shop.shop_item[i].value; + for( int i = 0, count = 0, discount = npc_shop_discount( &nd ); i < nd.u.shop.count; i++ ){ + int val = nd.u.shop.shop_item[i].value; p->items[count].price = val; - p->items[count].discountPrice = ( discount ) ? pc_modifybuyvalue( sd, val ) : val; - p->items[count].itemType = itemtype( nd->u.shop.shop_item[i].nameid ); - p->items[count].itemId = client_nameid( nd->u.shop.shop_item[i].nameid ); + p->items[count].discountPrice = ( discount ) ? pc_modifybuyvalue( &sd, val ) : val; + p->items[count].itemType = itemtype( nd.u.shop.shop_item[i].nameid ); + p->items[count].itemId = client_nameid( nd.u.shop.shop_item[i].nameid ); #if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 - std::shared_ptr id = item_db.find(nd->u.shop.shop_item[i].nameid); + std::shared_ptr id = item_db.find(nd.u.shop.shop_item[i].nameid); p->items[count].viewSprite = id->look; - p->items[count].location = pc_equippoint_sub( sd, id.get() ); + p->items[count].location = pc_equippoint_sub( &sd, id.get() ); #endif + + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); count++; } - p->packetLength = static_castpacketLength)>( sizeof( struct PACKET_ZC_PC_PURCHASE_ITEMLIST ) + count * sizeof( struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub ) ); - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); } @@ -2327,24 +2252,19 @@ void clif_parse_NPCShopClosed(int fd, map_session_data *sd) { * @author: Ind and Yommy **/ /// 0x9d5 .W { .W .B .L .L .W }* (ZC_NPC_MARKET_OPEN) -void clif_npc_market_open(map_session_data *sd, struct npc_data *nd) { +void clif_npc_market_open( map_session_data& sd, npc_data& nd ){ #if PACKETVER >= 20131223 - nullpo_retv( sd ); - nullpo_retv( nd ); - - if( sd->state.trading ){ + if( sd.state.trading ){ return; } - int fd = sd->fd; + PACKET_ZC_NPC_MARKET_OPEN* p = reinterpret_cast( packet_buffer ); - WFIFOHEAD( fd, sizeof( struct PACKET_ZC_NPC_MARKET_OPEN ) + nd->u.shop.count * sizeof( struct PACKET_ZC_NPC_MARKET_OPEN_sub ) ); - struct PACKET_ZC_NPC_MARKET_OPEN *p = (struct PACKET_ZC_NPC_MARKET_OPEN *)WFIFOP( fd, 0 ); p->packetType = HEADER_ZC_NPC_MARKET_OPEN; + p->packetLength = sizeof( *p ); - int count = 0; - for( int i = 0; i < nd->u.shop.count; i++ ){ - struct npc_item_list *item = &nd->u.shop.shop_item[i]; + for( int i = 0, count = 0; i < nd.u.shop.count; i++ ){ + struct npc_item_list *item = &nd.u.shop.shop_item[i]; if( !item->nameid ){ continue; @@ -2356,21 +2276,24 @@ void clif_npc_market_open(map_session_data *sd, struct npc_data *nd) { continue; } - p->list[count].nameid = client_nameid( item->nameid ); - p->list[count].type = itemtype( item->nameid ); - p->list[count].price = item->value; - p->list[count].qty = item->qty; - p->list[count].weight = id->weight; + PACKET_ZC_NPC_MARKET_OPEN_sub& entry = p->list[count]; + + entry.nameid = client_nameid( item->nameid ); + entry.type = itemtype( item->nameid ); + entry.price = item->value; + entry.qty = item->qty; + entry.weight = id->weight; #if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103 - p->list[count].location = pc_equippoint_sub( sd, id.get() ); + entry.location = pc_equippoint_sub( &sd, id.get() ); #endif + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); count++; } - p->packetLength = static_castpacketLength)>( sizeof( struct PACKET_ZC_NPC_MARKET_OPEN ) + count * sizeof( struct PACKET_ZC_NPC_MARKET_OPEN_sub ) ); - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); - sd->state.trading = 1; + sd.state.trading = 1; #endif } @@ -2385,18 +2308,18 @@ void clif_parse_NPCMarketClosed(int fd, map_session_data *sd) { /// Purchase item from Market shop. /// 0x9d7 .W .B { .W .W .L }* (ZC_NPC_MARKET_PURCHASE_RESULT) -void clif_npc_market_purchase_ack( map_session_data *sd, e_purchase_result res, std::vector& list ){ +void clif_npc_market_purchase_ack( map_session_data& sd, e_purchase_result res, std::vector& list ){ #if PACKETVER >= 20131223 - nullpo_retv( sd ); + struct npc_data *nd = map_id2nd( sd.npc_shopid ); - struct npc_data *nd = map_id2nd( sd->npc_shopid ); + if( nd == nullptr ){ + return; + } - nullpo_retv( nd ); - - struct PACKET_ZC_NPC_MARKET_PURCHASE_RESULT *p = (struct PACKET_ZC_NPC_MARKET_PURCHASE_RESULT *)packet_buffer; + PACKET_ZC_NPC_MARKET_PURCHASE_RESULT* p = reinterpret_cast( packet_buffer ); p->PacketType = HEADER_ZC_NPC_MARKET_PURCHASE_RESULT; - p->PacketLength = sizeof( struct PACKET_ZC_NPC_MARKET_PURCHASE_RESULT ); + p->PacketLength = sizeof( *p ); #if PACKETVER_MAIN_NUM >= 20190807 || PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814 p->result = ( res == e_purchase_result::PURCHASE_SUCCEED ? 0 : -1 ); @@ -2416,12 +2339,12 @@ void clif_npc_market_purchase_ack( map_session_data *sd, e_purchase_result res, p->list[count].ITID = client_nameid( list[i].nameid ); p->list[count].qty = list[i].qty; p->list[count].price = nd->u.shop.shop_item[j].value; - p->PacketLength += sizeof( struct PACKET_ZC_NPC_MARKET_PURCHASE_RESULT_sub ); + p->PacketLength += static_castPacketLength)>( sizeof( p->list[0] ) ); count++; } } - clif_send( p, p->PacketLength, &sd->bl, SELF ); + clif_send( p, p->PacketLength, &sd.bl, SELF ); #endif } @@ -2430,15 +2353,17 @@ void clif_npc_market_purchase_ack( map_session_data *sd, e_purchase_result res, /// 0x9d6 .W { .W .L } (CZ_NPC_MARKET_PURCHASE) void clif_parse_NPCMarketPurchase(int fd, map_session_data *sd) { #if PACKETVER >= 20131223 - nullpo_retv( sd ); + if( sd == nullptr ){ + return; + } if( !sd->npc_shopid ){ return; } - const struct PACKET_CZ_NPC_MARKET_PURCHASE* p = (struct PACKET_CZ_NPC_MARKET_PURCHASE*)RFIFOP( fd, 0 ); + const PACKET_CZ_NPC_MARKET_PURCHASE* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - int count = ( p->PacketLength - sizeof( struct PACKET_CZ_NPC_MARKET_PURCHASE ) ) / sizeof( struct PACKET_CZ_NPC_MARKET_PURCHASE_sub ); + int count = ( p->PacketLength - sizeof( *p ) ) / sizeof( p->list[0] ); std::vector items; @@ -2454,13 +2379,13 @@ void clif_parse_NPCMarketPurchase(int fd, map_session_data *sd) { } e_purchase_result res = npc_buylist( sd, items ); - clif_npc_market_purchase_ack( sd, res, items ); + clif_npc_market_purchase_ack( *sd, res, items ); #endif } -/// Displays an NPC dialog message (ZC_SAY_DIALOG). -/// 00b4 .W .L .?B +/// Displays an NPC dialog message. +/// 00b4 .W .L .?B (ZC_SAY_DIALOG) /// Client behavior (dialog window): /// - disable mouse targeting /// - open the dialog window @@ -2468,7 +2393,7 @@ void clif_parse_NPCMarketPurchase(int fd, map_session_data *sd) { /// - if set to clear on next mes, clear contents /// - append this text void clif_scriptmes( map_session_data& sd, uint32 npcid, const char *mes ){ - struct PACKET_ZC_SAY_DIALOG* p = (struct PACKET_ZC_SAY_DIALOG*)packet_buffer; + PACKET_ZC_SAY_DIALOG* p = reinterpret_cast( packet_buffer ); int16 length = (int16)( strlen( mes ) + 1 ); @@ -2481,8 +2406,8 @@ void clif_scriptmes( map_session_data& sd, uint32 npcid, const char *mes ){ } -/// Adds a 'next' button to an NPC dialog (ZC_WAIT_DIALOG). -/// 00b5 .L +/// Adds a 'next' button to an NPC dialog. +/// 00b5 .L (ZC_WAIT_DIALOG) /// Client behavior (dialog window): /// - disable mouse targeting /// - open the dialog window @@ -2492,7 +2417,7 @@ void clif_scriptmes( map_session_data& sd, uint32 npcid, const char *mes ){ /// - set to clear on next mes /// - remove 'next' button void clif_scriptnext( map_session_data& sd, uint32 npcid ){ - struct PACKET_ZC_WAIT_DIALOG p = {}; + PACKET_ZC_WAIT_DIALOG p = {}; p.PacketType = HEADER_ZC_WAIT_DIALOG; p.NpcID = npcid; @@ -2533,7 +2458,7 @@ void clif_scriptclose( map_session_data& sd, uint32 npcid ){ * @param npcid : npc gid to close */ void clif_scriptclear( map_session_data& sd, int npcid ){ - struct PACKET_ZC_CLEAR_DIALOG p = {}; + PACKET_ZC_CLEAR_DIALOG p = {}; p.packetType = HEADER_ZC_CLEAR_DIALOG; p.GID = npcid; @@ -2635,13 +2560,16 @@ void clif_scriptmenu( map_session_data& sd, uint32 npcid, const char* mes ){ bl->yy>sd.bl.y+AREA_SIZE+1)))) clif_sendfakenpc( sd, npcid ); - PACKET_ZC_MENU_LIST *packet = reinterpret_cast(packet_buffer); + // String length + 1 byte for zero termination + size_t mes_length = strlen( mes ) + 1; + + PACKET_ZC_MENU_LIST* packet = reinterpret_cast( packet_buffer ); - size_t mes_length = strlen(mes); packet->packetType = HEADER_ZC_MENU_LIST; + packet->packetLength = sizeof( PACKET_ZC_MENU_LIST ); packet->npcId = npcid; - packet->packetLength = static_castpacketLength)>( sizeof(PACKET_ZC_MENU_LIST) + mes_length ); - memcpy(packet->menu, mes, mes_length); + safestrncpy( packet->menu, mes, mes_length ); + packet->packetLength += static_castpacketLength)>( mes_length ); clif_send( packet, packet->packetLength, &sd.bl, SELF ); } @@ -2841,7 +2769,7 @@ void clif_additem( map_session_data *sd, int n, int amount, unsigned char fail ) return; } - struct PACKET_ZC_ITEM_PICKUP_ACK p; + PACKET_ZC_ITEM_PICKUP_ACK p = {}; if( fail ){ p = {}; @@ -3014,14 +2942,14 @@ static void clif_item_normal( short idx, struct NORMALITEM_INFO *p, struct item #endif } -static void clif_inventoryStart( map_session_data *sd, e_inventory_type type, const char *name ){ +static void clif_inventoryStart( map_session_data*sd, e_inventory_type type, const char *name ){ #if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 nullpo_retv(sd); nullpo_retv(name); - char buf[sizeof(struct PACKET_ZC_INVENTORY_START) + 24]; + char buf[sizeof(PACKET_ZC_INVENTORY_START) + 24]; memset(buf, 0, sizeof(buf)); - struct PACKET_ZC_INVENTORY_START *p = (struct PACKET_ZC_INVENTORY_START *)buf; + PACKET_ZC_INVENTORY_START *p = (PACKET_ZC_INVENTORY_START *)buf; p->packetType = HEADER_ZC_INVENTORY_START; #if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 p->invType = type; @@ -3030,11 +2958,11 @@ static void clif_inventoryStart( map_session_data *sd, e_inventory_type type, co int strLen = (int)safestrnlen(name, 24) + 1; if (strLen > 24) strLen = 24; - const int len = sizeof(struct PACKET_ZC_INVENTORY_START) + strLen; + const int len = sizeof(PACKET_ZC_INVENTORY_START) + strLen; p->packetLength = len; safestrncpy(p->name, name, strLen); #else - const int len = sizeof(struct PACKET_ZC_INVENTORY_START); + const int len = sizeof(PACKET_ZC_INVENTORY_START); safestrncpy(p->name, name, NAME_LENGTH); #endif clif_send( p, len, &sd->bl, SELF ); @@ -3045,7 +2973,7 @@ static void clif_inventoryEnd( map_session_data *sd, e_inventory_type type ){ #if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 nullpo_retv(sd); - struct PACKET_ZC_INVENTORY_END p; + PACKET_ZC_INVENTORY_END p = {}; p.packetType = HEADER_ZC_INVENTORY_END; #if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 p.invType = type; @@ -3118,7 +3046,7 @@ void clif_inventorylist( map_session_data *sd ){ } if( sd->equip_index[EQI_AMMO] >= 0 ) - clif_arrowequip( sd, sd->equip_index[EQI_AMMO] ); + clif_arrowequip( *sd ); if( equip ) { itemlist_equip.PacketType = inventorylistequipType; @@ -3360,23 +3288,26 @@ void clif_guild_castle_list(map_session_data& sd){ int castle_count = guild_checkcastles(g->guild); - if (castle_count > 0) { - struct PACKET_ZC_GUILD_AGIT_INFO* p = (struct PACKET_ZC_GUILD_AGIT_INFO*)packet_buffer; - - p->packetType = HEADER_ZC_GUILD_AGIT_INFO; - p->packetLength = static_cast( sizeof( struct PACKET_ZC_GUILD_AGIT_INFO ) ); - - int i = 0; - for (const auto& gc : castle_db) { - if (gc.second->guild_id == g->guild.guild_id && gc.second->client_id) { - p->castle_list[i] = static_cast( gc.second->client_id ); - p->packetLength += static_cast( sizeof( p->castle_list[0] ) ); - ++i; - } - } - - clif_send(p, p->packetLength, &sd.bl, SELF); + if( castle_count <= 0 ){ + return; } + + PACKET_ZC_GUILD_AGIT_INFO* p = reinterpret_cast( packet_buffer ); + + p->packetType = HEADER_ZC_GUILD_AGIT_INFO; + p->packetLength = sizeof( *p ); + + int i = 0; + for (const auto& gc : castle_db) { + if (gc.second->guild_id == g->guild.guild_id && gc.second->client_id) { + p->castle_list[i] = static_cast( gc.second->client_id ); + + p->packetLength += static_castpacketLength)>( sizeof( p->castle_list[0] ) ); + ++i; + } + } + + clif_send(p, p->packetLength, &sd.bl, SELF); #endif } @@ -3389,7 +3320,7 @@ void clif_guild_castleinfo(map_session_data& sd, std::shared_ptr c return; } - struct PACKET_ZC_REQ_ACK_AGIT_INVESTMENT p = {}; + PACKET_ZC_REQ_ACK_AGIT_INVESTMENT p = {}; p.packetType = HEADER_ZC_REQ_ACK_AGIT_INVESTMENT; p.castle_id = static_cast( castle->client_id ); @@ -3405,7 +3336,7 @@ void clif_guild_castleinfo(map_session_data& sd, std::shared_ptr c *------------------------------------------*/ void clif_guild_castle_teleport_res(map_session_data& sd, enum e_siege_teleport_result result){ #if PACKETVER_MAIN_NUM >= 20190731 || PACKETVER_RE_NUM >= 20190717 || PACKETVER_ZERO_NUM >= 20190814 - struct PACKET_ZC_REQ_ACK_MOVE_GUILD_AGIT p = {}; + PACKET_ZC_REQ_ACK_MOVE_GUILD_AGIT p = {}; p.packetType = HEADER_ZC_REQ_ACK_MOVE_GUILD_AGIT; p.result = static_cast( result ); @@ -3419,12 +3350,17 @@ void clif_guild_castle_teleport_res(map_session_data& sd, enum e_siege_teleport_ *------------------------------------------*/ void clif_parse_guild_castle_info_request(int fd, map_session_data* sd){ #if PACKETVER_MAIN_NUM >= 20190522 || PACKETVER_RE_NUM >= 20190522 || PACKETVER_ZERO_NUM >= 20190515 - const struct PACKET_CZ_REQ_AGIT_INVESTMENT* p = (struct PACKET_CZ_REQ_AGIT_INVESTMENT*)RFIFOP(fd, 0); + if( sd == nullptr ){ + return; + } + auto &g = sd->guild; if (g == nullptr) return; + const PACKET_CZ_REQ_AGIT_INVESTMENT* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + std::shared_ptr gc = castle_db.find_by_clientid( p->castle_id ); if (gc == nullptr) @@ -3441,7 +3377,7 @@ void clif_parse_guild_castle_info_request(int fd, map_session_data* sd){ *------------------------------------------*/ void clif_parse_guild_castle_teleport_request(int fd, map_session_data* sd){ #if PACKETVER_MAIN_NUM >= 20190522 || PACKETVER_RE_NUM >= 20190522 || PACKETVER_ZERO_NUM >= 20190515 - const struct PACKET_CZ_REQ_MOVE_GUILD_AGIT* p = (struct PACKET_CZ_REQ_MOVE_GUILD_AGIT*)RFIFOP(fd, 0); + const PACKET_CZ_REQ_MOVE_GUILD_AGIT* p = reinterpret_castRFIFOP( fd, 0 ); auto &g = sd->guild; if (g == nullptr) @@ -3898,36 +3834,27 @@ void clif_updatestatus( map_session_data& sd, enum _sp type ){ } -/// Notifies client of a parameter change of an another player (ZC_PAR_CHANGE_USER). -/// 01ab .L .W .L -void clif_changestatus(map_session_data* sd,int type,int val) -{ - unsigned char buf[12]; +/// Notifies client of a parameter change of an another player. +/// 01ab .L .W .L (ZC_PAR_CHANGE_USER) +/// var id: +/// SP_MANNER +/// ? +void clif_changemanner( map_session_data& sd ) { + PACKET_ZC_PAR_CHANGE_USER packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_PAR_CHANGE_USER; + packet.gid = sd.bl.id; + packet.type = static_cast(SP_MANNER); + packet.value = sd.status.manner; - WBUFW(buf,0)=0x1ab; - WBUFL(buf,2)=sd->bl.id; - WBUFW(buf,6)=type; - - switch(type) - { - case SP_MANNER: - WBUFL(buf,8)=val; - break; - default: - ShowError("clif_changestatus : unrecognized type %d.\n",type); - return; - } - - clif_send(buf,packet_len(0x1ab),&sd->bl,AREA_WOS); + clif_send( &packet, sizeof( packet ), &sd.bl, AREA_WOS ); } /// 00c3 .L .B .B (ZC_SPRITE_CHANGE) /// 01d7 .L .B .W .W (ZC_SPRITE_CHANGE2) void clif_sprite_change( struct block_list *bl, int id, int type, int val, int val2, enum send_target target ){ - struct PACKET_ZC_SPRITE_CHANGE p; + PACKET_ZC_SPRITE_CHANGE p = {}; p.packetType = sendLookType; p.AID = id; @@ -4108,109 +4035,105 @@ void clif_refreshlook(struct block_list *bl, int id, int type, int val, enum sen /// .B .B .B .B .B .B .W .W /// .W .W .W .W .W .W .W /// .W .W .W .W .W -void clif_initialstatus(map_session_data *sd) { - int fd, mdef2; - unsigned char *buf; +void clif_initialstatus( map_session_data& sd ) { + PACKET_ZC_STATUS packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_STATUS; - fd=sd->fd; - WFIFOHEAD(fd, packet_len(0xbd)); - buf = WFIFOP(fd,0); + packet.point = min(sd.status.status_point, INT16_MAX); + packet.str = min(sd.status.str, UINT8_MAX); + packet.standardStr = pc_need_status_point( &sd, SP_STR, 1 ); + packet.agi = min(sd.status.agi, UINT8_MAX); + packet.standardAgi = pc_need_status_point( &sd, SP_AGI,1 ); + packet.vit = min(sd.status.vit, UINT8_MAX); + packet.standardVit = pc_need_status_point( &sd, SP_VIT,1 ); + packet.int_ = min(sd.status.int_, UINT8_MAX); + packet.standardInt = pc_need_status_point( &sd, SP_INT,1 ); + packet.dex = min(sd.status.dex, UINT8_MAX); + packet.standardDex = pc_need_status_point( &sd, SP_DEX,1 ); + packet.luk = min(sd.status.luk, UINT8_MAX); + packet.standardLuk = pc_need_status_point( &sd, SP_LUK,1 ); - WBUFW(buf,0) = 0xbd; - WBUFW(buf,2) = min(sd->status.status_point, INT16_MAX); - WBUFB(buf,4) = min(sd->status.str, UINT8_MAX); - WBUFB(buf,5) = pc_need_status_point(sd,SP_STR,1); - WBUFB(buf,6) = min(sd->status.agi, UINT8_MAX); - WBUFB(buf,7) = pc_need_status_point(sd,SP_AGI,1); - WBUFB(buf,8) = min(sd->status.vit, UINT8_MAX); - WBUFB(buf,9) = pc_need_status_point(sd,SP_VIT,1); - WBUFB(buf,10) = min(sd->status.int_, UINT8_MAX); - WBUFB(buf,11) = pc_need_status_point(sd,SP_INT,1); - WBUFB(buf,12) = min(sd->status.dex, UINT8_MAX); - WBUFB(buf,13) = pc_need_status_point(sd,SP_DEX,1); - WBUFB(buf,14) = min(sd->status.luk, UINT8_MAX); - WBUFB(buf,15) = pc_need_status_point(sd,SP_LUK,1); - - WBUFW(buf,16) = pc_leftside_atk(sd); - WBUFW(buf,18) = pc_rightside_atk(sd); - WBUFW(buf,20) = pc_rightside_matk(sd); - WBUFW(buf,22) = pc_leftside_matk(sd); - WBUFW(buf,24) = pc_leftside_def(sd); - WBUFW(buf,26) = pc_rightside_def(sd); - WBUFW(buf,28) = pc_leftside_mdef(sd); - mdef2 = pc_rightside_mdef(sd); - WBUFW(buf,30) = -#ifndef RENEWAL - ( mdef2 < 0 ) ? 0 : //Negative check for Frenzy'ed characters. -#endif - mdef2; - WBUFW(buf,32) = sd->battle_status.hit; - WBUFW(buf,34) = sd->battle_status.flee; - WBUFW(buf,36) = sd->battle_status.flee2/10; - WBUFW(buf,38) = sd->battle_status.cri/10; - WBUFW(buf,40) = sd->battle_status.amotion; // aspd - WBUFW(buf,42) = 0; // always 0 (plusASPD) - - WFIFOSET(fd, packet_len(0xbd)); - - clif_updatestatus(*sd, SP_STR); - clif_updatestatus(*sd, SP_AGI); - clif_updatestatus(*sd, SP_VIT); - clif_updatestatus(*sd, SP_INT); - clif_updatestatus(*sd, SP_DEX); - clif_updatestatus(*sd, SP_LUK); - - clif_updatestatus(*sd, SP_ATTACKRANGE); - clif_updatestatus(*sd, SP_ASPD); + packet.attPower = pc_leftside_atk( &sd ); + packet.refiningPower = pc_rightside_atk( &sd ); + packet.max_mattPower = pc_rightside_matk( &sd ); + packet.min_mattPower = pc_leftside_matk( &sd ); + packet.itemdefPower = pc_leftside_def( &sd ); + packet.plusdefPower = pc_rightside_def( &sd ); + packet.mdefPower = pc_leftside_mdef( &sd ); #ifdef RENEWAL - clif_updatestatus(*sd, SP_POW); - clif_updatestatus(*sd, SP_STA); - clif_updatestatus(*sd, SP_WIS); - clif_updatestatus(*sd, SP_SPL); - clif_updatestatus(*sd, SP_CON); - clif_updatestatus(*sd, SP_CRT); - clif_updatestatus(*sd, SP_PATK); - clif_updatestatus(*sd, SP_SMATK); - clif_updatestatus(*sd, SP_RES); - clif_updatestatus(*sd, SP_MRES); - clif_updatestatus(*sd, SP_HPLUS); - clif_updatestatus(*sd, SP_CRATE); - clif_updatestatus(*sd, SP_TRAITPOINT); - clif_updatestatus(*sd, SP_AP); - clif_updatestatus(*sd, SP_MAXAP); - clif_updatestatus(*sd, SP_UPOW); - clif_updatestatus(*sd, SP_USTA); - clif_updatestatus(*sd, SP_UWIS); - clif_updatestatus(*sd, SP_USPL); - clif_updatestatus(*sd, SP_UCON); - clif_updatestatus(*sd, SP_UCRT); + packet.plusmdefPower = pc_rightside_mdef( &sd ); +#else + // Negative check for Frenzy'ed characters. + packet.plusmdefPower = std::max( pc_rightside_mdef( &sd ), 0 ); +#endif + + packet.hitSuccessValue = sd.battle_status.hit; + packet.avoidSuccessValue = sd.battle_status.flee; + packet.plusAvoidSuccessValue = sd.battle_status.flee2 / 10; + packet.criticalSuccessValue = sd.battle_status.cri / 10; + packet.ASPD = sd.battle_status.amotion; + packet.plusASPD = 0; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); + + clif_updatestatus(sd, SP_STR); + clif_updatestatus(sd, SP_AGI); + clif_updatestatus(sd, SP_VIT); + clif_updatestatus(sd, SP_INT); + clif_updatestatus(sd, SP_DEX); + clif_updatestatus(sd, SP_LUK); + + clif_updatestatus(sd, SP_ATTACKRANGE); + clif_updatestatus(sd, SP_ASPD); + +#ifdef RENEWAL + clif_updatestatus(sd, SP_POW); + clif_updatestatus(sd, SP_STA); + clif_updatestatus(sd, SP_WIS); + clif_updatestatus(sd, SP_SPL); + clif_updatestatus(sd, SP_CON); + clif_updatestatus(sd, SP_CRT); + clif_updatestatus(sd, SP_PATK); + clif_updatestatus(sd, SP_SMATK); + clif_updatestatus(sd, SP_RES); + clif_updatestatus(sd, SP_MRES); + clif_updatestatus(sd, SP_HPLUS); + clif_updatestatus(sd, SP_CRATE); + clif_updatestatus(sd, SP_TRAITPOINT); + clif_updatestatus(sd, SP_AP); + clif_updatestatus(sd, SP_MAXAP); + clif_updatestatus(sd, SP_UPOW); + clif_updatestatus(sd, SP_USTA); + clif_updatestatus(sd, SP_UWIS); + clif_updatestatus(sd, SP_USPL); + clif_updatestatus(sd, SP_UCON); + clif_updatestatus(sd, SP_UCRT); #endif } -/// Marks an ammunition item in inventory as equipped (ZC_EQUIP_ARROW). -/// 013c .W -void clif_arrowequip(map_session_data *sd,int val) { - int fd; - - nullpo_retv(sd); - +/// Marks an ammunition item in inventory as equipped. +/// 013c .W (ZC_EQUIP_ARROW) +void clif_arrowequip( map_session_data& sd ) { #if PACKETVER >= 20121128 - clif_status_change(&sd->bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INFINITE_TICK, 0, 0, 0); + clif_status_change(&sd.bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INFINITE_TICK, 0, 0, 0); #endif - fd=sd->fd; - WFIFOHEAD(fd, packet_len(0x013c)); - WFIFOW(fd,0) = 0x013c; - WFIFOW(fd,2) = val + 2; //Item ID of the arrow - WFIFOSET(fd, packet_len(0x013c)); + + PACKET_ZC_EQUIP_ARROW packet{}; + + packet.packetType = HEADER_ZC_EQUIP_ARROW; + + // Inventory index of the arrow + packet.index = client_index( sd.equip_index[EQI_AMMO] ); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Ammunition action message (ZC_ACTION_FAILURE). -/// 013b .W +/// Ammunition action message. +/// 013b .W (ZC_ACTION_FAILURE) /// type: /// 0 = MsgStringTable[242]="Please equip the proper ammunition first." /// 1 = MsgStringTable[243]="You can't Attack or use Skills because your Weight Limit has been exceeded." @@ -4218,25 +4141,20 @@ void clif_arrowequip(map_session_data *sd,int val) { /// 3 = assassin, baby_assassin, assassin_cross => MsgStringTable[1040]="You have equipped throwing daggers." /// gunslinger => MsgStringTable[1175]="Bullets have been equipped." /// NOT ninja => MsgStringTable[245]="Ammunition has been equipped." -void clif_arrow_fail(map_session_data *sd,int type) { - int fd; +void clif_arrow_fail( map_session_data& sd, e_action_failure type ) { + PACKET_ZC_ACTION_FAILURE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACTION_FAILURE; + packet.type = static_cast(type); - fd=sd->fd; - WFIFOHEAD(fd, packet_len(0x013b)); - WFIFOW(fd,0) = 0x013b; - WFIFOW(fd,2) = type; - WFIFOSET(fd, packet_len(0x013b)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } /// Presents a list of items, that can be processed by Arrow Crafting (ZC_MAKINGARROW_LIST). /// 01ad .W { .W }* -void clif_arrow_create_list( map_session_data *sd ){ - nullpo_retv( sd ); - - PACKET_ZC_MAKINGARROW_LIST *p = (PACKET_ZC_MAKINGARROW_LIST *)packet_buffer; +void clif_arrow_create_list( map_session_data& sd ){ + PACKET_ZC_MAKINGARROW_LIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_MAKINGARROW_LIST; p->packetLength = sizeof( *p ); @@ -4250,53 +4168,50 @@ void clif_arrow_create_list( map_session_data *sd ){ continue; } - int index = pc_search_inventory( sd, nameid ); + int index = pc_search_inventory( &sd, nameid ); if( index < 0 ){ continue; } - if( sd->inventory.u.items_inventory[index].equip ){ + if( sd.inventory.u.items_inventory[index].equip ){ continue; } - if( !sd->inventory.u.items_inventory[index].identify ){ + if( !sd.inventory.u.items_inventory[index].identify ){ continue; } p->items[count].itemId = client_nameid( nameid ); - p->packetLength += sizeof( p->items[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); count++; } - clif_send( p, p->packetLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd.bl, SELF ); if( count > 0 ){ - sd->menuskill_id = AC_MAKINGARROW; - sd->menuskill_val = count; + sd.menuskill_id = AC_MAKINGARROW; + sd.menuskill_val = count; } } -/// Notifies the client, about the result of an status change request (ZC_STATUS_CHANGE_ACK). -/// 00bc .W .B .B +/// Notifies the client, about the result of an status change request. +/// 00bc .W .B .B (ZC_STATUS_CHANGE_ACK) /// status id: /// SP_STR ~ SP_LUK and SP_POW ~ SP_CRT /// result: /// 0 = failure /// 1 = success -void clif_statusupack(map_session_data *sd,int type,int ok,int val) { - int fd; +void clif_statusupack( map_session_data& sd, int32 type, bool success, int32 val ) { + PACKET_ZC_STATUS_CHANGE_ACK packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_STATUS_CHANGE_ACK; + packet.sp = static_cast(type); + packet.ok = success; + packet.value = cap_value(val, 0, UINT8_MAX); - fd=sd->fd; - WFIFOHEAD(fd, packet_len(0xbc)); - WFIFOW(fd,0) = 0xbc; - WFIFOW(fd,2) = type; - WFIFOB(fd,4) = ok; - WFIFOB(fd,5) = cap_value(val, 0, UINT8_MAX); - WFIFOSET(fd, packet_len(0xbc)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -4310,7 +4225,7 @@ void clif_statusupack(map_session_data *sd,int type,int ok,int val) { /// 1 = success /// 2 = failure due to low level void clif_equipitemack( map_session_data& sd, uint8 flag, int index, int pos ){ - struct PACKET_ZC_REQ_WEAR_EQUIP_ACK p = {}; + PACKET_ZC_REQ_WEAR_EQUIP_ACK p = {}; p.PacketType = HEADER_ZC_REQ_WEAR_EQUIP_ACK; p.index = client_index( index ); @@ -4364,8 +4279,8 @@ void clif_unequipitemack(map_session_data *sd,int n,int pos,int ok) } -/// Notifies clients in the area about an special/visual effect (ZC_NOTIFY_EFFECT). -/// 019b .L .L +/// Notifies clients in the area about an special/visual effect. +/// 019b .L .L (ZC_NOTIFY_EFFECT) /// effect id: /// 0 = base level up /// 1 = job level up @@ -4377,17 +4292,14 @@ void clif_unequipitemack(map_session_data *sd,int n,int pos,int ok) /// 7 = base level up (super novice) /// 8 = job level up (super novice) /// 9 = base level up (taekwon) -void clif_misceffect(struct block_list* bl,int type) -{ - unsigned char buf[32]; +void clif_misceffect( block_list& bl, e_notify_effect type ){ + PACKET_ZC_NOTIFY_EFFECT packet{}; - nullpo_retv(bl); + packet.packetType = HEADER_ZC_NOTIFY_EFFECT; + packet.aid = bl.id; + packet.effectId = static_cast(type); - WBUFW(buf,0) = 0x19b; - WBUFL(buf,2) = bl->id; - WBUFL(buf,6) = type; - - clif_send(buf,packet_len(0x19b),bl,AREA); + clif_send( &packet, sizeof( packet ), &bl, AREA ); } @@ -4406,7 +4318,7 @@ void clif_changeoption_target( struct block_list* bl, struct block_list* target map_session_data* sd = BL_CAST( BL_PC, bl ); - struct PACKET_ZC_STATE_CHANGE p; + PACKET_ZC_STATE_CHANGE p = {}; p.packetType = HEADER_ZC_STATE_CHANGE; p.AID = bl->id; @@ -4448,30 +4360,33 @@ void clif_changeoption_target( struct block_list* bl, struct block_list* target } -/// Displays status change effects on NPCs/monsters (ZC_NPC_SHOWEFST_UPDATE). -/// 028a .L .L .L .L -void clif_changeoption2(struct block_list* bl) -{ - unsigned char buf[20]; - status_change *sc; +/// Displays status change effects on NPCs/monsters. +/// 028a .L .L .L .L (ZC_NPC_SHOWEFST_UPDATE) +void clif_changeoption2( block_list& bl ){ + status_change *sc = status_get_sc(&bl); + if (!sc) + return; //How can an option change if there's no sc? - sc = status_get_sc(bl); - if (!sc) return; //How can an option change if there's no sc? + PACKET_ZC_NPC_SHOWEFST_UPDATE packet{}; - WBUFW(buf,0) = 0x28a; - WBUFL(buf,2) = bl->id; - WBUFL(buf,6) = sc->option; - WBUFL(buf,10) = clif_setlevel(bl); - WBUFL(buf,14) = sc->opt3; - if(disguised(bl)) { - clif_send(buf,packet_len(0x28a),bl,AREA_WOS); - WBUFL(buf,2) = disguised_bl_id( bl->id ); - clif_send(buf,packet_len(0x28a),bl,SELF); - WBUFL(buf,2) = bl->id; - WBUFL(buf,6) = OPTION_INVISIBLE; - clif_send(buf,packet_len(0x28a),bl,SELF); - } else - clif_send(buf,packet_len(0x28a),bl,AREA); + packet.packetType = HEADER_ZC_NPC_SHOWEFST_UPDATE; + packet.gid = bl.id; + packet.effectState = sc->option; + packet.level = clif_setlevel(&bl); + packet.showEFST = sc->opt3; + + if (disguised(&bl)) { + clif_send( &packet, sizeof( packet ), &bl, AREA_WOS ); + + packet.gid = disguised_bl_id( bl.id ); + clif_send( &packet, sizeof( packet ), &bl, SELF ); + + packet.gid = bl.id; + packet.effectState = OPTION_INVISIBLE; + clif_send( &packet, sizeof( packet ), &bl, SELF ); + } else { + clif_send( &packet, sizeof( packet ), &bl, AREA ); + } } @@ -4491,7 +4406,7 @@ void clif_useitemack( map_session_data *sd, int index, int amount, bool ok ){ return; } - struct PACKET_ZC_USE_ITEM_ACK p; + PACKET_ZC_USE_ITEM_ACK p = {}; p.packetType = useItemAckType; p.index = index + 2; @@ -4510,23 +4425,19 @@ void clif_useitemack( map_session_data *sd, int index, int amount, bool ok ){ } -/// Inform client whether chatroom creation was successful or not (ZC_ACK_CREATE_CHATROOM). -/// 00d6 .B +/// Inform client whether chatroom creation was successful or not. +/// 00d6 .B (ZC_ACK_CREATE_CHATROOM) /// flag: /// 0 = Room has been successfully created (opens chat room) /// 1 = Room limit exceeded /// 2 = Same room already exists -void clif_createchat(map_session_data* sd, int flag) -{ - int fd; +void clif_createchat( map_session_data& sd, e_create_chatroom flag ){ + PACKET_ZC_ACK_CREATE_CHATROOM packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_CREATE_CHATROOM; + packet.flag = static_cast(flag); - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0xd6)); - WFIFOW(fd,0) = 0xd6; - WFIFOB(fd,2) = flag; - WFIFOSET(fd,packet_len(0xd6)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -4620,8 +4531,8 @@ void clif_clearchat(struct chat_data *cd,int fd) } -/// Displays messages regarding join chat failures (ZC_REFUSE_ENTER_ROOM). -/// 00da .B +/// Displays messages regarding join chat failures. +/// 00da .B (ZC_REFUSE_ENTER_ROOM) /// result: /// 0 = room full /// 1 = wrong password @@ -4631,18 +4542,13 @@ void clif_clearchat(struct chat_data *cd,int fd) /// 5 = too low level /// 6 = too high level /// 7 = unsuitable job class -void clif_joinchatfail(map_session_data *sd,int flag) -{ - int fd; +void clif_joinchatfail( map_session_data& sd, e_refuse_enter_room result ){ + PACKET_ZC_REFUSE_ENTER_ROOM packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_REFUSE_ENTER_ROOM; + packet.result = static_cast(result); - fd = sd->fd; - - WFIFOHEAD(fd,packet_len(0xda)); - WFIFOW(fd,0) = 0xda; - WFIFOB(fd,2) = flag; - WFIFOSET(fd,packet_len(0xda)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -4817,7 +4723,7 @@ void clif_tradeadditem( map_session_data* sd, map_session_data* tsd, int index, return; } - struct PACKET_ZC_ADD_EXCHANGE_ITEM p; + PACKET_ZC_ADD_EXCHANGE_ITEM p = {}; if( index ){ index = server_index( index ); @@ -4870,84 +4776,70 @@ void clif_tradeitemok(map_session_data& sd, int index, e_exitem_add_result resul } -/// Notifies the client about finishing one side of the current trade (ZC_CONCLUDE_EXCHANGE_ITEM). -/// 00ec .B +/// Notifies the client about finishing one side of the current trade. +/// 00ec .B (ZC_CONCLUDE_EXCHANGE_ITEM) /// who: /// 0 = self /// 1 = other player -void clif_tradedeal_lock(map_session_data* sd, int fail) -{ - int fd; - nullpo_retv(sd); +void clif_tradedeal_lock( map_session_data& sd, bool who ){ + PACKET_ZC_CONCLUDE_EXCHANGE_ITEM packet{}; - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0xec)); - WFIFOW(fd,0) = 0xec; - WFIFOB(fd,2) = fail; - WFIFOSET(fd,packet_len(0xec)); + packet.packetType = HEADER_ZC_CONCLUDE_EXCHANGE_ITEM; + packet.who = who; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Notifies the client about the trade being canceled (ZC_CANCEL_EXCHANGE_ITEM). -/// 00ee -void clif_tradecancelled(map_session_data* sd) -{ - int fd; - nullpo_retv(sd); +/// Notifies the client about the trade being canceled. +/// 00ee (ZC_CANCEL_EXCHANGE_ITEM) +void clif_tradecancelled( map_session_data& sd ){ + PACKET_ZC_CANCEL_EXCHANGE_ITEM packet{}; - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0xee)); - WFIFOW(fd,0) = 0xee; - WFIFOSET(fd,packet_len(0xee)); + packet.packetType = HEADER_ZC_CANCEL_EXCHANGE_ITEM; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Result of a trade (ZC_EXEC_EXCHANGE_ITEM). -/// 00f0 .B +/// Result of a trade. +/// 00f0 .B (ZC_EXEC_EXCHANGE_ITEM) /// result: /// 0 = success /// 1 = failure -void clif_tradecompleted(map_session_data* sd, int fail) -{ - int fd; - nullpo_retv(sd); +void clif_tradecompleted( map_session_data& sd ){ + PACKET_ZC_EXEC_EXCHANGE_ITEM packet{}; - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0xf0)); - WFIFOW(fd,0) = 0xf0; - WFIFOB(fd,2) = fail; - WFIFOSET(fd,packet_len(0xf0)); + packet.packetType = HEADER_ZC_EXEC_EXCHANGE_ITEM; + packet.result = 0; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Resets the trade window on the send side (ZC_EXCHANGEITEM_UNDO). -/// 00f1 +/// Resets the trade window on the send side. +/// 00f1 (ZC_EXCHANGEITEM_UNDO) /// NOTE: Unknown purpose. Items are not removed until the window is /// refreshed (ex. by putting another item in there). -void clif_tradeundo(map_session_data* sd) -{ - int fd = sd->fd; +void clif_tradeundo( map_session_data& sd ){ + PACKET_ZC_EXCHANGEITEM_UNDO packet{}; - WFIFOHEAD(fd,packet_len(0xf1)); - WFIFOW(fd,0) = 0xf1; - WFIFOSET(fd,packet_len(0xf1)); + packet.packetType = HEADER_ZC_EXCHANGEITEM_UNDO; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Updates storage total amount (ZC_NOTIFY_STOREITEM_COUNTINFO). -/// 00f2 .W .W -void clif_updatestorageamount(map_session_data* sd, int amount, int max_amount) -{ - int fd; +/// Updates storage total amount. +/// 00f2 .W .W (ZC_NOTIFY_STOREITEM_COUNTINFO) +void clif_updatestorageamount( map_session_data& sd, uint16 amount, uint16 max_amount ){ + PACKET_ZC_NOTIFY_STOREITEM_COUNTINFO packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_NOTIFY_STOREITEM_COUNTINFO; + packet.amount = amount; + packet.max_amount = max_amount; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0xf2)); - WFIFOW(fd,0) = 0xf2; - WFIFOW(fd,2) = amount; - WFIFOW(fd,4) = max_amount; - WFIFOSET(fd,packet_len(0xf2)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -4965,7 +4857,7 @@ void clif_storageitemadded( map_session_data* sd, struct item* i, int index, int return; } - struct PACKET_ZC_ADD_ITEM_TO_STORE p; + PACKET_ZC_ADD_ITEM_TO_STORE p = {}; p.packetType = HEADER_ZC_ADD_ITEM_TO_STORE; // Storage item added p.index = client_storage_index( index ); // index @@ -4989,49 +4881,41 @@ void clif_storageitemadded( map_session_data* sd, struct item* i, int index, int } -/// Notifies the client of an item being deleted from the storage (ZC_DELETE_ITEM_FROM_STORE). -/// 00f6 .W .L -void clif_storageitemremoved(map_session_data* sd, int index, int amount) -{ - int fd; +/// Notifies the client of an item being deleted from the storage. +/// 00f6 .W .L (ZC_DELETE_ITEM_FROM_STORE) +void clif_storageitemremoved( map_session_data& sd, uint16 index, uint32 amount ){ + PACKET_ZC_DELETE_ITEM_FROM_STORE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_DELETE_ITEM_FROM_STORE; + packet.index = client_storage_index(index); + packet.amount = amount; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0xf6)); - WFIFOW(fd,0)=0xf6; // Storage item removed - WFIFOW(fd,2)=client_storage_index(index); - WFIFOL(fd,4)=amount; - WFIFOSET(fd,packet_len(0xf6)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Closes storage (ZC_CLOSE_STORE). -/// 00f8 -void clif_storageclose(map_session_data* sd) -{ - int fd; +/// Closes storage. +/// 00f8 (ZC_CLOSE_STORE) +void clif_storageclose( map_session_data& sd ){ + PACKET_ZC_CLOSE_STORE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_CLOSE_STORE; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0xf8)); - WFIFOW(fd,0) = 0xf8; // Storage Closed - WFIFOSET(fd,packet_len(0xf8)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } /// Notifies clients in an area of a player's souls. /// 01d0 .L .W (ZC_SPIRITS) /// 01e1 .L .W (ZC_SPIRITS2) -/// 0b73 .L .W +/// 0b73 .L .W (ZC_SOULENERGY) void clif_soulball( map_session_data *sd, struct block_list* target, enum send_target send_target ){ -#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - struct PACKET_ZC_SOULENERGY p = {}; +#if PACKETVER_MAIN_NUM >= 20200414 || PACKETVER_RE_NUM >= 20200723 || PACKETVER_ZERO_NUM >= 20200506 + PACKET_ZC_SOULENERGY p = {}; p.PacketType = HEADER_ZC_SOULENERGY; #else - struct PACKET_ZC_SPIRITS p = {}; + PACKET_ZC_SPIRITS p = {}; p.PacketType = HEADER_ZC_SPIRITS; #endif @@ -5111,7 +4995,7 @@ void clif_getareachar_unit( map_session_data* sd,struct block_list *bl ){ ud = unit_bl2ud(bl); if( ud && ud->walktimer != INVALID_TIMER ){ - clif_set_unit_walking( bl, sd, ud, SELF ); + clif_set_unit_walking( *bl, sd, *ud, SELF ); }else{ clif_set_unit_idle( bl, false, SELF, &sd->bl ); } @@ -5137,7 +5021,7 @@ void clif_getareachar_unit( map_session_data* sd,struct block_list *bl ){ if ( tsd->status.robe ) clif_refreshlook(&sd->bl,bl->id,LOOK_ROBE,tsd->status.robe,SELF); clif_efst_status_change_sub(&sd->bl, bl, SELF); - clif_hat_effects(sd,bl,SELF); + clif_hat_effects( *sd, tsd->bl, SELF ); } break; case BL_MER: // Devotion Effects @@ -5229,6 +5113,8 @@ static int clif_hallucination_damage() return (rnd() % 32767); } +#define DEFAULT_ANIMATION_SPEED 432 + /// Sends a 'damage' packet (src performs action on dst) /// 008a .L .L .L .L .L .W
.W .B .W (ZC_NOTIFY_ACT) /// 02e1 .L .L .L .L .L .L
.W .B .L (ZC_NOTIFY_ACT2) @@ -5278,6 +5164,29 @@ int clif_damage(struct block_list* src, struct block_list* dst, t_tick tick, int } } + // Calculate what sdelay to send to the client so it applies damage at the same time as the server + if (battle_config.synchronize_damage && src->type == BL_MOB) { + // When a clif_damage packet is sent to the client it will also send "sdelay" (amotion) as value. + // The client however does not interpret this value as AttackMotion but incorrectly as an inverted + // animation speed modifier, with 432 standing for 1x animation speed. + // The client will ignore all values above 432, but lower values will speed up the animation. + // 216 for example means play the animation at double the speed. 108 is quadruple speed. + // Each monster has an attack animation and may define the frame in the attack animation on which + // it displays the damage and makes the target flinch / stop. If the damage frame is undefined, + // it instead displays the damage / flinch / stop at the beginning of the second to last frame. + // We define the time after which the damage frame shows at 1x speed as clientamotion. + uint16 clientamotion = std::max((uint16)1, status_get_clientamotion(src)); + + // Knowing when the damage frame happens in the animation allows us to synchronize the timing + // between client and server using the formula below. + sdelay = sdelay * DEFAULT_ANIMATION_SPEED / clientamotion; + + // Hint: If amotion is larger than clientamotion this results in a value above 432 which makes the + // client display the attack at 1x speed. In this case we need to shorten the delay damage timer + // on the server to clientamotion ms instead (see battle_delay_damage). + sdelay = std::min(sdelay, DEFAULT_ANIMATION_SPEED); + } + WBUFW(buf,0) = cmd; WBUFL(buf,2) = src->id; WBUFL(buf,6) = dst->id; @@ -5432,7 +5341,7 @@ void clif_getareachar_item( map_session_data* sd,struct flooritem_data* fitem ){ nullpo_retv( sd ); nullpo_retv( fitem ); - struct PACKET_ZC_ITEM_ENTRY p; + PACKET_ZC_ITEM_ENTRY p = {}; p.packetType = HEADER_ZC_ITEM_ENTRY; p.AID = fitem->bl.id; @@ -5572,49 +5481,44 @@ void clif_skill_unit_test(struct block_list *bl, short x, short y, int unit_id, clif_send(buf, packet_len(0x09ca), bl, AREA); } -/*========================================== - * Server tells client to remove unit of id 'unit->bl.id' - *------------------------------------------*/ -static void clif_clearchar_skillunit(struct skill_unit *unit, int fd) -{ - nullpo_retv(unit); +/// Server tells client to remove unit of id 'unit->bl.id' +/// 0120 .L (ZC_SKILL_DISAPPEAR) +static void clif_clearchar_skillunit( skill_unit& unit, map_session_data& sd ){ + PACKET_ZC_SKILL_DISAPPEAR packet{}; - WFIFOHEAD(fd,packet_len(0x120)); - WFIFOW(fd, 0)=0x120; - WFIFOL(fd, 2)=unit->bl.id; - WFIFOSET(fd,packet_len(0x120)); + packet.packetType = HEADER_ZC_SKILL_DISAPPEAR; + packet.GID = unit.bl.id; - if(unit->group && unit->group->skill_id == WZ_ICEWALL) - clif_changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,unit->val2,SELF); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); + + if( unit.group && unit.group->skill_id == WZ_ICEWALL ){ + clif_changemapcell( sd.fd, unit.bl.m, unit.bl.x, unit.bl.y, unit.val2, SELF ); + } } -/// Removes a skill unit (ZC_SKILL_DISAPPEAR). -/// 0120 .L -void clif_skill_delunit(struct skill_unit *unit) -{ - unsigned char buf[16]; +/// Removes a skill unit. +/// 0120 .L (ZC_SKILL_DISAPPEAR) +void clif_skill_delunit( skill_unit& unit ){ + PACKET_ZC_SKILL_DISAPPEAR packet{}; - nullpo_retv(unit); + packet.packetType = HEADER_ZC_SKILL_DISAPPEAR; + packet.GID = unit.bl.id; - WBUFW(buf, 0)=0x120; - WBUFL(buf, 2)=unit->bl.id; - clif_send(buf,packet_len(0x120),&unit->bl,AREA); + clif_send( &packet, sizeof( packet ), &unit.bl, AREA ); } -/// Sent when an object gets ankle-snared (ZC_SKILL_UPDATE). -/// 01ac .L +/// Sent when an object gets ankle-snared. +/// 01ac .L (ZC_SKILL_UPDATE) /// Only affects units with class [139,153] client-side. -void clif_skillunit_update(struct block_list* bl) -{ - unsigned char buf[6]; - nullpo_retv(bl); +void clif_skillunit_update( block_list& bl ){ + PACKET_ZC_SKILL_UPDATE packet{}; - WBUFW(buf,0) = 0x1ac; - WBUFL(buf,2) = bl->id; + packet.packetType = HEADER_ZC_SKILL_UPDATE; + packet.GID = bl.id; - clif_send(buf,packet_len(0x1ac),bl,AREA); + clif_send( &packet, sizeof( packet ), &bl, AREA ); } @@ -5682,7 +5586,7 @@ int clif_outsight(struct block_list *bl,va_list ap) clif_clearflooritem( *reinterpret_cast( bl ), tsd ); break; case BL_SKILL: - clif_clearchar_skillunit((struct skill_unit *)bl,tsd->fd); + clif_clearchar_skillunit( *((skill_unit *)bl), *tsd ); break; case BL_NPC: if(!(((TBL_NPC*)bl)->is_invisible)) @@ -5697,7 +5601,7 @@ int clif_outsight(struct block_list *bl,va_list ap) if (clif_session_isValid(sd)) { //sd is watching tbl go out of view. nullpo_ret(tbl); if(tbl->type == BL_SKILL) //Trap knocked out of sight - clif_clearchar_skillunit((struct skill_unit *)tbl,sd->fd); + clif_clearchar_skillunit( *((skill_unit *)tbl), *sd ); else if(((vd=status_get_viewdata(tbl)) && vd->class_ != JT_INVISIBLE) && !(tbl->type == BL_NPC && (((TBL_NPC*)tbl)->is_invisible))) clif_clearunit_single( tbl->id, CLR_OUTSIGHT, *sd ); @@ -5913,7 +5817,7 @@ void clif_skill_scale( struct block_list *bl, int src_id, int x, int y, uint16 s return; } - struct PACKET_ZC_SKILL_SCALE p; + PACKET_ZC_SKILL_SCALE p = {}; p.PacketType = skillscale; p.AID = src_id; @@ -5982,17 +5886,15 @@ void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, } -/// Notifies clients in area, that an object canceled casting (ZC_DISPEL). -/// 01b9 .L -void clif_skillcastcancel(struct block_list* bl) -{ - unsigned char buf[16]; +/// Notifies clients in area, that an object canceled casting. +/// 01b9 .L (ZC_DISPEL) +void clif_skillcastcancel( block_list& bl ){ + PACKET_ZC_DISPEL packet{}; - nullpo_retv(bl); + packet.packetType = HEADER_ZC_DISPEL; + packet.gid = bl.id; - WBUFW(buf,0) = 0x1b9; - WBUFL(buf,2) = bl->id; - clif_send(buf,packet_len(0x1b9), bl, AREA); + clif_send( &packet, sizeof(PACKET_ZC_DISPEL), &bl, AREA ); } @@ -6032,7 +5934,7 @@ void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_ if(skill_id == TF_POISON && battle_config.display_skill_fail&8) return; - struct PACKET_ZC_ACK_TOUSESKILL p; + PACKET_ZC_ACK_TOUSESKILL p = {}; p.packetType = HEADER_ZC_ACK_TOUSESKILL; p.skillId = skill_id; @@ -6045,21 +5947,17 @@ void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_ } -/// Skill cooldown display icon (ZC_SKILL_POSTDELAY). -/// 043d .W .L -void clif_skill_cooldown(map_session_data *sd, uint16 skill_id, t_tick tick) -{ -#if PACKETVER>=20081112 - int fd; +/// Skill cooldown display icon. +/// 043d .W .L (ZC_SKILL_POSTDELAY) +void clif_skill_cooldown( map_session_data &sd, uint16 skill_id, t_tick tick ){ +#if PACKETVER_MAIN_NUM >= 20081112 || PACKETVER_RE_NUM >= 20081111 || defined(PACKETVER_ZERO) + PACKET_ZC_SKILL_POSTDELAY packet{}; - nullpo_retv(sd); + packet.PacketType = HEADER_ZC_SKILL_POSTDELAY; + packet.SKID = skill_id; + packet.DelayTM = client_tick(tick); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x43d)); - WFIFOW(fd,0) = 0x43d; - WFIFOW(fd,2) = skill_id; - WFIFOL(fd,4) = client_tick(tick); - WFIFOSET(fd,packet_len(0x43d)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); #endif } @@ -6321,8 +6219,8 @@ void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_l } -/// Memo message (ZC_ACK_REMEMBER_WARPPOINT). -/// 011e .B +/// Memo message. +/// 011e .B (ZC_ACK_REMEMBER_WARPPOINT) /// type: /// 0 = "Saved location as a Memo Point for Warp skill." in color 0xFFFF00 (cyan) /// 1 = "Skill Level is not high enough." in color 0x0000FF (red) @@ -6330,39 +6228,33 @@ void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_l /// /// @param sd Who receives the message /// @param type What message -void clif_skill_memomessage(map_session_data* sd, int type) -{ - int fd; +void clif_skill_memomessage( map_session_data& sd, e_ack_remember_warppoint_result result ){ + PACKET_ZC_ACK_REMEMBER_WARPPOINT packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_REMEMBER_WARPPOINT; + packet.type = static_cast(result); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x11e)); - WFIFOW(fd,0)=0x11e; - WFIFOB(fd,2)=type; - WFIFOSET(fd,packet_len(0x11e)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Teleport message (ZC_NOTIFY_MAPINFO). -/// 0189 .W +/// Teleport message. +/// 0189 .W (ZC_NOTIFY_MAPINFO) /// type: /// 0 = "Unable to Teleport in this area" in color 0xFFFF00 (cyan) /// 1 = "Saved point cannot be memorized." in color 0x0000FF (red) +/// 2 = "This skill cannot be used in this area" +/// 3 = "This item cannot be used in this area" /// /// @param sd Who receives the message /// @param type What message -void clif_skill_teleportmessage(map_session_data *sd, int type) -{ - int fd; +void clif_skill_teleportmessage( map_session_data& sd, e_notify_mapinfo_result result ){ + PACKET_ZC_NOTIFY_MAPINFO packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_NOTIFY_MAPINFO; + packet.type = static_cast(result); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x189)); - WFIFOW(fd,0)=0x189; - WFIFOW(fd,2)=type; - WFIFOSET(fd,packet_len(0x189)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -6402,55 +6294,56 @@ void clif_skill_estimation(map_session_data *sd,struct block_list *dst) } -/// Presents a textual list of producable items (ZC_MAKABLEITEMLIST). -/// 018d .W { .W { .W }*3 }* +/// Presents a textual list of producable items. +/// 018d .W { .W { .W }*3 }* (ZC_MAKABLEITEMLIST) /// material id: /// unused by the client -void clif_skill_produce_mix_list( map_session_data *sd, int skill_id, int trigger ){ - nullpo_retv(sd); - - int fd = sd->fd; - - if( !session_isActive( fd ) ){ +void clif_skill_produce_mix_list( map_session_data& sd, int skill_id, int trigger ){ + // Avoid resending the menu + if( sd.menuskill_id == skill_id ){ return; } - if (sd->menuskill_id == skill_id) - return; //Avoid resending the menu twice or more times... if (skill_id == GC_CREATENEWPOISON) skill_id = GC_RESEARCHNEWPOISON; - WFIFOHEAD( fd, sizeof( struct PACKET_ZC_MAKABLEITEMLIST ) + MAX_SKILL_PRODUCE_DB * sizeof( struct PACKET_ZC_MAKABLEITEMLIST_sub ) ); - struct PACKET_ZC_MAKABLEITEMLIST *p = (struct PACKET_ZC_MAKABLEITEMLIST *)WFIFOP( fd, 0 ); - p->packetType = 0x18d; + PACKET_ZC_MAKABLEITEMLIST* p = reinterpret_cast( packet_buffer ); + + p->packetType = HEADER_ZC_MAKABLEITEMLIST; + p->packetLength = sizeof( *p ); int count = 0; for( int i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ){ - if (skill_can_produce_mix(sd,skill_produce_db[i].nameid, trigger, 1) && - (skill_id <= 0 || skill_produce_db[i].req_skill == skill_id) - ) - { - p->items[count].itemId = client_nameid( skill_produce_db[i].nameid ); - p->items[count].material[0] = 0; - p->items[count].material[1] = 0; - p->items[count].material[2] = 0; - count++; + if( !skill_can_produce_mix( &sd, skill_produce_db[i].nameid, trigger, 1 ) ){ + continue; } + + if( skill_id > 0 && skill_produce_db[i].req_skill != skill_id ){ + continue; + } + + PACKET_ZC_MAKABLEITEMLIST_sub& entry = p->items[count]; + + entry.itemId = client_nameid( skill_produce_db[i].nameid ); + entry.material[0] = 0; + entry.material[1] = 0; + entry.material[2] = 0; + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); + count++; } - p->packetLength = static_castpacketLength)>( sizeof( struct PACKET_ZC_MAKABLEITEMLIST ) + count * sizeof( struct PACKET_ZC_MAKABLEITEMLIST_sub ) ); - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); if( count > 0 ){ - sd->menuskill_id = skill_id; - sd->menuskill_val = trigger; - return; + sd.menuskill_id = skill_id; + sd.menuskill_val = trigger; } } -/// Present a list of producable items (ZC_MAKINGITEM_LIST). -/// 025a .W .W { .W }* +/// Present a list of producable items. +/// 025a .W .W { .W }* (ZC_MAKINGITEM_LIST) /// mk type: /// 1 = cooking /// 2 = arrow @@ -6458,54 +6351,51 @@ void clif_skill_produce_mix_list( map_session_data *sd, int skill_id, int trigge /// 4 = GN_MIX_COOKING /// 5 = GN_MAKEBOMB /// 6 = GN_S_PHARMACY -/// 7 = MT_M_MACHINE - Unconfirmed -/// 8 = BO_BIONIC_PHARMACY - Unconfirmed -void clif_cooking_list( map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type ){ - nullpo_retv( sd ); - - // Avoid resending the menu twice or more times... - if( sd->menuskill_id == skill_id ){ +/// 7 = MT_M_MACHINE +/// 8 = BO_BIONIC_PHARMACY +void clif_cooking_list( map_session_data& sd, int trigger, uint16 skill_id, int qty, int list_type ){ +#if PACKETVER >= 20051010 + // Avoid resending the menu + if( sd.menuskill_id == skill_id ){ return; } - int fd = sd->fd; + PACKET_ZC_MAKINGITEM_LIST* p = reinterpret_cast( packet_buffer ); - if( !session_isActive( fd ) ){ - return; - } - - WFIFOHEAD( fd, sizeof( struct PACKET_ZC_MAKINGITEM_LIST ) + MAX_SKILL_PRODUCE_DB * sizeof( struct PACKET_ZC_MAKINGITEM_LIST_sub ) ); - struct PACKET_ZC_MAKINGITEM_LIST *p = (struct PACKET_ZC_MAKINGITEM_LIST *)WFIFOP( fd, 0 ); - p->packetType = 0x25a; - p->makeItem = list_type; // list type + p->packetType = HEADER_ZC_MAKINGITEM_LIST; + p->packetLength = sizeof( *p ); + p->makeItem = list_type; int count = 0; - for( int i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ){ - if( !skill_can_produce_mix( sd, skill_produce_db[i].nameid, trigger, qty ) ){ + if( !skill_can_produce_mix( &sd, skill_produce_db[i].nameid, trigger, qty ) ){ continue; } - p->items[count].itemId = client_nameid( skill_produce_db[i].nameid ); + PACKET_ZC_MAKINGITEM_LIST_sub& entry = p->items[count]; + + entry.itemId = client_nameid( skill_produce_db[i].nameid ); + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); count++; } if( count > 0 || skill_id == AM_PHARMACY ){ - p->packetLength = static_castpacketLength)>( sizeof( struct PACKET_ZC_MAKINGITEM_LIST ) + count * sizeof( struct PACKET_ZC_MAKINGITEM_LIST_sub ) ); - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); - sd->menuskill_id = skill_id; - sd->menuskill_val = trigger; - sd->menuskill_val2 = qty; // amount. + sd.menuskill_id = skill_id; + sd.menuskill_val = trigger; + sd.menuskill_val2 = qty; // amount. }else{ - clif_menuskill_clear(sd); + clif_menuskill_clear( &sd ); + #if PACKETVER >= 20090922 - clif_msg_skill( sd, skill_id, INVENTORY_SPACE_FULL ); + clif_msg_skill( &sd, skill_id, MSI_SKILL_INVENTORY_KINDCNT_OVER ); #else - p->packetLength = static_castpacketLength)>( sizeof( struct PACKET_ZC_MAKINGITEM_LIST ) + count * sizeof( struct PACKET_ZC_MAKINGITEM_LIST_sub ) ); - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); #endif } +#endif } @@ -6770,39 +6660,42 @@ void clif_displaymessage(const int fd, const char* mes) } } -/// Send broadcast message in yellow or blue without font formatting (ZC_BROADCAST). -/// 009a .W .?B +/// Send broadcast message in yellow or blue without font formatting. +/// 009a .W .?B (ZC_BROADCAST) void clif_broadcast(struct block_list* bl, const char* mes, size_t len, int type, enum send_target target) { nullpo_retv(mes); if (len < 2) return; - PACKET_ZC_BROADCAST* p = (PACKET_ZC_BROADCAST*)packet_buffer; + PACKET_ZC_BROADCAST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_BROADCAST; - p->PacketLength = static_castPacketLength)>( sizeof( *p ) + len ); + p->PacketLength = sizeof( *p ); if( ( type&BC_BLUE ) != 0 ){ - const char* color = "blue"; - int16 length = (int16)strlen( color ); - // If there's "blue" at the beginning of the message, game client will display it in blue instead of yellow. - strcpy( p->message, color ); - strncpy( &p->message[length], mes, len ); + const char* color = "blue"; + size_t length = strlen( color ); - p->PacketLength += length; + strcpy( p->message, color ); + p->PacketLength += static_castPacketLength)>( length ); + + strncpy( &p->message[length], mes, len ); + p->PacketLength += static_castPacketLength)>( len ); }else if( ( type&BC_WOE ) != 0 ){ - const char* color = "ssss"; - int16 length = (int16)strlen( color ); - // If there's "ssss", game client will recognize message as 'WoE broadcast'. - strcpy( p->message, color ); - strncpy( &p->message[length], mes, len ); + const char* color = "ssss"; + size_t length = strlen( color ); - p->PacketLength += length; + strcpy( p->message, color ); + p->PacketLength += static_castPacketLength)>( length ); + + strncpy( &p->message[length], mes, len ); + p->PacketLength += static_castPacketLength)>( len ); }else{ strncpy( p->message, mes, len ); + p->PacketLength += static_castPacketLength)>( len ); } clif_send( p, p->PacketLength, bl, target ); @@ -6812,8 +6705,7 @@ void clif_broadcast(struct block_list* bl, const char* mes, size_t len, int type * Displays a message on a 'bl' to all it's nearby clients * 008d .W .L .?B (ZC_NOTIFY_CHAT) *------------------------------------------*/ -void clif_GlobalMessage(struct block_list* bl, const char* message, enum send_target target) { - nullpo_retv(bl); +void clif_GlobalMessage( block_list& bl, const char* message, enum send_target target ){ nullpo_retv(message); int16 len = (int16)( strlen( message ) + 1 ); @@ -6823,14 +6715,15 @@ void clif_GlobalMessage(struct block_list* bl, const char* message, enum send_ta len = CHAT_SIZE_MAX; } - struct PACKET_ZC_NOTIFY_CHAT* p = (struct PACKET_ZC_NOTIFY_CHAT*)packet_buffer; + PACKET_ZC_NOTIFY_CHAT* p = reinterpret_cast( packet_buffer ); p->PacketType = HEADER_ZC_NOTIFY_CHAT; - p->PacketLength = (int16)( sizeof( struct PACKET_ZC_NOTIFY_CHAT ) + len ); - p->GID = bl->id; + p->PacketLength = sizeof( *p ); + p->GID = bl.id; safestrncpy( p->Message, message, len ); + p->PacketLength += static_castPacketLength)>( len ); - clif_send( p, p->PacketLength, bl, target ); + clif_send( p, p->PacketLength, &bl, target ); } @@ -6842,16 +6735,17 @@ void clif_broadcast2(struct block_list* bl, const char* mes, size_t len, unsigne if (len < 2) return; - PACKET_ZC_BROADCAST2* p = (PACKET_ZC_BROADCAST2*)packet_buffer; + PACKET_ZC_BROADCAST2* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_BROADCAST2; - p->PacketLength = static_castPacketLength)>( sizeof( *p ) + len ); + p->PacketLength = sizeof( *p ); p->fontColor = fontColor; p->fontType = fontType; p->fontSize = fontSize; p->fontAlign = fontAlign; p->fontY = fontY; strncpy( p->message, mes, len ); + p->PacketLength += static_castPacketLength)>( len ); clif_send( p, p->PacketLength, bl, target ); } @@ -6895,42 +6789,33 @@ void clif_channel_msg(struct Channel *channel, const char *msg, unsigned long co /// 5 = HP (SP_HP) /// 7 = SP (SP_SP) /// ? = ignored -void clif_heal(int fd,int type,int val) { -#if PACKETVER < 20141022 - const int cmd = 0x13d; -#else - const int cmd = 0xa27; -#endif +void clif_heal( map_session_data& sd, int32 type, uint32 val ) { + PACKET_ZC_RECOVERY packet{}; - WFIFOHEAD(fd, packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOW(fd,2) = type; -#if PACKETVER < 20141022 - WFIFOW(fd,4) = min(val, INT16_MAX); -#else - WFIFOL(fd,4) = min(val, INT32_MAX); -#endif - WFIFOSET(fd, packet_len(cmd)); + packet.packetType = HEADER_ZC_RECOVERY; + packet.type = static_cast(type); + packet.amount = std::min( static_cast( val ), std::numeric_limits::max() ); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Displays resurrection effect (ZC_RESURRECTION). -/// 0148 .L .W +/// Displays resurrection effect. +/// 0148 .L .W (ZC_RESURRECTION) /// type: /// ignored -void clif_resurrection(struct block_list *bl,int type) -{ - unsigned char buf[16]; +void clif_resurrection( block_list& bl ){ + PACKET_ZC_RESURRECTION packet{}; - nullpo_retv(bl); + packet.packetType = HEADER_ZC_RESURRECTION; + packet.gid = bl.id; + packet.type = 0; - WBUFW(buf,0)=0x148; - WBUFL(buf,2)=bl->id; - WBUFW(buf,6)=0; + clif_send( &packet, sizeof( packet ), &bl, AREA ); - clif_send(buf,packet_len(0x148),bl,type==1 ? AREA : AREA_WOS); - if (disguised(bl)) - clif_spawn(bl); + if (disguised(&bl)) { + clif_spawn(&bl); + } } @@ -6971,19 +6856,15 @@ void clif_map_property(struct block_list *bl, enum map_property property, enum s clif_send(buf,packet_len(cmd),bl,t); } -/// Set the map type (ZC_NOTIFY_MAPPROPERTY2). -/// 01d6 .W -void clif_map_type(map_session_data* sd, enum map_type type) -{ - int fd; +/// Set the map type. +/// 01d6 .W (ZC_NOTIFY_MAPPROPERTY2) +void clif_map_type( map_session_data& sd, e_map_type type ){ + PACKET_ZC_NOTIFY_MAPPROPERTY2 packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_NOTIFY_MAPPROPERTY2; + packet.type = static_cast(type); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x1D6)); - WFIFOW(fd,0)=0x1D6; - WFIFOW(fd,2)=type; - WFIFOSET(fd,packet_len(0x1D6)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7032,22 +6913,23 @@ void clif_map_property_mapall(int map_idx, enum map_property property) clif_map_property( &bl, property, ALL_SAMEMAP ); } -/// Notifies the client about the result of a refine attempt (ZC_ACK_ITEMREFINING). -/// 0188 .W .W .W +/// Notifies the client about the result of a refine attempt. +/// 0188 .W .W .W (ZC_ACK_ITEMREFINING) /// result: /// 0 = success /// 1 = failure /// 2 = downgrade -void clif_refine(int fd, int fail, int index, int val) -{ - WFIFOHEAD(fd,packet_len(0x188)); - WFIFOW(fd,0)=0x188; - WFIFOW(fd,2)=fail; - WFIFOW(fd,4)=index+2; - WFIFOW(fd,6)=val; - WFIFOSET(fd,packet_len(0x188)); -} +/// 3 = failure (?) +void clif_refine( map_session_data& sd, uint16 index, e_ack_itemrefining result ){ + PACKET_ZC_ACK_ITEMREFINING packet{}; + packet.packetType = HEADER_ZC_ACK_ITEMREFINING; + packet.result = static_cast(result); + packet.index = client_index( index ); + packet.value = static_cast( sd.inventory.u.items_inventory[index].refine ); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); +} /// Notifies the client about the result of a weapon refine attempt (ZC_ACK_WEAPONREFINE). /// 0223 .L .W @@ -7057,7 +6939,7 @@ void clif_refine(int fd, int fail, int index, int val) /// 2 = "cannot upgrade %s until you level up the upgrade weapon skill" MsgStringTable[913] in rgb(255,200,200) /// 3 = "you lack the item %s to upgrade the weapon" MsgStringTable[914] in rgb(255,200,200) void clif_upgrademessage( map_session_data* sd, int result, t_itemid item_id ){ - struct PACKET_ZC_ACK_WEAPONREFINE p; + PACKET_ZC_ACK_WEAPONREFINE p = {}; p.packetType = HEADER_ZC_ACK_WEAPONREFINE; p.result = result; @@ -7083,15 +6965,19 @@ void clif_wis_message(map_session_data* sd, const char* nick, const char* mes, s map_session_data* ssd = map_nick2sd(nick, false); // If it is not a message from the server or a player from another map-server - if (ssd) { + if( ssd != nullptr ){ gmlvl = pc_get_group_level(ssd); } p->isAdmin = (gmlvl == 99) ? 1 : 0; -#endif #if PACKETVER_MAIN_NUM >= 20131204 || PACKETVER_RE_NUM >= 20131120 || defined(PACKETVER_ZERO) - p->senderGID = ssd->bl.id; + if( ssd != nullptr ){ + p->senderGID = ssd->bl.id; + }else{ + p->senderGID = 0; + } +#endif #endif clif_send( p, p->PacketLength, &sd->bl, SELF ); @@ -7100,31 +6986,22 @@ void clif_wis_message(map_session_data* sd, const char* nick, const char* mes, s /// Inform the player about the result of his whisper action /// 0098 .B (ZC_ACK_WHISPER). -/// 09df .B .L (ZC_ACK_WHISPER02). +/// 09df .B .L (ZC_ACK_WHISPER02). /// result: -/// 0 = success to send wisper +/// 0 = success to send whisper /// 1 = target character is not loged in /// 2 = ignored by target /// 3 = everyone ignored by target -void clif_wis_end(int fd, int result) -{ - map_session_data *sd = (session_isActive(fd) ? (map_session_data *)session[fd]->session_data : nullptr); -#if PACKETVER < 20131223 - const int cmd = 0x98; -#else - const int cmd = 0x9df; -#endif +void clif_wis_end( map_session_data& sd, e_ack_whisper result ){ + PACKET_ZC_ACK_WHISPER packet{}; - if (!sd) - return; - - WFIFOHEAD(fd,packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOB(fd,2) = (char)result; + packet.packetType = HEADER_ZC_ACK_WHISPER; + packet.result = static_cast(result); #if PACKETVER >= 20131223 - WFIFOL(fd,3) = sd->status.char_id; // GID/CCODE + packet.CID = sd.status.char_id; #endif - WFIFOSET(fd,packet_len(cmd)); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7208,24 +7085,20 @@ void clif_use_card(map_session_data *sd,int idx) } -/// Notifies the client about the result of item carding/composition (ZC_ACK_ITEMCOMPOSITION). -/// 017d .W .W .B +/// Notifies the client about the result of item carding/composition. +/// 017d .W .W .B (ZC_ACK_ITEMCOMPOSITION) /// result: /// 0 = success /// 1 = failure -void clif_insert_card(map_session_data *sd,int idx_equip,int idx_card,int flag) -{ - int fd; +void clif_insert_card( map_session_data& sd, int32 idx_equip, int32 idx_card, bool failure ){ + PACKET_ZC_ACK_ITEMCOMPOSITION packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_ITEMCOMPOSITION; + packet.equipIndex = client_index( idx_equip ); + packet.cardIndex = client_index( idx_card ); + packet.result = failure; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x17d)); - WFIFOW(fd,0)=0x17d; - WFIFOW(fd,2)=idx_equip+2; - WFIFOW(fd,4)=idx_card+2; - WFIFOB(fd,6)=flag; - WFIFOSET(fd,packet_len(0x17d)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7258,27 +7131,26 @@ void clif_item_identify_list(map_session_data *sd) } -/// Notifies the client about the result of a item identify request (ZC_ACK_ITEMIDENTIFY). -/// 0179 .W .B -void clif_item_identified(map_session_data *sd,int idx,int flag) -{ - int fd; +/// Notifies the client about the result of a item identify request. +/// 0179 .W .B (ZC_ACK_ITEMIDENTIFY) +/// result: +/// 0 = success +/// 1 = failure +void clif_item_identified( map_session_data& sd, int32 idx, bool failure ){ + PACKET_ZC_ACK_ITEMIDENTIFY packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_ITEMIDENTIFY; + packet.index = client_index( idx ); + packet.result = failure; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x179)); - WFIFOW(fd, 0)=0x179; - WFIFOW(fd, 2)=idx+2; - WFIFOB(fd, 4)=flag; - WFIFOSET(fd,packet_len(0x179)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } /// Presents a list of items that can be repaired. /// 01fc .W { .W .W .B .W .W .W .W }* (ZC_REPAIRITEMLIST) void clif_item_repair_list( map_session_data& sd, map_session_data& dstsd, uint16 lv ){ - PACKET_ZC_REPAIRITEMLIST* p = (PACKET_ZC_REPAIRITEMLIST*)packet_buffer; + PACKET_ZC_REPAIRITEMLIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_REPAIRITEMLIST; p->packetLength = sizeof( *p ); @@ -7291,7 +7163,8 @@ void clif_item_repair_list( map_session_data& sd, map_session_data& dstsd, uint1 p->items[c].itemId = client_nameid( dstsd.inventory.u.items_inventory[i].nameid ); p->items[c].refine = dstsd.inventory.u.items_inventory[i].refine; clif_addcards( &p->items[c].slot, &dstsd.inventory.u.items_inventory[i] ); - p->packetLength += sizeof( p->items[0] ); + + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); c++; } } @@ -7308,86 +7181,79 @@ void clif_item_repair_list( map_session_data& sd, map_session_data& dstsd, uint1 } -/// Notifies the client about the result of a item repair request (ZC_ACK_ITEMREPAIR). -/// 01fe .W .B +/// Notifies the client about the result of a item repair request. +/// 01fe .W .B (ZC_ACK_ITEMREPAIR) /// index: /// ignored (inventory index) /// result: /// 0 = Item repair success. /// 1 = Item repair failure. -void clif_item_repaireffect(map_session_data *sd,int idx,int flag) -{ - int fd; +void clif_item_repaireffect( map_session_data& sd, int32 idx, bool failure ){ + PACKET_ZC_ACK_ITEMREPAIR packet{}; - nullpo_retv(sd); - - fd = sd->fd; - - WFIFOHEAD(fd,packet_len(0x1fe)); - WFIFOW(fd, 0)=0x1fe; - WFIFOW(fd, 2)=idx+2; - WFIFOB(fd, 4)=flag; - WFIFOSET(fd,packet_len(0x1fe)); + packet.packetType = HEADER_ZC_ACK_ITEMREPAIR; + packet.index = client_index( idx ); + packet.result = failure; + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Displays a message, that an equipment got damaged (ZC_EQUIPITEM_DAMAGED). -/// 02bb .W .L -void clif_item_damaged(map_session_data* sd, unsigned short position) -{ - int fd = sd->fd; +/// Displays a message, that an equipment got damaged. +/// 02bb .W .L (ZC_EQUIPITEM_DAMAGED) +void clif_item_damaged( map_session_data& sd, uint16 position ){ + PACKET_ZC_EQUIPITEM_DAMAGED packet{}; - WFIFOHEAD(fd,packet_len(0x2bb)); - WFIFOW(fd,0) = 0x2bb; - WFIFOW(fd,2) = position; - WFIFOL(fd,4) = sd->bl.id; // TODO: the packet seems to be sent to other people as well, probably party and/or guild. - WFIFOSET(fd,packet_len(0x2bb)); + packet.packetType = HEADER_ZC_EQUIPITEM_DAMAGED; + packet.equipLocation = position; + packet.GID = sd.bl.id; + + // TODO: the packet seems to be sent to other people as well, probably party and/or guild. + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } /// Presents a list of weapon items that can be refined [Taken from jAthena] (ZC_NOTIFY_WEAPONITEMLIST). /// 0221 .W { .W .W .B .W .W .W .W }* -void clif_item_refine_list( map_session_data *sd ){ - nullpo_retv( sd ); - - PACKET_ZC_NOTIFY_WEAPONITEMLIST *p = (PACKET_ZC_NOTIFY_WEAPONITEMLIST *)packet_buffer; +void clif_item_refine_list( map_session_data& sd ){ + PACKET_ZC_NOTIFY_WEAPONITEMLIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_NOTIFY_WEAPONITEMLIST; p->packetLength = sizeof( *p ); - uint16 skill_lv = pc_checkskill( sd, WS_WEAPONREFINE ); + uint16 skill_lv = pc_checkskill( &sd, WS_WEAPONREFINE ); int refine_item[MAX_WEAPON_LEVEL]; - refine_item[0] = pc_search_inventory( sd, ITEMID_PHRACON ); - refine_item[1] = pc_search_inventory( sd, ITEMID_EMVERETARCON ); - refine_item[2] = refine_item[3] = pc_search_inventory( sd, ITEMID_ORIDECON ); + refine_item[0] = pc_search_inventory( &sd, ITEMID_PHRACON ); + refine_item[1] = pc_search_inventory( &sd, ITEMID_EMVERETARCON ); + refine_item[2] = refine_item[3] = pc_search_inventory( &sd, ITEMID_ORIDECON ); #ifdef RENEWAL refine_item[4] = -1; #endif int count = 0; for( int i = 0; i < MAX_INVENTORY; i++ ){ - if( sd->inventory.u.items_inventory[i].nameid > 0 && sd->inventory.u.items_inventory[i].refine < skill_lv && - sd->inventory_data[i] != nullptr && sd->inventory_data[i]->type == IT_WEAPON && - sd->inventory.u.items_inventory[i].identify && sd->inventory_data[i]->weapon_level >= 1 && - refine_item[sd->inventory_data[i]->weapon_level - 1] != -1 && !( sd->inventory.u.items_inventory[i].equip & EQP_ARMS ) ){ + if( sd.inventory.u.items_inventory[i].nameid > 0 && sd.inventory.u.items_inventory[i].refine < skill_lv && + sd.inventory_data[i] != nullptr && sd.inventory_data[i]->type == IT_WEAPON && + sd.inventory.u.items_inventory[i].identify && sd.inventory_data[i]->weapon_level >= 1 && + refine_item[sd.inventory_data[i]->weapon_level - 1] != -1 && !( sd.inventory.u.items_inventory[i].equip & EQP_ARMS ) ){ p->items[count].index = client_index( i ); - p->items[count].itemId = client_nameid( sd->inventory.u.items_inventory[i].nameid ); - p->items[count].refine = sd->inventory.u.items_inventory[i].refine; - clif_addcards( &p->items[count].slot, &sd->inventory.u.items_inventory[i] ); - p->packetLength += sizeof( p->items[0] ); + p->items[count].itemId = client_nameid( sd.inventory.u.items_inventory[i].nameid ); + p->items[count].refine = sd.inventory.u.items_inventory[i].refine; + clif_addcards( &p->items[count].slot, &sd.inventory.u.items_inventory[i] ); + + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); count++; } } - clif_send( p, p->packetLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd.bl, SELF ); if( count > 0 ){ - sd->menuskill_id = WS_WEAPONREFINE; - sd->menuskill_val = skill_lv; + sd.menuskill_id = WS_WEAPONREFINE; + sd.menuskill_val = skill_lv; } } @@ -7397,7 +7263,7 @@ void clif_item_refine_list( map_session_data *sd ){ void clif_item_skill( map_session_data *sd, uint16 skill_id, uint16 skill_lv ){ nullpo_retv( sd ); - struct PACKET_ZC_AUTORUN_SKILL p; + PACKET_ZC_AUTORUN_SKILL p = {}; p.packetType = HEADER_ZC_AUTORUN_SKILL; p.skill_id = skill_id; @@ -7429,7 +7295,7 @@ void clif_cart_additem( map_session_data *sd, int n, int amount ){ return; } - struct PACKET_ZC_ADD_ITEM_TO_CART p; + PACKET_ZC_ADD_ITEM_TO_CART p = {}; p.packetType = HEADER_ZC_ADD_ITEM_TO_CART; p.index = client_index( n ); @@ -7452,30 +7318,24 @@ void clif_cart_additem( map_session_data *sd, int n, int amount ){ clif_send( &p, sizeof( p ), &sd->bl, SELF ); } -// [Ind/Hercules] - Data Thanks to Yommy (ZC_ACK_ADDITEM_TO_CART) -/* Acknowledge an item have been added to cart - * 012c B - * result : - * 0 = ADDITEM_TO_CART_FAIL_WEIGHT - * 1 = ADDITEM_TO_CART_FAIL_COUNT - */ -void clif_cart_additem_ack(map_session_data *sd, uint8 flag) -{ - int fd; - unsigned char *buf; - nullpo_retv(sd); +/// Acknowledge an item have been added to cart +/// 012c .B (ZC_ACK_ADDITEM_TO_CART) +/// result: +/// 0 = ADDITEM_TO_CART_FAIL_WEIGHT +/// 1 = ADDITEM_TO_CART_FAIL_COUNT +void clif_cart_additem_ack( map_session_data& sd, e_ack_additem_to_cart flag ){ + PACKET_ZC_ACK_ADDITEM_TO_CART packet{}; - fd = sd->fd; - buf = WFIFOP(fd,0); - WBUFW(buf,0) = 0x12c; - WBUFB(buf,2) = flag; - clif_send(buf,packet_len(0x12c),&sd->bl,SELF); + packet.packetType = HEADER_ZC_ACK_ADDITEM_TO_CART; + packet.result = static_cast(flag); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } // 09B7 (ZC_ACK_OPEN_BANKING) void clif_bank_open( map_session_data& sd ){ #if PACKETVER >= 20130717 - struct PACKET_ZC_ACK_OPEN_BANKING p = {}; + PACKET_ZC_ACK_OPEN_BANKING p = {}; p.packetType = HEADER_ZC_ACK_OPEN_BANKING; p.unknown = 0; @@ -7490,7 +7350,7 @@ void clif_bank_open( map_session_data& sd ){ */ void clif_parse_BankOpen(int fd, map_session_data* sd) { #if PACKETVER >= 20130717 - PACKET_CZ_REQ_OPEN_BANKING* p = (PACKET_CZ_REQ_OPEN_BANKING*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_OPEN_BANKING* p = reinterpret_cast( RFIFOP( fd, 0 ) ); //TODO check if preventing trade or stuff like that //also mark something in case char ain't available for saving, should we check now ? @@ -7518,7 +7378,7 @@ void clif_parse_BankOpen(int fd, map_session_data* sd) { // 09B9 (ZC_ACK_CLOSE_BANKING) void clif_bank_close( map_session_data& sd ){ #if PACKETVER >= 20130717 - struct PACKET_ZC_ACK_CLOSE_BANKING p = {}; + PACKET_ZC_ACK_CLOSE_BANKING p = {}; p.packetType = HEADER_ZC_ACK_CLOSE_BANKING; p.unknown = 0; @@ -7533,7 +7393,7 @@ void clif_bank_close( map_session_data& sd ){ */ void clif_parse_BankClose(int fd, map_session_data* sd) { #if PACKETVER >= 20130717 - PACKET_CZ_REQ_CLOSE_BANKING* p = (PACKET_CZ_REQ_CLOSE_BANKING*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_CLOSE_BANKING* p = reinterpret_cast( RFIFOP( fd, 0 ) ); nullpo_retv(sd); if( !battle_config.feature_banking ) { @@ -7553,7 +7413,7 @@ void clif_parse_BankClose(int fd, map_session_data* sd) { */ void clif_Bank_Check( map_session_data& sd ){ #if PACKETVER >= 20130717 - struct PACKET_ZC_BANKING_CHECK p = {}; + PACKET_ZC_BANKING_CHECK p = {}; p.packetType = HEADER_ZC_BANKING_CHECK; p.money = sd.bank_vault; @@ -7569,7 +7429,7 @@ void clif_Bank_Check( map_session_data& sd ){ */ void clif_parse_BankCheck(int fd, map_session_data* sd) { #if PACKETVER >= 20130717 - PACKET_CZ_REQ_BANKING_CHECK* p = (PACKET_CZ_REQ_BANKING_CHECK*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_BANKING_CHECK* p = reinterpret_cast( RFIFOP( fd, 0 ) ); nullpo_retv(sd); @@ -7594,7 +7454,7 @@ void clif_parse_BankCheck(int fd, map_session_data* sd) { */ void clif_bank_deposit( map_session_data& sd, enum e_BANKING_DEPOSIT_ACK reason ){ #if PACKETVER >= 20130717 - struct PACKET_ZC_ACK_BANKING_DEPOSIT p = {}; + PACKET_ZC_ACK_BANKING_DEPOSIT p = {}; p.packetType = HEADER_ZC_ACK_BANKING_DEPOSIT; p.money = sd.bank_vault; @@ -7612,7 +7472,7 @@ void clif_bank_deposit( map_session_data& sd, enum e_BANKING_DEPOSIT_ACK reason */ void clif_parse_BankDeposit(int fd, map_session_data* sd) { #if PACKETVER >= 20130717 - PACKET_CZ_REQ_BANKING_DEPOSIT* p = (PACKET_CZ_REQ_BANKING_DEPOSIT*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_BANKING_DEPOSIT* p = reinterpret_cast( RFIFOP( fd, 0 ) ); nullpo_retv(sd); if( !battle_config.feature_banking ) { @@ -7638,7 +7498,7 @@ void clif_parse_BankDeposit(int fd, map_session_data* sd) { */ void clif_bank_withdraw( map_session_data& sd, enum e_BANKING_WITHDRAW_ACK reason ){ #if PACKETVER >= 20130717 - struct PACKET_ZC_ACK_BANKING_WITHDRAW p = {}; + PACKET_ZC_ACK_BANKING_WITHDRAW p = {}; p.packetType = HEADER_ZC_ACK_BANKING_WITHDRAW; p.reason = reason; @@ -7655,7 +7515,7 @@ void clif_bank_withdraw( map_session_data& sd, enum e_BANKING_WITHDRAW_ACK reaso */ void clif_parse_BankWithdraw(int fd, map_session_data* sd) { #if PACKETVER >= 20130717 - PACKET_CZ_REQ_BANKING_WITHDRAW* p = (PACKET_CZ_REQ_BANKING_WITHDRAW*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_BANKING_WITHDRAW* p = reinterpret_cast( RFIFOP( fd, 0 ) ); nullpo_retv(sd); if( !battle_config.feature_banking ) { @@ -7675,39 +7535,30 @@ void clif_parse_BankWithdraw(int fd, map_session_data* sd) { #endif } -/// Deletes an item from character's cart (ZC_DELETE_ITEM_FROM_CART). -/// 0125 .W .L -void clif_cart_delitem(map_session_data *sd,int n,int amount) -{ - int fd; +/// Deletes an item from character's cart. +/// 0125 .W .L (ZC_DELETE_ITEM_FROM_CART) +void clif_cart_delitem( map_session_data& sd, int32 index, int32 amount ){ + PACKET_ZC_DELETE_ITEM_FROM_CART packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_DELETE_ITEM_FROM_CART; + packet.index = client_index( index ); + packet.amount = amount; - fd=sd->fd; - - WFIFOHEAD(fd,packet_len(0x125)); - WFIFOW(fd,0)=0x125; - WFIFOW(fd,2)=n+2; - WFIFOL(fd,4)=amount; - WFIFOSET(fd,packet_len(0x125)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Opens the shop creation menu (ZC_OPENSTORE). -/// 012d .W +/// Opens the shop creation menu. +/// 012d .W (ZC_OPENSTORE) /// num: /// number of allowed item slots -void clif_openvendingreq(map_session_data* sd, int num) -{ - int fd; +void clif_openvendingreq( map_session_data& sd, uint16 num ){ + PACKET_ZC_OPENSTORE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_OPENSTORE; + packet.num = num; - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x12d)); - WFIFOW(fd,0) = 0x12d; - WFIFOW(fd,2) = num; - WFIFOSET(fd,packet_len(0x12d)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7719,7 +7570,7 @@ void clif_showvendingboard( map_session_data& sd, enum send_target target, struc target = AREA_WOS; } - struct PACKET_ZC_STORE_ENTRY p = {}; + PACKET_ZC_STORE_ENTRY p = {}; p.packetType = HEADER_ZC_STORE_ENTRY; p.makerAID = sd.status.account_id; @@ -7752,61 +7603,55 @@ void clif_closevendingboard(struct block_list* bl, int fd) /// Sends a list of items in a shop. /// R 0133 .W .L { .L .W .W .B .W .B .B .B .W .W .W .W }* (ZC_PC_PURCHASE_ITEMLIST_FROMMC) /// R 0800 .W .L .L { .L .W .W .B .W .B .B .B .W .W .W .W }* (ZC_PC_PURCHASE_ITEMLIST_FROMMC2) -void clif_vendinglist( map_session_data* sd, map_session_data* vsd ){ - nullpo_retv( sd ); - nullpo_retv( vsd ); - nullpo_retv( vsd->vending ); - - int fd = sd->fd; - - if( !session_isActive( fd ) ){ - return; - } - - int len = sizeof( struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC ) + vsd->vend_num * sizeof( struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub ); - - WFIFOHEAD( fd, len ); - - struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC* p = (struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC*)WFIFOP( fd, 0 ); +void clif_vendinglist( map_session_data& sd, map_session_data& vsd ){ + PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_PC_PURCHASE_ITEMLIST_FROMMC; - p->packetLength = len; - p->AID = vsd->status.account_id; + p->packetLength = sizeof( *p ); + p->AID = vsd.status.account_id; #if PACKETVER >= 20100105 - p->venderId = vsd->vender_id; + p->venderId = vsd.vender_id; #endif - for( int i = 0; i < vsd->vend_num; i++ ){ - int index = vsd->vending[i].index; - struct item_data* data = itemdb_search( vsd->cart.u.items_cart[index].nameid ); + for( int i = 0, count = 0; i < vsd.vend_num; i++ ){ + PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub& entry = p->items[count]; + int index = vsd.vending[i].index; + struct item_data* data = itemdb_search( vsd.cart.u.items_cart[index].nameid ); - p->items[i].price = vsd->vending[i].value; - p->items[i].amount = vsd->vending[i].amount; - p->items[i].index = client_index( index ); - p->items[i].itemType = itemtype( vsd->cart.u.items_cart[index].nameid ); - p->items[i].itemId = client_nameid( vsd->cart.u.items_cart[index].nameid ); - p->items[i].identified = vsd->cart.u.items_cart[index].identify; - p->items[i].damaged = vsd->cart.u.items_cart[index].attribute; - p->items[i].refine = vsd->cart.u.items_cart[index].refine; - clif_addcards( &p->items[i].slot, &vsd->cart.u.items_cart[index] ); + if( data == nullptr ){ + continue; + } + + entry.price = vsd.vending[i].value; + entry.amount = vsd.vending[i].amount; + entry.index = client_index( index ); + entry.itemType = itemtype( vsd.cart.u.items_cart[index].nameid ); + entry.itemId = client_nameid( vsd.cart.u.items_cart[index].nameid ); + entry.identified = vsd.cart.u.items_cart[index].identify; + entry.damaged = vsd.cart.u.items_cart[index].attribute; + entry.refine = vsd.cart.u.items_cart[index].refine; + clif_addcards( &entry.slot, &vsd.cart.u.items_cart[index] ); #if PACKETVER >= 20150226 - clif_add_random_options( p->items[i].option_data, vsd->cart.u.items_cart[index] ); + clif_add_random_options( entry.option_data, vsd.cart.u.items_cart[index] ); #if PACKETVER >= 20160921 - p->items[i].location = pc_equippoint_sub( sd, data ); - p->items[i].viewSprite = data->look; + entry.location = pc_equippoint_sub( &sd, data ); + entry.viewSprite = data->look; #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - p->items[i].grade = vsd->cart.u.items_cart[index].enchantgrade; + entry.grade = vsd.cart.u.items_cart[index].enchantgrade; #endif #endif #endif + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); + count++; } - WFIFOSET( fd, len ); + clif_send( p, p->packetLength, &sd.bl, SELF ); } -/// Shop purchase failure (ZC_PC_PURCHASE_RESULT_FROMMC). -/// 0135 .W .W .B +/// Shop purchase failure. +/// 0135 .W .W .B (ZC_PC_PURCHASE_RESULT_FROMMC) /// result: /// 0 = success /// 1 = not enough zeny @@ -7815,114 +7660,87 @@ void clif_vendinglist( map_session_data* sd, map_session_data* vsd ){ /// 5 = "cannot use an npc shop while in a trade" /// 6 = Because the store information was incorrect the item was not purchased. /// 7 = No sales information. -void clif_buyvending(map_session_data* sd, int index, int amount, int fail) -{ - int fd; +void clif_buyvending( map_session_data& sd, uint16 index, uint16 amount, e_pc_purchase_result_frommc result ){ + PACKET_ZC_PC_PURCHASE_RESULT_FROMMC packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_PC_PURCHASE_RESULT_FROMMC; + packet.index = client_index( index ); + packet.amount = amount; + packet.result = static_cast(result); - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x135)); - WFIFOW(fd,0) = 0x135; - WFIFOW(fd,2) = index+2; - WFIFOW(fd,4) = amount; - WFIFOB(fd,6) = fail; - WFIFOSET(fd,packet_len(0x135)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Show's vending player its list of items for sale (ZC_ACK_OPENSTORE2). -/// 0a28 .B -/// result: -/// 0 = Successed -/// 1 = Failed -void clif_openvending_ack(map_session_data* sd, int result) -{ - int fd; - nullpo_retv(sd); +/// Show's vending player its list of items for sale. +/// 0a28 .B (ZC_ACK_OPENSTORE2) +void clif_openvending_ack( map_session_data& sd, e_ack_openstore2 result ){ +#if PACKETVER >= 20141022 + PACKET_ZC_ACK_OPENSTORE2 packet{}; - fd = sd->fd; - WFIFOHEAD(fd, 3); - WFIFOW(fd,0) = 0xa28; - WFIFOB(fd,2) = result; - WFIFOSET(fd, 3); + packet.packetType = HEADER_ZC_ACK_OPENSTORE2; + packet.result = static_cast(result); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); +#endif } /// Shop creation success. /// 0136 .W .L { .L .W .W .B .W .B .B .B .W .W .W .W }* (ZC_PC_PURCHASE_MYITEMLIST) -void clif_openvending( map_session_data* sd, int id, struct s_vending* vending ){ - nullpo_retv( sd ); - nullpo_retv( vending ); - - int fd = sd->fd; - - if( !session_isActive( fd ) ){ - return; - } - - int len = sizeof( struct PACKET_ZC_PC_PURCHASE_MYITEMLIST ) + sd->vend_num * sizeof( struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub ); - - WFIFOHEAD( fd, len ); - - struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p = (struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *)WFIFOP( fd, 0 ); +void clif_openvending( map_session_data& sd ){ + PACKET_ZC_PC_PURCHASE_MYITEMLIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_PC_PURCHASE_MYITEMLIST; - p->packetLength = len; - p->AID = id; + p->packetLength = sizeof( *p ); + p->AID = sd.bl.id; - for( int i = 0; i < sd->vend_num; i++ ) { - int index = vending[i].index; + for( int i = 0; i < sd.vend_num; i++ ) { + PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub& entry = p->items[i]; + int16 index = sd.vending[i].index; - p->items[i].price = vending[i].value; - p->items[i].index = client_index( index ); - p->items[i].amount = vending[i].amount; - p->items[i].itemType = itemtype( sd->cart.u.items_cart[index].nameid ); - p->items[i].itemId = client_nameid( sd->cart.u.items_cart[index].nameid ); - p->items[i].identified = sd->cart.u.items_cart[index].identify; - p->items[i].damaged = sd->cart.u.items_cart[index].attribute; - p->items[i].refine = sd->cart.u.items_cart[index].refine; - clif_addcards( &p->items[i].slot, &sd->cart.u.items_cart[index] ); + entry.price = sd.vending[i].value; + entry.index = client_index( index ); + entry.amount = sd.vending[i].amount; + entry.itemType = itemtype( sd.cart.u.items_cart[index].nameid ); + entry.itemId = client_nameid( sd.cart.u.items_cart[index].nameid ); + entry.identified = sd.cart.u.items_cart[index].identify; + entry.damaged = sd.cart.u.items_cart[index].attribute; + entry.refine = sd.cart.u.items_cart[index].refine; + clif_addcards( &entry.slot, &sd.cart.u.items_cart[index] ); #if PACKETVER >= 20150226 - clif_add_random_options( p->items[i].option_data, sd->cart.u.items_cart[index] ); + clif_add_random_options( entry.option_data, sd.cart.u.items_cart[index] ); #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - p->items[i].grade = sd->cart.u.items_cart[index].enchantgrade; + entry.grade = sd.cart.u.items_cart[index].enchantgrade; #endif #endif + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); } - WFIFOSET( fd, len ); + clif_send( p, p->packetLength, &sd.bl, SELF ); -#if PACKETVER >= 20141022 - /// 0 = Successed - /// 1 = Failed - clif_openvending_ack( sd, 0 ); -#endif + clif_openvending_ack( sd, OPENSTORE2_SUCCESS ); } /// Inform merchant that someone has bought an item. -/// 0137 .W .W (ZC_DELETEITEM_FROM_MCSTORE). -/// 09e5 .W .W .L .L .L (ZC_DELETEITEM_FROM_MCSTORE2). -void clif_vendingreport(map_session_data* sd, int index, int amount, uint32 char_id, int zeny) { -#if PACKETVER < 20141016 // TODO : not sure for client date [Napster] - const int cmd = 0x137; -#else - const int cmd = 0x9e5; -#endif - int fd = sd->fd; +/// 0137 .W .W (ZC_DELETEITEM_FROM_MCSTORE) +/// 09e5 .W .W .L .L .L (ZC_DELETEITEM_FROM_MCSTORE2) +void clif_vendingreport( map_session_data& sd, uint16 index, uint16 amount, uint32 char_id, int32 zeny ){ + PACKET_ZC_DELETEITEM_FROM_MCSTORE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_DELETEITEM_FROM_MCSTORE; + packet.index = client_index( index ); + packet.amount = amount; - WFIFOHEAD(fd,packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOW(fd,2) = index+2; - WFIFOW(fd,4) = amount; +// TODO : not sure for client date [Napster] #if PACKETVER >= 20141016 - WFIFOL(fd,6) = char_id; // GID - WFIFOL(fd,10) = (int)time(nullptr); // Date - WFIFOL(fd,14) = zeny; // zeny + packet.buyerCID = char_id; + packet.date = client_tick( time(nullptr) ); + packet.zeny = zeny; #endif - WFIFOSET(fd,packet_len(cmd)); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7935,7 +7753,7 @@ void clif_vendingreport(map_session_data* sd, int index, int amount, uint32 char /// 3 = cannot organize parties on this map /// ? = nothing void clif_party_created( map_session_data& sd, int result ){ - struct PACKET_ZC_ACK_MAKE_GROUP p = {}; + PACKET_ZC_ACK_MAKE_GROUP p = {}; p.PacketType = HEADER_ZC_ACK_MAKE_GROUP; p.result = result; @@ -7961,7 +7779,7 @@ void clif_party_member_info( struct party_data& party, map_session_data& sd ){ return; } - struct PACKET_ZC_ADD_MEMBER_TO_GROUP p = {}; + PACKET_ZC_ADD_MEMBER_TO_GROUP p = {}; p.packetType = partymemberinfo; p.AID = sd.status.account_id; @@ -8013,7 +7831,7 @@ void clif_party_info( struct party_data& party, map_session_data* sd ){ target = SELF; } - struct PACKET_ZC_GROUP_LIST* p = (struct PACKET_ZC_GROUP_LIST*)packet_buffer; + PACKET_ZC_GROUP_LIST* p = reinterpret_cast( packet_buffer ); p->packetType = partyinfo; p->packetLen = sizeof( *p ); @@ -8026,7 +7844,7 @@ void clif_party_info( struct party_data& party, map_session_data* sd ){ continue; } - struct PACKET_ZC_GROUP_LIST_SUB& member = p->members[c]; + PACKET_ZC_GROUP_LIST_SUB& member = p->members[c]; member.AID = m.account_id; #if PACKETVER >= 20171207 @@ -8041,8 +7859,8 @@ void clif_party_info( struct party_data& party, map_session_data* sd ){ member.baseLevel = m.lv; #endif + p->packetLen += static_castpacketLen)>( sizeof( member ) ); c++; - p->packetLen += sizeof( member ); } clif_send( p, p->packetLen, &sd->bl, target ); @@ -8056,7 +7874,7 @@ void clif_party_info( struct party_data& party, map_session_data* sd ){ /// 1 = auto-deny party invites void clif_partyinvitationstate( map_session_data& sd ){ #if PACKETVER_MAIN_NUM >= 20070911 || defined(PACKETVER_RE) || PACKETVER_AD_NUM >= 20070911 || PACKETVER_SAK_NUM >= 20070904 || defined(PACKETVER_ZERO) - struct PACKET_ZC_PARTY_CONFIG p = {}; + PACKET_ZC_PARTY_CONFIG p = {}; p.packetType = HEADER_ZC_PARTY_CONFIG; p.denyPartyInvites = sd.status.disable_partyinvite; @@ -8076,7 +7894,7 @@ void clif_party_invite( map_session_data& sd, map_session_data& tsd ){ return; } - struct PACKET_ZC_PARTY_JOIN_REQ p = {}; + PACKET_ZC_PARTY_JOIN_REQ p = {}; p.PacketType = HEADER_ZC_PARTY_JOIN_REQ; p.GRID = party->party.party_id; @@ -8108,7 +7926,7 @@ void clif_party_invite_reply( map_session_data& sd, const char* nick, enum e_par } #endif - struct PACKET_ZC_PARTY_JOIN_REQ_ACK p = {}; + PACKET_ZC_PARTY_JOIN_REQ_ACK p = {}; p.PacketType = HEADER_ZC_PARTY_JOIN_REQ_ACK; safestrncpy( p.characterName, nick, sizeof( p.characterName ) ); @@ -8168,7 +7986,7 @@ void clif_party_option(struct party_data *p,map_session_data *sd,int flag) * @param target Send target **/ void clif_party_withdraw( map_session_data& sd, uint32 account_id, const char* name, enum e_party_member_withdraw result, enum send_target target ){ - struct PACKET_ZC_DELETE_MEMBER_FROM_GROUP p = {}; + PACKET_ZC_DELETE_MEMBER_FROM_GROUP p = {}; p.PacketType = HEADER_ZC_DELETE_MEMBER_FROM_GROUP; p.AID = account_id; @@ -8193,12 +8011,13 @@ void clif_party_message( struct party_data& party, uint32 account_id, const char len = CHAT_SIZE_MAX; } - PACKET_ZC_NOTIFY_CHAT_PARTY* p = (PACKET_ZC_NOTIFY_CHAT_PARTY*)packet_buffer; + PACKET_ZC_NOTIFY_CHAT_PARTY* p = reinterpret_cast( packet_buffer ); p->PacketType = HEADER_ZC_NOTIFY_CHAT_PARTY; - p->PacketLength = static_castPacketLength)>( sizeof( *p ) + len ); + p->PacketLength = sizeof( *p ); p->AID = account_id; safestrncpy( p->chatMsg, mes, len ); + p->PacketLength += static_castPacketLength)>( len ); clif_send( p, p->PacketLength, &sd->bl, PARTY ); } @@ -8207,7 +8026,7 @@ void clif_party_message( struct party_data& party, uint32 account_id, const char /// Updates the position of a party member on the minimap (ZC_NOTIFY_POSITION_TO_GROUPM). /// 0107 .L .W .W void clif_party_xy( map_session_data& sd ){ - struct PACKET_ZC_NOTIFY_POSITION_TO_GROUPM p = {}; + PACKET_ZC_NOTIFY_POSITION_TO_GROUPM p = {}; p.PacketType = HEADER_ZC_NOTIFY_POSITION_TO_GROUPM; p.AID = sd.status.account_id; @@ -8221,7 +8040,7 @@ void clif_party_xy( map_session_data& sd ){ * Sends x/y dot to a single fd. [Skotlex] *------------------------------------------*/ void clif_party_xy_single( map_session_data& sd, map_session_data& tsd ){ - struct PACKET_ZC_NOTIFY_POSITION_TO_GROUPM p = {}; + PACKET_ZC_NOTIFY_POSITION_TO_GROUPM p = {}; p.PacketType = HEADER_ZC_NOTIFY_POSITION_TO_GROUPM; p.AID = sd.status.account_id; @@ -8235,7 +8054,7 @@ void clif_party_xy_single( map_session_data& sd, map_session_data& tsd ){ /// 0106 .L .W .W (ZC_NOTIFY_HP_TO_GROUPM) /// 080e .L .L .L (ZC_NOTIFY_HP_TO_GROUPM_R2) void clif_party_hp( map_session_data& sd ){ - struct PACKET_ZC_NOTIFY_HP_TO_GROUPM p = {}; + PACKET_ZC_NOTIFY_HP_TO_GROUPM p = {}; p.PacketType = HEADER_ZC_NOTIFY_HP_TO_GROUPM; p.AID = sd.status.account_id; @@ -8260,7 +8079,7 @@ void clif_party_hp( map_session_data& sd ){ /// 0AB2 .L .B void clif_party_dead( map_session_data& sd ){ #if PACKETVER_MAIN_NUM >= 20170524 || PACKETVER_RE_NUM >= 20170502 || defined(PACKETVER_ZERO) - struct PACKET_ZC_GROUP_ISALIVE p = {}; + PACKET_ZC_GROUP_ISALIVE p = {}; p.packetType = HEADER_ZC_GROUP_ISALIVE; p.AID = sd.status.account_id; @@ -8274,7 +8093,7 @@ void clif_party_dead( map_session_data& sd ){ /// 0abd .L .W .W void clif_party_job_and_level( map_session_data& sd ){ #if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO) - struct PACKET_ZC_NOTIFY_MEMBERINFO_TO_GROUPM p = {}; + PACKET_ZC_NOTIFY_MEMBERINFO_TO_GROUPM p = {}; p.PacketType = HEADER_ZC_NOTIFY_MEMBERINFO_TO_GROUPM; p.AID = sd.status.account_id; @@ -8289,7 +8108,7 @@ void clif_party_job_and_level( map_session_data& sd ){ * Sends HP bar to a single fd. [Skotlex] *------------------------------------------*/ void clif_hpmeter_single( map_session_data& sd, uint32 id, uint32 hp, uint32 maxhp ){ - struct PACKET_ZC_NOTIFY_HP_TO_GROUPM p = {}; + PACKET_ZC_NOTIFY_HP_TO_GROUPM p = {}; p.PacketType = HEADER_ZC_NOTIFY_HP_TO_GROUPM; p.AID = id; @@ -8310,25 +8129,21 @@ void clif_hpmeter_single( map_session_data& sd, uint32 id, uint32 hp, uint32 max clif_send( &p, sizeof( p ), &sd.bl, SELF ); } -/// Notifies the client, that it's attack target is too far (ZC_ATTACK_FAILURE_FOR_DISTANCE). -/// 0139 .L .W .W .W .W .W -void clif_movetoattack(map_session_data *sd,struct block_list *bl) -{ - int fd; - nullpo_retv(sd); - nullpo_retv(bl); +/// Notifies the client, that it's attack target is too far. +/// 0139 .L .W .W .W .W .W (ZC_ATTACK_FAILURE_FOR_DISTANCE) +void clif_movetoattack( map_session_data& sd, block_list& bl ){ + PACKET_ZC_ATTACK_FAILURE_FOR_DISTANCE packet{}; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x139)); - WFIFOW(fd, 0)=0x139; - WFIFOL(fd, 2)=bl->id; - WFIFOW(fd, 6)=bl->x; - WFIFOW(fd, 8)=bl->y; - WFIFOW(fd,10)=sd->bl.x; - WFIFOW(fd,12)=sd->bl.y; - WFIFOW(fd,14)=sd->battle_status.rhw.range; - WFIFOSET(fd,packet_len(0x139)); + packet.PacketType = HEADER_ZC_ATTACK_FAILURE_FOR_DISTANCE; + packet.targetAID = bl.id; + packet.targetXPos = bl.x; + packet.targetYPos = bl.y; + packet.xPos = sd.bl.x; + packet.yPos = sd.bl.y; + packet.currentAttRange = sd.battle_status.rhw.range; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -8344,7 +8159,7 @@ void clif_produceeffect(map_session_data* sd,int flag, t_itemid nameid){ clif_solved_charname( sd->fd, sd->status.char_id, sd->status.name ); - struct PACKET_ZC_ACK_REQMAKINGITEM p; + PACKET_ZC_ACK_REQMAKINGITEM p = {}; p.packetType = HEADER_ZC_ACK_REQMAKINGITEM; p.result = flag; @@ -8354,36 +8169,28 @@ void clif_produceeffect(map_session_data* sd,int flag, t_itemid nameid){ } -/// Initiates the pet taming process (ZC_START_CAPTURE). -/// 019e -void clif_catch_process(map_session_data *sd) -{ - int fd; +/// Initiates the pet taming process. +/// 019e (ZC_START_CAPTURE) +void clif_catch_process( map_session_data& sd ){ + PACKET_ZC_START_CAPTURE packet{}; - nullpo_retv(sd); + packet.PacketType = HEADER_ZC_START_CAPTURE; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x19e)); - WFIFOW(fd,0)=0x19e; - WFIFOSET(fd,packet_len(0x19e)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Displays the result of a pet taming attempt (ZC_TRYCAPTURE_MONSTER). -/// 01a0 .B +/// Displays the result of a pet taming attempt. +/// 01a0 .B (ZC_TRYCAPTURE_MONSTER) /// 0 = failure /// 1 = success -void clif_pet_roulette(map_session_data *sd,int data) -{ - int fd; +void clif_pet_roulette( map_session_data& sd, bool success ){ + PACKET_ZC_TRYCAPTURE_MONSTER packet{}; - nullpo_retv(sd); + packet.PacketType = HEADER_ZC_TRYCAPTURE_MONSTER; + packet.result = success; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x1a0)); - WFIFOW(fd,0)=0x1a0; - WFIFOB(fd,2)=data; - WFIFOSET(fd,packet_len(0x1a0)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -8493,21 +8300,19 @@ void clif_pet_emotion(struct pet_data *pd,int param) } -/// Result of request to feed a pet (ZC_FEED_PET). -/// 01a3 .B .W +/// Result of request to feed a pet. +/// 01a3 .B .W (ZC_FEED_PET) /// result: /// 0 = failure /// 1 = success -void clif_pet_food( map_session_data *sd, int foodid,int fail ){ - nullpo_retv( sd ); +void clif_pet_food( map_session_data& sd, int32 foodid, bool success ){ + PACKET_ZC_FEED_PET packet{}; - struct PACKET_ZC_FEED_PET p; + packet.packetType = HEADER_ZC_FEED_PET; + packet.result = success; + packet.itemId = client_nameid( foodid ); - p.packetType = 0x1a3; - p.result = fail; - p.itemId = client_nameid( foodid ); - - clif_send( &p, sizeof( p ), &sd->bl, SELF ); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } /// Send pet auto feed info. @@ -8566,7 +8371,7 @@ void clif_autospell( map_session_data& sd, uint16 skill_lv ){ #endif #if PACKETVER_MAIN_NUM >= 20181128 || PACKETVER_RE_NUM >= 20181031 - PACKET_ZC_AUTOSPELLLIST* p = (PACKET_ZC_AUTOSPELLLIST*)packet_buffer; + PACKET_ZC_AUTOSPELLLIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_AUTOSPELLLIST; p->packetLength = sizeof( *p ); @@ -8575,7 +8380,7 @@ void clif_autospell( map_session_data& sd, uint16 skill_lv ){ for( const s_autospell_requirement& requirement : autospell_skills ){ if( skill_lv > requirement.required_autospell_skill_lv && pc_checkskill( &sd, requirement.skill_id ) ){ p->skills[count++] = requirement.skill_id; - p->packetLength += sizeof( p->skills[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->skills[0] ) ); } } @@ -8649,7 +8454,7 @@ void clif_devotion(struct block_list *src, map_session_data *tsd) void clif_spiritball( struct block_list *bl, struct block_list* target, enum send_target send_target ){ nullpo_retv( bl ); - struct PACKET_ZC_SPIRITS p = {}; + PACKET_ZC_SPIRITS p = {}; p.PacketType = HEADER_ZC_SPIRITS; p.AID = bl->id; @@ -8718,7 +8523,7 @@ void clif_mvp_effect(map_session_data *sd) /// MVP item reward message (ZC_MVP_GETTING_ITEM). /// 010a .W void clif_mvp_item( map_session_data *sd, t_itemid nameid ){ - struct PACKET_ZC_MVP_GETTING_ITEM p; + PACKET_ZC_MVP_GETTING_ITEM p = {}; p.packetType = HEADER_ZC_MVP_GETTING_ITEM; p.itemId = client_nameid( nameid ); @@ -8765,24 +8570,20 @@ void clif_mvp_noitem(map_session_data* sd) } -/// Guild creation result (ZC_RESULT_MAKE_GUILD). -/// 0167 .B +/// Guild creation result. +/// 0167 .B (ZC_RESULT_MAKE_GUILD) /// result: /// 0 = "Guild has been created." /// 1 = "You are already in a Guild." /// 2 = "That Guild Name already exists." /// 3 = "You need the neccessary item to create a Guild." -void clif_guild_created(map_session_data *sd,int flag) -{ - int fd; +void clif_guild_created( map_session_data& sd, int flag ){ + PACKET_ZC_RESULT_MAKE_GUILD p = {}; - nullpo_retv(sd); + p.packetType = HEADER_ZC_RESULT_MAKE_GUILD; + p.result = static_cast( flag ); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x167)); - WFIFOW(fd,0)=0x167; - WFIFOB(fd,2)=flag; - WFIFOSET(fd,packet_len(0x167)); + clif_send( &p, sizeof( p ), &sd.bl, SELF ); } @@ -8803,7 +8604,7 @@ void clif_guild_belonginfo( map_session_data& sd ){ return; } - struct PACKET_ZC_UPDATE_GDID p = {}; + PACKET_ZC_UPDATE_GDID p = {}; p.PacketType = HEADER_ZC_UPDATE_GDID; p.guildId = guild.guild_id; @@ -8925,7 +8726,7 @@ void clif_guild_basicinfo( map_session_data& sd ){ } const auto &guild = sd.guild->guild; - struct PACKET_ZC_GUILD_INFO p = {}; + PACKET_ZC_GUILD_INFO p = {}; p.PacketType = HEADER_ZC_GUILD_INFO; p.GDID = guild.guild_id; @@ -8997,7 +8798,7 @@ void clif_guild_memberlist( map_session_data& sd ){ } const auto &guild = sd.guild->guild; - struct PACKET_ZC_MEMBERMGR_INFO* p = (struct PACKET_ZC_MEMBERMGR_INFO*)packet_buffer; + PACKET_ZC_MEMBERMGR_INFO* p = reinterpret_cast( packet_buffer ); p->PacketType = HEADER_ZC_MEMBERMGR_INFO; p->packetLength = sizeof( *p ); @@ -9009,7 +8810,7 @@ void clif_guild_memberlist( map_session_data& sd ){ continue; } - struct GUILD_MEMBER_INFO& member_info = p->guildMemberInfo[c]; + GUILD_MEMBER_INFO& member_info = p->guildMemberInfo[c]; member_info.AID = member.account_id; member_info.GID = member.char_id; @@ -9031,8 +8832,8 @@ void clif_guild_memberlist( map_session_data& sd ){ safestrncpy( member_info.char_name, member.name, sizeof( member_info.char_name ) ); #endif + p->packetLength += static_castpacketLength)>( sizeof( member_info ) ); c++; - p->packetLength += sizeof( member_info ); } clif_send( p, p->packetLength, &sd.bl, SELF ); @@ -9093,8 +8894,8 @@ void clif_guild_positioninfolist(map_session_data *sd) } -/// Notifies clients in a guild about updated position information (ZC_ACK_CHANGE_GUILD_POSITIONINFO). -/// 0174 .W { .L .L .L .L .24B }* +/// Notifies clients in a guild about updated position information. +/// 0174 .W { .L .L .L .L .24B }* (ZC_ACK_CHANGE_GUILD_POSITIONINFO) /// mode: /// &0x01 = allow invite /// &0x10 = allow expel @@ -9122,8 +8923,8 @@ void clif_guild_positionchanged(const struct mmo_guild &g,int idx) } -/// Notifies clients in a guild about updated member position assignments (ZC_ACK_REQ_CHANGE_MEMBERS). -/// 0156 .W { .L .L .L }* +/// Notifies clients in a guild about updated member position assignments. +/// 0156 .W { .L .L .L }* (ZC_ACK_REQ_CHANGE_MEMBERS) void clif_guild_memberpositionchanged(const struct mmo_guild &g, int idx) { // FIXME: This packet is intended to update the clients after a @@ -9144,8 +8945,8 @@ void clif_guild_memberpositionchanged(const struct mmo_guild &g, int idx) } -/// Sends emblems bitmap data to the client that requested it (ZC_GUILD_EMBLEM_IMG). -/// 0152 .W .L .L .?B +/// Sends emblems bitmap data to the client that requested it. +/// 0152 .W .L .L .?B (ZC_GUILD_EMBLEM_IMG) void clif_guild_emblem(const map_session_data &sd, const struct mmo_guild &g) { int fd = sd.fd; @@ -9162,9 +8963,10 @@ void clif_guild_emblem(const map_session_data &sd, const struct mmo_guild &g) } -/// Sends update of the guild id/emblem id to everyone in the area (ZC_CHANGE_GUILD). -/// 01b4 .L .L .W -/// 0b47 .L .L .L +/// Sends update of the guild id/emblem id to everyone in the area. +/// 01b4 .L .L .W (ZC_CHANGE_GUILD) +/// 0b1f .L .L .L (ZC_NEW_EMBLEM_DOWNLOAD) +/// 0b47 .L .L .L (ZC_ACK_ADD_NEW_EMBLEM) void clif_guild_emblem_area(struct block_list* bl) { // TODO this packet doesn't force the update of ui components that have the emblem visible @@ -9180,137 +8982,145 @@ void clif_guild_emblem_area(struct block_list* bl) } -/// Sends guild skills (ZC_GUILD_SKILLINFO). -/// 0162 .W .W { .W .L .W .W .W .24B .B }* -void clif_guild_skillinfo(map_session_data* sd) -{ - int fd; - int i,c; +/// Sends guild skills. +/// 0162 .W .W { .W .L .W .W .W .24B .B }* (ZC_GUILD_SKILLINFO) +void clif_guild_skillinfo( map_session_data& sd ){ + auto& g = sd.guild; - nullpo_retv(sd); - auto &g = sd->guild; - if (!g) + if( g == nullptr ){ return; - - fd = sd->fd; - WFIFOHEAD(fd, 6 + MAX_GUILDSKILL*37); - WFIFOW(fd,0) = 0x0162; - WFIFOW(fd,4) = g->guild.skill_point; - for(i = 0, c = 0; i < MAX_GUILDSKILL; i++) - { - if(g->guild.skill[i].id > 0 && guild_check_skill_require(g->guild, g->guild.skill[i].id)) - { - int id = g->guild.skill[i].id; - int p = 6 + c*37; - WFIFOW(fd,p+0) = id; - WFIFOL(fd,p+2) = skill_get_inf(id); - WFIFOW(fd,p+6) = g->guild.skill[i].lv; - WFIFOW(fd,p+8) = skill_get_sp(id, g->guild.skill[i].lv); - WFIFOW(fd,p+10) = skill_get_range(id, g->guild.skill[i].lv); - safestrncpy(WFIFOCP(fd,p+12), skill_get_name(id), NAME_LENGTH); - WFIFOB(fd,p+36)= (g->guild.skill[i].lv < guild_skill_get_max(id) && sd == g->guild.member[0].sd) ? 1 : 0; - c++; - } } - WFIFOW(fd,2) = 6 + c*37; - WFIFOSET(fd,WFIFOW(fd,2)); + + PACKET_ZC_GUILD_SKILLINFO* p = reinterpret_cast( packet_buffer ); + + p->PacketType = HEADER_ZC_GUILD_SKILLINFO; + p->PacketLength = sizeof( *p ); + p->skillPoint = g->guild.skill_point; + + for( size_t i = 0, c = 0; i < MAX_GUILDSKILL; i++ ){ + if( g->guild.skill[i].id <= 0 ){ + continue; + } + + if( !guild_check_skill_require( g->guild, g->guild.skill[i].id ) ){ + continue; + } + + GUILD_SKILLDATA& gs = p->skillInfo[c]; + int skill_id = g->guild.skill[i].id; + + gs.id = skill_id; + gs.inf = skill_get_inf(skill_id); + gs.level = g->guild.skill[i].lv; + if( g->guild.skill[i].lv > 0 ){ + gs.sp = skill_get_sp( skill_id, g->guild.skill[i].lv ); + gs.range2 = skill_get_range( skill_id, g->guild.skill[i].lv ); + }else{ + gs.sp = 0; + gs.range2 = 0; + } + safestrncpy( gs.name, skill_get_name( skill_id ), sizeof( gs.name ) ); + gs.upFlag = ( g->guild.skill[i].lv < guild_skill_get_max( skill_id ) && &sd == g->guild.member[0].sd ) ? 1 : 0; + + p->PacketLength += static_castPacketLength)>( sizeof( gs ) ); + c++; + } + + clif_send( p, p->PacketLength, &sd.bl, SELF ); } -/// Sends guild notice to client (ZC_GUILD_NOTICE). -/// 016f .60B .120B -void clif_guild_notice(map_session_data* sd) -{ - nullpo_retv(sd); +/// Sends guild notice to client. +/// 016f .60B .120B (ZC_GUILD_NOTICE) +void clif_guild_notice( map_session_data& sd ){ + auto& g = sd.guild; - auto &g = sd->guild; - - int fd = sd->fd; - - if ( !session_isActive(fd) ) + if( g == nullptr ){ return; + } - if(g->guild.mes1[0] == '\0' && g->guild.mes2[0] == '\0') + if( g->guild.mes1[0] == '\0' && g->guild.mes2[0] == '\0' ){ return; + } - WFIFOHEAD(fd,packet_len(0x16f)); - WFIFOW(fd,0) = 0x16f; - memcpy(WFIFOP(fd,2), g->guild.mes1, MAX_GUILDMES1); - memcpy(WFIFOP(fd,62), g->guild.mes2, MAX_GUILDMES2); - WFIFOSET(fd,packet_len(0x16f)); + PACKET_ZC_GUILD_NOTICE p = {}; + + p.packetType = HEADER_ZC_GUILD_NOTICE; + safestrncpy( p.subject, g->guild.mes1, sizeof( p.subject ) ); + safestrncpy( p.notice, g->guild.mes2, sizeof( p.notice ) ); + + clif_send( &p, sizeof( p ), &sd.bl, SELF ); } -/// Guild invite (ZC_REQ_JOIN_GUILD). -/// 016a .L .24B -void clif_guild_invite(const map_session_data &sd, const struct mmo_guild &g) -{ - int fd = sd.fd; - WFIFOHEAD(fd,packet_len(0x16a)); - WFIFOW(fd,0)=0x16a; - WFIFOL(fd,2)=g.guild_id; - safestrncpy(WFIFOCP(fd,6),g.name,NAME_LENGTH); - WFIFOSET(fd,packet_len(0x16a)); +/// Guild invite. +/// 016a .L .24B (ZC_REQ_JOIN_GUILD) +void clif_guild_invite( map_session_data& sd, const struct mmo_guild& g ){ + PACKET_ZC_REQ_JOIN_GUILD p = {}; + + p.packetType = HEADER_ZC_REQ_JOIN_GUILD; + p.guild_id = g.guild_id; + safestrncpy( p.guild_name, g.name, sizeof( p.guild_name ) ); + + clif_send( &p, sizeof( p ), &sd.bl, SELF ); } -/// Reply to invite request (ZC_ACK_REQ_JOIN_GUILD). -/// 0169 .B +/// Reply to invite request. +/// 0169 .B (ZC_ACK_REQ_JOIN_GUILD) /// answer: /// 0 = Already in guild. /// 1 = Offer rejected. /// 2 = Offer accepted. /// 3 = Guild full. -void clif_guild_inviteack(map_session_data *sd,int flag) -{ - int fd; +void clif_guild_inviteack( map_session_data& sd, int flag ){ + PACKET_ZC_ACK_REQ_JOIN_GUILD p = {}; - nullpo_retv(sd); + p.packetType = HEADER_ZC_ACK_REQ_JOIN_GUILD; + p.result = static_cast( flag ); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x169)); - WFIFOW(fd,0)=0x169; - WFIFOB(fd,2)=flag; - WFIFOSET(fd,packet_len(0x169)); + clif_send( &p, sizeof( p ), &sd.bl, SELF ); } -/// Notifies clients of a guild of a leaving member (ZC_ACK_LEAVE_GUILD). -/// 015a .24B .40B -void clif_guild_leave(map_session_data *sd,const char *name,const char *mes) -{ - unsigned char buf[128]; +/// Notifies clients of a guild of a leaving member. +/// 015a .24B .40B (ZC_ACK_LEAVE_GUILD) +/// 0a83 .L .40B (ZC_ACK_LEAVE_GUILD_DELNAME) +void clif_guild_leave( map_session_data& sd, const char* name, uint32 char_id, const char* mes ){ + PACKET_ZC_ACK_LEAVE_GUILD p = {}; - nullpo_retv(sd); + p.packetType = guildLeave; +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) + p.GID = char_id; +#else + safestrncpy( p.name, name, sizeof( p.name ) ); +#endif + safestrncpy( p.reason, mes, sizeof( p.reason ) ); - WBUFW(buf, 0)=0x15a; - safestrncpy(WBUFCP(buf, 2),name,NAME_LENGTH); - memcpy(WBUFP(buf,26),mes,40); - clif_send(buf,packet_len(0x15a),&sd->bl,GUILD_NOBG); + clif_send( &p, sizeof( p ), &sd.bl, GUILD_NOBG ); } /// Notifies clients of a guild of an expelled member. /// 015c .24B .40B .24B (ZC_ACK_BAN_GUILD) /// 0839 .24B .40B (ZC_ACK_BAN_GUILD_SSO) -void clif_guild_expulsion(map_session_data* sd, const char* name, const char* mes, uint32 account_id) -{ - unsigned char buf[128]; -#if PACKETVER < 20100803 - const unsigned short cmd = 0x15c; +/// 0a82 .L .40B (ZC_ACK_BAN_GUILD_DELNAME) +void clif_guild_expulsion( map_session_data& sd, const char* name, uint32 char_id, const char* mes ){ + PACKET_ZC_ACK_BAN_GUILD p = {}; + + p.packetType = guildExpulsion; +#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) + p.GID = char_id; #else - const unsigned short cmd = 0x839; + safestrncpy( p.name, name, sizeof( p.name ) ); #endif - - nullpo_retv(sd); - - WBUFW(buf,0) = cmd; - safestrncpy(WBUFCP(buf,2), name, NAME_LENGTH); - safestrncpy(WBUFCP(buf,26), mes, 40); + safestrncpy( p.reason, mes, sizeof( p.reason ) ); #if PACKETVER < 20100803 - memset(WBUFP(buf,66), 0, NAME_LENGTH); // account name (not used for security reasons) + // account name is not sent for security reasons + safestrncpy( p.account_name, "", sizeof( p.account_name ) ); #endif - clif_send(buf, packet_len(cmd), &sd->bl, GUILD_NOBG); + + clif_send( &p, sizeof( p ), &sd.bl, GUILD_NOBG ); } @@ -9360,8 +9170,8 @@ void clif_guild_expulsionlist(map_session_data* sd) /// Guild chat message (ZC_GUILD_CHAT). /// 017f .W .?B -void clif_guild_message(const struct mmo_guild &g,uint32 account_id,const char *mes,int len) -{// TODO: account_id is not used, candidate for deletion? [Ai4rei] +void clif_guild_message( const struct mmo_guild& g, uint32 account_id, const char* mes, size_t len ){ + // TODO: account_id is not used, candidate for deletion? [Ai4rei] map_session_data *sd; uint8 buf[256]; @@ -9376,7 +9186,7 @@ void clif_guild_message(const struct mmo_guild &g,uint32 account_id,const char * } WBUFW(buf, 0) = 0x17f; - WBUFW(buf, 2) = len + 5; + WBUFW( buf, 2 ) = static_cast( len + 5 ); safestrncpy(WBUFCP(buf,4), mes, len+1); if ((sd = guild_getavailablesd(g)) != nullptr) @@ -9481,22 +9291,18 @@ void clif_guild_allianceadded(struct guild *g,int idx) */ -/// Notifies the client about the result of a guild break (ZC_ACK_DISORGANIZE_GUILD_RESULT). -/// 015e .L +/// Notifies the client about the result of a guild break. +/// 015e .L (ZC_ACK_DISORGANIZE_GUILD_RESULT) /// 0 = success /// 1 = invalid key (guild name, @see clif_parse_GuildBreak) /// 2 = there are still members in the guild -void clif_guild_broken(map_session_data *sd,int flag) -{ - int fd; +void clif_guild_broken( map_session_data& sd, int flag ){ + PACKET_ZC_ACK_DISORGANIZE_GUILD_RESULT p = {}; - nullpo_retv(sd); + p.packetType = HEADER_ZC_ACK_DISORGANIZE_GUILD_RESULT; + p.result = flag; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x15e)); - WFIFOW(fd,0)=0x15e; - WFIFOL(fd,2)=flag; - WFIFOSET(fd,packet_len(0x15e)); + clif_send( &p, sizeof( p ), &sd.bl, SELF ); } @@ -9523,13 +9329,13 @@ void clif_talkiebox( struct block_list* bl, const char* talkie ){ nullpo_retv( bl ); nullpo_retv( talkie ); - struct PACKET_ZC_TALKBOX_CHATCONTENTS p; + PACKET_ZC_TALKBOX_CHATCONTENTS p = {}; p.PacketType = HEADER_ZC_TALKBOX_CHATCONTENTS; p.aid = bl->id; safestrncpy( p.message, talkie, TALKBOX_MESSAGE_SIZE ); - clif_send( &p, sizeof( struct PACKET_ZC_TALKBOX_CHATCONTENTS ), bl, AREA ); + clif_send( &p, sizeof( PACKET_ZC_TALKBOX_CHATCONTENTS ), bl, AREA ); } @@ -9768,17 +9574,18 @@ void clif_wisall(map_session_data *sd,int type,int flag) /// 07fe .24B void clif_playBGM( map_session_data& sd, const char* name ){ #if PACKETVER_MAIN_NUM >= 20220504 - struct PACKET_ZC_PLAY_NPC_BGM* p = (struct PACKET_ZC_PLAY_NPC_BGM*)packet_buffer; - int16 length = (int16)( strlen( name ) + 1 ); + PACKET_ZC_PLAY_NPC_BGM* p = reinterpret_cast( packet_buffer ); + size_t length = strlen( name ) + 1; p->PacketType = HEADER_ZC_PLAY_NPC_BGM; - p->PacketLength = sizeof( *p ) + length; + p->PacketLength = sizeof( *p ); p->playType = 0; // TODO: implement, send loop for the time being safestrncpy( p->bgm, name, length ); + p->PacketLength += static_castPacketLength)>( length ); clif_send( p, p->PacketLength, &sd.bl, SELF ); #elif PACKETVER >= 20091201 - struct PACKET_ZC_PLAY_NPC_BGM p = {}; + PACKET_ZC_PLAY_NPC_BGM p = {}; p.PacketType = HEADER_ZC_PLAY_NPC_BGM; safestrncpy( p.bgm, name, sizeof( p.bgm ) ); @@ -9801,7 +9608,7 @@ void clif_playBGM( map_session_data& sd, const char* name ){ /// The accustic direction of the sound is determined by the /// relative position of the NPC to the player (3D sound). void clif_soundeffect( struct block_list& bl, const char* name, int type, enum send_target target ){ - struct PACKET_ZC_SOUND p = {}; + PACKET_ZC_SOUND p = {}; p.PacketType = HEADER_ZC_SOUND; safestrncpy( p.name, name, sizeof( p.name ) ); @@ -9876,18 +9683,18 @@ void clif_specialeffect_remove(struct block_list* bl_src, int effect, enum send_ nullpo_retv( bl_src ); nullpo_retv( bl_target ); - struct PACKET_ZC_REMOVE_EFFECT p = {}; + PACKET_ZC_REMOVE_EFFECT p = {}; p.packetType = HEADER_ZC_REMOVE_EFFECT; p.aid = bl_src->id; p.effectId = effect; - clif_send( &p, sizeof( struct PACKET_ZC_REMOVE_EFFECT ), bl_target, e_target ); + clif_send( &p, sizeof( PACKET_ZC_REMOVE_EFFECT ), bl_target, e_target ); if( disguised(bl_src) ) { p.aid = disguised_bl_id( bl_src->id ); - clif_send( &p, sizeof( struct PACKET_ZC_REMOVE_EFFECT ), bl_src, SELF ); + clif_send( &p, sizeof( PACKET_ZC_REMOVE_EFFECT ), bl_src, SELF ); } #endif } @@ -9928,7 +9735,7 @@ void clif_refresh_storagewindow(map_session_data *sd) { if( sd->state.storage_flag == 1 ) { storage_sortitem(sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage)); clif_storagelist(sd, sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage), storage_getName(0)); - clif_updatestorageamount(sd, sd->storage.amount, sd->storage.max_amount); + clif_updatestorageamount(*sd, sd->storage.amount, sd->storage.max_amount); } // Notify the client that the gstorage is open otherwise it will // remain locked forever and nobody will be able to access it @@ -9940,14 +9747,14 @@ void clif_refresh_storagewindow(map_session_data *sd) { else { storage_sortitem(gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild)); clif_storagelist(sd, gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild), "Guild Storage"); - clif_updatestorageamount(sd, gstor->amount, gstor->max_amount); + clif_updatestorageamount(*sd, gstor->amount, gstor->max_amount); } } // Notify the client that the premium storage is open if (sd->state.storage_flag == 3) { storage_sortitem(sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage)); clif_storagelist(sd, sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage), storage_getName(sd->premiumStorage.stor_id)); - clif_updatestorageamount(sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount); + clif_updatestorageamount(*sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount); } } @@ -10006,7 +9813,7 @@ void clif_refresh(map_session_data *sd) if( sd->chatID ) chat_leavechat(sd,0); if( sd->state.vending ) - clif_openvending(sd, sd->bl.id, sd->vending); + clif_openvending( *sd ); if( pc_issit(sd) ) clif_sitting(&sd->bl); // FIXME: just send to self, not area if( pc_isdead(sd) ) // When you refresh, resend the death packet. @@ -10440,57 +10247,54 @@ void clif_equipcheckbox(map_session_data* sd) /// 0859 .W .24B .W .W .W .W .W .W .W .W .B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE2, PACKETVER >= 20110111) /// 0997 .W .24B .W .W .W .W .W .W .W .W .B {equip item}.31B* (ZC_EQUIPWIN_MICROSCOPE_V5, PACKETVER >= 20120925) /// 0a2d .W .24B .W .W .W .W .W .W .W .W .B {equip item}.57B* (ZC_EQUIPWIN_MICROSCOPE_V6, PACKETVER >= 20150225) -void clif_viewequip_ack( map_session_data* sd, map_session_data* tsd ){ +void clif_viewequip_ack( map_session_data& sd, map_session_data& tsd ){ #if PACKETVER_AD_NUM >= 20071211 || PACKETVER_SAK_NUM >= 20071127 || PACKETVER_MAIN_NUM >= 20071211 || defined(PACKETVER_RE) - nullpo_retv( sd ); - nullpo_retv( tsd ); - - struct PACKET_ZC_EQUIPWIN_MICROSCOPE* p = (struct PACKET_ZC_EQUIPWIN_MICROSCOPE*)packet_buffer; + PACKET_ZC_EQUIPWIN_MICROSCOPE* p = reinterpret_cast( packet_buffer ); p->PacketType = HEADER_ZC_EQUIPWIN_MICROSCOPE; p->PacketLength = sizeof( *p ); - safestrncpy( p->characterName, tsd->status.name, NAME_LENGTH ); + safestrncpy( p->characterName, tsd.status.name, NAME_LENGTH ); - p->job = tsd->status.class_; - p->head = tsd->vd.hair_style; - p->accessory = tsd->vd.head_bottom; - p->accessory2 = tsd->vd.head_mid; - p->accessory3 = tsd->vd.head_top; + p->job = tsd.status.class_; + p->head = tsd.vd.hair_style; + p->accessory = tsd.vd.head_bottom; + p->accessory2 = tsd.vd.head_mid; + p->accessory3 = tsd.vd.head_top; #if PACKETVER >= 20110111 - p->robe = tsd->vd.robe; + p->robe = tsd.vd.robe; #endif - p->headpalette = tsd->vd.hair_color; - p->bodypalette = tsd->vd.cloth_color; + p->headpalette = tsd.vd.hair_color; + p->bodypalette = tsd.vd.cloth_color; #if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 - p->body2 = tsd->vd.body_style; + p->body2 = tsd.vd.body_style; #endif - p->sex = tsd->vd.sex; + p->sex = tsd.vd.sex; for( int i = 0, equip = 0; i < EQI_MAX; i++ ){ - int k = tsd->equip_index[i]; + int k = tsd.equip_index[i]; if( k >= 0 ){ - if( tsd->inventory.u.items_inventory[k].nameid == 0 || tsd->inventory_data[k] == nullptr ){ // Item doesn't exist + if( tsd.inventory.u.items_inventory[k].nameid == 0 || tsd.inventory_data[k] == nullptr ){ // Item doesn't exist continue; } - if( !tsd->inventory.u.items_inventory[k].equip ){ + if( !tsd.inventory.u.items_inventory[k].equip ){ continue; } - if( !itemdb_isequip2( tsd->inventory_data[k] ) ){ // Is not equippable + if( !itemdb_isequip2( tsd.inventory_data[k] ) ){ // Is not equippable continue; } - clif_item_equip( client_index( k ), &p->list[equip], &tsd->inventory.u.items_inventory[k], tsd->inventory_data[k], pc_equippoint( tsd, k ) ); + clif_item_equip( client_index( k ), &p->list[equip], &tsd.inventory.u.items_inventory[k], tsd.inventory_data[k], pc_equippoint( &tsd, k ) ); - p->PacketLength += sizeof( p->list[0] ); + p->PacketLength += static_castPacketLength)>( sizeof( p->list[0] ) ); equip++; } } - clif_send( p, p->PacketLength, &sd->bl, SELF ); + clif_send( p, p->PacketLength, &sd.bl, SELF ); #endif } @@ -11039,7 +10843,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) clif_updatestatus(*sd,SP_JOBEXP); clif_updatestatus(*sd,SP_NEXTJOBEXP); clif_updatestatus(*sd,SP_SKILLPOINT); - clif_initialstatus(sd); + clif_initialstatus( *sd ); if (sd->sc.option&OPTION_FALCON) clif_status_load(&sd->bl, EFST_FALCON, 1); @@ -11076,8 +10880,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) map_foreachpc(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1); if (!sd->state.autotrade) { // Don't trigger NPC event or opening vending/buyingstore will be failed - //Login Event - npc_script_event(sd, NPCE_LOGIN); + npc_script_event( *sd, NPCE_LOGIN ); } // Set facing direction before check below to update client @@ -11134,7 +10937,8 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) clif_reputation_list( *sd ); if (sd->guild && battle_config.guild_notice_changemap == 1){ - clif_guild_notice(sd); // Displays after VIP + // Displays after VIP + clif_guild_notice( *sd ); guild_notice = false; // Do not display it twice } @@ -11161,7 +10965,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) if( mapdata->getMapFlag(MF_BATTLEGROUND) ) { - clif_map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode + clif_map_type( *sd, MAPTYPE_BATTLEFIELD ); // Battleground Mode if( map_getmapflag(sd->bl.m, MF_BATTLEGROUND) == 2 ) clif_bg_updatescore_single(sd); } @@ -11201,7 +11005,8 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) } if( sd->guild && ( battle_config.guild_notice_changemap == 2 || guild_notice ) ){ - clif_guild_notice(sd); // Displays at end + // Displays at end + clif_guild_notice( *sd ); } mail_clear(sd); @@ -11215,13 +11020,13 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) } if( sd->state.vending ) { /* show we have a vending */ - clif_openvending(sd,sd->bl.id,sd->vending); + clif_openvending( *sd ); clif_showvendingboard( *sd ); } // Don't trigger NPC event or opening vending/buyingstore will be failed if(!sd->state.autotrade && mapdata->getMapFlag(MF_LOADEVENT)) // Lance - npc_script_event(sd, NPCE_LOADMAP); + npc_script_event( *sd, NPCE_LOADMAP ); if (pc_checkskill(sd, SG_DEVIL) && ((sd->class_&MAPID_THIRDMASK) == MAPID_STAR_EMPEROR || pc_is_maxjoblv(sd))) clif_status_load(&sd->bl, EFST_DEVIL1, 1); //blindness [Komurka] @@ -11308,7 +11113,7 @@ void clif_hotkeys_send( map_session_data *sd, int tab ){ #if defined(HOTKEY_SAVING) && ( PACKETVER_MAIN_NUM >= 20070711 || PACKETVER_RE_NUM >= 20080827 || PACKETVER_AD_NUM >= 20070711 || PACKETVER_SAK_NUM >= 20070628 ) nullpo_retv( sd ); - struct PACKET_ZC_SHORTCUT_KEY_LIST p; + PACKET_ZC_SHORTCUT_KEY_LIST p = {}; p.packetType = HEADER_ZC_SHORTCUT_KEY_LIST; @@ -11330,14 +11135,14 @@ void clif_hotkeys_send( map_session_data *sd, int tab ){ p.hotkey[i].count = sd->status.hotkeys[i + offset].lv; } - clif_send( &p, sizeof(struct PACKET_ZC_SHORTCUT_KEY_LIST), &sd->bl, SELF ); + clif_send( &p, sizeof(PACKET_ZC_SHORTCUT_KEY_LIST), &sd->bl, SELF ); #endif } /// Request to update a position on the hotkey row bar void clif_parse_HotkeyRowShift( int fd, map_session_data *sd ){ #if PACKETVER_MAIN_NUM >= 20190522 || PACKETVER_RE_NUM >= 20190508 || PACKETVER_ZERO_NUM >= 20190605 - const struct PACKET_CZ_SHORTCUTKEYBAR_ROTATE2 *p = (struct PACKET_CZ_SHORTCUTKEYBAR_ROTATE2 *)RFIFOP( fd, 0 ); + const PACKET_CZ_SHORTCUTKEYBAR_ROTATE2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); if( p->tab == 0 ){ sd->status.hotkey_rowshift = p->rowshift; @@ -11345,18 +11150,18 @@ void clif_parse_HotkeyRowShift( int fd, map_session_data *sd ){ sd->status.hotkey_rowshift2 = p->rowshift; } #elif PACKETVER_MAIN_NUM >= 20140129 || PACKETVER_RE_NUM >= 20140129 || defined(PACKETVER_ZERO) - const struct PACKET_CZ_SHORTCUTKEYBAR_ROTATE1 *p = (struct PACKET_CZ_SHORTCUTKEYBAR_ROTATE1 *)RFIFOP( fd, 0 ); + const PACKET_CZ_SHORTCUTKEYBAR_ROTATE1* p = reinterpret_cast( RFIFOP( fd, 0 ) ); sd->status.hotkey_rowshift = p->rowshift; #endif } -/// Request to update a position on the hotkey bar (CZ_SHORTCUT_KEY_CHANGE). -/// 02ba .W .B .L .W +/// Request to update a position on the hotkey bar. +/// 02ba .W .B .L .W (CZ_SHORTCUT_KEY_CHANGE) void clif_parse_Hotkey(int fd, map_session_data *sd) { #ifdef HOTKEY_SAVING #if PACKETVER_MAIN_NUM >= 20190522 || PACKETVER_RE_NUM >= 20190508 || PACKETVER_ZERO_NUM >= 20190605 - const struct PACKET_CZ_SHORTCUT_KEY_CHANGE2* p = (struct PACKET_CZ_SHORTCUT_KEY_CHANGE2*)RFIFOP( fd, 0 ); + const PACKET_CZ_SHORTCUT_KEY_CHANGE2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); const unsigned short idx = p->index + p->tab * MAX_HOTKEYS; if( idx >= MAX_HOTKEYS_DB ){ @@ -11367,7 +11172,7 @@ void clif_parse_Hotkey(int fd, map_session_data *sd) { sd->status.hotkeys[idx].id = p->hotkey.id; sd->status.hotkeys[idx].lv = p->hotkey.count; #elif PACKETVER_MAIN_NUM >= 20070618 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO) || PACKETVER_AD_NUM >= 20070618 || PACKETVER_SAK_NUM >= 20070618 - const struct PACKET_CZ_SHORTCUT_KEY_CHANGE1* p = (struct PACKET_CZ_SHORTCUT_KEY_CHANGE1*)RFIFOP( fd, 0 ); + const PACKET_CZ_SHORTCUT_KEY_CHANGE1* p = reinterpret_cast( RFIFOP( fd, 0 ) ); const unsigned short idx = p->index; if( idx >= MAX_HOTKEYS_DB ){ @@ -11612,7 +11417,7 @@ void clif_parse_GlobalMessage(int fd, map_session_data* sd) } // send message to others (using the send buffer for temp. storage) - clif_GlobalMessage(&sd->bl,output,sd->chatID ? CHAT_WOS : AREA_CHAT_WOC); + clif_GlobalMessage( sd->bl, output, sd->chatID ? CHAT_WOS : AREA_CHAT_WOC ); length = strlen(output) + 1; @@ -12021,9 +11826,9 @@ void clif_parse_WisMessage(int fd, map_session_data* sd) // if player ignores everyone if (dstsd->state.ignoreAll && pc_get_group_level(sd) <= pc_get_group_level(dstsd)) { if (pc_isinvisible(dstsd) && pc_get_group_level(sd) < pc_get_group_level(dstsd)) - clif_wis_end(fd, 1); // 1: target character is not logged in + clif_wis_end( *sd, ACKWHISPER_TARGET_OFFLINE ); else - clif_wis_end(fd, 3); // 3: everyone ignored by target + clif_wis_end( *sd, ACKWHISPER_ALL_IGNORED ); return; } @@ -12038,13 +11843,13 @@ void clif_parse_WisMessage(int fd, map_session_data* sd) // if player ignores the source character ARR_FIND(0, MAX_IGNORE_LIST, i, dstsd->ignore[i].name[0] == '\0' || strcmp(dstsd->ignore[i].name, sd->status.name) == 0); if(i < MAX_IGNORE_LIST && dstsd->ignore[i].name[0] != '\0') { // source char present in ignore list - clif_wis_end(fd, 2); // 2: ignored by target + clif_wis_end( *sd, ACKWHISPER_IGNORED ); return; } } // notify sender of success - clif_wis_end(fd, 0); // 0: success to send wisper + clif_wis_end( *sd, ACKWHISPER_SUCCESS ); // Normal message clif_wis_message(dstsd, sd->status.name, message, strlen(message)+1, 0); @@ -12154,7 +11959,7 @@ void clif_parse_UseItem(int fd, map_session_data *sd) } if ( (!sd->npc_id && pc_istrading(sd)) || sd->chatID || (sd->state.block_action & PCBLOCK_USEITEM) ) { - clif_msg(sd, WORK_IN_PROGRESS); + clif_msg(sd, MSI_BUSY); return; } @@ -12190,8 +11995,8 @@ void clif_parse_EquipItem(int fd,map_session_data *sd) if (index < 0 || index >= MAX_INVENTORY) return; //Out of bounds check. - if(sd->npc_id && !sd->npc_item_flag) { - clif_msg_color( sd, C_ITEM_NOEQUIP, color_table[COLOR_RED] ); + if((sd->npc_id && !sd->npc_item_flag) || (sd->state.block_action & PCBLOCK_EQUIP)) { + clif_msg_color( sd, MSI_CAN_NOT_EQUIP_ITEM, color_table[COLOR_RED] ); return; } else if (sd->state.storage_flag || sd->sc.opt1) ; //You can equip/unequip stuff while storage is open/under status changes @@ -12245,8 +12050,8 @@ void clif_parse_UnequipItem(int fd,map_session_data *sd) return; } - if (sd->npc_id && !sd->npc_item_flag) { - clif_msg_color( sd, C_ITEM_NOEQUIP, color_table[COLOR_RED] ); + if((sd->npc_id && !sd->npc_item_flag) || (sd->state.block_action & PCBLOCK_EQUIP)) { + clif_msg_color( sd, MSI_CAN_NOT_EQUIP_ITEM, color_table[COLOR_RED] ); return; } else if (sd->state.storage_flag || sd->sc.opt1) ; //You can equip/unequip stuff while storage is open/under status changes @@ -12286,7 +12091,7 @@ void clif_parse_NpcClicked(int fd,map_session_data *sd) if( pc_cant_act2(sd) || sd->npc_id || pc_hasprogress( sd, WIP_DISABLE_NPC ) ){ #ifdef RENEWAL - clif_msg( sd, WORK_IN_PROGRESS ); + clif_msg( sd, MSI_BUSY); #endif return; } @@ -12305,7 +12110,7 @@ void clif_parse_NpcClicked(int fd,map_session_data *sd) case BL_NPC: #ifdef RENEWAL if (sd->ud.skill_id < RK_ENCHANTBLADE && sd->ud.skilltimer != INVALID_TIMER) { // Should only show an error message for non-3rd job skills with a running timer - clif_msg(sd, WORK_IN_PROGRESS); + clif_msg(sd, MSI_BUSY); break; } #endif @@ -12352,7 +12157,7 @@ void clif_parse_NpcBuySellSelected(int fd,map_session_data *sd) /// 13 = "The item is already sold and out of stock." /// 14 = "There is not enough goods to exchange." void clif_npc_buy_result( map_session_data* sd, e_purchase_result result ){ - struct PACKET_ZC_PC_PURCHASE_RESULT p = {}; + PACKET_ZC_PC_PURCHASE_RESULT p = {}; p.packetType = HEADER_ZC_PC_PURCHASE_RESULT; p.result = (uint8)result; @@ -12361,12 +12166,12 @@ void clif_npc_buy_result( map_session_data* sd, e_purchase_result result ){ } -/// Request to buy chosen items from npc shop (CZ_PC_PURCHASE_ITEMLIST). -/// 00c8 .W { .W .W }* +/// Request to buy chosen items from npc shop. +/// 00c8 .W { .W .W }* (CZ_PC_PURCHASE_ITEMLIST) void clif_parse_NpcBuyListSend( int fd, map_session_data* sd ){ - const struct PACKET_CZ_PC_PURCHASE_ITEMLIST *p = (struct PACKET_CZ_PC_PURCHASE_ITEMLIST *)RFIFOP( fd, 0 ); + const PACKET_CZ_PC_PURCHASE_ITEMLIST *p = reinterpret_cast( RFIFOP( fd, 0 ) ); - uint16 n = ( p->packetLength - sizeof(struct PACKET_CZ_PC_PURCHASE_ITEMLIST) ) / sizeof( struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub ); + uint16 n = ( p->packetLength - sizeof( *p ) ) / sizeof( p->items[0] ); e_purchase_result result; if( sd->state.trading || !sd->npc_shopid ) @@ -12413,11 +12218,10 @@ void clif_npc_sell_result(map_session_data* sd, unsigned char result) /// 00c9 .W { .W .W }* void clif_parse_NpcSellListSend(int fd,map_session_data *sd) { - int fail=0,n; - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - PACKET_CZ_PC_SELL_ITEMLIST* p = reinterpret_cast(RFIFOP(fd, 0)); + int fail=0; + const PACKET_CZ_PC_SELL_ITEMLIST* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - n = (p->packetLength - 4) / sizeof(PACKET_CZ_PC_SELL_ITEMLIST_sub); // (pktlen-(cmd+len))/listsize + int n = ( p->packetLength - sizeof( *p ) ) / sizeof( p->sellList[0] ); if (sd->state.trading || !sd->npc_shopid) fail = 1; @@ -12538,22 +12342,18 @@ void clif_parse_ChatLeave(int fd, map_session_data* sd) chat_leavechat(sd,0); } +// Handles notifying asker and rejecter of what has just ocurred. +// Type is used to determine the correct msg_txt to use +void clif_noask_sub( map_session_data& sd, map_session_data& tsd, int type ){ + char output[CHAT_SIZE_MAX]; -//Handles notifying asker and rejecter of what has just ocurred. -//Type is used to determine the correct msg_txt to use: -//0: -static void clif_noask_sub(map_session_data *sd, map_session_data *tsd, int type) -{ - const char* msg; - char output[256]; // Your request has been rejected by autoreject option. - msg = msg_txt(sd,392); - clif_messagecolor(&sd->bl, color_table[COLOR_LIGHT_GREEN], msg, false, SELF); - //Notice that a request was rejected. - snprintf(output, 256, msg_txt(tsd,393+type), sd->status.name, 256); - clif_messagecolor(&tsd->bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF); -} + clif_messagecolor( &sd.bl, color_table[COLOR_LIGHT_GREEN], msg_txt( &sd, 392 ), false, SELF ); + // Notice that a request was rejected. + safesnprintf( output, CHAT_SIZE_MAX, msg_txt( &tsd, type ), sd.status.name ); + clif_messagecolor( &tsd.bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF); +} /// Request to begin a trade (CZ_REQ_EXCHANGE_ITEM). /// 00e4 .L @@ -12569,7 +12369,7 @@ void clif_parse_TradeRequest(int fd,map_session_data *sd) if(t_sd){ // @noask [LuzZza] if(t_sd->state.noask) { - clif_noask_sub(sd, t_sd, 0); + clif_noask_sub( *sd, *t_sd, 393 ); // Autorejected trade request from %s. return; } @@ -12654,15 +12454,15 @@ void clif_parse_StopAttack(int fd,map_session_data *sd) } -/// Request to move an item from inventory to cart (CZ_MOVE_ITEM_FROM_BODY_TO_CART). -/// 0126 .W .L +/// Request to move an item from inventory to cart. +/// 0126 .W .L (CZ_MOVE_ITEM_FROM_BODY_TO_CART) void clif_parse_PutItemToCart( int fd, map_session_data *sd ){ if (pc_istrading(sd) || !pc_iscarton(sd) || pc_cant_act2(sd)) return; if (map_getmapflag(sd->bl.m, MF_NOUSECART)) return; - struct PACKET_CZ_MOVE_ITEM_FROM_BODY_TO_CART* p = (struct PACKET_CZ_MOVE_ITEM_FROM_BODY_TO_CART*)RFIFOP( fd, 0 ); + const PACKET_CZ_MOVE_ITEM_FROM_BODY_TO_CART* p = reinterpret_cast( RFIFOP( fd, 0 ) ); pc_putitemtocart( sd, server_index( p->index ), p->count); } @@ -12750,7 +12550,7 @@ void clif_parse_ChangeCart(int fd,map_session_data *sd) #ifdef RENEWAL if (sd->npc_id || pc_hasprogress(sd, WIP_DISABLE_SKILLITEM)) { - clif_msg(sd, WORK_IN_PROGRESS); + clif_msg(sd, MSI_BUSY); return; } #endif @@ -12796,14 +12596,14 @@ void clif_parse_StatusUp(int fd,map_session_data *sd) /// Request to increase trait status. -/// 0b24 .W .W +/// 0b24 .W .W (CZ_ADVANCED_STATUS_CHANGE) /// status id: /// SP_POW ~ SP_CON /// amount: /// The amount to increase the trait status void clif_parse_traitstatus_up( int fd, map_session_data *sd ){ #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - struct PACKET_CZ_ADVANCED_STATUS_CHANGE* p = (struct PACKET_CZ_ADVANCED_STATUS_CHANGE*)RFIFOP( fd, 0 ); + const PACKET_CZ_ADVANCED_STATUS_CHANGE* p = reinterpret_cast( RFIFOP( fd, 0 ) ); if( p->amount < 0 ){ ShowDebug( "clif_parse_traitstatus_up: Negative 'increase' value sent by client! %s (AID: %d, CID: %d, value: %d)\n", sd->status.name, sd->status.account_id, sd->status.char_id, p->amount ); @@ -12948,7 +12748,7 @@ void clif_parse_skill_toid( map_session_data* sd, uint16 skill_id, uint16 skill_ return; //Using a ground/passive skill on a target? WRONG. if (sd->state.block_action & PCBLOCK_SKILL) { - clif_msg(sd, WORK_IN_PROGRESS); + clif_msg(sd, MSI_BUSY); return; } @@ -12974,7 +12774,7 @@ void clif_parse_skill_toid( map_session_data* sd, uint16 skill_id, uint16 skill_ if( sd->npc_id ){ if( pc_hasprogress( sd, WIP_DISABLE_SKILLITEM ) || !sd->npc_item_flag || !( inf & INF_SELF_SKILL ) ){ #ifdef RENEWAL - clif_msg( sd, WORK_IN_PROGRESS ); + clif_msg( sd, MSI_BUSY); #endif return; } @@ -13073,7 +12873,7 @@ static void clif_parse_UseSkillToPosSub( int fd, map_session_data& sd, uint16 sk return; //Using a target skill on the ground? WRONG. if (sd.state.block_action & PCBLOCK_SKILL) { - clif_msg(&sd, WORK_IN_PROGRESS); + clif_msg(&sd, MSI_BUSY); return; } @@ -13089,7 +12889,7 @@ static void clif_parse_UseSkillToPosSub( int fd, map_session_data& sd, uint16 sk if( pc_hasprogress( &sd, WIP_DISABLE_SKILLITEM ) ){ #ifdef RENEWAL - clif_msg( &sd, WORK_IN_PROGRESS ); + clif_msg( &sd, MSI_BUSY); #endif return; } @@ -13247,14 +13047,14 @@ void clif_parse_RequestMemo(int fd,map_session_data *sd) } -/// Answer to pharmacy item selection dialog (CZ_REQMAKINGITEM). -/// 018e .W { .W }*3 +/// Answer to pharmacy item selection dialog. +/// 018e .W { .W }*3 (CZ_REQMAKINGITEM) void clif_parse_ProduceMix(int fd,map_session_data *sd){ if( sd == nullptr ){ return; } - const struct PACKET_CZ_REQMAKINGITEM *p = (struct PACKET_CZ_REQMAKINGITEM*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQMAKINGITEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); switch( sd->menuskill_id ) { case -1: @@ -13280,8 +13080,8 @@ void clif_parse_ProduceMix(int fd,map_session_data *sd){ } -/// Answer to mixing item selection dialog (CZ_REQ_MAKINGITEM). -/// 025b .W .W +/// Answer to mixing item selection dialog. +/// 025b .W .W (CZ_REQ_MAKINGITEM) /// mk type: /// 1 = cooking /// 2 = arrow @@ -13292,11 +13092,12 @@ void clif_parse_ProduceMix(int fd,map_session_data *sd){ /// 7 = MT_M_MACHINE - Unconfirmed /// 8 = BO_BIONIC_PHARMACY - Unconfirmed void clif_parse_Cooking(int fd,map_session_data *sd) { +#if PACKETVER >= 20051010 if( sd == nullptr ){ return; } - const struct PACKET_CZ_REQ_MAKINGITEM *p = (struct PACKET_CZ_REQ_MAKINGITEM *)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_MAKINGITEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); int amount = sd->menuskill_val2 ? sd->menuskill_val2 : 1; short food_idx = -1; @@ -13313,6 +13114,7 @@ void clif_parse_Cooking(int fd,map_session_data *sd) { if( (food_idx = skill_can_produce_mix(sd,p->itemId,sd->menuskill_val, amount)) ) skill_produce_mix(sd,(p->type>1?sd->menuskill_id:0),p->itemId,0,0,0,amount,food_idx-1); clif_menuskill_clear(sd); +#endif } @@ -13326,9 +13128,9 @@ void clif_parse_RepairItem( int fd, map_session_data *sd ){ // Hercules has wrong date -> use correct one here #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - const struct PACKET_CZ_REQ_ITEMREPAIR2 *p = (struct PACKET_CZ_REQ_ITEMREPAIR2 *)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_ITEMREPAIR2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); #else - const struct PACKET_CZ_REQ_ITEMREPAIR1 *p = (struct PACKET_CZ_REQ_ITEMREPAIR1 *)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_ITEMREPAIR1* p = reinterpret_cast( RFIFOP( fd, 0 ) ); #endif if (sd->menuskill_id != BS_REPAIRWEAPON) @@ -13494,8 +13296,8 @@ void clif_parse_ItemIdentify(int fd,map_session_data *sd) { } -/// Answer to arrow crafting item selection dialog (CZ_REQ_MAKINGARROW). -/// 01ae .W +/// Answer to arrow crafting item selection dialog. +/// 01ae .W (CZ_REQ_MAKINGARROW) void clif_parse_SelectArrow(int fd,map_session_data *sd) { if( sd == nullptr ){ return; @@ -13508,7 +13310,7 @@ void clif_parse_SelectArrow(int fd,map_session_data *sd) { return; } - struct PACKET_CZ_REQ_MAKINGARROW* p = (struct PACKET_CZ_REQ_MAKINGARROW*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_MAKINGARROW* p = reinterpret_cast( RFIFOP( fd, 0 ) ); switch (sd->menuskill_id) { case AC_MAKINGARROW: @@ -13628,7 +13430,7 @@ void clif_parse_MoveToKafra(int fd, map_session_data *sd) if (item_index < 0 || item_index >= MAX_INVENTORY || item_amount < 1) return; if( sd->inventory.u.items_inventory[item_index].equipSwitch ){ - clif_msg( sd, C_ITEM_EQUIP_SWITCH ); + clif_msg( sd, MSI_SWAP_EQUIPITEM_UNREGISTER_FIRST ); return; } @@ -13681,7 +13483,7 @@ void clif_parse_MoveToKafraFromCart(int fd, map_session_data *sd){ if (idx < 0 || idx >= MAX_INVENTORY || amount < 1) return; if( sd->inventory.u.items_inventory[idx].equipSwitch ){ - clif_msg( sd, C_ITEM_EQUIP_SWITCH ); + clif_msg( sd, MSI_SWAP_EQUIPITEM_UNREGISTER_FIRST ); return; } @@ -13808,7 +13610,7 @@ void clif_parse_CreateParty(int fd, map_session_data *sd){ return; } - party_create(sd,name,0,0); + party_create( *sd, name, 0, 0 ); } /// 01e8 .24B .B .B (CZ_MAKE_GROUP2) @@ -13832,97 +13634,97 @@ void clif_parse_CreateParty2(int fd, map_session_data *sd){ return; } - party_create(sd,name,item1,item2); + party_create( *sd, name, item1, item2 ); } -/// Party invitation request +/// Party invitation request by account id /// 00fc .L (CZ_REQ_JOIN_GROUP) -void clif_parse_PartyInvite(int fd, map_session_data *sd) -{ - map_session_data *t_sd; - - if(map_getmapflag(sd->bl.m, MF_PARTYLOCK)) {// Party locked. - clif_displaymessage(fd, msg_txt(sd,227)); +void clif_parse_PartyInvite( int fd, map_session_data *sd ){ + if( sd == nullptr ){ return; } - t_sd = map_id2sd(RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); + const PACKET_CZ_REQ_JOIN_GROUP* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - if(t_sd && t_sd->state.noask) {// @noask [LuzZza] - clif_noask_sub(sd, t_sd, 1); - return; - } - - party_invite(sd, t_sd); + party_invite( *sd, map_id2sd( p->AID ) ); } +/// Party invitation request by name /// 02c4 .24B (CZ_PARTY_JOIN_REQ) -void clif_parse_PartyInvite2(int fd, map_session_data *sd){ - map_session_data *t_sd; - char *name = RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0]); - name[NAME_LENGTH-1] = '\0'; - - if(map_getmapflag(sd->bl.m, MF_PARTYLOCK)) {// Party locked. - clif_displaymessage(fd, msg_txt(sd,227)); +void clif_parse_PartyInvite2( int fd, map_session_data *sd ){ +#if PACKETVER >= 20070227 + if( sd == nullptr ){ return; } - t_sd = map_nick2sd(name,false); + const PACKET_CZ_PARTY_JOIN_REQ* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - if(t_sd && t_sd->state.noask) {// @noask [LuzZza] - clif_noask_sub(sd, t_sd, 1); - return; - } + char name[NAME_LENGTH]; - party_invite(sd, t_sd); + safestrncpy( name, p->name, sizeof( name ) ); + + party_invite( *sd, map_nick2sd( name, false ) ); +#endif } /// Party invitation reply /// 00ff .L .L (CZ_JOIN_GROUP) +/// flag: +/// 0 = reject +/// 1 = accept +void clif_parse_ReplyPartyInvite( int fd, map_session_data *sd ){ + if( sd == nullptr ){ + return; + } + + const PACKET_CZ_JOIN_GROUP* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + party_reply_invite( *sd, p->party_id, p->flag ); +} + +/// Party invitation reply /// 02c7 .L .B (CZ_PARTY_JOIN_REQ_ACK) /// flag: /// 0 = reject /// 1 = accept -void clif_parse_ReplyPartyInvite(int fd,map_session_data *sd) -{ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - party_reply_invite(sd,RFIFOL(fd,info->pos[0]), - RFIFOL(fd,info->pos[1])); -} -//(CZ_PARTY_JOIN_REQ_ACK) -void clif_parse_ReplyPartyInvite2(int fd,map_session_data *sd) -{ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - party_reply_invite(sd,RFIFOL(fd,info->pos[0]), - RFIFOB(fd,info->pos[1])); -} - - -/// Request to leave party (CZ_REQ_LEAVE_GROUP). -/// 0100 -void clif_parse_LeaveParty(int fd, map_session_data *sd) -{ - if(map_getmapflag(sd->bl.m, MF_PARTYLOCK)) {// Party locked. - clif_displaymessage(fd, msg_txt(sd,227)); +void clif_parse_ReplyPartyInvite2( int fd, map_session_data *sd ){ +#if PACKETVER >= 20070227 + if( sd == nullptr ){ return; } - party_leave(sd); + + const PACKET_CZ_PARTY_JOIN_REQ_ACK* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + party_reply_invite( *sd, p->party_id, p->flag ); +#endif } -/// Request to expel a party member (CZ_REQ_EXPEL_GROUP_MEMBER). -/// 0103 .L .24B -void clif_parse_RemovePartyMember(int fd, map_session_data *sd) -{ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - if(map_getmapflag(sd->bl.m, MF_PARTYLOCK)) {// Party locked. - clif_displaymessage(fd, msg_txt(sd,227)); +/// Request to leave party. +/// 0100 (CZ_REQ_LEAVE_GROUP) +void clif_parse_LeaveParty( int fd, map_session_data *sd ){ + if( sd == nullptr ){ return; } - party_removemember(sd,RFIFOL(fd,info->pos[0]), - RFIFOCP(fd,info->pos[1])); + + //const PACKET_CZ_REQ_LEAVE_GROUP* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + party_leave( *sd, true ); +} + + +/// Request to expel a party member. +/// 0103 .L .24B (CZ_REQ_EXPEL_GROUP_MEMBER) +void clif_parse_RemovePartyMember( int fd, map_session_data* sd ){ + if( sd == nullptr ){ + return; + } + + const PACKET_CZ_REQ_EXPEL_GROUP_MEMBER* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + party_removemember( *sd, p->AID, p->name ); } @@ -14172,25 +13974,25 @@ void clif_parse_VendingListReq(int fd, map_session_data* sd) } -/// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC). -/// 0134 .W .L { .W .W }* +/// Shop item(s) purchase request. +/// 0134 .W .L { .W .W }* (CZ_PC_PURCHASE_ITEMLIST_FROMMC) void clif_parse_PurchaseReq(int fd, map_session_data* sd){ - struct PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC* p = (struct PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC*)RFIFOP( fd, 0 ); + const PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - vending_purchasereq( sd, p->AID, sd->vended_id, (uint8*)p->list, ( p->packetLength - sizeof( *p ) ) / sizeof( struct CZ_PURCHASE_ITEM_FROMMC ) ); + vending_purchasereq( sd, p->AID, sd->vended_id, (uint8*)p->list, ( p->packetLength - sizeof( *p ) ) / sizeof( p->list[0] ) ); // whether it fails or not, the buy window is closed sd->vended_id = 0; } -/// Shop item(s) purchase request (CZ_PC_PURCHASE_ITEMLIST_FROMMC2). -/// 0801 .W .L .L { .W .W }* +/// Shop item(s) purchase request. +/// 0801 .W .L .L { .W .W }* (CZ_PC_PURCHASE_ITEMLIST_FROMMC2) void clif_parse_PurchaseReq2(int fd, map_session_data* sd){ #if PACKETVER >= 20100105 - struct PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC2* p = (struct PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC2*)RFIFOP( fd, 0 ); + const PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - vending_purchasereq( sd, p->AID, p->UniqueID, (uint8*)p->list, ( p->packetLength - sizeof( *p ) ) / sizeof( struct CZ_PURCHASE_ITEM_FROMMC ) ); + vending_purchasereq( sd, p->AID, p->UniqueID, (uint8*)p->list, ( p->packetLength - sizeof( *p ) ) / sizeof( p->list[0] ) ); // whether it fails or not, the buy window is closed sd->vended_id = 0; @@ -14264,7 +14066,7 @@ void clif_parse_CreateGuild(int fd,map_session_data *sd){ return; } - guild_create(sd, name); + guild_create( *sd, name ); } @@ -14308,7 +14110,7 @@ void clif_parse_GuildRequestInfo(int fd, map_session_data *sd) clif_guild_positioninfolist(sd); break; case 3: // Skill list - clif_guild_skillinfo(sd); + clif_guild_skillinfo( *sd ); break; case 4: // Expulsion list clif_guild_expulsionlist(sd); @@ -14338,28 +14140,28 @@ void clif_parse_GuildChangePositionInfo(int fd, map_session_data *sd) } -/// Request to update the position of guild members (CZ_REQ_CHANGE_MEMBERPOS). -/// 0155 .W { .L .L .L }* +/// Request to update the position of guild members. +/// 0155 .W { .L .L .L }* (CZ_REQ_CHANGE_MEMBERPOS) void clif_parse_GuildChangeMemberPosition( int fd, map_session_data *sd ){ if(!sd->state.gmaster_flag) return; - struct PACKET_CZ_REQ_CHANGE_MEMBERPOS* p = (struct PACKET_CZ_REQ_CHANGE_MEMBERPOS*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_CHANGE_MEMBERPOS* p = reinterpret_cast( RFIFOP( fd, 0 ) ); int16 entries = ( p->packetLength - sizeof( *p ) ) / sizeof( p->list[0] ); for( int16 i = 0; i < entries; i++ ){ - struct PACKET_CZ_REQ_CHANGE_MEMBERPOS_sub& entry = p->list[i]; + const PACKET_CZ_REQ_CHANGE_MEMBERPOS_sub& entry = p->list[i]; // Guild leadership change if( entry.position == 0 ){ if( !battle_config.guild_leaderchange_woe && is_agit_start() ){ - clif_msg( sd, GUILD_MASTER_WOE ); + clif_msg( sd, MSI_IMPOSSIBLE_CHANGE_GUILD_MASTER_IN_SIEGE_TIME ); return; } if( battle_config.guild_leaderchange_delay && DIFF_TICK( time( nullptr ),sd->guild->guild.last_leader_change ) < battle_config.guild_leaderchange_delay ){ - clif_msg( sd, GUILD_MASTER_DELAY ); + clif_msg( sd, MSI_IMPOSSIBLE_CHANGE_GUILD_MASTER_NOT_TIME ); return; } @@ -14465,7 +14267,7 @@ void clif_parse_GuildChangeEmblem2(int fd, map_session_data* sd) { } #if PACKETVER >= 20190724 - const PACKET_CZ_REQ_ADD_NEW_EMBLEM* p = (PACKET_CZ_REQ_ADD_NEW_EMBLEM*)RFIFOP(fd, 0); + const PACKET_CZ_REQ_ADD_NEW_EMBLEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); auto &g = sd->guild; if (!g || g->guild.guild_id != p->guild_id) @@ -14502,99 +14304,74 @@ void clif_parse_GuildChangeNotice(int fd, map_session_data* sd){ guild_change_notice(sd, guild_id, msg1, msg2); } -// Helper function for guild invite functions -int clif_sub_guild_invite(int fd, map_session_data *sd, map_session_data *t_sd) -{ - if (t_sd == nullptr) // not online or does not exist - return 1; - - if (map_getmapflag(sd->bl.m, MF_GUILDLOCK)) {//Guild locked. - clif_displaymessage(fd, msg_txt(sd,228)); - return 1; - } - - if(t_sd && t_sd->state.noask) {// @noask [LuzZza] - clif_noask_sub(sd, t_sd, 2); - return 1; - } - - // Players in a clan can not join a guild - if(t_sd && t_sd->clan){ - return 1; - } - - guild_invite(sd, t_sd); - return 0; -} - -/// Guild invite request (CZ_REQ_JOIN_GUILD). -/// 0168 .L .L .L -void clif_parse_GuildInvite(int fd,map_session_data *sd){ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - map_session_data *t_sd = map_id2sd(RFIFOL(fd,info->pos[0])); -// int inv_aid = RFIFOL(fd,info->pos[1]); -// int inv_cid = RFIFOL(fd,info->pos[2]); - - if (clif_sub_guild_invite(fd, sd, t_sd)) +/// Guild invite request. +/// 0168 .L .L .L (CZ_REQ_JOIN_GUILD) +void clif_parse_GuildInvite( int fd,map_session_data *sd ){ + if( sd == nullptr ){ return; + } + + const PACKET_CZ_REQ_JOIN_GUILD* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + guild_invite( *sd, map_id2sd( p->AID ) ); } /// Guild invite request (/guildinvite) /// 0916 .24B (CZ_REQ_JOIN_GUILD2) -void -clif_parse_GuildInvite2(int fd, map_session_data *sd) { - map_session_data *t_sd = map_nick2sd(RFIFOCP(fd, packet_db[RFIFOW(fd,0)].pos[0]),false); - - if (clif_sub_guild_invite(fd, sd, t_sd)) +void clif_parse_GuildInvite2( int fd, map_session_data *sd ){ +#if PACKETVER >= 20120410 + if( sd == nullptr ){ return; + } + + const PACKET_CZ_REQ_JOIN_GUILD2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + char nick[NAME_LENGTH] = {0}; + + safestrncpy( nick, p->name, NAME_LENGTH ); + + guild_invite( *sd, map_nick2sd( nick, false ) ); +#endif } - -/// Answer to guild invitation (CZ_JOIN_GUILD). -/// 016b .L .L +/// Answer to guild invitation. +/// 016b .L .L (CZ_JOIN_GUILD) /// answer: /// 0 = refuse /// 1 = accept -void clif_parse_GuildReplyInvite(int fd,map_session_data *sd){ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - guild_reply_invite(sd,RFIFOL(fd,info->pos[0]), - RFIFOL(fd,info->pos[1])); +void clif_parse_GuildReplyInvite( int fd, map_session_data *sd ){ + if( sd == nullptr ){ + return; + } + + const PACKET_CZ_JOIN_GUILD* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + guild_reply_invite( *sd, p->guild_id, p->answer ); } - -/// Request to leave guild (CZ_REQ_LEAVE_GUILD). -/// 0159 .L .L .L .40B +/// Request to leave guild. +/// 0159 .L .L .L .40B (CZ_REQ_LEAVE_GUILD) void clif_parse_GuildLeave(int fd,map_session_data *sd){ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - if(map_getmapflag(sd->bl.m, MF_GUILDLOCK)) { //Guild locked. - clif_displaymessage(fd, msg_txt(sd,228)); - return; - } - if( sd->bg_id ) { - clif_displaymessage(fd, msg_txt(sd,670)); //"You can't leave battleground guilds." + if( sd == nullptr ){ return; } - guild_leave(sd,RFIFOL(fd,info->pos[0]), - RFIFOL(fd,info->pos[1]), - RFIFOL(fd,info->pos[2]), - RFIFOCP(fd,info->pos[3])); + const PACKET_CZ_REQ_LEAVE_GUILD* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + guild_leave( *sd, p->guild_id, p->AID, p->CID, p->message ); } -/// Request to expel a member of a guild (CZ_REQ_BAN_GUILD). -/// 015b .L .L .L .40B +/// Request to expel a member of a guild. +/// 015b .L .L .L .40B (CZ_REQ_BAN_GUILD) void clif_parse_GuildExpulsion(int fd,map_session_data *sd){ - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - if( map_getmapflag(sd->bl.m, MF_GUILDLOCK) || sd->bg_id ) - { // Guild locked. - clif_displaymessage(fd, msg_txt(sd,228)); + if( sd == nullptr ){ return; } - guild_expulsion(sd,RFIFOL(fd,info->pos[0]), - RFIFOL(fd,info->pos[1]), - RFIFOL(fd,info->pos[2]), - RFIFOCP(fd,info->pos[3])); + + const PACKET_CZ_REQ_BAN_GUILD* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + guild_expulsion( *sd, p->guild_id, p->AID, p->CID, p->message ); } @@ -14634,7 +14411,7 @@ void clif_parse_GuildRequestAlliance(int fd, map_session_data *sd) // @noask [LuzZza] if(t_sd && t_sd->state.noask) { - clif_noask_sub(sd, t_sd, 3); + clif_noask_sub( *sd, *t_sd, 396 ); // Autorejected alliance request from %s. return; } @@ -14693,7 +14470,7 @@ void clif_parse_GuildOpposition(int fd, map_session_data *sd) // @noask [LuzZza] if(t_sd && t_sd->state.noask) { - clif_noask_sub(sd, t_sd, 4); + clif_noask_sub( *sd, *t_sd, 397 ); // Autorejected opposition request from %s. return; } @@ -14701,18 +14478,19 @@ void clif_parse_GuildOpposition(int fd, map_session_data *sd) } -/// Request to delete own guild (CZ_REQ_DISORGANIZE_GUILD). -/// 015d .40B +/// Request to delete own guild. +/// 015d .40B (CZ_REQ_DISORGANIZE_GUILD) /// key: /// now guild name; might have been (intended) email, since the /// field name and size is same as the one in CH_DELETE_CHAR. -void clif_parse_GuildBreak(int fd, map_session_data *sd) -{ - if( map_getmapflag(sd->bl.m, MF_GUILDLOCK) ) { //Guild locked. - clif_displaymessage(fd, msg_txt(sd,228)); +void clif_parse_GuildBreak( int fd, map_session_data *sd ){ + if( sd == nullptr ){ return; } - guild_break(sd,RFIFOCP(fd,packet_db[RFIFOW(fd,0)].pos[0])); + + const PACKET_CZ_REQ_DISORGANIZE_GUILD* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + guild_break( *sd, p->key ); } @@ -15332,13 +15110,13 @@ int clif_friendslist_toggle_sub(map_session_data *sd,va_list ap) /// 0201 .W { .L .L .24B }* /// 0201 .W { .L .L }* >= 20180221 void clif_friendslist_send( map_session_data& sd ){ - struct PACKET_ZC_FRIENDS_LIST* p = (struct PACKET_ZC_FRIENDS_LIST*)packet_buffer; + PACKET_ZC_FRIENDS_LIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_FRIENDS_LIST; p->PacketLength = sizeof( *p ); for( int i = 0, c = 0; i < MAX_FRIENDS && sd.status.friends[i].char_id; i++ ){ - struct PACKET_ZC_FRIENDS_LIST_sub& f = p->friends[c]; + PACKET_ZC_FRIENDS_LIST_sub& f = p->friends[c]; f.AID = sd.status.friends[i].account_id; f.CID = sd.status.friends[i].char_id; @@ -15346,8 +15124,8 @@ void clif_friendslist_send( map_session_data& sd ){ safestrncpy( f.name, sd.status.friends[i].name, sizeof( f.name ) ); #endif + p->PacketLength += static_castPacketLength)>( sizeof( f ) ); c++; - p->PacketLength += sizeof( f ); } clif_send( p, p->PacketLength, &sd.bl, SELF ); @@ -15430,7 +15208,7 @@ void clif_parse_FriendsListAdd(int fd, map_session_data *sd) // @noask [LuzZza] if(f_sd->state.noask) { - clif_noask_sub(sd, f_sd, 5); + clif_noask_sub( *sd, *f_sd, 398 ); // Autorejected friend request from %s. return; } @@ -15845,7 +15623,7 @@ void clif_Mail_setattachment( map_session_data* sd, int index, int amount, uint8 WFIFOB(fd,4) = flag; WFIFOSET(fd,packet_len(0x255)); #else - struct PACKET_ZC_ACK_ADD_ITEM_RODEX p; + PACKET_ZC_ACK_ADD_ITEM_RODEX p = {}; if( flag ){ memset( &p, 0, sizeof( p ) ); @@ -16352,10 +16130,10 @@ void clif_Mail_read( map_session_data *sd, int mail_id ){ #else msg_len += 1; // Zero Termination - struct PACKET_ZC_ACK_READ_RODEX *p = (struct PACKET_ZC_ACK_READ_RODEX *)packet_buffer; + PACKET_ZC_ACK_READ_RODEX* p = reinterpret_cast( packet_buffer ); p->PacketType = HEADER_ZC_ACK_READ_RODEX; - p->PacketLength = sizeof( struct PACKET_ZC_ACK_READ_RODEX ); + p->PacketLength = sizeof( *p ); p->opentype = msg->type; p->MailID = msg->id; p->TextcontentsLength = static_castTextcontentsLength)>( msg_len ); @@ -16371,7 +16149,7 @@ void clif_Mail_read( map_session_data *sd, int mail_id ){ std::shared_ptr data = item_db.find(item->nameid); if( item->nameid > 0 && item->amount > 0 && data != nullptr ){ - struct PACKET_ZC_ACK_READ_RODEX_SUB* mailitem = (struct PACKET_ZC_ACK_READ_RODEX_SUB*)WBUFP( p, p->PacketLength ); + PACKET_ZC_ACK_READ_RODEX_SUB* mailitem = reinterpret_cast( WBUFP( p, p->PacketLength ) ); mailitem->ITID = client_nameid( item->nameid ); mailitem->count = item->amount; @@ -16388,7 +16166,7 @@ void clif_Mail_read( map_session_data *sd, int mail_id ){ mailitem->grade = item->enchantgrade; #endif - p->PacketLength += sizeof( *mailitem ); + p->PacketLength += static_castPacketLength)>( sizeof( *mailitem ) ); p->ItemCnt++; } } @@ -16489,9 +16267,9 @@ void clif_Mail_Receiver_Ack( map_session_data* sd, uint32 char_id, short class_, void clif_parse_Mail_Receiver_Check(int fd, map_session_data *sd) { #if PACKETVER >= 20140423 #if PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_RE_NUM >= 20211103 || PACKETVER_ZERO_NUM >= 20201118 - struct PACKET_CZ_CHECKNAME2* p = (struct PACKET_CZ_CHECKNAME2*)RFIFOP( fd, 0 ); + const PACKET_CZ_CHECKNAME2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); #else - struct PACKET_CZ_CHECKNAME1* p = (struct PACKET_CZ_CHECKNAME1*)RFIFOP( fd, 0 ); + const PACKET_CZ_CHECKNAME1* p = reinterpret_cast( RFIFOP( fd, 0 ) ); #endif static char name[NAME_LENGTH]; @@ -16657,11 +16435,11 @@ void clif_parse_Mail_delete(int fd, map_session_data *sd){ } -/// Request to return a mail (CZ_REQ_MAIL_RETURN). -/// 0273 .L .24B +/// Request to return a mail. +/// 0273 .L .24B (CZ_REQ_MAIL_RETURN) void clif_parse_Mail_return(int fd, map_session_data *sd){ #if PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_RE_NUM >= 20211103 || PACKETVER_ZERO_NUM >= 20201118 - struct PACKET_CZ_RODEX_RETURN* p = (struct PACKET_CZ_RODEX_RETURN*)RFIFOP( fd, 0 ); + const PACKET_CZ_RODEX_RETURN* p = reinterpret_cast( RFIFOP( fd, 0 ) ); //ShowDump( p, sizeof( p ) ); @@ -16716,7 +16494,7 @@ void clif_parse_Mail_setattach(int fd, map_session_data *sd){ flag = mail_setitem(sd, idx, amount); if( flag == MAIL_ATTACH_EQUIPSWITCH ){ - clif_msg( sd, C_ITEM_EQUIP_SWITCH ); + clif_msg( sd, MSI_SWAP_EQUIPITEM_UNREGISTER_FIRST ); }else{ clif_Mail_setattachment(sd,idx,amount,flag); } @@ -17197,7 +16975,7 @@ void clif_cashshop_open( map_session_data* sd, int tab ){ #if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined(PACKETVER_ZERO) nullpo_retv( sd ); - struct PACKET_ZC_SE_CASHSHOP_OPEN p; + PACKET_ZC_SE_CASHSHOP_OPEN p = {}; p.packetType = HEADER_ZC_SE_CASHSHOP_OPEN; p.cashPoints = sd->cashPoints; @@ -17217,7 +16995,7 @@ void clif_parse_cashshop_open_request( int fd, map_session_data* sd ){ int tab = 0; #if PACKETVER >= 20191224 - struct PACKET_CZ_SE_CASHSHOP_OPEN2* p = (struct PACKET_CZ_SE_CASHSHOP_OPEN2*)RFIFOP( fd, 0 ); + const PACKET_CZ_SE_CASHSHOP_OPEN2* p = reinterpret_cast( RFIFOP( fd, 0 ) ); tab = p->tab; #endif @@ -17246,7 +17024,7 @@ void clif_parse_cashshop_close( int fd, map_session_data* sd ){ //08c0 .W .L .W (ZC_ACK_SE_CASH_ITEM_LIST2) void clif_parse_CashShopReqTab(int fd, map_session_data *sd) { #if PACKETVER_MAIN_NUM >= 20100824 || PACKETVER_RE_NUM >= 20100824 || defined(PACKETVER_ZERO) - struct PACKET_CZ_REQ_SE_CASH_TAB_CODE* p_in = (struct PACKET_CZ_REQ_SE_CASH_TAB_CODE*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_SE_CASH_TAB_CODE* p_in = reinterpret_cast( RFIFOP( fd, 0 ) ); // TODO: most likely wrong answer packet. Most likely HEADER_ZC_ACK_SE_CASH_ITEM_LIST (0x847) would be correct [Lemongrass] // [4144] packet exists only in 2011 and was dropped after @@ -17268,10 +17046,10 @@ void clif_parse_CashShopReqTab(int fd, map_session_data *sd) { } #endif - struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2* p = (struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2*)packet_buffer; + PACKET_ZC_ACK_SE_CASH_ITEM_LIST2* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_ACK_SE_CASH_ITEM_LIST2; - p->packetLength = sizeof( struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2 ); + p->packetLength = sizeof( *p ); p->tab = tab->tab; p->count = 0; @@ -17279,7 +17057,7 @@ void clif_parse_CashShopReqTab(int fd, map_session_data *sd) { p->items[p->count].itemId = client_nameid( item->nameid ); p->items[p->count].price = item->price; - p->packetLength += sizeof( struct PACKET_ZC_ACK_SE_CASH_ITEM_LIST2_sub ); + p->packetLength += static_cast(p->packetLength)>( sizeof( p->items[0] ) ); p->count++; } @@ -17289,9 +17067,7 @@ void clif_parse_CashShopReqTab(int fd, map_session_data *sd) { } //08ca .W W .W (ZC_ACK_SCHEDULER_CASHITEM) -void clif_cashshop_list( map_session_data* sd ){ - nullpo_retv( sd ); - +void clif_cashshop_list( map_session_data& sd ){ for( const auto& pair : cash_shop_db ){ std::shared_ptr tab = pair.second; @@ -17306,10 +17082,10 @@ void clif_cashshop_list( map_session_data* sd ){ } #endif - struct PACKET_ZC_ACK_SCHEDULER_CASHITEM *p = (struct PACKET_ZC_ACK_SCHEDULER_CASHITEM *)packet_buffer; + PACKET_ZC_ACK_SCHEDULER_CASHITEM* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_ACK_SCHEDULER_CASHITEM; - p->packetLength = sizeof( struct PACKET_ZC_ACK_SCHEDULER_CASHITEM ); + p->packetLength = sizeof( *p ); p->count = 0; p->tabNum = tab->tab; @@ -17323,30 +17099,30 @@ void clif_cashshop_list( map_session_data* sd ){ p->items[p->count].location = 0; p->items[p->count].viewSprite = 0; }else{ - p->items[p->count].location = pc_equippoint_sub( sd, id ); + p->items[p->count].location = pc_equippoint_sub( &sd, id ); p->items[p->count].viewSprite = id->look; } #endif p->count++; - p->packetLength += sizeof( p->items[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); if( ( static_cast( p->packetLength ) + sizeof( p->items[0] ) ) >= INT16_MAX ){ // Send current data - clif_send( p, p->packetLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd.bl, SELF ); // Start a new packet p->count = 0; - p->packetLength = sizeof( struct PACKET_ZC_ACK_SCHEDULER_CASHITEM ); + p->packetLength = sizeof( *p ); } } - clif_send( p, p->packetLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd.bl, SELF ); } } void clif_parse_cashshop_list_request( int fd, map_session_data* sd ){ if( !sd->status.cashshop_sent ) { - clif_cashshop_list( sd ); + clif_cashshop_list( *sd ); #if PACKETVER_SUPPORTS_SALES sale_notify_login(sd); #endif @@ -17357,23 +17133,14 @@ void clif_parse_cashshop_list_request( int fd, map_session_data* sd ){ /// List of items offered in a cash shop (ZC_PC_CASH_POINT_ITEMLIST). /// 0287 .W .L { .L .L .B .W }* /// 0287 .W .L .L { .L .L .B .W }* (PACKETVER >= 20070711) -void clif_cashshop_show( map_session_data *sd, struct npc_data *nd ){ - nullpo_retv( sd ); - nullpo_retv( nd ); - - int fd = sd->fd; - - if( !session_isActive( fd ) ){ - return; - } - - sd->npc_shopid = nd->bl.id; +void clif_cashshop_show( map_session_data& sd, npc_data& nd ){ + sd.npc_shopid = nd.bl.id; int cost[2] = { 0, 0 }; - npc_shop_currency_type( sd, nd, cost, true ); + npc_shop_currency_type( &sd, &nd, cost, true ); - struct PACKET_ZC_PC_CASH_POINT_ITEMLIST* p = (struct PACKET_ZC_PC_CASH_POINT_ITEMLIST*)packet_buffer; + PACKET_ZC_PC_CASH_POINT_ITEMLIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_PC_CASH_POINT_ITEMLIST; p->packetLength = sizeof( *p ); @@ -17382,23 +17149,23 @@ void clif_cashshop_show( map_session_data *sd, struct npc_data *nd ){ p->kafraPoints = cost[1]; #endif - for( int i = 0; i < nd->u.shop.count; i++ ) { - struct item_data* id = itemdb_search( nd->u.shop.shop_item[i].nameid ); + for( int i = 0; i < nd.u.shop.count; i++ ) { + struct item_data* id = itemdb_search( nd.u.shop.shop_item[i].nameid ); - p->items[i].price = nd->u.shop.shop_item[i].value; - p->items[i].discountPrice = nd->u.shop.shop_item[i].value; // Discount Price + p->items[i].price = nd.u.shop.shop_item[i].value; + p->items[i].discountPrice = nd.u.shop.shop_item[i].value; // Discount Price p->items[i].itemType = itemtype( id->nameid ); p->items[i].itemId = client_nameid( id->nameid ); #ifdef ENABLE_OLD_CASHSHOP_PREVIEW_PATCH - p->items[i].location = pc_equippoint_sub( sd, id ); + p->items[i].location = pc_equippoint_sub( &sd, id ); p->items[i].viewSprite = id->look; memset( p->items[i].unused, 0, sizeof( p->items[i].unused ) ); #endif - p->packetLength += sizeof( p->items[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); } - clif_send( p, p->packetLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd.bl, SELF ); } /// Cashshop Buy Ack (ZC_PC_CASH_POINT_UPDATE). @@ -17442,7 +17209,7 @@ void clif_cashshop_result( map_session_data *sd, t_itemid item_id, uint16 result #if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined( PACKETVER_ZERO ) nullpo_retv( sd ); - struct PACKET_ZC_SE_PC_BUY_CASHITEM_RESULT packet = {}; + PACKET_ZC_SE_PC_BUY_CASHITEM_RESULT packet = {}; packet.packetType = HEADER_ZC_SE_PC_BUY_CASHITEM_RESULT; if( item_id != 0 ){ @@ -17470,17 +17237,17 @@ void clif_parse_npccashshop_buy( int fd, map_session_data *sd ){ return; } - struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM* p = (struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM *)RFIFOP( fd, 0 ); + const PACKET_CZ_PC_BUY_CASH_POINT_ITEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); #if PACKETVER < 20070711 clif_cashshop_ack( sd, npc_cashshop_buy( sd, p->itemId, p->amount, 0 ) ); #elif PACKETVER < 20101116 clif_cashshop_ack( sd, npc_cashshop_buy( sd, p->itemId, p->amount, p->kafraPoints ) ); #else - int s_itl = sizeof( struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub ); + int s_itl = sizeof( p->items[0] ); - if( p->packetLength < sizeof( struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM ) || p->packetLength != sizeof( struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM ) + p->count * s_itl ){ - ShowWarning( "Player %u sent incorrect cash shop buy packet (len %u:%" PRIdPTR ")!\n", sd->status.char_id, p->packetLength, sizeof( struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM ) + p->count * s_itl ); + if( p->packetLength < sizeof( *p ) || p->packetLength != sizeof( *p ) + p->count * s_itl ){ + ShowWarning( "Player %u sent incorrect cash shop buy packet (len %u:%" PRIdPTR ")!\n", sd->status.char_id, p->packetLength, sizeof( *p ) + p->count * s_itl ); return; } @@ -17504,12 +17271,12 @@ void clif_parse_npccashshop_buy( int fd, map_session_data *sd ){ /// Request to buy item(s) from cash shop. /// 0848 .W .W .W .L .W { .W .W .W }.6B*count (CZ_SE_PC_BUY_CASHITEM_LIST) void clif_parse_cashshop_buy( int fd, map_session_data *sd ){ - struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST* p = (struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST*)RFIFOP( fd, 0 ); + const PACKET_CZ_SE_PC_BUY_CASHITEM_LIST* p = reinterpret_cast( RFIFOP( fd, 0 ) ); - int s_itl = sizeof( struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST_sub ); + int s_itl = sizeof( p->items[0] ); - if( p->packetLength < sizeof( struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST ) || p->packetLength != sizeof( struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST ) + p->count * s_itl ){ - ShowWarning( "Player %u sent incorrect cash shop buy packet (len %u:%" PRIdPTR ")!\n", sd->status.char_id, p->packetLength, sizeof( struct PACKET_CZ_SE_PC_BUY_CASHITEM_LIST ) + p->count * s_itl ); + if( p->packetLength < sizeof( *p ) || p->packetLength != sizeof( *p ) + p->count * s_itl ){ + ShowWarning( "Player %u sent incorrect cash shop buy packet (len %u:%" PRIdPTR ")!\n", sd->status.char_id, p->packetLength, sizeof( *p ) + p->count * s_itl ); return; } @@ -17657,9 +17424,9 @@ void clif_parse_ViewPlayerEquip(int fd, map_session_data* sd) if (sd->bl.m != tsd->bl.m) return; else if( tsd->status.show_equip || pc_has_permission(sd, PC_PERM_VIEW_EQUIPMENT) ) - clif_viewequip_ack(sd, tsd); + clif_viewequip_ack( *sd, *tsd ); else - clif_msg(sd, VIEW_EQUIP_FAIL); + clif_msg(sd, MSI_OPEN_EQUIPEDITEM_REFUSED); } @@ -17706,11 +17473,12 @@ void clif_parse_configuration( int fd, map_session_data* sd ){ } /// Request to change party invitation tick. +/// 02C8 .B (CZ_PARTY_CONFIG) /// value: /// 0 = disabled (triggered by /accept) /// 1 = enabled (triggered by /refuse) void clif_parse_PartyTick( int fd, map_session_data* sd ){ - PACKET_CZ_PARTY_CONFIG* p = (PACKET_CZ_PARTY_CONFIG*)RFIFOP( fd, 0 ); + const PACKET_CZ_PARTY_CONFIG* p = reinterpret_cast( RFIFOP( fd, 0 ) ); sd->status.disable_partyinvite = p->refuseInvite; @@ -18312,22 +18080,11 @@ void clif_parse_mercenary_action(int fd, map_session_data* sd) } -/// Mercenary Message -/// message: -/// 0 = Mercenary soldier's duty hour is over. -/// 1 = Your mercenary soldier has been killed. -/// 2 = Your mercenary soldier has been fired. -/// 3 = Your mercenary soldier has ran away. -void clif_mercenary_message(map_session_data* sd, int message){ - clif_msg(sd, MERC_MSG_BASE + message); -} - - /// Notification about the remaining time of a rental item. /// 0298 .W .L (ZC_CASH_TIME_COUNTER) void clif_rental_time( map_session_data* sd, t_itemid nameid, int seconds ){ // '' item will disappear in minutes. - struct PACKET_ZC_CASH_TIME_COUNTER p; + PACKET_ZC_CASH_TIME_COUNTER p = {}; p.packetType = HEADER_ZC_CASH_TIME_COUNTER; p.itemId = client_nameid( nameid ); @@ -18341,7 +18098,7 @@ void clif_rental_time( map_session_data* sd, t_itemid nameid, int seconds ){ /// 0299 .W .W (ZC_CASH_ITEM_DELETE) void clif_rental_expired( map_session_data* sd, int index, t_itemid nameid ){ // '' item has been deleted from the Inventory - struct PACKET_ZC_CASH_ITEM_DELETE p; + PACKET_ZC_CASH_ITEM_DELETE p = {}; p.packetType = HEADER_ZC_CASH_ITEM_DELETE; p.index = client_index( index ); @@ -18716,7 +18473,7 @@ void clif_bg_queue_entry_init(map_session_data *sd) { nullpo_retv(sd); - struct PACKET_ZC_ENTRY_QUEUE_INIT p = {}; + PACKET_ZC_ENTRY_QUEUE_INIT p = {}; p.packetType = HEADER_ZC_ENTRY_QUEUE_INIT; @@ -18741,8 +18498,7 @@ void clif_font(map_session_data *sd) /// Required to start the instancing information window on Client /// This window re-appears each "refresh" of client automatically until the keep_limit reaches 0. /// S 0x2cb .61B .W -void clif_instance_create(int instance_id, int num) -{ +void clif_instance_create( int instance_id, size_t num ){ #if PACKETVER >= 20071128 map_session_data *sd = nullptr; enum send_target target = PARTY; @@ -18760,11 +18516,10 @@ void clif_instance_create(int instance_id, int num) WBUFW(buf,0) = 0x2cb; safestrncpy(WBUFCP(buf,2), db->name.c_str(), INSTANCE_NAME_LENGTH); - WBUFW(buf,63) = num; + WBUFW( buf, 63 ) = static_cast( num ); + clif_send(buf,packet_len(0x2cb),&sd->bl,target); #endif - - return; } /// To announce Instancing queue creation if no maps available @@ -18853,7 +18608,7 @@ void clif_parse_MemorialDungeonCommand(int fd, map_session_data *sd) if (pc_istrading(sd) || pc_isdead(sd) || map_getmapdata(sd->bl.m)->instance_id > 0) return; - const PACKET_CZ_MEMORIALDUNGEON_COMMAND *p = (PACKET_CZ_MEMORIALDUNGEON_COMMAND *)RFIFOP(fd, 0); + const PACKET_CZ_MEMORIALDUNGEON_COMMAND* p = reinterpret_cast( RFIFOP( fd, 0 ) ); switch (p->command) { case COMMAND_MEMORIALDUNGEON_DESTROY_FORCE: @@ -18893,7 +18648,7 @@ void clif_party_show_picker( map_session_data* sd, struct item* item_data ){ struct item_data* id = itemdb_search( item_data->nameid ); - struct PACKET_ZC_ITEM_PICKUP_PARTY p; + PACKET_ZC_ITEM_PICKUP_PARTY p = {}; p.packetType = HEADER_ZC_ITEM_PICKUP_PARTY; p.AID = sd->status.account_id; @@ -19102,18 +18857,18 @@ void clif_buyingstore_open(map_session_data* sd) } -/// Request to create a buying store (CZ_REQ_OPEN_BUYING_STORE). -/// 0811 .W .L .B .80B { .W .W .L }* +/// Request to create a buying store. +/// 0811 .W .L .B .80B { .W .W .L }* (CZ_REQ_OPEN_BUYING_STORE) /// result: /// 0 = cancel /// 1 = open static void clif_parse_ReqOpenBuyingStore( int fd, map_session_data* sd ){ - const struct PACKET_CZ_REQ_OPEN_BUYING_STORE *p = (struct PACKET_CZ_REQ_OPEN_BUYING_STORE *)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_OPEN_BUYING_STORE* p = reinterpret_cast( RFIFOP( fd, 0 ) ); // TODO: Make this check global for all variable length packets. // minimum packet length - if( p->packetLength < sizeof( struct PACKET_CZ_REQ_OPEN_BUYING_STORE ) ){ - ShowError( "clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%" PRIdPTR ", length=%u, account_id=%d).\n", sizeof( struct PACKET_CZ_REQ_OPEN_BUYING_STORE ), p->packetLength, sd->bl.id ); + if( p->packetLength < sizeof( *p ) ){ + ShowError( "clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%" PRIdPTR ", length=%u, account_id=%d).\n", sizeof( *p ), p->packetLength, sd->bl.id ); return; } @@ -19131,14 +18886,14 @@ static void clif_parse_ReqOpenBuyingStore( int fd, map_session_data* sd ){ safestrncpy( storename, p->storeName, sizeof( storename ) ); // so that buyingstore_create knows, how many elements it has access to - int packet_len = p->packetLength - sizeof( struct PACKET_CZ_REQ_OPEN_BUYING_STORE ); + int packet_len = p->packetLength - sizeof( *p ); - if( packet_len % sizeof( struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub ) ){ - ShowError( "clif_parse_ReqOpenBuyingStore: Unexpected item list size %u (account_id=%d, block size=%" PRIdPTR ")\n", packet_len, sd->bl.id, sizeof( struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub ) ); + if( packet_len % sizeof( p->items[0] ) ){ + ShowError( "clif_parse_ReqOpenBuyingStore: Unexpected item list size %u (account_id=%d, block size=%" PRIdPTR ")\n", packet_len, sd->bl.id, sizeof( p->items[0] ) ); return; } - buyingstore_create( sd, p->zenyLimit, p->result, storename, p->items, packet_len / sizeof( struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub ), nullptr ); + buyingstore_create( sd, p->zenyLimit, p->result, storename, p->items, packet_len / sizeof( p->items[0] ), nullptr ); } @@ -19161,33 +18916,30 @@ void clif_buyingstore_open_failed(map_session_data* sd, unsigned short result, u } -/// Notification, that the requested buying store was created (ZC_MYITEMLIST_BUYING_STORE). -/// 0813 .W .L .L { .L .W .B .W }* -void clif_buyingstore_myitemlist( map_session_data* sd ){ - nullpo_retv( sd ); +/// Notification, that the requested buying store was created. +/// 0813 .W .L .L { .L .W .B .W }* (ZC_MYITEMLIST_BUYING_STORE) +void clif_buyingstore_myitemlist( map_session_data& sd ){ +#if PACKETVER >= 20100309 + PACKET_ZC_MYITEMLIST_BUYING_STORE* p = reinterpret_cast( packet_buffer ); - int fd = sd->fd; + p->packetType = HEADER_ZC_MYITEMLIST_BUYING_STORE; + p->packetLength = sizeof( *p ); + p->AID = sd.bl.id; + p->zenyLimit = sd.buyingstore.zenylimit; - if( !session_isActive( fd ) ){ - return; + for( int i = 0; i < sd.buyingstore.slots; i++ ){ + PACKET_ZC_MYITEMLIST_BUYING_STORE_sub& entry = p->items[i]; + + entry.price = sd.buyingstore.items[i].price; + entry.amount = sd.buyingstore.items[i].amount; + entry.itemType = itemtype( sd.buyingstore.items[i].nameid ); + entry.itemId = client_nameid( sd.buyingstore.items[i].nameid ); + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); } - int length = sizeof( struct PACKET_ZC_MYITEMLIST_BUYING_STORE ) + sd->buyingstore.slots * sizeof( struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub ); - WFIFOHEAD( fd, length ); - struct PACKET_ZC_MYITEMLIST_BUYING_STORE *p = (struct PACKET_ZC_MYITEMLIST_BUYING_STORE *)WFIFOP( fd, 0 ); - p->packetType = 0x813; - p->packetLength = length; - p->AID = sd->bl.id; - p->zenyLimit = sd->buyingstore.zenylimit; - - for( int i = 0; i < sd->buyingstore.slots; i++ ){ - p->items[i].price = sd->buyingstore.items[i].price; - p->items[i].amount = sd->buyingstore.items[i].amount; - p->items[i].itemType = itemtype( sd->buyingstore.items[i].nameid ); - p->items[i].itemId = client_nameid( sd->buyingstore.items[i].nameid ); - } - - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); +#endif } @@ -19204,7 +18956,7 @@ void clif_buyingstore_entry( map_session_data& sd, struct block_list* tbl ){ target = SELF; } - struct PACKET_ZC_BUYING_STORE_ENTRY p = {}; + PACKET_ZC_BUYING_STORE_ENTRY p = {}; p.packetType = HEADER_ZC_BUYING_STORE_ENTRY; p.makerAID = sd.status.account_id; @@ -19235,7 +18987,7 @@ void clif_buyingstore_disappear_entry( map_session_data& sd, struct block_list* target = SELF; } - struct PACKET_ZC_DISAPPEAR_BUYING_STORE_ENTRY p = {}; + PACKET_ZC_DISAPPEAR_BUYING_STORE_ENTRY p = {}; p.packetType = HEADER_ZC_DISAPPEAR_BUYING_STORE_ENTRY; p.makerAID = sd.status.account_id; @@ -19258,56 +19010,52 @@ static void clif_parse_ReqClickBuyingStore(int fd, map_session_data* sd) /// Sends buying store item list. /// 0818 .W .L .L .L { .L .W .B .W }* (ZC_ACK_ITEMLIST_BUYING_STORE) -void clif_buyingstore_itemlist( map_session_data* sd, map_session_data* pl_sd ){ - nullpo_retv( sd ); - nullpo_retv( pl_sd ); +void clif_buyingstore_itemlist( map_session_data& sd, map_session_data& pl_sd ){ +#if PACKETVER >= 20100309 + PACKET_ZC_ACK_ITEMLIST_BUYING_STORE* p = reinterpret_cast( packet_buffer ); - int fd = sd->fd; + p->packetType = HEADER_ZC_ACK_ITEMLIST_BUYING_STORE; + p->packetLength = sizeof( *p ); + p->AID = pl_sd.bl.id; + p->storeId = pl_sd.buyer_id; + p->zenyLimit = pl_sd.buyingstore.zenylimit; - if( !session_isActive( fd ) ){ - return; + for( int i = 0; i < pl_sd.buyingstore.slots; i++ ){ + PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub& entry = p->items[i]; + + entry.price = pl_sd.buyingstore.items[i].price; + entry.amount = pl_sd.buyingstore.items[i].amount; // TODO: Figure out, if no longer needed items (amount == 0) are listed on official. + entry.itemType = itemtype(pl_sd.buyingstore.items[i].nameid); + entry.itemId = client_nameid( pl_sd.buyingstore.items[i].nameid ); + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); } - int length = sizeof( struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE ) + pl_sd->buyingstore.slots * sizeof( struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE_sub ); - WFIFOHEAD( fd, length ); - struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE *p = (struct PACKET_ZC_ACK_ITEMLIST_BUYING_STORE *)WFIFOP( fd, 0 ); - p->packetType = 0x818; - p->packetLength = length; - p->AID = pl_sd->bl.id; - p->storeId = pl_sd->buyer_id; - p->zenyLimit = pl_sd->buyingstore.zenylimit; - - for( int i = 0; i < pl_sd->buyingstore.slots; i++ ){ - p->items[i].price = pl_sd->buyingstore.items[i].price; - p->items[i].amount = pl_sd->buyingstore.items[i].amount; // TODO: Figure out, if no longer needed items (amount == 0) are listed on official. - p->items[i].itemType = itemtype(pl_sd->buyingstore.items[i].nameid); - p->items[i].itemId = client_nameid( pl_sd->buyingstore.items[i].nameid ); - } - - WFIFOSET( fd, p->packetLength ); + clif_send( p, p->packetLength, &sd.bl, SELF ); +#endif } /// Request to sell items to a buying store. /// 0819 .W .L .L { .W .W .W }* (CZ_REQ_TRADE_BUYING_STORE) static void clif_parse_ReqTradeBuyingStore( int fd, map_session_data* sd ){ - const struct PACKET_CZ_REQ_TRADE_BUYING_STORE *p = (struct PACKET_CZ_REQ_TRADE_BUYING_STORE *)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_TRADE_BUYING_STORE* p = reinterpret_cast( RFIFOP( fd, 0 ) ); // minimum packet length - if( p->packetLength < sizeof( struct PACKET_CZ_REQ_TRADE_BUYING_STORE ) ){ - ShowError( "clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%" PRIdPTR ", length=%u, account_id=%d).\n", sizeof( struct PACKET_CZ_REQ_TRADE_BUYING_STORE ), p->packetLength, sd->bl.id ); + if( p->packetLength < sizeof( *p ) ){ + ShowError( "clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%" PRIdPTR ", length=%u, account_id=%d).\n", sizeof( *p ), p->packetLength, sd->bl.id ); return; } // so that buyingstore_trade knows, how many elements it has access to - int packet_len = p->packetLength - sizeof( struct PACKET_CZ_REQ_TRADE_BUYING_STORE ); + int packet_len = p->packetLength - sizeof( *p ); - if( packet_len % sizeof( struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub ) ){ - ShowError( "clif_parse_ReqTradeBuyingStore: Unexpected item list size %u (account_id=%d, buyer_id=%d, block size=%" PRIdPTR ")\n", packet_len, sd->bl.id, p->AID, sizeof( struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub ) ); + if( packet_len % sizeof( p->items[0] ) ){ + ShowError( "clif_parse_ReqTradeBuyingStore: Unexpected item list size %u (account_id=%d, buyer_id=%d, block size=%" PRIdPTR ")\n", packet_len, sd->bl.id, p->AID, sizeof( p->items[0] ) ); return; } - buyingstore_trade( sd, p->AID, p->storeId, p->items, packet_len / sizeof( struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub ) ); + buyingstore_trade( sd, p->AID, p->storeId, p->items, packet_len / sizeof( p->items[0] ) ); } @@ -19332,7 +19080,7 @@ void clif_buyingstore_trade_failed_buyer(map_session_data* sd, short result) /// 081b .W .W .L (ZC_UPDATE_ITEM_FROM_BUYING_STORE) /// 09e6 .W .W .L .L .L .L (ZC_UPDATE_ITEM_FROM_BUYING_STORE2) void clif_buyingstore_update_item( map_session_data* sd, t_itemid nameid, unsigned short amount, uint32 char_id, int zeny ){ - struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE p; + PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE p = {}; p.packetType = buyingStoreUpdateItemType; p.itemId = client_nameid( nameid ); @@ -19367,15 +19115,15 @@ void clif_buyingstore_delete_item(map_session_data* sd, short index, unsigned sh } -/// Notifies the seller, that a buying store trade failed (ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER). -/// 0824 .W .W +/// Notifies the seller, that a buying store trade failed. +/// 0824 .W .W (ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER) /// result: /// 5 = "The deal has failed." (0x39, MSI_DEAL_FAIL) /// 6 = "The trade failed, because the entered amount of item %s is higher, than the buyer is willing to buy." (0x6d3, MSI_BUYINGSTORE_TRADE_OVERCOUNT) /// 7 = "The trade failed, because the buyer is lacking required balance." (0x6d1, MSI_BUYINGSTORE_TRADE_LACKBUYERZENY) /// ? = nothing void clif_buyingstore_trade_failed_seller( map_session_data* sd, short result, t_itemid nameid ){ - struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER p; + PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER p = {}; p.packetType = HEADER_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER; p.result = result; @@ -19388,8 +19136,8 @@ void clif_buyingstore_trade_failed_seller( map_session_data* sd, short result, t /// Search Store Info System /// -/// Request to search for stores (CZ_SEARCH_STORE_INFO). -/// 0835 .W .B .L .L .B .B { .W }* { .W }* +/// Request to search for stores. +/// 0835 .W .B .L .L .B .B { .W }* { .W }* (CZ_SEARCH_STORE_INFO) /// type: /// 0 = Vending /// 1 = Buying Store @@ -19398,76 +19146,93 @@ void clif_buyingstore_trade_failed_seller( map_session_data* sd, short result, t /// amount of card slots. If the client does not know about the item it /// cannot be searched. static void clif_parse_SearchStoreInfo( int fd, map_session_data *sd ){ - const struct PACKET_CZ_SEARCH_STORE_INFO *p = (struct PACKET_CZ_SEARCH_STORE_INFO *)RFIFOP( fd, 0 ); + if (!battle_config.feature_search_stores) + return; + + const PACKET_CZ_SEARCH_STORE_INFO* p = reinterpret_cast( RFIFOP( fd, 0 ) ); // minimum packet length - if( p->packetLength < sizeof( struct PACKET_CZ_SEARCH_STORE_INFO ) ){ - ShowError( "clif_parse_SearchStoreInfo: Malformed packet (expected length=%" PRIdPTR ", length=%u, account_id=%d).\n", sizeof( struct PACKET_CZ_SEARCH_STORE_INFO ), p->packetLength, sd->bl.id ); + if( p->packetLength < sizeof( *p ) ){ + ShowError( "clif_parse_SearchStoreInfo: Malformed packet (expected length=%" PRIdPTR ", length=%u, account_id=%d).\n", sizeof( *p ), p->packetLength, sd->bl.id ); return; } // check, if there is enough data for the claimed count of items - int packet_len = p->packetLength - sizeof( struct PACKET_CZ_SEARCH_STORE_INFO ); + int packet_len = p->packetLength - sizeof( *p ); - if( packet_len % sizeof( struct PACKET_CZ_SEARCH_STORE_INFO_item ) ){ - ShowError( "clif_parse_SearchStoreInfo: Unexpected item list size %u (account_id=%d, block size=%" PRIdPTR ")\n", packet_len, sd->bl.id, sizeof( struct PACKET_CZ_SEARCH_STORE_INFO_item ) ); + if( packet_len % sizeof( p->items[0] ) ){ + ShowError( "clif_parse_SearchStoreInfo: Unexpected item list size %u (account_id=%d, block size=%" PRIdPTR ")\n", packet_len, sd->bl.id, sizeof( p->items[0] ) ); return; } - int count = packet_len / sizeof( struct PACKET_CZ_SEARCH_STORE_INFO_item ); + int count = packet_len / sizeof( p->items[0] ); if( count < p->itemsCount + p->cardsCount ){ ShowError( "clif_parse_SearchStoreInfo: Malformed packet (expected count=%u, count=%u, account_id=%d).\n", p->itemsCount + p->cardsCount, count, sd->bl.id ); return; } - searchstore_query( sd, p->searchType, p->minPrice, p->maxPrice, &p->items[0], p->itemsCount, &p->items[p->itemsCount], p->cardsCount ); + if ( p->searchType > SEARCHTYPE_BUYING_STORE ) { + ShowError( "clif_parse_SearchStoreInfo: Invalid search type %u (account_id=%d).\n", p->searchType, sd->bl.id ); + return; + } + + if ( p->minPrice > battle_config.vending_max_value ) { + ShowError( "clif_parse_SearchStoreInfo: Invalid min price %u (account_id=%d).\n", p->minPrice, sd->bl.id ); + return; + } + + if ( p->maxPrice > battle_config.vending_max_value ) { + ShowError( "clif_parse_SearchStoreInfo: Invalid max price %u (account_id=%d).\n", p->maxPrice, sd->bl.id ); + return; + } + + searchstore_query( *sd, static_cast(p->searchType), p->minPrice, p->maxPrice, &p->items[0], p->itemsCount, &p->items[p->itemsCount], p->cardsCount ); } -/// Results for a store search request (ZC_SEARCH_STORE_INFO_ACK). -/// 0836 .W .B .B .B { .L .L .80B .W .B .L .W .B .W .W .W .W }* +/// Results for a store search request. +/// 0836 .W .B .B .B { .L .L .80B .W .B .L .W .B .W .W .W .W }* (ZC_SEARCH_STORE_INFO_ACK) /// is first page: /// 0 = appends to existing results /// 1 = clears previous results before displaying this result set /// is next page: /// 0 = no "next" label /// 1 = "next" label to retrieve more results -void clif_search_store_info_ack( map_session_data* sd ){ +void clif_search_store_info_ack( map_session_data& sd ){ #if PACKETVER_MAIN_NUM >= 20100817 || PACKETVER_RE_NUM >= 20100706 || defined(PACKETVER_ZERO) - nullpo_retv( sd ); - - int fd = sd->fd; - - if( !session_isActive( fd ) ){ + if (!battle_config.feature_search_stores) return; - } - uint32 start = sd->searchstore.pages * SEARCHSTORE_RESULTS_PER_PAGE ; - uint32 end = umin( static_cast( sd->searchstore.items.size() ), start + SEARCHSTORE_RESULTS_PER_PAGE ); - int len = sizeof( struct PACKET_ZC_SEARCH_STORE_INFO_ACK ) + ( end - start ) * sizeof( struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub ); + uint32 start = sd.searchstore.pages * SEARCHSTORE_RESULTS_PER_PAGE ; + uint32 end = umin( static_cast( sd.searchstore.items.size() ), start + SEARCHSTORE_RESULTS_PER_PAGE ); - WFIFOHEAD( fd, len ); - - struct PACKET_ZC_SEARCH_STORE_INFO_ACK *p = (struct PACKET_ZC_SEARCH_STORE_INFO_ACK *)WFIFOP( fd, 0 ); + PACKET_ZC_SEARCH_STORE_INFO_ACK* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_SEARCH_STORE_INFO_ACK; - p->packetLength = len; - p->firstPage = !sd->searchstore.pages; + p->packetLength = sizeof( *p ); + p->firstPage = !sd.searchstore.pages; p->nextPage = searchstore_querynext( sd ); - p->usesCount = (uint8)umin( sd->searchstore.uses, UINT8_MAX ); + p->usesCount = static_castusesCount)>( std::min( sd.searchstore.uses, std::numeric_limitsusesCount)>::max() ) ); - for( int i = 0; i < end - start; i++ ) { - std::shared_ptr ssitem = sd->searchstore.items[start + i]; + for( int i = 0, count = 0; i < end - start; i++ ){ + std::shared_ptr ssitem = sd.searchstore.items[start + i]; - p->items[i].storeId = ssitem->store_id; - p->items[i].AID = ssitem->account_id; - safestrncpy( p->items[i].shopName, ssitem->store_name, MESSAGE_SIZE ); - p->items[i].itemId = client_nameid( ssitem->nameid ); - p->items[i].itemType = itemtype( ssitem->nameid ); - p->items[i].price = ssitem->price; - p->items[i].amount = ssitem->amount; - p->items[i].refine = ssitem->refine; + if( ssitem == nullptr ){ + continue; + } + + + PACKET_ZC_SEARCH_STORE_INFO_ACK_sub& entry = p->items[count]; + + entry.storeId = ssitem->store_id; + entry.AID = ssitem->account_id; + safestrncpy( entry.shopName, ssitem->store_name, MESSAGE_SIZE ); + entry.itemId = client_nameid( ssitem->nameid ); + entry.itemType = itemtype( ssitem->nameid ); + entry.price = ssitem->price; + entry.amount = ssitem->amount; + entry.refine = ssitem->refine; // make-up an item for clif_addcards struct item it = {}; @@ -19478,94 +19243,107 @@ void clif_search_store_info_ack( map_session_data* sd ){ it.nameid = ssitem->nameid; it.amount = ssitem->amount; - clif_addcards( &p->items[i].slot, &it ); + clif_addcards( &entry.slot, &it ); #if PACKETVER >= 20150226 - clif_add_random_options( p->items[i].option_data, it ); + clif_add_random_options( entry.option_data, it ); #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 - p->items[i].grade = ssitem->enchantgrade; + entry.grade = ssitem->enchantgrade; #endif #endif + + p->packetLength += static_castpacketLength)>( sizeof( entry ) ); + count++; } - WFIFOSET( fd, len ); + clif_send( p, p->packetLength, &sd.bl, SELF ); #endif } -/// Notification of failure when searching for stores (ZC_SEARCH_STORE_INFO_FAILED). -/// 0837 .B -/// reason: -/// 0 = "No matching stores were found." (0x70b) -/// 1 = "There are too many results. Please enter more detailed search term." (0x6f8) -/// 2 = "You cannot search anymore." (0x706) -/// 3 = "You cannot search yet." (0x708) -/// 4 = "No sale (purchase) information available." (0x705) -void clif_search_store_info_failed(map_session_data* sd, unsigned char reason) -{ - int fd = sd->fd; +/// Notification of failure when searching for stores. +/// 0837 .B (ZC_SEARCH_STORE_INFO_FAILED) +void clif_search_store_info_failed(map_session_data& sd, e_searchstore_failure reason){ +#if PACKETVER_MAIN_NUM >= 20100601 || PACKETVER_RE_NUM >= 20100601 || defined(PACKETVER_ZERO) + if (!battle_config.feature_search_stores) + return; - WFIFOHEAD(fd,packet_len(0x837)); - WFIFOW(fd,0) = 0x837; - WFIFOB(fd,2) = reason; - WFIFOSET(fd,packet_len(0x837)); -} + PACKET_ZC_SEARCH_STORE_INFO_FAILED packet{}; + packet.packetType = HEADER_ZC_SEARCH_STORE_INFO_FAILED; + packet.reason = static_cast(reason); -/// Request to display next page of results (CZ_SEARCH_STORE_INFO_NEXT_PAGE). -/// 0838 -static void clif_parse_SearchStoreInfoNextPage(int fd, map_session_data* sd) -{ - searchstore_next(sd); -} - - -/// Opens the search store window (ZC_OPEN_SEARCH_STORE_INFO). -/// 083a .W .B -/// type: -/// 0 = Search Stores -/// 1 = Search Stores (Cash), asks for confirmation, when clicking a store -void clif_open_search_store_info(map_session_data* sd) -{ - int fd = sd->fd; - - WFIFOHEAD(fd,packet_len(0x83a)); - WFIFOW(fd,0) = 0x83a; - WFIFOW(fd,2) = sd->searchstore.effect; -#if PACKETVER > 20100701 - WFIFOB(fd,4) = (unsigned char)umin(sd->searchstore.uses, UINT8_MAX); + clif_send(&packet, sizeof(packet), &sd.bl, SELF); #endif - WFIFOSET(fd,packet_len(0x83a)); } -/// Request to close the store search window (CZ_CLOSE_SEARCH_STORE_INFO). -/// 083b -static void clif_parse_CloseSearchStoreInfo(int fd, map_session_data* sd) -{ - searchstore_close(sd); +/// Request to display next page of results. +/// 0838 (CZ_SEARCH_STORE_INFO_NEXT_PAGE) +static void clif_parse_SearchStoreInfoNextPage(int fd, map_session_data* sd){ + if (!battle_config.feature_search_stores) + return; + + searchstore_next(*sd); } -/// Request to invoke catalog effect on a store from search results (CZ_SSILIST_ITEM_CLICK). -/// 083c .L .L .W +/// Opens the search store window. +/// 083a .W .B (ZC_OPEN_SEARCH_STORE_INFO) +void clif_open_search_store_info(map_session_data& sd){ +#if PACKETVER_MAIN_NUM >= 20100701 || PACKETVER_RE_NUM >= 20100701 || defined(PACKETVER_ZERO) + if (!battle_config.feature_search_stores) + return; + + PACKET_ZC_OPEN_SEARCH_STORE_INFO packet{}; + + packet.packetType = HEADER_ZC_OPEN_SEARCH_STORE_INFO; + packet.effect = static_cast(sd.searchstore.effect); +#if PACKETVER_MAIN_NUM >= 20100701 || PACKETVER_RE_NUM >= 20100701 || defined(PACKETVER_ZERO) + packet.remainingUses = static_cast( std::min( sd.searchstore.uses, std::numeric_limits::max() ) ); +#endif + + clif_send(&packet, sizeof(packet), &sd.bl, SELF); +#endif +} + + +/// Request to close the store search window. +/// 083b (CZ_CLOSE_SEARCH_STORE_INFO) +static void clif_parse_CloseSearchStoreInfo(int fd, map_session_data* sd){ + if (!battle_config.feature_search_stores) + return; + + searchstore_close(*sd); +} + + +/// Request to invoke catalog effect on a store from search results. +/// 083c .L .L .W (CZ_SSILIST_ITEM_CLICK) static void clif_parse_SearchStoreInfoListItemClick( int fd, map_session_data* sd ){ - const struct PACKET_CZ_SSILIST_ITEM_CLICK *p = (struct PACKET_CZ_SSILIST_ITEM_CLICK *)RFIFOP( fd, 0 ); + if (!battle_config.feature_search_stores) + return; - searchstore_click( sd, p->AID, p->storeId, p->itemId ); + const PACKET_CZ_SSILIST_ITEM_CLICK* p = reinterpret_cast( RFIFOP( fd, 0 ) ); + + searchstore_click( *sd, p->AID, p->storeId, p->itemId ); } -/// Notification of the store position on current map (ZC_SSILIST_ITEM_CLICK_ACK). -/// 083d .W .W -void clif_search_store_info_click_ack(map_session_data* sd, short x, short y) -{ - int fd = sd->fd; +/// Notification of the store position on current map. +/// 083d .W .W (ZC_SSILIST_ITEM_CLICK_ACK) +void clif_search_store_info_click_ack(map_session_data& sd, int16 x, int16 y){ +#if PACKETVER_MAIN_NUM >= 20100608 || PACKETVER_RE_NUM >= 20100608 || defined(PACKETVER_ZERO) + if (!battle_config.feature_search_stores) + return; - WFIFOHEAD(fd,packet_len(0x83d)); - WFIFOW(fd,0) = 0x83d; - WFIFOW(fd,2) = x; - WFIFOW(fd,4) = y; - WFIFOSET(fd,packet_len(0x83d)); + PACKET_ZC_SSILIST_ITEM_CLICK_ACK packet{}; + + packet.packetType = HEADER_ZC_SSILIST_ITEM_CLICK_ACK; + packet.x = x; + packet.y = y; + + clif_send(&packet, sizeof(packet), &sd.bl, SELF); +#endif } @@ -19602,43 +19380,42 @@ void clif_parse_debug(int fd,map_session_data *sd) * Server tells client to display a window similar to Magnifier (item) one * Server populates the window with avilable elemental converter options according to player's inventory *------------------------------------------*/ -void clif_elementalconverter_list( map_session_data *sd ){ - nullpo_retv( sd ); - - PACKET_ZC_MAKINGARROW_LIST *p = (PACKET_ZC_MAKINGARROW_LIST *)packet_buffer; +void clif_elementalconverter_list( map_session_data& sd ){ + PACKET_ZC_MAKINGARROW_LIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_MAKINGARROW_LIST; p->packetLength = sizeof( *p ); int count = 0; for( int i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ){ - if( skill_can_produce_mix( sd, skill_produce_db[i].nameid, 23, 1 ) ){ + if( skill_can_produce_mix( &sd, skill_produce_db[i].nameid, 23, 1 ) ){ p->items[count].itemId = client_nameid( skill_produce_db[i].nameid ); - p->packetLength += sizeof( p->items[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); count++; } } - clif_send( p, p->packetLength, &sd->bl, SELF ); + clif_send( p, p->packetLength, &sd.bl, SELF ); if( count > 0 ){ - sd->menuskill_id = SA_CREATECON; - sd->menuskill_val = count; + sd.menuskill_id = SA_CREATECON; + sd.menuskill_val = count; } } /** * Rune Knight **/ -void clif_millenniumshield(struct block_list *bl, short shields) { -#if PACKETVER >= 20081217 - unsigned char buf[10]; +void clif_millenniumshield( block_list& bl, int16 shields ){ +#if PACKETVER >= 20081126 + PACKET_ZC_MILLENNIUMSHIELD packet{}; - WBUFW(buf,0) = 0x440; - WBUFL(buf,2) = bl->id; - WBUFW(buf,6) = shields; - WBUFW(buf,8) = 0; - clif_send(buf,packet_len(0x440),bl,AREA); + packet.packetType = HEADER_ZC_MILLENNIUMSHIELD; + packet.aid = bl.id; + packet.num = shields; + packet.state = 0; + + clif_send( &packet, sizeof( packet ), &bl, AREA ); #endif } @@ -19649,7 +19426,7 @@ void clif_millenniumshield(struct block_list *bl, short shields) { * Magic Decoy Material List *------------------------------------------*/ void clif_magicdecoy_list( map_session_data& sd, uint16 skill_lv, short x, short y ){ - PACKET_ZC_MAKINGARROW_LIST* p = (PACKET_ZC_MAKINGARROW_LIST*)packet_buffer; + PACKET_ZC_MAKINGARROW_LIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_MAKINGARROW_LIST; p->packetLength = sizeof( *p ); @@ -19658,7 +19435,7 @@ void clif_magicdecoy_list( map_session_data& sd, uint16 skill_lv, short x, short for( size_t i = 0; i < MAX_INVENTORY; i++ ){ if( itemdb_group.item_exists( IG_ELEMENT, sd.inventory.u.items_inventory[i].nameid ) ){ p->items[count].itemId = client_nameid( sd.inventory.u.items_inventory[i].nameid ); - p->packetLength += sizeof( p->items[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); count++; } } @@ -19678,7 +19455,7 @@ void clif_magicdecoy_list( map_session_data& sd, uint16 skill_lv, short x, short * Guillotine Cross Poisons List *------------------------------------------*/ void clif_poison_list( map_session_data& sd, uint16 skill_lv ){ - PACKET_ZC_MAKINGARROW_LIST* p = (PACKET_ZC_MAKINGARROW_LIST*)packet_buffer; + PACKET_ZC_MAKINGARROW_LIST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_MAKINGARROW_LIST; p->packetLength = sizeof( *p ); @@ -19687,7 +19464,7 @@ void clif_poison_list( map_session_data& sd, uint16 skill_lv ){ for( size_t i = 0; i < MAX_INVENTORY; i++ ){ if( itemdb_group.item_exists( IG_POISON, sd.inventory.u.items_inventory[i].nameid ) ){ p->items[count].itemId = client_nameid( sd.inventory.u.items_inventory[i].nameid ); - p->packetLength += sizeof( p->items[0] ); + p->packetLength += static_castpacketLength)>( sizeof( p->items[0] ) ); count++; } } @@ -19708,19 +19485,19 @@ void clif_autoshadowspell_list( map_session_data& sd ){ if( sd.menuskill_id == SC_AUTOSHADOWSPELL ) return; - PACKET_ZC_SKILL_SELECT_REQUEST* p = (PACKET_ZC_SKILL_SELECT_REQUEST*)packet_buffer; + PACKET_ZC_SKILL_SELECT_REQUEST* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_SKILL_SELECT_REQUEST; p->packetLength = sizeof( *p ); - p->why = 1; // enum PACKET_ZC_SKILL_SELECT_REQUEST::enumWHY::WHY_SC_AUTOSHADOWSPELL = 0x1 + p->flag = 1; // enum PACKET_ZC_SKILL_SELECT_REQUEST::enumWHY::WHY_SC_AUTOSHADOWSPELL = 0x1 size_t count = 0; for( size_t i = 0; i < MAX_SKILL; i++ ){ if( sd.status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd.status.skill[i].id > 0 && skill_get_inf2(sd.status.skill[i].id, INF2_ISAUTOSHADOWSPELL)) { - p->skills[count].skill_id = sd.status.skill[i].id; - p->packetLength += sizeof( p->skills[0] ); + p->skillIds[count] = sd.status.skill[i].id; + p->packetLength += static_castpacketLength)>( sizeof( p->skillIds[0] ) ); count++; } } @@ -19729,7 +19506,7 @@ void clif_autoshadowspell_list( map_session_data& sd ){ clif_send( p, p->packetLength, &sd.bl, SELF ); sd.menuskill_id = SC_AUTOSHADOWSPELL; - sd.menuskill_val = count; + sd.menuskill_val = static_cast( count ); } else { status_change_end( &sd.bl, SC_STOP ); clif_skill_fail( sd, SC_AUTOSHADOWSPELL, USESKILL_FAIL_IMITATION_SKILL_NONE ); @@ -19766,19 +19543,18 @@ int clif_skill_itemlistwindow( map_session_data *sd, uint16 skill_id, uint16 ski /*========================================== * Select a skill into a given list (used by SA_AUTOSPELL/SC_AUTOSHADOWSPELL) * 0443 .L .W (CZ_SKILL_SELECT_RESPONSE) - * RFIFOL(fd,2) - type (currently not used) *------------------------------------------*/ void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) { +#if PACKETVER >= 20081210 if( sd == nullptr ){ return; } - struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; - //int type = RFIFOL(fd,info->pos[0]); //WHY_LOWERVER_COMPATIBILITY = 0x0, WHY_SC_AUTOSHADOWSPELL = 0x1, + const PACKET_CZ_SKILL_SELECT_RESPONSE* p = reinterpret_cast( RFIFOP( fd, 0 ) ); if (sd->menuskill_id == SA_AUTOSPELL) { sd->state.workinprogress = WIP_DISABLE_NONE; - skill_autospell(sd, RFIFOW(fd, info->pos[1])); + skill_autospell(sd, p->selectedSkillId); } else if (sd->menuskill_id == SC_AUTOSHADOWSPELL) { if (pc_istrading(sd)) { clif_skill_fail( *sd, sd->ud.skill_id ); @@ -19786,26 +19562,28 @@ void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) { return; } - skill_select_menu(*sd, RFIFOW(fd, info->pos[1])); + skill_select_menu(*sd, p->selectedSkillId); } else return; clif_menuskill_clear(sd); +#endif } -/// Kagerou/Oboro amulet spirit (ZC_SPIRITS_ATTRIBUTE). -/// 08cf .L .W .W -void clif_spiritcharm(map_session_data *sd) { - unsigned char buf[10]; +/// Kagerou/Oboro amulet spirit. +/// 08cf .L .W .W (ZC_SPIRITS_ATTRIBUTE) +void clif_spiritcharm( map_session_data& sd ){ +#if PACKETVER >= 20111102 + PACKET_ZC_SPIRITS_ATTRIBUTE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_SPIRITS_ATTRIBUTE; + packet.aid = sd.bl.id; + packet.spiritsType = static_cast(sd.spiritcharm_type); + packet.num = static_cast(sd.spiritcharm); - WBUFW(buf,0) = 0x08cf; - WBUFL(buf,2) = sd->bl.id; - WBUFW(buf,6) = sd->spiritcharm_type; - WBUFW(buf,8) = sd->spiritcharm; - clif_send(buf, packet_len(0x08cf), &sd->bl, AREA); + clif_send( &packet, sizeof( packet ), &sd.bl, AREA ); +#endif } @@ -19822,7 +19600,7 @@ void clif_parse_MoveItem( int fd, map_session_data* sd ){ return; } - PACKET_CZ_INVENTORY_TAB* p = (PACKET_CZ_INVENTORY_TAB*)RFIFOP( fd, 0 ); + const PACKET_CZ_INVENTORY_TAB* p = reinterpret_cast( RFIFOP( fd, 0 ) ); uint16 index = server_index( p->index ); @@ -19923,7 +19701,7 @@ static void clif_loadConfirm( map_session_data *sd ){ #if PACKETVER_MAIN_NUM >= 20190403 || PACKETVER_RE_NUM >= 20190320 || PACKETVER_ZERO_NUM >= 20190410 nullpo_retv( sd ); - struct PACKET_ZC_NOTIFY_ACTORINIT p = {}; + PACKET_ZC_NOTIFY_ACTORINIT p = {}; p.packetType = HEADER_ZC_NOTIFY_ACTORINIT; @@ -20249,10 +20027,10 @@ void clif_display_pinfo( map_session_data& sd ){ //3:TPLUS details_penalty[PINFO_CAFE] = 0; - struct PACKET_ZC_PERSONAL_INFOMATION* p = (struct PACKET_ZC_PERSONAL_INFOMATION*)packet_buffer; + PACKET_ZC_PERSONAL_INFOMATION* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_PERSONAL_INFOMATION; - p->length = sizeof( *p ) + PINFO_MAX * sizeof( p->details[0] ); + p->length = sizeof( *p ); #if PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO) p->total_exp = 100 * 1000; p->total_death = 100 * 1000; @@ -20279,6 +20057,8 @@ void clif_display_pinfo( map_session_data& sd ){ p->total_exp += p->details[i].exp; p->total_death += p->details[i].death; p->total_drop += p->details[i].drop; + + p->length += static_castlength)>( sizeof( p->details[0] ) ); } clif_send( p, p->length, &sd.bl, SELF ); @@ -20301,7 +20081,7 @@ void clif_parse_GMFullStrip(int fd, map_session_data *sd) { **/ void clif_crimson_marker( map_session_data& sd, struct block_list& bl, bool remove ){ #if PACKETVER_MAIN_NUM >= 20130731 || PACKETVER_RE_NUM >= 20130707 || defined(PACKETVER_ZERO) - struct PACKET_ZC_C_MARKERINFO p = {}; + PACKET_ZC_C_MARKERINFO p = {}; p.PacketType = HEADER_ZC_C_MARKERINFO; p.AID = bl.id; @@ -20322,7 +20102,7 @@ void clif_crimson_marker( map_session_data& sd, struct block_list& bl, bool remo **/ void clif_notify_bindOnEquip( map_session_data& sd, int16 index ){ #if PACKETVER >= 20070227 - struct PACKET_ZC_NOTIFY_BIND_ON_EQUIP p = {}; + PACKET_ZC_NOTIFY_BIND_ON_EQUIP p = {}; p.packetType = HEADER_ZC_NOTIFY_BIND_ON_EQUIP; p.index = client_index( index ); @@ -20376,27 +20156,35 @@ void clif_party_leaderchanged(map_session_data *sd, int prev_leader_aid, int new * Sends a clan message to a player * 098e .W .24B .?B (ZC_NOTIFY_CLAN_CHAT) **/ -void clif_clan_message(struct clan *clan,const char *mes,int len){ +void clif_clan_message( struct clan& clan, const char *mes, size_t len ){ #if PACKETVER >= 20131223 - map_session_data *sd; - uint8 buf[256]; + map_session_data* sd = clan_getavailablesd( clan ); if( len == 0 ){ return; - }else if( len > (sizeof(buf)-5-NAME_LENGTH) ){ - ShowWarning("clif_clan_message: Truncated message '%s' (len=%d, max=%" PRIuPTR ", clan_id=%d).\n", mes, len, sizeof(buf)-5, clan->id); - len = sizeof(buf)-5-NAME_LENGTH; } - WBUFW(buf, 0) = 0x98e; - WBUFW(buf, 2) = len + 5 + NAME_LENGTH; + PACKET_ZC_NOTIFY_CLAN_CHAT* p = reinterpret_cast( packet_buffer ); + + // Maximum message length = size of our packet buffer minus fixed size of the packet and 1 byte zero termination + static size_t len_max = sizeof( packet_buffer ) - sizeof( *p ) - 1; + + // Is the length bigger than the maximum message length + if( len > len_max ){ + ShowWarning( "clif_clan_message: Truncated message '%s' (len=%" PRIuPTR ", max=%" PRIuPTR ", clan_id=%d).\n", mes, len, len_max, clan.id ); + len = len_max; + } + + p->PacketType = HEADER_ZC_NOTIFY_CLAN_CHAT; + p->PacketLength = sizeof( *p ); // Offially the sender name should also be filled here, but it is not required by the client and since it's in the message too we do not fill it - //safestrncpy(WBUFCP(buf,4), sendername, NAME_LENGTH); - safestrncpy(WBUFCP(buf,4+NAME_LENGTH), mes, len+1); + safestrncpy( p->MemberName, "", sizeof( p->MemberName ) ); - if((sd = clan_getavailablesd(clan)) != nullptr) - clif_send(buf, WBUFW(buf,2), &sd->bl, CLAN); + safestrncpy( p->Message, mes, len + 1 ); + p->PacketLength += static_castPacketLength)>( len + 1 ); + + clif_send( p, p->PacketLength, &sd->bl, CLAN ); #endif } @@ -20406,13 +20194,17 @@ void clif_clan_message(struct clan *clan,const char *mes,int len){ **/ void clif_parse_clan_chat( int fd, map_session_data* sd ){ #if PACKETVER >= 20131223 + if( sd == nullptr ){ + return; + } + char name[NAME_LENGTH], message[CHAT_SIZE_MAX], output[CHAT_SIZE_MAX+NAME_LENGTH*2]; // validate packet and retrieve name and message if( !clif_process_message(sd, false, name, message, output ) ) return; - clan_send_message( sd, RFIFOCP(fd,4), RFIFOW(fd,2) - 4 ); + clan_send_message( *sd, RFIFOCP(fd,4), RFIFOW(fd,2) - 4 ); #endif } @@ -20421,52 +20213,38 @@ void clif_parse_clan_chat( int fd, map_session_data* sd ){ * 098a .W .L .24B .24B .16B .B * .B { .24B } * alliance count { .24B } * antagonist count (ZC_CLANINFO) **/ -void clif_clan_basicinfo( map_session_data *sd ){ -#if PACKETVER >= 20131223 - int fd, offset, length, i, flag; - struct clan* clan; - char mapname[MAP_NAME_LENGTH_EXT]; - - nullpo_retv( sd ); - nullpo_retv( clan = sd->clan ); - - // Check if the player has a valid session and is not autotrading - if( !clif_session_isValid( sd ) ){ +void clif_clan_basicinfo( map_session_data& sd ){ +#if PACKETVER_MAIN_NUM >= 20130626 || PACKETVER_RE_NUM >= 20130605 || defined(PACKETVER_ZERO) + struct clan* clan = sd.clan; + + if( clan == nullptr ){ return; } - length = 8 + 2 * NAME_LENGTH + MAP_NAME_LENGTH_EXT + 2; - fd = sd->fd; + PACKET_ZC_CLANINFO* p = reinterpret_cast( packet_buffer ); - WFIFOHEAD(fd,length); + p->PacketType = HEADER_ZC_CLANINFO; + p->PacketLength = sizeof( *p ); + p->ClanID = clan->id; + safestrncpy( p->ClanName, clan->name, sizeof( p->ClanName ) ); + safestrncpy( p->MasterName, clan->master, sizeof( p->MasterName ) ); + mapindex_getmapname_ext( clan->map, p->Map ); + p->AllyCount = clan_get_alliance_count( *clan, 0 ); + p->AntagonistCount = clan_get_alliance_count( *clan, 1 ); - memset( WFIFOP(fd, 0), 0, length ); - - WFIFOW( fd, 0 ) = 0x98a; - WFIFOL( fd, 4 ) = clan->id; - offset = 8; - safestrncpy( WFIFOCP( fd, offset ), clan->name, NAME_LENGTH ); - offset += NAME_LENGTH; - safestrncpy( WFIFOCP( fd, offset ), clan->master, NAME_LENGTH ); - offset += NAME_LENGTH; - mapindex_getmapname_ext( clan->map, mapname ); - safestrncpy( WFIFOCP( fd, offset ), mapname, MAP_NAME_LENGTH_EXT ); - offset += MAP_NAME_LENGTH_EXT; - - WFIFOB(fd,offset++) = clan_get_alliance_count(clan,0); - WFIFOB(fd,offset++) = clan_get_alliance_count(clan,1); - - for( flag = 0; flag < 2; flag++ ){ - for( i = 0; i < MAX_CLANALLIANCE; i++ ){ + for( int flag = 0; flag < 2; flag++ ){ + for( int i = 0; i < MAX_CLANALLIANCE; i++ ){ if( clan->alliance[i].clan_id > 0 && clan->alliance[i].opposition == flag ){ - safestrncpy( WFIFOCP( fd, offset ), clan->alliance[i].name, NAME_LENGTH ); - offset += NAME_LENGTH; + char* name = reinterpret_cast( WBUFP( p, p->PacketLength ) ); + + safestrncpy( name, clan->alliance[i].name, NAME_LENGTH ); + + p->PacketLength += static_castPacketLength)>( NAME_LENGTH ); } } } - WFIFOW( fd, 2 ) = offset; - WFIFOSET(fd,offset); + clif_send( p, p->PacketLength, &sd.bl, SELF ); #endif } @@ -20474,17 +20252,21 @@ void clif_clan_basicinfo( map_session_data *sd ){ * Updates the online and maximum player count of a clan. * 0988 .W .W (ZC_NOTIFY_CLAN_CONNECTINFO) **/ -void clif_clan_onlinecount( struct clan* clan ){ +void clif_clan_onlinecount( struct clan& clan ){ #if PACKETVER >= 20131223 - uint8 buf[6]; - map_session_data *sd; + map_session_data* sd = clan_getavailablesd( clan ); - WBUFW(buf,0) = 0x988; - WBUFW(buf,2) = clan->connect_member; - WBUFW(buf,4) = clan->max_member; + if( sd == nullptr){ + return; + } - if((sd = clan_getavailablesd(clan)) != nullptr) - clif_send(buf, 6, &sd->bl, CLAN); + PACKET_ZC_NOTIFY_CLAN_CONNECTINFO p = {}; + + p.PacketType = HEADER_ZC_NOTIFY_CLAN_CONNECTINFO; + p.NumConnect = clan.connect_member; + p.NumTotal = clan.max_member; + + clif_send( &p, sizeof( p ), &sd->bl, CLAN ); #endif } @@ -20492,21 +20274,13 @@ void clif_clan_onlinecount( struct clan* clan ){ * Notifies the client that the player has left his clan. * 0989 (ZC_ACK_CLAN_LEAVE) **/ -void clif_clan_leave( map_session_data* sd ){ +void clif_clan_leave( map_session_data& sd ){ #if PACKETVER >= 20131223 - int fd; - - nullpo_retv( sd ); - - if( !clif_session_isValid( sd ) ){ - return; - } - - fd = sd->fd; + PACKET_ZC_ACK_CLAN_LEAVE p = {}; - WFIFOHEAD(fd,2); - WFIFOW(fd,0) = 0x989; - WFIFOSET(fd,2); + p.PacketType = HEADER_ZC_ACK_CLAN_LEAVE; + + clif_send( &p, sizeof( p ), &sd.bl, SELF ); #endif } @@ -20917,7 +20691,7 @@ void clif_parse_roulette_item( int fd, map_session_data* sd ){ **/ void clif_merge_item_ack( map_session_data &sd, enum MERGE_ITEM_ACK type, uint16 index = 0, uint16 count = 0 ){ #if PACKETVER_MAIN_NUM >= 20120314 || PACKETVER_RE_NUM >= 20120221 || defined(PACKETVER_ZERO) - struct PACKET_ZC_ACK_MERGE_ITEM p = {}; + PACKET_ZC_ACK_MERGE_ITEM p = {}; p.packetType = HEADER_ZC_ACK_MERGE_ITEM; if( type == MERGE_ITEM_SUCCESS ){ @@ -20979,7 +20753,7 @@ static bool clif_merge_item_check(struct item_data *id, struct item *it) { **/ void clif_merge_item_open( map_session_data& sd ){ #if PACKETVER_MAIN_NUM >= 20120314 || PACKETVER_RE_NUM >= 20120221 || defined(PACKETVER_ZERO) - struct PACKET_ZC_MERGE_ITEM_OPEN* p = (struct PACKET_ZC_MERGE_ITEM_OPEN*)packet_buffer; + PACKET_ZC_MERGE_ITEM_OPEN* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_MERGE_ITEM_OPEN; p->packetLen = sizeof( *p ); @@ -20996,13 +20770,13 @@ void clif_merge_item_open( map_session_data& sd ){ if( clif_merge_item_has_pair( &sd, it ) ){ p->items[n++].index = client_index( i ); - p->packetLen += sizeof( p->items[0] ); + p->packetLen += static_castpacketLen)>( sizeof( p->items[0] ) ); } } // No item need to be merged if( n < 2 ){ - clif_msg( &sd, MERGE_ITEM_NOT_AVAILABLE ); + clif_msg( &sd, MSI_NOT_EXIST_MERGE_ITEM ); return; } @@ -21017,13 +20791,13 @@ void clif_merge_item_open( map_session_data& sd ){ * @param sd **/ void clif_parse_merge_item_req( int fd, map_session_data* sd ){ - struct PACKET_CZ_REQ_MERGE_ITEM* p = (struct PACKET_CZ_REQ_MERGE_ITEM*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_MERGE_ITEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); int count = ( p->packetLength - sizeof( *p ) ) / sizeof( p->indices[0] ); // No item need to be merged if( count < 2 ){ - clif_msg( sd, MERGE_ITEM_NOT_AVAILABLE ); + clif_msg( sd, MSI_NOT_EXIST_MERGE_ITEM ); return; } @@ -21034,7 +20808,7 @@ void clif_parse_merge_item_req( int fd, map_session_data* sd ){ } if( !clif_merge_item_check( sd->inventory_data[idx_main], &sd->inventory.u.items_inventory[idx_main] ) ){ - clif_msg( sd, MERGE_ITEM_NOT_AVAILABLE ); + clif_msg( sd, MSI_NOT_EXIST_MERGE_ITEM ); return; } @@ -21058,7 +20832,7 @@ void clif_parse_merge_item_req( int fd, map_session_data* sd ){ } if( !clif_merge_item_check( sd->inventory_data[idx], &sd->inventory.u.items_inventory[idx] ) ){ - clif_msg( sd, MERGE_ITEM_NOT_AVAILABLE ); + clif_msg( sd, MSI_NOT_EXIST_MERGE_ITEM ); return; } @@ -21066,7 +20840,7 @@ void clif_parse_merge_item_req( int fd, map_session_data* sd ){ } if( indices.empty() ){ - clif_msg( sd, MERGE_ITEM_NOT_AVAILABLE ); + clif_msg( sd, MSI_NOT_EXIST_MERGE_ITEM ); return; } @@ -21140,7 +20914,7 @@ void clif_broadcast_obtain_special_item( const char *char_name, t_itemid nameid, case ITEMOBTAIN_TYPE_BOXITEM: #if PACKETVER >= 20091201 { - struct PACKET_ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN_item p = {}; + PACKET_ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN_item p = {}; p.PacketType = package_item_announceType; p.PacketLength = sizeof( p ); @@ -21274,55 +21048,60 @@ void clif_navigateTo(map_session_data *sd, const char* mapname, uint16 x, uint16 #endif } -/// Send hat effects to the client (ZC_HAT_EFFECT). -/// 0A3B .W .L .B { .W } -void clif_hat_effects( map_session_data* sd, struct block_list* bl, enum send_target target ){ +/// Send hat effects to the client. +/// 0A3B .W .L .B { .W } (ZC_EQUIPMENT_EFFECT) +void clif_hat_effects( map_session_data& sd, block_list& bl, enum send_target target ){ #if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO) map_session_data *tsd; - struct block_list* tbl; + block_list* tbl; if( target == SELF ){ - tsd = BL_CAST(BL_PC,bl); - tbl = &sd->bl; + tsd = BL_CAST(BL_PC,&bl); + tbl = &sd.bl; }else{ - tsd = sd; - tbl = bl; + tsd = &sd; + tbl = &bl; } - nullpo_retv( tsd ); + if( tsd == nullptr ){ + return; + } if( tsd->hatEffects.empty() || map_getmapdata(tbl->m)->getMapFlag(MF_NOCOSTUME) ){ return; } - struct PACKET_ZC_EQUIPMENT_EFFECT* p = (struct PACKET_ZC_EQUIPMENT_EFFECT*)packet_buffer; + PACKET_ZC_EQUIPMENT_EFFECT* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_EQUIPMENT_EFFECT; - p->packetLength = (int16)( sizeof( struct PACKET_ZC_EQUIPMENT_EFFECT ) + sizeof( int16 ) * tsd->hatEffects.size() ); + p->packetLength = sizeof( *p ); p->aid = tsd->bl.id; p->status = 1; for( size_t i = 0; i < tsd->hatEffects.size(); i++ ){ p->effects[i] = tsd->hatEffects[i]; + + p->packetLength += static_castpacketLength)>( sizeof( p->effects[0] ) ); } clif_send( p, p->packetLength, tbl, target ); #endif } -void clif_hat_effect_single( map_session_data* sd, uint16 effectId, bool enable ){ +/// Send a single hat effect to the client. +/// 0A3B .W .L .B { .W } (ZC_EQUIPMENT_EFFECT) +void clif_hat_effect_single( map_session_data& sd, uint16 effectId, bool enable ){ #if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO) - nullpo_retv( sd ); - - struct PACKET_ZC_EQUIPMENT_EFFECT* p = (struct PACKET_ZC_EQUIPMENT_EFFECT*)packet_buffer; + PACKET_ZC_EQUIPMENT_EFFECT* p = reinterpret_cast( packet_buffer ); p->packetType = HEADER_ZC_EQUIPMENT_EFFECT; - p->packetLength = (int16)( sizeof( struct PACKET_ZC_EQUIPMENT_EFFECT ) + sizeof( int16 ) ); - p->aid = sd->bl.id; + p->packetLength = sizeof( *p ); + p->aid = sd.bl.id; p->status = enable; p->effects[0] = effectId; + p->packetLength += static_castpacketLength)>( sizeof( p->effects[0] ) ); - clif_send( p, p->packetLength, &sd->bl, AREA ); + clif_send( p, p->packetLength, &sd.bl, AREA ); #endif } @@ -21331,7 +21110,7 @@ void clif_hat_effect_single( map_session_data* sd, uint16 effectId, bool enable /// 09b2 .W .L (ZC_NOTIFY_BARGAIN_SALE_SELLING) void clif_sale_start( struct sale_item_data* sale_item, struct block_list* bl, enum send_target target ){ #if PACKETVER_SUPPORTS_SALES - struct PACKET_ZC_NOTIFY_BARGAIN_SALE_SELLING p; + PACKET_ZC_NOTIFY_BARGAIN_SALE_SELLING p = {}; p.packetType = HEADER_ZC_NOTIFY_BARGAIN_SALE_SELLING; p.itemId = client_nameid( sale_item->nameid ); @@ -21345,7 +21124,7 @@ void clif_sale_start( struct sale_item_data* sale_item, struct block_list* bl, e /// 09b3 .W (ZC_NOTIFY_BARGAIN_SALE_CLOSE) void clif_sale_end( struct sale_item_data* sale_item, struct block_list* bl, enum send_target target ){ #if PACKETVER_SUPPORTS_SALES - struct PACKET_ZC_NOTIFY_BARGAIN_SALE_CLOSE p; + PACKET_ZC_NOTIFY_BARGAIN_SALE_CLOSE p = {}; p.packetType = HEADER_ZC_NOTIFY_BARGAIN_SALE_CLOSE; p.itemId = client_nameid( sale_item->nameid ); @@ -21358,7 +21137,7 @@ void clif_sale_end( struct sale_item_data* sale_item, struct block_list* bl, enu /// 09c4 .W .L (ZC_ACK_COUNT_BARGAIN_SALE_ITEM) void clif_sale_amount( struct sale_item_data* sale_item, struct block_list* bl, enum send_target target ){ #if PACKETVER_SUPPORTS_SALES - struct PACKET_ZC_ACK_COUNT_BARGAIN_SALE_ITEM p; + PACKET_ZC_ACK_COUNT_BARGAIN_SALE_ITEM p = {}; p.packetType = HEADER_ZC_ACK_COUNT_BARGAIN_SALE_ITEM; p.itemId = client_nameid( sale_item->nameid ); @@ -21372,7 +21151,7 @@ void clif_sale_amount( struct sale_item_data* sale_item, struct block_list* bl, /// 09ac .L .W (CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO) void clif_parse_sale_refresh( int fd, map_session_data* sd ){ #if PACKETVER_SUPPORTS_SALES - struct PACKET_CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO* p = (struct PACKET_CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO* p = reinterpret_cast( RFIFOP( fd, 0 ) ); struct sale_item_data* sale; @@ -21467,7 +21246,7 @@ void clif_parse_sale_close(int fd, map_session_data* sd) { /// 09ad .W .W .L (ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO) void clif_sale_search_reply( map_session_data* sd, std::shared_ptr item ){ #if PACKETVER_SUPPORTS_SALES - struct PACKET_ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO p; + PACKET_ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO p = {}; p.packetType = HEADER_ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO; @@ -21535,7 +21314,7 @@ void clif_parse_sale_add( int fd, map_session_data* sd ){ #if PACKETVER_SUPPORTS_SALES nullpo_retv( sd ); - struct PACKET_CZ_REQ_APPLY_BARGAIN_SALE_ITEM* p = (struct PACKET_CZ_REQ_APPLY_BARGAIN_SALE_ITEM*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_APPLY_BARGAIN_SALE_ITEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); if( p->AID != sd->status.account_id ){ return; @@ -21570,7 +21349,7 @@ void clif_parse_sale_remove( int fd, map_session_data* sd ){ #if PACKETVER_SUPPORTS_SALES nullpo_retv( sd ); - struct PACKET_CZ_REQ_REMOVE_BARGAIN_SALE_ITEM* p = (struct PACKET_CZ_REQ_REMOVE_BARGAIN_SALE_ITEM*)RFIFOP( fd, 0 ); + const PACKET_CZ_REQ_REMOVE_BARGAIN_SALE_ITEM* p = reinterpret_cast( RFIFOP( fd, 0 ) ); if( p->AID != sd->status.account_id ){ return; @@ -21694,7 +21473,7 @@ void clif_achievement_reward_ack(int fd, unsigned char result, int achievement_i /// 09fb .W .W .W (CZ_PET_EVOLUTION) void clif_parse_pet_evolution( int fd, map_session_data *sd ){ #if PACKETVER >= 20141008 - const struct PACKET_CZ_PET_EVOLUTION *p = (struct PACKET_CZ_PET_EVOLUTION *)RFIFOP( fd, 0 ); + const PACKET_CZ_PET_EVOLUTION* p = reinterpret_cast( RFIFOP( fd, 0 ) ); auto pet = pet_db_search( p->EvolvedPetEggID, PET_EGG ); @@ -21753,7 +21532,7 @@ void clif_ui_open( map_session_data& sd, enum out_ui_type ui_type, int32 data ){ #endif } - struct PACKET_ZC_UI_OPEN p = {}; + PACKET_ZC_UI_OPEN p = {}; p.PacketType = HEADER_ZC_UI_OPEN; p.UIType = ui_type; @@ -21775,7 +21554,7 @@ void clif_parse_open_ui( int fd, map_session_data* sd ){ }else if( pc_attendance_enabled() ){ clif_ui_open( *sd, OUT_UI_ATTENDANCE, pc_attendance_counter( sd ) ); }else{ - clif_msg_color( sd, MSG_ATTENDANCE_DISABLED, color_table[COLOR_RED] ); + clif_msg_color( sd, MSI_CHECK_ATTENDANCE_NOT_EVENT, color_table[COLOR_RED] ); } break; #if PACKETVER >= 20160316 @@ -21868,7 +21647,7 @@ void clif_parse_private_airship_request( int fd, map_session_data* sd ){ return; } - const struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST *p = (struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST *)RFIFOP( fd, 0 ); + const PACKET_CZ_PRIVATE_AIRSHIP_REQUEST* p = reinterpret_cast( RFIFOP( fd, 0 ) ); char mapname[MAP_NAME_LENGTH_EXT]; @@ -21938,48 +21717,41 @@ void clif_parse_private_airship_request( int fd, map_session_data* sd ){ /// Sends out the usage history of the guild storage /// 09DA .W .W .W { .L .W .L .B .L .Q .B .W /// { .W }*4 .24B